[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-ppc] [Qemu-devel] [PATCH qemu v10 11/14] spapr_pci_vfio: Enabl
From: |
Thomas Huth |
Subject: |
Re: [Qemu-ppc] [Qemu-devel] [PATCH qemu v10 11/14] spapr_pci_vfio: Enable multiple groups per container |
Date: |
Tue, 7 Jul 2015 09:02:35 +0200 |
On Mon, 6 Jul 2015 12:11:07 +1000
Alexey Kardashevskiy <address@hidden> wrote:
> This enables multiple IOMMU groups in one VFIO container which means
> that multiple devices from different groups can share the same IOMMU
> table (or tables if DDW).
>
> This removes a group id from vfio_container_ioctl(). The kernel support
> is required for this; if the host kernel does not have the support,
> it will allow only one group per container. The PHB's "iommuid" property
> is ignored. The ioctl is called for every container attached to
> the address space. At the moment there is just one container anyway.
>
> If there is no container attached to the address space,
> vfio_container_do_ioctl() returns -1.
>
> This removes casts to sPAPRPHBVFIOState as none of sPAPRPHBVFIOState
> members is accessed here.
>
> Signed-off-by: Alexey Kardashevskiy <address@hidden>
> Reviewed-by: David Gibson <address@hidden>
> ---
> hw/ppc/spapr_pci_vfio.c | 17 ++++++-----------
> hw/vfio/common.c | 20 ++++++--------------
> include/hw/vfio/vfio.h | 2 +-
> 3 files changed, 13 insertions(+), 26 deletions(-)
...
> diff --git a/hw/vfio/common.c b/hw/vfio/common.c
> index b1045da..89ef37b 100644
> --- a/hw/vfio/common.c
> +++ b/hw/vfio/common.c
> @@ -918,34 +918,26 @@ void vfio_put_base_device(VFIODevice *vbasedev)
> close(vbasedev->fd);
> }
>
> -static int vfio_container_do_ioctl(AddressSpace *as, int32_t groupid,
> +static int vfio_container_do_ioctl(AddressSpace *as,
> int req, void *param)
> {
> - VFIOGroup *group;
> VFIOContainer *container;
> int ret = -1;
> + VFIOAddressSpace *space = vfio_get_address_space(as);
>
> - group = vfio_get_group(groupid, as);
> - if (!group) {
> - error_report("vfio: group %d not registered", groupid);
> - return ret;
> - }
> -
> - container = group->container;
> - if (group->container) {
> + QLIST_FOREACH(container, &space->containers, next) {
> ret = ioctl(container->fd, req, param);
> if (ret < 0) {
> error_report("vfio: failed to ioctl %d to container: ret=%d, %s",
> _IOC_NR(req) - VFIO_BASE, ret, strerror(errno));
> + return -errno;
> }
> }
>
> - vfio_put_group(group);
> -
> return ret;
> }
>
> -int vfio_container_ioctl(AddressSpace *as, int32_t groupid,
> +int vfio_container_ioctl(AddressSpace *as,
> int req, void *param)
You could easily fit that into one line now.
> {
> /* We allow only certain ioctls to the container */
> @@ -960,5 +952,5 @@ int vfio_container_ioctl(AddressSpace *as, int32_t
> groupid,
> return -1;
> }
>
> - return vfio_container_do_ioctl(as, groupid, req, param);
> + return vfio_container_do_ioctl(as, req, param);
> }
> diff --git a/include/hw/vfio/vfio.h b/include/hw/vfio/vfio.h
> index 0b26cd8..76b5744 100644
> --- a/include/hw/vfio/vfio.h
> +++ b/include/hw/vfio/vfio.h
> @@ -3,7 +3,7 @@
>
> #include "qemu/typedefs.h"
>
> -extern int vfio_container_ioctl(AddressSpace *as, int32_t groupid,
> +extern int vfio_container_ioctl(AddressSpace *as,
> int req, void *param);
Dito.
Apart from the two cosmetic nits, patch looks fine to me:
Reviewed-by: Thomas Huth <address@hidden>
- [Qemu-ppc] [PATCH qemu v10 03/14] spapr_pci: Convert finish_realize() to dma_capabilities_update()+dma_init_window(), (continued)
- [Qemu-ppc] [PATCH qemu v10 03/14] spapr_pci: Convert finish_realize() to dma_capabilities_update()+dma_init_window(), Alexey Kardashevskiy, 2015/07/05
- [Qemu-ppc] [PATCH qemu v10 02/14] vmstate: Define VARRAY with VMS_ALLOC, Alexey Kardashevskiy, 2015/07/05
- [Qemu-ppc] [PATCH qemu v10 01/14] linux-headers: Update to 4.2-rc1, Alexey Kardashevskiy, 2015/07/05
- [Qemu-ppc] [PATCH qemu v10 07/14] spapr_iommu: Add root memory region, Alexey Kardashevskiy, 2015/07/05
- [Qemu-ppc] [PATCH qemu v10 11/14] spapr_pci_vfio: Enable multiple groups per container, Alexey Kardashevskiy, 2015/07/05
- Re: [Qemu-ppc] [Qemu-devel] [PATCH qemu v10 11/14] spapr_pci_vfio: Enable multiple groups per container,
Thomas Huth <=
- [Qemu-ppc] [PATCH qemu v10 08/14] spapr_pci: Do complete reset of DMA config when resetting PHB, Alexey Kardashevskiy, 2015/07/05
- [Qemu-ppc] [PATCH qemu v10 06/14] spapr_iommu: Remove vfio_accel flag from sPAPRTCETable, Alexey Kardashevskiy, 2015/07/05
- [Qemu-ppc] [PATCH qemu v10 12/14] vfio: Unregister IOMMU notifiers when container is destroyed, Alexey Kardashevskiy, 2015/07/05
[Qemu-ppc] [PATCH qemu v10 13/14] vfio: spapr: Add SPAPR IOMMU v2 support (DMA memory preregistering), Alexey Kardashevskiy, 2015/07/05