From: Sasha Levin <sasha.levin@oracle.com>
To: Steven Rostedt <rostedt@goodmis.org>, linux-kernel@vger.kernel.org
Cc: Ingo Molnar <mingo@kernel.org>,
Andrew Morton <akpm@linux-foundation.org>,
Arnaldo Carvalho de Melo <acme@kernel.org>,
Namhyung Kim <namhyung@kernel.org>,
Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>,
Mathieu Desnoyers <mathieu.desnoyers@efficios.com>,
Guilherme Cox <cox@computer.org>, Tony Luck <tony.luck@gmail.com>,
Xie XiuQi <xiexiuqi@huawei.com>
Subject: Re: [PATCH 07/18 v3] tracing: Add TRACE_DEFINE_ENUM() macro to map enums to their values
Date: Wed, 15 Apr 2015 09:22:37 -0400 [thread overview]
Message-ID: <552E661D.5060502@oracle.com> (raw)
In-Reply-To: <20150403014123.997385206@goodmis.org>
On 04/02/2015 09:38 PM, Steven Rostedt wrote:
> From: "Steven Rostedt (Red Hat)" <rostedt@goodmis.org>
>
> Several tracepoints use the helper functions __print_symbolic() or
> __print_flags() and pass in enums that do the mapping between the
> binary data stored and the value to print. This works well for reading
> the ASCII trace files, but when the data is read via userspace tools
> such as perf and trace-cmd, the conversion of the binary value to a
> human string format is lost if an enum is used, as userspace does not
> have access to what the ENUM is.
>
> For example, the tracepoint trace_tlb_flush() has:
>
> __print_symbolic(REC->reason,
> { TLB_FLUSH_ON_TASK_SWITCH, "flush on task switch" },
> { TLB_REMOTE_SHOOTDOWN, "remote shootdown" },
> { TLB_LOCAL_SHOOTDOWN, "local shootdown" },
> { TLB_LOCAL_MM_SHOOTDOWN, "local mm shootdown" })
>
> Which maps the enum values to the strings they represent. But perf and
> trace-cmd do no know what value TLB_LOCAL_MM_SHOOTDOWN is, and would
> not be able to map it.
>
> With TRACE_DEFINE_ENUM(), developers can place these in the event header
> files and ftrace will convert the enums to their values:
>
> By adding:
>
> TRACE_DEFINE_ENUM(TLB_FLUSH_ON_TASK_SWITCH);
> TRACE_DEFINE_ENUM(TLB_REMOTE_SHOOTDOWN);
> TRACE_DEFINE_ENUM(TLB_LOCAL_SHOOTDOWN);
> TRACE_DEFINE_ENUM(TLB_LOCAL_MM_SHOOTDOWN);
>
> $ cat /sys/kernel/debug/tracing/events/tlb/tlb_flush/format
> [...]
> __print_symbolic(REC->reason,
> { 0, "flush on task switch" },
> { 1, "remote shootdown" },
> { 2, "local shootdown" },
> { 3, "local mm shootdown" })
>
> The above is what userspace expects to see, and tools do not need to
> be modified to parse them.
>
> Cc: Guilherme Cox <cox@computer.org>
> Cc: Tony Luck <tony.luck@gmail.com>
> Cc: Xie XiuQi <xiexiuqi@huawei.com>
> Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
> ---
Hey Steven,
I'm seeing the following when booting:
[ 10.678876] BUG: KASan: out of bounds access in trace_event_enum_update+0xb1d/0xb70 at addr ffffffffa6c4dc68
[ 10.680222] Read of size 1 by task swapper/0/1
[ 10.680222] Address belongs to variable print_fmt_9p_client_req+0x848/0x880
[ 10.680222] CPU: 19 PID: 1 Comm: swapper/0 Not tainted 4.0.0-next-20150415-sasha-00064-g7858a62 #2147
[ 10.680222] ffffffffa6c4dc68 00000000915e69dc ffff88004e8efb18 ffffffffa1b4f7a6
[ 10.680222] 0000000000000000 ffff88004e8efba8 ffff88004e8efb98 ffffffff976544b1
[ 10.680222] ffff88004e8efbd8 ffffffff990134a4 0000000000000282 ffffffffa444e381
[ 10.680222] Call Trace:
[ 10.680222] dump_stack (lib/dump_stack.c:52)
[ 10.680222] kasan_report_error (mm/kasan/report.c:132 mm/kasan/report.c:193)
[ 10.680222] ? snprintf (lib/vsprintf.c:2069)
[ 10.680222] ? vsprintf (lib/vsprintf.c:2069)
[ 10.680222] ? trace_event_enum_update (kernel/trace/trace_events.c:1807)
[ 10.680222] __asan_report_load1_noabort (mm/kasan/report.c:230 mm/kasan/report.c:248)
[ 10.680222] ? trace_event_enum_update (kernel/trace/trace_events.c:1807)
[ 10.680222] trace_event_enum_update (kernel/trace/trace_events.c:1807)
[ 10.680222] tracer_init_tracefs (kernel/trace/trace.c:4122 kernel/trace/trace.c:6750 kernel/trace/trace.c:6848)
[ 10.680222] ? clear_boot_tracer (kernel/trace/trace.c:6825)
[ 10.680222] ? clear_boot_tracer (kernel/trace/trace.c:6825)
[ 10.680222] do_one_initcall (init/main.c:788)
[ 10.680222] ? try_to_run_init_process (init/main.c:777)
[ 10.680222] ? parse_args (kernel/params.c:131 kernel/params.c:216)
[ 10.680222] ? trace_hardirqs_on (kernel/locking/lockdep.c:2630)
[ 10.680222] kernel_init_freeable (init/main.c:853 init/main.c:861 init/main.c:880 init/main.c:1001)
[ 10.680222] ? local_clock (kernel/sched/clock.c:392)
[ 10.680222] ? start_kernel (init/main.c:973)
[ 10.680222] ? finish_task_switch (kernel/sched/core.c:2249)
[ 10.680222] ? finish_task_switch (include/linux/tick.h:186 kernel/sched/core.c:2263)
[ 10.680222] ? finish_task_switch (kernel/sched/sched.h:1077 kernel/sched/core.c:2245)
[ 10.680222] ? rest_init (init/main.c:928)
[ 10.680222] kernel_init (init/main.c:933)
[ 10.680222] ? rest_init (init/main.c:928)
[ 10.680222] ret_from_fork (arch/x86/kernel/entry_64.S:631)
[ 10.680222] ? rest_init (init/main.c:928)
[ 10.680222] Memory state around the buggy address:
[ 10.680222] ffffffffa6c4db00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[ 10.680222] ffffffffa6c4db80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
[ 10.680222] >ffffffffa6c4dc00: 00 00 00 00 00 00 00 00 00 00 00 00 00 fa fa fa
[ 10.680222] ^
[ 10.680222] ffffffffa6c4dc80: fa fa fa fa 00 00 00 00 fa fa fa fa 00 00 00 00
[ 10.680222] ffffffffa6c4dd00: fa fa fa fa 00 00 00 00 fa fa fa fa 00 00 00 00
Thanks,
Sasha
next prev parent reply other threads:[~2015-04-15 13:23 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-04-03 1:38 [PATCH 00/18 v3] tracing: Use TRACE_DEFINE_ENUM() to show enum values Steven Rostedt
2015-04-03 1:38 ` [PATCH 02/18 v3] tracing: Add TRACE_SYSTEM_VAR to intel-sst Steven Rostedt
2015-04-03 1:38 ` [PATCH 03/18 v3] tracing: Add TRACE_SYSTEM_VAR to kvm-s390 Steven Rostedt
2015-04-03 1:38 ` [PATCH 04/18 v3] tracing: Add TRACE_SYSTEM_VAR to xhci-hcd Steven Rostedt
2015-04-03 1:38 ` [PATCH 05/18 v3] tracing: Give system name a pointer Steven Rostedt
2015-04-03 1:38 ` [PATCH 06/18 v3] tracing: Update trace-event-sample with TRACE_SYSTEM_VAR documentation Steven Rostedt
2015-04-03 1:38 ` [PATCH 07/18 v3] tracing: Add TRACE_DEFINE_ENUM() macro to map enums to their values Steven Rostedt
2015-04-06 4:54 ` Namhyung Kim
2015-04-06 11:52 ` Steven Rostedt
2015-04-07 14:16 ` Namhyung Kim
2015-04-07 14:22 ` Steven Rostedt
2015-04-15 13:22 ` Sasha Levin [this message]
2015-04-15 14:05 ` Steven Rostedt
2015-04-16 0:58 ` Sasha Levin
2015-04-17 3:21 ` Steven Rostedt
2015-04-17 3:59 ` Sasha Levin
2015-04-17 4:44 ` [PATCH] kasan: Show gcc version requirements in Kconfig and Documentation Joe Perches
2015-04-17 7:54 ` Andrey Ryabinin
2015-04-17 9:37 ` Joe Perches
2015-04-17 16:10 ` [PATCH v2] " Andrey Ryabinin
2015-05-07 15:51 ` Jonathan Corbet
2015-05-07 19:00 ` Andrey Ryabinin
2015-04-17 7:44 ` [PATCH 07/18 v3] tracing: Add TRACE_DEFINE_ENUM() macro to map enums to their values Andrey Ryabinin
2015-04-17 13:29 ` Steven Rostedt
2015-04-17 13:51 ` Steven Rostedt
2015-04-17 14:14 ` Andrey Ryabinin
2015-04-03 1:38 ` [PATCH 08/18 v3] tracing: Allow for modules to convert their enums to values Steven Rostedt
2015-04-03 1:38 ` [PATCH 09/18 v3] tracing/samples: Update the trace-event-sample.h with TRACE_DEFINE_ENUM() Steven Rostedt
2015-04-03 1:38 ` [PATCH 10/18 v3] x86/tlb/trace: Export enums in used by tlb_flush tracepoint Steven Rostedt
2015-04-03 1:38 ` [PATCH 11/18 v3] net/9p/tracing: Export enums in tracepoints to userspace Steven Rostedt
2015-04-03 1:38 ` [PATCH 12/18 v3] f2fs: Export the enums in the " Steven Rostedt
2015-04-03 1:38 ` [PATCH 13/18 v3] irq/tracing: Export enums in tracepoints to user space Steven Rostedt
2015-04-03 1:38 ` [PATCH 14/18 v3] mm: tracing: " Steven Rostedt
2015-04-03 1:38 ` [PATCH 15/18 v3] SUNRPC: " Steven Rostedt
2015-04-07 16:40 ` Steven Rostedt
2015-04-07 16:58 ` Trond Myklebust
2015-04-03 1:38 ` [PATCH 16/18 v3] v4l: Export enums used by " Steven Rostedt
2015-04-03 1:38 ` [PATCH 17/18 v3] writeback: Export enums used by tracepoint " Steven Rostedt
2015-04-03 1:38 ` [PATCH 18/18 v3] tracing: Add enum_map file to show enums that have been mapped Steven Rostedt
[not found] ` <20150403014123.069113130@goodmis.org>
2015-04-07 0:47 ` [PATCH 01/18 v3] tracing/drm: Remove unused TRACE_SYSTEM_STRING define Masami Hiramatsu
2015-04-07 11:26 ` [PATCH 00/18 v3] tracing: Use TRACE_DEFINE_ENUM() to show enum values Masami Hiramatsu
2015-04-07 12:52 ` Steven Rostedt
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=552E661D.5060502@oracle.com \
--to=sasha.levin@oracle.com \
--cc=acme@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=cox@computer.org \
--cc=linux-kernel@vger.kernel.org \
--cc=masami.hiramatsu.pt@hitachi.com \
--cc=mathieu.desnoyers@efficios.com \
--cc=mingo@kernel.org \
--cc=namhyung@kernel.org \
--cc=rostedt@goodmis.org \
--cc=tony.luck@gmail.com \
--cc=xiexiuqi@huawei.com \
/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).