[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <d8b4b64f-b5d8-6763-0ef9-ac467ff7e47e@amd.com>
Date: Mon, 17 Aug 2020 16:56:33 -0500
From: Babu Moger <babu.moger@....com>
To: "pbonzini@...hat.com" <pbonzini@...hat.com>,
"vkuznets@...hat.com" <vkuznets@...hat.com>,
"wanpengli@...cent.com" <wanpengli@...cent.com>,
"sean.j.christopherson@...el.com" <sean.j.christopherson@...el.com>,
"jmattson@...gle.com" <jmattson@...gle.com>
Cc: "kvm@...r.kernel.org" <kvm@...r.kernel.org>,
"joro@...tes.org" <joro@...tes.org>,
"x86@...nel.org" <x86@...nel.org>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
"mingo@...hat.com" <mingo@...hat.com>,
"bp@...en8.de" <bp@...en8.de>, "hpa@...or.com" <hpa@...or.com>,
"tglx@...utronix.de" <tglx@...utronix.de>,
"Moger, Babu" <Babu.Moger@....com>
Subject: RE: [PATCH v4 00/12] SVM cleanup and INVPCID support for the AMD
guests
Paolo and others, Any comments on this series?
> -----Original Message-----
> From: Moger, Babu <Babu.Moger@....com>
> Sent: Thursday, August 6, 2020 7:46 PM
> To: pbonzini@...hat.com; vkuznets@...hat.com; wanpengli@...cent.com;
> sean.j.christopherson@...el.com; jmattson@...gle.com
> Cc: kvm@...r.kernel.org; joro@...tes.org; x86@...nel.org; linux-
> kernel@...r.kernel.org; mingo@...hat.com; bp@...en8.de;
> hpa@...or.com; tglx@...utronix.de
> Subject: [PATCH v4 00/12] SVM cleanup and INVPCID support for the AMD
> guests
>
> The following series adds the support for PCID/INVPCID on AMD guests.
> While doing it re-structured the vmcb_control_area data structure to
> combine all the intercept vectors into one 32 bit array. Makes it easy for
> future additions. Re-arranged few pcid related code to make it common
> between SVM and VMX.
>
> INVPCID interceptions are added only when the guest is running with
> shadow page table enabled. In this case the hypervisor needs to handle the
> tlbflush based on the type of invpcid instruction.
>
> For the guests with nested page table (NPT) support, the INVPCID feature
> works as running it natively. KVM does not need to do any special handling.
>
> AMD documentation for INVPCID feature is available at "AMD64 Architecture
> Programmer’s Manual Volume 2: System Programming, Pub. 24593 Rev.
> 3.34(or later)"
>
> The documentation can be obtained at the links below:
> Link: https://www.amd.com/system/files/TechDocs/24593.pdf
> Link: https://bugzilla.kernel.org/show_bug.cgi?id=206537
> ---
> v4:
> 1. Changed the functions __set_intercept/__clr_intercept/__is_intercept to
> to vmcb_set_intercept/vmcb_clr_intercept/vmcb_is_intercept by passing
> vmcb_control_area structure(Suggested by Paolo).
> 2. Rearranged the commit 7a35e515a7055 ("KVM: VMX: Properly handle
> kvm_read/write_guest_virt*())
> to make it common across both SVM/VMX(Suggested by Jim Mattson).
> 3. Took care of few other comments from Jim Mattson. Dropped
> "Reviewed-by"
> on few patches which I have changed since v3.
>
> v3:
>
> https://lore.kernel.org/lkml/159597929496.12744.14654593948763926416.stgi
> t@...ger-ubuntu/
> 1. Addressing the comments from Jim Mattson. Follow the v2 link below
> for the context.
> 2. Introduced the generic __set_intercept, __clr_intercept and is_intercept
> using native __set_bit, clear_bit and test_bit.
> 3. Combined all the intercepts vectors into single 32 bit array.
> 4. Removed set_intercept_cr, clr_intercept_cr, set_exception_intercepts,
> clr_exception_intercept etc. Used the generic set_intercept and
> clr_intercept where applicable.
> 5. Tested both L1 guest and l2 nested guests.
>
> v2:
>
> https://lore.kernel.org/lkml/159234483706.6230.13753828995249423191.stgit
> @bmoger-ubuntu/
> - Taken care of few comments from Jim Mattson.
> - KVM interceptions added only when tdp is off. No interceptions
> when tdp is on.
> - Reverted the fault priority to original order in VMX.
>
> v1:
>
> https://lore.kernel.org/lkml/159191202523.31436.11959784252237488867.stgi
> t@...ger-ubuntu/
>
> Babu Moger (12):
> KVM: SVM: Introduce vmcb_set_intercept, vmcb_clr_intercept and
> vmcb_is_intercept
> KVM: SVM: Change intercept_cr to generic intercepts
> KVM: SVM: Change intercept_dr to generic intercepts
> KVM: SVM: Modify intercept_exceptions to generic intercepts
> KVM: SVM: Modify 64 bit intercept field to two 32 bit vectors
> KVM: SVM: Add new intercept vector in vmcb_control_area
> KVM: nSVM: Cleanup nested_state data structure
> KVM: SVM: Remove set_cr_intercept, clr_cr_intercept and
> is_cr_intercept
> KVM: SVM: Remove set_exception_intercept and
> clr_exception_intercept
> KVM: X86: Rename and move the function vmx_handle_memory_failure
> to x86.c
> KVM: X86: Move handling of INVPCID types to x86
> KVM:SVM: Enable INVPCID feature on AMD
>
>
> arch/x86/include/asm/svm.h | 117 +++++++++++++++++++++++++-------
> ---
> arch/x86/include/uapi/asm/svm.h | 2 +
> arch/x86/kvm/svm/nested.c | 66 +++++++++-----------
> arch/x86/kvm/svm/svm.c | 131 ++++++++++++++++++++++++++-------
> ------
> arch/x86/kvm/svm/svm.h | 87 +++++++++-----------------
> arch/x86/kvm/trace.h | 21 ++++--
> arch/x86/kvm/vmx/nested.c | 12 ++--
> arch/x86/kvm/vmx/vmx.c | 95 ----------------------------
> arch/x86/kvm/vmx/vmx.h | 2 -
> arch/x86/kvm/x86.c | 106 ++++++++++++++++++++++++++++++++
> arch/x86/kvm/x86.h | 3 +
> 11 files changed, 364 insertions(+), 278 deletions(-)
>
> --
Powered by blists - more mailing lists