Re: [PATCH v2 09/18] KVM/MIPS32: COP0 accesses profiling.
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 majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH v2 09/18] KVM/MIPS32: COP0 accesses profiling.
On Wed, Nov 21, 2012 at 06:34:07PM -0800, Sanjay Lal wrote: Signed-off-by: Sanjay Lal sanj...@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 000..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 sanj...@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 majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH v2 09/18] KVM/MIPS32: COP0 accesses profiling.
Signed-off-by: Sanjay Lal sanj...@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 000..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 sanj...@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; +} -- 1.7.11.3 -- To unsubscribe from this list: send the line unsubscribe kvm in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH v2 09/18] KVM/MIPS32: COP0 accesses profiling.
Hello. On 22-11-2012 6:34, Sanjay Lal wrote: Signed-off-by: Sanjay Lal sanj...@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 000..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 sanj...@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 majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html