aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/apic/es7000_32.c
diff options
context:
space:
mode:
authorTejun Heo <tj@kernel.org>2011-01-23 08:37:33 -0500
committerIngo Molnar <mingo@elte.hu>2011-01-28 08:54:06 -0500
commitacb8bc09c6185e4d3d582d0076aaa6a89f19d8c5 (patch)
tree72dbecce548a362c665a0c4c9fab428aaa854ecc /arch/x86/kernel/apic/es7000_32.c
parent7632611f534340182c832d2b139cb19676f24e1a (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.c4
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
687struct apic __refdata apic_es7000 = { 689struct 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};