[libvirt] [RFC PATCH 00/16] Introduce vGPU mdev framework to libvirt
Michal Privoznik
mprivozn at redhat.com
Mon Feb 6 16:29:56 UTC 2017
On 06.02.2017 13:19, Erik Skultety wrote:
> Finally. It's here. This is the initial suggestion on how libvirt might
> interract with the mdev framework, currently only focussing on the non-managed
> devices, i.e. those pre-created by the user, since that will be revisited once
> we all settled on how the XML should look like, given we might not want to use
> the sysfs path directly as an attribute in the domain XML. My proposal on the
> XML is the following:
>
> <hostdev mode='subsystem' type='mdev'>
> <source>
> <!-- this is the host's physical device address -->
> <address domain='0x0000' bus='0x00' slot='0x00' function='0x00'>
> <uuid>vGPU_UUID<uuid>
> <source>
> <!-- target PCI address can be omitted to assign it automatically -->
> </hostdev>
>
> So the mediated device is identified by the physical parent device visible on
> the host and a UUID which allows us to construct the sysfs path by ourselves,
> which we then put on the QEMU's command line.
>
> A few remarks if you actually happen to have a machine to test this on:
> - right now the mediated devices are one-time use only, i.e. they have to be
> recreated before every machine boot
> - I wouldn't recommend assigning multiple vGPUs to a single domain
>
> Once this series is sorted out, we can then continue with 'managed=yes' where
> as Laine pointed out [1], we need to figure out how exactly should the
> management layer hint libvirt which vGPU type should be used for device
> instantiation.
>
> [1] https://www.redhat.com/archives/libvir-list/2017-January/msg00287.html
>
> #pleaseshareyourfeedback
>
> Thanks,
> Erik
>
> Erik Skultety (16):
> util: Introduce new module virmdev
> conf: Introduce new hostdev device type mdev
> docs: Update RNG schema to reflect the new hostdev type mdev
> conf: Adjust the domain parser to work with mdevs
> Adjust the formatter to reflect the new hostdev type mdev
> security: dac: Enable labeling of vfio mediated devices
> security: selinux: Enable labeling of vfio mediated devices
> conf: Enable cold-plug of a mediated device
> qemu: Assign PCI addresses for mediated devices as well
> hostdev: Maintain a driver list of active mediated devices
> hostdev: Introduce a reattach method for mediated devices
> qemu: cgroup: Adjust cgroups' logic to allow mediated devices
> qemu: namespace: Hook up the discovery of mdevs into the namespace
> code
> qemu: Format mdevs on the qemu command line
> test: Add some test cases for our test suite regarding the mdevs
> docs: Document the new hostdev device type 'mdev'
>
> docs/formatdomain.html.in | 40 ++-
> docs/schemas/domaincommon.rng | 17 +
> po/POTFILES.in | 1 +
> src/Makefile.am | 1 +
> src/conf/domain_conf.c | 81 ++++-
> src/conf/domain_conf.h | 10 +
> src/libvirt_private.syms | 19 ++
> src/qemu/qemu_cgroup.c | 35 ++
> src/qemu/qemu_command.c | 49 +++
> src/qemu/qemu_command.h | 5 +
> src/qemu/qemu_domain.c | 13 +
> src/qemu/qemu_domain_address.c | 12 +-
> src/qemu/qemu_hostdev.c | 37 ++
> src/qemu/qemu_hostdev.h | 8 +
> src/qemu/qemu_hotplug.c | 2 +
> src/security/security_apparmor.c | 3 +
> src/security/security_dac.c | 56 +++
> src/security/security_selinux.c | 55 +++
> src/util/virhostdev.c | 179 +++++++++-
> src/util/virhostdev.h | 16 +
> src/util/virmdev.c | 375 +++++++++++++++++++++
> src/util/virmdev.h | 85 +++++
> tests/domaincapsschemadata/full.xml | 1 +
> ...qemuxml2argv-hostdev-mdev-unmanaged-no-uuid.xml | 37 ++
> .../qemuxml2argv-hostdev-mdev-unmanaged.args | 25 ++
> .../qemuxml2argv-hostdev-mdev-unmanaged.xml | 38 +++
> tests/qemuxml2argvtest.c | 6 +
> .../qemuxml2xmlout-hostdev-mdev-unmanaged.xml | 41 +++
> tests/qemuxml2xmltest.c | 1 +
> 29 files changed, 1239 insertions(+), 9 deletions(-)
> create mode 100644 src/util/virmdev.c
> create mode 100644 src/util/virmdev.h
> create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-hostdev-mdev-unmanaged-no-uuid.xml
> create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-hostdev-mdev-unmanaged.args
> create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-hostdev-mdev-unmanaged.xml
> create mode 100644 tests/qemuxml2xmloutdata/qemuxml2xmlout-hostdev-mdev-unmanaged.xml
>
I'm no expert in mdevs, but from code POV these look solid.
Michal
More information about the libvir-list
mailing list