That value can, for forcibly unbound PIRQs, validly be negative, and for the respective check to catch those cases (and prevent using these negative values as array index), the respective variables must be of signed type. Signed-off-by: Jan Beulich --- 2010-06-15.orig/xen/arch/x86/irq.c 2010-06-15 09:21:05.000000000 +0200 +++ 2010-06-15/xen/arch/x86/irq.c 2010-06-15 13:23:00.000000000 +0200 @@ -887,7 +887,7 @@ static void __do_IRQ_guest(int irq) struct irq_desc *domain_spin_lock_irq_desc( struct domain *d, int pirq, unsigned long *pflags) { - unsigned int irq; + int irq; unsigned long flags; struct irq_desc *desc; @@ -1054,7 +1054,7 @@ extern int ioapic_ack_new; static int pirq_acktype(struct domain *d, int pirq) { struct irq_desc *desc; - unsigned int irq; + int irq; irq = domain_pirq_to_irq(d, pirq); if ( irq <= 0 )