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>
This commit is contained in:
Martin Schwidefsky 2012-10-26 17:17:44 +02:00
parent 56f15e518c
commit a53efe5ff8
2 changed files with 6 additions and 1 deletions

View File

@ -4692,8 +4692,10 @@ void idle_task_exit(void)
BUG_ON(cpu_online(smp_processor_id())); BUG_ON(cpu_online(smp_processor_id()));
if (mm != &init_mm) if (mm != &init_mm) {
switch_mm(mm, &init_mm, current); switch_mm(mm, &init_mm, current);
finish_arch_post_lock_switch();
}
mmdrop(mm); mmdrop(mm);
} }

View File

@ -31,6 +31,9 @@ void use_mm(struct mm_struct *mm)
tsk->mm = mm; tsk->mm = mm;
switch_mm(active_mm, mm, tsk); switch_mm(active_mm, mm, tsk);
task_unlock(tsk); task_unlock(tsk);
#ifdef finish_arch_post_lock_switch
finish_arch_post_lock_switch();
#endif
if (active_mm != mm) if (active_mm != mm)
mmdrop(active_mm); mmdrop(active_mm);