qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH v3 32/35] ppc/pnv: introduce a pnv_icp_create() help


From: Cédric Le Goater
Subject: [Qemu-devel] [PATCH v3 32/35] ppc/pnv: introduce a pnv_icp_create() helper
Date: Thu, 19 Apr 2018 14:43:28 +0200

The type of the interrupt presenter depends on the processor family,
POWER8 uses XICS and POWER9 uses XIVE. Provide a machine-level helper
to isolate the process and hide the details to the pnv core realize
function.

Signed-off-by: Cédric Le Goater <address@hidden>
---
 hw/ppc/pnv.c         | 14 ++++++++++++++
 hw/ppc/pnv_core.c    |  2 +-
 include/hw/ppc/pnv.h |  2 ++
 3 files changed, 17 insertions(+), 1 deletion(-)

diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c
index 98ee3c607ae7..91452b7eeb01 100644
--- a/hw/ppc/pnv.c
+++ b/hw/ppc/pnv.c
@@ -1015,6 +1015,20 @@ static ICPState *pnv_icp_get(XICSFabric *xi, int pir)
     return cpu ? ICP(cpu->intc) : NULL;
 }
 
+Object *pnv_icp_create(PnvMachineState *pnv, Object *cpu, Error **errp)
+{
+    Error *local_err = NULL;
+    Object *obj;
+
+    obj = icp_create(cpu, TYPE_PNV_ICP, XICS_FABRIC(pnv), &local_err);
+    if (local_err) {
+        error_propagate(errp, local_err);
+        return NULL;
+    }
+
+    return obj;
+}
+
 static void pnv_pic_print_info(InterruptStatsProvider *obj,
                                Monitor *mon)
 {
diff --git a/hw/ppc/pnv_core.c b/hw/ppc/pnv_core.c
index cbb64ad9e7e0..1961dd2a2641 100644
--- a/hw/ppc/pnv_core.c
+++ b/hw/ppc/pnv_core.c
@@ -133,7 +133,7 @@ static void pnv_core_realize_child(Object *child, 
XICSFabric *xi, Error **errp)
         return;
     }
 
-    cpu->intc = icp_create(child, TYPE_PNV_ICP, xi, &local_err);
+    cpu->intc = pnv_icp_create(PNV_MACHINE(xi), child, &local_err);
     if (local_err) {
         error_propagate(errp, local_err);
         return;
diff --git a/include/hw/ppc/pnv.h b/include/hw/ppc/pnv.h
index 90759240a7b1..877c3b79b239 100644
--- a/include/hw/ppc/pnv.h
+++ b/include/hw/ppc/pnv.h
@@ -191,4 +191,6 @@ void pnv_bmc_powerdown(IPMIBmc *bmc);
     (0x0003ffe000000000ull + (uint64_t)PNV_CHIP_INDEX(chip) * \
      PNV_PSIHB_FSP_SIZE)
 
+Object *pnv_icp_create(PnvMachineState *spapr, Object *cpu, Error **errp);
+
 #endif /* _PPC_PNV_H */
-- 
2.13.6




reply via email to

[Prev in Thread] Current Thread [Next in Thread]