diff options
| author | Trond Myklebust <trond.myklebust@primarydata.com> | 2016-07-24 12:51:10 -0400 | 
|---|---|---|
| committer | Trond Myklebust <trond.myklebust@primarydata.com> | 2016-07-24 12:51:10 -0400 | 
| commit | dc05973b288a5226bb7e56afd6c2fa07560a907c (patch) | |
| tree | 2e1eade8b6010ff4c844341fdeec9ee966d75ac7 /kernel/sched/core.c | |
| parent | 297fae4d0bee5d683533f3324baf1b363e7b48bf (diff) | |
| parent | e7bdea7750eb2a64aea4a08fa5c0a31719c8155d (diff) | |
Merge commit 'e7bdea7750eb'
Needed in order to work on top of pNFS changes in Linus' upstream kernel.
Diffstat (limited to 'kernel/sched/core.c')
| -rw-r--r-- | kernel/sched/core.c | 13 | 
1 files changed, 8 insertions, 5 deletions
diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 017d5394f5dc..51d7105f529a 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -1536,7 +1536,9 @@ static int select_fallback_rq(int cpu, struct task_struct *p)  	for (;;) {  		/* Any allowed, online CPU? */  		for_each_cpu(dest_cpu, tsk_cpus_allowed(p)) { -			if (!cpu_active(dest_cpu)) +			if (!(p->flags & PF_KTHREAD) && !cpu_active(dest_cpu)) +				continue; +			if (!cpu_online(dest_cpu))  				continue;  			goto out;  		} @@ -2535,10 +2537,9 @@ void wake_up_new_task(struct task_struct *p)  	 */  	set_task_cpu(p, select_task_rq(p, task_cpu(p), SD_BALANCE_FORK, 0));  #endif -	/* Post initialize new task's util average when its cfs_rq is set */ +	rq = __task_rq_lock(p, &rf);  	post_init_entity_util_avg(&p->se); -	rq = __task_rq_lock(p, &rf);  	activate_task(rq, p, 0);  	p->on_rq = TASK_ON_RQ_QUEUED;  	trace_sched_wakeup_new(p); @@ -5148,14 +5149,16 @@ void show_state_filter(unsigned long state_filter)  		/*  		 * reset the NMI-timeout, listing all files on a slow  		 * console might take a lot of time: +		 * Also, reset softlockup watchdogs on all CPUs, because +		 * another CPU might be blocked waiting for us to process +		 * an IPI.  		 */  		touch_nmi_watchdog(); +		touch_all_softlockup_watchdogs();  		if (!state_filter || (p->state & state_filter))  			sched_show_task(p);  	} -	touch_all_softlockup_watchdogs(); -  #ifdef CONFIG_SCHED_DEBUG  	if (!state_filter)  		sysrq_sched_debug_show();  | 
