linux/arch/x86/include/asm/cpu.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2#ifndef _ASM_X86_CPU_H
   3#define _ASM_X86_CPU_H
   4
   5#include <linux/device.h>
   6#include <linux/cpu.h>
   7#include <linux/topology.h>
   8#include <linux/nodemask.h>
   9#include <linux/percpu.h>
  10
  11#ifdef CONFIG_SMP
  12
  13extern void prefill_possible_map(void);
  14
  15#else /* CONFIG_SMP */
  16
  17static inline void prefill_possible_map(void) {}
  18
  19#define cpu_physical_id(cpu)                    boot_cpu_physical_apicid
  20#define cpu_acpi_id(cpu)                        0
  21#define safe_smp_processor_id()                 0
  22
  23#endif /* CONFIG_SMP */
  24
  25struct x86_cpu {
  26        struct cpu cpu;
  27};
  28
  29#ifdef CONFIG_HOTPLUG_CPU
  30extern int arch_register_cpu(int num);
  31extern void arch_unregister_cpu(int);
  32extern void start_cpu0(void);
  33#ifdef CONFIG_DEBUG_HOTPLUG_CPU0
  34extern int _debug_hotplug_cpu(int cpu, int action);
  35#endif
  36#endif
  37
  38int mwait_usable(const struct cpuinfo_x86 *);
  39
  40unsigned int x86_family(unsigned int sig);
  41unsigned int x86_model(unsigned int sig);
  42unsigned int x86_stepping(unsigned int sig);
  43#ifdef CONFIG_CPU_SUP_INTEL
  44extern void __init sld_setup(struct cpuinfo_x86 *c);
  45extern void switch_to_sld(unsigned long tifn);
  46extern bool handle_user_split_lock(struct pt_regs *regs, long error_code);
  47extern bool handle_guest_split_lock(unsigned long ip);
  48extern void handle_bus_lock(struct pt_regs *regs);
  49u8 get_this_hybrid_cpu_type(void);
  50#else
  51static inline void __init sld_setup(struct cpuinfo_x86 *c) {}
  52static inline void switch_to_sld(unsigned long tifn) {}
  53static inline bool handle_user_split_lock(struct pt_regs *regs, long error_code)
  54{
  55        return false;
  56}
  57
  58static inline bool handle_guest_split_lock(unsigned long ip)
  59{
  60        return false;
  61}
  62
  63static inline void handle_bus_lock(struct pt_regs *regs) {}
  64
  65static inline u8 get_this_hybrid_cpu_type(void)
  66{
  67        return 0;
  68}
  69#endif
  70#ifdef CONFIG_IA32_FEAT_CTL
  71void init_ia32_feat_ctl(struct cpuinfo_x86 *c);
  72#else
  73static inline void init_ia32_feat_ctl(struct cpuinfo_x86 *c) {}
  74#endif
  75#endif /* _ASM_X86_CPU_H */
  76