On Tue, Jun 16, 2020 at 03:05:18PM +0100, Marc Zyngier wrote: > commit 0370964dd3ff7d3d406f292cb443a927952cbd05 upstream > > On a VHE system, the EL1 state is left in the CPU most of the time, > and only syncronized back to memory when vcpu_put() is called (most > of the time on preemption). > > Which means that when injecting an exception, we'd better have a way > to either: > (1) write directly to the EL1 sysregs > (2) synchronize the state back to memory, and do the changes there > > For an AArch64, we already do (1), so we are safe. Unfortunately, > doing the same thing for AArch32 would be pretty invasive. Instead, > we can easily implement (2) by calling the put/load architectural > backends, and keep preemption disabled. We can then reload the > state back into EL1. > > Cc: stable@xxxxxxxxxxxxxxx > Reported-by: James Morse <james.morse@xxxxxxx> > Signed-off-by: Marc Zyngier <maz@xxxxxxxxxx> > --- > arch/arm/include/asm/kvm_host.h | 2 ++ > arch/arm64/include/asm/kvm_host.h | 2 ++ > virt/kvm/arm/aarch32.c | 28 ++++++++++++++++++++++++++++ > 3 files changed, 32 insertions(+) Thanks for all 3 of these. greg k-h