}
# usb devices
- my @usbdevices = PVE::QemuServer::USB::get_usb_devices($conf, $usbdesc->{format}, $MAX_USB_DEVICES);
+ my $usb_dev_features = {};
+ $usb_dev_features->{spice_usb3} = 1 if qemu_machine_feature_enabled($machine_type, $kvmver, 4, 1);
+
+ my @usbdevices = PVE::QemuServer::USB::get_usb_devices($conf, $usbdesc->{format}, $MAX_USB_DEVICES, $usb_dev_features);
push @$devices, @usbdevices if @usbdevices;
# serial devices
for (my $i = 0; $i < $MAX_SERIAL_PORTS; $i++) {
}
sub get_usb_devices {
- my ($conf, $format, $max_usb_devices) = @_;
+ my ($conf, $format, $max_usb_devices, $features) = @_;
my $devices = [];
my $hostdevice = parse_usb_device($d->{host});
$hostdevice->{usb3} = $d->{usb3};
if ($hostdevice->{spice}) {
- # usb redir support for spice, currently no usb3
+ # usb redir support for spice
+ my $bus = 'ehci';
+ $bus = 'xhci' if $hostdevice->{usb3} && $features->{spice_usb3};
+
push @$devices, '-chardev', "spicevmc,id=usbredirchardev$i,name=usbredir";
- push @$devices, '-device', "usb-redir,chardev=usbredirchardev$i,id=usbredirdev$i,bus=ehci.0";
+ push @$devices, '-device', "usb-redir,chardev=usbredirchardev$i,id=usbredirdev$i,bus=$bus.0";
} else {
push @$devices, '-device', print_usbdevice_full($conf, "usb$i", $hostdevice);
}