Re: [PATCH 0/4] s390: DYNAMIC_FTRACE_WITH_DIRECT_CALL support

From: Heiko Carstens
Date: Tue Oct 12 2021 - 10:59:37 EST


On Tue, Oct 12, 2021 at 09:48:52AM -0400, Steven Rostedt wrote:
> On Tue, 12 Oct 2021 15:37:58 +0200
> Heiko Carstens <hca@xxxxxxxxxxxxx> wrote:
> > This small series adds DYNAMIC_FTRACE_WITH_DIRECT_CALL support for
> > s390 and is based on linux-next 20211012.
...
> > Besides the architecture backend this also adds s390 ftrace direct
> > call samples, and slightly changes config option handling a bit, so
> > that options only have to be selected. This way also additional future
> > architectures can easily add their trampolines to the samples.
...
> > If ok, I'd like to get this upstream via the s390 tree with the next
> > merge window.
>
> A quick look at the patches look fine to me. I'll do a bit more digging
> before adding a Reviewed-by.
>
> One thing you may want to note, we are working on fixing direct trampolines
> that conflict with the function graph tracer, and have patches that fix it.
> I'm not that familiar on how ftrace works on s390, but you may want to
> investigate this, because if s390 has the issues that x86 has, where you
> can't have both function graph tracing and a direct trampoline on the same
> function.
>
> See here:
>
> https://lore.kernel.org/all/20211008091336.33616-1-jolsa@xxxxxxxxxx/

I applied Jiri's patch set and the newly added selftest passes.

Note: s390 will also get HAVE_DYNAMIC_FTRACE_WITH_ARGS support, which is
required for the new selftest - this is currently only in linux-next.
See commit 5740a7c71ab6 ("s390/ftrace: add HAVE_DYNAMIC_FTRACE_WITH_ARGS
support") in linux-next.

Also manually testing with loading the ftrace-direct test module and
enabling the function graph tracer seems to work correctly:

6) + 15.138 us | }
6) | wake_up_process() {
6) | my_direct_func [ftrace_direct]() {
6) | /* waking up ksoftirqd/6-44 */
6) 0.944 us | }
6) | try_to_wake_up() {
6) 0.185 us | kthread_is_per_cpu();

One thing to note: Jiri adds a new a sample module, which obviously
will not compile for s390. Not sure if the config mechanism I propose
with this patch set is the best way to address this - it would then
require to add a config option for each new sample module.