xref: /openbmc/linux/arch/x86/include/asm/cpumask.h (revision 14d3b376)
1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */
206879033SJaswinder Singh Rajput #ifndef _ASM_X86_CPUMASK_H
306879033SJaswinder Singh Rajput #define _ASM_X86_CPUMASK_H
406879033SJaswinder Singh Rajput #ifndef __ASSEMBLY__
506879033SJaswinder Singh Rajput #include <linux/cpumask.h>
606879033SJaswinder Singh Rajput 
706879033SJaswinder Singh Rajput extern cpumask_var_t cpu_callin_mask;
8fb8fd077SJaswinder Singh Rajput extern cpumask_var_t cpu_callout_mask;
9493f6ca5SJaswinder Singh Rajput extern cpumask_var_t cpu_initialized_mask;
1052811d8cSJaswinder Singh Rajput extern cpumask_var_t cpu_sibling_setup_mask;
1106879033SJaswinder Singh Rajput 
122f2f52baSBrian Gerst extern void setup_cpu_local_masks(void);
132f2f52baSBrian Gerst 
1414d3b376SPeter Zijlstra /*
1514d3b376SPeter Zijlstra  * NMI and MCE exceptions need cpu_is_offline() _really_ early,
1614d3b376SPeter Zijlstra  * provide an arch_ special for them to avoid instrumentation.
1714d3b376SPeter Zijlstra  */
1814d3b376SPeter Zijlstra #if NR_CPUS > 1
1914d3b376SPeter Zijlstra static __always_inline bool arch_cpu_online(int cpu)
2014d3b376SPeter Zijlstra {
2114d3b376SPeter Zijlstra 	return arch_test_bit(cpu, cpumask_bits(cpu_online_mask));
2214d3b376SPeter Zijlstra }
2314d3b376SPeter Zijlstra #else
2414d3b376SPeter Zijlstra static __always_inline bool arch_cpu_online(int cpu)
2514d3b376SPeter Zijlstra {
2614d3b376SPeter Zijlstra 	return cpu == 0;
2714d3b376SPeter Zijlstra }
2814d3b376SPeter Zijlstra #endif
2914d3b376SPeter Zijlstra 
3014d3b376SPeter Zijlstra #define arch_cpu_is_offline(cpu)	unlikely(!arch_cpu_online(cpu))
3114d3b376SPeter Zijlstra 
3206879033SJaswinder Singh Rajput #endif /* __ASSEMBLY__ */
3306879033SJaswinder Singh Rajput #endif /* _ASM_X86_CPUMASK_H */
34