OSDN Git Service

intel_idle: Fold intel_idle_probe() into intel_idle_init()
authorRafael J. Wysocki <rafael.j.wysocki@intel.com>
Fri, 10 Jan 2020 10:44:58 +0000 (11:44 +0100)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Wed, 22 Jan 2020 23:37:00 +0000 (00:37 +0100)
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 <rafael.j.wysocki@intel.com>
drivers/idle/intel_idle.c

index 33e353b..690309c 100644 (file)
@@ -1297,58 +1297,6 @@ static inline bool intel_idle_off_by_default(u32 mwait_hint) { return false; }
 #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(unsigned int cpu)
 
 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)