|  | /* | 
|  | * 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 <sanjayl@kymasys.com> | 
|  | */ | 
|  |  | 
|  | #include <linux/kvm_host.h> | 
|  |  | 
|  | 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 | 
|  | } |