>From 7c007a478b0369c54e4efcc05311c51b8fc8f037 Mon Sep 17 00:00:00 2001
From: Zhang Xiantao <[EMAIL PROTECTED]>
Date: Tue, 20 Nov 2007 23:41:44 +0800
Subject: [PATCH] KVM Portability: Splitting kvm strcuture
Moving the filed stat to kvm_x86.
Signed-off-by: Zhang Xiantao <[EMAIL PROTECTED]>
---
 drivers/kvm/kvm.h |   10 ----------
 drivers/kvm/mmu.c |   14 ++++++++------
 drivers/kvm/x86.c |    2 +-
 drivers/kvm/x86.h |   10 ++++++++++
 4 files changed, 19 insertions(+), 17 deletions(-)

diff --git a/drivers/kvm/kvm.h b/drivers/kvm/kvm.h
index 0df84b6..f752797 100644
--- a/drivers/kvm/kvm.h
+++ b/drivers/kvm/kvm.h
@@ -204,15 +204,6 @@ struct kvm_memory_slot {
        int user_alloc;
 };
 
-struct kvm_vm_stat {
-       u32 mmu_shadow_zapped;
-       u32 mmu_pte_write;
-       u32 mmu_pte_updated;
-       u32 mmu_pde_zapped;
-       u32 mmu_flooded;
-       u32 mmu_recycled;
-};
-
 struct kvm {
        struct mutex lock; /* protects everything except vcpus */
        int nmemslots;
@@ -224,7 +215,6 @@ struct kvm {
        struct kvm_io_bus mmio_bus;
        struct kvm_io_bus pio_bus;
        int round_robin_prev_vcpu;
-       struct kvm_vm_stat stat;
 };
 
 struct descriptor_table {
diff --git a/drivers/kvm/mmu.c b/drivers/kvm/mmu.c
index 683ad72..9ec754a 100644
--- a/drivers/kvm/mmu.c
+++ b/drivers/kvm/mmu.c
@@ -767,7 +767,7 @@ static void kvm_mmu_zap_page(struct kvm *kvm,
        u64 *parent_pte;
        struct kvm_x86 *kvm_x86 = to_kvm_x86(kvm);
 
-       ++kvm->stat.mmu_shadow_zapped;
+       ++kvm_x86->stat.mmu_shadow_zapped;
        while (page->multimapped || page->parent_pte) {
                if (!page->multimapped)
                        parent_pte = page->parent_pte;
@@ -1246,12 +1246,14 @@ static void mmu_pte_write_new_pte(struct
kvm_vcpu *vcpu,
                                  const void *new, int bytes,
                                  int offset_in_pte)
 {
+       struct kvm_x86 *kvm_x86 = to_kvm_x86(vcpu->kvm);
+
        if (page->role.level != PT_PAGE_TABLE_LEVEL) {
-               ++vcpu->kvm->stat.mmu_pde_zapped;
+               ++kvm_x86->stat.mmu_pde_zapped;
                return;
        }
 
-       ++vcpu->kvm->stat.mmu_pte_updated;
+       ++kvm_x86->stat.mmu_pte_updated;
        if (page->role.glevels == PT32_ROOT_LEVEL)
                paging32_update_pte(vcpu, page, spte, new, bytes,
                                    offset_in_pte);
@@ -1287,7 +1289,7 @@ void kvm_mmu_pte_write(struct kvm_vcpu *vcpu,
gpa_t gpa,
        struct kvm_x86 *kvm_x86 = to_kvm_x86(vcpu->kvm);
 
        pgprintk("%s: gpa %llx bytes %d\n", __FUNCTION__, gpa, bytes);
-       ++vcpu->kvm->stat.mmu_pte_write;
+       ++kvm_x86->stat.mmu_pte_write;
        kvm_mmu_audit(vcpu, "pre pte write");
        if (gfn == vcpu->last_pt_write_gfn
            && !last_updated_pte_accessed(vcpu)) {
@@ -1321,7 +1323,7 @@ void kvm_mmu_pte_write(struct kvm_vcpu *vcpu,
gpa_t gpa,
                        pgprintk("misaligned: gpa %llx bytes %d role
%x\n",
                                 gpa, bytes, page->role.word);
                        kvm_mmu_zap_page(vcpu->kvm, page);
-                       ++vcpu->kvm->stat.mmu_flooded;
+                       ++kvm_x86->stat.mmu_flooded;
                        continue;
                }
                page_offset = offset;
@@ -1372,7 +1374,7 @@ void __kvm_mmu_free_some_pages(struct kvm_vcpu
*vcpu)
                page = container_of(kvm_x86->active_mmu_pages.prev,
                                    struct kvm_mmu_page, link);
                kvm_mmu_zap_page(vcpu->kvm, page);
-               ++vcpu->kvm->stat.mmu_recycled;
+               ++kvm_x86->stat.mmu_recycled;
        }
 }
 
diff --git a/drivers/kvm/x86.c b/drivers/kvm/x86.c
index ace1dbc..a969d15 100644
--- a/drivers/kvm/x86.c
+++ b/drivers/kvm/x86.c
@@ -43,7 +43,7 @@
 #define CR8_RESERVED_BITS (~(unsigned long)X86_CR8_TPR)
 #define EFER_RESERVED_BITS 0xfffffffffffff2fe
 
-#define VM_STAT(x) offsetof(struct kvm, stat.x), KVM_STAT_VM
+#define VM_STAT(x) offsetof(struct kvm_x86, stat.x), KVM_STAT_VM
 #define VCPU_STAT(x) offsetof(struct kvm_vcpu, stat.x), KVM_STAT_VCPU
 
 struct kvm_x86_ops *kvm_x86_ops;
diff --git a/drivers/kvm/x86.h b/drivers/kvm/x86.h
index 11f7626..4093c81 100644
--- a/drivers/kvm/x86.h
+++ b/drivers/kvm/x86.h
@@ -245,6 +245,15 @@ struct kvm_mem_alias {
        gfn_t target_gfn;
 };
 
+struct kvm_vm_stat {
+       u32 mmu_shadow_zapped;
+       u32 mmu_pte_write;
+       u32 mmu_pte_updated;
+       u32 mmu_pde_zapped;
+       u32 mmu_flooded;
+       u32 mmu_recycled;
+};
+
 struct kvm_x86 {
        struct kvm kvm;
        int naliases;
@@ -261,6 +270,7 @@ struct kvm_x86 {
        struct kvm_ioapic *vioapic;
        unsigned int tss_addr;
        struct page *apic_access_page;
+       struct kvm_vm_stat stat;
 };
 
 static inline struct kvm_x86 *to_kvm_x86(struct kvm *kvm)
-- 
1.5.1.2

Attachment: 0009-KVM-Portability-Splitting-kvm-strcuture.patch
Description: 0009-KVM-Portability-Splitting-kvm-strcuture.patch

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
kvm-devel mailing list
kvm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/kvm-devel

Reply via email to