From: Wei Liu Date: Mon, 17 Nov 2014 12:10:34 +0000 (+0000) Subject: libxl: remove existence check for PCI device hotplug X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=b923a13761eaf9b2b9689b0ce57dd1be55458274;p=people%2Fsstabellini%2Fxen-unstable.git%2F.git libxl: remove existence check for PCI device hotplug The existence check is to make sure a device is not added to a guest multiple times. PCI device backend path has different rules from vif, disk etc. For example: /local/domain/0/backend/pci/9/0/dev-1/0000:03:10.1 /local/domain/0/backend/pci/9/0/key-1/0000:03:10.1 /local/domain/0/backend/pci/9/0/dev-2/0000:03:10.2 /local/domain/0/backend/pci/9/0/key-2/0000:03:10.2 The devid for PCI devices is hardcoded 0. libxl__device_exists only checks up to /local/.../9/0 so it always returns true even the device is assignable. Remove invocation of libxl__device_exists. We're sure at this point that the PCI device is assignable (hence no xenstore entry or JSON entry). The check is done before hand. For HVM guest it's done by calling xc_test_assign_device and for PV guest it's done by calling pciback_dev_is_assigned. Reported-by: Li, Liang Z Signed-off-by: Wei Liu Cc: Ian Campbell Cc: Ian Jackson Cc: Konrad Wilk Acked-by: Ian Campbell --- diff --git a/tools/libxl/libxl_pci.c b/tools/libxl/libxl_pci.c index 9f40100540..316643cffc 100644 --- a/tools/libxl/libxl_pci.c +++ b/tools/libxl/libxl_pci.c @@ -175,14 +175,6 @@ static int libxl__device_pci_add_xenstore(libxl__gc *gc, uint32_t domid, libxl_d rc = libxl__xs_transaction_start(gc, &t); if (rc) goto out; - rc = libxl__device_exists(gc, t, device); - if (rc < 0) goto out; - if (rc == 1) { - LOG(ERROR, "device already exists in xenstore"); - rc = ERROR_DEVICE_EXISTS; - goto out; - } - rc = libxl__set_domain_configuration(gc, domid, &d_config); if (rc) goto out;