Commit | Line | Data |
---|---|---|
b2441318 | 1 | /* SPDX-License-Identifier: GPL-2.0 */ |
1965aae3 PA |
2 | #ifndef _ASM_X86_CPU_H |
3 | #define _ASM_X86_CPU_H | |
1da177e4 LT |
4 | |
5 | #include <linux/device.h> | |
6 | #include <linux/cpu.h> | |
7 | #include <linux/topology.h> | |
8 | #include <linux/nodemask.h> | |
f3705136 | 9 | #include <linux/percpu.h> |
1da177e4 | 10 | |
6e5385d4 JSR |
11 | #ifdef CONFIG_SMP |
12 | ||
13 | extern void prefill_possible_map(void); | |
14 | ||
15 | #else /* CONFIG_SMP */ | |
16 | ||
17 | static inline void prefill_possible_map(void) {} | |
18 | ||
af8968ab | 19 | #define cpu_physical_id(cpu) boot_cpu_physical_apicid |
3e9e57fa | 20 | #define cpu_acpi_id(cpu) 0 |
96b89dc6 | 21 | #define safe_smp_processor_id() 0 |
f472cdba | 22 | |
6e5385d4 JSR |
23 | #endif /* CONFIG_SMP */ |
24 | ||
30964d54 | 25 | struct x86_cpu { |
1da177e4 LT |
26 | struct cpu cpu; |
27 | }; | |
d9874026 | 28 | |
1da177e4 | 29 | #ifdef CONFIG_HOTPLUG_CPU |
d9874026 | 30 | extern int arch_register_cpu(int num); |
1da177e4 | 31 | extern void arch_unregister_cpu(int); |
148f9bb8 | 32 | extern void start_cpu0(void); |
a71c8bc5 FY |
33 | #ifdef CONFIG_DEBUG_HOTPLUG_CPU0 |
34 | extern int _debug_hotplug_cpu(int cpu, int action); | |
35 | #endif | |
1da177e4 LT |
36 | #endif |
37 | ||
1c9d16e3 | 38 | int mwait_usable(const struct cpuinfo_x86 *); |
6d652ea1 | 39 | |
99f925ce BP |
40 | unsigned int x86_family(unsigned int sig); |
41 | unsigned int x86_model(unsigned int sig); | |
42 | unsigned int x86_stepping(unsigned int sig); | |
6650cdd9 PZI |
43 | #ifdef CONFIG_CPU_SUP_INTEL |
44 | extern void __init cpu_set_core_cap_bits(struct cpuinfo_x86 *c); | |
45 | extern void switch_to_sld(unsigned long tifn); | |
46 | extern bool handle_user_split_lock(struct pt_regs *regs, long error_code); | |
d7e94dbd | 47 | extern bool handle_guest_split_lock(unsigned long ip); |
6650cdd9 PZI |
48 | #else |
49 | static inline void __init cpu_set_core_cap_bits(struct cpuinfo_x86 *c) {} | |
50 | static inline void switch_to_sld(unsigned long tifn) {} | |
51 | static inline bool handle_user_split_lock(struct pt_regs *regs, long error_code) | |
52 | { | |
53 | return false; | |
54 | } | |
d7e94dbd TG |
55 | |
56 | static inline bool handle_guest_split_lock(unsigned long ip) | |
57 | { | |
58 | return false; | |
59 | } | |
6650cdd9 | 60 | #endif |
5d510359 SC |
61 | #ifdef CONFIG_IA32_FEAT_CTL |
62 | void init_ia32_feat_ctl(struct cpuinfo_x86 *c); | |
63 | #else | |
64 | static inline void init_ia32_feat_ctl(struct cpuinfo_x86 *c) {} | |
65 | #endif | |
1965aae3 | 66 | #endif /* _ASM_X86_CPU_H */ |