mirror of
https://github.com/torvalds/linux.git
synced 2024-12-05 18:41:23 +00:00
KVM: MIPS: Extend counters & events for VZ GExcCodes
Extend MIPS KVM stats counters and kvm_transition trace event codes to cover hypervisor exceptions, which have their own GExcCode field in CP0_GuestCtl0 with up to 32 hypervisor exception cause codes. Signed-off-by: James Hogan <james.hogan@imgtec.com> Cc: Paolo Bonzini <pbonzini@redhat.com> Cc: "Radim Krčmář" <rkrcmar@redhat.com> Cc: Ralf Baechle <ralf@linux-mips.org> Cc: Steven Rostedt <rostedt@goodmis.org> Cc: Ingo Molnar <mingo@redhat.com> Cc: linux-mips@linux-mips.org Cc: kvm@vger.kernel.org
This commit is contained in:
parent
c58cf74179
commit
a7244920d1
@ -145,6 +145,16 @@ struct kvm_vcpu_stat {
|
||||
u64 fpe_exits;
|
||||
u64 msa_disabled_exits;
|
||||
u64 flush_dcache_exits;
|
||||
#ifdef CONFIG_KVM_MIPS_VZ
|
||||
u64 vz_gpsi_exits;
|
||||
u64 vz_gsfc_exits;
|
||||
u64 vz_hc_exits;
|
||||
u64 vz_grr_exits;
|
||||
u64 vz_gva_exits;
|
||||
u64 vz_ghfc_exits;
|
||||
u64 vz_gpa_exits;
|
||||
u64 vz_resvd_exits;
|
||||
#endif
|
||||
u64 halt_successful_poll;
|
||||
u64 halt_attempted_poll;
|
||||
u64 halt_poll_invalid;
|
||||
|
@ -59,6 +59,16 @@ struct kvm_stats_debugfs_item debugfs_entries[] = {
|
||||
{ "fpe", VCPU_STAT(fpe_exits), KVM_STAT_VCPU },
|
||||
{ "msa_disabled", VCPU_STAT(msa_disabled_exits), KVM_STAT_VCPU },
|
||||
{ "flush_dcache", VCPU_STAT(flush_dcache_exits), KVM_STAT_VCPU },
|
||||
#ifdef CONFIG_KVM_MIPS_VZ
|
||||
{ "vz_gpsi", VCPU_STAT(vz_gpsi_exits), KVM_STAT_VCPU },
|
||||
{ "vz_gsfc", VCPU_STAT(vz_gsfc_exits), KVM_STAT_VCPU },
|
||||
{ "vz_hc", VCPU_STAT(vz_hc_exits), KVM_STAT_VCPU },
|
||||
{ "vz_grr", VCPU_STAT(vz_grr_exits), KVM_STAT_VCPU },
|
||||
{ "vz_gva", VCPU_STAT(vz_gva_exits), KVM_STAT_VCPU },
|
||||
{ "vz_ghfc", VCPU_STAT(vz_ghfc_exits), KVM_STAT_VCPU },
|
||||
{ "vz_gpa", VCPU_STAT(vz_gpa_exits), KVM_STAT_VCPU },
|
||||
{ "vz_resvd", VCPU_STAT(vz_resvd_exits), KVM_STAT_VCPU },
|
||||
#endif
|
||||
{ "halt_successful_poll", VCPU_STAT(halt_successful_poll), KVM_STAT_VCPU },
|
||||
{ "halt_attempted_poll", VCPU_STAT(halt_attempted_poll), KVM_STAT_VCPU },
|
||||
{ "halt_poll_invalid", VCPU_STAT(halt_poll_invalid), KVM_STAT_VCPU },
|
||||
|
@ -66,6 +66,15 @@ DEFINE_EVENT(kvm_transition, kvm_out,
|
||||
#define KVM_TRACE_EXIT_WAIT 32
|
||||
#define KVM_TRACE_EXIT_CACHE 33
|
||||
#define KVM_TRACE_EXIT_SIGNAL 34
|
||||
/* 32 exit reasons correspond to GuestCtl0.GExcCode (VZ) */
|
||||
#define KVM_TRACE_EXIT_GEXCCODE_BASE 64
|
||||
#define KVM_TRACE_EXIT_GPSI 64 /* 0 */
|
||||
#define KVM_TRACE_EXIT_GSFC 65 /* 1 */
|
||||
#define KVM_TRACE_EXIT_HC 66 /* 2 */
|
||||
#define KVM_TRACE_EXIT_GRR 67 /* 3 */
|
||||
#define KVM_TRACE_EXIT_GVA 72 /* 8 */
|
||||
#define KVM_TRACE_EXIT_GHFC 73 /* 9 */
|
||||
#define KVM_TRACE_EXIT_GPA 74 /* 10 */
|
||||
|
||||
/* Tracepoints for VM exits */
|
||||
#define kvm_trace_symbol_exit_types \
|
||||
@ -85,7 +94,14 @@ DEFINE_EVENT(kvm_transition, kvm_out,
|
||||
{ KVM_TRACE_EXIT_MSA_DISABLED, "MSA Disabled" }, \
|
||||
{ KVM_TRACE_EXIT_WAIT, "WAIT" }, \
|
||||
{ KVM_TRACE_EXIT_CACHE, "CACHE" }, \
|
||||
{ KVM_TRACE_EXIT_SIGNAL, "Signal" }
|
||||
{ KVM_TRACE_EXIT_SIGNAL, "Signal" }, \
|
||||
{ KVM_TRACE_EXIT_GPSI, "GPSI" }, \
|
||||
{ KVM_TRACE_EXIT_GSFC, "GSFC" }, \
|
||||
{ KVM_TRACE_EXIT_HC, "HC" }, \
|
||||
{ KVM_TRACE_EXIT_GRR, "GRR" }, \
|
||||
{ KVM_TRACE_EXIT_GVA, "GVA" }, \
|
||||
{ KVM_TRACE_EXIT_GHFC, "GHFC" }, \
|
||||
{ KVM_TRACE_EXIT_GPA, "GPA" }
|
||||
|
||||
TRACE_EVENT(kvm_exit,
|
||||
TP_PROTO(struct kvm_vcpu *vcpu, unsigned int reason),
|
||||
|
Loading…
Reference in New Issue
Block a user