diff options
author | Tejun Heo <tj@kernel.org> | 2011-01-23 08:37:33 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2011-01-28 08:54:06 -0500 |
commit | acb8bc09c6185e4d3d582d0076aaa6a89f19d8c5 (patch) | |
tree | 72dbecce548a362c665a0c4c9fab428aaa854ecc /arch/x86/kernel/apic/es7000_32.c | |
parent | 7632611f534340182c832d2b139cb19676f24e1a (diff) |
x86: Add apic->x86_32_early_logical_apicid()
On x86_32, the mapping between cpu and logical apic ID differs
depending on the specific apic implementation in use. The
mapping is initialized while bringing up CPUs; however, this
makes early inits ignore memory topology.
Add a x86_32 specific apic->x86_32_early_logical_apicid() which
is called early during boot to query the mapping. The mapping
is later verified against the result of init_apic_ldr(). The
method is allowed to return BAD_APICID if it can't be determined
early.
noop variant which always returns BAD_APICID is implemented and
added to all x86_32 apic implementations.
Signed-off-by: Tejun Heo <tj@kernel.org>
Cc: eric.dumazet@gmail.com
Cc: yinghai@kernel.org
Cc: brgerst@gmail.com
Cc: gorcunov@gmail.com
Cc: penberg@kernel.org
Cc: shaohui.zheng@intel.com
Cc: rientjes@google.com
LKML-Reference: <1295789862-25482-8-git-send-email-tj@kernel.org>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86/kernel/apic/es7000_32.c')
-rw-r--r-- | arch/x86/kernel/apic/es7000_32.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/arch/x86/kernel/apic/es7000_32.c b/arch/x86/kernel/apic/es7000_32.c index 6840681a3f14..0ffc1eca5777 100644 --- a/arch/x86/kernel/apic/es7000_32.c +++ b/arch/x86/kernel/apic/es7000_32.c | |||
@@ -682,6 +682,8 @@ struct apic __refdata apic_es7000_cluster = { | |||
682 | .icr_write = native_apic_icr_write, | 682 | .icr_write = native_apic_icr_write, |
683 | .wait_icr_idle = native_apic_wait_icr_idle, | 683 | .wait_icr_idle = native_apic_wait_icr_idle, |
684 | .safe_wait_icr_idle = native_safe_apic_wait_icr_idle, | 684 | .safe_wait_icr_idle = native_safe_apic_wait_icr_idle, |
685 | |||
686 | .x86_32_early_logical_apicid = noop_x86_32_early_logical_apicid, | ||
685 | }; | 687 | }; |
686 | 688 | ||
687 | struct apic __refdata apic_es7000 = { | 689 | struct apic __refdata apic_es7000 = { |
@@ -744,4 +746,6 @@ struct apic __refdata apic_es7000 = { | |||
744 | .icr_write = native_apic_icr_write, | 746 | .icr_write = native_apic_icr_write, |
745 | .wait_icr_idle = native_apic_wait_icr_idle, | 747 | .wait_icr_idle = native_apic_wait_icr_idle, |
746 | .safe_wait_icr_idle = native_safe_apic_wait_icr_idle, | 748 | .safe_wait_icr_idle = native_safe_apic_wait_icr_idle, |
749 | |||
750 | .x86_32_early_logical_apicid = noop_x86_32_early_logical_apicid, | ||
747 | }; | 751 | }; |