mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Dave Hansen <dave@linux.vnet.ibm.com>
To: linux-kernel@vger.kernel.org
Cc: kvm@vger.kernel.org, Dave Hansen <dave@linux.vnet.ibm.com>
Subject: [RFC][PATCH 1/9] abstract kvm x86 mmu->n_free_mmu_pages
Date: Tue, 15 Jun 2010 06:55:19 -0700	[thread overview]
Message-ID: <20100615135519.00781795@kernel.beaverton.ibm.com> (raw)
In-Reply-To: <20100615135518.BC244431@kernel.beaverton.ibm.com>


First of all, I think "free" is a poor name for this value.  In
this context, it means, "the number of mmu pages which this kvm
instance should be able to allocate."  To me, "free" implies
much more that the objects are there and ready for use.  I think
"available" is a much better description, especially when you
see how it is calculated.

In this patch, we abstract its use into a function.  We'll soon
replace the function's contents by calculating the value in a
different way.


Signed-off-by: Dave Hansen <dave@linux.vnet.ibm.com>
---

 linux-2.6.git-dave/arch/x86/kvm/mmu.c |    6 +++---
 linux-2.6.git-dave/arch/x86/kvm/mmu.h |    7 ++++++-
 2 files changed, 9 insertions(+), 4 deletions(-)

diff -puN arch/x86/kvm/mmu.c~abstract_kvm_free_mmu_pages arch/x86/kvm/mmu.c
--- linux-2.6.git/arch/x86/kvm/mmu.c~abstract_kvm_free_mmu_pages	2010-06-09 15:14:28.000000000 -0700
+++ linux-2.6.git-dave/arch/x86/kvm/mmu.c	2010-06-09 15:14:28.000000000 -0700
@@ -1522,7 +1522,7 @@ void kvm_mmu_change_mmu_pages(struct kvm
 {
 	int used_pages;
 
-	used_pages = kvm->arch.n_alloc_mmu_pages - kvm->arch.n_free_mmu_pages;
+	used_pages = kvm->arch.n_alloc_mmu_pages - kvm_mmu_available_pages(kvm);
 	used_pages = max(0, used_pages);
 
 	/*
@@ -2752,7 +2752,7 @@ EXPORT_SYMBOL_GPL(kvm_mmu_unprotect_page
 
 void __kvm_mmu_free_some_pages(struct kvm_vcpu *vcpu)
 {
-	while (vcpu->kvm->arch.n_free_mmu_pages < KVM_REFILL_PAGES &&
+	while (kvm_mmu_available_pages(vcpu->kvm) < KVM_REFILL_PAGES &&
 	       !list_empty(&vcpu->kvm->arch.active_mmu_pages)) {
 		struct kvm_mmu_page *sp;
 
@@ -2933,7 +2933,7 @@ static int mmu_shrink(int nr_to_scan, gf
 		idx = srcu_read_lock(&kvm->srcu);
 		spin_lock(&kvm->mmu_lock);
 		npages = kvm->arch.n_alloc_mmu_pages -
-			 kvm->arch.n_free_mmu_pages;
+			 kvm_mmu_available_pages(kvm);
 		cache_count += npages;
 		if (!kvm_freed && nr_to_scan > 0 && npages > 0) {
 			freed_pages = kvm_mmu_remove_some_alloc_mmu_pages(kvm);
diff -puN arch/x86/kvm/mmu.h~abstract_kvm_free_mmu_pages arch/x86/kvm/mmu.h
--- linux-2.6.git/arch/x86/kvm/mmu.h~abstract_kvm_free_mmu_pages	2010-06-09 15:14:28.000000000 -0700
+++ linux-2.6.git-dave/arch/x86/kvm/mmu.h	2010-06-09 15:14:28.000000000 -0700
@@ -50,9 +50,14 @@
 
 int kvm_mmu_get_spte_hierarchy(struct kvm_vcpu *vcpu, u64 addr, u64 sptes[4]);
 
+static inline unsigned int kvm_mmu_available_pages(struct kvm *kvm)
+{
+	return kvm->arch.n_free_mmu_pages;
+}
+
 static inline void kvm_mmu_free_some_pages(struct kvm_vcpu *vcpu)
 {
-	if (unlikely(vcpu->kvm->arch.n_free_mmu_pages < KVM_MIN_FREE_MMU_PAGES))
+	if (unlikely(kvm_mmu_available_pages(vcpu->kvm)< KVM_MIN_FREE_MMU_PAGES))
 		__kvm_mmu_free_some_pages(vcpu);
 }
 
_

  reply	other threads:[~2010-06-15 13:55 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-06-15 13:55 [RFC][PATCH 0/9] rework KVM mmu_shrink() code Dave Hansen
2010-06-15 13:55 ` Dave Hansen [this message]
2010-06-16  8:40   ` [RFC][PATCH 1/9] abstract kvm x86 mmu->n_free_mmu_pages Avi Kivity
2010-06-15 13:55 ` [RFC][PATCH 2/9] rename x86 kvm->arch.n_alloc_mmu_pages Dave Hansen
2010-06-15 13:55 ` [RFC][PATCH 3/9] replace x86 kvm n_free_mmu_pages with n_used_mmu_pages Dave Hansen
2010-06-16 14:25   ` Marcelo Tosatti
2010-06-16 15:42     ` Dave Hansen
2010-06-15 13:55 ` [RFC][PATCH 4/9] create aggregate kvm_total_used_mmu_pages value Dave Hansen
2010-06-16  8:48   ` Avi Kivity
2010-06-16 15:06     ` Dave Hansen
2010-06-17  8:43       ` Avi Kivity
2010-06-16 16:55     ` Dave Hansen
2010-06-17  8:23       ` Avi Kivity
2010-06-15 13:55 ` [RFC][PATCH 5/9] break out some mmu_skrink() code Dave Hansen
2010-06-15 13:55 ` [RFC][PATCH 6/9] remove kvm_freed variable Dave Hansen
2010-06-15 13:55 ` [RFC][PATCH 7/9] make kvm_get_kvm() more robust Dave Hansen
2010-06-15 13:55 ` [RFC][PATCH 8/9] reduce kvm_lock hold times in mmu_skrink() Dave Hansen
2010-06-16  8:54   ` Avi Kivity
2010-06-15 13:55 ` [RFC][PATCH 9/9] make kvm mmu shrinker more aggressive Dave Hansen
2010-06-16  9:24   ` Avi Kivity
2010-06-16 15:25     ` Dave Hansen
2010-06-17  8:37       ` Avi Kivity
2010-06-18 15:49       ` Dave Hansen
2010-06-20  8:11         ` Avi Kivity
2010-06-22 16:32           ` Dave Hansen
2010-07-22  4:36             ` Avi Kivity
2010-07-22  5:36               ` Dave Hansen
2010-07-22  5:42                 ` Avi Kivity
2010-06-16  8:38 ` [RFC][PATCH 0/9] rework KVM mmu_shrink() code Avi Kivity
2010-06-16 15:03   ` Dave Hansen
2010-06-17  8:40     ` 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=20100615135519.00781795@kernel.beaverton.ibm.com \
    --to=dave@linux.vnet.ibm.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®