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/7U3HFUW3DGDOSF4RIBRZJINKFDYCE2ZH/
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

Reply via email to