Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
x86/pv: _toggle_guest_pt() may not skip TLB flush for shadow mode guests
For shadow mode guests (e.g. PV ones forced into that mode as L1TF mitigation, or during migration) update_cr3() -> sh_update_cr3() may result in a change to the (shadow) root page table (compared to the previous one when running the same vCPU with the same PCID). This can, first and foremost, be a result of memory pressure on the shadow memory pool of the domain. Shadow code legitimately relies on the original (prior to commit 5c81d26 ["xen/x86: use PCID feature"]) behavior of the subsequent CR3 write to flush the TLB of entries still left from walks with an earlier, different (shadow) root page table. Restore the flushing behavior, also for the second CR3 write on the exit path to guest context when XPTI is active. For the moment accept that this will introduce more flushes than are strictly necessary - no flush would be needed when the (shadow) root page table doesn't actually change, but this information isn't readily (i.e. without introducing a layering violation) available here. This is XSA-294. Signed-off-by: Jan Beulich <jbeulich@suse.com> Tested-by: Juergen Gross <jgross@suse.com> Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
- Loading branch information