From: Cathy Avery <cavery@redhat.com>
To: linux-kernel@vger.kernel.org, kvm@vger.kernel.org, pbonzini@redhat.com
Cc: vkuznets@redhat.com, wei.huang2@amd.com
Subject: [PATCH v2 0/2] ] KVM: SVM: Track physical cpu and asid_generation via the vmcb
Date: Wed, 13 Jan 2021 09:10:17 -0500 [thread overview]
Message-ID: <20210113141019.5127-1-cavery@redhat.com> (raw)
In the cases where vmcbs change processors from one vmrun to another updated
information in the vmcb from a prior run can potentially be lost. By tracking
the physical cpu and asid_generation per vmcb instead of svm->vcpu the following
scenario illustrated by Paolo can be avoided.
--------------------- ---------------------
pCPU 1 pCPU 2
--------------------- ---------------------
run VMCB02
run VMCB02 (*)
run VMCB01
run VMCB01 (**)
run VMCB02 (***)
--------------------- ---------------------
After the point marked (*), while L2 runs, some fields change in VMCB02.
When the processor vmexits back to L0, VMCB02 is marked clean.
At the point marked (**), svm->vcpu.cpu becomes 1 again.
Therefore, at the point marked (***) you will get svm->vcpu.cpu == cpu
and the VMCB02 will not be marked dirty. The processor can then incorrectly
use some data that is cached from before point (*).
Theses patches are intended for the kvm nested-svm branch.
The patches have been tested on nested fedora VMs, kvm self tests, and kvm-unit-tests.
They have not been tested on SEV.
Changes v1 -> v2:
- Remove outdated comment from svm_switch_vmcb().
Cathy Avery (2):
KVM: nSVM: Track the physical cpu of the vmcb vmrun through the vmcb
KVM: nSVM: Track the ASID generation of the vmcb vmrun through the
vmcb
arch/x86/kvm/svm/svm.c | 40 ++++++++++++++++++++--------------------
arch/x86/kvm/svm/svm.h | 3 ++-
2 files changed, 22 insertions(+), 21 deletions(-)
--
2.20.1
next reply other threads:[~2021-01-13 14:12 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-01-13 14:10 Cathy Avery [this message]
2021-01-13 14:10 ` [PATCH v2 1/2] KVM: nSVM: Track the physical cpu of the vmcb vmrun through the vmcb Cathy Avery
2021-01-13 14:10 ` [PATCH v2 2/2] KVM: nSVM: Track the ASID generation " Cathy Avery
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=20210113141019.5127-1-cavery@redhat.com \
--to=cavery@redhat.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=pbonzini@redhat.com \
--cc=vkuznets@redhat.com \
--cc=wei.huang2@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.