Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 14d98cad authored by Andi Kleen's avatar Andi Kleen Committed by Linus Torvalds
Browse files

[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: default avatarAndi Kleen <ak@suse.de>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 607a1685
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -25,6 +25,9 @@ APICs

   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

   syntax: earlyprintk=vga
+10 −1
Original line number Diff line number Diff line
@@ -42,6 +42,8 @@

int sis_apic_bug; /* not actually supported, dummy for compile */

static int no_timer_check;

static DEFINE_SPINLOCK(ioapic_lock);

/*
@@ -1601,7 +1603,7 @@ static inline void check_timer(void)
		 * Ok, does IRQ0 through the IOAPIC work?
		 */
		unmask_IO_APIC_irq(0);
		if (timer_irq_works()) {
		if (!no_timer_check && timer_irq_works()) {
			nmi_watchdog_default();
			if (nmi_watchdog == NMI_IO_APIC) {
				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");
}

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.