|
@@ -90,7 +90,6 @@ static int no_timer_check;
|
|
|
|
|
|
static int disable_timer_pin_1 __initdata;
|
|
static int disable_timer_pin_1 __initdata;
|
|
|
|
|
|
-int timer_over_8254 __initdata = 1;
|
|
|
|
|
|
|
|
/* Where if anywhere is the i8259 connect in external int mode */
|
|
/* Where if anywhere is the i8259 connect in external int mode */
|
|
static struct { int pin, apic; } ioapic_i8259 = { -1, -1 };
|
|
static struct { int pin, apic; } ioapic_i8259 = { -1, -1 };
|
|
@@ -430,20 +429,6 @@ static int __init disable_timer_pin_setup(char *arg)
|
|
}
|
|
}
|
|
__setup("disable_timer_pin_1", disable_timer_pin_setup);
|
|
__setup("disable_timer_pin_1", disable_timer_pin_setup);
|
|
|
|
|
|
-static int __init setup_disable_8254_timer(char *s)
|
|
|
|
-{
|
|
|
|
- timer_over_8254 = -1;
|
|
|
|
- return 1;
|
|
|
|
-}
|
|
|
|
-static int __init setup_enable_8254_timer(char *s)
|
|
|
|
-{
|
|
|
|
- timer_over_8254 = 2;
|
|
|
|
- return 1;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-__setup("disable_8254_timer", setup_disable_8254_timer);
|
|
|
|
-__setup("enable_8254_timer", setup_enable_8254_timer);
|
|
|
|
-
|
|
|
|
|
|
|
|
/*
|
|
/*
|
|
* Find the IRQ entry number of a certain pin.
|
|
* Find the IRQ entry number of a certain pin.
|
|
@@ -1674,8 +1659,6 @@ static inline void __init check_timer(void)
|
|
*/
|
|
*/
|
|
apic_write(APIC_LVT0, APIC_LVT_MASKED | APIC_DM_EXTINT);
|
|
apic_write(APIC_LVT0, APIC_LVT_MASKED | APIC_DM_EXTINT);
|
|
init_8259A(1);
|
|
init_8259A(1);
|
|
- if (timer_over_8254 > 0)
|
|
|
|
- enable_8259A_irq(0);
|
|
|
|
|
|
|
|
pin1 = find_isa_irq_pin(0, mp_INT);
|
|
pin1 = find_isa_irq_pin(0, mp_INT);
|
|
apic1 = find_isa_irq_apic(0, mp_INT);
|
|
apic1 = find_isa_irq_apic(0, mp_INT);
|
|
@@ -1693,7 +1676,6 @@ static inline void __init check_timer(void)
|
|
if (!no_timer_check && timer_irq_works()) {
|
|
if (!no_timer_check && timer_irq_works()) {
|
|
nmi_watchdog_default();
|
|
nmi_watchdog_default();
|
|
if (nmi_watchdog == NMI_IO_APIC) {
|
|
if (nmi_watchdog == NMI_IO_APIC) {
|
|
- disable_8259A_irq(0);
|
|
|
|
setup_nmi();
|
|
setup_nmi();
|
|
enable_8259A_irq(0);
|
|
enable_8259A_irq(0);
|
|
}
|
|
}
|
|
@@ -1715,6 +1697,7 @@ static inline void __init check_timer(void)
|
|
* legacy devices should be connected to IO APIC #0
|
|
* legacy devices should be connected to IO APIC #0
|
|
*/
|
|
*/
|
|
setup_ExtINT_IRQ0_pin(apic2, pin2, cfg->vector);
|
|
setup_ExtINT_IRQ0_pin(apic2, pin2, cfg->vector);
|
|
|
|
+ enable_8259A_irq(0);
|
|
if (timer_irq_works()) {
|
|
if (timer_irq_works()) {
|
|
apic_printk(APIC_VERBOSE," works.\n");
|
|
apic_printk(APIC_VERBOSE," works.\n");
|
|
nmi_watchdog_default();
|
|
nmi_watchdog_default();
|
|
@@ -1726,6 +1709,7 @@ static inline void __init check_timer(void)
|
|
/*
|
|
/*
|
|
* Cleanup, just in case ...
|
|
* Cleanup, just in case ...
|
|
*/
|
|
*/
|
|
|
|
+ disable_8259A_irq(0);
|
|
clear_IO_APIC_pin(apic2, pin2);
|
|
clear_IO_APIC_pin(apic2, pin2);
|
|
}
|
|
}
|
|
apic_printk(APIC_VERBOSE," failed.\n");
|
|
apic_printk(APIC_VERBOSE," failed.\n");
|
|
@@ -1737,7 +1721,6 @@ static inline void __init check_timer(void)
|
|
|
|
|
|
apic_printk(APIC_VERBOSE, KERN_INFO "...trying to set up timer as Virtual Wire IRQ...");
|
|
apic_printk(APIC_VERBOSE, KERN_INFO "...trying to set up timer as Virtual Wire IRQ...");
|
|
|
|
|
|
- disable_8259A_irq(0);
|
|
|
|
irq_desc[0].chip = &lapic_irq_type;
|
|
irq_desc[0].chip = &lapic_irq_type;
|
|
apic_write(APIC_LVT0, APIC_DM_FIXED | cfg->vector); /* Fixed mode */
|
|
apic_write(APIC_LVT0, APIC_DM_FIXED | cfg->vector); /* Fixed mode */
|
|
enable_8259A_irq(0);
|
|
enable_8259A_irq(0);
|