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:
parent
d9f0e34cb7
commit
51c047283c
32
hw/ppc/pnv.c
32
hw/ppc/pnv.c
@ -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",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user