mirror of https://github.com/xemu-project/xemu.git
ppc/pnv: remove stack pointer from PnvPHB4
This pointer was being used for two reasons: pnv_phb4_update_regions() was using it to access the PHB and phb4_realize() was using it as a way to determine if the PHB was user created. We can determine if the PHB is user created via phb->pec, introduced in the previous patch, and pnv_phb4_update_regions() is no longer using stack->phb. Remove the pointer from the PnvPHB4 device. Reviewed-by: Cédric Le Goater <clg@kaod.org> Signed-off-by: Daniel Henrique Barboza <danielhb413@gmail.com> Message-Id: <20220114180719.52117-4-danielhb413@gmail.com> Signed-off-by: Cédric Le Goater <clg@kaod.org>
This commit is contained in:
parent
6f506c90c3
commit
7e67e0a9f0
|
@ -1573,9 +1573,10 @@ static void pnv_phb4_realize(DeviceState *dev, Error **errp)
|
||||||
char name[32];
|
char name[32];
|
||||||
|
|
||||||
/* User created PHB */
|
/* User created PHB */
|
||||||
if (!phb->stack) {
|
if (!phb->pec) {
|
||||||
PnvMachineState *pnv = PNV_MACHINE(qdev_get_machine());
|
PnvMachineState *pnv = PNV_MACHINE(qdev_get_machine());
|
||||||
PnvChip *chip = pnv_get_chip(pnv, phb->chip_id);
|
PnvChip *chip = pnv_get_chip(pnv, phb->chip_id);
|
||||||
|
PnvPhb4PecStack *stack;
|
||||||
PnvPhb4PecClass *pecc;
|
PnvPhb4PecClass *pecc;
|
||||||
BusState *s;
|
BusState *s;
|
||||||
|
|
||||||
|
@ -1584,7 +1585,7 @@ static void pnv_phb4_realize(DeviceState *dev, Error **errp)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
phb->stack = pnv_phb4_get_stack(chip, phb, &local_err);
|
stack = pnv_phb4_get_stack(chip, phb, &local_err);
|
||||||
if (local_err) {
|
if (local_err) {
|
||||||
error_propagate(errp, local_err);
|
error_propagate(errp, local_err);
|
||||||
return;
|
return;
|
||||||
|
@ -1594,18 +1595,12 @@ static void pnv_phb4_realize(DeviceState *dev, Error **errp)
|
||||||
* All other phb properties but 'pec' ad 'version' are
|
* All other phb properties but 'pec' ad 'version' are
|
||||||
* already set.
|
* already set.
|
||||||
*/
|
*/
|
||||||
object_property_set_link(OBJECT(phb), "pec", OBJECT(phb->stack->pec),
|
object_property_set_link(OBJECT(phb), "pec", OBJECT(stack->pec),
|
||||||
&error_abort);
|
&error_abort);
|
||||||
pecc = PNV_PHB4_PEC_GET_CLASS(phb->pec);
|
pecc = PNV_PHB4_PEC_GET_CLASS(phb->pec);
|
||||||
object_property_set_int(OBJECT(phb), "version", pecc->version,
|
object_property_set_int(OBJECT(phb), "version", pecc->version,
|
||||||
&error_fatal);
|
&error_fatal);
|
||||||
|
|
||||||
/*
|
|
||||||
* Assign stack->phb since pnv_phb4_update_regions() uses it
|
|
||||||
* to access the phb.
|
|
||||||
*/
|
|
||||||
phb->stack->phb = phb;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Reparent user created devices to the chip to build
|
* Reparent user created devices to the chip to build
|
||||||
* correctly the device tree.
|
* correctly the device tree.
|
||||||
|
@ -1707,8 +1702,6 @@ static Property pnv_phb4_properties[] = {
|
||||||
DEFINE_PROP_UINT32("index", PnvPHB4, phb_id, 0),
|
DEFINE_PROP_UINT32("index", PnvPHB4, phb_id, 0),
|
||||||
DEFINE_PROP_UINT32("chip-id", PnvPHB4, chip_id, 0),
|
DEFINE_PROP_UINT32("chip-id", PnvPHB4, chip_id, 0),
|
||||||
DEFINE_PROP_UINT64("version", PnvPHB4, version, 0),
|
DEFINE_PROP_UINT64("version", PnvPHB4, version, 0),
|
||||||
DEFINE_PROP_LINK("stack", PnvPHB4, stack, TYPE_PNV_PHB4_PEC_STACK,
|
|
||||||
PnvPhb4PecStack *),
|
|
||||||
DEFINE_PROP_LINK("pec", PnvPHB4, pec, TYPE_PNV_PHB4_PEC,
|
DEFINE_PROP_LINK("pec", PnvPHB4, pec, TYPE_PNV_PHB4_PEC,
|
||||||
PnvPhb4PecState *),
|
PnvPhb4PecState *),
|
||||||
DEFINE_PROP_END_OF_LIST(),
|
DEFINE_PROP_END_OF_LIST(),
|
||||||
|
|
|
@ -293,8 +293,6 @@ static void pnv_pec_stk_default_phb_realize(PnvPhb4PecStack *stack,
|
||||||
&error_fatal);
|
&error_fatal);
|
||||||
object_property_set_int(OBJECT(stack->phb), "version", pecc->version,
|
object_property_set_int(OBJECT(stack->phb), "version", pecc->version,
|
||||||
&error_fatal);
|
&error_fatal);
|
||||||
object_property_set_link(OBJECT(stack->phb), "stack", OBJECT(stack),
|
|
||||||
&error_abort);
|
|
||||||
|
|
||||||
if (!sysbus_realize(SYS_BUS_DEVICE(stack->phb), errp)) {
|
if (!sysbus_realize(SYS_BUS_DEVICE(stack->phb), errp)) {
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -151,8 +151,6 @@ struct PnvPHB4 {
|
||||||
XiveSource xsrc;
|
XiveSource xsrc;
|
||||||
qemu_irq *qirqs;
|
qemu_irq *qirqs;
|
||||||
|
|
||||||
PnvPhb4PecStack *stack;
|
|
||||||
|
|
||||||
QLIST_HEAD(, PnvPhb4DMASpace) dma_spaces;
|
QLIST_HEAD(, PnvPhb4DMASpace) dma_spaces;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue