• Jiri Olsa's avatar
    perf lock contention: Add empty 'struct rq' to satisfy libbpf 'runqueue' type verification · 760ebc45
    Jiri Olsa authored
    If 'struct rq' isn't defined in lock_contention.bpf.c then the type for
    the 'runqueue' variable ends up being a forward declaration
    (BTF_KIND_FWD) while the kernel has it defined (BTF_KIND_STRUCT).
    
    This makes libbpf decide it has incompatible types and then fails to
    load the BPF skeleton:
    
      # perf lock con -ab sleep 1
      libbpf: extern (var ksym) 'runqueues': incompatible types, expected [95] fwd rq, but kernel has [55509] struct rq
      libbpf: failed to load object 'lock_contention_bpf'
      libbpf: failed to load BPF skeleton 'lock_contention_bpf': -22
      Failed to load lock-contention BPF skeleton
      lock contention BPF setup failed
      #
    
    Add it as an empty struct to satisfy that type verification:
    
      # perf lock con -ab sleep 1
       contended   total wait     max wait     avg wait         type   caller
    
               2     50.64 us     25.38 us     25.32 us     spinlock   tick_do_update_jiffies64+0x25
               1     26.18 us     26.18 us     26.18 us     spinlock   tick_do_update_jiffies64+0x25
      #
    
    Committer notes:
    
    Extracted from a larger patch as Namhyung had already fixed the other
    issues in e53de7b6 ("perf lock contention: Fix struct rq lock
    access").
    Signed-off-by: default avatarJiri Olsa <jolsa@kernel.org>
    Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    Acked-by: default avatarNamhyung Kim <namhyung@kernel.org>
    Cc: Adrian Hunter <adrian.hunter@intel.com>
    Cc: Alexei Starovoitov <ast@kernel.org>
    Cc: Andrii Nakryiko <andrii@kernel.org>
    Cc: Changbin Du <changbin.du@huawei.com>
    Cc: Hao Luo <haoluo@google.com>
    Cc: Ian Rogers <irogers@google.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Song Liu <song@kernel.org>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Yang Jihong <yangjihong1@huawei.com>
    Link: https://lore.kernel.org/lkml/ZFVqeKLssg7uzxzI@kravaSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    760ebc45
lock_contention.bpf.c 9.92 KB