x86, ioapic: Fix the EOI register detection mechanism
authorSuresh Siddha <suresh.b.siddha@intel.com>
Tue, 1 Dec 2009 23:31:16 +0000 (15:31 -0800)
committerIngo Molnar <mingo@elte.hu>
Wed, 2 Dec 2009 09:11:01 +0000 (10:11 +0100)
commitc29d9db338db606c3335a03f337e1d4b7f6bb727
treed64763cd2a06af0d95b481a61c0ff6fcfa0de208
parentca64c47cecd0321b2e0dcbd7aaff44b68ce20654
x86, ioapic: Fix the EOI register detection mechanism

Maciej W. Rozycki reported:

> 82093AA I/O APIC has its version set to 0x11 and it
> does not support the EOI register.  Similarly I/O APICs
> integrated into the 82379AB south bridge and the 82374EB/SB
> EISA component.

IO-APIC versions below 0x20 don't support EOI register.

Some of the Intel ICH Specs (ICH2 to ICH5) documents the io-apic
version as 0x2. This is an error with documentation and these
ICH chips use io-apic's of version 0x20 and indeed has a working
EOI register for the io-apic.

Fix the EOI register detection mechanism to check for version
0x20 and beyond.

And also, a platform can potentially  have io-apic's with
different versions. Make the EOI register check per io-apic.

Reported-by: Maciej W. Rozycki <macro@linux-mips.org>
Signed-off-by: Suresh Siddha <suresh.b.siddha@intel.com>
Cc: ebiederm@xmission.com
Cc: garyhade@us.ibm.com
LKML-Reference: <20091201233335.065361533@sbs-t61.sc.intel.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
arch/x86/kernel/apic/io_apic.c