On Tue, Sep 1, 2020 at 10:45 PM Alexei Starovoitov <alexei.starovoitov@xxxxxxxxx> wrote: > > On Mon, Aug 31, 2020 at 06:50:01PM -0700, Andrii Nakryiko wrote: > > diff --git a/tools/testing/selftests/bpf/progs/pyperf.h b/tools/testing/selftests/bpf/progs/pyperf.h > > index cc615b82b56e..13998aee887f 100644 > > --- a/tools/testing/selftests/bpf/progs/pyperf.h > > +++ b/tools/testing/selftests/bpf/progs/pyperf.h > > @@ -67,7 +67,7 @@ typedef struct { > > void* co_name; // PyCodeObject.co_name > > } FrameData; > > > > -static __always_inline void *get_thread_state(void *tls_base, PidData *pidData) > > +static __noinline void *get_thread_state(void *tls_base, PidData *pidData) > > { > > void* thread_state; > > int key; > > @@ -154,12 +154,10 @@ struct { > > __uint(value_size, sizeof(long long) * 127); > > } stackmap SEC(".maps"); > > > > -#ifdef GLOBAL_FUNC > > -__attribute__((noinline)) > > -#else > > -static __always_inline > > +#ifndef GLOBAL_FUNC > > +static > > #endif > > -int __on_event(struct bpf_raw_tracepoint_args *ctx) > > +__noinline int __on_event(struct bpf_raw_tracepoint_args *ctx) > > { > > uint64_t pid_tgid = bpf_get_current_pid_tgid(); > > pid_t pid = (pid_t)(pid_tgid >> 32); > > diff --git a/tools/testing/selftests/bpf/progs/strobemeta.h b/tools/testing/selftests/bpf/progs/strobemeta.h > > index ad61b722a9de..d307c67ce52e 100644 > > --- a/tools/testing/selftests/bpf/progs/strobemeta.h > > +++ b/tools/testing/selftests/bpf/progs/strobemeta.h > > @@ -266,8 +266,7 @@ struct tls_index { > > uint64_t offset; > > }; > > > > -static __always_inline void *calc_location(struct strobe_value_loc *loc, > > - void *tls_base) > > +static __noinline void *calc_location(struct strobe_value_loc *loc, void *tls_base) > > hmm. this reduces the existing test coverage. Unless I'm misreading it. > Could you keep existing strobemta tests and add new one? > With new ifdefs. Like this GLOBAL_FUNC. Oh, you mean testing single BPF program complexity when everything is inlined? Yeah, haven't thought about that. Ok, I'll add new variants with or without subprogram calls.