All of lore.kernel.org
 help / color / mirror / Atom feed
From: Joerg Roedel <joerg.roedel@amd.com>
To: Avi Kivity <avi@redhat.com>, Marcelo Tosatti <mtosatti@redhat.com>
Cc: Alexander Graf <agraf@suse.de>,
	kvm@vger.kernel.org, linux-kernel@vger.kernel.org,
	Joerg Roedel <joerg.roedel@amd.com>
Subject: [PATCH 02/18] KVM: MMU: Make tdp_enabled a mmu-context parameter
Date: Wed, 3 Mar 2010 20:12:05 +0100	[thread overview]
Message-ID: <1267643541-451-3-git-send-email-joerg.roedel@amd.com> (raw)
In-Reply-To: <1267643541-451-1-git-send-email-joerg.roedel@amd.com>

This patch changes the tdp_enabled flag from its global
meaning to the mmu-context. This is necessary for Nested SVM
with emulation of Nested Paging where we need an extra MMU
context to shadow the Nested Nested Page Table.

Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
---
 arch/x86/include/asm/kvm_host.h |    1 +
 arch/x86/kvm/mmu.c              |    8 +++++---
 2 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h
index ec891a2..e7bef19 100644
--- a/arch/x86/include/asm/kvm_host.h
+++ b/arch/x86/include/asm/kvm_host.h
@@ -254,6 +254,7 @@ struct kvm_mmu {
 	int root_level;
 	int shadow_root_level;
 	union kvm_mmu_page_role base_role;
+	bool tdp_enabled;
 
 	u64 *pae_root;
 	u64 rsvd_bits_mask[2][4];
diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c
index 741373e..5c66c99 100644
--- a/arch/x86/kvm/mmu.c
+++ b/arch/x86/kvm/mmu.c
@@ -1812,7 +1812,7 @@ static int set_spte(struct kvm_vcpu *vcpu, u64 *sptep,
 		spte |= shadow_user_mask;
 	if (level > PT_PAGE_TABLE_LEVEL)
 		spte |= PT_PAGE_SIZE_MASK;
-	if (tdp_enabled)
+	if (vcpu->arch.mmu.tdp_enabled)
 		spte |= kvm_x86_ops->get_mt_mask(vcpu, gfn,
 			kvm_is_mmio_pfn(pfn));
 
@@ -2077,7 +2077,7 @@ static int mmu_alloc_roots(struct kvm_vcpu *vcpu)
 		hpa_t root = vcpu->arch.mmu.root_hpa;
 
 		ASSERT(!VALID_PAGE(root));
-		if (tdp_enabled)
+		if (vcpu->arch.mmu.tdp_enabled)
 			direct = 1;
 		if (mmu_check_root(vcpu, root_gfn))
 			return 1;
@@ -2090,7 +2090,7 @@ static int mmu_alloc_roots(struct kvm_vcpu *vcpu)
 		return 0;
 	}
 	direct = !is_paging(vcpu);
-	if (tdp_enabled)
+	if (vcpu->arch.mmu.tdp_enabled)
 		direct = 1;
 	for (i = 0; i < 4; ++i) {
 		hpa_t root = vcpu->arch.mmu.pae_root[i];
@@ -2397,6 +2397,7 @@ static int init_kvm_tdp_mmu(struct kvm_vcpu *vcpu)
 	context->invlpg = nonpaging_invlpg;
 	context->shadow_root_level = kvm_x86_ops->get_tdp_level();
 	context->root_hpa = INVALID_PAGE;
+	vcpu->arch.mmu.tdp_enabled = true;
 
 	if (!is_paging(vcpu)) {
 		context->gva_to_gpa = nonpaging_gva_to_gpa;
@@ -2435,6 +2436,7 @@ static int init_kvm_softmmu(struct kvm_vcpu *vcpu)
 		r = paging32_init_context(vcpu);
 
 	vcpu->arch.mmu.base_role.glevels = vcpu->arch.mmu.root_level;
+	vcpu->arch.mmu.tdp_enabled       = false;
 
 	return r;
 }
-- 
1.7.0



  parent reply	other threads:[~2010-03-03 19:15 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-03-03 19:12 [PATCH 0/18][RFC] Nested Paging support for Nested SVM (aka NPT-Virtualization) Joerg Roedel
2010-03-03 19:12 ` [PATCH 01/18] KVM: MMU: Check for root_level instead of long mode Joerg Roedel
2010-03-03 19:12 ` Joerg Roedel [this message]
2010-03-08  9:17   ` [PATCH 02/18] KVM: MMU: Make tdp_enabled a mmu-context parameter Avi Kivity
2010-03-10 14:44     ` Joerg Roedel
2010-03-10 14:53       ` Avi Kivity
2010-03-10 15:26         ` Joerg Roedel
2010-03-11  6:47           ` Avi Kivity
2010-03-11 10:33             ` Joerg Roedel
2010-03-03 19:12 ` [PATCH 03/18] KVM: MMU: Make set_cr3 a function pointer in kvm_mmu Joerg Roedel
2010-03-03 19:12 ` [PATCH 04/18] KVM: X86: Introduce a tdp_set_cr3 function Joerg Roedel
2010-03-03 19:12 ` [PATCH 05/18] KVM: MMU: Introduce get_cr3 function pointer Joerg Roedel
2010-03-03 19:12 ` [PATCH 06/18] KVM: MMU: Introduce inject_page_fault " Joerg Roedel
2010-03-03 19:12 ` [PATCH 07/18] KVM: SVM: Implement MMU helper functions for Nested Nested Paging Joerg Roedel
2010-03-03 19:12 ` [PATCH 08/18] KVM: MMU: Change init_kvm_softmmu to take a context as parameter Joerg Roedel
2010-03-03 19:12 ` [PATCH 09/18] KVM: MMU: Let is_rsvd_bits_set take mmu context instead of vcpu Joerg Roedel
2010-03-03 19:12 ` [PATCH 10/18] KVM: MMU: Introduce generic walk_addr function Joerg Roedel
2010-03-03 19:12 ` [PATCH 11/18] KVM: MMU: Add infrastructure for two-level page walker Joerg Roedel
2010-03-08  9:37   ` Avi Kivity
2010-03-10 14:46     ` Joerg Roedel
2010-03-03 19:12 ` [PATCH 12/18] KVM: MMU: Implement nested gva_to_gpa functions Joerg Roedel
2010-03-03 19:12 ` [PATCH 13/18] KVM: MMU: Introduce Nested MMU context Joerg Roedel
2010-03-03 19:12 ` [PATCH 14/18] KVM: SVM: Initialize Nested Nested MMU context on VMRUN Joerg Roedel
2010-03-03 19:12 ` [PATCH 15/18] KVM: MMU: Propagate the right fault back to the guest after gva_to_gpa Joerg Roedel
2010-03-15  4:30   ` Daniel K.
2010-03-15 12:52     ` Joerg Roedel
2010-03-15  7:36   ` Avi Kivity
2010-03-15  9:06     ` Joerg Roedel
2010-03-15  9:23       ` Avi Kivity
2010-03-15  9:41         ` Joerg Roedel
2010-03-03 19:12 ` [PATCH 16/18] KVM: X86: Add callback to let modules decide over some supported cpuid bits Joerg Roedel
2010-03-03 19:12 ` [PATCH 17/18] KVM: SVM: Report Nested Paging support to userspace Joerg Roedel
2010-03-03 23:37   ` Alexander Graf
2010-03-04 11:27     ` Joerg Roedel
2010-03-03 19:12 ` [PATCH 18/18] KVM: X86: Add KVM_CAP_SVM_CPUID_FIXED Joerg Roedel
2010-03-08  9:39   ` Avi Kivity
2010-03-10 14:46     ` Joerg Roedel
2010-03-03 23:10 ` [PATCH 0/18][RFC] Nested Paging support for Nested SVM (aka NPT-Virtualization) Jan Kiszka
2010-03-03 23:44 ` Alexander Graf
2010-03-04 11:29   ` Joerg Roedel
2010-03-04  0:35 ` Anthony Liguori
2010-03-04 14:42 ` Marcelo Tosatti
2010-03-04 15:58   ` Joerg Roedel
2010-03-11 20:58     ` Marcelo Tosatti
2010-03-12  7:36       ` Avi Kivity
2010-03-15  6:27         ` Marcelo Tosatti
2010-03-15  7:34           ` Avi Kivity
2010-03-12  7:41     ` Avi Kivity
2010-03-08  9:41 ` Avi Kivity

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=1267643541-451-3-git-send-email-joerg.roedel@amd.com \
    --to=joerg.roedel@amd.com \
    --cc=agraf@suse.de \
    --cc=avi@redhat.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mtosatti@redhat.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.