162306a36Sopenharmony_ci/* 262306a36Sopenharmony_ci * This file is subject to the terms and conditions of the GNU General Public 362306a36Sopenharmony_ci * License. See the file "COPYING" in the main directory of this archive 462306a36Sopenharmony_ci * for more details. 562306a36Sopenharmony_ci * 662306a36Sopenharmony_ci * KVM/MIPS: COP0 access histogram 762306a36Sopenharmony_ci * 862306a36Sopenharmony_ci * Copyright (C) 2012 MIPS Technologies, Inc. All rights reserved. 962306a36Sopenharmony_ci * Authors: Sanjay Lal <sanjayl@kymasys.com> 1062306a36Sopenharmony_ci */ 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_ci#include <linux/kvm_host.h> 1362306a36Sopenharmony_ci 1462306a36Sopenharmony_cichar *kvm_cop0_str[N_MIPS_COPROC_REGS] = { 1562306a36Sopenharmony_ci "Index", 1662306a36Sopenharmony_ci "Random", 1762306a36Sopenharmony_ci "EntryLo0", 1862306a36Sopenharmony_ci "EntryLo1", 1962306a36Sopenharmony_ci "Context", 2062306a36Sopenharmony_ci "PG Mask", 2162306a36Sopenharmony_ci "Wired", 2262306a36Sopenharmony_ci "HWREna", 2362306a36Sopenharmony_ci "BadVAddr", 2462306a36Sopenharmony_ci "Count", 2562306a36Sopenharmony_ci "EntryHI", 2662306a36Sopenharmony_ci "Compare", 2762306a36Sopenharmony_ci "Status", 2862306a36Sopenharmony_ci "Cause", 2962306a36Sopenharmony_ci "EXC PC", 3062306a36Sopenharmony_ci "PRID", 3162306a36Sopenharmony_ci "Config", 3262306a36Sopenharmony_ci "LLAddr", 3362306a36Sopenharmony_ci "Watch Lo", 3462306a36Sopenharmony_ci "Watch Hi", 3562306a36Sopenharmony_ci "X Context", 3662306a36Sopenharmony_ci "Reserved", 3762306a36Sopenharmony_ci "Impl Dep", 3862306a36Sopenharmony_ci "Debug", 3962306a36Sopenharmony_ci "DEPC", 4062306a36Sopenharmony_ci "PerfCnt", 4162306a36Sopenharmony_ci "ErrCtl", 4262306a36Sopenharmony_ci "CacheErr", 4362306a36Sopenharmony_ci "TagLo", 4462306a36Sopenharmony_ci "TagHi", 4562306a36Sopenharmony_ci "ErrorEPC", 4662306a36Sopenharmony_ci "DESAVE" 4762306a36Sopenharmony_ci}; 4862306a36Sopenharmony_ci 4962306a36Sopenharmony_civoid kvm_mips_dump_stats(struct kvm_vcpu *vcpu) 5062306a36Sopenharmony_ci{ 5162306a36Sopenharmony_ci#ifdef CONFIG_KVM_MIPS_DEBUG_COP0_COUNTERS 5262306a36Sopenharmony_ci int i, j; 5362306a36Sopenharmony_ci 5462306a36Sopenharmony_ci kvm_info("\nKVM VCPU[%d] COP0 Access Profile:\n", vcpu->vcpu_id); 5562306a36Sopenharmony_ci for (i = 0; i < N_MIPS_COPROC_REGS; i++) { 5662306a36Sopenharmony_ci for (j = 0; j < N_MIPS_COPROC_SEL; j++) { 5762306a36Sopenharmony_ci if (vcpu->arch.cop0.stat[i][j]) 5862306a36Sopenharmony_ci kvm_info("%s[%d]: %lu\n", kvm_cop0_str[i], j, 5962306a36Sopenharmony_ci vcpu->arch.cop0.stat[i][j]); 6062306a36Sopenharmony_ci } 6162306a36Sopenharmony_ci } 6262306a36Sopenharmony_ci#endif 6362306a36Sopenharmony_ci} 64