[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 11/16] xen: arm: Add debug keyhandler to dump the physical GIC state.
On 11/20/2013 02:48 PM, Ian Campbell wrote: > Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx> > --- > xen/arch/arm/gic.c | 75 > ++++++++++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 75 insertions(+) > > diff --git a/xen/arch/arm/gic.c b/xen/arch/arm/gic.c > index ab49106..185a6b8 100644 > --- a/xen/arch/arm/gic.c > +++ b/xen/arch/arm/gic.c > @@ -28,6 +28,7 @@ > #include <xen/softirq.h> > #include <xen/list.h> > #include <xen/device_tree.h> > +#include <xen/keyhandler.h> > #include <asm/p2m.h> > #include <asm/domain.h> > > @@ -385,6 +386,77 @@ int gic_irq_xlate(const u32 *intspec, unsigned int > intsize, > return 0; > } > > + > +static void do_dump_gic(unsigned char key) > +{ > + int irq; > + printk("'%c' pressed -> dumping GIC state\n", key); > + > + for ( irq = 0; irq < gic.lines; irq++ ) > + { > + const char *type; > + int type_nr, enable, pend, active, priority, target; > + struct irq_desc *desc = irq_to_desc(irq); > + uint8_t *bytereg; > + uint32_t wordreg; > + > + bytereg = (uint8_t *) (GICD + GICD_ITARGETSR); > + target = bytereg[irq]; > + > + bytereg = (uint8_t *) (GICD + GICD_IPRIORITYR); > + priority = bytereg[irq]; > + > + switch ( irq ) > + { > + case 0 ... 15: > + type = "SGI"; > + type_nr = irq; > + target = 0x00; /* these are per-CPU */ > + break; > + case 16 ... 31: > + type = "PPI"; > + type_nr = irq - 16; > + break; I think it's a bit stupid to print SGI and PPI as it's per-CPU interrupt. With your solution, you don't know which CPU call the keyhandler. Perhaps, you need to an SGI to each CPU? -- Julien Grall _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |