Two small fixes to fix user-created devices for POWER10:
- always create the PECs (PCI Express Controller) for the system. The
PECs host the PHBs and we try to find the matching PEC when creating a
PHB, so it must exist. It also matches what we do on POWER9
- the machine class must allow dynamically allocated system bus
Fixes: 623575e16cd5 ("ppc/pnv: Add model for POWER10 PHB5 PCIe Host bridge")
Signed-off-by: Frederic Barrat <fbarrat@linux.ibm.com>
---
hw/ppc/pnv.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c
index 0ac86e104f..df58403a3a 100644
--- a/hw/ppc/pnv.c
+++ b/hw/ppc/pnv.c
@@ -1600,9 +1600,7 @@ static void pnv_chip_power10_instance_init(Object *obj)
object_initialize_child(obj, "occ", &chip10->occ, TYPE_PNV10_OCC);
object_initialize_child(obj, "homer", &chip10->homer, TYPE_PNV10_HOMER);
- if (defaults_enabled()) {
- chip->num_pecs = pcc->num_pecs;
- }
+ chip->num_pecs = pcc->num_pecs;
for (i = 0; i < chip->num_pecs; i++) {
object_initialize_child(obj, "pec[*]", &chip10->pecs[i],
@@ -2171,6 +2169,8 @@ static void pnv_machine_power10_class_init(ObjectClass *oc, void *data)
pmc->dt_power_mgt = pnv_dt_power_mgt;
xfc->match_nvt = pnv10_xive_match_nvt;
+
+ machine_class_allow_dynamic_sysbus_dev(mc, TYPE_PNV_PHB5);
}
static bool pnv_machine_get_hb(Object *obj, Error **errp)
--
2.35.1
On 3/10/22 16:51, Frederic Barrat wrote:
> Two small fixes to fix user-created devices for POWER10:
> - always create the PECs (PCI Express Controller) for the system. The
> PECs host the PHBs and we try to find the matching PEC when creating a
> PHB, so it must exist. It also matches what we do on POWER9
> - the machine class must allow dynamically allocated system bus
>
> Fixes: 623575e16cd5 ("ppc/pnv: Add model for POWER10 PHB5 PCIe Host bridge")
> Signed-off-by: Frederic Barrat <fbarrat@linux.ibm.com>
> ---
> hw/ppc/pnv.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
Reviewed-by: Cédric Le Goater <clg@kaod.org>
Queued for 7.0.
Thanks,
C.
>
> diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c
> index 0ac86e104f..df58403a3a 100644
> --- a/hw/ppc/pnv.c
> +++ b/hw/ppc/pnv.c
> @@ -1600,9 +1600,7 @@ static void pnv_chip_power10_instance_init(Object *obj)
> object_initialize_child(obj, "occ", &chip10->occ, TYPE_PNV10_OCC);
> object_initialize_child(obj, "homer", &chip10->homer, TYPE_PNV10_HOMER);
>
> - if (defaults_enabled()) {
> - chip->num_pecs = pcc->num_pecs;
> - }
> + chip->num_pecs = pcc->num_pecs;
>
> for (i = 0; i < chip->num_pecs; i++) {
> object_initialize_child(obj, "pec[*]", &chip10->pecs[i],
> @@ -2171,6 +2169,8 @@ static void pnv_machine_power10_class_init(ObjectClass *oc, void *data)
> pmc->dt_power_mgt = pnv_dt_power_mgt;
>
> xfc->match_nvt = pnv10_xive_match_nvt;
> +
> + machine_class_allow_dynamic_sysbus_dev(mc, TYPE_PNV_PHB5);
> }
>
> static bool pnv_machine_get_hb(Object *obj, Error **errp)
© 2016 - 2026 Red Hat, Inc.