|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH 2 of 2] libxl_pci: verify device is assignable before adding to a domain
Previously, libxl__device_pci_add only checks that the device is not assigned
to another domain. This patch updates this function to check against the list
of assignable devices, which only includes devices owned by pciback and already
excludes devices assigned to other domains.
Signed-off-by: Doug Magee <djmagee@xxxxxxxxxxxx>
diff -r 3becc1652693 -r be1313a6b489 tools/libxl/libxl_pci.c
--- a/tools/libxl/libxl_pci.c Tue Jan 17 10:14:15 2012 -0500
+++ b/tools/libxl/libxl_pci.c Tue Jan 17 10:19:24 2012 -0500
@@ -793,18 +793,15 @@ int libxl__device_pci_add(libxl__gc *gc,
{
libxl_ctx *ctx = libxl__gc_owner(gc);
unsigned int orig_vdev, pfunc_mask;
- libxl_device_pci *assigned;
- int num_assigned, i, rc;
+ libxl_device_pci *assignable;
+ int num_assignable, i, rc;
int stubdomid = 0;
- rc = get_all_assigned_devices(gc, &assigned, &num_assigned);
- if ( rc ) {
- LIBXL__LOG(ctx, LIBXL__LOG_ERROR, "cannot determine if device is
assigned, refusing to continue");
- goto out;
- }
- if ( is_pcidev_in_array(assigned, num_assigned, pcidev->domain,
+ assignable = libxl_device_pci_list_assignable(ctx, &num_assignable);
+
+ if ( !is_pcidev_in_array(assignable, num_assignable, pcidev->domain,
pcidev->bus, pcidev->dev, pcidev->func) ) {
- LIBXL__LOG(ctx, LIBXL__LOG_ERROR, "PCI device already attached to a
domain");
+ LIBXL__LOG(ctx, LIBXL__LOG_ERROR, "PCI device is either assigned to
another domain, or not owned by pciback");
rc = ERROR_FAIL;
goto out;
}
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |