Re: [PATCH 3/3] tracing/mm: Don't trace mm_page_pcpu_drain on offline cpus
On Friday 08 May 2015 07:48 PM, Steven Rostedt wrote: > On Fri, 08 May 2015 10:07:15 +0530 > Shreyas B Prabhu wrote: > > >> Hi Steve, >> Do you have any other suggestions for this patchset or will you take >> them as is? > > I'm fine with them (add my Acked-by), but I don't usually pull in > changes for include/trace/events/*.h files. Those are usually maintained > by the creators of the files (subsystems they represent). > Oh I didn't know that. Let me resend the patches with your Acked-by, this time cc'ing people who have added/edited the events. Thanks, Shreyas -- 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: [PATCH 3/3] tracing/mm: Don't trace mm_page_pcpu_drain on offline cpus
On Fri, 08 May 2015 10:07:15 +0530 Shreyas B Prabhu wrote: > Hi Steve, > Do you have any other suggestions for this patchset or will you take > them as is? I'm fine with them (add my Acked-by), but I don't usually pull in changes for include/trace/events/*.h files. Those are usually maintained by the creators of the files (subsystems they represent). But I could pull them in if need be. -- Steve -- 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: [PATCH 3/3] tracing/mm: Don't trace mm_page_pcpu_drain on offline cpus
On Fri, 08 May 2015 10:07:15 +0530 Shreyas B Prabhu shre...@linux.vnet.ibm.com wrote: Hi Steve, Do you have any other suggestions for this patchset or will you take them as is? I'm fine with them (add my Acked-by), but I don't usually pull in changes for include/trace/events/*.h files. Those are usually maintained by the creators of the files (subsystems they represent). But I could pull them in if need be. -- Steve -- 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: [PATCH 3/3] tracing/mm: Don't trace mm_page_pcpu_drain on offline cpus
On Friday 08 May 2015 07:48 PM, Steven Rostedt wrote: On Fri, 08 May 2015 10:07:15 +0530 Shreyas B Prabhu shre...@linux.vnet.ibm.com wrote: Hi Steve, Do you have any other suggestions for this patchset or will you take them as is? I'm fine with them (add my Acked-by), but I don't usually pull in changes for include/trace/events/*.h files. Those are usually maintained by the creators of the files (subsystems they represent). Oh I didn't know that. Let me resend the patches with your Acked-by, this time cc'ing people who have added/edited the events. Thanks, Shreyas -- 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: [PATCH 3/3] tracing/mm: Don't trace mm_page_pcpu_drain on offline cpus
On Wednesday 29 April 2015 10:38 PM, Steven Rostedt wrote: > On Wed, 29 Apr 2015 21:28:38 +0530 > Shreyas B Prabhu wrote: > >> >> >> On Wednesday 29 April 2015 08:48 PM, Steven Rostedt wrote: >>> On Wed, 29 Apr 2015 20:19:28 +0530 >>> Shreyas B Prabhu wrote: >>> IIUC there is no existing macro which can both add a condition and override printk format, hence the fall back to TRACE_EVENT_CONDITION. >>> >>> Hmm, want me to send you a patch that changes that? >>> >> I am not sure if its worth the effort now. It doesn't look like any >> other trace point apart from the above use case will benefit from it. >> Only smbus_write and smbus_reply seem to come close. But even they need >> separate TP_fast_assign. > > It shouldn't be a problem to implement. But I'm currently cleaning up > those files, and any changes will cause nasty conflicts. > > Lets do this. Push the current changes as is, and when I get around to > adding a DEFINE_EVENT_PRINT_CONDITION(), we can modify that code to use > it. > Hi Steve, Do you have any other suggestions for this patchset or will you take them as is? Thanks, Shreyas -- 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: [PATCH 3/3] tracing/mm: Don't trace mm_page_pcpu_drain on offline cpus
On Wednesday 29 April 2015 10:38 PM, Steven Rostedt wrote: On Wed, 29 Apr 2015 21:28:38 +0530 Shreyas B Prabhu shre...@linux.vnet.ibm.com wrote: On Wednesday 29 April 2015 08:48 PM, Steven Rostedt wrote: On Wed, 29 Apr 2015 20:19:28 +0530 Shreyas B Prabhu shre...@linux.vnet.ibm.com wrote: IIUC there is no existing macro which can both add a condition and override printk format, hence the fall back to TRACE_EVENT_CONDITION. Hmm, want me to send you a patch that changes that? I am not sure if its worth the effort now. It doesn't look like any other trace point apart from the above use case will benefit from it. Only smbus_write and smbus_reply seem to come close. But even they need separate TP_fast_assign. It shouldn't be a problem to implement. But I'm currently cleaning up those files, and any changes will cause nasty conflicts. Lets do this. Push the current changes as is, and when I get around to adding a DEFINE_EVENT_PRINT_CONDITION(), we can modify that code to use it. Hi Steve, Do you have any other suggestions for this patchset or will you take them as is? Thanks, Shreyas -- 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: [PATCH 3/3] tracing/mm: Don't trace mm_page_pcpu_drain on offline cpus
On Thursday 30 April 2015 10:06 AM, Preeti Murthy wrote: > On Wed, Apr 29, 2015 at 10:49 PM, Shreyas B Prabhu > wrote: >> >> >> On Wednesday 29 April 2015 10:38 PM, Steven Rostedt wrote: I am not sure if its worth the effort now. It doesn't look like any other trace point apart from the above use case will benefit from it. Only smbus_write and smbus_reply seem to come close. But even they need separate TP_fast_assign. >>> >>> It shouldn't be a problem to implement. But I'm currently cleaning up >>> those files, and any changes will cause nasty conflicts. >>> >>> Lets do this. Push the current changes as is, and when I get around to >>> adding a DEFINE_EVENT_PRINT_CONDITION(), we can modify that code to use >>> it. >>> >> Okay, sure. > > Looks good then. > > Reviewed-by: Preeti U Murthy Thanks a lot! -- 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: [PATCH 3/3] tracing/mm: Don't trace mm_page_pcpu_drain on offline cpus
On Wed, Apr 29, 2015 at 10:49 PM, Shreyas B Prabhu wrote: > > > On Wednesday 29 April 2015 10:38 PM, Steven Rostedt wrote: >>> I am not sure if its worth the effort now. It doesn't look like any >>> other trace point apart from the above use case will benefit from it. >>> Only smbus_write and smbus_reply seem to come close. But even they need >>> separate TP_fast_assign. >> >> It shouldn't be a problem to implement. But I'm currently cleaning up >> those files, and any changes will cause nasty conflicts. >> >> Lets do this. Push the current changes as is, and when I get around to >> adding a DEFINE_EVENT_PRINT_CONDITION(), we can modify that code to use >> it. >> > Okay, sure. Looks good then. Reviewed-by: Preeti U Murthy > > Thanks, > Shreyas > -- 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: [PATCH 3/3] tracing/mm: Don't trace mm_page_pcpu_drain on offline cpus
On Wednesday 29 April 2015 10:38 PM, Steven Rostedt wrote: >> I am not sure if its worth the effort now. It doesn't look like any >> other trace point apart from the above use case will benefit from it. >> Only smbus_write and smbus_reply seem to come close. But even they need >> separate TP_fast_assign. > > It shouldn't be a problem to implement. But I'm currently cleaning up > those files, and any changes will cause nasty conflicts. > > Lets do this. Push the current changes as is, and when I get around to > adding a DEFINE_EVENT_PRINT_CONDITION(), we can modify that code to use > it. > Okay, sure. Thanks, Shreyas -- 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: [PATCH 3/3] tracing/mm: Don't trace mm_page_pcpu_drain on offline cpus
On Wed, 29 Apr 2015 21:28:38 +0530 Shreyas B Prabhu wrote: > > > On Wednesday 29 April 2015 08:48 PM, Steven Rostedt wrote: > > On Wed, 29 Apr 2015 20:19:28 +0530 > > Shreyas B Prabhu wrote: > > > >> IIUC there is no existing macro which can both add a condition and > >> override printk format, hence the fall back to TRACE_EVENT_CONDITION. > > > > Hmm, want me to send you a patch that changes that? > > > I am not sure if its worth the effort now. It doesn't look like any > other trace point apart from the above use case will benefit from it. > Only smbus_write and smbus_reply seem to come close. But even they need > separate TP_fast_assign. It shouldn't be a problem to implement. But I'm currently cleaning up those files, and any changes will cause nasty conflicts. Lets do this. Push the current changes as is, and when I get around to adding a DEFINE_EVENT_PRINT_CONDITION(), we can modify that code to use it. -- Steve -- 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: [PATCH 3/3] tracing/mm: Don't trace mm_page_pcpu_drain on offline cpus
On Wednesday 29 April 2015 08:48 PM, Steven Rostedt wrote: > On Wed, 29 Apr 2015 20:19:28 +0530 > Shreyas B Prabhu wrote: > >> IIUC there is no existing macro which can both add a condition and >> override printk format, hence the fall back to TRACE_EVENT_CONDITION. > > Hmm, want me to send you a patch that changes that? > I am not sure if its worth the effort now. It doesn't look like any other trace point apart from the above use case will benefit from it. Only smbus_write and smbus_reply seem to come close. But even they need separate TP_fast_assign. Thanks, Shreyas -- 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: [PATCH 3/3] tracing/mm: Don't trace mm_page_pcpu_drain on offline cpus
On Wed, 29 Apr 2015 20:19:28 +0530 Shreyas B Prabhu wrote: > IIUC there is no existing macro which can both add a condition and > override printk format, hence the fall back to TRACE_EVENT_CONDITION. Hmm, want me to send you a patch that changes that? -- Steve -- 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: [PATCH 3/3] tracing/mm: Don't trace mm_page_pcpu_drain on offline cpus
>> -DEFINE_EVENT_PRINT(mm_page, mm_page_pcpu_drain, >> +TRACE_EVENT_CONDITION(mm_page_pcpu_drain, >> >> TP_PROTO(struct page *page, unsigned int order, int migratetype), >> >> TP_ARGS(page, order, migratetype), >> >> + TP_CONDITION(cpu_online(smp_processor_id())), >> + >> + TP_STRUCT__entry( >> + __field(unsigned long, pfn ) >> + __field(unsigned int, order ) >> + __field(int,migratetype ) >> + ), >> + >> + TP_fast_assign( >> + __entry->pfn= page ? page_to_pfn(page) : -1UL; >> + __entry->order = order; >> + __entry->migratetype= migratetype; >> + ), >> + > > What was the need to do the above changes besides adding TP_CONDITION ? > IIUC there is no existing macro which can both add a condition and override printk format, hence the fall back to TRACE_EVENT_CONDITION. Thanks, Shreyas -- 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: [PATCH 3/3] tracing/mm: Don't trace mm_page_pcpu_drain on offline cpus
Ccing Paul, On Tue, Apr 28, 2015 at 9:21 PM, Shreyas B. Prabhu wrote: > Since tracepoints use RCU for protection, they must not be called on > offline cpus. trace_mm_page_pcpu_drain can be called on an offline cpu > in this scenario caught by LOCKDEP: > > === > [ INFO: suspicious RCU usage. ] > 4.1.0-rc1+ #9 Not tainted > --- > include/trace/events/kmem.h:265 suspicious rcu_dereference_check() usage! > > other info that might help us debug this: > > RCU used illegally from offline CPU! > rcu_scheduler_active = 1, debug_locks = 1 > 1 lock held by swapper/5/0: > #0: (&(>lock)->rlock){..-...}, at: [] > .free_pcppages_bulk+0x70/0x920 > > stack backtrace: > CPU: 5 PID: 0 Comm: swapper/5 Not tainted 4.1.0-rc1+ #9 > Call Trace: > [c01fed2e7720] [c09dee8c] .dump_stack+0x98/0xd4 (unreliable) > [c01fed2e77a0] [c0128d88] .lockdep_rcu_suspicious+0x108/0x170 > [c01fed2e7830] [c020794c] .free_pcppages_bulk+0x60c/0x920 > [c01fed2e7980] [c0208188] .free_hot_cold_page+0x208/0x280 > [c01fed2e7a30] [c004d000] .destroy_context+0x90/0xd0 > [c01fed2e7ab0] [c00bd1d8] .__mmdrop+0x58/0x160 > [c01fed2e7b40] [c01068e0] .idle_task_exit+0xf0/0x100 > [c01fed2e7bc0] [c0066948] .pnv_smp_cpu_kill_self+0x58/0x2c0 > [c01fed2e7ca0] [c003ce34] .cpu_die+0x34/0x50 > [c01fed2e7d10] [c00176d0] .arch_cpu_idle_dead+0x20/0x40 > [c01fed2e7d80] [c011f9a8] .cpu_startup_entry+0x708/0x7a0 > [c01fed2e7ec0] [c003cb6c] .start_secondary+0x36c/0x3a0 > [c01fed2e7f90] [c0008b6c] start_secondary_prolog+0x10/0x14 > > Fix this by converting mm_page_pcpu_drain trace point into > TRACE_EVENT_CONDITION > where condition is cpu_online(smp_processor_id()) > > Signed-off-by: Shreyas B. Prabhu > --- > include/trace/events/kmem.h | 16 +++- > 1 file changed, 15 insertions(+), 1 deletion(-) > > diff --git a/include/trace/events/kmem.h b/include/trace/events/kmem.h > index 4abda92..6cd975f 100644 > --- a/include/trace/events/kmem.h > +++ b/include/trace/events/kmem.h > @@ -257,12 +257,26 @@ DEFINE_EVENT(mm_page, mm_page_alloc_zone_locked, > TP_ARGS(page, order, migratetype) > ); > > -DEFINE_EVENT_PRINT(mm_page, mm_page_pcpu_drain, > +TRACE_EVENT_CONDITION(mm_page_pcpu_drain, > > TP_PROTO(struct page *page, unsigned int order, int migratetype), > > TP_ARGS(page, order, migratetype), > > + TP_CONDITION(cpu_online(smp_processor_id())), > + > + TP_STRUCT__entry( > + __field(unsigned long, pfn ) > + __field(unsigned int, order ) > + __field(int,migratetype ) > + ), > + > + TP_fast_assign( > + __entry->pfn= page ? page_to_pfn(page) : -1UL; > + __entry->order = order; > + __entry->migratetype= migratetype; > + ), > + What was the need to do the above changes besides adding TP_CONDITION ? Regards Preeti U Murthy -- 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: [PATCH 3/3] tracing/mm: Don't trace mm_page_pcpu_drain on offline cpus
Ccing Paul, On Tue, Apr 28, 2015 at 9:21 PM, Shreyas B. Prabhu shre...@linux.vnet.ibm.com wrote: Since tracepoints use RCU for protection, they must not be called on offline cpus. trace_mm_page_pcpu_drain can be called on an offline cpu in this scenario caught by LOCKDEP: === [ INFO: suspicious RCU usage. ] 4.1.0-rc1+ #9 Not tainted --- include/trace/events/kmem.h:265 suspicious rcu_dereference_check() usage! other info that might help us debug this: RCU used illegally from offline CPU! rcu_scheduler_active = 1, debug_locks = 1 1 lock held by swapper/5/0: #0: ((zone-lock)-rlock){..-...}, at: [c02073b0] .free_pcppages_bulk+0x70/0x920 stack backtrace: CPU: 5 PID: 0 Comm: swapper/5 Not tainted 4.1.0-rc1+ #9 Call Trace: [c01fed2e7720] [c09dee8c] .dump_stack+0x98/0xd4 (unreliable) [c01fed2e77a0] [c0128d88] .lockdep_rcu_suspicious+0x108/0x170 [c01fed2e7830] [c020794c] .free_pcppages_bulk+0x60c/0x920 [c01fed2e7980] [c0208188] .free_hot_cold_page+0x208/0x280 [c01fed2e7a30] [c004d000] .destroy_context+0x90/0xd0 [c01fed2e7ab0] [c00bd1d8] .__mmdrop+0x58/0x160 [c01fed2e7b40] [c01068e0] .idle_task_exit+0xf0/0x100 [c01fed2e7bc0] [c0066948] .pnv_smp_cpu_kill_self+0x58/0x2c0 [c01fed2e7ca0] [c003ce34] .cpu_die+0x34/0x50 [c01fed2e7d10] [c00176d0] .arch_cpu_idle_dead+0x20/0x40 [c01fed2e7d80] [c011f9a8] .cpu_startup_entry+0x708/0x7a0 [c01fed2e7ec0] [c003cb6c] .start_secondary+0x36c/0x3a0 [c01fed2e7f90] [c0008b6c] start_secondary_prolog+0x10/0x14 Fix this by converting mm_page_pcpu_drain trace point into TRACE_EVENT_CONDITION where condition is cpu_online(smp_processor_id()) Signed-off-by: Shreyas B. Prabhu shre...@linux.vnet.ibm.com --- include/trace/events/kmem.h | 16 +++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/include/trace/events/kmem.h b/include/trace/events/kmem.h index 4abda92..6cd975f 100644 --- a/include/trace/events/kmem.h +++ b/include/trace/events/kmem.h @@ -257,12 +257,26 @@ DEFINE_EVENT(mm_page, mm_page_alloc_zone_locked, TP_ARGS(page, order, migratetype) ); -DEFINE_EVENT_PRINT(mm_page, mm_page_pcpu_drain, +TRACE_EVENT_CONDITION(mm_page_pcpu_drain, TP_PROTO(struct page *page, unsigned int order, int migratetype), TP_ARGS(page, order, migratetype), + TP_CONDITION(cpu_online(smp_processor_id())), + + TP_STRUCT__entry( + __field(unsigned long, pfn ) + __field(unsigned int, order ) + __field(int,migratetype ) + ), + + TP_fast_assign( + __entry-pfn= page ? page_to_pfn(page) : -1UL; + __entry-order = order; + __entry-migratetype= migratetype; + ), + What was the need to do the above changes besides adding TP_CONDITION ? Regards Preeti U Murthy -- 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: [PATCH 3/3] tracing/mm: Don't trace mm_page_pcpu_drain on offline cpus
On Wednesday 29 April 2015 08:48 PM, Steven Rostedt wrote: On Wed, 29 Apr 2015 20:19:28 +0530 Shreyas B Prabhu shre...@linux.vnet.ibm.com wrote: IIUC there is no existing macro which can both add a condition and override printk format, hence the fall back to TRACE_EVENT_CONDITION. Hmm, want me to send you a patch that changes that? I am not sure if its worth the effort now. It doesn't look like any other trace point apart from the above use case will benefit from it. Only smbus_write and smbus_reply seem to come close. But even they need separate TP_fast_assign. Thanks, Shreyas -- 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: [PATCH 3/3] tracing/mm: Don't trace mm_page_pcpu_drain on offline cpus
On Wed, 29 Apr 2015 21:28:38 +0530 Shreyas B Prabhu shre...@linux.vnet.ibm.com wrote: On Wednesday 29 April 2015 08:48 PM, Steven Rostedt wrote: On Wed, 29 Apr 2015 20:19:28 +0530 Shreyas B Prabhu shre...@linux.vnet.ibm.com wrote: IIUC there is no existing macro which can both add a condition and override printk format, hence the fall back to TRACE_EVENT_CONDITION. Hmm, want me to send you a patch that changes that? I am not sure if its worth the effort now. It doesn't look like any other trace point apart from the above use case will benefit from it. Only smbus_write and smbus_reply seem to come close. But even they need separate TP_fast_assign. It shouldn't be a problem to implement. But I'm currently cleaning up those files, and any changes will cause nasty conflicts. Lets do this. Push the current changes as is, and when I get around to adding a DEFINE_EVENT_PRINT_CONDITION(), we can modify that code to use it. -- Steve -- 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: [PATCH 3/3] tracing/mm: Don't trace mm_page_pcpu_drain on offline cpus
On Wednesday 29 April 2015 10:38 PM, Steven Rostedt wrote: I am not sure if its worth the effort now. It doesn't look like any other trace point apart from the above use case will benefit from it. Only smbus_write and smbus_reply seem to come close. But even they need separate TP_fast_assign. It shouldn't be a problem to implement. But I'm currently cleaning up those files, and any changes will cause nasty conflicts. Lets do this. Push the current changes as is, and when I get around to adding a DEFINE_EVENT_PRINT_CONDITION(), we can modify that code to use it. Okay, sure. Thanks, Shreyas -- 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: [PATCH 3/3] tracing/mm: Don't trace mm_page_pcpu_drain on offline cpus
-DEFINE_EVENT_PRINT(mm_page, mm_page_pcpu_drain, +TRACE_EVENT_CONDITION(mm_page_pcpu_drain, TP_PROTO(struct page *page, unsigned int order, int migratetype), TP_ARGS(page, order, migratetype), + TP_CONDITION(cpu_online(smp_processor_id())), + + TP_STRUCT__entry( + __field(unsigned long, pfn ) + __field(unsigned int, order ) + __field(int,migratetype ) + ), + + TP_fast_assign( + __entry-pfn= page ? page_to_pfn(page) : -1UL; + __entry-order = order; + __entry-migratetype= migratetype; + ), + What was the need to do the above changes besides adding TP_CONDITION ? IIUC there is no existing macro which can both add a condition and override printk format, hence the fall back to TRACE_EVENT_CONDITION. Thanks, Shreyas -- 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: [PATCH 3/3] tracing/mm: Don't trace mm_page_pcpu_drain on offline cpus
On Wed, 29 Apr 2015 20:19:28 +0530 Shreyas B Prabhu shre...@linux.vnet.ibm.com wrote: IIUC there is no existing macro which can both add a condition and override printk format, hence the fall back to TRACE_EVENT_CONDITION. Hmm, want me to send you a patch that changes that? -- Steve -- 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: [PATCH 3/3] tracing/mm: Don't trace mm_page_pcpu_drain on offline cpus
On Wed, Apr 29, 2015 at 10:49 PM, Shreyas B Prabhu shre...@linux.vnet.ibm.com wrote: On Wednesday 29 April 2015 10:38 PM, Steven Rostedt wrote: I am not sure if its worth the effort now. It doesn't look like any other trace point apart from the above use case will benefit from it. Only smbus_write and smbus_reply seem to come close. But even they need separate TP_fast_assign. It shouldn't be a problem to implement. But I'm currently cleaning up those files, and any changes will cause nasty conflicts. Lets do this. Push the current changes as is, and when I get around to adding a DEFINE_EVENT_PRINT_CONDITION(), we can modify that code to use it. Okay, sure. Looks good then. Reviewed-by: Preeti U Murthy pre...@linux.vnet.ibm.com Thanks, Shreyas -- 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: [PATCH 3/3] tracing/mm: Don't trace mm_page_pcpu_drain on offline cpus
On Thursday 30 April 2015 10:06 AM, Preeti Murthy wrote: On Wed, Apr 29, 2015 at 10:49 PM, Shreyas B Prabhu shre...@linux.vnet.ibm.com wrote: On Wednesday 29 April 2015 10:38 PM, Steven Rostedt wrote: I am not sure if its worth the effort now. It doesn't look like any other trace point apart from the above use case will benefit from it. Only smbus_write and smbus_reply seem to come close. But even they need separate TP_fast_assign. It shouldn't be a problem to implement. But I'm currently cleaning up those files, and any changes will cause nasty conflicts. Lets do this. Push the current changes as is, and when I get around to adding a DEFINE_EVENT_PRINT_CONDITION(), we can modify that code to use it. Okay, sure. Looks good then. Reviewed-by: Preeti U Murthy pre...@linux.vnet.ibm.com Thanks a lot! -- 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/
[PATCH 3/3] tracing/mm: Don't trace mm_page_pcpu_drain on offline cpus
Since tracepoints use RCU for protection, they must not be called on offline cpus. trace_mm_page_pcpu_drain can be called on an offline cpu in this scenario caught by LOCKDEP: === [ INFO: suspicious RCU usage. ] 4.1.0-rc1+ #9 Not tainted --- include/trace/events/kmem.h:265 suspicious rcu_dereference_check() usage! other info that might help us debug this: RCU used illegally from offline CPU! rcu_scheduler_active = 1, debug_locks = 1 1 lock held by swapper/5/0: #0: (&(>lock)->rlock){..-...}, at: [] .free_pcppages_bulk+0x70/0x920 stack backtrace: CPU: 5 PID: 0 Comm: swapper/5 Not tainted 4.1.0-rc1+ #9 Call Trace: [c01fed2e7720] [c09dee8c] .dump_stack+0x98/0xd4 (unreliable) [c01fed2e77a0] [c0128d88] .lockdep_rcu_suspicious+0x108/0x170 [c01fed2e7830] [c020794c] .free_pcppages_bulk+0x60c/0x920 [c01fed2e7980] [c0208188] .free_hot_cold_page+0x208/0x280 [c01fed2e7a30] [c004d000] .destroy_context+0x90/0xd0 [c01fed2e7ab0] [c00bd1d8] .__mmdrop+0x58/0x160 [c01fed2e7b40] [c01068e0] .idle_task_exit+0xf0/0x100 [c01fed2e7bc0] [c0066948] .pnv_smp_cpu_kill_self+0x58/0x2c0 [c01fed2e7ca0] [c003ce34] .cpu_die+0x34/0x50 [c01fed2e7d10] [c00176d0] .arch_cpu_idle_dead+0x20/0x40 [c01fed2e7d80] [c011f9a8] .cpu_startup_entry+0x708/0x7a0 [c01fed2e7ec0] [c003cb6c] .start_secondary+0x36c/0x3a0 [c01fed2e7f90] [c0008b6c] start_secondary_prolog+0x10/0x14 Fix this by converting mm_page_pcpu_drain trace point into TRACE_EVENT_CONDITION where condition is cpu_online(smp_processor_id()) Signed-off-by: Shreyas B. Prabhu --- include/trace/events/kmem.h | 16 +++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/include/trace/events/kmem.h b/include/trace/events/kmem.h index 4abda92..6cd975f 100644 --- a/include/trace/events/kmem.h +++ b/include/trace/events/kmem.h @@ -257,12 +257,26 @@ DEFINE_EVENT(mm_page, mm_page_alloc_zone_locked, TP_ARGS(page, order, migratetype) ); -DEFINE_EVENT_PRINT(mm_page, mm_page_pcpu_drain, +TRACE_EVENT_CONDITION(mm_page_pcpu_drain, TP_PROTO(struct page *page, unsigned int order, int migratetype), TP_ARGS(page, order, migratetype), + TP_CONDITION(cpu_online(smp_processor_id())), + + TP_STRUCT__entry( + __field(unsigned long, pfn ) + __field(unsigned int, order ) + __field(int,migratetype ) + ), + + TP_fast_assign( + __entry->pfn= page ? page_to_pfn(page) : -1UL; + __entry->order = order; + __entry->migratetype= migratetype; + ), + TP_printk("page=%p pfn=%lu order=%d migratetype=%d", pfn_to_page(__entry->pfn), __entry->pfn, __entry->order, __entry->migratetype) -- 1.9.3 -- 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/
[PATCH 3/3] tracing/mm: Don't trace mm_page_pcpu_drain on offline cpus
Since tracepoints use RCU for protection, they must not be called on offline cpus. trace_mm_page_pcpu_drain can be called on an offline cpu in this scenario caught by LOCKDEP: === [ INFO: suspicious RCU usage. ] 4.1.0-rc1+ #9 Not tainted --- include/trace/events/kmem.h:265 suspicious rcu_dereference_check() usage! other info that might help us debug this: RCU used illegally from offline CPU! rcu_scheduler_active = 1, debug_locks = 1 1 lock held by swapper/5/0: #0: ((zone-lock)-rlock){..-...}, at: [c02073b0] .free_pcppages_bulk+0x70/0x920 stack backtrace: CPU: 5 PID: 0 Comm: swapper/5 Not tainted 4.1.0-rc1+ #9 Call Trace: [c01fed2e7720] [c09dee8c] .dump_stack+0x98/0xd4 (unreliable) [c01fed2e77a0] [c0128d88] .lockdep_rcu_suspicious+0x108/0x170 [c01fed2e7830] [c020794c] .free_pcppages_bulk+0x60c/0x920 [c01fed2e7980] [c0208188] .free_hot_cold_page+0x208/0x280 [c01fed2e7a30] [c004d000] .destroy_context+0x90/0xd0 [c01fed2e7ab0] [c00bd1d8] .__mmdrop+0x58/0x160 [c01fed2e7b40] [c01068e0] .idle_task_exit+0xf0/0x100 [c01fed2e7bc0] [c0066948] .pnv_smp_cpu_kill_self+0x58/0x2c0 [c01fed2e7ca0] [c003ce34] .cpu_die+0x34/0x50 [c01fed2e7d10] [c00176d0] .arch_cpu_idle_dead+0x20/0x40 [c01fed2e7d80] [c011f9a8] .cpu_startup_entry+0x708/0x7a0 [c01fed2e7ec0] [c003cb6c] .start_secondary+0x36c/0x3a0 [c01fed2e7f90] [c0008b6c] start_secondary_prolog+0x10/0x14 Fix this by converting mm_page_pcpu_drain trace point into TRACE_EVENT_CONDITION where condition is cpu_online(smp_processor_id()) Signed-off-by: Shreyas B. Prabhu shre...@linux.vnet.ibm.com --- include/trace/events/kmem.h | 16 +++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/include/trace/events/kmem.h b/include/trace/events/kmem.h index 4abda92..6cd975f 100644 --- a/include/trace/events/kmem.h +++ b/include/trace/events/kmem.h @@ -257,12 +257,26 @@ DEFINE_EVENT(mm_page, mm_page_alloc_zone_locked, TP_ARGS(page, order, migratetype) ); -DEFINE_EVENT_PRINT(mm_page, mm_page_pcpu_drain, +TRACE_EVENT_CONDITION(mm_page_pcpu_drain, TP_PROTO(struct page *page, unsigned int order, int migratetype), TP_ARGS(page, order, migratetype), + TP_CONDITION(cpu_online(smp_processor_id())), + + TP_STRUCT__entry( + __field(unsigned long, pfn ) + __field(unsigned int, order ) + __field(int,migratetype ) + ), + + TP_fast_assign( + __entry-pfn= page ? page_to_pfn(page) : -1UL; + __entry-order = order; + __entry-migratetype= migratetype; + ), + TP_printk(page=%p pfn=%lu order=%d migratetype=%d, pfn_to_page(__entry-pfn), __entry-pfn, __entry-order, __entry-migratetype) -- 1.9.3 -- 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/