kernel-ark/arch
Andi Kleen ab9b32ee62 [PATCH] x86_64: Better ATI timer fix
The previous experiment for using apicmaintimer on ATI systems didn't
work out very well.  In particular laptops with C2/C3 support often
don't let it tick during idle, which makes it useless.  There were also
some other bugs that made the apicmaintimer often not used at all.

I tried some other experiments - running timer over RTC and some other
things but they didn't really work well neither.

I rechecked the specs now and it turns out this simple change is
actually enough to avoid the double ticks on the ATI systems.  We just
turn off IRQ 0 in the 8254 and only route it directly using the IO-APIC.

I tested it on a few ATI systems and it worked there.  In fact it worked
on all chipsets (NVidia, Intel, AMD, ATI) I tried it on.

According to the ACPI spec routing should always work through the
IO-APIC so I think it's the correct thing to do anyways (and most of the
old gunk in check_timer should be thrown away for x86-64).

But for 2.6.16 it's best to do a fairly minimal change:
 - Use the known to be working everywhere-but-ATI IRQ0 both over 8254
   and IO-APIC setup everywhere
 - Except on ATI disable IRQ0 in the 8254
 - Remove the code to select apicmaintimer on ATI chipsets
 - Add some boot options to allow to override this (just paranoia)

In 2.6.17 I hope to switch the default over to this for everybody.

Signed-off-by: Andi Kleen <ak@suse.de>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-02-26 09:53:31 -08:00
..
alpha
arm [ARM] 3348/1: Disable GPIO interrupts 2006-02-24 22:27:50 +00:00
arm26
cris
frv
h8300 [PATCH] H8/300: CONFIG_CONFIG_ doesn't fly. 2006-02-20 20:04:19 -08:00
i386 [PATCH] i386: Handle non existing APICs without panicing 2006-02-26 09:53:30 -08:00
ia64
m32r [PATCH] m32r: fix and update for gcc-4.0 2006-02-24 14:31:36 -08:00
m68k [PATCH] m68k: pm_power_off() breakage 2006-02-18 16:30:20 -05:00
m68knommu
mips [PATCH] flags parameter for linkat 2006-02-24 14:31:39 -08:00
parisc
powerpc [PATCH] powerpc: Fix mem= cmdline handling on arch/powerpc for !MULTIPLATFORM 2006-02-24 14:34:50 -08:00
ppc [PATCH] powerpc: fix altivec_unavailable_exception Oopses 2006-02-24 11:36:23 +11:00
s390 [PATCH] flags parameter for linkat 2006-02-24 14:31:39 -08:00
sh [PATCH] arch/sh/Kconfig: fix the ISA_DMA_API dependencies 2006-02-17 13:59:26 -08:00
sh64
sparc
sparc64
um [PATCH] uml: tidying COW code 2006-02-24 14:31:37 -08:00
v850
x86_64 [PATCH] x86_64: Better ATI timer fix 2006-02-26 09:53:31 -08:00
xtensa