From ab9b6f442893cc3960e90050ad3a9af33e978bdc Mon Sep 17 00:00:00 2001 From: Frederic Weisbecker Date: Wed, 11 Jul 2012 20:26:37 +0200 Subject: [PATCH] --- yaml --- r: 323594 b: refs/heads/master c: 20ab65e33f469c35f3dabde3445b668aa9c943ee h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/kernel/sched/core.c | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 2230f2b4ad29..78b31dfd49ad 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 90a340ed53f0f3bcc3fdf1b2cff56c0e4e911d01 +refs/heads/master: 20ab65e33f469c35f3dabde3445b668aa9c943ee diff --git a/trunk/kernel/sched/core.c b/trunk/kernel/sched/core.c index 4adcd237c545..3c4dec0594d6 100644 --- a/trunk/kernel/sched/core.c +++ b/trunk/kernel/sched/core.c @@ -3469,6 +3469,21 @@ asmlinkage void __sched schedule(void) } EXPORT_SYMBOL(schedule); +#ifdef CONFIG_RCU_USER_QS +asmlinkage void __sched schedule_user(void) +{ + /* + * If we come here after a random call to set_need_resched(), + * or we have been woken up remotely but the IPI has not yet arrived, + * we haven't yet exited the RCU idle mode. Do it here manually until + * we find a better solution. + */ + rcu_user_exit(); + schedule(); + rcu_user_enter(); +} +#endif + /** * schedule_preempt_disabled - called with preemption disabled *