mirror of
https://github.com/izzy2lost/xemu.git
synced 2026-07-06 00:20:22 -07:00
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>
This commit is contained in:
@@ -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);
|
||||
@@ -1039,6 +1042,11 @@ static int vfio_connect_container(VFIOGroup *group, AddressSpace *as,
|
||||
container->iommu_type =
|
||||
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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user