diff options
Diffstat (limited to 'kernel/softirq.c')
-rw-r--r-- | kernel/softirq.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/kernel/softirq.c b/kernel/softirq.c index 8b75008e2bd8..0b9886a00e74 100644 --- a/kernel/softirq.c +++ b/kernel/softirq.c | |||
@@ -593,6 +593,7 @@ static int __cpuinit cpu_callback(struct notifier_block *nfb, | |||
593 | 593 | ||
594 | switch (action) { | 594 | switch (action) { |
595 | case CPU_UP_PREPARE: | 595 | case CPU_UP_PREPARE: |
596 | case CPU_UP_PREPARE_FROZEN: | ||
596 | p = kthread_create(ksoftirqd, hcpu, "ksoftirqd/%d", hotcpu); | 597 | p = kthread_create(ksoftirqd, hcpu, "ksoftirqd/%d", hotcpu); |
597 | if (IS_ERR(p)) { | 598 | if (IS_ERR(p)) { |
598 | printk("ksoftirqd for %i failed\n", hotcpu); | 599 | printk("ksoftirqd for %i failed\n", hotcpu); |
@@ -602,16 +603,19 @@ static int __cpuinit cpu_callback(struct notifier_block *nfb, | |||
602 | per_cpu(ksoftirqd, hotcpu) = p; | 603 | per_cpu(ksoftirqd, hotcpu) = p; |
603 | break; | 604 | break; |
604 | case CPU_ONLINE: | 605 | case CPU_ONLINE: |
606 | case CPU_ONLINE_FROZEN: | ||
605 | wake_up_process(per_cpu(ksoftirqd, hotcpu)); | 607 | wake_up_process(per_cpu(ksoftirqd, hotcpu)); |
606 | break; | 608 | break; |
607 | #ifdef CONFIG_HOTPLUG_CPU | 609 | #ifdef CONFIG_HOTPLUG_CPU |
608 | case CPU_UP_CANCELED: | 610 | case CPU_UP_CANCELED: |
611 | case CPU_UP_CANCELED_FROZEN: | ||
609 | if (!per_cpu(ksoftirqd, hotcpu)) | 612 | if (!per_cpu(ksoftirqd, hotcpu)) |
610 | break; | 613 | break; |
611 | /* Unbind so it can run. Fall thru. */ | 614 | /* Unbind so it can run. Fall thru. */ |
612 | kthread_bind(per_cpu(ksoftirqd, hotcpu), | 615 | kthread_bind(per_cpu(ksoftirqd, hotcpu), |
613 | any_online_cpu(cpu_online_map)); | 616 | any_online_cpu(cpu_online_map)); |
614 | case CPU_DEAD: | 617 | case CPU_DEAD: |
618 | case CPU_DEAD_FROZEN: | ||
615 | p = per_cpu(ksoftirqd, hotcpu); | 619 | p = per_cpu(ksoftirqd, hotcpu); |
616 | per_cpu(ksoftirqd, hotcpu) = NULL; | 620 | per_cpu(ksoftirqd, hotcpu) = NULL; |
617 | kthread_stop(p); | 621 | kthread_stop(p); |