qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] ebpf: fix compatibility with libbpf 1.0+


From: Jason Wang
Subject: Re: [PATCH] ebpf: fix compatibility with libbpf 1.0+
Date: Thu, 16 Feb 2023 13:28:15 +0800

On Wed, Feb 15, 2023 at 4:27 AM Andrew Melnichenko <andrew@daynix.com> wrote:
>
> Hi, all.
> In the future, there would be eBPF RSS + the helper for Libvirt interaction.
> And those patches are required for future work. Technically they are
> required for the current builds with linked libbpf 1.01.
> Can we apply this patch?
>

I've queued this.

Thanks

>
> On Wed, Dec 28, 2022 at 6:19 PM Andrew Melnichenko <andrew@daynix.com> wrote:
> >
> > Hi, it's a good idea to update the skeleton generation. Technically
> > skeleton generation is not a part of Qemu building. The skeleton is
> > already presented in the Qemu tree, so we skip dependencies from
> > clang/bpftool.
> > It's a good idea to have an updated bpf program and simplified
> > Makefile with Qemu sources. And the skeleton in the Qemu tree should
> > be identical to what the Makefile.ebpf would generate.
> > I think having one patch with all changes to eBPF RSS is acceptable.
> >
> > On Tue, Dec 20, 2022 at 6:30 PM Shreesh Adiga
> > <16567adigashreesh@gmail.com> wrote:
> > >
> > > On Sun, Dec 18, 2022 at 05:15:04PM +0100, Philippe Mathieu-Daudé wrote:
> > > > Hi,
> > > >
> > > > On 18/12/22 15:39, Shreesh Adiga wrote:
> > > > > The current implementation fails to load on a system with
> > > > > libbpf 1.0 and reports that legacy map definitions in 'maps'
> > > > > section are not supported by libbpf v1.0+. This commit updates
> > > > > the Makefile to add BTF (-g flag) and appropriately updates
> > > > > the maps in rss.bpf.c and update the skeleton file in repo.
> > > > >
> > > > > Signed-off-by: Shreesh Adiga <16567adigashreesh@gmail.com>
> > > > > ---
> > > > >   ebpf/rss.bpf.skeleton.h  | 1171 
> > > > > ++++++++++++++++++++++++++++----------
> > > > >   tools/ebpf/Makefile.ebpf |    8 +-
> > > > >   tools/ebpf/rss.bpf.c     |   43 +-
> > > > >   3 files changed, 891 insertions(+), 331 deletions(-)
> > > >
> > > >
> > > > > +static inline const void *rss_bpf__elf_bytes(size_t *sz)
> > > > > +{
> > > > > +   *sz = 20440;
> > > > > +   return (const void *)"\
> > > > >   
> > > > > \x7f\x45\x4c\x46\x02\x01\x01\0\0\0\0\0\0\0\0\0\x01\0\xf7\0\x01\0\0\0\0\0\0\0\0\
> > > > > -\0\0\0\0\0\0\0\0\0\0\0\x18\x1d\0\0\0\0\0\0\0\0\0\0\x40\0\0\0\0\0\x40\0\x0a\0\
> > > > > -\x01\0\xbf\x18\0\0\0\0\0\0\xb7\x01\0\0\0\0\0\0\x63\x1a\x4c\xff\0\0\0\0\xbf\xa7\
> > > > > -\0\0\0\0\0\0\x07\x07\0\0\x4c\xff\xff\xff\x18\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
> > > > > +\0\0\0\0\0\0\0\0\0\0\0\x98\x4c\0\0\0\0\0\0\0\0\0\0\x40\0\0\0\0\0\x40\0\x0d\0\
> > > > > +\x01\0\xbf\x19\0\0\0\0\0\0\xb7\x01\0\0\0\0\0\0\x63\x1a\x54\xff\0\0\0\0\xbf\xa7\
> > > > > +\0\0\0\0\0\0\x07\x07\0\0\x54\xff\xff\xff\x18\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
> > > > >   
> > > > > \xbf\x72\0\0\0\0\0\0\x85\0\0\0\x01\0\0\0\xbf\x06\0\0\0\0\0\0\x18\x01\0\0\0\0\0\
> > > > > -\0\0\0\0\0\0\0\0\0\xbf\x72\0\0\0\0\0\0\x85\0\0\0\x01\0\0\0\xbf\x07\0\0\0\0\0\0\
> > > > > -\x18\0\0\0\xff\xff\xff\xff\0\0\0\0\0\0\0\0\x15\x06\x66\x02\0\0\0\0\xbf\x79\0\0\
> > > > > -\0\0\0\0\x15\x09\x64\x02\0\0\0\0\x71\x61\0\0\0\0\0\0\x55\x01\x01\0\0\0\0\0\x05\
> > > > > -\0\x5d\x02\0\0\0\0\xb7\x01\0\0\0\0\0\0\x63\x1a\xc0\xff\0\0\0\0\x7b\x1a\xb8\xff\
> > > > > -\0\0\0\0\x7b\x1a\xb0\xff\0\0\0\0\x7b\x1a\xa8\xff\0\0\0\0\x7b\x1a\xa0\xff\0\0\0\
> > > > > -\0\x63\x1a\x98\xff\0\0\0\0\x7b\x1a\x90\xff\0\0\0\0\x7b\x1a\x88\xff\0\0\0\0\x7b\
> > > > > -\x1a\x80\xff\0\0\0\0\x7b\x1a\x78\xff\0\0\0\0\x7b\x1a\x70\xff\0\0\0\0\x7b\x1a\
> > > > > -\x68\xff\0\0\0\0\x7b\x1a\x60\xff\0\0\0\0\x7b\x1a\x58\xff\0\0\0\0\x7b\x1a\x50\
> > > > > -\xff\0\0\0\0\x15\x08\x4c\x02\0\0\0\0\x6b\x1a\xd0\xff\0\0\0\0\xbf\xa3\0\0\0\0\0\
> > > > > -\0\x07\x03\0\0\xd0\xff\xff\xff\xbf\x81\0\0\0\0\0\0\xb7\x02\0\0\x0c\0\0\0\xb7\
> > > > > +\0\0\0\0\0\0\0\0\0\xbf\x72\0\0\0\0\0\0\x85\0\0\0\x01\0\0\0\xbf\x08\0\0\0\0\0\0\
> > > > > +\x18\0\0\0\xff\xff\xff\xff\0\0\0\0\0\0\0\0\x15\x06\x67\x02\0\0\0\0\xbf\x87\0\0\
> > > > > +\0\0\0\0\x15\x07\x65\x02\0\0\0\0\x71\x61\0\0\0\0\0\0\x55\x01\x01\0\0\0\0\0\x05\
> > > > > +\0\x5e\x02\0\0\0\0\xb7\x01\0\0\0\0\0\0\x63\x1a\xc8\xff\0\0\0\0\x7b\x1a\xc0\xff\
> > > > > +\0\0\0\0\x7b\x1a\xb8\xff\0\0\0\0\x7b\x1a\xb0\xff\0\0\0\0\x7b\x1a\xa8\xff\0\0\0\
> > > > > +\0\x63\x1a\xa0\xff\0\0\0\0\x7b\x1a\x98\xff\0\0\0\0\x7b\x1a\x90\xff\0\0\0\0\x7b\
> > > > > +\x1a\x88\xff\0\0\0\0\x7b\x1a\x80\xff\0\0\0\0\x7b\x1a\x78\xff\0\0\0\0\x7b\x1a\
> > > > > +\x70\xff\0\0\0\0\x7b\x1a\x68\xff\0\0\0\0\x7b\x1a\x60\xff\0\0\0\0\x7b\x1a\x58\
> > > > > +\xff\0\0\0\0\x15\x09\x4d\x02\0\0\0\0\x6b\x1a\xd0\xff\0\0\0\0\xbf\xa3\0\0\0\0\0\
> > > > [...]
> > > >
> > > > Can we have a build system step which generates this file and compare
> > > > with what is committed in the repository that we can run in our CI?
> > > >
> > > > That would avoid the need of human review of this blob.
> > > >
> > > Here are the steps to verify:
> > > Pull latest archlinux/archlinux docker image and get a bash shell inside
> > > the container. Install the required toolchain packages.
> > > pacman -Syu --noconfirm
> > > pacman -S --noconfirm  bpf libbpf llvm clang make
> > >
> > > Confirm the versions:
> > > clang 14.0.6
> > > bpftool 7.0.0
> > > libbpf 1.0.1
> > >
> > > After this, ensure that the files Makefile.ebpf and rss.bpf.c from this
> > > patch exist at /home/shreesh/c/qemu/tools/ebpf/ inside the docker.
> > > This path seems to be important since BTF info seems to contain the 
> > > absolute
> > > path of rss.bpf.c which was compiled by clang and is embedded inside
> > > the generated ELF object.
> > >
> > > Run `make -C /home/shreesh/c/qemu/tools/ebpf -f Makefile.ebpf` and
> > > verify that `sha256sum 
> > > /home/shreesh/c/qemu/tools/ebpf/rss.bpf.skeleton.h` is
> > > a54af3d1fb401ddd56c151f00ae20d6557e965c0a1a4d8ed5f8d925457158a0e which
> > > should be the same as the one submitted as part of this patch.
> > >
> > > I'm not familiar with QEMU's CI and am not sure if the above steps can
> > > be converted into build system steps. However it should be doable by a
> > > human and verify that the generated skeleton file is correct and not
> > > tampered with.
> > >
> > > Regards,
> > > Shreesh
>




reply via email to

[Prev in Thread] Current Thread [Next in Thread]