linux/arch/arm64
Mark Rutland aafb72d2ed arm64: KVM: Survive unknown traps from guests
[ Upstream commit ba4dd156ea ]

Currently we BUG() if we see an ESR_EL2.EC value we don't recognise. As
configurable disables/enables are added to the architecture (controlled
by RES1/RES0 bits respectively), with associated synchronous exceptions,
it may be possible for a guest to trigger exceptions with classes that
we don't recognise.

While we can't service these exceptions in a manner useful to the guest,
we can avoid bringing down the host. Per ARM DDI 0487A.k_iss10775, page
D7-1937, EC values within the range 0x00 - 0x2c are reserved for future
use with synchronous exceptions, and EC values within the range 0x2d -
0x3f may be used for either synchronous or asynchronous exceptions.

The patch makes KVM handle any unknown EC by injecting an UNDEFINED
exception into the guest, with a corresponding (ratelimited) warning in
the host dmesg. We could later improve on this with with a new (opt-in)
exit to the host userspace.

Cc: Dave Martin <dave.martin@arm.com>
Cc: Suzuki K Poulose <suzuki.poulose@arm.com>
Reviewed-by: Christoffer Dall <christoffer.dall@linaro.org>
Signed-off-by: Mark Rutland <mark.rutland@arm.com>
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
History 2017-12-14 09:28:19 +01:00
..
boot arm64: dts: NS2: reserve memory for Nitro firmware 2017-11-21 09:23:26 +01:00
configs ZTE arm64 defconfig updates for 4.9: 2016-09-19 22:35:21 +02:00
crypto crypto: arm64/aes-blk - honour iv_out requirement in CBC and CTR modes 2017-02-09 08:08:26 +01:00
include arm64: KVM: fix VTTBR_BADDR_MASK BUG_ON off-by-one 2017-12-14 09:28:14 +01:00
kernel arm64: fpsimd: Prevent registers leaking from dead tasks 2017-12-14 09:28:14 +01:00
kvm arm64: KVM: Survive unknown traps from guests 2017-12-14 09:28:19 +01:00
lib Merge branch 'work.uaccess' into for-linus 2016-10-14 20:42:44 -04:00
mm arm64: dma-mapping: Only swizzle DMA ops for IOMMU_DOMAIN_DMA 2017-11-15 15:53:13 +01:00
net bpf, arm64: fix faulty emission of map access in tail calls 2017-06-07 12:07:43 +02:00
xen arm/xen: add support for vm_assist hypercall 2016-07-06 10:42:14 +01:00
Kconfig irqchip/gicv3-its: Add workaround for QDF2400 ITS erratum 0065 2017-03-22 12:43:39 +01:00
Kconfig.debug arm64: always enable DEBUG_RODATA and remove the Kconfig option 2016-08-26 10:13:41 +01:00
Kconfig.platforms arm64: uniphier: select ARCH_HAS_RESET_CONTROLLER 2016-10-22 18:25:52 +09:00
Makefile arm64: kernel: force ET_DYN ELF type for CONFIG_RELOCATABLE=y 2016-10-20 11:37:25 +01:00