mirror of
https://git.proxmox.com/git/qemu-server
synced 2025-08-04 20:12:15 +00:00
USB: increase max usb devices to 14 for newer machine version and ostype
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@proxmox.com>
This commit is contained in:
parent
4862922a2b
commit
0c3d18ef13
@ -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);
|
||||
|
||||
|
@ -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;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user