From: Sean Christopherson <seanjc@google.com>
To: Sean Christopherson <seanjc@google.com>,
Paolo Bonzini <pbonzini@redhat.com>
Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org,
Michael Roth <michael.roth@amd.com>,
Tom Lendacky <thomas.lendacky@amd.com>
Subject: [PATCH 0/4] KVM: x86/mmu: MMIO caching bug fixes
Date: Thu, 28 Jul 2022 22:17:55 +0000 [thread overview]
Message-ID: <20220728221759.3492539-1-seanjc@google.com> (raw)
Fix two bugs I introduced when adding the enable_mmio_caching module param.
Bug #1 is that KVM unintentionally makes disabling caching due to a config
incompatibility "sticky", e.g. disabling caching because there are no
reserved PA bits prevents KVM from enabling when "switching" to an EPT
config (doesn't rely on PA bits) or when SVM adjusts the MMIO masks to
account for C-bit shenanigans (even if MAXPHYADDR=52 and C-bit=51, there
can be reserved PA bits due to the "real" MAXPHYADDR being reduced).
Bug #2 is that KVM doesn't explicitly check that MMIO caching is enabled
when doing SEV-ES setup. Prior to the module param, MMIO caching was
guaranteed when SEV-ES could be enabled as SEV-ES-capable CPUs effectively
guarantee there will be at least one reserved PA bit (see above). With
the module param, userspace can explicitly disable MMIO caching, thus
silently breaking SEV-ES.
I believe I tested all combinations of things getting disabled and enabled
by hacking kvm_mmu_reset_all_pte_masks() to disable MMIO caching on a much
lower MAXPHYADDR, e.g. 43 instead of 52. That said, definitely wait for a
thumbs up from the AMD folks before queueing.
Sean Christopherson (4):
KVM: x86: Tag kvm_mmu_x86_module_init() with __init
KVM: x86/mmu: Fully re-evaluate MMIO caching when SPTE masks change
KVM: SVM: Adjust MMIO masks (for caching) before doing SEV(-ES) setup
KVM: SVM: Disable SEV-ES support if MMIO caching is disable
arch/x86/include/asm/kvm_host.h | 2 +-
arch/x86/kvm/mmu.h | 2 ++
arch/x86/kvm/mmu/mmu.c | 6 +++++-
arch/x86/kvm/mmu/spte.c | 20 ++++++++++++++++++++
arch/x86/kvm/mmu/spte.h | 3 +--
arch/x86/kvm/svm/sev.c | 10 ++++++++++
arch/x86/kvm/svm/svm.c | 9 ++++++---
7 files changed, 45 insertions(+), 7 deletions(-)
base-commit: 1a4d88a361af4f2e91861d632c6a1fe87a9665c2
--
2.37.1.455.g008518b4e5-goog
next reply other threads:[~2022-07-28 22:18 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-07-28 22:17 Sean Christopherson [this message]
2022-07-28 22:17 ` [PATCH 1/4] KVM: x86: Tag kvm_mmu_x86_module_init() with __init Sean Christopherson
2022-07-29 2:14 ` Kai Huang
2022-07-28 22:17 ` [PATCH 2/4] KVM: x86/mmu: Fully re-evaluate MMIO caching when SPTE masks change Sean Christopherson
2022-07-29 2:39 ` Kai Huang
2022-07-29 15:07 ` Sean Christopherson
2022-08-01 9:24 ` Kai Huang
2022-08-01 14:15 ` Sean Christopherson
2022-08-01 20:46 ` Kai Huang
2022-08-01 23:20 ` Sean Christopherson
2022-08-02 0:05 ` Kai Huang
2022-08-02 21:15 ` Sean Christopherson
2022-08-02 22:19 ` Kai Huang
2022-08-02 23:05 ` Sean Christopherson
2022-08-02 23:42 ` Kai Huang
2022-07-28 22:17 ` [PATCH 3/4] KVM: SVM: Adjust MMIO masks (for caching) before doing SEV(-ES) setup Sean Christopherson
2022-07-29 2:06 ` Kai Huang
2022-07-29 18:15 ` Sean Christopherson
2022-07-28 22:17 ` [PATCH 4/4] KVM: SVM: Disable SEV-ES support if MMIO caching is disable Sean Christopherson
2022-07-29 2:12 ` Kai Huang
2022-07-29 15:21 ` Sean Christopherson
2022-08-01 9:30 ` Kai Huang
2022-07-29 1:09 ` [PATCH 0/4] KVM: x86/mmu: MMIO caching bug fixes Michael Roth
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220728221759.3492539-1-seanjc@google.com \
--to=seanjc@google.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=michael.roth@amd.com \
--cc=pbonzini@redhat.com \
--cc=thomas.lendacky@amd.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®