x86/i8259: Handle bogus spurious interrupts more quietly
authorAndrew Cooper <andrew.cooper3@citrix.com>
Thu, 30 Aug 2012 17:06:39 +0000 (18:06 +0100)
committerAndrew Cooper <andrew.cooper3@citrix.com>
Thu, 30 Aug 2012 17:06:39 +0000 (18:06 +0100)
commit132906348a14d4df9830b2794c6f06315e44238b
treeb7b9d09a67d695aefb88d076bb78fa8ec2a44221
parent944076d517216ac723899ebb6e65148783305e4c
x86/i8259: Handle bogus spurious interrupts more quietly

c/s 25336:edd7c7ad1ad2 introduced the concept of a bogus vector, for
in irqs delivered through the i8259 PIC after IO-APICs had been set
up.

However, if supurious PIC vectors are received, many "No irq handler
for vector" log messages can be seen on the console.

This patch adds to the bogus vector logic to detect spurious PIC
vectors and simply ignore them.  _mask_and_ack_8259A_irq() has been
modified to return a boolean indicating whether the irq is real or
not, and in the case of a spurious vector, the error in do_IRQ() is
not printed.

One complication is that now, _mask_and_ack_8259A_irq() can get called
whatever the ack mode is, so has been altered to work out whether it
should EOI the irq or not.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
Committed-by: Keir Fraser <keir@xen.org>
xen/arch/x86/i8259.c
xen/arch/x86/irq.c
xen/include/asm-x86/irq.h