From: Max Filippov Date: Fri, 4 Jan 2019 02:26:16 +0000 (-0800) Subject: xtensa: handle coprocessor exceptions in kernel mode X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=0b549f813387231e0053c10dd7006e69ad4c5f95;p=linux.git xtensa: handle coprocessor exceptions in kernel mode In order to let drivers use xtensa coprocessors on behalf of the calling process the kernel must handle coprocessor exceptions from the kernel mode the same way as from the user mode. This is not sufficient to allow using coprocessors transparently in IRQ or softirq context. Should such users exist they must be aware of the context and do the right thing, e.g. preserve the coprocessor state and resore it after use. Signed-off-by: Max Filippov --- diff --git a/arch/xtensa/kernel/traps.c b/arch/xtensa/kernel/traps.c index 95903f25e523c..62c4976051284 100644 --- a/arch/xtensa/kernel/traps.c +++ b/arch/xtensa/kernel/traps.c @@ -69,7 +69,7 @@ static void do_debug(struct pt_regs *regs); #define USER 0x02 #define COPROCESSOR(x) \ -{ EXCCAUSE_COPROCESSOR ## x ## _DISABLED, USER, fast_coprocessor } +{ EXCCAUSE_COPROCESSOR ## x ## _DISABLED, USER|KRNL, fast_coprocessor } typedef struct { int cause;