ppc/pnv: introduce a pnv_chip_core_realize() routine

This extracts from the PvChip realize routine the part creating the
cores. On Power9, we will need to create the cores after the Xive
interrupt controller is created.

Signed-off-by: Cédric Le Goater <clg@kaod.org>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
This commit is contained in:
Cédric Le Goater 2018-06-14 16:00:41 +02:00 committed by David Gibson
parent d9f0e34cb7
commit 51c047283c

View File

@ -849,9 +849,8 @@ static void pnv_chip_icp_realize(PnvChip *chip, Error **errp)
} }
} }
static void pnv_chip_realize(DeviceState *dev, Error **errp) static void pnv_chip_core_realize(PnvChip *chip, Error **errp)
{ {
PnvChip *chip = PNV_CHIP(dev);
Error *error = NULL; Error *error = NULL;
PnvChipClass *pcc = PNV_CHIP_GET_CLASS(chip); PnvChipClass *pcc = PNV_CHIP_GET_CLASS(chip);
const char *typename = pnv_chip_core_typename(chip); const char *typename = pnv_chip_core_typename(chip);
@ -863,14 +862,6 @@ static void pnv_chip_realize(DeviceState *dev, Error **errp)
return; return;
} }
/* XSCOM bridge */
pnv_xscom_realize(chip, &error);
if (error) {
error_propagate(errp, error);
return;
}
sysbus_mmio_map(SYS_BUS_DEVICE(chip), 0, PNV_XSCOM_BASE(chip));
/* Cores */ /* Cores */
pnv_chip_core_sanitize(chip, &error); pnv_chip_core_sanitize(chip, &error);
if (error) { if (error) {
@ -918,6 +909,27 @@ static void pnv_chip_realize(DeviceState *dev, Error **errp)
&PNV_CORE(pnv_core)->xscom_regs); &PNV_CORE(pnv_core)->xscom_regs);
i++; i++;
} }
}
static void pnv_chip_realize(DeviceState *dev, Error **errp)
{
PnvChip *chip = PNV_CHIP(dev);
Error *error = NULL;
/* XSCOM bridge */
pnv_xscom_realize(chip, &error);
if (error) {
error_propagate(errp, error);
return;
}
sysbus_mmio_map(SYS_BUS_DEVICE(chip), 0, PNV_XSCOM_BASE(chip));
/* Cores */
pnv_chip_core_realize(chip, &error);
if (error) {
error_propagate(errp, error);
return;
}
/* Create LPC controller */ /* Create LPC controller */
object_property_set_bool(OBJECT(&chip->lpc), true, "realized", object_property_set_bool(OBJECT(&chip->lpc), true, "realized",