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: kvm@vger.kernel.org, linux-kernel@vger.kernel.org,
	Joerg Roedel <joerg.roedel@amd.com>
Subject: [PATCH 4/6] kvm/x86/mmu: handle invlpg on large pages
Date: Thu, 5 Mar 2009 13:12:31 +0100	[thread overview]
Message-ID: <1236255153-4432-5-git-send-email-joerg.roedel@amd.com> (raw)
In-Reply-To: <1236255153-4432-1-git-send-email-joerg.roedel@amd.com>

Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
---
 arch/x86/kvm/paging_tmpl.h |   12 +++++++++---
 1 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/arch/x86/kvm/paging_tmpl.h b/arch/x86/kvm/paging_tmpl.h
index 79668ba..aa79396 100644
--- a/arch/x86/kvm/paging_tmpl.h
+++ b/arch/x86/kvm/paging_tmpl.h
@@ -441,6 +441,7 @@ out_unlock:
 static void FNAME(invlpg)(struct kvm_vcpu *vcpu, gva_t gva)
 {
 	struct kvm_shadow_walk_iterator iterator;
+	struct kvm_mmu_page *sp;
 	pt_element_t gpte;
 	gpa_t pte_gpa = -1;
 	int level;
@@ -451,12 +452,17 @@ static void FNAME(invlpg)(struct kvm_vcpu *vcpu, gva_t gva)
 	for_each_shadow_entry(vcpu, gva, iterator) {
 		level = iterator.level;
 		sptep = iterator.sptep;
+		sp = page_header(__pa(sptep));
+
+		if (sp->role.direct) {
+			/* mapped from a guest's large_pte */
+			kvm_mmu_zap_page(vcpu->kvm, sp);
+			kvm_flush_remote_tlbs(vcpu->kvm);
+			return;
+		}
 
-		/* FIXME: properly handle invlpg on large guest pages */
 		if (level == PT_PAGE_TABLE_LEVEL ||
 		    ((level == PT_DIRECTORY_LEVEL) && is_large_pte(*sptep))) {
-			struct kvm_mmu_page *sp = page_header(__pa(sptep));
-
 			pte_gpa = (sp->gfn << PAGE_SHIFT);
 			pte_gpa += (sptep - sp->spt) * sizeof(pt_element_t);
 
-- 
1.5.6.4



  parent reply	other threads:[~2009-03-05 12:13 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-03-05 12:12 [PATCH 0/6] various x86 kvm fixes Joerg Roedel
2009-03-05 12:12 ` [PATCH 1/6] kvm/x86/svm: force new asid on vcpu migration Joerg Roedel
2009-03-05 17:53   ` Marcelo Tosatti
2009-07-26 15:23   ` Avi Kivity
2009-03-05 12:12 ` [PATCH 2/6] kvm/x86/mmu: remove call to kvm_mmu_pte_write from walk_addr Joerg Roedel
2009-03-05 12:12 ` [PATCH 3/6] kvm/x86/mmu: don't unnecessarily recalculate table_gfn in *fetch Joerg Roedel
2009-03-05 14:36   ` Joerg Roedel
2009-03-05 14:36     ` Joerg Roedel
2009-03-05 12:12 ` Joerg Roedel [this message]
2009-03-05 21:11   ` [PATCH 4/6] kvm/x86/mmu: handle invlpg on large pages Marcelo Tosatti
2009-03-06 13:06     ` Joerg Roedel
2009-03-05 12:12 ` [PATCH 5/6] kvm/x86: call kvm_lapic_sync_from_vapic with preemption disabled Joerg Roedel
2009-03-05 21:39   ` Marcelo Tosatti
2009-03-05 12:12 ` [PATCH 6/6] kvm/x86/mmu: include PT_PAGE_SIZE_MASK in PT64_PERM_MASK Joerg Roedel
2009-03-08 12:32   ` Avi Kivity
2009-03-05 21:50 ` [PATCH 0/6] various x86 kvm fixes Marcelo Tosatti
2009-03-06 13:04   ` Joerg Roedel

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=1236255153-4432-5-git-send-email-joerg.roedel@amd.com \
    --to=joerg.roedel@amd.com \
    --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.