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 @@ | |||
1 | /* | ||
2 | * This file is subject to the terms and conditions of the GNU General Public | ||
3 | * License. See the file "COPYING" in the main directory of this archive | ||
4 | * for more details. | ||
5 | * | ||
6 | * KVM/MIPS: COP0 access histogram | ||
7 | * | ||
8 | * Copyright (C) 2012 MIPS Technologies, Inc. All rights reserved. | ||
9 | * Authors: Sanjay Lal <sanjayl@kymasys.com> | ||
10 | */ | ||
11 | |||
12 | #include <linux/kvm_host.h> | ||
13 | |||
14 | char *kvm_mips_exit_types_str[MAX_KVM_MIPS_EXIT_TYPES] = { | ||
15 | "WAIT", | ||
16 | "CACHE", | ||
17 | "Signal", | ||
18 | "Interrupt", | ||
19 | "COP0/1 Unusable", | ||
20 | "TLB Mod", | ||
21 | "TLB Miss (LD)", | ||
22 | "TLB Miss (ST)", | ||
23 | "Address Err (ST)", | ||
24 | "Address Error (LD)", | ||
25 | "System Call", | ||
26 | "Reserved Inst", | ||
27 | "Break Inst", | ||
28 | "D-Cache Flushes", | ||
29 | }; | ||
30 | |||
31 | char *kvm_cop0_str[N_MIPS_COPROC_REGS] = { | ||
32 | "Index", | ||
33 | "Random", | ||
34 | "EntryLo0", | ||
35 | "EntryLo1", | ||
36 | "Context", | ||
37 | "PG Mask", | ||
38 | "Wired", | ||
39 | "HWREna", | ||
40 | "BadVAddr", | ||
41 | "Count", | ||
42 | "EntryHI", | ||
43 | "Compare", | ||
44 | "Status", | ||
45 | "Cause", | ||
46 | "EXC PC", | ||
47 | "PRID", | ||
48 | "Config", | ||
49 | "LLAddr", | ||
50 | "Watch Lo", | ||
51 | "Watch Hi", | ||
52 | "X Context", | ||
53 | "Reserved", | ||
54 | "Impl Dep", | ||
55 | "Debug", | ||
56 | "DEPC", | ||
57 | "PerfCnt", | ||
58 | "ErrCtl", | ||
59 | "CacheErr", | ||
60 | "TagLo", | ||
61 | "TagHi", | ||
62 | "ErrorEPC", | ||
63 | "DESAVE" | ||
64 | }; | ||
65 | |||
66 | void kvm_mips_dump_stats(struct kvm_vcpu *vcpu) | ||
67 | { | ||
68 | #ifdef CONFIG_KVM_MIPS_DEBUG_COP0_COUNTERS | ||
69 | int i, j; | ||
70 | |||
71 | kvm_info("\nKVM VCPU[%d] COP0 Access Profile:\n", vcpu->vcpu_id); | ||
72 | for (i = 0; i < N_MIPS_COPROC_REGS; i++) { | ||
73 | for (j = 0; j < N_MIPS_COPROC_SEL; j++) { | ||
74 | if (vcpu->arch.cop0->stat[i][j]) | ||
75 | kvm_info("%s[%d]: %lu\n", kvm_cop0_str[i], j, | ||
76 | vcpu->arch.cop0->stat[i][j]); | ||
77 | } | ||
78 | } | ||
79 | #endif | ||
80 | } | ||