xtensa: don't clear cpenable unconditionally on release
Clearing cpenable special register for a task without changing coprocessor owner for the coprocessors that were enabled will result in coprocessor context flush and immediate reload at the next attempt to access this coprocessor if it happens before the context switch. Avoid it by only clearing cpenable special register if coprocessor_release_all is called for the current task. Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
This commit is contained in:
parent
5dacbbef3d
commit
be38e4f2cc
|
@ -87,7 +87,8 @@ void coprocessor_release_all(struct thread_info *ti)
|
|||
}
|
||||
|
||||
ti->cpenable = cpenable;
|
||||
xtensa_set_sr(0, cpenable);
|
||||
if (ti == current_thread_info())
|
||||
xtensa_set_sr(0, cpenable);
|
||||
|
||||
preempt_enable();
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue