applied On Mon, Jul 04, 2016 at 03:24:20PM +0200, Dominik Csapak wrote: > 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.csa...@proxmox.com> > --- > changes from v1: > * used an coherent way of disabling the usb hotplug codepaths > PVE/QemuServer.pm | 14 ++++++++++++++ > 1 file changed, 14 insertions(+) > > diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm > index b6ad27a..da26efe 100644 > --- a/PVE/QemuServer.pm > +++ b/PVE/QemuServer.pm > @@ -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; > -- > 2.1.4 > > > _______________________________________________ > pve-devel mailing list > pve-devel@pve.proxmox.com > http://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel >
_______________________________________________ pve-devel mailing list pve-devel@pve.proxmox.com http://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel