diff options
Diffstat (limited to 'kernel/softirq.c')
| -rw-r--r-- | kernel/softirq.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/kernel/softirq.c b/kernel/softirq.c index 73217a9e2875..0f546ddea43d 100644 --- a/kernel/softirq.c +++ b/kernel/softirq.c | |||
| @@ -14,6 +14,7 @@ | |||
| 14 | #include <linux/notifier.h> | 14 | #include <linux/notifier.h> |
| 15 | #include <linux/percpu.h> | 15 | #include <linux/percpu.h> |
| 16 | #include <linux/cpu.h> | 16 | #include <linux/cpu.h> |
| 17 | #include <linux/freezer.h> | ||
| 17 | #include <linux/kthread.h> | 18 | #include <linux/kthread.h> |
| 18 | #include <linux/rcupdate.h> | 19 | #include <linux/rcupdate.h> |
| 19 | #include <linux/smp.h> | 20 | #include <linux/smp.h> |
| @@ -488,8 +489,6 @@ void __init softirq_init(void) | |||
| 488 | 489 | ||
| 489 | static int ksoftirqd(void * __bind_cpu) | 490 | static int ksoftirqd(void * __bind_cpu) |
| 490 | { | 491 | { |
| 491 | current->flags |= PF_NOFREEZE; | ||
| 492 | |||
| 493 | set_current_state(TASK_INTERRUPTIBLE); | 492 | set_current_state(TASK_INTERRUPTIBLE); |
| 494 | 493 | ||
| 495 | while (!kthread_should_stop()) { | 494 | while (!kthread_should_stop()) { |
| @@ -614,12 +613,16 @@ static int __cpuinit cpu_callback(struct notifier_block *nfb, | |||
| 614 | kthread_bind(per_cpu(ksoftirqd, hotcpu), | 613 | kthread_bind(per_cpu(ksoftirqd, hotcpu), |
| 615 | any_online_cpu(cpu_online_map)); | 614 | any_online_cpu(cpu_online_map)); |
| 616 | case CPU_DEAD: | 615 | case CPU_DEAD: |
| 617 | case CPU_DEAD_FROZEN: | 616 | case CPU_DEAD_FROZEN: { |
| 617 | struct sched_param param = { .sched_priority = MAX_RT_PRIO-1 }; | ||
| 618 | |||
| 618 | p = per_cpu(ksoftirqd, hotcpu); | 619 | p = per_cpu(ksoftirqd, hotcpu); |
| 619 | per_cpu(ksoftirqd, hotcpu) = NULL; | 620 | per_cpu(ksoftirqd, hotcpu) = NULL; |
| 621 | sched_setscheduler(p, SCHED_FIFO, ¶m); | ||
| 620 | kthread_stop(p); | 622 | kthread_stop(p); |
| 621 | takeover_tasklets(hotcpu); | 623 | takeover_tasklets(hotcpu); |
| 622 | break; | 624 | break; |
| 625 | } | ||
| 623 | #endif /* CONFIG_HOTPLUG_CPU */ | 626 | #endif /* CONFIG_HOTPLUG_CPU */ |
| 624 | } | 627 | } |
| 625 | return NOTIFY_OK; | 628 | return NOTIFY_OK; |
