[pve-devel] [PATCH qemu-server 6/7] USB: increase max usb devices to 14 for newer machine version and ostype
Dominik Csapak
d.csapak at proxmox.com
Thu Nov 10 15:35:57 CET 2022
for machine versions >= 7.1 and ostype linux or windows > 7, we use the
qemu-xhci controller where we have up to 14 usable ports, so make them
available to the user
Signed-off-by: Dominik Csapak <d.csapak at proxmox.com>
---
PVE/QemuServer.pm | 5 +++--
PVE/QemuServer/USB.pm | 13 +++++++++++++
2 files changed, 16 insertions(+), 2 deletions(-)
diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm
index 452eb10..3a0704a 100644
--- a/PVE/QemuServer.pm
+++ b/PVE/QemuServer.pm
@@ -823,7 +823,7 @@ while (my ($k, $v) = each %$confdesc) {
PVE::JSONSchema::register_standard_option("pve-qm-$k", $v);
}
-my $MAX_USB_DEVICES = 5;
+my $MAX_USB_DEVICES = 14;
my $MAX_NETS = 32;
my $MAX_SERIAL_PORTS = 4;
my $MAX_PARALLEL_PORTS = 3;
@@ -1102,7 +1102,8 @@ EODESCR
my $usbdesc = {
optional => 1,
type => 'string', format => $usb_fmt,
- description => "Configure an USB device (n is 0 to 4).",
+ description => "Configure an USB device (n is 0 to 4, for machine version >= 7.1 and ostype"
+ ." l26 or windows > 7, n can be up to 14).",
};
PVE::JSONSchema::register_standard_option("pve-qm-usb", $usbdesc);
diff --git a/PVE/QemuServer/USB.pm b/PVE/QemuServer/USB.pm
index 96931d4..7def04d 100644
--- a/PVE/QemuServer/USB.pm
+++ b/PVE/QemuServer/USB.pm
@@ -14,6 +14,8 @@ get_usb_controllers
get_usb_devices
);
+my $OLD_MAX_USB = 5;
+
sub parse_usb_device {
my ($value) = @_;
@@ -35,6 +37,15 @@ sub parse_usb_device {
return $res;
}
+my sub check_usb_index {
+ my ($index, $use_qemu_xhci) = @_;
+
+ die "using usb$index is only possible with machine type >= 7.1 and ostype l26 or windows > 7\n"
+ if $index >= $OLD_MAX_USB && !$use_qemu_xhci;
+
+ return undef;
+}
+
sub get_usb_controllers {
my ($conf, $bridges, $arch, $machine, $format, $max_usb_devices, $machine_version) = @_;
@@ -72,6 +83,7 @@ sub get_usb_controllers {
my $use_usb = 0;
for (my $i = 0; $i < $max_usb_devices; $i++) {
next if !$conf->{"usb$i"};
+ check_usb_index($i, $use_qemu_xhci);
my $d = eval { PVE::JSONSchema::parse_property_string($format,$conf->{"usb$i"}) };
next if !$d;
$use_usb = 1;
@@ -100,6 +112,7 @@ sub get_usb_devices {
for (my $i = 0; $i < $max_usb_devices; $i++) {
my $devname = "usb$i";
next if !$conf->{$devname};
+ check_usb_index($i, $use_qemu_xhci);
my $d = eval { PVE::JSONSchema::parse_property_string($format,$conf->{$devname}) };
next if !$d;
--
2.30.2
More information about the pve-devel
mailing list