qemu-devel
[Top][All Lists]
Advanced

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

Re: [PATCH 5/5] qmp: Added qemu-ebpf-rss-path command.


From: Andrew Melnichenko
Subject: Re: [PATCH 5/5] qmp: Added qemu-ebpf-rss-path command.
Date: Thu, 9 Sep 2021 13:35:08 +0300

Hi,
Ther first two are bogus.  /work/armbru/tmp/inst-qemu/... is where "make
install" would put things.  I last ran "make install" almost three
months ago.
The stamp check is implemented only for the RSS helper. Qemu looks for a helper first in HelpDir, then next to the binary.
Bridge/PR helpers found in "inst-qemu" according to build configuration.
To be more strict, for the next patch we may return only ebpf helper in the list. Other helpers may be added later with stamp check.

 It's still unreliable in the sense of "may not
find the helper"
Ok, I see the problem.
Here I can propose possible solutions:
  1. Add the argument to QMP request - the path(s) where the qemu should look for helper by priority: argument path, installation dir, qemu's dir. And return an array of all possible helpers binaries.
  2. Retrieve the stamp from QMP request, so Libvirt may check the stamp by itself.
  3. Set suid bit to helper and pass the helper's path to the qemu, so qemu may run it by itself.
Searching the ELF symbol table requires ELF.  I suspect your meson.build
doesn't reflect that.
 
It also requires the symbol table to be present.  Statically linked
programs don't have one, if I remember correctly.
 
Well, qemu-ebpf-rss-helper is only for Linux and expectations are to have ELF binaries.
The helper builds dynamically linked with libbpf.so at least.

Management applications run qemu-system-FOO and helpers.  They know
where to find qemu-system-FOO.  It stands to reason that they also know
where to find the matching helpers.  I fail to see why they need help
from qemu-system-FOO via QMP.  Even if they need help, qemu-system-FOO
can't give it, because it cannot know for sure.  It is wherever the
system administrator / distro put it.
 
We may have several different qemu builds which may require different rss helpers.
Domain with a custom emulator:
  <devices>
    <emulator>/path_to_my_awesome_qemu_with_custom_bpf/qemu-system-FOO</emulator>

Libvirt would gather properties of that qemu and we need to provide the proper helper for it.
The "default" helper from libvirt configure may not suit the qemu.
So the idea is to ask the qemu itself where is a possible helper.
So Libvirt may use only <emulator> without additional changes in XML document.

So we need to solve next cases:


There are much easier ways for that than searching through ELF symbol
tables.  Have a command line option to print it.  For qemu-system-FOO,
you can also have a QMP command to query it.
The stamp was added in a similar way as qemu modules(special symbol, checked during load).
Also, checking the stamp without running is a good security measure.

I get a few warnings.  I'm copying the ones from Clang:
Thank you, I'll fix them in v2 patches with rebased tree.

reply via email to

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