diff options
author | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2012-10-26 11:17:44 -0400 |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2014-02-21 02:50:17 -0500 |
commit | a53efe5ff88d0283bae8a2c2fa066d0fff31dc91 (patch) | |
tree | 8b500f9df4ad79e7159ad08ec8231278166eb499 /kernel | |
parent | 56f15e518cfdc732bd4e4da90e0c9cf2fc4e7c1b (diff) |
sched/mm: call finish_arch_post_lock_switch in idle_task_exit and use_mm
The finish_arch_post_lock_switch is called at the end of the task
switch after all locks have been released. In concept it is paired
with the switch_mm function, but the current code only does the
call in finish_task_switch. Add the call to idle_task_exit and
use_mm. One use case for the additional calls is s390 which will
use finish_arch_post_lock_switch to wait for the completion of
TLB flush operations.
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/sched/core.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/kernel/sched/core.c b/kernel/sched/core.c index b46131ef6aab..4b0739c9558e 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c | |||
@@ -4692,8 +4692,10 @@ void idle_task_exit(void) | |||
4692 | 4692 | ||
4693 | BUG_ON(cpu_online(smp_processor_id())); | 4693 | BUG_ON(cpu_online(smp_processor_id())); |
4694 | 4694 | ||
4695 | if (mm != &init_mm) | 4695 | if (mm != &init_mm) { |
4696 | switch_mm(mm, &init_mm, current); | 4696 | switch_mm(mm, &init_mm, current); |
4697 | finish_arch_post_lock_switch(); | ||
4698 | } | ||
4697 | mmdrop(mm); | 4699 | mmdrop(mm); |
4698 | } | 4700 | } |
4699 | 4701 | ||