>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 [email protected] https://lists.sourceforge.net/lists/listinfo/kvm-devel
