Commit 73137f59 authored by Paolo Bonzini's avatar Paolo Bonzini

KVM: SEV: Don't WARN() if RMP lookup fails when invalidating gmem pages

The hook only handles cleanup work specific to SNP, e.g. RMP table
entries and flushing caches for encrypted guest memory. When run on a
non-SNP-enabled host (currently only possible using
KVM_X86_SW_PROTECTED_VM, e.g. via KVM selftests), the callback is a noop
and will WARN due to the RMP table not being present. It's actually
expected in this case that the RMP table wouldn't be present and that
the hook should be a noop, so drop the WARN_ONCE().
Reported-by: default avatarSean Christopherson <seanjc@google.com>
Closes: https://lore.kernel.org/kvm/ZkU3_y0UoPk5yAeK@google.com/
Fixes: 8eb01900 ("KVM: SEV: Implement gmem hook for invalidating private pages")
Suggested-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
Signed-off-by: default avatarMichael Roth <michael.roth@amd.com>
Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
parent febff040
......@@ -4682,6 +4682,9 @@ void sev_gmem_invalidate(kvm_pfn_t start, kvm_pfn_t end)
{
kvm_pfn_t pfn;
if (!cc_platform_has(CC_ATTR_HOST_SEV_SNP))
return;
pr_debug("%s: PFN start 0x%llx PFN end 0x%llx\n", __func__, start, end);
for (pfn = start; pfn < end;) {
......@@ -4690,11 +4693,7 @@ void sev_gmem_invalidate(kvm_pfn_t start, kvm_pfn_t end)
bool assigned;
rc = snp_lookup_rmpentry(pfn, &assigned, &rmp_level);
if (WARN_ONCE(rc, "SEV: Failed to retrieve RMP entry for PFN 0x%llx error %d\n",
pfn, rc))
goto next_pfn;
if (!assigned)
if (rc || !assigned)
goto next_pfn;
use_2m_update = IS_ALIGNED(pfn, PTRS_PER_PMD) &&
......
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