Messages in this thread Patch in this message | | | Date | Sun, 02 Aug 2015 20:38:24 -0000 | From | Thomas Gleixner <> | Subject | [patch 2/7] x86/lguest: Do not setup unused irq vectors |
| |
No point in assigning the interrupt vectors if there is no interrupt chip installed. Move it to lguest_setup_irq().
Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Cc: Rusty Russell <rusty@rustcorp.com.au> --- arch/x86/lguest/boot.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-)
Index: tip/arch/x86/lguest/boot.c =================================================================== --- tip.orig/arch/x86/lguest/boot.c +++ tip/arch/x86/lguest/boot.c @@ -855,17 +855,13 @@ static void lguest_disable_irq(struct pc /* * This sets up the Interrupt Descriptor Table (IDT) entry for each hardware - * interrupt (except 128, which is used for system calls), and then tells the - * Linux infrastructure that each interrupt is controlled by our level-based - * lguest interrupt controller. + * interrupt (except 128, which is used for system calls). */ static void __init lguest_init_IRQ(void) { unsigned int i; for (i = FIRST_EXTERNAL_VECTOR; i < FIRST_SYSTEM_VECTOR; i++) { - /* Some systems map "vectors" to interrupts weirdly. Not us! */ - __this_cpu_write(vector_irq[i], i - FIRST_EXTERNAL_VECTOR); if (i != IA32_SYSCALL_VECTOR) set_intr_gate(i, irq_entries_start + 8 * (i - FIRST_EXTERNAL_VECTOR)); @@ -893,8 +889,15 @@ int lguest_setup_irq(unsigned int irq) if (err < 0 && err != -EEXIST) return err; + /* + * Tell the Linux infrastructure that the interrupt is + * controlled by our level-based lguest interrupt controller. + */ irq_set_chip_and_handler_name(irq, &lguest_irq_controller, handle_level_irq, "level"); + + /* Some systems map "vectors" to interrupts weirdly. Not us! */ + __this_cpu_write(vector_irq[FIRST_EXTERNAL_VECTOR + irq, irq); return 0; }
| |