Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932309Ab3CPApp (ORCPT ); Fri, 15 Mar 2013 20:45:45 -0400 Received: from mail-la0-f49.google.com ([209.85.215.49]:45242 "EHLO mail-la0-f49.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932178Ab3CPApn (ORCPT ); Fri, 15 Mar 2013 20:45:43 -0400 MIME-Version: 1.0 In-Reply-To: References: <20130315132607.GA4565@quad> <20130315203123.GA28128@kroah.com> Date: Fri, 15 Mar 2013 18:45:42 -0600 Message-ID: Subject: Re: [PATCH] perf,x86: fix kernel crash with PEBS/BTS after suspend/resume From: Shuah Khan To: Stephane Eranian Cc: Greg KH , LKML , Linus Torvalds , Peter Zijlstra , "mingo@elte.hu" , Thomas Gleixner , Andrew Morton , Arnaldo Carvalho de Melo , Jiri Olsa , "ak@linux.intel.com" Content-Type: text/plain; charset=ISO-8859-1 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2027 Lines: 50 On Fri, Mar 15, 2013 at 2:56 PM, Stephane Eranian wrote: > On Fri, Mar 15, 2013 at 9:53 PM, Shuah Khan wrote: >> On Fri, Mar 15, 2013 at 2:31 PM, Greg KH wrote: >>> On Fri, Mar 15, 2013 at 02:26:07PM +0100, Stephane Eranian wrote: >>>> >>>> This patch fixes a kernel crash when using precise sampling (PEBS) >>>> after a suspend/resume. Turns out the CPU notifier code is not invoked >>>> on CPU0 (BP). Therefore, the DS_AREA (used by PEBS) is not restored properly >>>> by the kernel and keeps it power-on/resume value of 0 causing any PEBS >>>> measurement to crash when running on CPU0. >>>> >>>> The workaround is to add a hook in the actual resume code to restore >>>> the DS Area MSR value. It is invoked for all CPUS. So for all but CPU0, >>>> the DS_AREA will be restored twice but this is harmless. >>>> >>>> Reported-by: Linus Torvalds >>>> Signed-off-by: Stephane Eranian >>>> --- >>> >>> Is this needed for the 3.8 or older kernels as well? >>> >>> thanks, >>> >>> greg k-h >> >> Just about to ask the same question. Patch applies to 3.8, 3.4, 3.2 >> and 3.5. But needs some massaging for 3.0. I have the kernels built, >> haven't started testing yet. >> > Testing the patch is easy: > > # echo mem >/sys/power/state > Then press the power button again, when you get control again, type: > > $ taskset -c 0 perf record -e cycles:pp my_test_program > > Note that this problem impacts only Intel processors after Core 2 > (PEBS enabled). Thanks. Reproduced the problem on 3.8.3, 3.4.36, and 3.0.69. Tested the patch on 3.4 and 3.8 and the problem is fixed. I had to re-cut the patch for 3.0. Sending it to stable tagged for 3.0 Thanks, -- Shuah -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/