On Wed, Nov 21, 2012 at 06:34:07PM -0800, Sanjay Lal wrote:
>
> Signed-off-by: Sanjay Lal <[email protected]>
> ---
> 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 <[email protected]>
> +*/
> +
> +#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 [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html