aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71-e3000/0060-kvm-svm-prepare-for-new-bit-definition-in-nested_ctl.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71-e3000/0060-kvm-svm-prepare-for-new-bit-definition-in-nested_ctl.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71-e3000/0060-kvm-svm-prepare-for-new-bit-definition-in-nested_ctl.patch81
1 files changed, 81 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71-e3000/0060-kvm-svm-prepare-for-new-bit-definition-in-nested_ctl.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71-e3000/0060-kvm-svm-prepare-for-new-bit-definition-in-nested_ctl.patch
new file mode 100644
index 00000000..1c80a72d
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71-e3000/0060-kvm-svm-prepare-for-new-bit-definition-in-nested_ctl.patch
@@ -0,0 +1,81 @@
+From 99e4847c8110fd6e3f654cf07ea0e71964760bed Mon Sep 17 00:00:00 2001
+From: Tom Lendacky <thomas.lendacky@amd.com>
+Date: Mon, 4 Dec 2017 10:57:24 -0600
+Subject: [PATCH 60/95] kvm: svm: prepare for new bit definition in nested_ctl
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Currently the nested_ctl variable in the vmcb_control_area structure is
+used to indicate nested paging support. The nested paging support field
+is actually defined as bit 0 of the field. In order to support a new
+feature flag the usage of the nested_ctl and nested paging support must
+be converted to operate on a single bit.
+
+Cc: Thomas Gleixner <tglx@linutronix.de>
+Cc: Ingo Molnar <mingo@redhat.com>
+Cc: "H. Peter Anvin" <hpa@zytor.com>
+Cc: Paolo Bonzini <pbonzini@redhat.com>
+Cc: "Radim Krčmář" <rkrcmar@redhat.com>
+Cc: Joerg Roedel <joro@8bytes.org>
+Cc: Borislav Petkov <bp@suse.de>
+Cc: x86@kernel.org
+Cc: kvm@vger.kernel.org
+Cc: linux-kernel@vger.kernel.org
+Signed-off-by: Tom Lendacky <thomas.lendacky@amd.com>
+Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
+Reviewed-by: Borislav Petkov <bp@suse.de>
+Signed-off-by: Sudheesh Mavila <sudheesh.mavila@amd.com>
+---
+ arch/x86/include/asm/svm.h | 2 ++
+ arch/x86/kvm/svm.c | 7 ++++---
+ 2 files changed, 6 insertions(+), 3 deletions(-)
+
+diff --git a/arch/x86/include/asm/svm.h b/arch/x86/include/asm/svm.h
+index 78dd9df..c936c98 100644
+--- a/arch/x86/include/asm/svm.h
++++ b/arch/x86/include/asm/svm.h
+@@ -146,6 +146,8 @@ struct __attribute__ ((__packed__)) vmcb_control_area {
+ #define SVM_VM_CR_SVM_LOCK_MASK 0x0008ULL
+ #define SVM_VM_CR_SVM_DIS_MASK 0x0010ULL
+
++#define SVM_NESTED_CTL_NP_ENABLE BIT(0)
++
+ struct __attribute__ ((__packed__)) vmcb_seg {
+ u16 selector;
+ u16 attrib;
+diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c
+index f6bebce..3c637b97 100644
+--- a/arch/x86/kvm/svm.c
++++ b/arch/x86/kvm/svm.c
+@@ -1330,7 +1330,7 @@ static void init_vmcb(struct vcpu_svm *svm)
+
+ if (npt_enabled) {
+ /* Setup VMCB for Nested Paging */
+- control->nested_ctl = 1;
++ control->nested_ctl |= SVM_NESTED_CTL_NP_ENABLE;
+ clr_intercept(svm, INTERCEPT_INVLPG);
+ clr_exception_intercept(svm, PF_VECTOR);
+ clr_cr_intercept(svm, INTERCEPT_CR3_READ);
+@@ -2960,7 +2960,8 @@ static bool nested_vmcb_checks(struct vmcb *vmcb)
+ if (vmcb->control.asid == 0)
+ return false;
+
+- if (vmcb->control.nested_ctl && !npt_enabled)
++ if ((vmcb->control.nested_ctl & SVM_NESTED_CTL_NP_ENABLE) &&
++ !npt_enabled)
+ return false;
+
+ return true;
+@@ -3035,7 +3036,7 @@ static bool nested_svm_vmrun(struct vcpu_svm *svm)
+ else
+ svm->vcpu.arch.hflags &= ~HF_HIF_MASK;
+
+- if (nested_vmcb->control.nested_ctl) {
++ if (nested_vmcb->control.nested_ctl & SVM_NESTED_CTL_NP_ENABLE) {
+ kvm_mmu_unload(&svm->vcpu);
+ svm->nested.nested_cr3 = nested_vmcb->control.nested_cr3;
+ nested_svm_init_mmu_context(&svm->vcpu);
+--
+2.7.4
+