Sanjay Lal | 3c20ef5 | 2012-11-21 18:34:07 -0800 | [diff] [blame] | 1 | /* |
Deng-Cheng Zhu | d116e81 | 2014-06-26 12:11:34 -0700 | [diff] [blame] | 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 | */ |
Sanjay Lal | 3c20ef5 | 2012-11-21 18:34:07 -0800 | [diff] [blame] | 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 | |
Deng-Cheng Zhu | d98403a | 2014-06-26 12:11:36 -0700 | [diff] [blame] | 66 | void kvm_mips_dump_stats(struct kvm_vcpu *vcpu) |
Sanjay Lal | 3c20ef5 | 2012-11-21 18:34:07 -0800 | [diff] [blame] | 67 | { |
| 68 | #ifdef CONFIG_KVM_MIPS_DEBUG_COP0_COUNTERS |
| 69 | int i, j; |
| 70 | |
Deng-Cheng Zhu | 6ad78a5 | 2014-06-26 12:11:35 -0700 | [diff] [blame] | 71 | kvm_info("\nKVM VCPU[%d] COP0 Access Profile:\n", vcpu->vcpu_id); |
Sanjay Lal | 3c20ef5 | 2012-11-21 18:34:07 -0800 | [diff] [blame] | 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]) |
Deng-Cheng Zhu | 6ad78a5 | 2014-06-26 12:11:35 -0700 | [diff] [blame] | 75 | kvm_info("%s[%d]: %lu\n", kvm_cop0_str[i], j, |
| 76 | vcpu->arch.cop0->stat[i][j]); |
Sanjay Lal | 3c20ef5 | 2012-11-21 18:34:07 -0800 | [diff] [blame] | 77 | } |
| 78 | } |
| 79 | #endif |
Sanjay Lal | 3c20ef5 | 2012-11-21 18:34:07 -0800 | [diff] [blame] | 80 | } |