diff options
author | Len Brown <len.brown@intel.com> | 2011-04-01 18:13:10 -0400 |
---|---|---|
committer | Len Brown <len.brown@intel.com> | 2011-08-03 19:06:36 -0400 |
commit | 62027aea23fcd14478abdddd3b74a4e0f5fb2984 (patch) | |
tree | 1aaa5c1872e296f3448ae6c126175ac9d998e3b4 /drivers/cpuidle/cpuidle.c | |
parent | 6dccf9c508d5d773859df1cc2dce75c5b19e35a0 (diff) |
cpuidle: create bootparam "cpuidle.off=1"
useful for disabling cpuidle to fall back
to architecture-default idle loop
cpuidle drivers and governors will fail to register.
on x86 they'll say so:
intel_idle: intel_idle yielding to (null)
ACPI: acpi_idle yielding to (null)
Signed-off-by: Len Brown <len.brown@intel.com>
Diffstat (limited to 'drivers/cpuidle/cpuidle.c')
-rw-r--r-- | drivers/cpuidle/cpuidle.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/cpuidle/cpuidle.c b/drivers/cpuidle/cpuidle.c index bf5092455a8f..faae2c357bab 100644 --- a/drivers/cpuidle/cpuidle.c +++ b/drivers/cpuidle/cpuidle.c | |||
@@ -28,6 +28,12 @@ LIST_HEAD(cpuidle_detected_devices); | |||
28 | static void (*pm_idle_old)(void); | 28 | static void (*pm_idle_old)(void); |
29 | 29 | ||
30 | static int enabled_devices; | 30 | static int enabled_devices; |
31 | static int off __read_mostly; | ||
32 | |||
33 | int cpuidle_disabled(void) | ||
34 | { | ||
35 | return off; | ||
36 | } | ||
31 | 37 | ||
32 | #if defined(CONFIG_ARCH_HAS_CPU_IDLE_WAIT) | 38 | #if defined(CONFIG_ARCH_HAS_CPU_IDLE_WAIT) |
33 | static void cpuidle_kick_cpus(void) | 39 | static void cpuidle_kick_cpus(void) |
@@ -427,6 +433,9 @@ static int __init cpuidle_init(void) | |||
427 | { | 433 | { |
428 | int ret; | 434 | int ret; |
429 | 435 | ||
436 | if (cpuidle_disabled()) | ||
437 | return -ENODEV; | ||
438 | |||
430 | pm_idle_old = pm_idle; | 439 | pm_idle_old = pm_idle; |
431 | 440 | ||
432 | ret = cpuidle_add_class_sysfs(&cpu_sysdev_class); | 441 | ret = cpuidle_add_class_sysfs(&cpu_sysdev_class); |
@@ -438,4 +447,5 @@ static int __init cpuidle_init(void) | |||
438 | return 0; | 447 | return 0; |
439 | } | 448 | } |
440 | 449 | ||
450 | module_param(off, int, 0444); | ||
441 | core_initcall(cpuidle_init); | 451 | core_initcall(cpuidle_init); |