>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
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