Jelajahi Sumber

x86: I/O APIC: clean up after a fasteoi failure

Disable the 8259A when routing of the timer interrupt through the chip to
the local APIC of the primary processor has failed.

Signed-off-by: Maciej W. Rozycki <macro@linux-mips.org>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Maciej W. Rozycki 17 tahun lalu
induk
melakukan
e67465f129
2 mengubah file dengan 2 tambahan dan 0 penghapusan
  1. 1 0
      arch/x86/kernel/io_apic_32.c
  2. 1 0
      arch/x86/kernel/io_apic_64.c

+ 1 - 0
arch/x86/kernel/io_apic_32.c

@@ -2228,6 +2228,7 @@ static inline void __init check_timer(void)
 		printk(" works.\n");
 		goto out;
 	}
+	disable_8259A_irq(0);
 	apic_write_around(APIC_LVT0, APIC_LVT_MASKED | APIC_DM_FIXED | vector);
 	printk(" failed.\n");
 

+ 1 - 0
arch/x86/kernel/io_apic_64.c

@@ -1729,6 +1729,7 @@ static inline void __init check_timer(void)
 		apic_printk(APIC_VERBOSE," works.\n");
 		goto out;
 	}
+	disable_8259A_irq(0);
 	apic_write(APIC_LVT0, APIC_LVT_MASKED | APIC_DM_FIXED | cfg->vector);
 	apic_printk(APIC_VERBOSE," failed.\n");