Currently, only vendor/product and bus/device matching are supported for USB host
devices. Neither of these provide a stable and persistent way of assigning a guest
a specific host device. Vendor/product can be ambiguous. Device numbers change on
every enumeration.
This patch adds a bus/port matching, which allows a specific port on the host to be
specified using the dotted notation found in Linux's "devpath" sysfs
attribute.
The path series is based on the previous work of Thomas Hebb:
https://lists.libvirt.org/archives/list/devel@lists.libvirt.org/message/7...
This resubmission includes Daniel's patch which extends the USB hostdev test logic.
Maximilian Martin (7):
tests: validate an XML config with USB vendor/product set
virusb test data: add devpath files for port addressing
domain_conf, virhostdev, virusb, virusb test: add bus/port matching
schema: add USB port attribute
tests: validate an XML config with USB bus/port set
nodedev: add USB port to nodedev XML
docs: add description for USB port matching
docs/formatdomain.rst | 29 ++--
src/conf/domain_conf.c | 58 ++++++-
src/conf/domain_conf.h | 1 +
src/conf/node_device_conf.c | 5 +
src/conf/node_device_conf.h | 1 +
src/conf/schemas/basictypes.rng | 31 ++++
src/conf/schemas/domaincommon.rng | 41 +----
src/conf/schemas/nodedev.rng | 3 +
src/hypervisor/virhostdev.c | 131 ++++++++------
src/libvirt_private.syms | 2 -
src/node_device/node_device_udev.c | 4 +
src/util/virusb.c | 160 ++++++------------
src/util/virusb.h | 22 +--
.../usb_device_1d6b_1_0000_00_1d_0.xml | 1 +
...ostdev-usb-address-port.x86_64-latest.args | 36 ++++
...hostdev-usb-address-port.x86_64-latest.xml | 45 +++++
.../hostdev-usb-address-port.xml | 28 +++
...tdev-usb-vendor-product.x86_64-latest.args | 35 ++++
...stdev-usb-vendor-product.x86_64-latest.xml | 44 +++++
.../hostdev-usb-vendor-product.xml | 36 ++++
tests/qemuxmlconftest.c | 25 +++
tests/virusbtest.c | 149 +++++++++++-----
.../sys_bus_usb/devices/1-1.5.3.1/devpath | 1 +
.../sys_bus_usb/devices/1-1.5.3.3/devpath | 1 +
.../sys_bus_usb/devices/1-1.5.3/devpath | 1 +
.../sys_bus_usb/devices/1-1.5.4/devpath | 1 +
.../sys_bus_usb/devices/1-1.5.5/devpath | 1 +
.../sys_bus_usb/devices/1-1.5.6/devpath | 1 +
.../sys_bus_usb/devices/1-1.5/devpath | 1 +
.../sys_bus_usb/devices/1-1.6/devpath | 1 +
.../sys_bus_usb/devices/1-1/devpath | 1 +
.../sys_bus_usb/devices/2-1.2/devpath | 1 +
.../sys_bus_usb/devices/2-1/devpath | 1 +
.../sys_bus_usb/devices/usb1/devpath | 1 +
.../sys_bus_usb/devices/usb2/devpath | 1 +
.../sys_bus_usb/devices/usb3/devpath | 1 +
.../sys_bus_usb/devices/usb4/devpath | 1 +
37 files changed, 631 insertions(+), 271 deletions(-)
create mode 100644 tests/qemuxmlconfdata/hostdev-usb-address-port.x86_64-latest.args
create mode 100644 tests/qemuxmlconfdata/hostdev-usb-address-port.x86_64-latest.xml
create mode 100644 tests/qemuxmlconfdata/hostdev-usb-address-port.xml
create mode 100644 tests/qemuxmlconfdata/hostdev-usb-vendor-product.x86_64-latest.args
create mode 100644 tests/qemuxmlconfdata/hostdev-usb-vendor-product.x86_64-latest.xml
create mode 100644 tests/qemuxmlconfdata/hostdev-usb-vendor-product.xml
create mode 100644 tests/virusbtestdata/sys_bus_usb/devices/1-1.5.3.1/devpath
create mode 100644 tests/virusbtestdata/sys_bus_usb/devices/1-1.5.3.3/devpath
create mode 100644 tests/virusbtestdata/sys_bus_usb/devices/1-1.5.3/devpath
create mode 100644 tests/virusbtestdata/sys_bus_usb/devices/1-1.5.4/devpath
create mode 100644 tests/virusbtestdata/sys_bus_usb/devices/1-1.5.5/devpath
create mode 100644 tests/virusbtestdata/sys_bus_usb/devices/1-1.5.6/devpath
create mode 100644 tests/virusbtestdata/sys_bus_usb/devices/1-1.5/devpath
create mode 100644 tests/virusbtestdata/sys_bus_usb/devices/1-1.6/devpath
create mode 100644 tests/virusbtestdata/sys_bus_usb/devices/1-1/devpath
create mode 100644 tests/virusbtestdata/sys_bus_usb/devices/2-1.2/devpath
create mode 100644 tests/virusbtestdata/sys_bus_usb/devices/2-1/devpath
create mode 100644 tests/virusbtestdata/sys_bus_usb/devices/usb1/devpath
create mode 100644 tests/virusbtestdata/sys_bus_usb/devices/usb2/devpath
create mode 100644 tests/virusbtestdata/sys_bus_usb/devices/usb3/devpath
create mode 100644 tests/virusbtestdata/sys_bus_usb/devices/usb4/devpath
--
2.39.5