diff options
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/sched/core.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 4adcd237c545..3c4dec0594d6 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c | |||
| @@ -3469,6 +3469,21 @@ asmlinkage void __sched schedule(void) | |||
| 3469 | } | 3469 | } |
| 3470 | EXPORT_SYMBOL(schedule); | 3470 | EXPORT_SYMBOL(schedule); |
| 3471 | 3471 | ||
| 3472 | #ifdef CONFIG_RCU_USER_QS | ||
| 3473 | asmlinkage void __sched schedule_user(void) | ||
| 3474 | { | ||
| 3475 | /* | ||
| 3476 | * If we come here after a random call to set_need_resched(), | ||
| 3477 | * or we have been woken up remotely but the IPI has not yet arrived, | ||
| 3478 | * we haven't yet exited the RCU idle mode. Do it here manually until | ||
| 3479 | * we find a better solution. | ||
| 3480 | */ | ||
| 3481 | rcu_user_exit(); | ||
| 3482 | schedule(); | ||
| 3483 | rcu_user_enter(); | ||
| 3484 | } | ||
| 3485 | #endif | ||
| 3486 | |||
| 3472 | /** | 3487 | /** |
| 3473 | * schedule_preempt_disabled - called with preemption disabled | 3488 | * schedule_preempt_disabled - called with preemption disabled |
| 3474 | * | 3489 | * |
