diff options
Diffstat (limited to 'kernel/cpu.c')
| -rw-r--r-- | kernel/cpu.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/kernel/cpu.c b/kernel/cpu.c index 3046a503242c..b5e4ab2d427e 100644 --- a/kernel/cpu.c +++ b/kernel/cpu.c | |||
| @@ -224,11 +224,13 @@ void clear_tasks_mm_cpumask(int cpu) | |||
| 224 | static inline void check_for_tasks(int cpu) | 224 | static inline void check_for_tasks(int cpu) |
| 225 | { | 225 | { |
| 226 | struct task_struct *p; | 226 | struct task_struct *p; |
| 227 | cputime_t utime, stime; | ||
| 227 | 228 | ||
| 228 | write_lock_irq(&tasklist_lock); | 229 | write_lock_irq(&tasklist_lock); |
| 229 | for_each_process(p) { | 230 | for_each_process(p) { |
| 231 | task_cputime(p, &utime, &stime); | ||
| 230 | if (task_cpu(p) == cpu && p->state == TASK_RUNNING && | 232 | if (task_cpu(p) == cpu && p->state == TASK_RUNNING && |
| 231 | (p->utime || p->stime)) | 233 | (utime || stime)) |
| 232 | printk(KERN_WARNING "Task %s (pid = %d) is on cpu %d " | 234 | printk(KERN_WARNING "Task %s (pid = %d) is on cpu %d " |
| 233 | "(state = %ld, flags = %x)\n", | 235 | "(state = %ld, flags = %x)\n", |
| 234 | p->comm, task_pid_nr(p), cpu, | 236 | p->comm, task_pid_nr(p), cpu, |
| @@ -254,6 +256,8 @@ static int __ref take_cpu_down(void *_param) | |||
| 254 | return err; | 256 | return err; |
| 255 | 257 | ||
| 256 | cpu_notify(CPU_DYING | param->mod, param->hcpu); | 258 | cpu_notify(CPU_DYING | param->mod, param->hcpu); |
| 259 | /* Park the stopper thread */ | ||
| 260 | kthread_park(current); | ||
| 257 | return 0; | 261 | return 0; |
| 258 | } | 262 | } |
| 259 | 263 | ||
