diff options
author | ravikiran thirumalai <kiran@scalex86.org> | 2006-06-26 07:56:04 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-06-26 13:48:14 -0400 |
commit | 0f4fdb7fba0b3ec66df39d0e743e701404161fb8 (patch) | |
tree | c54005e24d649db5c5c0c01ff0a3e01e29dbefd1 | |
parent | 7c393e7b95bceafcefd5357afdda9f5047b6aa69 (diff) |
[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>
-rw-r--r-- | arch/x86_64/kernel/genapic_flat.c | 5 |
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) | |||
108 | 108 | ||
109 | static unsigned int phys_pkg_id(int index_msb) | 109 | static unsigned int phys_pkg_id(int index_msb) |
110 | { | 110 | { |
111 | u32 ebx; | 111 | return hard_smp_processor_id() >> index_msb; |
112 | |||
113 | ebx = cpuid_ebx(1); | ||
114 | return ((ebx >> 24) & 0xFF) >> index_msb; | ||
115 | } | 112 | } |
116 | 113 | ||
117 | struct genapic apic_flat = { | 114 | struct genapic apic_flat = { |