On Thu, Jun 26, 2025 at 08:56:48AM +0200, Maximilian Martin wrote:
> Am 23.06.2025 um 16:32 schrieb Daniel P. Berrangé via Devel:
> > On Mon, Jun 23, 2025 at 04:11:25PM +0200, Michal Prívozník via Devel wrote:
> > > On 4/21/25 21:38, Maximilian Martin via Devel wrote:
> > > > This resubmission splits up the previous patch into multiple patches and
> > > > incorporates review comments from Michal Prívozník.
> > > > 
> > > > 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.
> > > > 
> > > > This patch is based on the previous work of Thomas Hebb: 
> > > > https://lists.libvirt.org/archives/list/devel@lists.libvirt.org/message/7U3HFUW3DGDOSF4RIBRZJINKFDYCE2ZH/
> > > > 
> > > > Resolves: https://gitlab.com/libvirt/libvirt/-/issues/513
> > > > 
> > > > Signed-off-by: Maximilian Martin <maximilian_mar...@gmx.de>
> > > > 
> > > > Maximilian Martin (4):
> > > >    virusb test data: add devpath files for port addressing
> > > >    domain_conf, virhostdev, virusb, virusb test: add bus/port matching
> > > >    schema: add USB port attribute
> > > >    docs: add description for USB port matching
> > > > 
> > > >   docs/formatdomain.rst                         |  29 ++--
> > > >   src/conf/domain_conf.c                        |  69 +++++++-
> > > >   src/conf/domain_conf.h                        |   1 +
> > > >   src/conf/schemas/domaincommon.rng             |  11 +-
> > > >   src/hypervisor/virhostdev.c                   | 131 +++++++++------
> > > >   src/libvirt_private.syms                      |   2 -
> > > >   src/util/virusb.c                             | 156 ++++++------------
> > > >   src/util/virusb.h                             |  32 ++--
> > > >   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 +
> > > >   24 files changed, 351 insertions(+), 244 deletions(-)
> > > >   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
> > > > 
> > > I've accumulated some fixes to patch 2/4 and stored them as a fixup
> > > commit:
> > > 
> > > https://gitlab.com/MichalPrivoznik/libvirt/-/commit/bd6f9c823b0bbdafce4a8b7426c5763ad1d77966
> > > 
> > > If you're fine with suggested changes I could squash them and merge.
> > IMHO the series is incomplete  as it has added new domain XML schema
> > without adding any new test XML files to exercise it.
> > 
> > With regards,
> > Daniel
> 
> I am not sure how to implement the XML test. Similar to vendor/product
> matching, I implemented bus/port matching as a "secondary" way of
> addressing. This means that libvirt will always translate the given address
> to a hostdevice path (e.g. /dev/bus/usb/014/006) with bus/device address.
> This path will be used for the qemu command. How can I implement an XML test
> when there is no real device which can be mapped?

I thought we had vendor/product matching tests, but I learnt that we don't.

I then thought we could use the virhostusb mock from the virhostusb test
case, but the XML tests won't exercise the callpaths for that.

So I've just done a crude hack

https://lists.libvirt.org/archives/list/devel@lists.libvirt.org/thread/7ZQYYVQ7WDIYF2HTCKM4SF4WKG5BPMDV/

we could just extend that crude hack to at least illustrate the input
XML parsing & formatting.

With regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|

Reply via email to