diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2009-06-20 13:51:44 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-06-20 13:51:44 -0400 |
| commit | 38df92b8cee936334f686c06df0e5fbb92e252df (patch) | |
| tree | ffdfd4e5e746300f38a1267b207b293710b3c9a9 | |
| parent | c4c5ab3089c8a794eb0bdaa9794d0f055dd82412 (diff) | |
| parent | f2e21c9610991e95621a81407cdbab881226419b (diff) | |
Merge branch 'timers-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
* 'timers-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
NOHZ: Properly feed cpufreq ondemand governor
| -rw-r--r-- | kernel/time/tick-sched.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c index 2aff39c6f10c..e0f59a21c061 100644 --- a/kernel/time/tick-sched.c +++ b/kernel/time/tick-sched.c | |||
| @@ -222,6 +222,15 @@ void tick_nohz_stop_sched_tick(int inidle) | |||
| 222 | 222 | ||
| 223 | cpu = smp_processor_id(); | 223 | cpu = smp_processor_id(); |
| 224 | ts = &per_cpu(tick_cpu_sched, cpu); | 224 | ts = &per_cpu(tick_cpu_sched, cpu); |
| 225 | |||
| 226 | /* | ||
| 227 | * Call to tick_nohz_start_idle stops the last_update_time from being | ||
| 228 | * updated. Thus, it must not be called in the event we are called from | ||
| 229 | * irq_exit() with the prior state different than idle. | ||
| 230 | */ | ||
| 231 | if (!inidle && !ts->inidle) | ||
| 232 | goto end; | ||
| 233 | |||
| 225 | now = tick_nohz_start_idle(ts); | 234 | now = tick_nohz_start_idle(ts); |
| 226 | 235 | ||
| 227 | /* | 236 | /* |
| @@ -239,9 +248,6 @@ void tick_nohz_stop_sched_tick(int inidle) | |||
| 239 | if (unlikely(ts->nohz_mode == NOHZ_MODE_INACTIVE)) | 248 | if (unlikely(ts->nohz_mode == NOHZ_MODE_INACTIVE)) |
| 240 | goto end; | 249 | goto end; |
| 241 | 250 | ||
| 242 | if (!inidle && !ts->inidle) | ||
| 243 | goto end; | ||
| 244 | |||
| 245 | ts->inidle = 1; | 251 | ts->inidle = 1; |
| 246 | 252 | ||
| 247 | if (need_resched()) | 253 | if (need_resched()) |
