From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59381) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1boxJ9-0007FY-NB for qemu-devel@nongnu.org; Tue, 27 Sep 2016 14:40:48 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1boxJ7-000324-0K for qemu-devel@nongnu.org; Tue, 27 Sep 2016 14:40:47 -0400 Received: from smtp3-g21.free.fr ([212.27.42.3]:9700) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1boxJ6-00030R-K6 for qemu-devel@nongnu.org; Tue, 27 Sep 2016 14:40:44 -0400 References: <1474921408-24710-1-git-send-email-hpoussin@reactos.org> <1474921408-24710-4-git-send-email-hpoussin@reactos.org> From: =?UTF-8?Q?Herv=c3=a9_Poussineau?= Message-ID: Date: Tue, 27 Sep 2016 20:39:50 +0200 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: quoted-printable Subject: Re: [Qemu-devel] [PATCH v2 3/6] intc/slavio_intctl: implement InterruptStatsProvider interface List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Artyom Tarasenko Cc: qemu-devel , Paolo Bonzini , Luiz Capitulino , Mark Cave-Ayland Le 27/09/2016 =C3=A0 16:53, Artyom Tarasenko a =C3=A9crit : > Are slavio_pic_info and slavio_irq_info still used after this patch? After this patch, yes. However, slavio_pic_info/slavio_irq_info (and sun4m_hmp_info_pic/sun4m_hm= p_info_irq) will be removed in patch 5/6. Herv=C3=A9 > > On Mon, Sep 26, 2016 at 10:23 PM, Herv=C3=A9 Poussineau wrote: >> Signed-off-by: Herv=C3=A9 Poussineau >> --- >> hw/intc/slavio_intctl.c | 35 +++++++++++++++++++++++++++++++++++ >> 1 file changed, 35 insertions(+) >> >> diff --git a/hw/intc/slavio_intctl.c b/hw/intc/slavio_intctl.c >> index e82e893..a9acb64 100644 >> --- a/hw/intc/slavio_intctl.c >> +++ b/hw/intc/slavio_intctl.c >> @@ -26,6 +26,7 @@ >> #include "hw/sparc/sun4m.h" >> #include "monitor/monitor.h" >> #include "hw/sysbus.h" >> +#include "hw/intc/intc.h" >> #include "trace.h" >> >> //#define DEBUG_IRQ_COUNT >> @@ -418,6 +419,31 @@ static void slavio_intctl_reset(DeviceState *d) >> slavio_check_interrupts(s, 0); >> } >> >> +#ifdef DEBUG_IRQ_COUNT >> +static bool slavio_intctl_get_statistics(InterruptStatsProvider *obj, >> + uint64_t **irq_counts, >> + unsigned int *nb_irqs) >> +{ >> + SLAVIO_INTCTLState *s =3D SLAVIO_INTCTL(obj); >> + *irq_counts =3D s->irq_count; >> + *nb_irqs =3D ARRAY_SIZE(s->irq_count); >> + return true; >> +} >> +#endif >> + >> +static void slavio_intctl_print_info(InterruptStatsProvider *obj, Mon= itor *mon) >> +{ >> + SLAVIO_INTCTLState *s =3D SLAVIO_INTCTL(obj); >> + int i; >> + >> + for (i =3D 0; i < MAX_CPUS; i++) { >> + monitor_printf(mon, "per-cpu %d: pending 0x%08x\n", i, >> + s->slaves[i].intreg_pending); >> + } >> + monitor_printf(mon, "master: pending 0x%08x, disabled 0x%08x\n", >> + s->intregm_pending, s->intregm_disabled); >> +} >> + >> static void slavio_intctl_init(Object *obj) >> { >> DeviceState *dev =3D DEVICE(obj); >> @@ -449,9 +475,14 @@ static void slavio_intctl_init(Object *obj) >> static void slavio_intctl_class_init(ObjectClass *klass, void *data) >> { >> DeviceClass *dc =3D DEVICE_CLASS(klass); >> + InterruptStatsProviderClass *ic =3D INTERRUPT_STATS_PROVIDER_CLAS= S(klass); >> >> dc->reset =3D slavio_intctl_reset; >> dc->vmsd =3D &vmstate_intctl; >> +#ifdef DEBUG_IRQ_COUNT >> + ic->get_statistics =3D slavio_intctl_get_statistics; >> +#endif >> + ic->print_info =3D slavio_intctl_print_info; >> } >> >> static const TypeInfo slavio_intctl_info =3D { >> @@ -460,6 +491,10 @@ static const TypeInfo slavio_intctl_info =3D { >> .instance_size =3D sizeof(SLAVIO_INTCTLState), >> .instance_init =3D slavio_intctl_init, >> .class_init =3D slavio_intctl_class_init, >> + .interfaces =3D (InterfaceInfo[]) { >> + { TYPE_INTERRUPT_STATS_PROVIDER }, >> + { } >> + }, >> }; >> >> static void slavio_intctl_register_types(void) >> -- >> 2.1.4 >> >> > > >