[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [RFC PATCH 08/15] spapr: create DR connectors for PHBs and
From: |
Michael Roth |
Subject: |
[Qemu-devel] [RFC PATCH 08/15] spapr: create DR connectors for PHBs and register reset hooks |
Date: |
Wed, 29 Apr 2015 14:20:17 -0500 |
Since we route hotplugged PHBs to their DR connector using their
PHB.index value, we align the number of DR connectors with the
maximum index value: SPAPR_PCI_MAX_INDEX.
Signed-off-by: Michael Roth <address@hidden>
---
hw/ppc/spapr.c | 28 ++++++++++++++++++++++++++++
1 file changed, 28 insertions(+)
diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index c8ad5b0..c539932 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -90,6 +90,9 @@
#define HTAB_SIZE(spapr) (1ULL << ((spapr)->htab_shift))
+/* maximum number of hotpluggable PHBs */
+#define SPAPR_DRC_MAX_PHB (SPAPR_PCI_MAX_INDEX + 1)
+
typedef struct sPAPRMachineClass sPAPRMachineClass;
typedef struct sPAPRMachineState sPAPRMachineState;
@@ -1387,6 +1390,16 @@ static SaveVMHandlers savevm_htab_handlers = {
.load_state = htab_load,
};
+static void spapr_drc_reset(void *opaque)
+{
+ sPAPRDRConnector *drc = opaque;
+ DeviceState *d = DEVICE(drc);
+
+ if (d) {
+ device_reset(d);
+ }
+}
+
/* pSeries LPAR / sPAPR hardware init */
static void ppc_spapr_init(MachineState *machine)
{
@@ -1561,6 +1574,21 @@ static void ppc_spapr_init(MachineState *machine)
spapr->dr_phb_enabled = smc->dr_phb_enabled;
+ /* Setup hotplug / dynamic-reconfiguration connectors. top-level
+ * connectors (described in root DT node's "ibm,drc-types" property)
+ * are pre-initialized here. additional child connectors (such as
+ * connectors for a PHBs PCI slots) are added as needed during their
+ * parent's realization.
+ */
+ if (spapr->dr_phb_enabled) {
+ for (i = 0; i < SPAPR_DRC_MAX_PHB; i++) {
+ sPAPRDRConnector *drc =
+ spapr_dr_connector_new(OBJECT(machine),
+ SPAPR_DR_CONNECTOR_TYPE_PHB, i);
+ qemu_register_reset(spapr_drc_reset, drc);
+ }
+ }
+
/* Set up PCI */
spapr_pci_rtas_init();
--
1.9.1
- [Qemu-devel] [RFC PATCH 04/15] spapr_iommu: pass object ownership to parent/owner, (continued)
- [Qemu-devel] [RFC PATCH 04/15] spapr_iommu: pass object ownership to parent/owner, Michael Roth, 2015/04/29
- [Qemu-devel] [RFC PATCH 15/15] spapr: add hotplug hooks for PHB hotplug, Michael Roth, 2015/04/29
- [Qemu-devel] [RFC PATCH 03/15] spapr_drc: pass object ownership to parent/owner, Michael Roth, 2015/04/29
- [Qemu-devel] [RFC PATCH 05/15] spapr_pci: add PHB unrealize, Michael Roth, 2015/04/29
- [Qemu-devel] [RFC PATCH 07/15] spapr: enable PHB hotplug for pseries-2.4, Michael Roth, 2015/04/29
- [Qemu-devel] [RFC PATCH 06/15] spapr_pci: also use 'index' property as DRC index for PHBs, Michael Roth, 2015/04/29
- [Qemu-devel] [RFC PATCH 08/15] spapr: create DR connectors for PHBs and register reset hooks,
Michael Roth <=
- Re: [Qemu-devel] [RFC PATCH 00/15] spapr: add support for PHB hotplug, Paolo Bonzini, 2015/04/30