diff options
Diffstat (limited to 'arch/x86/kernel/apm_32.c')
| -rw-r--r-- | arch/x86/kernel/apm_32.c | 11 | 
1 files changed, 6 insertions, 5 deletions
diff --git a/arch/x86/kernel/apm_32.c b/arch/x86/kernel/apm_32.c index d65464e4350..8d7012b7f40 100644 --- a/arch/x86/kernel/apm_32.c +++ b/arch/x86/kernel/apm_32.c @@ -899,6 +899,7 @@ static void apm_cpu_idle(void)  	static int use_apm_idle; /* = 0 */  	static unsigned int last_jiffies; /* = 0 */  	static unsigned int last_stime; /* = 0 */ +	cputime_t stime;  	int apm_idle_done = 0;  	unsigned int jiffies_since_last_check = jiffies - last_jiffies; @@ -906,23 +907,23 @@ static void apm_cpu_idle(void)  	WARN_ONCE(1, "deprecated apm_cpu_idle will be deleted in 2012");  recalc: +	task_cputime(current, NULL, &stime);  	if (jiffies_since_last_check > IDLE_CALC_LIMIT) {  		use_apm_idle = 0; -		last_jiffies = jiffies; -		last_stime = current->stime;  	} else if (jiffies_since_last_check > idle_period) {  		unsigned int idle_percentage; -		idle_percentage = current->stime - last_stime; +		idle_percentage = stime - last_stime;  		idle_percentage *= 100;  		idle_percentage /= jiffies_since_last_check;  		use_apm_idle = (idle_percentage > idle_threshold);  		if (apm_info.forbid_idle)  			use_apm_idle = 0; -		last_jiffies = jiffies; -		last_stime = current->stime;  	} +	last_jiffies = jiffies; +	last_stime = stime; +  	bucket = IDLE_LEAKY_MAX;  	while (!need_resched()) {  |