# HG changeset patch # User yamahata@xxxxxxxxxxxxx # Date 1156405495 -32400 # Node ID 545440872f603e60a0d457ca250e3b9eceb0bf53 # Parent 1a2695d2a79a6f79826759e759a0a3d7abc13142 add perfcounter for vTLB flush. PATCHNAME: perfc_for_vtlb_flush Signed-off-by: Isaku Yamahata diff -r 1a2695d2a79a -r 545440872f60 xen/arch/ia64/xen/domain.c --- a/xen/arch/ia64/xen/domain.c Mon Jul 24 21:25:25 2006 +0900 +++ b/xen/arch/ia64/xen/domain.c Thu Aug 24 16:44:55 2006 +0900 @@ -101,6 +101,7 @@ static void flush_vtlb_for_context_switc vhpt_flush(); } local_flush_tlb_all(); + perfc_incrc(flush_vtlb_for_context_switch); } } diff -r 1a2695d2a79a -r 545440872f60 xen/arch/ia64/xen/vhpt.c --- a/xen/arch/ia64/xen/vhpt.c Mon Jul 24 21:25:25 2006 +0900 +++ b/xen/arch/ia64/xen/vhpt.c Thu Aug 24 16:44:55 2006 +0900 @@ -155,6 +155,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) @@ -178,6 +180,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) @@ -200,6 +203,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) @@ -236,6 +240,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 1a2695d2a79a -r 545440872f60 xen/include/asm-ia64/perfc_defn.h --- a/xen/include/asm-ia64/perfc_defn.h Mon Jul 24 21:25:25 2006 +0900 +++ b/xen/include/asm-ia64/perfc_defn.h Thu Aug 24 16:44:55 2006 +0900 @@ -107,3 +107,12 @@ PERFPRIVOPADDR(get_ifa) PERFPRIVOPADDR(get_ifa) PERFPRIVOPADDR(thash) #endif + +// 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")