2020-01-10 11:00:41

by Rafael J. Wysocki

[permalink] [raw]
Subject: [PATCH 0/8] intel_idle: Assorted cleanups

Hi All,

The intel_idle driver can be cleaned up somewhat after the recent changes
made to it (present in linux-next at this time).

This series of patches goes in that direction and none of the patches in
it is expected to alter the functionality of the driver.

The series applies on top of linux-next from yesterday.

Thanks,
Rafael




2020-01-10 11:00:44

by Rafael J. Wysocki

[permalink] [raw]
Subject: [PATCH 2/8] intel_idle: Fold intel_idle_probe() into intel_idle_init()

From: Rafael J. Wysocki <[email protected]>

There is no particular reason why intel_idle_probe() needs to be
a separate function and folding it into intel_idle_init() causes
the code to be somewhat easier to follow, so do just that.

No intentional functional impact.

Signed-off-by: Rafael J. Wysocki <[email protected]>
---
drivers/idle/intel_idle.c | 97 +++++++++++++++++++---------------------------
1 file changed, 42 insertions(+), 55 deletions(-)

Index: linux-pm/drivers/idle/intel_idle.c
===================================================================
--- linux-pm.orig/drivers/idle/intel_idle.c
+++ linux-pm/drivers/idle/intel_idle.c
@@ -1297,58 +1297,6 @@ static inline bool intel_idle_off_by_def
#endif /* !CONFIG_ACPI_PROCESSOR_CSTATE */

/*
- * intel_idle_probe()
- */
-static int __init intel_idle_probe(void)
-{
- unsigned int eax, ebx, ecx;
- const struct x86_cpu_id *id;
-
- if (max_cstate == 0) {
- pr_debug("disabled\n");
- return -EPERM;
- }
-
- id = x86_match_cpu(intel_idle_ids);
- if (id) {
- if (!boot_cpu_has(X86_FEATURE_MWAIT)) {
- pr_debug("Please enable MWAIT in BIOS SETUP\n");
- return -ENODEV;
- }
- } else {
- id = x86_match_cpu(intel_mwait_ids);
- if (!id)
- return -ENODEV;
- }
-
- if (boot_cpu_data.cpuid_level < CPUID_MWAIT_LEAF)
- return -ENODEV;
-
- cpuid(CPUID_MWAIT_LEAF, &eax, &ebx, &ecx, &mwait_substates);
-
- if (!(ecx & CPUID5_ECX_EXTENSIONS_SUPPORTED) ||
- !(ecx & CPUID5_ECX_INTERRUPT_BREAK) ||
- !mwait_substates)
- return -ENODEV;
-
- pr_debug("MWAIT substates: 0x%x\n", mwait_substates);
-
- icpu = (const struct idle_cpu *)id->driver_data;
- if (icpu) {
- cpuidle_state_table = icpu->state_table;
- if (icpu->use_acpi)
- intel_idle_acpi_cst_extract();
- } else if (!intel_idle_acpi_cst_extract()) {
- return -ENODEV;
- }
-
- pr_debug("v" INTEL_IDLE_VERSION " model 0x%X\n",
- boot_cpu_data.x86_model);
-
- return 0;
-}
-
-/*
* intel_idle_cpuidle_devices_uninit()
* Unregisters the cpuidle devices.
*/
@@ -1632,15 +1580,54 @@ static int intel_idle_cpu_online(unsigne

static int __init intel_idle_init(void)
{
+ const struct x86_cpu_id *id;
+ unsigned int eax, ebx, ecx;
int retval;

/* Do not load intel_idle at all for now if idle= is passed */
if (boot_option_idle_override != IDLE_NO_OVERRIDE)
return -ENODEV;

- retval = intel_idle_probe();
- if (retval)
- return retval;
+ if (max_cstate == 0) {
+ pr_debug("disabled\n");
+ return -EPERM;
+ }
+
+ id = x86_match_cpu(intel_idle_ids);
+ if (id) {
+ if (!boot_cpu_has(X86_FEATURE_MWAIT)) {
+ pr_debug("Please enable MWAIT in BIOS SETUP\n");
+ return -ENODEV;
+ }
+ } else {
+ id = x86_match_cpu(intel_mwait_ids);
+ if (!id)
+ return -ENODEV;
+ }
+
+ if (boot_cpu_data.cpuid_level < CPUID_MWAIT_LEAF)
+ return -ENODEV;
+
+ cpuid(CPUID_MWAIT_LEAF, &eax, &ebx, &ecx, &mwait_substates);
+
+ if (!(ecx & CPUID5_ECX_EXTENSIONS_SUPPORTED) ||
+ !(ecx & CPUID5_ECX_INTERRUPT_BREAK) ||
+ !mwait_substates)
+ return -ENODEV;
+
+ pr_debug("MWAIT substates: 0x%x\n", mwait_substates);
+
+ icpu = (const struct idle_cpu *)id->driver_data;
+ if (icpu) {
+ cpuidle_state_table = icpu->state_table;
+ if (icpu->use_acpi)
+ intel_idle_acpi_cst_extract();
+ } else if (!intel_idle_acpi_cst_extract()) {
+ return -ENODEV;
+ }
+
+ pr_debug("v" INTEL_IDLE_VERSION " model 0x%X\n",
+ boot_cpu_data.x86_model);

intel_idle_cpuidle_devices = alloc_percpu(struct cpuidle_device);
if (intel_idle_cpuidle_devices == NULL)