Message ID | 1353551656-23579-10-git-send-email-sanjayl@kymasys.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Hello. On 22-11-2012 6:34, Sanjay Lal wrote: > Signed-off-by: Sanjay Lal <sanjayl@kymasys.com> > --- > arch/mips/kvm/kvm_mips_stats.c | 81 ++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 81 insertions(+) > create mode 100644 arch/mips/kvm/kvm_mips_stats.c > diff --git a/arch/mips/kvm/kvm_mips_stats.c b/arch/mips/kvm/kvm_mips_stats.c > new file mode 100644 > index 0000000..e442a26 > --- /dev/null > +++ b/arch/mips/kvm/kvm_mips_stats.c > @@ -0,0 +1,81 @@ > +/* > +* This file is subject to the terms and conditions of the GNU General Public > +* License. See the file "COPYING" in the main directory of this archive > +* for more details. > +* > +* KVM/MIPS: COP0 access histogram > +* > +* Copyright (C) 2012 MIPS Technologies, Inc. All rights reserved. > +* Authors: Sanjay Lal <sanjayl@kymasys.com> > +*/ > + > +#include <linux/kvm_host.h> > + > +char *kvm_mips_exit_types_str[MAX_KVM_MIPS_EXIT_TYPES] = { > + "WAIT", > + "CACHE", > + "Signal", > + "Interrupt", > + "COP0/1 Unusable", > + "TLB Mod", > + "TLB Miss (LD)", > + "TLB Miss (ST)", > + "Address Err (ST)", > + "Address Error (LD)", I guess it should be "Error" in both cases. > + "System Call", > + "Reserved Inst", > + "Break Inst", > + "D-Cache Flushes", > +}; > + > +char *kvm_cop0_str[N_MIPS_COPROC_REGS] = { > + "Index", > + "Random", > + "EntryLo0", > + "EntryLo1", > + "Context", > + "PG Mask", > + "Wired", > + "HWREna", > + "BadVAddr", > + "Count", > + "EntryHI", EntryHi. > +int kvm_mips_dump_stats(struct kvm_vcpu *vcpu) > +{ > + int i, j __unused; Empty line after declarations wouldn't hurt. > +#ifdef CONFIG_KVM_MIPS_DEBUG_COP0_COUNTERS WBR, Sergei -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Wed, Nov 21, 2012 at 06:34:07PM -0800, Sanjay Lal wrote: > > Signed-off-by: Sanjay Lal <sanjayl@kymasys.com> > --- > arch/mips/kvm/kvm_mips_stats.c | 81 ++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 81 insertions(+) > create mode 100644 arch/mips/kvm/kvm_mips_stats.c > > diff --git a/arch/mips/kvm/kvm_mips_stats.c b/arch/mips/kvm/kvm_mips_stats.c > new file mode 100644 > index 0000000..e442a26 > --- /dev/null > +++ b/arch/mips/kvm/kvm_mips_stats.c > @@ -0,0 +1,81 @@ > +/* > +* This file is subject to the terms and conditions of the GNU General Public > +* License. See the file "COPYING" in the main directory of this archive > +* for more details. > +* > +* KVM/MIPS: COP0 access histogram > +* > +* Copyright (C) 2012 MIPS Technologies, Inc. All rights reserved. > +* Authors: Sanjay Lal <sanjayl@kymasys.com> > +*/ > + > +#include <linux/kvm_host.h> > + > +char *kvm_mips_exit_types_str[MAX_KVM_MIPS_EXIT_TYPES] = { > + "WAIT", > + "CACHE", > + "Signal", > + "Interrupt", > + "COP0/1 Unusable", > + "TLB Mod", > + "TLB Miss (LD)", > + "TLB Miss (ST)", > + "Address Err (ST)", > + "Address Error (LD)", > + "System Call", > + "Reserved Inst", > + "Break Inst", > + "D-Cache Flushes", > +}; > + > +char *kvm_cop0_str[N_MIPS_COPROC_REGS] = { > + "Index", > + "Random", > + "EntryLo0", > + "EntryLo1", > + "Context", > + "PG Mask", > + "Wired", > + "HWREna", > + "BadVAddr", > + "Count", > + "EntryHI", > + "Compare", > + "Status", > + "Cause", > + "EXC PC", > + "PRID", > + "Config", > + "LLAddr", > + "Watch Lo", > + "Watch Hi", > + "X Context", > + "Reserved", > + "Impl Dep", > + "Debug", > + "DEPC", > + "PerfCnt", > + "ErrCtl", > + "CacheErr", > + "TagLo", > + "TagHi", > + "ErrorEPC", > + "DESAVE" > +}; > + > +int kvm_mips_dump_stats(struct kvm_vcpu *vcpu) > +{ > + int i, j __unused; > +#ifdef CONFIG_KVM_MIPS_DEBUG_COP0_COUNTERS > + printk("\nKVM VCPU[%d] COP0 Access Profile:\n", vcpu->vcpu_id); > + for (i = 0; i < N_MIPS_COPROC_REGS; i++) { > + for (j = 0; j < N_MIPS_COPROC_SEL; j++) { > + if (vcpu->arch.cop0->stat[i][j]) > + printk("%s[%d]: %lu\n", kvm_cop0_str[i], j, > + vcpu->arch.cop0->stat[i][j]); > + } > + } > +#endif > + > + return 0; > +} You need to use ftrace event for that. Much more flexible with perf integration and no need to recompile to enabled/disable. -- Gleb. -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Feb 6, 2013, at 8:17 AM, Gleb Natapov wrote: > On Wed, Nov 21, 2012 at 06:34:07PM -0800, Sanjay Lal wrote: >> >> +int kvm_mips_dump_stats(struct kvm_vcpu *vcpu) >> +{ >> + int i, j __unused; >> +#ifdef CONFIG_KVM_MIPS_DEBUG_COP0_COUNTERS >> + printk("\nKVM VCPU[%d] COP0 Access Profile:\n", vcpu->vcpu_id); >> + for (i = 0; i < N_MIPS_COPROC_REGS; i++) { >> + for (j = 0; j < N_MIPS_COPROC_SEL; j++) { >> + if (vcpu->arch.cop0->stat[i][j]) >> + printk("%s[%d]: %lu\n", kvm_cop0_str[i], j, >> + vcpu->arch.cop0->stat[i][j]); >> + } >> + } >> +#endif >> + >> + return 0; >> +} > You need to use ftrace event for that. Much more flexible with perf > integration and no need to recompile to enabled/disable. > > -- > Gleb. Agreed, I'll start using trace for keeping track of COP0 accesses. Regards Sanjay -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/arch/mips/kvm/kvm_mips_stats.c b/arch/mips/kvm/kvm_mips_stats.c new file mode 100644 index 0000000..e442a26 --- /dev/null +++ b/arch/mips/kvm/kvm_mips_stats.c @@ -0,0 +1,81 @@ +/* +* This file is subject to the terms and conditions of the GNU General Public +* License. See the file "COPYING" in the main directory of this archive +* for more details. +* +* KVM/MIPS: COP0 access histogram +* +* Copyright (C) 2012 MIPS Technologies, Inc. All rights reserved. +* Authors: Sanjay Lal <sanjayl@kymasys.com> +*/ + +#include <linux/kvm_host.h> + +char *kvm_mips_exit_types_str[MAX_KVM_MIPS_EXIT_TYPES] = { + "WAIT", + "CACHE", + "Signal", + "Interrupt", + "COP0/1 Unusable", + "TLB Mod", + "TLB Miss (LD)", + "TLB Miss (ST)", + "Address Err (ST)", + "Address Error (LD)", + "System Call", + "Reserved Inst", + "Break Inst", + "D-Cache Flushes", +}; + +char *kvm_cop0_str[N_MIPS_COPROC_REGS] = { + "Index", + "Random", + "EntryLo0", + "EntryLo1", + "Context", + "PG Mask", + "Wired", + "HWREna", + "BadVAddr", + "Count", + "EntryHI", + "Compare", + "Status", + "Cause", + "EXC PC", + "PRID", + "Config", + "LLAddr", + "Watch Lo", + "Watch Hi", + "X Context", + "Reserved", + "Impl Dep", + "Debug", + "DEPC", + "PerfCnt", + "ErrCtl", + "CacheErr", + "TagLo", + "TagHi", + "ErrorEPC", + "DESAVE" +}; + +int kvm_mips_dump_stats(struct kvm_vcpu *vcpu) +{ + int i, j __unused; +#ifdef CONFIG_KVM_MIPS_DEBUG_COP0_COUNTERS + printk("\nKVM VCPU[%d] COP0 Access Profile:\n", vcpu->vcpu_id); + for (i = 0; i < N_MIPS_COPROC_REGS; i++) { + for (j = 0; j < N_MIPS_COPROC_SEL; j++) { + if (vcpu->arch.cop0->stat[i][j]) + printk("%s[%d]: %lu\n", kvm_cop0_str[i], j, + vcpu->arch.cop0->stat[i][j]); + } + } +#endif + + return 0; +}
Signed-off-by: Sanjay Lal <sanjayl@kymasys.com> --- arch/mips/kvm/kvm_mips_stats.c | 81 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 arch/mips/kvm/kvm_mips_stats.c