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 8b75008e2bd..0b9886a00e7 100644 --- a/kernel/softirq.c +++ b/kernel/softirq.c @@ -593,6 +593,7 @@ static int __cpuinit cpu_callback(struct notifier_block *nfb,  	switch (action) {  	case CPU_UP_PREPARE: +	case CPU_UP_PREPARE_FROZEN:  		p = kthread_create(ksoftirqd, hcpu, "ksoftirqd/%d", hotcpu);  		if (IS_ERR(p)) {  			printk("ksoftirqd for %i failed\n", hotcpu); @@ -602,16 +603,19 @@ static int __cpuinit cpu_callback(struct notifier_block *nfb,    		per_cpu(ksoftirqd, hotcpu) = p;   		break;  	case CPU_ONLINE: +	case CPU_ONLINE_FROZEN:  		wake_up_process(per_cpu(ksoftirqd, hotcpu));  		break;  #ifdef CONFIG_HOTPLUG_CPU  	case CPU_UP_CANCELED: +	case CPU_UP_CANCELED_FROZEN:  		if (!per_cpu(ksoftirqd, hotcpu))  			break;  		/* Unbind so it can run.  Fall thru. */  		kthread_bind(per_cpu(ksoftirqd, hotcpu),  			     any_online_cpu(cpu_online_map));  	case CPU_DEAD: +	case CPU_DEAD_FROZEN:  		p = per_cpu(ksoftirqd, hotcpu);  		per_cpu(ksoftirqd, hotcpu) = NULL;  		kthread_stop(p);  |