cpu/intel/speedstep: Refactor P-state coordination
Change-Id: I12462f271821d3d8fe3324d84a65c2341729591e Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/74398 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Paul Menzel <paulepanter@mailbox.org> Reviewed-by: Arthur Heymans <arthur@aheymans.xyz>
This commit is contained in:
parent
8e6146049f
commit
199ccf81dd
|
@ -60,6 +60,16 @@ static void gen_pstate_entries(const sst_table_t *const pstates,
|
||||||
acpigen_write_PPC(0);
|
acpigen_write_PPC(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static uint8_t get_p_state_coordination(void)
|
||||||
|
{
|
||||||
|
/* For Penryn use HW_ALL. */
|
||||||
|
if (((cpuid_eax(1) >> 4) & 0xffff) == 0x1067)
|
||||||
|
return HW_ALL;
|
||||||
|
|
||||||
|
/* Use SW_ANY as that was the default. */
|
||||||
|
return SW_ANY;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Generate ACPI entries for Speedstep for each cpu
|
* @brief Generate ACPI entries for Speedstep for each cpu
|
||||||
*/
|
*/
|
||||||
|
@ -71,22 +81,17 @@ void generate_cpu_entries(const struct device *device)
|
||||||
int numcpus = totalcores/cores_per_package; /* This assumes that all
|
int numcpus = totalcores/cores_per_package; /* This assumes that all
|
||||||
CPUs share the same
|
CPUs share the same
|
||||||
layout. */
|
layout. */
|
||||||
|
|
||||||
int num_cstates;
|
int num_cstates;
|
||||||
const acpi_cstate_t *cstates;
|
const acpi_cstate_t *cstates;
|
||||||
sst_table_t pstates;
|
sst_table_t pstates;
|
||||||
uint8_t coordination;
|
uint8_t coordination = get_p_state_coordination();
|
||||||
|
|
||||||
printk(BIOS_DEBUG, "Found %d CPU(s) with %d core(s) each.\n",
|
printk(BIOS_DEBUG, "Found %d CPU(s) with %d core(s) each.\n",
|
||||||
numcpus, cores_per_package);
|
numcpus, cores_per_package);
|
||||||
|
|
||||||
num_cstates = get_cst_entries(&cstates);
|
num_cstates = get_cst_entries(&cstates);
|
||||||
speedstep_gen_pstates(&pstates);
|
speedstep_gen_pstates(&pstates);
|
||||||
if (((cpuid_eax(1) >> 4) & 0xffff) == 0x1067)
|
|
||||||
/* For Penryn use HW_ALL. */
|
|
||||||
coordination = HW_ALL;
|
|
||||||
else
|
|
||||||
/* Use SW_ANY as that was the default. */
|
|
||||||
coordination = SW_ANY;
|
|
||||||
|
|
||||||
for (cpuID = 0; cpuID < numcpus; ++cpuID) {
|
for (cpuID = 0; cpuID < numcpus; ++cpuID) {
|
||||||
for (coreID = 1; coreID <= cores_per_package; coreID++) {
|
for (coreID = 1; coreID <= cores_per_package; coreID++) {
|
||||||
|
|
Loading…
Reference in New Issue