]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commit - arch/x86/kvm/mmu/mmu.c
kvm: x86: mmu: allow A/D bits to be disabled in an mmu
authorPeter Feiner <pfeiner@google.com>
Sat, 1 Jul 2017 00:26:31 +0000 (17:26 -0700)
committerPaolo Bonzini <pbonzini@redhat.com>
Mon, 3 Jul 2017 09:19:54 +0000 (11:19 +0200)
commitac8d57e5734389da18633d4e8cc030fe10843da7
treecc5aec1dd7bd4f36366aa6a064f9970c1e77c20d
parentdcdca5fed5f6ef2521f927ba3b5cd6b328054be1
kvm: x86: mmu: allow A/D bits to be disabled in an mmu

Adds the plumbing to disable A/D bits in the MMU based on a new role
bit, ad_disabled. When A/D is disabled, the MMU operates as though A/D
aren't available (i.e., using access tracking faults instead).

To avoid SP -> kvm_mmu_page.role.ad_disabled lookups all over the
place, A/D disablement is now stored in the SPTE. This state is stored
in the SPTE by tweaking the use of SPTE_SPECIAL_MASK for access
tracking. Rather than just setting SPTE_SPECIAL_MASK when an
access-tracking SPTE is non-present, we now always set
SPTE_SPECIAL_MASK for access-tracking SPTEs.

Signed-off-by: Peter Feiner <pfeiner@google.com>
[Use role.ad_disabled even for direct (non-shadow) EPT page tables.  Add
 documentation and a few MMU_WARN_ONs. - Paolo]
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Documentation/virtual/kvm/mmu.txt
arch/x86/include/asm/kvm_host.h
arch/x86/kvm/mmu.c
arch/x86/kvm/mmutrace.h