From: Arnd Bergmann <arnd@arndb.de>
To: Rabin Vincent <rabin@rab.in>
Cc: Steven Rostedt <rostedt@goodmis.org>,
Ingo Molnar <mingo@redhat.com>,
linux-arch@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] tracing: add support for tracing MMIO helpers
Date: Tue, 26 Apr 2016 21:14:47 +0200 [thread overview]
Message-ID: <6253918.VUpbMrMy7R@wuerfel> (raw)
In-Reply-To: <1461697482-32406-1-git-send-email-rabin@rab.in>
On Tuesday 26 April 2016 21:04:42 Rabin Vincent wrote:
> Add support for tracing the MMIO helpers readl()/writel() (and their
> variants), for use while developing and debugging device drivers.
>
> The address and the value are saved along with the C expressions used in
> the driver when calling these MMIO access functions, leading to a trace
> of the driver's interactions with the hardware's registers:
This seems like a very useful feature
> We do not globally replace the MMIO helpers. Instead, tracing must be
> explicitly enabled in the required driver source files by #defining
> TRACE_MMIO_HELPERS at the top of the file.
>
> The support is added via <asm-generic/io.h> and as such is only
> available on the archs which use that header.
Why that limitation? I think only few architectures use it. Maybe
at least enable it for x86 as well?
> +/* This part must be outside protection */
> +#include <trace/define_trace.h>
> diff --git a/kernel/trace/Kconfig b/kernel/trace/Kconfig
> index e45db6b0d878..feca834436c5 100644
> --- a/kernel/trace/Kconfig
> +++ b/kernel/trace/Kconfig
> @@ -372,6 +372,22 @@ config STACK_TRACER
>
> Say N if unsure.
>
> +config TRACE_MMIO_HELPERS
> + bool "Support for tracing MMIO helpers"
> + select GENERIC_TRACER
How about putting a whitelist of architectures here that are including
the necessary definitions? Or better, a HAVE_TRACE_MMIO_HELPERS
symbol that gets selected by architectures and that this depends on?
> diff --git a/kernel/trace/trace_mmio_helpers.c b/kernel/trace/trace_mmio_helpers.c
> new file mode 100644
> index 000000000000..dbd8f725e7b8
> --- /dev/null
> +++ b/kernel/trace/trace_mmio_helpers.c
> @@ -0,0 +1,45 @@
> +#define TRACE_MMIO_HELPERS
> +#include <linux/io.h>
> +
> +#define CREATE_TRACE_POINTS
> +#include <trace/events/mmio.h>
> +
> +#define DEFINE_MMIO_RW_TRACE(c, type) \
> +type read ## c ## _trace(const volatile void __iomem *addr, \
> + const char *addrexp, bool relaxed, \
> + unsigned long caller) \
> +{ \
> + type value; \
> + \
> + if (relaxed) \
> + value = read ## c ## _relaxed_notrace(addr); \
> + else \
> + value = read ## c ## _notrace(addr); \
> + \
> + trace_mmio_read(addr, addrexp, value, \
> + sizeof(value), relaxed, caller); \
> + \
> + return value; \
> +} \
> + \
We have a number of other accessors that are commonly used:
{ioread,iowrite}{8,16,32,64}{,_be}
{in,out}{b,w,l,q}
{hi_lo_,lo_hi_}{read,write}q
Other than having to write up the code for all of them, are the
strong reasons for defining only the subset you currently have?
Arnd
next prev parent reply other threads:[~2016-04-26 19:15 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-04-26 19:04 [PATCH] tracing: add support for tracing MMIO helpers Rabin Vincent
2016-04-26 19:14 ` Arnd Bergmann [this message]
2016-04-26 19:32 ` Steven Rostedt
2016-04-26 19:32 ` Steven Rostedt
2016-04-29 21:29 ` Rabin Vincent
2016-04-29 21:29 ` Rabin Vincent
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=6253918.VUpbMrMy7R@wuerfel \
--to=arnd@arndb.de \
--cc=linux-arch@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=rabin@rab.in \
--cc=rostedt@goodmis.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).