Skip to content
Snippets Groups Projects
Commit 91314cb0 authored by Wei Huang's avatar Wei Huang Committed by Paolo Bonzini
Browse files

arm/arm64: KVM: Add exit reaons to kvm_exit event tracing


This patch extends trace_kvm_exit() to include KVM exit reasons
(i.e. EC of HSR). The tracing function then dumps both exit reason
and PC of vCPU, shown as the following. Tracing tools can use this
new exit_reason field to better understand the behavior of guest VMs.

886.301252: kvm_exit:             HSR_EC: 0x0024, PC: 0xfffffe0000506b28

Signed-off-by: default avatarWei Huang <wei@redhat.com>
Signed-off-by: default avatarChristoffer Dall <christoffer.dall@linaro.org>
parent a050dfb2
Branches
No related tags found
No related merge requests found
...@@ -540,7 +540,7 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu, struct kvm_run *run) ...@@ -540,7 +540,7 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu, struct kvm_run *run)
vcpu->mode = OUTSIDE_GUEST_MODE; vcpu->mode = OUTSIDE_GUEST_MODE;
kvm_guest_exit(); kvm_guest_exit();
trace_kvm_exit(*vcpu_pc(vcpu)); trace_kvm_exit(kvm_vcpu_trap_get_class(vcpu), *vcpu_pc(vcpu));
/* /*
* We may have taken a host interrupt in HYP mode (ie * We may have taken a host interrupt in HYP mode (ie
* while executing the guest). This interrupt is still * while executing the guest). This interrupt is still
......
...@@ -25,18 +25,22 @@ TRACE_EVENT(kvm_entry, ...@@ -25,18 +25,22 @@ TRACE_EVENT(kvm_entry,
); );
TRACE_EVENT(kvm_exit, TRACE_EVENT(kvm_exit,
TP_PROTO(unsigned long vcpu_pc), TP_PROTO(unsigned int exit_reason, unsigned long vcpu_pc),
TP_ARGS(vcpu_pc), TP_ARGS(exit_reason, vcpu_pc),
TP_STRUCT__entry( TP_STRUCT__entry(
__field( unsigned int, exit_reason )
__field( unsigned long, vcpu_pc ) __field( unsigned long, vcpu_pc )
), ),
TP_fast_assign( TP_fast_assign(
__entry->exit_reason = exit_reason;
__entry->vcpu_pc = vcpu_pc; __entry->vcpu_pc = vcpu_pc;
), ),
TP_printk("PC: 0x%08lx", __entry->vcpu_pc) TP_printk("HSR_EC: 0x%04x, PC: 0x%08lx",
__entry->exit_reason,
__entry->vcpu_pc)
); );
TRACE_EVENT(kvm_guest_fault, TRACE_EVENT(kvm_guest_fault,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment