From: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
To: rostedt <rostedt@goodmis.org>
Cc: jbaron <jbaron@akamai.com>,
Sai Prakash Ranjan <quic_saipraka@quicinc.com>,
Will Deacon <will@kernel.org>,
Catalin Marinas <catalin.marinas@arm.com>,
quic psodagud <quic_psodagud@quicinc.com>, maz <maz@kernel.org>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Arnd Bergmann <arnd@arndb.de>,
linux-arm-kernel <linux-arm-kernel@lists.infradead.org>,
linux-kernel <linux-kernel@vger.kernel.org>,
linux-arm-msm@vger.kernel.org, Ingo Molnar <mingo@redhat.com>,
jim cromie <jim.cromie@gmail.com>,
seanpaul@chromium.org
Subject: Re: [PATCHv3 3/3] dynamic_debug: Add a flag for dynamic event tracing
Date: Thu, 11 Nov 2021 08:24:34 -0500 (EST) [thread overview]
Message-ID: <1665247433.56.1636637074878.JavaMail.zimbra@efficios.com> (raw)
In-Reply-To: <20211109172848.304b1c19@gandalf.local.home>
----- On Nov 9, 2021, at 5:28 PM, rostedt rostedt@goodmis.org wrote:
> [ Hmm, should add Mathieu in on this discussion ]
>
> On Tue, 9 Nov 2021 17:13:13 -0500
> Jason Baron <jbaron@akamai.com> wrote:
>
>> > What we are looking at there is to pass the dynamic debug descriptor to the
>> > trace event filtering logic, where you could filter on information passed
>> > to it. For example, on a specific file if a trace event is called by
>> > several different files or modules.
>> >
>> > -- Steve
>>
>> Ok, Could this be done at the dynamic debug level as it can already match
>> on specific files and line numbers currently?
>
> Not sure what you mean by that.
>
> The idea was that this would only be enabled if dynamic debug is enabled
> and that the DEFINE_DYNAMIC_DEBUG_METADATA() could be used at the
> tracepoint function location (trace_foo()) by the tracepoint macros. And
> then if one of the callbacks registered for the tracepoint had a
> "dynamic_debug" flag set, it would be passed the descriptor in as a pointer.
>
> And then, for example, the filtering logic of ftrace could then reference
> the information of the event, if the user passed in something special.
>
> # echo 'DEBUG_FILE ~ "drivers/soc/qcom/*"' > events/rwmmio/rwmmio_write/filter
> # echo 1 > events/rwmmio/rwmmio_write/enable
>
> And then only the rwmmio_write events that came from the qcom directory
> would be printed.
>
> We would create special event fields like "DEBUG_FILE", "DEBUG_FUNC",
> "DEBUG_MOD", "DEBUG_LINE", etc, that could be used if dyndebug is enabled
> in the kernel.
>
> Of course this is going to bloat the kernel as it will create a dynamic
> debug descriptor at every tracepoint location.
I think there is indeed value in doing this. Where I'm not sure is regarding
how we allow this to be enabled/configured.
The way I see it, it might be sufficient and simpler to do just something along
those lines:
- Introduce a new struct tracepoint_caller_info, which would contain information
about file, line number and module name where each trace_*() statement is located.
- Add a new CONFIG_TRACEPOINT_CALLER_INFO which generates this new structure at
build time for kernel and modules. This would indeed bloat the kernel, but it's
a build-time configurable trade-off.
- Change the prototype for the tracepoint callbacks to add an additional argument
"struct tracepoint_caller_info *caller_info". When CONFIG_TRACEPOINT_CALLER_INFO
is disabled, simply have this pointer be NULL. When CONFIG_TRACEPOINT_CALLER_INFO
is enabled, pass the tracepoint's caller_info structure as parameter.
It should be straightforward to adapt the tracepoint callback prototypes within each
user within the Linux kernel tree. And for out-of-tree users, they have to adapt to
that kind of change already anyway.
Thoughts ?
Thanks,
Mathieu
--
Mathieu Desnoyers
EfficiOS Inc.
http://www.efficios.com
WARNING: multiple messages have this Message-ID (diff)
From: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
To: rostedt <rostedt@goodmis.org>
Cc: jbaron <jbaron@akamai.com>,
Sai Prakash Ranjan <quic_saipraka@quicinc.com>,
Will Deacon <will@kernel.org>,
Catalin Marinas <catalin.marinas@arm.com>,
quic psodagud <quic_psodagud@quicinc.com>, maz <maz@kernel.org>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Arnd Bergmann <arnd@arndb.de>,
linux-arm-kernel <linux-arm-kernel@lists.infradead.org>,
linux-kernel <linux-kernel@vger.kernel.org>,
linux-arm-msm@vger.kernel.org, Ingo Molnar <mingo@redhat.com>,
jim cromie <jim.cromie@gmail.com>,
seanpaul@chromium.org
Subject: Re: [PATCHv3 3/3] dynamic_debug: Add a flag for dynamic event tracing
Date: Thu, 11 Nov 2021 08:24:34 -0500 (EST) [thread overview]
Message-ID: <1665247433.56.1636637074878.JavaMail.zimbra@efficios.com> (raw)
In-Reply-To: <20211109172848.304b1c19@gandalf.local.home>
----- On Nov 9, 2021, at 5:28 PM, rostedt rostedt@goodmis.org wrote:
> [ Hmm, should add Mathieu in on this discussion ]
>
> On Tue, 9 Nov 2021 17:13:13 -0500
> Jason Baron <jbaron@akamai.com> wrote:
>
>> > What we are looking at there is to pass the dynamic debug descriptor to the
>> > trace event filtering logic, where you could filter on information passed
>> > to it. For example, on a specific file if a trace event is called by
>> > several different files or modules.
>> >
>> > -- Steve
>>
>> Ok, Could this be done at the dynamic debug level as it can already match
>> on specific files and line numbers currently?
>
> Not sure what you mean by that.
>
> The idea was that this would only be enabled if dynamic debug is enabled
> and that the DEFINE_DYNAMIC_DEBUG_METADATA() could be used at the
> tracepoint function location (trace_foo()) by the tracepoint macros. And
> then if one of the callbacks registered for the tracepoint had a
> "dynamic_debug" flag set, it would be passed the descriptor in as a pointer.
>
> And then, for example, the filtering logic of ftrace could then reference
> the information of the event, if the user passed in something special.
>
> # echo 'DEBUG_FILE ~ "drivers/soc/qcom/*"' > events/rwmmio/rwmmio_write/filter
> # echo 1 > events/rwmmio/rwmmio_write/enable
>
> And then only the rwmmio_write events that came from the qcom directory
> would be printed.
>
> We would create special event fields like "DEBUG_FILE", "DEBUG_FUNC",
> "DEBUG_MOD", "DEBUG_LINE", etc, that could be used if dyndebug is enabled
> in the kernel.
>
> Of course this is going to bloat the kernel as it will create a dynamic
> debug descriptor at every tracepoint location.
I think there is indeed value in doing this. Where I'm not sure is regarding
how we allow this to be enabled/configured.
The way I see it, it might be sufficient and simpler to do just something along
those lines:
- Introduce a new struct tracepoint_caller_info, which would contain information
about file, line number and module name where each trace_*() statement is located.
- Add a new CONFIG_TRACEPOINT_CALLER_INFO which generates this new structure at
build time for kernel and modules. This would indeed bloat the kernel, but it's
a build-time configurable trade-off.
- Change the prototype for the tracepoint callbacks to add an additional argument
"struct tracepoint_caller_info *caller_info". When CONFIG_TRACEPOINT_CALLER_INFO
is disabled, simply have this pointer be NULL. When CONFIG_TRACEPOINT_CALLER_INFO
is enabled, pass the tracepoint's caller_info structure as parameter.
It should be straightforward to adapt the tracepoint callback prototypes within each
user within the Linux kernel tree. And for out-of-tree users, they have to adapt to
that kind of change already anyway.
Thoughts ?
Thanks,
Mathieu
--
Mathieu Desnoyers
EfficiOS Inc.
http://www.efficios.com
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2021-11-11 13:24 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-11-09 12:08 [PATCHv3 0/3] tracing/rwmmio/arm64: Add support to trace register reads/writes Sai Prakash Ranjan
2021-11-09 12:08 ` Sai Prakash Ranjan
2021-11-09 12:08 ` [PATCHv3 1/3] tracing: Add register read/write tracing support Sai Prakash Ranjan
2021-11-09 12:08 ` Sai Prakash Ranjan
2021-11-09 13:54 ` Steven Rostedt
2021-11-09 13:54 ` Steven Rostedt
2021-11-09 14:12 ` Sai Prakash Ranjan
2021-11-09 14:12 ` Sai Prakash Ranjan
2021-11-10 22:56 ` kernel test robot
2021-11-10 22:56 ` kernel test robot
2021-11-09 12:08 ` [PATCHv3 2/3] arm64/io: Add a header for mmio access instrumentation Sai Prakash Ranjan
2021-11-09 12:08 ` Sai Prakash Ranjan
2021-11-09 12:08 ` [PATCHv3 3/3] dynamic_debug: Add a flag for dynamic event tracing Sai Prakash Ranjan
2021-11-09 12:08 ` Sai Prakash Ranjan
2021-11-09 15:49 ` Steven Rostedt
2021-11-09 15:49 ` Steven Rostedt
2021-11-09 16:22 ` Sai Prakash Ranjan
2021-11-09 16:22 ` Sai Prakash Ranjan
2021-11-09 16:59 ` Steven Rostedt
2021-11-09 16:59 ` Steven Rostedt
2021-11-09 17:30 ` Sai Prakash Ranjan
2021-11-09 17:30 ` Sai Prakash Ranjan
2021-11-09 17:40 ` Steven Rostedt
2021-11-09 17:40 ` Steven Rostedt
2021-11-09 17:49 ` Sai Prakash Ranjan
2021-11-09 17:49 ` Sai Prakash Ranjan
2021-11-09 21:42 ` Jason Baron
2021-11-09 21:42 ` Jason Baron
2021-11-09 21:51 ` Steven Rostedt
2021-11-09 21:51 ` Steven Rostedt
2021-11-09 22:13 ` Jason Baron
2021-11-09 22:13 ` Jason Baron
2021-11-09 22:28 ` Steven Rostedt
2021-11-09 22:28 ` Steven Rostedt
2021-11-10 20:03 ` Jason Baron
2021-11-10 20:03 ` Jason Baron
2021-11-11 13:24 ` Mathieu Desnoyers [this message]
2021-11-11 13:24 ` Mathieu Desnoyers
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1665247433.56.1636637074878.JavaMail.zimbra@efficios.com \
--to=mathieu.desnoyers@efficios.com \
--cc=arnd@arndb.de \
--cc=catalin.marinas@arm.com \
--cc=gregkh@linuxfoundation.org \
--cc=jbaron@akamai.com \
--cc=jim.cromie@gmail.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=maz@kernel.org \
--cc=mingo@redhat.com \
--cc=quic_psodagud@quicinc.com \
--cc=quic_saipraka@quicinc.com \
--cc=rostedt@goodmis.org \
--cc=seanpaul@chromium.org \
--cc=will@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.