Commit 20147f2f authored by Cédric Le Goater's avatar Cédric Le Goater Committed by David Gibson
Browse files

ppc/xics: register the reset handler of ICP objects



The reset of the ICP objects is currently handled by XICS but this can
be done for each individual ICP.

Signed-off-by: default avatarCédric Le Goater <clg@kaod.org>
Signed-off-by: default avatarDavid Gibson <david@gibson.dropbear.id.au>
parent b0ec3129
Loading
Loading
Loading
Loading
+0 −18
Original line number Diff line number Diff line
@@ -137,29 +137,11 @@ static void ics_simple_pic_print_info(InterruptStatsProvider *obj,
/*
 * XICS Common class - parent for emulated XICS and KVM-XICS
 */
static void xics_common_reset(DeviceState *d)
{
    XICSState *xics = XICS_COMMON(d);
    int i;

    for (i = 0; i < xics->nr_servers; i++) {
        device_reset(DEVICE(&xics->ss[i]));
    }
}

static void xics_common_class_init(ObjectClass *oc, void *data)
{
    DeviceClass *dc = DEVICE_CLASS(oc);

    dc->reset = xics_common_reset;
}

static const TypeInfo xics_common_info = {
    .name          = TYPE_XICS_COMMON,
    .parent        = TYPE_DEVICE,
    .instance_size = sizeof(XICSState),
    .class_size    = sizeof(XICSStateClass),
    .class_init    = xics_common_class_init,
};

/*
+1 −0
Original line number Diff line number Diff line
@@ -131,6 +131,7 @@ static XICSState *try_create_xics(sPAPRMachineState *spapr,
        ICPState *icp = &xics->ss[i];

        object_initialize(icp, sizeof(*icp), type_icp);
        qdev_set_parent_bus(DEVICE(icp), sysbus_get_default());
        object_property_add_child(OBJECT(xics), "icp[*]", OBJECT(icp), NULL);
        object_property_add_const_link(OBJECT(icp), "xics", OBJECT(xi), NULL);
        object_property_set_bool(OBJECT(icp), true, "realized", &err);