20 #include <soc/pci_devs.h>
23 #include <soc/soc_util.h>
48 cpuid_regs =
cpuid(1);
49 if ((cpuid_regs.
edx & (1 << 7 | 1 << 14)) != (1 << 7 | 1 << 14))
55 msr.
lo = msr.
hi = 0xffffffff;
145 perf_ctl.
lo = (msr.
lo & 0xff) << 8;
149 perf_ctl.
lo = (msr.
lo & 0xff) << 8;
153 perf_ctl.
lo = msr.
lo & 0xff00;
158 ((perf_ctl.
lo >> 8) & 0xff) * CONFIG_CPU_BCLK_MHZ);
173 unsigned int num_phys = 0, num_virts = 0;
176 printk(
BIOS_SPEW,
"Detected %u cores and %u threads\n", num_phys, num_virts);
184 return num_virts * CONFIG_MAX_SOCKET;
192 if (
CONFIG(HAVE_SMI_HANDLER)) {
#define printk(level,...)
void set_aesni_lock(void)
void set_vmx_and_lock(void)
#define MSR_MISC_PWR_MGMT
#define MSR_TURBO_RATIO_LIMIT
#define MSR_TURBO_ACTIVATION_RATIO
int cpu_config_tdp_levels(void)
#define MSR_CONFIG_TDP_NOMINAL
void smm_relocation_handler(int cpu, uintptr_t curr_smbase, uintptr_t staggered_smbase)
enum cb_err mp_init_with_smm(struct bus *cpu_bus, const struct mp_ops *mp_ops)
void x86_mtrr_check(void)
void x86_setup_mtrrs_with_detect(void)
#define CPUID_COOPERLAKE_SP_A0
#define CPUID_COOPERLAKE_SP_A1
int cpu_read_topology(unsigned int *num_phys, unsigned int *num_virt)
const char * dev_path(const struct device *dev)
#define MSR_PLATFORM_INFO
#define FAST_STRINGS_ENABLE_BIT
static __always_inline msr_t rdmsr(unsigned int index)
static __always_inline void wrmsr(unsigned int index, msr_t msr)
#define SPEED_STEP_ENABLE_BIT
void global_smi_enable(void)
Set the EOS bit and enable SMI generation from southbridge.
int get_lockdown_config(void)
#define BIOS_DEBUG
BIOS_DEBUG - Verbose output.
#define BIOS_ERR
BIOS_ERR - System in incomplete state.
#define BIOS_SPEW
BIOS_SPEW - Excessively verbose output.
void intel_microcode_load_unlocked(const void *microcode_patch)
const void * intel_microcode_find(void)
void smm_southbridge_clear_state(void)
bool cpu_soc_is_in_untrusted_mode(void)
void get_microcode_info(const void **microcode, int *parallel)
static void pmc_lock_smi(void)
@ CHIPSET_LOCKDOWN_COREBOOT
static void get_smm_info(uintptr_t *perm_smbase, size_t *perm_smsize, size_t *smm_save_state_size)
#define IA32_MCG_CAP_CTL_P_MASK
static void set_max_turbo_freq(void)
static void each_cpu_init(struct device *cpu)
static void xeon_configure_mca(void)
static const struct cpu_driver driver __cpu_driver
static int get_thread_count(void)
static const config_t * chip_config
static const void * microcode_patch
static void pre_mp_init(void)
void cpx_init_cpus(struct device *dev)
static const struct cpu_device_id cpu_table[]
static struct device_operations cpu_dev_ops
static void post_mp_init(void)
#define TURBO_ACTIVATION_RATIO_LOCK
#define HWP_EPP_ENUM_ENABLE
#define LOCK_MISC_PWR_MGMT_MSR
void xeonsp_init_cpu_config(void)
struct device_operations * ops
void(* init)(struct device *dev)
DEVTREE_CONST struct bus * link_list
DEVTREE_CONST void * chip_info
void(* pre_mp_init)(void)
int get_turbo_state(void)