diff options
Diffstat (limited to 'arch/x86/kernel/io_apic_64.c')
-rw-r--r-- | arch/x86/kernel/io_apic_64.c | 21 |
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 | ||
91 | static int disable_timer_pin_1 __initdata; | 91 | static int disable_timer_pin_1 __initdata; |
92 | 92 | ||
93 | int 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 */ |
96 | static struct { int pin, apic; } ioapic_i8259 = { -1, -1 }; | 95 | static 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 | ||
433 | static int __init setup_disable_8254_timer(char *s) | ||
434 | { | ||
435 | timer_over_8254 = -1; | ||
436 | return 1; | ||
437 | } | ||
438 | static 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); |