linux/arch/xtensa
Max Filippov 2958b66694 xtensa: enable coprocessors that are being flushed
coprocessor_flush_all may be called from a context of a thread that is
different from the thread being flushed. In that case contents of the
cpenable special register may not match ti->cpenable of the target
thread, resulting in unhandled coprocessor exception in the kernel
context.
Set cpenable special register to the ti->cpenable of the target register
for the duration of the flush and restore it afterwards.
This fixes the following crash caused by coprocessor register inspection
in native gdb:

  (gdb) p/x $w0
  Illegal instruction in kernel: sig: 9 [#1] PREEMPT
  Call Trace:
    ___might_sleep+0x184/0x1a4
    __might_sleep+0x41/0xac
    exit_signals+0x14/0x218
    do_exit+0xc9/0x8b8
    die+0x99/0xa0
    do_illegal_instruction+0x18/0x6c
    common_exception+0x77/0x77
    coprocessor_flush+0x16/0x3c
    arch_ptrace+0x46c/0x674
    sys_ptrace+0x2ce/0x3b4
    system_call+0x54/0x80
    common_exception+0x77/0x77
  note: gdb[100] exited with preempt_count 1
  Killed

Cc: stable@vger.kernel.org
Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
2018-11-26 18:37:47 -08:00
..
boot xtensa: add NOTES section to the linker script 2018-10-29 19:02:08 -07:00
configs xtensa: drop unused {CONFIG,PLATFORM}_DEFAULT_MEM_SIZE 2018-08-20 12:27:52 -07:00
include Xtensa fixes for v4.20-rc3 2018-11-16 10:10:27 -06:00
kernel xtensa: enable coprocessors that are being flushed 2018-11-26 18:37:47 -08:00
lib xtensa: add support for KASAN 2017-12-16 22:37:12 -08:00
mm Xtensa fixes and cleanups for v4.20: 2018-11-01 14:32:43 -07:00
oprofile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
platforms memblock: stop using implicit alignment to SMP_CACHE_BYTES 2018-10-31 08:54:16 -07:00
variants xtensa: add test_kc705_be variant 2018-08-20 12:34:45 -07:00
Kconfig Xtensa fixes and cleanups for v4.20: 2018-11-01 14:32:43 -07:00
Kconfig.debug Kconfig: consolidate the "Kernel hacking" menu 2018-08-02 08:06:48 +09:00
Makefile Devicetree updates for 4.20: 2018-10-26 12:09:58 -07:00