summaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/apic/apic.c
diff options
context:
space:
mode:
authorIngo Molnar <mingo@kernel.org>2012-06-18 11:09:49 +0200
committerIngo Molnar <mingo@kernel.org>2012-06-18 11:09:49 +0200
commit8461689c67fc2ad3040bc019cccb541bccb5648f (patch)
treeeafcf756975739ef04aa91be2e053d6e1e8b9ccb /arch/x86/kernel/apic/apic.c
parentd48daf37a3d2e2b28a61e615c0fc538301edb0dd (diff)
parent7eb9ae0799b1e9f0b77733b432bc5f6f055b020b (diff)
downloadlinux-8461689c67fc2ad3040bc019cccb541bccb5648f.tar.gz
linux-8461689c67fc2ad3040bc019cccb541bccb5648f.tar.bz2
linux-8461689c67fc2ad3040bc019cccb541bccb5648f.zip
Merge branch 'x86/apic' into x86/platform
Merge in x86/apic to solve a vector_allocation_domain() API change semantic merge conflict. Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'arch/x86/kernel/apic/apic.c')
-rw-r--r--arch/x86/kernel/apic/apic.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/arch/x86/kernel/apic/apic.c b/arch/x86/kernel/apic/apic.c
index 39a222e094af..c421512ca5eb 100644
--- a/arch/x86/kernel/apic/apic.c
+++ b/arch/x86/kernel/apic/apic.c
@@ -2123,6 +2123,25 @@ void default_init_apic_ldr(void)
apic_write(APIC_LDR, val);
}
+int default_cpu_mask_to_apicid_and(const struct cpumask *cpumask,
+ const struct cpumask *andmask,
+ unsigned int *apicid)
+{
+ unsigned int cpu;
+
+ for_each_cpu_and(cpu, cpumask, andmask) {
+ if (cpumask_test_cpu(cpu, cpu_online_mask))
+ break;
+ }
+
+ if (likely(cpu < nr_cpu_ids)) {
+ *apicid = per_cpu(x86_cpu_to_apicid, cpu);
+ return 0;
+ }
+
+ return -EINVAL;
+}
+
/*
* Power management
*/