[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
- [Qemu-devel] [PATCH v8 0/4] EEH Support for VFIO PCI Device, Gavin Shan, 2014/06/05
- [Qemu-devel] [PATCH v8 3/4] VFIO: Introduce helper vfio_pci_container_ioctl(), Gavin Shan, 2014/06/05
- [Qemu-devel] [PATCH v8 4/4] sPAPR: Implement sPAPRPHBClass::eeh_handler, Gavin Shan, 2014/06/05
- [Qemu-devel] [PATCH v8 1/4] sPAPR: Implement EEH RTAS calls, Gavin Shan, 2014/06/05
- [Qemu-devel] [PATCH v8 2/4] headers: Update kernel header, Gavin Shan, 2014/06/05
- Re: [Qemu-devel] [PATCH v8 0/4] EEH Support for VFIO PCI Device, Alexander Graf, 2014/06/05