]> git.proxmox.com Git - qemu-server.git/commitdiff
disable usb hotplug for now
authorDominik Csapak <d.csapak@proxmox.com>
Mon, 4 Jul 2016 13:24:20 +0000 (15:24 +0200)
committerFabian Grünbichler <f.gruenbichler@proxmox.com>
Tue, 5 Jul 2016 07:23:57 +0000 (09:23 +0200)
we have a few problems with hotplug at the moment:
qemu may add usb hubs when adding usb devices but fails to remove them
when removing the usb device (this is a qemu bug)

also when starting a guest with a usb device we add ehci and uchi
controllers, which we cannot hot unplug

with those devices, it is impossible to live migrate the guest
to another host, meaning even if you remove all usb devices,
the migrate fails

so we deactivate usb hotplugging for now

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
PVE/QemuServer.pm

index b6ad27a6027dce6bdcbe008cde612846328a60e3..75f6445441620aceb2078e3bea2a3dcae7e5eb30 100644 (file)
@@ -3273,6 +3273,10 @@ sub vm_deviceplug {
 
     } elsif ($deviceid =~ m/^usb(\d+)$/) {
 
+       die "usb hotplug currently not reliable\n";
+       # since we can't reliably hot unplug all added usb devices
+       # and usb passthrough disables live migration
+       # we disable usb hotplugging for now
        qemu_deviceadd($vmid, PVE::QemuServer::USB::print_usbdevice_full($conf, $deviceid, $device));
 
     } elsif ($deviceid =~ m/^(virtio)(\d+)$/) {
@@ -3372,6 +3376,10 @@ sub vm_deviceunplug {
 
     } elsif ($deviceid =~ m/^usb\d+$/) {
 
+       die "usb hotplug currently not reliable\n";
+       # when unplugging usb devices this way,
+       # there may be remaining usb controllers/hubs
+       # so we disable it for now
        qemu_devicedel($vmid, $deviceid);
        qemu_devicedelverify($vmid, $deviceid);
 
@@ -3910,6 +3918,9 @@ sub vmconfig_hotplug_pending {
                    vm_deviceunplug($vmid, $conf, $opt);
                }
            } elsif ($opt =~ m/^usb\d+/) {
+               die "skip\n";
+               # since we cannot reliably hot unplug usb devices
+               # we are disabling it
                die "skip\n" if !$hotplug_features->{usb} || $conf->{$opt} =~ m/spice/i;
                vm_deviceunplug($vmid, $conf, $opt);
            } elsif ($opt eq 'vcpus') {
@@ -3963,6 +3974,9 @@ sub vmconfig_hotplug_pending {
                    vm_deviceunplug($vmid, $conf, $opt);
                }
            } elsif ($opt =~ m/^usb\d+$/) {
+               die "skip\n";
+               # since we cannot reliably hot unplug usb devices
+               # we are disabling it
                die "skip\n" if !$hotplug_features->{usb} || $value =~ m/spice/i;
                my $d = eval { PVE::JSONSchema::parse_property_string($usbdesc->{format}, $value) };
                die "skip\n" if !$d;