summaryrefslogtreecommitdiffstats
path: root/arch/x86_64/kernel/genapic_flat.c
diff options
context:
space:
mode:
authorravikiran thirumalai2006-06-26 13:56:04 +0200
committerLinus Torvalds2006-06-26 19:48:14 +0200
commit0f4fdb7fba0b3ec66df39d0e743e701404161fb8 (patch)
treec54005e24d649db5c5c0c01ff0a3e01e29dbefd1 /arch/x86_64/kernel/genapic_flat.c
parent[PATCH] x86_64: Update defconfig (diff)
downloadkernel-qcow2-linux-0f4fdb7fba0b3ec66df39d0e743e701404161fb8.tar.gz
kernel-qcow2-linux-0f4fdb7fba0b3ec66df39d0e743e701404161fb8.tar.xz
kernel-qcow2-linux-0f4fdb7fba0b3ec66df39d0e743e701404161fb8.zip
[PATCH] x86_64: Use local APIC ID from local APIC instead of CPUID
vSMPowered systems use apic_cluster too. Forcing apic_physflat works on these systems too, but only if we change phys_pkg_id to use hard_smp_prcoessor_id() instead of cpuid_ebx. I am guessing other multichassi cluster systems would need this too. Signed-off-by: ravikiran thirumalai <kiran@scalex86.org> Signed-off-by: Andi Kleen <ak@suse.de> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'arch/x86_64/kernel/genapic_flat.c')
-rw-r--r--arch/x86_64/kernel/genapic_flat.c5
1 files changed, 1 insertions, 4 deletions
diff --git a/arch/x86_64/kernel/genapic_flat.c b/arch/x86_64/kernel/genapic_flat.c
index 1a2ab825be98..c66ca7b1d31a 100644
--- a/arch/x86_64/kernel/genapic_flat.c
+++ b/arch/x86_64/kernel/genapic_flat.c
@@ -108,10 +108,7 @@ static unsigned int flat_cpu_mask_to_apicid(cpumask_t cpumask)
static unsigned int phys_pkg_id(int index_msb)
{
- u32 ebx;
-
- ebx = cpuid_ebx(1);
- return ((ebx >> 24) & 0xFF) >> index_msb;
+ return hard_smp_processor_id() >> index_msb;
}
struct genapic apic_flat = {