57 lines
1.9 KiB
Diff
57 lines
1.9 KiB
Diff
|
From 26879f41a890a93beabefebb19c399561013a615 Mon Sep 17 00:00:00 2001
|
||
|
From: David Gibson <dgibson@redhat.com>
|
||
|
Date: Tue, 10 Sep 2019 07:04:28 +0100
|
||
|
Subject: [PATCH 6/6] spapr/pci: Free MSIs during reset
|
||
|
MIME-Version: 1.0
|
||
|
Content-Type: text/plain; charset=UTF-8
|
||
|
Content-Transfer-Encoding: 8bit
|
||
|
|
||
|
RH-Author: David Gibson <dgibson@redhat.com>
|
||
|
Message-id: <20190910070428.28628-3-dgibson@redhat.com>
|
||
|
Patchwork-id: 90363
|
||
|
O-Subject: [RHEL-AV-8.1 qemu-kvm PATCH 2/2] spapr/pci: Free MSIs during reset
|
||
|
Bugzilla: 1750200
|
||
|
RH-Acked-by: Thomas Huth <thuth@redhat.com>
|
||
|
RH-Acked-by: Philippe Mathieu-Daudé <philmd@redhat.com>
|
||
|
RH-Acked-by: Laurent Vivier <lvivier@redhat.com>
|
||
|
|
||
|
From: Greg Kurz <groug@kaod.org>
|
||
|
|
||
|
When the machine is reset, the MSI bitmap is cleared but the allocated
|
||
|
MSIs are not freed. Some operating systems, such as AIX, can detect the
|
||
|
previous configuration and assert.
|
||
|
|
||
|
Empty the MSI cache, this performs the needed cleanup.
|
||
|
|
||
|
Signed-off-by: Greg Kurz <groug@kaod.org>
|
||
|
Message-Id: <156415228410.1064338.4486161194061636096.stgit@bahia.lan>
|
||
|
Reviewed-by: Cédric Le Goater <clg@kaod.org>
|
||
|
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
|
||
|
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
|
||
|
(cherry picked from commit ea52074d3a1c5fbe70f3014dc1b1f2e7d5ced5de)
|
||
|
|
||
|
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1750200
|
||
|
|
||
|
Signed-off-by: David Gibson <dgibson@redhat.com>
|
||
|
Signed-off-by: Danilo C. L. de Paula <ddepaula@redhat.com>
|
||
|
---
|
||
|
hw/ppc/spapr_pci.c | 2 ++
|
||
|
1 file changed, 2 insertions(+)
|
||
|
|
||
|
diff --git a/hw/ppc/spapr_pci.c b/hw/ppc/spapr_pci.c
|
||
|
index 1ffcfae..128c981 100644
|
||
|
--- a/hw/ppc/spapr_pci.c
|
||
|
+++ b/hw/ppc/spapr_pci.c
|
||
|
@@ -2078,6 +2078,8 @@ static void spapr_phb_reset(DeviceState *qdev)
|
||
|
if (spapr_phb_eeh_available(SPAPR_PCI_HOST_BRIDGE(qdev))) {
|
||
|
spapr_phb_vfio_reset(qdev);
|
||
|
}
|
||
|
+
|
||
|
+ g_hash_table_remove_all(sphb->msi);
|
||
|
}
|
||
|
|
||
|
static Property spapr_phb_properties[] = {
|
||
|
--
|
||
|
1.8.3.1
|
||
|
|