Skip to content

Commit

Permalink
sched/mm: call finish_arch_post_lock_switch in idle_task_exit and use_mm
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Martin Schwidefsky committed Feb 21, 2014
1 parent 56f15e5 commit a53efe5
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 1 deletion.
4 changes: 3 additions & 1 deletion kernel/sched/core.c
Original file line number Diff line number Diff line change
Expand Up @@ -4692,8 +4692,10 @@ void idle_task_exit(void)

BUG_ON(cpu_online(smp_processor_id()));

if (mm != &init_mm)
if (mm != &init_mm) {
switch_mm(mm, &init_mm, current);
finish_arch_post_lock_switch();
}
mmdrop(mm);
}

Expand Down
3 changes: 3 additions & 0 deletions mm/mmu_context.c
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,9 @@ void use_mm(struct mm_struct *mm)
tsk->mm = mm;
switch_mm(active_mm, mm, tsk);
task_unlock(tsk);
#ifdef finish_arch_post_lock_switch
finish_arch_post_lock_switch();
#endif

if (active_mm != mm)
mmdrop(active_mm);
Expand Down

0 comments on commit a53efe5

Please sign in to comment.