18c2ecf20Sopenharmony_ci/* 28c2ecf20Sopenharmony_ci * This file is subject to the terms and conditions of the GNU General Public 38c2ecf20Sopenharmony_ci * License. See the file "COPYING" in the main directory of this archive 48c2ecf20Sopenharmony_ci * for more details. 58c2ecf20Sopenharmony_ci * 68c2ecf20Sopenharmony_ci * KVM/MIPS: COP0 access histogram 78c2ecf20Sopenharmony_ci * 88c2ecf20Sopenharmony_ci * Copyright (C) 2012 MIPS Technologies, Inc. All rights reserved. 98c2ecf20Sopenharmony_ci * Authors: Sanjay Lal <sanjayl@kymasys.com> 108c2ecf20Sopenharmony_ci */ 118c2ecf20Sopenharmony_ci 128c2ecf20Sopenharmony_ci#include <linux/kvm_host.h> 138c2ecf20Sopenharmony_ci 148c2ecf20Sopenharmony_cichar *kvm_cop0_str[N_MIPS_COPROC_REGS] = { 158c2ecf20Sopenharmony_ci "Index", 168c2ecf20Sopenharmony_ci "Random", 178c2ecf20Sopenharmony_ci "EntryLo0", 188c2ecf20Sopenharmony_ci "EntryLo1", 198c2ecf20Sopenharmony_ci "Context", 208c2ecf20Sopenharmony_ci "PG Mask", 218c2ecf20Sopenharmony_ci "Wired", 228c2ecf20Sopenharmony_ci "HWREna", 238c2ecf20Sopenharmony_ci "BadVAddr", 248c2ecf20Sopenharmony_ci "Count", 258c2ecf20Sopenharmony_ci "EntryHI", 268c2ecf20Sopenharmony_ci "Compare", 278c2ecf20Sopenharmony_ci "Status", 288c2ecf20Sopenharmony_ci "Cause", 298c2ecf20Sopenharmony_ci "EXC PC", 308c2ecf20Sopenharmony_ci "PRID", 318c2ecf20Sopenharmony_ci "Config", 328c2ecf20Sopenharmony_ci "LLAddr", 338c2ecf20Sopenharmony_ci "Watch Lo", 348c2ecf20Sopenharmony_ci "Watch Hi", 358c2ecf20Sopenharmony_ci "X Context", 368c2ecf20Sopenharmony_ci "Reserved", 378c2ecf20Sopenharmony_ci "Impl Dep", 388c2ecf20Sopenharmony_ci "Debug", 398c2ecf20Sopenharmony_ci "DEPC", 408c2ecf20Sopenharmony_ci "PerfCnt", 418c2ecf20Sopenharmony_ci "ErrCtl", 428c2ecf20Sopenharmony_ci "CacheErr", 438c2ecf20Sopenharmony_ci "TagLo", 448c2ecf20Sopenharmony_ci "TagHi", 458c2ecf20Sopenharmony_ci "ErrorEPC", 468c2ecf20Sopenharmony_ci "DESAVE" 478c2ecf20Sopenharmony_ci}; 488c2ecf20Sopenharmony_ci 498c2ecf20Sopenharmony_civoid kvm_mips_dump_stats(struct kvm_vcpu *vcpu) 508c2ecf20Sopenharmony_ci{ 518c2ecf20Sopenharmony_ci#ifdef CONFIG_KVM_MIPS_DEBUG_COP0_COUNTERS 528c2ecf20Sopenharmony_ci int i, j; 538c2ecf20Sopenharmony_ci 548c2ecf20Sopenharmony_ci kvm_info("\nKVM VCPU[%d] COP0 Access Profile:\n", vcpu->vcpu_id); 558c2ecf20Sopenharmony_ci for (i = 0; i < N_MIPS_COPROC_REGS; i++) { 568c2ecf20Sopenharmony_ci for (j = 0; j < N_MIPS_COPROC_SEL; j++) { 578c2ecf20Sopenharmony_ci if (vcpu->arch.cop0->stat[i][j]) 588c2ecf20Sopenharmony_ci kvm_info("%s[%d]: %lu\n", kvm_cop0_str[i], j, 598c2ecf20Sopenharmony_ci vcpu->arch.cop0->stat[i][j]); 608c2ecf20Sopenharmony_ci } 618c2ecf20Sopenharmony_ci } 628c2ecf20Sopenharmony_ci#endif 638c2ecf20Sopenharmony_ci} 64