Re: [PATCH v3 0/2] KVM: SVM: Create separate vmcbs for L1 and L2

From: Cathy Avery
Date: Thu Nov 12 2020 - 08:52:09 EST


That would be the master branch of git://git.kernel.org/pub/scm/virt/kvm/kvm.git where the last commit was 969df928fee43b4219646a57c7beaccccf2c0635

I was originally working off of the queue branch but there were issues with the prior commits passing the various tests.

Cathy

On 11/11/20 4:35 PM, Babu Moger wrote:
Hi Cathy,
I was going to test these patches. But it did not apply on my tree.
Tried on kvm(https://git.kernel.org/pub/scm/virt/kvm/kvm.git) and
Mainline
(https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git). What
is your base tree?
thanks
Babu

-----Original Message-----
From: Cathy Avery <cavery@xxxxxxxxxx>
Sent: Monday, October 26, 2020 12:42 PM
To: linux-kernel@xxxxxxxxxxxxxxx; kvm@xxxxxxxxxxxxxxx; pbonzini@xxxxxxxxxx
Cc: vkuznets@xxxxxxxxxx; Huang2, Wei <Wei.Huang2@xxxxxxx>;
mlevitsk@xxxxxxxxxx; sean.j.christopherson@xxxxxxxxx
Subject: [PATCH v3 0/2] KVM: SVM: Create separate vmcbs for L1 and L2

svm->vmcb will now point to either a separate vmcb L1 ( not nested ) or L2 vmcb
( nested ).

Changes:
v2 -> v3
- Added vmcb switching helper.
- svm_set_nested_state always forces to L1 before determining state
to set. This is more like vmx and covers any potential L2 to L2 nested state
switch.
- Moved svm->asid tracking to pre_svm_run and added ASID set dirty bit
checking.

v1 -> v2
- Removed unnecessary update check of L1 save.cr3 during nested_svm_vmexit.
- Moved vmcb01_pa to svm.
- Removed get_host_vmcb() function.
- Updated vmsave/vmload corresponding vmcb state during L2
enter and exit which fixed the L2 load issue.
- Moved asid workaround to a new patch which adds asid to svm.
- Init previously uninitialized L2 vmcb save.gpat and save.cr4

Tested:
kvm-unit-tests
kvm self tests
Loaded fedora nested guest on fedora

Cathy Avery (2):
KVM: SVM: Track asid from vcpu_svm
KVM: SVM: Use a separate vmcb for the nested L2 guest

arch/x86/kvm/svm/nested.c | 125 ++++++++++++++++++--------------------
arch/x86/kvm/svm/svm.c | 58 +++++++++++-------
arch/x86/kvm/svm/svm.h | 51 +++++-----------
3 files changed, 110 insertions(+), 124 deletions(-)

--
2.20.1