See 2/2 for explanation why we need this. Also, .hostdevice uses qemu_open() under the hood which enables Libvirt to pass FD instead of /dev/bus/usb/... path. However, qemu_open() does not support getfd style of passing FD (which is what we use), but so called FD sets which require some more work. I'm working on it as we speak but I figured, let's fix this bug first and post FD passing after that. For curious ones, here is the raw, unclean version with FD sets: https://gitlab.com/MichalPrivoznik/libvirt/-/commits/qemu_hostdev_alt/ Michal Prívozník (2): qemu_capabilities: Add QEMU_CAPS_USB_HOST_HOSTDEVICE qemu: Use .hostdevice attribute for usb-host src/qemu/qemu_capabilities.c | 10 ++ src/qemu/qemu_capabilities.h | 3 + src/qemu/qemu_command.c | 21 ++- .../caps_1.5.3.x86_64.replies | 126 ++++++++++++-- .../caps_1.6.0.x86_64.replies | 126 ++++++++++++-- .../caps_1.7.0.x86_64.replies | 126 ++++++++++++-- .../caps_2.1.1.x86_64.replies | 126 ++++++++++++-- .../caps_2.10.0.aarch64.replies | 134 +++++++++++++-- .../caps_2.10.0.ppc64.replies | 130 ++++++++++++-- .../caps_2.10.0.s390x.replies | 134 +++++++++++++-- .../caps_2.10.0.x86_64.replies | 146 +++++++++++++--- .../caps_2.11.0.s390x.replies | 134 +++++++++++++-- .../caps_2.11.0.x86_64.replies | 146 +++++++++++++--- .../caps_2.12.0.aarch64.replies | 150 +++++++++++++--- .../caps_2.12.0.ppc64.replies | 142 ++++++++++++--- .../caps_2.12.0.s390x.replies | 142 ++++++++++++--- .../caps_2.12.0.x86_64.replies | 162 ++++++++++++++---- .../caps_2.4.0.x86_64.replies | 126 ++++++++++++-- .../caps_2.5.0.x86_64.replies | 130 ++++++++++++-- .../caps_2.6.0.aarch64.replies | 134 +++++++++++++-- .../caps_2.6.0.ppc64.replies | 130 ++++++++++++-- .../caps_2.6.0.x86_64.replies | 130 ++++++++++++-- .../caps_2.7.0.s390x.replies | 130 ++++++++++++-- .../caps_2.7.0.x86_64.replies | 130 ++++++++++++-- .../caps_2.8.0.s390x.replies | 134 +++++++++++++-- .../caps_2.8.0.x86_64.replies | 130 ++++++++++++-- .../caps_2.9.0.ppc64.replies | 130 ++++++++++++-- .../caps_2.9.0.s390x.replies | 134 +++++++++++++-- .../caps_2.9.0.x86_64.replies | 146 +++++++++++++--- .../caps_3.0.0.ppc64.replies | 142 ++++++++++++--- .../caps_3.0.0.riscv32.replies | 138 +++++++++++++-- .../caps_3.0.0.riscv64.replies | 138 +++++++++++++-- .../caps_3.0.0.s390x.replies | 142 ++++++++++++--- .../caps_3.0.0.x86_64.replies | 162 ++++++++++++++---- .../caps_3.1.0.ppc64.replies | 142 ++++++++++++--- .../caps_3.1.0.x86_64.replies | 162 ++++++++++++++---- .../caps_4.0.0.aarch64.replies | 150 +++++++++++++--- .../caps_4.0.0.ppc64.replies | 142 ++++++++++++--- .../caps_4.0.0.riscv32.replies | 138 +++++++++++++-- .../caps_4.0.0.riscv64.replies | 138 +++++++++++++-- .../caps_4.0.0.s390x.replies | 142 ++++++++++++--- .../caps_4.0.0.x86_64.replies | 162 ++++++++++++++---- .../caps_4.1.0.x86_64.replies | 154 ++++++++++++++--- .../caps_4.2.0.aarch64.replies | 154 ++++++++++++++--- .../caps_4.2.0.ppc64.replies | 142 ++++++++++++--- .../caps_4.2.0.s390x.replies | 142 ++++++++++++--- .../caps_4.2.0.x86_64.replies | 154 ++++++++++++++--- .../caps_5.0.0.aarch64.replies | 154 ++++++++++++++--- .../caps_5.0.0.ppc64.replies | 142 ++++++++++++--- .../caps_5.0.0.riscv64.replies | 138 +++++++++++++-- .../caps_5.0.0.x86_64.replies | 154 ++++++++++++++--- .../caps_5.1.0.x86_64.replies | 158 ++++++++++++++--- .../caps_5.1.0.x86_64.xml | 1 + .../caps_5.2.0.x86_64.replies | 158 ++++++++++++++--- .../caps_5.2.0.x86_64.xml | 1 + 55 files changed, 6110 insertions(+), 982 deletions(-) -- 2.26.2