diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index b307d3139c..262fffe5fe 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -5001,6 +5001,8 @@ qemuBuildUSBHostdevDevProps(const virDomainDef *def, unsigned int hostbus = 0; unsigned int hostaddr = 0; g_autofree char *hostdevice = NULL; + virTristateSwitch guestReset = VIR_TRISTATE_SWITCH_ABSENT; + virTristateSwitch guestResetsAll = VIR_TRISTATE_SWITCH_ABSENT; if (!dev->missing) { if (usbsrc->bus == 0 && usbsrc->device == 0) { @@ -5018,6 +5020,23 @@ qemuBuildUSBHostdevDevProps(const virDomainDef *def, } } + switch (usbsrc->guestReset) { + case VIR_DOMAIN_HOSTDEV_USB_GUEST_RESET_OFF: + guestReset = VIR_TRISTATE_SWITCH_OFF; + break; + case VIR_DOMAIN_HOSTDEV_USB_GUEST_RESET_UNINITIALIZED: + guestReset = VIR_TRISTATE_SWITCH_ON; + guestResetsAll = VIR_TRISTATE_SWITCH_OFF; + break; + case VIR_DOMAIN_HOSTDEV_USB_GUEST_RESET_ON: + guestReset = VIR_TRISTATE_SWITCH_ON; + guestResetsAll = VIR_TRISTATE_SWITCH_ON; + break; + case VIR_DOMAIN_HOSTDEV_USB_GUEST_RESET_DEFAULT: + case VIR_DOMAIN_HOSTDEV_USB_GUEST_RESET_LAST: + break; + } + if (virJSONValueObjectAdd(&props, "s:driver", "usb-host", "S:hostdevice", hostdevice, @@ -5025,6 +5044,8 @@ qemuBuildUSBHostdevDevProps(const virDomainDef *def, "p:hostaddr", hostaddr, "s:id", dev->info->alias, "p:bootindex", dev->info->bootIndex, + "T:guest-reset", guestReset, + "T:guest-resets-all", guestResetsAll, NULL) < 0) return NULL; diff --git a/tests/qemuxml2argvdata/hostdev-usb-address.x86_64-latest.args b/tests/qemuxml2argvdata/hostdev-usb-address.x86_64-latest.args index f59c463f5e..978e6a6e6d 100644 --- a/tests/qemuxml2argvdata/hostdev-usb-address.x86_64-latest.args +++ b/tests/qemuxml2argvdata/hostdev-usb-address.x86_64-latest.args @@ -32,6 +32,6 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-QEMUGuest1/.config \ -blockdev '{"node-name":"libvirt-1-format","read-only":false,"driver":"raw","file":"libvirt-1-storage"}' \ -device '{"driver":"ide-hd","bus":"ide.0","unit":0,"drive":"libvirt-1-format","id":"ide0-0-0","bootindex":1}' \ -audiodev '{"id":"audio1","driver":"none"}' \ --device '{"driver":"usb-host","hostdevice":"/dev/bus/usb/014/006","id":"hostdev0","bus":"usb.0","port":"1"}' \ +-device '{"driver":"usb-host","hostdevice":"/dev/bus/usb/014/006","id":"hostdev0","guest-reset":true,"guest-resets-all":false,"bus":"usb.0","port":"1"}' \ -sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \ -msg timestamp=on