89 return (platform_info.
hi >> 1) & 3;
100 unsigned int power_unit;
101 unsigned int tdp, min_power, max_power, max_time;
102 u8 power_limit_1_val;
112 power_unit = 2 << ((msr.
lo & 0xf) - 1);
116 tdp = msr.
lo & 0x7fff;
117 min_power = (msr.
lo >> 16) & 0x7fff;
118 max_power = msr.
hi & 0x7fff;
119 max_time = (msr.
hi >> 16) & 0x7f;
126 if (min_power > 0 && tdp < min_power)
129 if (max_power > 0 && tdp > max_power)
153 limit.
lo = msr.
lo & 0xff;
167 msr.
lo &= ~(1 << 10);
230 msr.
lo &= ~(0xf << 24);
267 perf_ctl.
lo = (msr.
lo & 0xff) << 8;
271 perf_ctl.
lo = msr.
lo & 0xff00;
300 static const char *
const mode[] = {
"NOT ",
""};
317 aes = (cpu_feature_flag &
CPUID_AES) ? 1 : 0;
318 txt = (cpu_feature_flag &
CPUID_SMX) ? 1 : 0;
319 vt = (cpu_feature_flag &
CPUID_VMX) ? 1 : 0;
378 unsigned int num_threads;
379 unsigned int num_cores;
382 num_threads = (msr.
lo >> 0) & 0xffff;
383 num_cores = (msr.
lo >> 16) & 0xffff;
385 num_cores, num_threads);
static unsigned int cpuid_eax(unsigned int op)
#define printk(level,...)
void configure_dca_cap(void)
void set_aesni_lock(void)
void set_energy_perf_bias(u8 policy)
void enable_lapic_tpr(void)
void set_vmx_and_lock(void)
bool intel_ht_supported(void)
#define SPEEDSTEP_APIC_MAGIC
#define MSR_MISC_PWR_MGMT
#define MSR_PKG_POWER_SKU
#define MSR_TEMPERATURE_TARGET
#define MSR_TURBO_RATIO_LIMIT
#define MSR_TURBO_ACTIVATION_RATIO
#define MSR_PKG_POWER_LIMIT
#define PKG_POWER_LIMIT_TIME_SHIFT
#define PKG_POWER_LIMIT_TIME_MASK
#define PKG_POWER_LIMIT_MASK
#define PLATFORM_INFO_SET_TDP
#define MSR_CORE_THREAD_COUNT
#define MSR_PKG_POWER_SKU_UNIT
#define MSR_CONFIG_TDP_NOMINAL
#define PKG_POWER_LIMIT_EN
#define MSR_PKG_CST_CONFIG_CONTROL
void smm_relocation_handler(int cpu, uintptr_t curr_smbase, uintptr_t staggered_smbase)
void smm_initialize(void)
void smm_info(uintptr_t *perm_smbase, size_t *perm_smsize, size_t *smm_save_state_size)
int get_platform_id(void)
static char processor_name[49]
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)
uint32_t cpu_get_feature_flags_ecx(void)
uint32_t cpu_get_cpuid(void)
struct device * dev_find_lapic(unsigned int apic_id)
Given a Local APIC ID, find the device structure.
#define MSR_PLATFORM_INFO
static const void * microcode_patch
static __always_inline msr_t rdmsr(unsigned int index)
static void mca_clear_status(void)
#define IA32_PACKAGE_THERM_INTERRUPT
#define ENERGY_POLICY_NORMAL
static __always_inline void wrmsr(unsigned int index, msr_t msr)
#define IA32_THERM_INTERRUPT
void global_smi_enable(void)
Set the EOS bit and enable SMI generation from southbridge.
#define BIOS_INFO
BIOS_INFO - Expected events.
#define BIOS_DEBUG
BIOS_DEBUG - Verbose output.
void intel_microcode_load_unlocked(const void *microcode_patch)
const void * intel_microcode_find(void)
#define PP1_CURRENT_LIMIT_SNB
#define PP1_CURRENT_LIMIT_IVB
#define IVB_CONFIG_TDP_MIN_CPUID
#define MSR_PP1_CURRENT_CONFIG
#define PP0_CURRENT_LIMIT
#define MSR_PP0_CURRENT_CONFIG
static void get_microcode_info(const void **microcode, int *parallel)
static const u8 power_limit_time_sec_to_msr[]
void mp_init_cpus(struct bus *cpu_bus)
static void model_206ax_report(void)
static const struct cpu_driver driver __cpu_driver
static void configure_c_states(void)
static void set_max_ratio(void)
static void configure_misc(void)
void set_power_limits(u8 power_limit_1_time)
static void pre_mp_init(void)
unsigned int smbios_cpu_get_current_speed_mhz(void)
unsigned int smbios_cpu_get_max_speed_mhz(void)
static void per_cpu_smm_trigger(void)
static void configure_thermal_target(void)
unsigned int smbios_processor_external_clock(void)
int cpu_config_tdp_levels(void)
static const struct cpu_device_id cpu_table[]
static int get_cpu_count(void)
static const u8 power_limit_time_msr_to_sec[]
static struct device_operations cpu_dev_ops
static void model_206ax_init(struct device *cpu)
static void post_mp_init(void)
void fill_processor_name(char *processor_name)
struct device_operations * ops
void(* init)(struct device *dev)
DEVTREE_CONST void * chip_info
void(* pre_mp_init)(void)