qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH v8 3/4] VFIO: Introduce helper vfio_pci_containe


From: Alex Williamson
Subject: Re: [Qemu-devel] [PATCH v8 3/4] VFIO: Introduce helper vfio_pci_container_ioctl()
Date: Thu, 05 Jun 2014 12:27:23 -0600

On Thu, 2014-06-05 at 16:53 +1000, Gavin Shan wrote:
> The patch introduces helper function vfio_pci_container_ioctl() to
> pass ioctl commands to the specified VFIO container that is identified
> by IOMMU group id. On sPAPR platform, each container only has one
> IOMMU group.
> 
> Signed-off-by: Gavin Shan <address@hidden>
> ---
>  hw/misc/vfio.c         | 31 +++++++++++++++++++++++++++++++
>  include/hw/misc/vfio.h |  2 ++
>  2 files changed, 33 insertions(+)
> 
> diff --git a/hw/misc/vfio.c b/hw/misc/vfio.c
> index 0796abf..999d97d 100644
> --- a/hw/misc/vfio.c
> +++ b/hw/misc/vfio.c
> @@ -4310,3 +4310,34 @@ put_group_exit:
>  
>      return n;
>  }
> +
> +int vfio_pci_container_ioctl(int iommu_group_id, int req, int opt)
> +{
> +    VFIOGroup *group;
> +    int ret, fd = 0;
> +
> +    /* Search container's fd */
> +    QLIST_FOREACH(group, &group_list, next) {
> +        if (group->groupid == iommu_group_id) {
> +            fd = group->container ? group->container->fd : 0;
> +            break;
> +        }
> +    }
> +
> +    if (fd <= 0) {
> +        return -ENOENT;
> +    }
> +
> +    switch (req) {
> +    case VFIO_EEH_PE_OP: {
> +     struct vfio_eeh_pe_op op = { .argsz = sizeof(op), .op = opt };
> +
> +        ret = ioctl(fd, req, &op);
> +        break;

In addition to fd 0 being valid, there's some white space issues here.

Passing an integer option is not very extensible, maybe a void* that
gets cast to an int* for VFIO_EEH_PE_OP would be better.  It's a qemu
internal API though, so I'm not going to sweat saving that problem for
the next user.  Thanks,

Alex

> +    }
> +    default:
> +        ret = -EINVAL;
> +    }
> +
> +    return ret;
> +}
> diff --git a/include/hw/misc/vfio.h b/include/hw/misc/vfio.h
> index 53ec665..dc92fae 100644
> --- a/include/hw/misc/vfio.h
> +++ b/include/hw/misc/vfio.h
> @@ -30,4 +30,6 @@ static inline long vfio_kvm_notify(Notifier *n, unsigned 
> request, void *data)
>      return p.ret;
>  }
>  
> +extern int vfio_pci_container_ioctl(int iommu_group_id, int req, int opt);
> +
>  #endif






reply via email to

[Prev in Thread] Current Thread [Next in Thread]