# HG changeset patch # User yamahata@xxxxxxxxxxxxx # Date 1155023261 -32400 # Node ID 3fa2d558686ff6de72d7fdfea2dc0f5e5350bcac # Parent 15498beef5d816c171938dff9b1f5bfa7a513c28 add perfcounter for vTLB flush. PATCHNAME: perfc_for_vtlb_flush Signed-off-by: Isaku Yamahata diff -r 15498beef5d8 -r 3fa2d558686f xen/arch/ia64/xen/domain.c --- a/xen/arch/ia64/xen/domain.c Tue Aug 08 14:42:34 2006 -0600 +++ b/xen/arch/ia64/xen/domain.c Tue Aug 08 16:47:41 2006 +0900 @@ -102,6 +102,7 @@ static void flush_vtlb_for_context_switc vhpt_flush(); } local_flush_tlb_all(); + perfc_incrc(flush_vtlb_for_context_switch); } } diff -r 15498beef5d8 -r 3fa2d558686f xen/arch/ia64/xen/vhpt.c --- a/xen/arch/ia64/xen/vhpt.c Tue Aug 08 14:42:34 2006 -0600 +++ b/xen/arch/ia64/xen/vhpt.c Tue Aug 08 16:47:41 2006 +0900 @@ -144,6 +144,8 @@ void vcpu_flush_vtlb_all(struct vcpu *v) /* We could clear bit in d->domain_dirty_cpumask only if domain d in not running on this processor. There is currently no easy way to check this. */ + + perfc_incrc(vcpu_flush_vtlb_all); } static void __vcpu_flush_vtlb_all(void *vcpu) @@ -167,6 +169,7 @@ void domain_flush_vtlb_all (void) __vcpu_flush_vtlb_all, v, 1, 1); } + perfc_incrc(domain_flush_vtlb_all); } static void cpu_flush_vhpt_range (int cpu, u64 vadr, u64 addr_range) @@ -189,6 +192,7 @@ void vcpu_flush_tlb_vhpt_range (u64 vadr cpu_flush_vhpt_range (current->processor, vadr, 1UL << log_range); ia64_ptcl(vadr, log_range << 2); ia64_srlz_i(); + perfc_incrc(vcpu_flush_tlb_vhpt_range); } void domain_flush_vtlb_range (struct domain *d, u64 vadr, u64 addr_range) @@ -225,6 +229,7 @@ void domain_flush_vtlb_range (struct dom /* ptc.ga */ ia64_global_tlb_purge(vadr,vadr+addr_range,PAGE_SHIFT); + perfc_incrc(domain_flush_vtlb_range); } static void flush_tlb_vhpt_all (struct domain *d) diff -r 15498beef5d8 -r 3fa2d558686f xen/include/asm-ia64/perfc_defn.h --- a/xen/include/asm-ia64/perfc_defn.h Tue Aug 08 14:42:34 2006 -0600 +++ b/xen/include/asm-ia64/perfc_defn.h Tue Aug 08 16:47:41 2006 +0900 @@ -40,3 +40,12 @@ PERFCOUNTER_ARRAY(fast_hyperprivop, "f PERFCOUNTER_ARRAY(slow_reflect, "slow reflection", 0x80) PERFCOUNTER_ARRAY(fast_reflect, "fast reflection", 0x80) + +// vhpt.c +PERFCOUNTER_CPU(vcpu_flush_vtlb_all, "vcpu_flush_vtlb_all") +PERFCOUNTER_CPU(domain_flush_vtlb_all, "domain_flush_vtlb_all") +PERFCOUNTER_CPU(vcpu_flush_tlb_vhpt_range, "vcpu_flush_tlb_vhpt_range") +PERFCOUNTER_CPU(domain_flush_vtlb_range, "domain_flush_vtlb_range") + +// domain.c +PERFCOUNTER_CPU(flush_vtlb_for_context_switch, "flush_vtlb_for_context_switch")