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

From: Arnaldo Carvalho de Melo
Date: Wed Nov 29 2017 - 16:15:52 EST


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 :-)

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