| .. | .. |
|---|
| 11 | 11 | |
|---|
| 12 | 12 | extern void setup_cpu_local_masks(void); |
|---|
| 13 | 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 | +static __always_inline bool arch_cpu_online(int cpu) |
|---|
| 20 | +{ |
|---|
| 21 | + 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 | + |
|---|
| 14 | 32 | #endif /* __ASSEMBLY__ */ |
|---|
| 15 | 33 | #endif /* _ASM_X86_CPUMASK_H */ |
|---|