From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mathieu Desnoyers Subject: Re: [PATCH 6/8] perf,tracing: Prepare the perf-trace interface for RCU changes Date: Wed, 12 Feb 2020 10:07:51 -0500 (EST) Message-ID: <736090577.117.1581520071732.JavaMail.zimbra@efficios.com> References: <20200212093210.468391728@infradead.org> <20200212094107.951346701@infradead.org> <20200212092655.4ba6cd79@gandalf.local.home> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <20200212092655.4ba6cd79@gandalf.local.home> Sender: linux-kernel-owner@vger.kernel.org To: rostedt , Peter Zijlstra Cc: linux-kernel , linux-arch , Ingo Molnar , "Joel Fernandes, Google" , Greg Kroah-Hartman , "Gustavo A. R. Silva" , Thomas Gleixner , paulmck , Josh Triplett , Lai Jiangshan List-Id: linux-arch.vger.kernel.org ----- On Feb 12, 2020, at 9:26 AM, rostedt rostedt@goodmis.org wrote: > On Wed, 12 Feb 2020 10:32:16 +0100 > Peter Zijlstra wrote: > >> The tracepoint interface will stop providing regular RCU context; make >> sure we do it ourselves, since perf makes use of regular RCU protected >> data. >> > > Suggested-by: Steven Rostedt (VMware) and Suggested-by: Mathieu Desnoyers Thanks :) Mathieu > > ;-) > > -- Steve > >> Signed-off-by: Peter Zijlstra (Intel) >> --- >> kernel/events/core.c | 5 +++++ >> 1 file changed, 5 insertions(+) >> >> --- a/kernel/events/core.c >> +++ b/kernel/events/core.c >> @@ -8950,6 +8950,7 @@ void perf_tp_event(u16 event_type, u64 c >> { >> struct perf_sample_data data; >> struct perf_event *event; >> + unsigned long rcu_flags; >> >> struct perf_raw_record raw = { >> .frag = { >> @@ -8961,6 +8962,8 @@ void perf_tp_event(u16 event_type, u64 c >> perf_sample_data_init(&data, 0, 0); >> data.raw = &raw; >> >> + rcu_flags = trace_rcu_enter(); >> + >> perf_trace_buf_update(record, event_type); >> >> hlist_for_each_entry_rcu(event, head, hlist_entry) { >> @@ -8996,6 +8999,8 @@ void perf_tp_event(u16 event_type, u64 c >> } >> >> perf_swevent_put_recursion_context(rctx); >> + >> + trace_rcu_exit(rcu_flags); >> } >> EXPORT_SYMBOL_GPL(perf_tp_event); >> -- Mathieu Desnoyers EfficiOS Inc. http://www.efficios.com From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail.efficios.com ([167.114.26.124]:35668 "EHLO mail.efficios.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727519AbgBLPNq (ORCPT ); Wed, 12 Feb 2020 10:13:46 -0500 Date: Wed, 12 Feb 2020 10:07:51 -0500 (EST) From: Mathieu Desnoyers Message-ID: <736090577.117.1581520071732.JavaMail.zimbra@efficios.com> In-Reply-To: <20200212092655.4ba6cd79@gandalf.local.home> References: <20200212093210.468391728@infradead.org> <20200212094107.951346701@infradead.org> <20200212092655.4ba6cd79@gandalf.local.home> Subject: Re: [PATCH 6/8] perf,tracing: Prepare the perf-trace interface for RCU changes MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Sender: linux-arch-owner@vger.kernel.org List-ID: To: rostedt , Peter Zijlstra Cc: linux-kernel , linux-arch , Ingo Molnar , "Joel Fernandes, Google" , Greg Kroah-Hartman , "Gustavo A. R. Silva" , Thomas Gleixner , paulmck , Josh Triplett , Lai Jiangshan Message-ID: <20200212150751.vaVqVvagVapQOfr2SHela4W_2nMWSeKrOcaJlU480Lg@z> ----- On Feb 12, 2020, at 9:26 AM, rostedt rostedt@goodmis.org wrote: > On Wed, 12 Feb 2020 10:32:16 +0100 > Peter Zijlstra wrote: > >> The tracepoint interface will stop providing regular RCU context; make >> sure we do it ourselves, since perf makes use of regular RCU protected >> data. >> > > Suggested-by: Steven Rostedt (VMware) and Suggested-by: Mathieu Desnoyers Thanks :) Mathieu > > ;-) > > -- Steve > >> Signed-off-by: Peter Zijlstra (Intel) >> --- >> kernel/events/core.c | 5 +++++ >> 1 file changed, 5 insertions(+) >> >> --- a/kernel/events/core.c >> +++ b/kernel/events/core.c >> @@ -8950,6 +8950,7 @@ void perf_tp_event(u16 event_type, u64 c >> { >> struct perf_sample_data data; >> struct perf_event *event; >> + unsigned long rcu_flags; >> >> struct perf_raw_record raw = { >> .frag = { >> @@ -8961,6 +8962,8 @@ void perf_tp_event(u16 event_type, u64 c >> perf_sample_data_init(&data, 0, 0); >> data.raw = &raw; >> >> + rcu_flags = trace_rcu_enter(); >> + >> perf_trace_buf_update(record, event_type); >> >> hlist_for_each_entry_rcu(event, head, hlist_entry) { >> @@ -8996,6 +8999,8 @@ void perf_tp_event(u16 event_type, u64 c >> } >> >> perf_swevent_put_recursion_context(rctx); >> + >> + trace_rcu_exit(rcu_flags); >> } >> EXPORT_SYMBOL_GPL(perf_tp_event); >> -- Mathieu Desnoyers EfficiOS Inc. http://www.efficios.com