aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/io_apic_64.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/x86/kernel/io_apic_64.c')
-rw-r--r--arch/x86/kernel/io_apic_64.c21
1 files changed, 2 insertions, 19 deletions
diff --git a/arch/x86/kernel/io_apic_64.c b/arch/x86/kernel/io_apic_64.c
index 7c34e38e421..9f16ca4b5a2 100644
--- a/arch/x86/kernel/io_apic_64.c
+++ b/arch/x86/kernel/io_apic_64.c
@@ -90,7 +90,6 @@ static int no_timer_check;
90 90
91static int disable_timer_pin_1 __initdata; 91static int disable_timer_pin_1 __initdata;
92 92
93int timer_over_8254 __initdata = 1;
94 93
95/* Where if anywhere is the i8259 connect in external int mode */ 94/* Where if anywhere is the i8259 connect in external int mode */
96static struct { int pin, apic; } ioapic_i8259 = { -1, -1 }; 95static struct { int pin, apic; } ioapic_i8259 = { -1, -1 };
@@ -430,20 +429,6 @@ static int __init disable_timer_pin_setup(char *arg)
430} 429}
431__setup("disable_timer_pin_1", disable_timer_pin_setup); 430__setup("disable_timer_pin_1", disable_timer_pin_setup);
432 431
433static int __init setup_disable_8254_timer(char *s)
434{
435 timer_over_8254 = -1;
436 return 1;
437}
438static int __init setup_enable_8254_timer(char *s)
439{
440 timer_over_8254 = 2;
441 return 1;
442}
443
444__setup("disable_8254_timer", setup_disable_8254_timer);
445__setup("enable_8254_timer", setup_enable_8254_timer);
446
447 432
448/* 433/*
449 * Find the IRQ entry number of a certain pin. 434 * Find the IRQ entry number of a certain pin.
@@ -1674,8 +1659,6 @@ static inline void __init check_timer(void)
1674 */ 1659 */
1675 apic_write(APIC_LVT0, APIC_LVT_MASKED | APIC_DM_EXTINT); 1660 apic_write(APIC_LVT0, APIC_LVT_MASKED | APIC_DM_EXTINT);
1676 init_8259A(1); 1661 init_8259A(1);
1677 if (timer_over_8254 > 0)
1678 enable_8259A_irq(0);
1679 1662
1680 pin1 = find_isa_irq_pin(0, mp_INT); 1663 pin1 = find_isa_irq_pin(0, mp_INT);
1681 apic1 = find_isa_irq_apic(0, mp_INT); 1664 apic1 = find_isa_irq_apic(0, mp_INT);
@@ -1693,7 +1676,6 @@ static inline void __init check_timer(void)
1693 if (!no_timer_check && timer_irq_works()) { 1676 if (!no_timer_check && timer_irq_works()) {
1694 nmi_watchdog_default(); 1677 nmi_watchdog_default();
1695 if (nmi_watchdog == NMI_IO_APIC) { 1678 if (nmi_watchdog == NMI_IO_APIC) {
1696 disable_8259A_irq(0);
1697 setup_nmi(); 1679 setup_nmi();
1698 enable_8259A_irq(0); 1680 enable_8259A_irq(0);
1699 } 1681 }
@@ -1715,6 +1697,7 @@ static inline void __init check_timer(void)
1715 * legacy devices should be connected to IO APIC #0 1697 * legacy devices should be connected to IO APIC #0
1716 */ 1698 */
1717 setup_ExtINT_IRQ0_pin(apic2, pin2, cfg->vector); 1699 setup_ExtINT_IRQ0_pin(apic2, pin2, cfg->vector);
1700 enable_8259A_irq(0);
1718 if (timer_irq_works()) { 1701 if (timer_irq_works()) {
1719 apic_printk(APIC_VERBOSE," works.\n"); 1702 apic_printk(APIC_VERBOSE," works.\n");
1720 nmi_watchdog_default(); 1703 nmi_watchdog_default();
@@ -1726,6 +1709,7 @@ static inline void __init check_timer(void)
1726 /* 1709 /*
1727 * Cleanup, just in case ... 1710 * Cleanup, just in case ...
1728 */ 1711 */
1712 disable_8259A_irq(0);
1729 clear_IO_APIC_pin(apic2, pin2); 1713 clear_IO_APIC_pin(apic2, pin2);
1730 } 1714 }
1731 apic_printk(APIC_VERBOSE," failed.\n"); 1715 apic_printk(APIC_VERBOSE," failed.\n");
@@ -1737,7 +1721,6 @@ static inline void __init check_timer(void)
1737 1721
1738 apic_printk(APIC_VERBOSE, KERN_INFO "...trying to set up timer as Virtual Wire IRQ..."); 1722 apic_printk(APIC_VERBOSE, KERN_INFO "...trying to set up timer as Virtual Wire IRQ...");
1739 1723
1740 disable_8259A_irq(0);
1741 irq_desc[0].chip = &lapic_irq_type; 1724 irq_desc[0].chip = &lapic_irq_type;
1742 apic_write(APIC_LVT0, APIC_DM_FIXED | cfg->vector); /* Fixed mode */ 1725 apic_write(APIC_LVT0, APIC_DM_FIXED | cfg->vector); /* Fixed mode */
1743 enable_8259A_irq(0); 1726 enable_8259A_irq(0);