Re: [ 29/75] perf,x86: fix kernel crash with PEBS/BTS after suspend/resume
On Mon, Mar 18, 2013 at 10:35:27PM +0100, Stephane Eranian wrote: > On Mon, Mar 18, 2013 at 10:20 PM, Greg Kroah-Hartman > wrote: > > On Mon, Mar 18, 2013 at 10:11:28PM +0100, Stephane Eranian wrote: > >> On Mon, Mar 18, 2013 at 10:06 PM, Greg Kroah-Hartman > >> wrote: > >> > 3.8-stable review patch. If anyone has any objections, please let me > >> > know. > >> > > >> Greg, you also need to pick David Rientjes patch to fix compilation on > >> non X86 architectures. > > > > What git commit id would that be? I thought I picked up everything that > > was needed after this one went in, what did I miss? > > > Talking about this particular patch: https://lkml.org/lkml/2013/3/17/183 > Don't know if it's in already. Yes, it is. thanks, greg k-h -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [ 29/75] perf,x86: fix kernel crash with PEBS/BTS after suspend/resume
On Mon, Mar 18, 2013 at 10:20 PM, Greg Kroah-Hartman wrote: > On Mon, Mar 18, 2013 at 10:11:28PM +0100, Stephane Eranian wrote: >> On Mon, Mar 18, 2013 at 10:06 PM, Greg Kroah-Hartman >> wrote: >> > 3.8-stable review patch. If anyone has any objections, please let me know. >> > >> Greg, you also need to pick David Rientjes patch to fix compilation on >> non X86 architectures. > > What git commit id would that be? I thought I picked up everything that > was needed after this one went in, what did I miss? > Talking about this particular patch: https://lkml.org/lkml/2013/3/17/183 Don't know if it's in already. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [ 29/75] perf,x86: fix kernel crash with PEBS/BTS after suspend/resume
On Mon, Mar 18, 2013 at 10:11:28PM +0100, Stephane Eranian wrote: > On Mon, Mar 18, 2013 at 10:06 PM, Greg Kroah-Hartman > wrote: > > 3.8-stable review patch. If anyone has any objections, please let me know. > > > Greg, you also need to pick David Rientjes patch to fix compilation on > non X86 architectures. What git commit id would that be? I thought I picked up everything that was needed after this one went in, what did I miss? thanks, greg k-h -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [ 29/75] perf,x86: fix kernel crash with PEBS/BTS after suspend/resume
On Mon, Mar 18, 2013 at 10:06 PM, Greg Kroah-Hartman wrote: > 3.8-stable review patch. If anyone has any objections, please let me know. > Greg, you also need to pick David Rientjes patch to fix compilation on non X86 architectures. Thanks. > -- > > From: Stephane Eranian > > commit 1d9d8639c063caf6efc2447f5f26aa637f844ff6 upstream. > > 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 > Signed-off-by: Linus Torvalds > Signed-off-by: Greg Kroah-Hartman > > --- > arch/x86/kernel/cpu/perf_event_intel_ds.c |8 > arch/x86/power/cpu.c |2 ++ > include/linux/perf_event.h|2 ++ > 3 files changed, 12 insertions(+) > > --- a/arch/x86/kernel/cpu/perf_event_intel_ds.c > +++ b/arch/x86/kernel/cpu/perf_event_intel_ds.c > @@ -729,3 +729,11 @@ void intel_ds_init(void) > } > } > } > + > +void perf_restore_debug_store(void) > +{ > + if (!x86_pmu.bts && !x86_pmu.pebs) > + return; > + > + init_debug_store_on_cpu(smp_processor_id()); > +} > --- a/arch/x86/power/cpu.c > +++ b/arch/x86/power/cpu.c > @@ -11,6 +11,7 @@ > #include > #include > #include > +#include > > #include > #include > @@ -228,6 +229,7 @@ static void __restore_processor_state(st > do_fpu_end(); > x86_platform.restore_sched_clock_state(); > mtrr_bp_restore(); > + perf_restore_debug_store(); > } > > /* Needed by apm.c */ > --- a/include/linux/perf_event.h > +++ b/include/linux/perf_event.h > @@ -753,6 +753,7 @@ extern void perf_event_enable(struct per > extern void perf_event_disable(struct perf_event *event); > extern int __perf_event_disable(void *info); > extern void perf_event_task_tick(void); > +extern void perf_restore_debug_store(void); > #else > static inline void > perf_event_task_sched_in(struct task_struct *prev, > @@ -792,6 +793,7 @@ static inline void perf_event_enable(str > static inline void perf_event_disable(struct perf_event *event) > { } > static inline int __perf_event_disable(void *info) { > return -1; } > static inline void perf_event_task_tick(void) { } > +static inline void perf_restore_debug_store(void) { } > #endif > > #define perf_output_put(handle, x) perf_output_copy((handle), &(x), > sizeof(x)) > > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [ 29/75] perf,x86: fix kernel crash with PEBS/BTS after suspend/resume
On Mon, Mar 18, 2013 at 10:06 PM, Greg Kroah-Hartman gre...@linuxfoundation.org wrote: 3.8-stable review patch. If anyone has any objections, please let me know. Greg, you also need to pick David Rientjes patch to fix compilation on non X86 architectures. Thanks. -- From: Stephane Eranian eran...@google.com commit 1d9d8639c063caf6efc2447f5f26aa637f844ff6 upstream. 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 torva...@linux-foundation.org Signed-off-by: Stephane Eranian eran...@google.com Signed-off-by: Linus Torvalds torva...@linux-foundation.org Signed-off-by: Greg Kroah-Hartman gre...@linuxfoundation.org --- arch/x86/kernel/cpu/perf_event_intel_ds.c |8 arch/x86/power/cpu.c |2 ++ include/linux/perf_event.h|2 ++ 3 files changed, 12 insertions(+) --- a/arch/x86/kernel/cpu/perf_event_intel_ds.c +++ b/arch/x86/kernel/cpu/perf_event_intel_ds.c @@ -729,3 +729,11 @@ void intel_ds_init(void) } } } + +void perf_restore_debug_store(void) +{ + if (!x86_pmu.bts !x86_pmu.pebs) + return; + + init_debug_store_on_cpu(smp_processor_id()); +} --- a/arch/x86/power/cpu.c +++ b/arch/x86/power/cpu.c @@ -11,6 +11,7 @@ #include linux/suspend.h #include linux/export.h #include linux/smp.h +#include linux/perf_event.h #include asm/pgtable.h #include asm/proto.h @@ -228,6 +229,7 @@ static void __restore_processor_state(st do_fpu_end(); x86_platform.restore_sched_clock_state(); mtrr_bp_restore(); + perf_restore_debug_store(); } /* Needed by apm.c */ --- a/include/linux/perf_event.h +++ b/include/linux/perf_event.h @@ -753,6 +753,7 @@ extern void perf_event_enable(struct per extern void perf_event_disable(struct perf_event *event); extern int __perf_event_disable(void *info); extern void perf_event_task_tick(void); +extern void perf_restore_debug_store(void); #else static inline void perf_event_task_sched_in(struct task_struct *prev, @@ -792,6 +793,7 @@ static inline void perf_event_enable(str static inline void perf_event_disable(struct perf_event *event) { } static inline int __perf_event_disable(void *info) { return -1; } static inline void perf_event_task_tick(void) { } +static inline void perf_restore_debug_store(void) { } #endif #define perf_output_put(handle, x) perf_output_copy((handle), (x), sizeof(x)) -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [ 29/75] perf,x86: fix kernel crash with PEBS/BTS after suspend/resume
On Mon, Mar 18, 2013 at 10:11:28PM +0100, Stephane Eranian wrote: On Mon, Mar 18, 2013 at 10:06 PM, Greg Kroah-Hartman gre...@linuxfoundation.org wrote: 3.8-stable review patch. If anyone has any objections, please let me know. Greg, you also need to pick David Rientjes patch to fix compilation on non X86 architectures. What git commit id would that be? I thought I picked up everything that was needed after this one went in, what did I miss? thanks, greg k-h -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [ 29/75] perf,x86: fix kernel crash with PEBS/BTS after suspend/resume
On Mon, Mar 18, 2013 at 10:20 PM, Greg Kroah-Hartman gre...@linuxfoundation.org wrote: On Mon, Mar 18, 2013 at 10:11:28PM +0100, Stephane Eranian wrote: On Mon, Mar 18, 2013 at 10:06 PM, Greg Kroah-Hartman gre...@linuxfoundation.org wrote: 3.8-stable review patch. If anyone has any objections, please let me know. Greg, you also need to pick David Rientjes patch to fix compilation on non X86 architectures. What git commit id would that be? I thought I picked up everything that was needed after this one went in, what did I miss? Talking about this particular patch: https://lkml.org/lkml/2013/3/17/183 Don't know if it's in already. -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [ 29/75] perf,x86: fix kernel crash with PEBS/BTS after suspend/resume
On Mon, Mar 18, 2013 at 10:35:27PM +0100, Stephane Eranian wrote: On Mon, Mar 18, 2013 at 10:20 PM, Greg Kroah-Hartman gre...@linuxfoundation.org wrote: On Mon, Mar 18, 2013 at 10:11:28PM +0100, Stephane Eranian wrote: On Mon, Mar 18, 2013 at 10:06 PM, Greg Kroah-Hartman gre...@linuxfoundation.org wrote: 3.8-stable review patch. If anyone has any objections, please let me know. Greg, you also need to pick David Rientjes patch to fix compilation on non X86 architectures. What git commit id would that be? I thought I picked up everything that was needed after this one went in, what did I miss? Talking about this particular patch: https://lkml.org/lkml/2013/3/17/183 Don't know if it's in already. Yes, it is. thanks, greg k-h -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/