diff --git a/Documentation/admin-guide/pm/intel_idle.rst b/Documentation/admin-guide/pm/intel_idle.rst index 996e5bd83c42..d1a6251790b8 100644 --- a/Documentation/admin-guide/pm/intel_idle.rst +++ b/Documentation/admin-guide/pm/intel_idle.rst @@ -145,11 +145,13 @@ for the other idle state types (C2 and C3) the target residency value is 3 times the exit latency (again, that is because it reflects the target residency to exit latency ratio in the majority of cases for the processor models recognized by ``intel_idle``). The name of the idle state (to be returned by the ``name`` -idle state attribute in ``sysfs``) is either "Cx_LPI" (if it comes from ``_LPI`` -processing) or "Cx_ACPI", where x is the index of that idle state in the final -list (note that the minimum value of x is 1, because 0 is reserved for the -"polling" state), and its target residency is based on the exit latency value. -All of the idle states in the final list are enabled by default in this case. +idle state attribute in ``sysfs``) either is equal to the state name value that +comes from ``_LPI`` processing (with the possible fallback to "Cx_LPI" if the +state name is not provided) or it is "Cx_ACPI", where x is the index of that +idle state in the final list (note that the minimum value of x is 1, because 0 +is reserved for the "polling" state), and its target residency is based on the +exit latency value. All of the idle states in the final list are enabled by +default in this case. .. _intel-idle-initialization: diff --git a/drivers/idle/intel_idle.c b/drivers/idle/intel_idle.c index a045a384b949..9f5e1c47aba2 100644 --- a/drivers/idle/intel_idle.c +++ b/drivers/idle/intel_idle.c @@ -1903,8 +1903,13 @@ static void __init intel_idle_init_cstates_acpi_lpi(struct cpuidle_driver *drv) state = &drv->states[drv->state_count++]; - scnprintf(state->name, CPUIDLE_NAME_LEN, "C%d_LPI", index + 1); - strscpy(state->desc, lpi_state->desc); + if (strlen(lpi_state->desc) > 0) + strscpy(state->name, lpi_state->desc); + else + scnprintf(state->name, CPUIDLE_NAME_LEN, "C%d_LPI", index + 1); + + scnprintf(state->desc, CPUIDLE_DESC_LEN, "ACPI LPI MWAIT 0x%02llx", + lpi_state->address); state->exit_latency = lpi_state->wake_latency; state->target_residency = lpi_state->min_residency; state->flags = MWAIT2flg(lpi_state->address);