If trapping FPSIMD in the context of an AArch32 guest, it is critical
to set FPEXC32_EL2.EN to 1 so that the trapping is taken to EL2 and
not EL1.
Conversely, it is just as critical *not* to set FPEXC32_EL2.EN to 1
if we're not going to trap FPSIMD, as we then corrupt the existing
VFP state.
Moving the call to __activate_traps_fpsimd32 to the point where we
know for sure that we are going to trap ensures that we don't set that
bit spuriously.
Fixes:
|
||
---|---|---|
.. | ||
hyp | ||
Kconfig | ||
Makefile | ||
debug.c | ||
fpsimd.c | ||
guest.c | ||
handle_exit.c | ||
hyp-init.S | ||
hyp.S | ||
inject_fault.c | ||
irq.h | ||
regmap.c | ||
reset.c | ||
sys_regs.c | ||
sys_regs.h | ||
sys_regs_generic_v8.c | ||
trace.h | ||
va_layout.c | ||
vgic-sys-reg-v3.c |