diff options
-rw-r--r-- | kernel/sched.c | 3 | ||||
-rw-r--r-- | kernel/softirq.c | 3 | ||||
-rw-r--r-- | kernel/softlockup.c | 3 | ||||
-rw-r--r-- | kernel/workqueue.c | 2 |
4 files changed, 7 insertions, 4 deletions
diff --git a/kernel/sched.c b/kernel/sched.c index b4f4eb613537..013f1448006b 100644 --- a/kernel/sched.c +++ b/kernel/sched.c | |||
@@ -4680,7 +4680,8 @@ static int migration_call(struct notifier_block *nfb, unsigned long action, | |||
4680 | #ifdef CONFIG_HOTPLUG_CPU | 4680 | #ifdef CONFIG_HOTPLUG_CPU |
4681 | case CPU_UP_CANCELED: | 4681 | case CPU_UP_CANCELED: |
4682 | /* Unbind it from offline cpu so it can run. Fall thru. */ | 4682 | /* Unbind it from offline cpu so it can run. Fall thru. */ |
4683 | kthread_bind(cpu_rq(cpu)->migration_thread,smp_processor_id()); | 4683 | kthread_bind(cpu_rq(cpu)->migration_thread, |
4684 | any_online_cpu(cpu_online_map)); | ||
4684 | kthread_stop(cpu_rq(cpu)->migration_thread); | 4685 | kthread_stop(cpu_rq(cpu)->migration_thread); |
4685 | cpu_rq(cpu)->migration_thread = NULL; | 4686 | cpu_rq(cpu)->migration_thread = NULL; |
4686 | break; | 4687 | break; |
diff --git a/kernel/softirq.c b/kernel/softirq.c index f766b2fc48be..ad3295cdded5 100644 --- a/kernel/softirq.c +++ b/kernel/softirq.c | |||
@@ -470,7 +470,8 @@ static int __devinit cpu_callback(struct notifier_block *nfb, | |||
470 | #ifdef CONFIG_HOTPLUG_CPU | 470 | #ifdef CONFIG_HOTPLUG_CPU |
471 | case CPU_UP_CANCELED: | 471 | case CPU_UP_CANCELED: |
472 | /* Unbind so it can run. Fall thru. */ | 472 | /* Unbind so it can run. Fall thru. */ |
473 | kthread_bind(per_cpu(ksoftirqd, hotcpu), smp_processor_id()); | 473 | kthread_bind(per_cpu(ksoftirqd, hotcpu), |
474 | any_online_cpu(cpu_online_map)); | ||
474 | case CPU_DEAD: | 475 | case CPU_DEAD: |
475 | p = per_cpu(ksoftirqd, hotcpu); | 476 | p = per_cpu(ksoftirqd, hotcpu); |
476 | per_cpu(ksoftirqd, hotcpu) = NULL; | 477 | per_cpu(ksoftirqd, hotcpu) = NULL; |
diff --git a/kernel/softlockup.c b/kernel/softlockup.c index 75976209cea7..a2dcceb9437d 100644 --- a/kernel/softlockup.c +++ b/kernel/softlockup.c | |||
@@ -123,7 +123,8 @@ cpu_callback(struct notifier_block *nfb, unsigned long action, void *hcpu) | |||
123 | #ifdef CONFIG_HOTPLUG_CPU | 123 | #ifdef CONFIG_HOTPLUG_CPU |
124 | case CPU_UP_CANCELED: | 124 | case CPU_UP_CANCELED: |
125 | /* Unbind so it can run. Fall thru. */ | 125 | /* Unbind so it can run. Fall thru. */ |
126 | kthread_bind(per_cpu(watchdog_task, hotcpu), smp_processor_id()); | 126 | kthread_bind(per_cpu(watchdog_task, hotcpu), |
127 | any_online_cpu(cpu_online_map)); | ||
127 | case CPU_DEAD: | 128 | case CPU_DEAD: |
128 | p = per_cpu(watchdog_task, hotcpu); | 129 | p = per_cpu(watchdog_task, hotcpu); |
129 | per_cpu(watchdog_task, hotcpu) = NULL; | 130 | per_cpu(watchdog_task, hotcpu) = NULL; |
diff --git a/kernel/workqueue.c b/kernel/workqueue.c index 7cee222231bc..42df83d7fad2 100644 --- a/kernel/workqueue.c +++ b/kernel/workqueue.c | |||
@@ -524,7 +524,7 @@ static int __devinit workqueue_cpu_callback(struct notifier_block *nfb, | |||
524 | list_for_each_entry(wq, &workqueues, list) { | 524 | list_for_each_entry(wq, &workqueues, list) { |
525 | /* Unbind so it can run. */ | 525 | /* Unbind so it can run. */ |
526 | kthread_bind(per_cpu_ptr(wq->cpu_wq, hotcpu)->thread, | 526 | kthread_bind(per_cpu_ptr(wq->cpu_wq, hotcpu)->thread, |
527 | smp_processor_id()); | 527 | any_online_cpu(cpu_online_map)); |
528 | cleanup_workqueue_thread(wq, hotcpu); | 528 | cleanup_workqueue_thread(wq, hotcpu); |
529 | } | 529 | } |
530 | break; | 530 | break; |