On Tue, Jun 16, 2020 at 02:21:11PM +0100, Marc Zyngier wrote: > On 2020-06-16 14:19, Marc Zyngier wrote: > > Hi Greg, > > > > On 2020-06-16 14:09, Greg KH wrote: > > > On Tue, Jun 16, 2020 at 01:52:00PM +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> > > > > --- > > > > virt/kvm/arm/aarch32.c | 28 ++++++++++++++++++++++++++++ > > > > 1 file changed, 28 insertions(+) > > > > > > Thanks for this, and the other backport. Queued up. > > > > You seem to have queued the same patches for 5.4 and 5.6. > > Huh, and 4.19 as well. Gahh... Oops, sorry, my fault. I'll go drop them now, thanks. greg k-h