On Thu, 2019-06-20 at 01:46:49 UTC, Suraj Jitindar Singh wrote: > When a guest vcpu moves from one physical thread to another it is > necessary for the host to perform a tlb flush on the previous core if > another vcpu from the same guest is going to run there. This is because the > guest may use the local form of the tlb invalidation instruction meaning > stale tlb entries would persist where it previously ran. This is handled > on guest entry in kvmppc_check_need_tlb_flush() which calls > flush_guest_tlb() to perform the tlb flush. > > Previously the generic radix__local_flush_tlb_lpid_guest() function was > used, however the functionality was reimplemented in flush_guest_tlb() > to avoid the trace_tlbie() call as the flushing may be done in real > mode. The reimplementation in flush_guest_tlb() was missing an erat > invalidation after flushing the tlb. > > This lead to observable memory corruption in the guest due to the > caching of stale translations. Fix this by adding the erat invalidation. > > Fixes: 70ea13f6e609 "KVM: PPC: Book3S HV: Flush TLB on secondary radix threads" > > Signed-off-by: Suraj Jitindar Singh <sjitindarsingh@xxxxxxxxx> Applied to powerpc fixes, thanks. https://git.kernel.org/powerpc/c/50087112592016a3fc10b394a55f1f1a1bde6908 cheers