diff options
author | Peter Maydell <peter.maydell@linaro.org> | 2017-12-14 13:28:06 +0000 |
---|---|---|
committer | Peter Maydell <peter.maydell@linaro.org> | 2017-12-14 13:28:06 +0000 |
commit | f44cedc9166d89c73287c038311a989fb3c39e03 (patch) | |
tree | aa58ca192520c03bac95eb9b40df6cc8a3fe8907 | |
parent | cba4d6d3181f2322d1a06aa0add8bca3d0e6faf3 (diff) | |
parent | 2fb9636ebf24e695617bf407bf0a345aa223d1ac (diff) | |
download | qemu-f44cedc9166d89c73287c038311a989fb3c39e03.zip qemu-f44cedc9166d89c73287c038311a989fb3c39e03.tar.gz qemu-f44cedc9166d89c73287c038311a989fb3c39e03.tar.bz2 |
Merge remote-tracking branch 'remotes/awilliam/tags/vfio-update-20171213.0' into staging
VFIO updates for v2.12
- Fix bug failing to register all but the first group attached to
a container with kvm-vfio device (Alex Williamson)
- Explicit QLIST init (Yi Lui)
- SPAPR IOMMU v1 fallback (Alexey Kardashevskiy)
- Remove unused structure fields (Alexey Kardashevskiy)
# gpg: Signature made Wed 13 Dec 2017 18:03:48 GMT
# gpg: using RSA key 0x239B9B6E3BB08B22
# gpg: Good signature from "Alex Williamson <alex.williamson@redhat.com>"
# gpg: aka "Alex Williamson <alex@shazbot.org>"
# gpg: aka "Alex Williamson <alwillia@redhat.com>"
# gpg: aka "Alex Williamson <alex.l.williamson@gmail.com>"
# Primary key fingerprint: 42F6 C04E 540B D1A9 9E7B 8A90 239B 9B6E 3BB0 8B22
* remotes/awilliam/tags/vfio-update-20171213.0:
vfio-pci: Remove unused fields from VFIOMSIXInfo
vfio/spapr: Allow fallback to SPAPR TCE IOMMU v1
vfio/common: init giommu_list and hostwin_list of vfio container
vfio: Fix vfio-kvm group registration
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
-rw-r--r-- | hw/vfio/common.c | 8 | ||||
-rw-r--r-- | hw/vfio/pci.h | 2 |
2 files changed, 8 insertions, 2 deletions
diff --git a/hw/vfio/common.c b/hw/vfio/common.c index 7b2924c..b77be3a 100644 --- a/hw/vfio/common.c +++ b/hw/vfio/common.c @@ -968,6 +968,7 @@ static int vfio_connect_container(VFIOGroup *group, AddressSpace *as, if (!ioctl(group->fd, VFIO_GROUP_SET_CONTAINER, &container->fd)) { group->container = container; QLIST_INSERT_HEAD(&container->group_list, group, container_next); + vfio_kvm_device_add_group(group); return 0; } } @@ -990,6 +991,8 @@ static int vfio_connect_container(VFIOGroup *group, AddressSpace *as, container = g_malloc0(sizeof(*container)); container->space = space; container->fd = fd; + QLIST_INIT(&container->giommu_list); + QLIST_INIT(&container->hostwin_list); if (ioctl(fd, VFIO_CHECK_EXTENSION, VFIO_TYPE1_IOMMU) || ioctl(fd, VFIO_CHECK_EXTENSION, VFIO_TYPE1v2_IOMMU)) { bool v2 = !!ioctl(fd, VFIO_CHECK_EXTENSION, VFIO_TYPE1v2_IOMMU); @@ -1040,6 +1043,11 @@ static int vfio_connect_container(VFIOGroup *group, AddressSpace *as, v2 ? VFIO_SPAPR_TCE_v2_IOMMU : VFIO_SPAPR_TCE_IOMMU; ret = ioctl(fd, VFIO_SET_IOMMU, container->iommu_type); if (ret) { + container->iommu_type = VFIO_SPAPR_TCE_IOMMU; + v2 = false; + ret = ioctl(fd, VFIO_SET_IOMMU, container->iommu_type); + } + if (ret) { error_setg_errno(errp, errno, "failed to set iommu for container"); ret = -errno; goto free_container_exit; diff --git a/hw/vfio/pci.h b/hw/vfio/pci.h index 502a575..a8fb3b3 100644 --- a/hw/vfio/pci.h +++ b/hw/vfio/pci.h @@ -93,8 +93,6 @@ typedef struct VFIOMSIXInfo { uint16_t entries; uint32_t table_offset; uint32_t pba_offset; - MemoryRegion mmap_mem; - void *mmap; unsigned long *pending; } VFIOMSIXInfo; |