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