mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-26 00:51:02 +07:00
Merge branch 'bugzilla-15064' into release
This commit is contained in:
commit
361243fd62
@ -305,6 +305,28 @@ static int acpi_processor_get_power_info_fadt(struct acpi_processor *pr)
|
||||
pr->power.states[ACPI_STATE_C2].latency = acpi_gbl_FADT.C2latency;
|
||||
pr->power.states[ACPI_STATE_C3].latency = acpi_gbl_FADT.C3latency;
|
||||
|
||||
/*
|
||||
* FADT specified C2 latency must be less than or equal to
|
||||
* 100 microseconds.
|
||||
*/
|
||||
if (acpi_gbl_FADT.C2latency > ACPI_PROCESSOR_MAX_C2_LATENCY) {
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_INFO,
|
||||
"C2 latency too large [%d]\n", acpi_gbl_FADT.C2latency));
|
||||
/* invalidate C2 */
|
||||
pr->power.states[ACPI_STATE_C2].address = 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* FADT supplied C3 latency must be less than or equal to
|
||||
* 1000 microseconds.
|
||||
*/
|
||||
if (acpi_gbl_FADT.C3latency > ACPI_PROCESSOR_MAX_C3_LATENCY) {
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_INFO,
|
||||
"C3 latency too large [%d]\n", acpi_gbl_FADT.C3latency));
|
||||
/* invalidate C3 */
|
||||
pr->power.states[ACPI_STATE_C3].address = 0;
|
||||
}
|
||||
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_INFO,
|
||||
"lvl2[0x%08x] lvl3[0x%08x]\n",
|
||||
pr->power.states[ACPI_STATE_C2].address,
|
||||
@ -494,33 +516,6 @@ static int acpi_processor_get_power_info_cst(struct acpi_processor *pr)
|
||||
return status;
|
||||
}
|
||||
|
||||
static void acpi_processor_power_verify_c2(struct acpi_processor_cx *cx)
|
||||
{
|
||||
|
||||
if (!cx->address)
|
||||
return;
|
||||
|
||||
/*
|
||||
* C2 latency must be less than or equal to 100
|
||||
* microseconds.
|
||||
*/
|
||||
else if (cx->latency > ACPI_PROCESSOR_MAX_C2_LATENCY) {
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_INFO,
|
||||
"latency too large [%d]\n", cx->latency));
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
* Otherwise we've met all of our C2 requirements.
|
||||
* Normalize the C2 latency to expidite policy
|
||||
*/
|
||||
cx->valid = 1;
|
||||
|
||||
cx->latency_ticks = cx->latency;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
static void acpi_processor_power_verify_c3(struct acpi_processor *pr,
|
||||
struct acpi_processor_cx *cx)
|
||||
{
|
||||
@ -531,16 +526,6 @@ static void acpi_processor_power_verify_c3(struct acpi_processor *pr,
|
||||
if (!cx->address)
|
||||
return;
|
||||
|
||||
/*
|
||||
* C3 latency must be less than or equal to 1000
|
||||
* microseconds.
|
||||
*/
|
||||
else if (cx->latency > ACPI_PROCESSOR_MAX_C3_LATENCY) {
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_INFO,
|
||||
"latency too large [%d]\n", cx->latency));
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
* PIIX4 Erratum #18: We don't support C3 when Type-F (fast)
|
||||
* DMA transfers are used by any ISA device to avoid livelock.
|
||||
@ -629,7 +614,10 @@ static int acpi_processor_power_verify(struct acpi_processor *pr)
|
||||
break;
|
||||
|
||||
case ACPI_STATE_C2:
|
||||
acpi_processor_power_verify_c2(cx);
|
||||
if (!cx->address)
|
||||
break;
|
||||
cx->valid = 1;
|
||||
cx->latency_ticks = cx->latency; /* Normalize latency */
|
||||
break;
|
||||
|
||||
case ACPI_STATE_C3:
|
||||
|
Loading…
Reference in New Issue
Block a user