[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [PATCH 3 of 3] xl, check a PCI device is assignable before adding it to a domU



 tools/libxl/libxl_pci.c |  11 ++++++++++-
 1 files changed, 10 insertions(+), 1 deletions(-)


This prevents PCI devices from being added multiply to the same domain
or multiple different domains simultaneously.

diff -r 214733749470 -r dbfc4f30efe2 tools/libxl/libxl_pci.c
--- a/tools/libxl/libxl_pci.c   Tue Jul 27 17:17:31 2010 +0100
+++ b/tools/libxl/libxl_pci.c   Tue Jul 27 17:18:44 2010 +0100
@@ -334,8 +334,17 @@ int libxl_device_pci_add(struct libxl_ct
     char *state, *vdevfn;
     int rc, hvm;
     int stubdomid = 0;
+    libxl_device_pci *assigned;
+    int num_assigned;
 
-    /* TODO: check if the device can be assigned */
+    assigned = get_all_assigned_devices(ctx, &num_assigned);
+    if ( is_assigned(assigned, num_assigned, pcidev->domain,
+                     pcidev->bus, pcidev->dev, pcidev->func) ) {
+        XL_LOG(ctx, XL_LOG_ERROR, "PCI device already attached to a domain");
+        free(assigned);
+        return ERROR_FAIL;
+    }
+    free(assigned);
 
     libxl_device_pci_reset(ctx, pcidev->domain, pcidev->bus, pcidev->dev, 
pcidev->func);
 

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.