From: Max Filippov Date: Tue, 27 Nov 2018 00:30:51 +0000 (-0800) Subject: xtensa: don't clear cpenable unconditionally on release X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=be38e4f2cc08d91515b86a4a8ea75ba902795873;p=linux.git 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 --- diff --git a/arch/xtensa/kernel/process.c b/arch/xtensa/kernel/process.c index be9e0c3df9d2d..27be75e88ed35 100644 --- a/arch/xtensa/kernel/process.c +++ b/arch/xtensa/kernel/process.c @@ -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(); }