Commit 932859a4 authored by David Matlack's avatar David Matlack Committed by Paolo Bonzini

KVM: x86/mmu: Move SPTE writable invariant checks to a helper function

Move the WARNs in spte_can_locklessly_be_made_writable() to a separate
helper function. This is in preparation for moving these checks to the
places where SPTEs are set.

Opportunistically add warning error messages that include the SPTE to
make future debugging of these warnings easier.
Suggested-by: default avatarSean Christopherson <seanjc@google.com>
Signed-off-by: default avatarDavid Matlack <dmatlack@google.com>
Message-Id: <20220125230518.1697048-2-dmatlack@google.com>
Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
parent 1714a4eb
......@@ -339,15 +339,21 @@ static __always_inline bool is_rsvd_spte(struct rsvd_bits_validate *rsvd_check,
__is_rsvd_bits_set(rsvd_check, spte, level);
}
static inline bool spte_can_locklessly_be_made_writable(u64 spte)
static inline void check_spte_writable_invariants(u64 spte)
{
if (spte & shadow_mmu_writable_mask) {
WARN_ON_ONCE(!(spte & shadow_host_writable_mask));
return true;
}
if (spte & shadow_mmu_writable_mask)
WARN_ONCE(!(spte & shadow_host_writable_mask),
"kvm: MMU-writable SPTE is not Host-writable: %llx",
spte);
else
WARN_ONCE(spte & PT_WRITABLE_MASK,
"kvm: Writable SPTE is not MMU-writable: %llx", spte);
}
WARN_ON_ONCE(spte & PT_WRITABLE_MASK);
return false;
static inline bool spte_can_locklessly_be_made_writable(u64 spte)
{
check_spte_writable_invariants(spte);
return spte & shadow_mmu_writable_mask;
}
static inline u64 get_mmio_spte_generation(u64 spte)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment