* [PATCH] xen: include MSI/MSI-X information in interrupt debug output
@ 2009-03-25 18:08 Rolf Neugebauer
0 siblings, 0 replies; only message in thread
From: Rolf Neugebauer @ 2009-03-25 18:08 UTC (permalink / raw)
To: Xen-devel
[-- Attachment #1: Type: text/plain, Size: 320 bytes --]
With per-domain irq-to-vector mappings, dump_irqs() omitted some
vectors. This patch cycles through the vectors rather than interrupts
and prints the same debug information. The patch also prints out
information about mapped but unbound interrupts.
Signed-off-by: Rolf Neugebauer <rolf.neugebauer@netronome.com>
---
[-- Attachment #2: debug-irq.patch --]
[-- Type: text/x-patch, Size: 2870 bytes --]
diff -r df00dbb45457 xen/arch/x86/irq.c
--- a/xen/arch/x86/irq.c Wed Mar 25 14:38:58 2009 +0000
+++ b/xen/arch/x86/irq.c Wed Mar 25 17:54:18 2009 +0000
@@ -1069,7 +1069,7 @@
static void dump_irqs(unsigned char key)
{
- int i, irq, vector;
+ int i, glob_irq, irq, vector;
irq_desc_t *desc;
irq_guest_action_t *action;
struct domain *d;
@@ -1077,41 +1077,47 @@
printk("Guest interrupt information:\n");
- for ( irq = 0; irq < NR_IRQS; irq++ )
+ for ( vector = 0; vector < NR_VECTORS; vector++ )
{
- vector = irq_to_vector(irq);
- if ( vector == 0 )
- continue;
+
+ glob_irq = vector_to_irq(vector);
desc = &irq_desc[vector];
+ if ( desc == NULL || desc->handler == &no_irq_type )
+ continue;
spin_lock_irqsave(&desc->lock, flags);
- if ( desc->status & IRQ_GUEST )
+ if ( !(desc->status & IRQ_GUEST) )
+ printk(" Vec%3d IRQ%3d: type=%-15s status=%08x "
+ "mapped, unbound\n",
+ vector, glob_irq, desc->handler->typename, desc->status);
+ else
{
action = (irq_guest_action_t *)desc->action;
- printk(" IRQ%3d Vec%3d: type=%-15s status=%08x "
+ printk(" Vec%3d IRQ%3d: type=%-15s status=%08x "
"in-flight=%d domain-list=",
- irq, vector, desc->handler->typename,
+ vector, glob_irq, desc->handler->typename,
desc->status, action->in_flight);
for ( i = 0; i < action->nr_guests; i++ )
{
d = action->guest[i];
- printk("%u(%c%c%c%c)",
- d->domain_id,
- (test_bit(d->pirq_to_evtchn[irq],
+ irq = domain_vector_to_irq(d, vector);
+ printk("%u:%3d(%c%c%c%c)",
+ d->domain_id, irq,
+ (test_bit(d->pirq_to_evtchn[glob_irq],
&shared_info(d, evtchn_pending)) ?
'P' : '-'),
- (test_bit(d->pirq_to_evtchn[irq] /
+ (test_bit(d->pirq_to_evtchn[glob_irq] /
BITS_PER_EVTCHN_WORD(d),
&vcpu_info(d->vcpu[0], evtchn_pending_sel)) ?
'S' : '-'),
- (test_bit(d->pirq_to_evtchn[irq],
+ (test_bit(d->pirq_to_evtchn[glob_irq],
&shared_info(d, evtchn_mask)) ?
'M' : '-'),
- (test_bit(irq, d->pirq_mask) ?
+ (test_bit(glob_irq, d->pirq_mask) ?
'M' : '-'));
if ( i != action->nr_guests )
printk(",");
[-- Attachment #3: Type: text/plain, Size: 138 bytes --]
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2009-03-25 18:08 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-03-25 18:08 [PATCH] xen: include MSI/MSI-X information in interrupt debug output Rolf Neugebauer
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.