diff options
author | Paolo Bonzini <pbonzini@redhat.com> | 2022-05-03 07:23:08 -0400 |
---|---|---|
committer | Paolo Bonzini <pbonzini@redhat.com> | 2022-05-03 07:29:30 -0400 |
commit | 6ea6581f127128a07e18f61ea691a22741a3c714 (patch) | |
tree | 89fc90d73501c6f829a397150654e13c07fa10df /arch/x86/kvm/mmu/paging_tmpl.h | |
parent | c180269d27bfadc9e79e20c233b06e49c3127732 (diff) | |
parent | ba3a6120a4e7efc13d19fe43eb6c5caf1da05b72 (diff) |
Merge branch 'kvm-tdp-mmu-atomicity-fix' into HEAD
We are dropping A/D bits (and W bits) in the TDP MMU. Even if mmu_lock
is held for write, as volatile SPTEs can be written by other tasks/vCPUs
outside of mmu_lock.
Attempting to prove that bug exposed another notable goof, which has been
lurking for a decade, give or take: KVM treats _all_ MMU-writable SPTEs
as volatile, even though KVM never clears WRITABLE outside of MMU lock.
As a result, the legacy MMU (and the TDP MMU if not fixed) uses XCHG to
update writable SPTEs.
The fix does not seem to have an easily-measurable affect on performance;
page faults are so slow that wasting even a few hundred cycles is dwarfed
by the base cost.
Diffstat (limited to 'arch/x86/kvm/mmu/paging_tmpl.h')
0 files changed, 0 insertions, 0 deletions