All of lore.kernel.org
 help / color / mirror / Atom feed
From: Paolo Bonzini <pbonzini@redhat.com>
To: linux-kernel@vger.kernel.org, kvm@vger.kernel.org
Cc: Takuya Yoshikawa <yoshikawa_takuya_b1@lab.ntt.co.jp>,
	Xiao Guangrong <guangrong.xiao@linux.intel.com>,
	rkrcmar@redhat.com
Subject: [PATCH 9/9] KVM: x86: pass struct kvm_mmu_page to account/unaccount_shadowed
Date: Tue, 19 May 2015 19:25:13 +0200	[thread overview]
Message-ID: <1432056313-36100-10-git-send-email-pbonzini@redhat.com> (raw)
In-Reply-To: <1432056313-36100-1-git-send-email-pbonzini@redhat.com>

Prepare for multiple address spaces this way, since a VCPU is not available
where unaccount_shadowed is called.  We will get to the right kvm_memslots
1truct through the role field in struct kvm_mmu_page.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 arch/x86/kvm/mmu.c | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/arch/x86/kvm/mmu.c b/arch/x86/kvm/mmu.c
index ceed1c591bc5..6ea24812007a 100644
--- a/arch/x86/kvm/mmu.c
+++ b/arch/x86/kvm/mmu.c
@@ -804,12 +804,14 @@ static struct kvm_lpage_info *lpage_info_slot(gfn_t gfn,
 	return &slot->arch.lpage_info[level - 2][idx];
 }
 
-static void account_shadowed(struct kvm *kvm, gfn_t gfn)
+static void account_shadowed(struct kvm *kvm, struct kvm_mmu_page *sp)
 {
 	struct kvm_memory_slot *slot;
 	struct kvm_lpage_info *linfo;
+	gfn_t gfn;
 	int i;
 
+	gfn = sp->gfn;
 	slot = gfn_to_memslot(kvm, gfn);
 	for (i = PT_DIRECTORY_LEVEL; i <= PT_MAX_HUGEPAGE_LEVEL; ++i) {
 		linfo = lpage_info_slot(gfn, slot, i);
@@ -818,12 +820,14 @@ static void account_shadowed(struct kvm *kvm, gfn_t gfn)
 	kvm->arch.indirect_shadow_pages++;
 }
 
-static void unaccount_shadowed(struct kvm *kvm, gfn_t gfn)
+static void unaccount_shadowed(struct kvm *kvm, struct kvm_mmu_page *sp)
 {
 	struct kvm_memory_slot *slot;
 	struct kvm_lpage_info *linfo;
+	gfn_t gfn;
 	int i;
 
+	gfn = sp->gfn;
 	slot = gfn_to_memslot(kvm, gfn);
 	for (i = PT_DIRECTORY_LEVEL; i <= PT_MAX_HUGEPAGE_LEVEL; ++i) {
 		linfo = lpage_info_slot(gfn, slot, i);
@@ -2131,7 +2135,7 @@ static struct kvm_mmu_page *kvm_mmu_get_page(struct kvm_vcpu *vcpu,
 		if (level > PT_PAGE_TABLE_LEVEL && need_sync)
 			kvm_sync_pages(vcpu, gfn);
 
-		account_shadowed(vcpu->kvm, gfn);
+		account_shadowed(vcpu->kvm, sp);
 	}
 	sp->mmu_valid_gen = vcpu->kvm->arch.mmu_valid_gen;
 	init_shadow_page_table(sp);
@@ -2312,7 +2316,7 @@ static int kvm_mmu_prepare_zap_page(struct kvm *kvm, struct kvm_mmu_page *sp,
 	kvm_mmu_unlink_parents(kvm, sp);
 
 	if (!sp->role.invalid && !sp->role.direct)
-		unaccount_shadowed(kvm, sp->gfn);
+		unaccount_shadowed(kvm, sp);
 
 	if (sp->unsync)
 		kvm_unlink_unsync_page(kvm, sp);
-- 
1.8.3.1


  parent reply	other threads:[~2015-05-19 17:27 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-05-19 17:25 [PATCH 0/9] KVM: cleanups for memslots data structures Paolo Bonzini
2015-05-19 17:25 ` [PATCH 1/9] KVM: introduce kvm_alloc/free_memslots Paolo Bonzini
2015-05-20  7:38   ` Takuya Yoshikawa
2015-05-19 17:25 ` [PATCH 2/9] KVM: use kvm_memslots whenever possible Paolo Bonzini
2015-05-19 17:25 ` [PATCH 3/9] KVM: const-ify uses of struct kvm_userspace_memory_region Paolo Bonzini
2015-05-20  8:17   ` Takuya Yoshikawa
2015-05-19 17:25 ` [PATCH 4/9] KVM: add memslots argument to kvm_arch_memslots_updated Paolo Bonzini
2015-05-19 17:25 ` [PATCH 5/9] KVM: add "new" argument to kvm_arch_commit_memory_region Paolo Bonzini
2015-05-19 17:25 ` [PATCH 6/9] KVM: pass kvm_memory_slot to gfn_to_page_many_atomic Paolo Bonzini
2015-05-19 17:25 ` [PATCH 7/9] KVM: remove __gfn_to_pfn Paolo Bonzini
2015-05-19 17:25 ` [PATCH 8/9] KVM: x86: pass kvm_mmu_page to gfn_to_rmap Paolo Bonzini
2015-05-20 20:09   ` Radim Krčmář
2015-05-19 17:25 ` Paolo Bonzini [this message]
2015-05-20  8:41   ` [PATCH 9/9] KVM: x86: pass struct kvm_mmu_page to account/unaccount_shadowed Takuya Yoshikawa
2015-05-20 20:12   ` Radim Krčmář
2015-05-20 20:19 ` [PATCH 0/9] KVM: cleanups for memslots data structures Radim Krčmář

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=1432056313-36100-10-git-send-email-pbonzini@redhat.com \
    --to=pbonzini@redhat.com \
    --cc=guangrong.xiao@linux.intel.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=rkrcmar@redhat.com \
    --cc=yoshikawa_takuya_b1@lab.ntt.co.jp \
    /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.