21 #include <soc/iomap.h>
23 #include <soc/soc_util.h>
43 cpuid_regs =
cpuid(1);
44 if ((cpuid_regs.
edx & (1<<7 | 1<<14)) != (1<<7 | 1<<14))
50 msr.
lo = msr.
hi = 0xffffffff;
135 em64t100_smm_state_save_area_t *smm_state;
146 smm_state->smbase = staggered_smbase;
150 size_t *smm_save_state_size)
158 const uint32_t rmask = ~((1 << 12) - 1);
169 *perm_smbase = handler_base;
170 *perm_smsize = handler_size;
171 *smm_save_state_size =
sizeof(em64t100_smm_state_save_area_t);
176 unsigned int ecx = 0;
183 if ((leaf_b.
ecx >> 8 & 0xff) == 2)
184 return leaf_b.
ebx & 0xffff;
196 const u32 active_cores_mask = ~core_disable_mask & core_exists_mask;
199 const unsigned int active_cores =
popcnt(active_cores_mask);
200 const unsigned int total_cores =
popcnt(core_exists_mask);
203 active_cores, total_cores);
213 if (num_cpus == 0 || num_cpus > CONFIG_MAX_CPUS) {
229 perf_ctl.
lo = (msr.
lo & 0xff) << 8;
234 perf_ctl.
lo = (msr.
lo & 0xff) << 8;
239 perf_ctl.
lo = msr.
lo & 0xff00;
static struct cpuid_result cpuid_ext(int op, unsigned int ecx)
#define printk(level,...)
void set_aesni_lock(void)
#define MSR_TURBO_RATIO_LIMIT
int cpu_config_tdp_levels(void)
#define MSR_CONFIG_TDP_NOMINAL
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_DENVERTON_A0_A1
#define CPUID_DENVERTON_B0
static __always_inline void write_cr4(CRx_TYPE data)
static __always_inline CRx_TYPE read_cr4(void)
#define SMM_EM64T100_SAVE_STATE_OFFSET
#define MSR_PLATFORM_INFO
#define FAST_STRINGS_ENABLE_BIT
static __always_inline msr_t rdmsr(unsigned int index)
#define IA32_PACKAGE_THERM_INTERRUPT
static __always_inline void wrmsr(unsigned int index, msr_t msr)
#define SPEED_STEP_ENABLE_BIT
#define IA32_THERM_INTERRUPT
void global_smi_enable(void)
Set the EOS bit and enable SMI generation from southbridge.
void smm_region(uintptr_t *start, size_t *size)
#define BIOS_DEBUG
BIOS_DEBUG - Verbose output.
void enable_pm_timer_emulation(void)
void smm_southbridge_clear_state(void)
void mp_init_cpus(struct bus *cpu_bus)
bool cpu_soc_is_in_untrusted_mode(void)
#define ENABLE_IA_UNTRUSTED
static void set_max_turbo_freq(void)
static void relocation_handler(int cpu, uintptr_t curr_smbase, uintptr_t staggered_smbase)
static void denverton_core_init(struct device *cpu)
static unsigned int detect_num_cpus_via_cpuid(void)
static void configure_thermal_core(void)
static struct smm_relocation_attrs relo_attrs
static unsigned int detect_num_cpus_via_mch(void)
static const struct cpu_driver driver __cpu_driver
static void dnv_configure_mca(void)
static void pre_mp_init(void)
static void get_smm_info(uintptr_t *perm_smbase, size_t *perm_smsize, size_t *smm_save_state_size)
static const struct cpu_device_id cpu_table[]
static struct device_operations cpu_dev_ops
static void post_mp_init(void)
#define MCH_BAR_CORE_DISABLE_MASK
#define MCH_BAR_CORE_EXISTS_MASK
#define THERMAL_MONITOR_ENABLE_BIT
#define IA32_MCG_CAP_CTL_P_MASK
struct device_operations * ops
void(* init)(struct device *dev)
void(* pre_mp_init)(void)
int smm_subregion(int sub, uintptr_t *start, size_t *size)
int get_turbo_state(void)
#define IA32_SMRR_PHYS_MASK
#define IA32_SMRR_PHYS_BASE
#define MTRR_PHYS_MASK_VALID
typedef void(X86APIP X86EMU_intrFuncs)(int num)