From: Joe Lawrence <joe.lawrence@redhat.com>
To: linuxppc-dev@lists.ozlabs.org
Cc: Nicholas Piggin <npiggin@gmail.com>,
Steven Rostedt <rostedt@goodmis.org>
Subject: ppc64le: ftrace self-tests and $(CC_FLAGS_FTRACE) broken?
Date: Sat, 23 Mar 2019 09:19:50 -0400 [thread overview]
Message-ID: <20190323131950.GA30948@redhat.com> (raw)
Hi Steve, Nicholas,
I stumbled across this while working on livepatch self-tests, which like
the ftrace self-tests, specify $(CC_FLAGS_FTRACE) to ensure that target
functions are indeed trace-able.
On ppc64le, v5.0 fails the self-tests on my machine:
% gcc --version
gcc (GCC) 8.2.1 20180905 (Red Hat 8.2.1-3)
% git checkout v5.0
% grep FTRACE_SELFTEST .config
CONFIG_FTRACE_SELFTEST=y
After building the kernel, I noticed no mcount sections and of course
the self-tests fail as it can't hook functions:
% readelf --sections kernel/trace/trace_selftest_dynamic.o | grep mcount
(nothing)
[ ... snip ... ]
[ 126.147892] Testing all events: OK
[ 126.390487] WARNING: CPU: 0 PID: 1 at kernel/trace/trace_events.c:3421 event_trace_self_tests_init+0x94/0xf4
[ 126.390498] Modules linked in:
[ 126.390510] CPU: 0 PID: 1 Comm: swapper/0 Tainted: G W 5.0.0 #10
[ 126.390520] NIP: c000000000f044d4 LR: c000000000f044cc CTR: c000000000b63d70
[ 126.390530] REGS: c0000001fb183910 TRAP: 0700 Tainted: G W (5.0.0)
[ 126.390540] MSR: 8000000002029033 <SF,VEC,EE,ME,IR,DR,RI,LE> CR: 28000222 XER: 20040007
[ 126.390564] CFAR: c00000000025b1f4 IRQMASK: 0
[ 126.390564] GPR00: c000000000f044cc c0000001fb183ba0 c000000001453c00 ffffffffffffffed
[ 126.390564] GPR04: 0000000000000000 c0000000017a0aac 000000000000037d c0000001fb142d00
[ 126.390564] GPR08: 0000000000000000 0000000000000001 0000000000000000 0000000000000000
[ 126.390564] GPR12: 0000000000000000 c000000001880000 c000000000010530 0000000000000000
[ 126.390564] GPR16: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
[ 126.390564] GPR20: 0000000000000000 0000000000000000 0000000000000000 0000000000000000
[ 126.390564] GPR24: 0000000000000000 0000000000000000 c000000000eb8908 c000000000f4ea68
[ 126.390564] GPR28: c000000000f4eaa8 0000000000000000 c000000000f04440 c000000000f581a8
[ 126.390662] NIP [c000000000f044d4] event_trace_self_tests_init+0x94/0xf4
[ 126.390672] LR [c000000000f044cc] event_trace_self_tests_init+0x8c/0xf4
[ 126.390682] Call Trace:
[ 126.390690] [c0000001fb183ba0] [c000000000f044cc] event_trace_self_tests_init+0x8c/0xf4 (unreliable)
[ 126.390705] [c0000001fb183c10] [c000000000010134] do_one_initcall+0x64/0x264
[ 126.390719] [c0000001fb183ce0] [c000000000ed443c] kernel_init_freeable+0x36c/0x470
[ 126.390731] [c0000001fb183db0] [c000000000010554] kernel_init+0x2c/0x148
[ 126.390744] [c0000001fb183e20] [c00000000000b65c] ret_from_kernel_thread+0x5c/0x80
[ 126.390755] Instruction dump:
[ 126.390765] 3fe2ffb0 f9284578 3bff3d50 794ad182 0b0a0000 2fa90000 419e0058 3bff0858
[ 126.390789] 7fe3fb78 4b356cc1 60000000 54690ffe <0b090000> 2f830000 409c0018 3c62ff96
[ 126.390814] ---[ end trace b5898e7f7f73e163 ]---
[ 126.390822] Failed to enable function tracer for event tests
I git bisected to 6977f95e63b9 ("powerpc: avoid -mno-sched-epilog on GCC
4.9 and newer"). Reverting this change and rebuilding, I could see the
mcount sections once again:
% readelf --sections kernel/trace/trace_selftest_dynamic.o | grep mcount
[ 3] __mcount_loc PROGBITS 0000000000000000 00000060
[ 4] .rela__mcount_loc RELA 0000000000000000 000258c8
Reboot and the self-test now passes.
Perhaps this is gcc version specific? I didn't see any other reports,
so maybe its specific to my config. If I run make V=1, I can see that
gcc is called with '-pg -mprofile-kernel', but then the record_mcount
script is skipped. Any ideas?
Regards,
-- Joe
next reply other threads:[~2019-03-23 13:24 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-03-23 13:19 Joe Lawrence [this message]
2019-03-23 16:17 ` ppc64le: ftrace self-tests and $(CC_FLAGS_FTRACE) broken? Steven Rostedt
2019-03-23 17:01 ` Joe Lawrence
2019-03-23 17:27 ` Joe Lawrence
2019-03-25 16:07 ` Joe Lawrence
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=20190323131950.GA30948@redhat.com \
--to=joe.lawrence@redhat.com \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=npiggin@gmail.com \
--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 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.