x86/apic: Make cpu_mask_to_apicid() operations check cpu_online_mask
authorAlexander Gordeev <agordeev@redhat.com>
Thu, 7 Jun 2012 13:16:25 +0000 (15:16 +0200)
committerIngo Molnar <mingo@kernel.org>
Fri, 8 Jun 2012 09:44:30 +0000 (11:44 +0200)
commit4988a40c3981212fa8c64da68722affc1cb6697a
tree0210395a3b47a0295ca5015e6ad2d16e1bc58a5e
parentff164324123c0fe181d8de7dadcc7b3fbe25f2cf
x86/apic: Make cpu_mask_to_apicid() operations check cpu_online_mask

Currently cpu_mask_to_apicid() should not get a offline CPU with
the cpumask. Otherwise some apic drivers might try to access
non-existent per-cpu variables (i.e. x2apic). In that regard
cpu_mask_to_apicid() and cpu_mask_to_apicid_and() operations are
inconsistent.

This fix makes the two operations do not rely on calling
functions and always return the apicid for only online CPUs. As
result, the meaning and implementations of cpu_mask_to_apicid()
and cpu_mask_to_apicid_and() operations become straight.

Signed-off-by: Alexander Gordeev <agordeev@redhat.com>
Acked-by: Suresh Siddha <suresh.b.siddha@intel.com>
Cc: Yinghai Lu <yinghai@kernel.org>
Link: http://lkml.kernel.org/r/20120607131624.GG4759@dhcp-26-207.brq.redhat.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
arch/x86/include/asm/apic.h
arch/x86/kernel/apic/apic.c
arch/x86/kernel/apic/es7000_32.c
arch/x86/kernel/apic/summit_32.c
arch/x86/kernel/apic/x2apic_cluster.c
arch/x86/kernel/apic/x2apic_uv_x.c