Re: 'perf test BPF' failing, libbpf regression wrt "basic API for BPF obj name"

From: Martin KaFai Lau
Date: Wed Nov 29 2017 - 17:32:34 EST


On Wed, Nov 29, 2017 at 06:15:43PM -0300, Arnaldo Carvalho de Melo wrote:
> Em Wed, Nov 29, 2017 at 01:07:34PM -0800, Martin KaFai Lau escreveu:
> > On Tue, Nov 28, 2017 at 04:05:19PM -0300, Arnaldo Carvalho de Melo wrote:
> > >
> > > [root@jouet ~]# perf test -v bpf
> > > 39: BPF filter :
> > > 39.1: Basic BPF filtering :
> > > --- start ---
> > > test child forked, pid 12198
> > > Kernel build dir is set to /lib/modules/4.14.0+/build
> > > set env: KBUILD_DIR=/lib/modules/4.14.0+/build
> > [ ... ]
> > > libbpf: failed to create map (name: 'flip_table'): Invalid argument
> > > libbpf: failed to load object '[basic_bpf_test]'
> > > bpf: load objects failed
> > 88cda1c9da02 ("bpf: libbpf: Provide basic API support to specify BPF obj name")
> > is introduced in 4.15.
>
> > I think the perf@xxxxxxxxxxx broke on older kernels like 4.14 because
> > the new bpf prog/map name is only introduced since 4.15.
>
> > The newer perf needs to be compatible with an older kernel?
>
> Sure :-)
Would the latest features introduced in perf/libbpf supposed to be
available in the latest kernel only? What may be the reason that the
latest perf is installed with an older kernel while it does not gain new
functionality?

>
> If some ABI breaks it should detect that and adapt, and older perf
> tools should also gracefully fail in such a case, which I'm not sure
> will be the case here, haven't checked perf's BPF integration to see how
> it behaves in such a case, but I will.
>
> - Arnaldo