lguest: fix irq vectors.
authorRusty Russell <rusty@rustcorp.com.au>
Fri, 31 Oct 2008 16:24:27 +0000 (11:24 -0500)
committerRusty Russell <rusty@rustcorp.com.au>
Fri, 31 Oct 2008 00:24:28 +0000 (11:24 +1100)
do_IRQ: cannot handle IRQ -1 vector 0x20 cpu 0
------------[ cut here ]------------
kernel BUG at arch/x86/kernel/irq_32.c:219!

We're not ISA: we have a 1:1 mapping from vectors to irqs.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
arch/x86/lguest/boot.c

index 4e22fa08d6299de16f5b2affcd6ac0164b8c7d8b..a5d8e1ace1cf700922d1b7268401e4a4feed52c2 100644 (file)
@@ -586,6 +586,9 @@ static void __init lguest_init_IRQ(void)
 
        for (i = 0; i < LGUEST_IRQS; i++) {
                int vector = FIRST_EXTERNAL_VECTOR + i;
+               /* Some systems map "vectors" to interrupts weirdly.  Lguest has
+                * a straightforward 1 to 1 mapping, so force that here. */
+               __get_cpu_var(vector_irq)[vector] = i;
                if (vector != SYSCALL_VECTOR) {
                        set_intr_gate(vector, interrupt[vector]);
                        set_irq_chip_and_handler_name(i, &lguest_irq_controller,