From: Sean Christopherson <seanjc@google.com>
To: Paolo Bonzini <pbonzini@redhat.com>,
Dave Hansen <dave.hansen@linux.intel.com>,
Andy Lutomirski <luto@kernel.org>,
Peter Zijlstra <peterz@infradead.org>
Cc: Sean Christopherson <seanjc@google.com>,
Vitaly Kuznetsov <vkuznets@redhat.com>,
Wanpeng Li <wanpengli@tencent.com>,
Jim Mattson <jmattson@google.com>, Joerg Roedel <joro@8bytes.org>,
kvm@vger.kernel.org, linux-kernel@vger.kernel.org,
Borislav Petkov <bp@suse.de>,
Tom Lendacky <thomas.lendacky@amd.com>,
Brijesh Singh <brijesh.singh@amd.com>
Subject: [PATCH v4 01/14] KVM: SVM: Zero out the VMCB array used to track SEV ASID association
Date: Fri, 5 Mar 2021 17:58:52 -0800 [thread overview]
Message-ID: <20210306015905.186698-2-seanjc@google.com> (raw)
In-Reply-To: <20210306015905.186698-1-seanjc@google.com>
Zero out the array of VMCB pointers so that pre_sev_run() won't see
garbage when querying the array to detect when an SEV ASID is being
associated with a new VMCB. In practice, reading random values is all
but guaranteed to be benign as a false negative (which is extremely
unlikely on its own) can only happen on CPU0 on the first VMRUN and would
only cause KVM to skip the ASID flush. For anything bad to happen, a
previous instance of KVM would have to exit without flushing the ASID,
_and_ KVM would have to not flush the ASID at any time while building the
new SEV guest.
Cc: Borislav Petkov <bp@suse.de>
Reviewed-by: Tom Lendacky <thomas.lendacky@amd.com>
Reviewed-by: Brijesh Singh <brijesh.singh@amd.com>
Fixes: 70cd94e60c73 ("KVM: SVM: VMRUN should use associated ASID when SEV is enabled")
Signed-off-by: Sean Christopherson <seanjc@google.com>
---
arch/x86/kvm/svm/svm.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c
index c636021b066b..01ce8ac77a07 100644
--- a/arch/x86/kvm/svm/svm.c
+++ b/arch/x86/kvm/svm/svm.c
@@ -568,9 +568,8 @@ static int svm_cpu_init(int cpu)
clear_page(page_address(sd->save_area));
if (svm_sev_enabled()) {
- sd->sev_vmcbs = kmalloc_array(max_sev_asid + 1,
- sizeof(void *),
- GFP_KERNEL);
+ sd->sev_vmcbs = kcalloc(max_sev_asid + 1, sizeof(void *),
+ GFP_KERNEL);
if (!sd->sev_vmcbs)
goto free_save_area;
}
--
2.30.1.766.gb4fecdf3b7-goog
next prev parent reply other threads:[~2021-03-06 2:00 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-03-06 1:58 [PATCH v4 00/14] KVM: SVM: Misc SEV cleanups Sean Christopherson
2021-03-06 1:58 ` Sean Christopherson [this message]
2021-03-06 1:58 ` [PATCH v4 02/14] KVM: SVM: Free sev_asid_bitmap during init if SEV setup fails Sean Christopherson
2021-03-06 1:58 ` [PATCH v4 03/14] KVM: SVM: Move SEV module params/variables to sev.c Sean Christopherson
2021-03-06 1:58 ` [PATCH v4 04/14] KVM: x86: Do not advertise SME, VM_PAGE_FLUSH, or unknown features Sean Christopherson
2021-03-06 1:58 ` [PATCH v4 05/14] x86/sev: Drop redundant and potentially misleading 'sev_enabled' Sean Christopherson
2021-03-06 1:58 ` [PATCH v4 06/14] KVM: SVM: Append "_enabled" to module-scoped SEV/SEV-ES control variables Sean Christopherson
2021-03-06 1:58 ` [PATCH v4 07/14] KVM: SVM: Condition sev_enabled and sev_es_enabled on CONFIG_KVM_AMD_SEV=y Sean Christopherson
2021-03-06 1:58 ` [PATCH v4 08/14] KVM: SVM: Enable SEV/SEV-ES functionality by default (when supported) Sean Christopherson
2021-03-06 1:59 ` [PATCH v4 09/14] KVM: SVM: Unconditionally invoke sev_hardware_teardown() Sean Christopherson
2021-03-06 1:59 ` [PATCH v4 10/14] KVM: SVM: Explicitly check max SEV ASID during sev_hardware_setup() Sean Christopherson
2021-03-06 1:59 ` [PATCH v4 11/14] KVM: SVM: Move SEV VMCB tracking allocation to sev.c Sean Christopherson
2021-03-06 1:59 ` [PATCH v4 12/14] KVM: SVM: Drop redundant svm_sev_enabled() helper Sean Christopherson
2021-03-06 1:59 ` [PATCH v4 13/14] KVM: SVM: Remove an unnecessary prototype declaration of sev_flush_asids() Sean Christopherson
2021-03-06 1:59 ` [PATCH v4 14/14] KVM: SVM: Skip SEV cache flush if no ASIDs have been used Sean Christopherson
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=20210306015905.186698-2-seanjc@google.com \
--to=seanjc@google.com \
--cc=bp@suse.de \
--cc=brijesh.singh@amd.com \
--cc=dave.hansen@linux.intel.com \
--cc=jmattson@google.com \
--cc=joro@8bytes.org \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=luto@kernel.org \
--cc=pbonzini@redhat.com \
--cc=peterz@infradead.org \
--cc=thomas.lendacky@amd.com \
--cc=vkuznets@redhat.com \
--cc=wanpengli@tencent.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®