|
@@ -22,11 +22,6 @@
|
|
|
#include <asm/i387.h>
|
|
|
#include <asm/debugreg.h>
|
|
|
|
|
|
-unsigned long idle_halt;
|
|
|
-EXPORT_SYMBOL(idle_halt);
|
|
|
-unsigned long idle_nomwait;
|
|
|
-EXPORT_SYMBOL(idle_nomwait);
|
|
|
-
|
|
|
struct kmem_cache *task_xstate_cachep;
|
|
|
EXPORT_SYMBOL_GPL(task_xstate_cachep);
|
|
|
|
|
@@ -328,7 +323,7 @@ long sys_execve(const char __user *name,
|
|
|
/*
|
|
|
* Idle related variables and functions
|
|
|
*/
|
|
|
-unsigned long boot_option_idle_override = 0;
|
|
|
+unsigned long boot_option_idle_override = IDLE_NO_OVERRIDE;
|
|
|
EXPORT_SYMBOL(boot_option_idle_override);
|
|
|
|
|
|
/*
|
|
@@ -499,7 +494,6 @@ static void poll_idle(void)
|
|
|
*
|
|
|
* idle=mwait overrides this decision and forces the usage of mwait.
|
|
|
*/
|
|
|
-static int __cpuinitdata force_mwait;
|
|
|
|
|
|
#define MWAIT_INFO 0x05
|
|
|
#define MWAIT_ECX_EXTENDED_INFO 0x01
|
|
@@ -509,7 +503,7 @@ static int __cpuinit mwait_usable(const struct cpuinfo_x86 *c)
|
|
|
{
|
|
|
u32 eax, ebx, ecx, edx;
|
|
|
|
|
|
- if (force_mwait)
|
|
|
+ if (boot_option_idle_override == IDLE_FORCE_MWAIT)
|
|
|
return 1;
|
|
|
|
|
|
if (c->cpuid_level < MWAIT_INFO)
|
|
@@ -629,9 +623,10 @@ static int __init idle_setup(char *str)
|
|
|
if (!strcmp(str, "poll")) {
|
|
|
printk("using polling idle threads.\n");
|
|
|
pm_idle = poll_idle;
|
|
|
- } else if (!strcmp(str, "mwait"))
|
|
|
- force_mwait = 1;
|
|
|
- else if (!strcmp(str, "halt")) {
|
|
|
+ boot_option_idle_override = IDLE_POLL;
|
|
|
+ } else if (!strcmp(str, "mwait")) {
|
|
|
+ boot_option_idle_override = IDLE_FORCE_MWAIT;
|
|
|
+ } else if (!strcmp(str, "halt")) {
|
|
|
/*
|
|
|
* When the boot option of idle=halt is added, halt is
|
|
|
* forced to be used for CPU idle. In such case CPU C2/C3
|
|
@@ -640,8 +635,7 @@ static int __init idle_setup(char *str)
|
|
|
* the boot_option_idle_override.
|
|
|
*/
|
|
|
pm_idle = default_idle;
|
|
|
- idle_halt = 1;
|
|
|
- return 0;
|
|
|
+ boot_option_idle_override = IDLE_HALT;
|
|
|
} else if (!strcmp(str, "nomwait")) {
|
|
|
/*
|
|
|
* If the boot option of "idle=nomwait" is added,
|
|
@@ -649,12 +643,10 @@ static int __init idle_setup(char *str)
|
|
|
* states. In such case it won't touch the variable
|
|
|
* of boot_option_idle_override.
|
|
|
*/
|
|
|
- idle_nomwait = 1;
|
|
|
- return 0;
|
|
|
+ boot_option_idle_override = IDLE_NOMWAIT;
|
|
|
} else
|
|
|
return -1;
|
|
|
|
|
|
- boot_option_idle_override = 1;
|
|
|
return 0;
|
|
|
}
|
|
|
early_param("idle", idle_setup);
|