On 5/18/20 7:04 AM, Markus Armbruster wrote: > pnv_init() creates "power10_v1.0-pnv-chip", "power8_v2.0-pnv-chip", > "power8e_v2.1-pnv-chip", "power8nvl_v1.0-pnv-chip", or > "power9_v2.0-pnv-chip" sysbus devices in a way that leaves them > unplugged. > > pnv_chip_power9_instance_init() creates a "pnv-xive" sysbus device in > a way that leaves it unplugged. > > Create them the common way that puts them into the main system bus. > Affects machines powernv8, powernv9, and powernv10. Visible in "info > qtree". Here's the change for powernv9: > > bus: main-system-bus > type System > + dev: power9_v2.0-pnv-chip, id "" > + chip-id = 0 (0x0) > + ram-start = 0 (0x0) > + ram-size = 1879048192 (0x70000000) > + nr-cores = 1 (0x1) > + cores-mask = 72057594037927935 (0xffffffffffffff) > + nr-threads = 1 (0x1) > + num-phbs = 6 (0x6) > + mmio 000603fc00000000/0000000400000000 > [...] > + dev: pnv-xive, id "" > + ic-bar = 1692157036462080 (0x6030203100000) > + vc-bar = 1689949371891712 (0x6010000000000) > + pc-bar = 1690499127705600 (0x6018000000000) > + tm-bar = 1692157036986368 (0x6030203180000) > > Cc: "Cédric Le Goater" <c...@kaod.org> > Cc: David Gibson <da...@gibson.dropbear.id.au> > Cc: qemu-...@nongnu.org > Signed-off-by: Markus Armbruster <arm...@redhat.com>
Reviewed-by: Cédric Le Goater <c...@kaod.org> Thanks, C. > --- > 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 da637822f9..8d4fc8109a 100644 > --- a/hw/ppc/pnv.c > +++ b/hw/ppc/pnv.c > @@ -818,7 +818,7 @@ static void pnv_init(MachineState *machine) > pnv->chips = g_new0(PnvChip *, pnv->num_chips); > for (i = 0; i < pnv->num_chips; i++) { > char chip_name[32]; > - Object *chip = object_new(chip_typename); > + Object *chip = OBJECT(qdev_create(NULL, chip_typename)); > > pnv->chips[i] = PNV_CHIP(chip); > > @@ -1317,8 +1317,8 @@ static void pnv_chip_power9_instance_init(Object *obj) > PnvChipClass *pcc = PNV_CHIP_GET_CLASS(obj); > int i; > > - object_initialize_child(obj, "xive", &chip9->xive, sizeof(chip9->xive), > - TYPE_PNV_XIVE, &error_abort, NULL); > + sysbus_init_child_obj(obj, "xive", &chip9->xive, sizeof(chip9->xive), > + TYPE_PNV_XIVE); > object_property_add_alias(obj, "xive-fabric", OBJECT(&chip9->xive), > "xive-fabric"); > >