diff options
Diffstat (limited to 'arch/mips/kvm/stats.c')
| -rw-r--r-- | arch/mips/kvm/stats.c | 80 | 
1 files changed, 80 insertions, 0 deletions
diff --git a/arch/mips/kvm/stats.c b/arch/mips/kvm/stats.c new file mode 100644 index 000000000000..a74d6024c5ad --- /dev/null +++ b/arch/mips/kvm/stats.c @@ -0,0 +1,80 @@ +/* + * 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" +}; + +void kvm_mips_dump_stats(struct kvm_vcpu *vcpu) +{ +#ifdef CONFIG_KVM_MIPS_DEBUG_COP0_COUNTERS +	int i, j; + +	kvm_info("\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]) +				kvm_info("%s[%d]: %lu\n", kvm_cop0_str[i], j, +					 vcpu->arch.cop0->stat[i][j]); +		} +	} +#endif +}  |