From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52431) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZzGqC-0008NN-3F for qemu-devel@nongnu.org; Wed, 18 Nov 2015 23:29:01 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZzGqA-00078V-Ji for qemu-devel@nongnu.org; Wed, 18 Nov 2015 23:28:59 -0500 From: David Gibson Date: Thu, 19 Nov 2015 15:29:24 +1100 Message-Id: <1447907368-9208-9-git-send-email-david@gibson.dropbear.id.au> In-Reply-To: <1447907368-9208-1-git-send-email-david@gibson.dropbear.id.au> References: <1447907368-9208-1-git-send-email-david@gibson.dropbear.id.au> Subject: [Qemu-devel] [RFC 08/12] spapr_pci: Fold spapr_phb_vfio_reset() into spapr_pci code List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: gwshan@au1.ibm.com, alex.williamson@redhat.com Cc: aik@ozlabs.ru, mdroth@linux.vnet.ibm.com, qemu-devel@nongnu.org, qemu-ppc@nongnu.org, David Gibson Simplify the sPAPR PCI code by folding spapr_phb_vfio_reset() into spapr_phb_reset(). Signed-off-by: David Gibson --- hw/ppc/spapr_pci.c | 13 ++++++++++++- hw/ppc/spapr_pci_vfio.c | 16 ---------------- 2 files changed, 12 insertions(+), 17 deletions(-) diff --git a/hw/ppc/spapr_pci.c b/hw/ppc/spapr_pci.c index d4cae05..915f51d 100644 --- a/hw/ppc/spapr_pci.c +++ b/hw/ppc/spapr_pci.c @@ -1523,13 +1523,24 @@ static int spapr_phb_children_reset(Object *child, void *opaque) return 0; } +static void spapr_phb_eeh_reenable(sPAPRPHBState *sphb) +{ + vfio_eeh_as_op(&sphb->iommu_as, VFIO_EEH_PE_ENABLE); +} + static void spapr_phb_reset(DeviceState *qdev) { /* Reset the IOMMU state */ object_child_foreach(OBJECT(qdev), spapr_phb_children_reset, NULL); if (spapr_phb_eeh_available(SPAPR_PCI_HOST_BRIDGE(qdev))) { - spapr_phb_vfio_reset(qdev); + /* + * The PE might be in frozen state. To reenable the EEH + * functionality on it will clean the frozen state, which + * ensures that the contained PCI devices will work properly + * after reboot. + */ + spapr_phb_eeh_reenable(SPAPR_PCI_HOST_BRIDGE(qdev)); } } diff --git a/hw/ppc/spapr_pci_vfio.c b/hw/ppc/spapr_pci_vfio.c index 9aacf4b..aca9c46 100644 --- a/hw/ppc/spapr_pci_vfio.c +++ b/hw/ppc/spapr_pci_vfio.c @@ -72,22 +72,6 @@ static void spapr_phb_vfio_finish_realize(sPAPRPHBState *sphb, Error **errp) spapr_tce_get_iommu(tcet)); } -static void spapr_phb_vfio_eeh_reenable(sPAPRPHBState *sphb) -{ - vfio_eeh_as_op(&sphb->iommu_as, VFIO_EEH_PE_ENABLE); -} - -void spapr_phb_vfio_reset(DeviceState *qdev) -{ - /* - * The PE might be in frozen state. To reenable the EEH - * functionality on it will clean the frozen state, which - * ensures that the contained PCI devices will work properly - * after reboot. - */ - spapr_phb_vfio_eeh_reenable(SPAPR_PCI_HOST_BRIDGE(qdev)); -} - static void spapr_phb_vfio_class_init(ObjectClass *klass, void *data) { DeviceClass *dc = DEVICE_CLASS(klass); -- 2.5.0