Line data Source code
1 : /* SPDX-License-Identifier: GPL-2.0 */ 2 : #ifndef _ASM_X86_CPUMASK_H 3 : #define _ASM_X86_CPUMASK_H 4 : #ifndef __ASSEMBLY__ 5 : #include <linux/cpumask.h> 6 : 7 : extern cpumask_var_t cpu_callin_mask; 8 : extern cpumask_var_t cpu_callout_mask; 9 : extern cpumask_var_t cpu_initialized_mask; 10 : extern cpumask_var_t cpu_sibling_setup_mask; 11 : 12 : extern void setup_cpu_local_masks(void); 13 : 14 : /* 15 : * NMI and MCE exceptions need cpu_is_offline() _really_ early, 16 : * provide an arch_ special for them to avoid instrumentation. 17 : */ 18 : #if NR_CPUS > 1 19 0 : static __always_inline bool arch_cpu_online(int cpu) 20 : { 21 0 : return arch_test_bit(cpu, cpumask_bits(cpu_online_mask)); 22 : } 23 : #else 24 : static __always_inline bool arch_cpu_online(int cpu) 25 : { 26 : return cpu == 0; 27 : } 28 : #endif 29 : 30 : #define arch_cpu_is_offline(cpu) unlikely(!arch_cpu_online(cpu)) 31 : 32 : #endif /* __ASSEMBLY__ */ 33 : #endif /* _ASM_X86_CPUMASK_H */