ppc/pnv: Introduce a "xics" property alias under the PSI model
This removes the need of the intermediate link under PSI to pass the XICS link to the underlying ICSState object. Signed-off-by: Cédric Le Goater <clg@kaod.org> Reviewed-by: Greg Kurz <groug@kaod.org> Message-Id: <20200106145645.4539-2-clg@kaod.org> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
This commit is contained in:
parent
baa45b1710
commit
34bdca8fae
@ -1004,8 +1004,6 @@ static void pnv_chip_power8_instance_init(Object *obj)
|
||||
|
||||
object_initialize_child(obj, "psi", &chip8->psi, sizeof(chip8->psi),
|
||||
TYPE_PNV8_PSI, &error_abort, NULL);
|
||||
object_property_add_const_link(OBJECT(&chip8->psi), "xics",
|
||||
OBJECT(qdev_get_machine()), &error_abort);
|
||||
|
||||
object_initialize_child(obj, "lpc", &chip8->lpc, sizeof(chip8->lpc),
|
||||
TYPE_PNV8_LPC, &error_abort, NULL);
|
||||
@ -1072,6 +1070,8 @@ static void pnv_chip_power8_realize(DeviceState *dev, Error **errp)
|
||||
/* Processor Service Interface (PSI) Host Bridge */
|
||||
object_property_set_int(OBJECT(&chip8->psi), PNV_PSIHB_BASE(chip),
|
||||
"bar", &error_fatal);
|
||||
object_property_set_link(OBJECT(&chip8->psi), OBJECT(qdev_get_machine()),
|
||||
ICS_PROP_XICS, &error_abort);
|
||||
object_property_set_bool(OBJECT(&chip8->psi), true, "realized", &local_err);
|
||||
if (local_err) {
|
||||
error_propagate(errp, local_err);
|
||||
|
@ -470,6 +470,8 @@ static void pnv_psi_power8_instance_init(Object *obj)
|
||||
|
||||
object_initialize_child(obj, "ics-psi", &psi8->ics, sizeof(psi8->ics),
|
||||
TYPE_ICS, &error_abort, NULL);
|
||||
object_property_add_alias(obj, ICS_PROP_XICS, OBJECT(&psi8->ics),
|
||||
ICS_PROP_XICS, &error_abort);
|
||||
}
|
||||
|
||||
static const uint8_t irq_to_xivr[] = {
|
||||
@ -485,19 +487,10 @@ static void pnv_psi_power8_realize(DeviceState *dev, Error **errp)
|
||||
{
|
||||
PnvPsi *psi = PNV_PSI(dev);
|
||||
ICSState *ics = &PNV8_PSI(psi)->ics;
|
||||
Object *obj;
|
||||
Error *err = NULL;
|
||||
unsigned int i;
|
||||
|
||||
obj = object_property_get_link(OBJECT(dev), "xics", &err);
|
||||
if (!obj) {
|
||||
error_setg(errp, "%s: required link 'xics' not found: %s",
|
||||
__func__, error_get_pretty(err));
|
||||
return;
|
||||
}
|
||||
|
||||
/* Create PSI interrupt control source */
|
||||
object_property_set_link(OBJECT(ics), obj, ICS_PROP_XICS, &error_abort);
|
||||
object_property_set_int(OBJECT(ics), PSI_NUM_INTERRUPTS, "nr-irqs", &err);
|
||||
if (err) {
|
||||
error_propagate(errp, err);
|
||||
|
Loading…
Reference in New Issue
Block a user