From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:32804) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UzLQj-0006HG-RB for qemu-devel@nongnu.org; Wed, 17 Jul 2013 02:41:43 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UzLQe-0001q7-SL for qemu-devel@nongnu.org; Wed, 17 Jul 2013 02:41:41 -0400 Received: from mail-pd0-f169.google.com ([209.85.192.169]:54420) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UzLNE-0000SF-Ku for qemu-devel@nongnu.org; Wed, 17 Jul 2013 02:38:04 -0400 Received: by mail-pd0-f169.google.com with SMTP id y10so1511845pdj.28 for ; Tue, 16 Jul 2013 23:38:03 -0700 (PDT) From: Alexey Kardashevskiy Date: Wed, 17 Jul 2013 16:37:36 +1000 Message-Id: <1374043057-27208-4-git-send-email-aik@ozlabs.ru> In-Reply-To: <1374043057-27208-1-git-send-email-aik@ozlabs.ru> References: <1374043057-27208-1-git-send-email-aik@ozlabs.ru> Subject: [Qemu-devel] [PATCH 3/4] xics: rework initialization List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Anthony Liguori , Alexey Kardashevskiy , Alexander Graf , qemu-ppc@nongnu.org, Paul Mackerras , David Gibson Currently RTAS and hypercalls are registered in the XICS class init function. The upcoming XICS-KVM will inherit from XICS but will use another API to register RTAS tokens with KVM so registration has to move from the class init function (common for both XICS and XICS-KVM) to the _realize function (specific to the controller). This moves ICS creation to _realize as there is no point to create some child devices in initfn() (ICS) and some in realize() (ICPs). As initfn is no more needed, this removes it. Signed-off-by: Alexey Kardashevskiy --- hw/intc/xics.c | 35 +++++++++++++++-------------------- 1 file changed, 15 insertions(+), 20 deletions(-) diff --git a/hw/intc/xics.c b/hw/intc/xics.c index 283c2dd..a359f52 100644 --- a/hw/intc/xics.c +++ b/hw/intc/xics.c @@ -689,9 +689,23 @@ static void xics_cpu_setup(XICSState *icp, PowerPCCPU *cpu) static void xics_realize(DeviceState *dev, Error **errp) { XICSState *icp = XICS(dev); - ICSState *ics = icp->ics; + ICSState *ics; int i; + spapr_rtas_register("ibm,set-xive", rtas_set_xive); + spapr_rtas_register("ibm,get-xive", rtas_get_xive); + spapr_rtas_register("ibm,int-off", rtas_int_off); + spapr_rtas_register("ibm,int-on", rtas_int_on); + + spapr_register_hypercall(H_CPPR, h_cppr); + spapr_register_hypercall(H_IPI, h_ipi); + spapr_register_hypercall(H_XIRR, h_xirr); + spapr_register_hypercall(H_EOI, h_eoi); + + icp->ics = ICS(object_new(TYPE_ICS)); + ics = icp->ics; + object_property_add_child(OBJECT(icp), "ics", OBJECT(icp->ics), NULL); + ics->nr_irqs = icp->nr_irqs; ics->offset = XICS_IRQ_BASE; ics->icp = icp; @@ -707,14 +721,6 @@ static void xics_realize(DeviceState *dev, Error **errp) } } -static void xics_initfn(Object *obj) -{ - XICSState *xics = XICS(obj); - - xics->ics = ICS(object_new(TYPE_ICS)); - object_property_add_child(obj, "ics", OBJECT(xics->ics), NULL); -} - static Property xics_properties[] = { DEFINE_PROP_UINT32("nr_servers", XICSState, nr_servers, -1), DEFINE_PROP_UINT32("nr_irqs", XICSState, nr_irqs, -1), @@ -730,16 +736,6 @@ static void xics_class_init(ObjectClass *oc, void *data) dc->props = xics_properties; dc->reset = xics_reset; k->cpu_setup = xics_cpu_setup; - - spapr_rtas_register("ibm,set-xive", rtas_set_xive); - spapr_rtas_register("ibm,get-xive", rtas_get_xive); - spapr_rtas_register("ibm,int-off", rtas_int_off); - spapr_rtas_register("ibm,int-on", rtas_int_on); - - spapr_register_hypercall(H_CPPR, h_cppr); - spapr_register_hypercall(H_IPI, h_ipi); - spapr_register_hypercall(H_XIRR, h_xirr); - spapr_register_hypercall(H_EOI, h_eoi); } static const TypeInfo xics_info = { @@ -748,7 +744,6 @@ static const TypeInfo xics_info = { .instance_size = sizeof(XICSState), .class_size = sizeof(XICSStateClass), .class_init = xics_class_init, - .instance_init = xics_initfn, }; static void xics_register_types(void) -- 1.8.3.2