Am 18.08.25, 16:40 schrieb Maximilian Martin via Devel
            <devel@
lists.libvirt.org>:
            
              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