linux_dsm_epyc7002/arch/mips
WANG Xuerui bc6e8dc112 MIPS: handle Loongson-specific GSExc exception
Newer Loongson cores (Loongson-3A R2 and newer) use the
implementation-dependent ExcCode 16 to signal Loongson-specific
exceptions. The extended cause is put in the non-standard CP0.Diag1
register which is CP0 Register 22 Select 1, called GSCause in Loongson
manuals. Inside is an exception code bitfield called GSExcCode, only
codes 0 to 6 inclusive are documented (so far, in the Loongson 3A3000
User Manual, Volume 2).

During experiments, it was found that some undocumented unprivileged
instructions can trigger the also-undocumented GSExcCode 8 on Loongson
3A4000. Processor state is not corrupted, but we cannot continue without
further knowledge, and Loongson is not providing that information as of
this writing. So we send SIGILL on seeing this exception code to thwart
easy local DoS attacks.

Other exception codes are made fatal, partly because of insufficient
knowledge, also partly because they are not as easily reproduced. None
of them are encountered in the wild with upstream kernels and userspace
so far.

Some older cores (Loongson-3A1000 and Loongson-3B1500) have ExcCode 16
too, but the semantic is equivalent to GSExcCode 0. Because the
respective manuals did not mention the CP0.Diag1 register or its read
behavior, these cores are not covered in this patch, as MFC0 from
non-existent CP0 registers is UNDEFINED according to the MIPS
architecture spec.

Reviewed-by: Huacai Chen <chenhc@lemote.com>
Signed-off-by: WANG Xuerui <git@xen0n.name>
Cc: Huacai Chen <chenhc@lemote.com>
Cc: Jiaxun Yang <jiaxun.yang@flygoat.com>
Cc: Tiezhu Yang <yangtiezhu@loongson.cn>
Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
2020-07-31 17:52:47 +02:00
..
alchemy MIPS: Only include the platform file needed 2020-05-13 00:17:18 +02:00
ar7 MIPS: Only include the platform file needed 2020-05-13 00:17:18 +02:00
ath25 MIPS: Only include the platform file needed 2020-05-13 00:17:18 +02:00
ath79 MIPS: ath79: Remove unused include <asm/mips_machine.h> 2020-07-28 10:20:44 +02:00
bcm47xx MIPS: Only include the platform file needed 2020-05-13 00:17:18 +02:00
bcm63xx MIPS: BCM63xx: improve CFE version detection 2020-07-24 12:02:46 +02:00
bmips MIPS: Only include the platform file needed 2020-05-13 00:17:18 +02:00
boot MIPS: DTS: ingenic/qi,lb60: Add model and memory node 2020-07-31 17:48:36 +02:00
cavium-octeon MIPS: OCTEON: add missing put_device() call in dwc3_octeon_device_init() 2020-07-24 11:06:58 +02:00
cobalt MIPS: Only include the platform file needed 2020-05-13 00:17:18 +02:00
configs MIPS: ingenic: Enable JZ4780_NEMC manually 2020-07-28 22:44:27 +02:00
crypto crypto: {arm,arm64,mips}/poly1305 - remove redundant non-reduction from emit 2020-01-16 15:18:12 +08:00
dec MIPS: Only include the platform file needed 2020-05-13 00:17:18 +02:00
fw mm: don't include asm/pgtable.h if linux/mm.h is already included 2020-06-09 09:39:13 -07:00
generic MIPS: Only include the platform file needed 2020-05-13 00:17:18 +02:00
include MIPS: handle Loongson-specific GSExc exception 2020-07-31 17:52:47 +02:00
jazz mm: reorder includes after introduction of linux/pgtable.h 2020-06-09 09:39:13 -07:00
jz4740 MIPS: ingenic: Hardcode mem size for qi,lb60 board 2020-07-31 17:48:57 +02:00
kernel MIPS: handle Loongson-specific GSExc exception 2020-07-31 17:52:47 +02:00
kvm MIPS: Unify naming style of vendor CP0.Config6 bits 2020-07-08 11:15:53 +02:00
lantiq MIPS: Only include the platform file needed 2020-05-13 00:17:18 +02:00
lib mm: don't include asm/pgtable.h if linux/mm.h is already included 2020-06-09 09:39:13 -07:00
loongson2ef MIPS: Loongson-2EF: disable fix-loongson3-llsc in compiler 2020-06-22 17:35:31 +02:00
loongson32 MIPS: Only include the platform file needed 2020-05-13 00:17:18 +02:00
loongson64 MIPS: Loongson64: Process ISA Node in DeviceTree 2020-07-28 22:49:52 +02:00
math-emu MIPS: Use fallthrough for arch/mips 2020-05-07 11:55:47 +02:00
mm MIPS: Unify naming style of vendor CP0.Config6 bits 2020-07-08 11:15:53 +02:00
mti-malta MIPS: Fix exception handler memcpy() 2020-05-24 09:15:54 +02:00
net MIPS: BPF: Use sizeof_field() instead of FIELD_SIZEOF() 2020-01-10 11:33:35 -08:00
netlogic MIPS: Only include the platform file needed 2020-05-13 00:17:18 +02:00
oprofile MIPS: Use fallthrough for arch/mips 2020-05-07 11:55:47 +02:00
pci MIPS: Retire kvm paravirt 2020-07-24 10:53:23 +02:00
pic32 MIPS: Only include the platform file needed 2020-05-13 00:17:18 +02:00
pistachio MIPS: Fix exception handler memcpy() 2020-05-24 09:15:54 +02:00
pnx833x MIPS: Only include the platform file needed 2020-05-13 00:17:18 +02:00
power mips: check for dsp presence only once before save/restore 2019-10-07 10:58:53 -07:00
ralink This time around we have 4 lines of diff in the core framework, removing a 2020-06-10 11:42:19 -07:00
rb532 MIPS: Only include the platform file needed 2020-05-13 00:17:18 +02:00
sgi-ip22 MIPS: Only include the platform file needed 2020-05-13 00:17:18 +02:00
sgi-ip27 mm: don't include asm/pgtable.h if linux/mm.h is already included 2020-06-09 09:39:13 -07:00
sgi-ip30 MIPS: Only include the platform file needed 2020-05-13 00:17:18 +02:00
sgi-ip32 mm: don't include asm/pgtable.h if linux/mm.h is already included 2020-06-09 09:39:13 -07:00
sibyte MIPS: Only include the platform file needed 2020-05-13 00:17:18 +02:00
sni MIPS: Only include the platform file needed 2020-05-13 00:17:18 +02:00
tools MIPS: tools: Fix resource leak in elf-entry.c 2020-05-24 09:29:48 +02:00
txx9 MIPS: Only include the platform file needed 2020-05-13 00:17:18 +02:00
vdso mips/vdso: Fix resource leaks in genvdso.c 2020-07-16 11:05:37 +02:00
vr41xx MIPS: Fix builds for VR41xx platforms 2020-05-15 09:09:58 +02:00
Kbuild MIPS: Fix "make clean" error due to recent changes 2020-05-13 13:20:22 +02:00
Kbuild.platforms MIPS: Retire kvm paravirt 2020-07-24 10:53:23 +02:00
Kconfig MIPS: Remove legacy MIPS_MACHINE option 2020-07-28 10:21:17 +02:00
Kconfig.debug mips: Add CPS_NS16550_WIDTH config 2020-05-22 09:12:52 +02:00
Makefile mips: Add MIPS Warrior P5600 support 2020-05-22 09:10:53 +02:00
Makefile.postlink MIPS: fix indentation of the 'RELOCS' message 2020-01-20 15:37:30 -08:00