Blame SOURCES/kvm-vfio-Fix-vfio-kvm-group-registration.patch

9bac43
From 8c5380844c8f52663f497609cfb0a833e5f643e0 Mon Sep 17 00:00:00 2001
9bac43
From: Alex Williamson <alex.williamson@redhat.com>
9bac43
Date: Thu, 14 Dec 2017 16:30:06 +0100
9bac43
Subject: [PATCH 6/6] vfio: Fix vfio-kvm group registration
9bac43
9bac43
RH-Author: Alex Williamson <alex.williamson@redhat.com>
9bac43
Message-id: <20171214162725.10938.41443.stgit@gimli.home>
9bac43
Patchwork-id: 78402
9bac43
O-Subject: [RHEL-7.5 qemu-kvm-rhev PATCH] vfio: Fix vfio-kvm group registration
9bac43
Bugzilla: 1520294
9bac43
RH-Acked-by: Auger Eric <eric.auger@redhat.com>
9bac43
RH-Acked-by: Peter Xu <peterx@redhat.com>
9bac43
RH-Acked-by: Miroslav Rezanina <mrezanin@redhat.com>
9bac43
9bac43
Commit 8c37faa475f3 ("vfio-pci, ppc64/spapr: Reorder group-to-container
9bac43
attaching") moved registration of groups with the vfio-kvm device from
9bac43
vfio_get_group() to vfio_connect_container(), but it missed the case
9bac43
where a group is attached to an existing container and takes an early
9bac43
exit.  Perhaps this is a less common case on ppc64/spapr, but on x86
9bac43
(without viommu) all groups are connected to the same container and
9bac43
thus only the first group gets registered with the vfio-kvm device.
9bac43
This becomes a problem if we then hot-unplug the devices associated
9bac43
with that first group and we end up with KVM being misinformed about
9bac43
any vfio connections that might remain.  Fix by including the call to
9bac43
vfio_kvm_device_add_group() in this early exit path.
9bac43
9bac43
Fixes: 8c37faa475f3 ("vfio-pci, ppc64/spapr: Reorder group-to-container attaching")
9bac43
Cc: qemu-stable@nongnu.org # qemu-2.10+
9bac43
Reviewed-by: Alexey Kardashevskiy <aik@ozlabs.ru>
9bac43
Reviewed-by: Peter Xu <peterx@redhat.com>
9bac43
Tested-by: Peter Xu <peterx@redhat.com>
9bac43
Reviewed-by: Eric Auger <eric.auger@redhat.com>
9bac43
Tested-by: Eric Auger <eric.auger@redhat.com>
9bac43
Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
9bac43
(cherry picked from commit 2016986aedb6ea2839662eb5f60630f3e231bd1a)
9bac43
---
9bac43
9bac43
Testing: hot unplug Intel 82576 PF which is not the first vfio-pci device
9bac43
for the VM.  Previous, libvirt log includes:
9bac43
9bac43
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
9bac43
---
9bac43
 hw/vfio/common.c | 1 +
9bac43
 1 file changed, 1 insertion(+)
9bac43
9bac43
diff --git a/hw/vfio/common.c b/hw/vfio/common.c
9bac43
index 7b2924c..7007878 100644
9bac43
--- a/hw/vfio/common.c
9bac43
+++ b/hw/vfio/common.c
9bac43
@@ -968,6 +968,7 @@ static int vfio_connect_container(VFIOGroup *group, AddressSpace *as,
9bac43
         if (!ioctl(group->fd, VFIO_GROUP_SET_CONTAINER, &container->fd)) {
9bac43
             group->container = container;
9bac43
             QLIST_INSERT_HEAD(&container->group_list, group, container_next);
9bac43
+            vfio_kvm_device_add_group(group);
9bac43
             return 0;
9bac43
         }
9bac43
     }
9bac43
-- 
9bac43
1.8.3.1
9bac43