ppc/xics: register the reset handler of ICP objects
authorCédric Le Goater <clg@kaod.org>
Mon, 27 Feb 2017 14:29:27 +0000 (15:29 +0100)
committerDavid Gibson <david@gibson.dropbear.id.au>
Wed, 1 Mar 2017 00:23:40 +0000 (11:23 +1100)
The reset of the ICP objects is currently handled by XICS but this can
be done for each individual ICP.

Signed-off-by: Cédric Le Goater <clg@kaod.org>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
hw/intc/xics.c
hw/ppc/spapr.c

index ddb0a6f48b5c9d136166ed1a4c21c04ee1236407..51e6c0c85fca45bb592971c24a773ef238214325 100644 (file)
@@ -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,
 };
 
 /*
index 7ad932fb28b88b9bfcc6915bb5a8ab7a5667d5f8..8b2d21c15b64f98b7068bdb9f31997ab49f04a23 100644 (file)
@@ -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);