mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-29 22:02:02 +00:00
[PATCH] x86_64: Add option to disable timer check
This works around the too fast timer seen on some ATI boards. I don't feel confident enough about it yet to enable it by default, but give users the option. Patch and debugging from Christopher Allen Wing <wingc@engin.umich.edu>, with minor tweaks (renamed the option and documented it) Signed-off-by: Andi Kleen <ak@suse.de> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
607a168583
commit
14d98cad82
2 changed files with 13 additions and 1 deletions
|
@ -25,6 +25,9 @@ APICs
|
||||||
|
|
||||||
noapictimer Don't set up the APIC timer
|
noapictimer Don't set up the APIC timer
|
||||||
|
|
||||||
|
no_timer_check Don't check the IO-APIC timer. This can work around
|
||||||
|
problems with incorrect timer initialization on some boards.
|
||||||
|
|
||||||
Early Console
|
Early Console
|
||||||
|
|
||||||
syntax: earlyprintk=vga
|
syntax: earlyprintk=vga
|
||||||
|
|
|
@ -42,6 +42,8 @@
|
||||||
|
|
||||||
int sis_apic_bug; /* not actually supported, dummy for compile */
|
int sis_apic_bug; /* not actually supported, dummy for compile */
|
||||||
|
|
||||||
|
static int no_timer_check;
|
||||||
|
|
||||||
static DEFINE_SPINLOCK(ioapic_lock);
|
static DEFINE_SPINLOCK(ioapic_lock);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -1601,7 +1603,7 @@ static inline void check_timer(void)
|
||||||
* Ok, does IRQ0 through the IOAPIC work?
|
* Ok, does IRQ0 through the IOAPIC work?
|
||||||
*/
|
*/
|
||||||
unmask_IO_APIC_irq(0);
|
unmask_IO_APIC_irq(0);
|
||||||
if (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);
|
disable_8259A_irq(0);
|
||||||
|
@ -1671,6 +1673,13 @@ static inline void check_timer(void)
|
||||||
panic("IO-APIC + timer doesn't work! Try using the 'noapic' kernel parameter\n");
|
panic("IO-APIC + timer doesn't work! Try using the 'noapic' kernel parameter\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int __init notimercheck(char *s)
|
||||||
|
{
|
||||||
|
no_timer_check = 1;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
__setup("no_timer_check", notimercheck);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
*
|
*
|
||||||
* IRQ's that are handled by the PIC in the MPS IOAPIC case.
|
* IRQ's that are handled by the PIC in the MPS IOAPIC case.
|
||||||
|
|
Loading…
Reference in a new issue