linux/arch/x86_64
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
..
boot Merge ssh://master.kernel.org/pub/scm/linux/kernel/git/sam/kbuild 2006-01-10 08:21:33 -08:00
crypto [CRYPTO] Allow AES C/ASM implementations to coexist 2006-01-09 14:15:39 -08:00
ia32 [PATCH] fstatat64 support 2006-02-11 21:41:10 -08:00
kernel [PATCH] x86_64: Better ATI timer fix 2006-02-26 09:53:31 -08:00
lib [PATCH] x86_64: Undo the earlier changes to remove unrolled copy/memset functions 2006-02-04 16:43:13 -08:00
mm [PATCH] x86_64: Always pass full number of nodes to NUMA hash computation 2006-02-17 08:00:41 -08:00
oprofile [PATCH] Move Kprobes and Oprofile to "Instrumentation Support" menu 2005-11-07 07:53:35 -08:00
pci [PATCH] arch/x86_64/pci/mmconfig.c NULL noise removal 2006-02-07 20:59:01 -05:00
defconfig [PATCH] x86_64: Don't set CONFIG_DEBUG_INFO in defconfig 2006-02-20 20:00:10 -08:00
Kconfig [PATCH] x86-64/i386: Use common X86_PM_TIMER option and make it EMBEDDED 2006-02-26 09:53:30 -08:00
Kconfig.debug [PATCH] x86_64: Remove CONFIG_INIT_DEBUG 2006-02-04 16:43:13 -08:00
Makefile [PATCH] x86_64: Allow compilation on a 32bit biarch toolchain 2006-01-11 19:04:52 -08:00