android_kernel_xiaomi_sm8350/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 [PATCH] alpha: set cpu_possible_map much earlier 2006-02-08 07:57:37 -08:00
arm [ARM] 3348/1: Disable GPIO interrupts 2006-02-24 22:27:50 +00:00
arm26 [PATCH] arm26: select BLK_DEV_FD only on A5K 2006-02-01 08:53:22 -08:00
cris [PATCH] fallout from ptrace consolidation patch: cris/arch-v10 2006-02-07 20:57:19 -05:00
frv [PATCH] FRV: Use virtual interrupt disablement 2006-02-14 16:09:35 -08:00
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 [IA64] Count disabled cpus as potential hot-pluggable CPUs 2006-02-16 14:10:50 -08:00
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 [PATCH] hrtimer: round up relative start time on low-res arches 2006-02-14 16:09:35 -08:00
mips [PATCH] flags parameter for linkat 2006-02-24 14:31:39 -08:00
parisc [PATCH] hrtimer: round up relative start time on low-res arches 2006-02-14 16:09:35 -08:00
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 [PATCH] drive_info removal outside of arch/i386 2006-02-07 20:56:47 -05:00
sparc [SPARC]: sys_newfstatat --> sys_fstatat64 2006-02-12 23:30:11 -08:00
sparc64 [SPARC]: sys_newfstatat --> sys_fstatat64 2006-02-12 23:30:11 -08:00
um [PATCH] uml: tidying COW code 2006-02-24 14:31:37 -08:00
v850 [PATCH] hrtimer: round up relative start time on low-res arches 2006-02-14 16:09:35 -08:00
x86_64 [PATCH] x86_64: Better ATI timer fix 2006-02-26 09:53:31 -08:00
xtensa [PATCH] Fix some ucLinux breakage from the tty updates 2006-02-03 08:32:04 -08:00