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

Re: [Xen-devel] [PATCH 2 of 2] libxl_pci: verify device is assignable before adding to a domain



On Tue, 2012-01-17 at 15:25 +0000, Doug Magee wrote:
> 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);

Unlike get_all_assigned_devices you need to free the returned assignable
array explicitly (since it is in a different category per the comment
near the top of libxl.h).

Ian.

> +
> +    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



_______________________________________________
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®.