xref: /linux/arch/x86/include/asm/cpumask.h (revision f468cf53c5240bf5063d0c6fe620b5ae2de37801)
1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef _ASM_X86_CPUMASK_H
3 #define _ASM_X86_CPUMASK_H
4 #ifndef __ASSEMBLER__
5 
6 #include <linux/compiler.h>
7 #include <linux/cpumask.h>
8 
9 extern void setup_cpu_local_masks(void);
10 
11 /*
12  * NMI and MCE exceptions need cpu_is_offline() _really_ early,
13  * provide an arch_ special for them to avoid instrumentation.
14  */
15 #if NR_CPUS > 1
arch_cpu_online(int cpu)16 static __always_inline bool arch_cpu_online(int cpu)
17 {
18 	return arch_test_bit(cpu, cpumask_bits(cpu_online_mask));
19 }
20 
arch_cpumask_clear_cpu(int cpu,struct cpumask * dstp)21 static __always_inline void arch_cpumask_clear_cpu(int cpu, struct cpumask *dstp)
22 {
23 	arch_clear_bit(cpumask_check(cpu), cpumask_bits(dstp));
24 }
25 #else
arch_cpu_online(int cpu)26 static __always_inline bool arch_cpu_online(int cpu)
27 {
28 	return cpu == 0;
29 }
30 
arch_cpumask_clear_cpu(int cpu,struct cpumask * dstp)31 static __always_inline void arch_cpumask_clear_cpu(int cpu, struct cpumask *dstp)
32 {
33 	return;
34 }
35 #endif
36 
37 #define arch_cpu_is_offline(cpu)	unlikely(!arch_cpu_online(cpu))
38 
39 #endif /* __ASSEMBLER__ */
40 #endif /* _ASM_X86_CPUMASK_H */
41