19 #include <soc/pattrs.h>
20 #include <soc/ramstage.h>
126 const u32 rmask = ~((1 << 12) - 1);
138 size_t *smm_save_state_size)
146 *smm_save_state_size =
sizeof(em64t100_smm_state_save_area_t);
164 if (msr_value.
hi == 0)
177 em64t100_smm_state_save_area_t *smm_state;
184 smm_state->smbase = staggered_smbase;
static struct sdram_info params
uint32_t iosf_bunit_read(int reg)
void iosf_bunit_write(int reg, uint32_t val)
static const struct pattrs * pattrs_get(void)
#define printk(level,...)
void set_vmx_and_lock(void)
bool intel_ht_supported(void)
#define MSR_PP1_POWER_LIMIT
#define MSR_PKG_POWER_LIMIT
#define MSR_PKG_CST_CONFIG_CONTROL
enum cb_err mp_init_with_smm(struct bus *cpu_bus, const struct mp_ops *mp_ops)
void smm_initiate_relocation(void)
void x86_mtrr_check(void)
void x86_setup_mtrrs_with_detect(void)
#define SMM_EM64T100_SAVE_STATE_OFFSET
static __always_inline msr_t rdmsr(unsigned int index)
#define IA32_BIOS_SIGN_ID
static __always_inline void wrmsr(unsigned int index, msr_t msr)
void global_smi_enable(void)
Set the EOS bit and enable SMI generation from southbridge.
void smm_region(uintptr_t *start, size_t *size)
static __always_inline unsigned int lapicid(void)
#define BIOS_DEBUG
BIOS_DEBUG - Verbose output.
void intel_microcode_load_unlocked(const void *microcode_patch)
void reg_script_run(const struct reg_script *script)
#define REG_MSR_WRITE(reg_, value_)
#define REG_MSR_OR(reg_, value_)
#define REG_MSR_RMW(reg_, mask_, value_)
struct smm_relocation_params smm_reloc_params
void smm_southbridge_clear_state(void)
void mp_init_cpus(struct bus *cpu_bus)
void soc_core_init(struct device *cpu)
void get_microcode_info(const void **microcode, int *parallel)
#define MSR_PKG_TURBO_CFG1
#define MSR_CPU_THERM_SENS_CFG
#define MSR_CPU_THERM_CFG2
#define MSR_CPU_TURBO_WKLD_CFG1
#define MSR_CPU_THERM_CFG1
#define ENABLE_ULFM_AUTOCM_MASK
#define MSR_CPU_TURBO_WKLD_CFG2
#define ENABLE_INDP_AUTOCM_MASK
static void relocation_handler(int cpu, uintptr_t curr_smbase, uintptr_t staggered_smbase)
static const struct reg_script core_msr_script[]
static const struct reg_script package_msr_script[]
static const struct cpu_driver driver __cpu_driver
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 void per_cpu_smm_trigger(void)
static const struct cpu_device_id cpu_table[]
static struct device_operations cpu_dev_ops
static void fill_in_relocation_params(struct smm_relocation_params *params)
static void post_mp_init(void)
struct device_operations * ops
void(* init)(struct device *dev)
void(* pre_mp_init)(void)
const void * microcode_patch
int smm_subregion(int sub, uintptr_t *start, size_t *size)
#define IA32_SMRR_PHYS_MASK
#define IA32_SMRR_PHYS_BASE
#define MTRR_PHYS_MASK_VALID