[pve-devel] [PATCH qemu-server v2] disable usb hotplug for now
Fabian Grünbichler
f.gruenbichler at proxmox.com
Tue Jul 5 09:26:25 CEST 2016
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.csapak at 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 at pve.proxmox.com
> http://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
>
More information about the pve-devel
mailing list