Re: [RFC PATCH 3/3] dynamic_debug: Add support for dynamic register trace

From: Will Deacon
Date: Tue Aug 07 2018 - 12:57:13 EST


On Fri, Aug 03, 2018 at 07:58:44PM +0530, Sai Prakash Ranjan wrote:
> Introduce dynamic debug filtering mechanism to register
> tracing as dynamic_rtb() which will reduce a lot of
> overhead otherwise of tracing all the register reads/writes
> in all files.
>
> Now we can just specify the file name or any wildcard pattern
> as any other dynamic debug facility in bootargs and dynamic rtb
> will just trace them and the output can be seen in pstore.
>
> TODO: Now we use same 'p' flag but will add a separate flag for register trace
> later.
>
> Example for tracing all register reads/writes in drivers/soc/qcom/* below:
>
> # dyndbg="file drivers/soc/qcom/* +p" in bootargs
> # reboot -f
> # mount -t pstore pstore /sys/fs/pstore
> # cat /sys/fs/pstore/rtb-ramoops-0
> [LOGK_WRITEL ] ts:1373030419 data:ffff00000d5065a4 <ffff00000867cb44> qcom_smsm_probe+0x51c/0x668
> [LOGK_WRITEL ] ts:1373360576 data:ffff00000d506608 <ffff00000867cb44> qcom_smsm_probe+0x51c/0x668
>
> Also we add uncached_logk api to readl/writel definitions for arm64
> as of now. This can be extended to arm as well later for tracing.
>
> Signed-off-by: Sai Prakash Ranjan <saiprakash.ranjan@xxxxxxxxxxxxxx>
> ---
> arch/arm64/include/asm/io.h | 93 +++++++++++++++++++++++++++++++++++

Putting all of this in the arch code, which basically duplicates everything,
feels very wrong to me. Perhaps take a look at the ongoing work for
instrumenting the atomics and take some inspiration from there?

Ideally, the architecture just needs to provide the low-level primivites
(which it already does) and the core can generate instruments versions if
required.

Will