Add the kvm_page_fault event tracepoint to count the number of KVM guest page faults. Signed-off-by: Wang Yechao --- arch/riscv/kvm/trace.h | 22 ++++++++++++++++++++++ arch/riscv/kvm/vcpu_exit.c | 2 ++ 2 files changed, 24 insertions(+) diff --git a/arch/riscv/kvm/trace.h b/arch/riscv/kvm/trace.h index 23a5fd1b686e5..07fcf5b6059b6 100644 --- a/arch/riscv/kvm/trace.h +++ b/arch/riscv/kvm/trace.h @@ -133,6 +133,28 @@ TRACE_EVENT(kvm_vcpu_irq, __entry->vcpu_id, __entry->irq, __entry->level) ); +TRACE_EVENT(kvm_page_fault, + TP_PROTO(struct kvm_vcpu *vcpu, u64 fault_address, u64 error_code), + TP_ARGS(vcpu, fault_address, error_code), + + TP_STRUCT__entry( + __field(unsigned int, vcpu_id) + __field(u64, fault_address) + __field(u64, error_code) + ), + + TP_fast_assign( + __entry->vcpu_id = vcpu->vcpu_id; + __entry->fault_address = fault_address; + __entry->error_code = error_code; + ), + + TP_printk("vcpu %u address 0x%016llx error_code 0x%llx", + __entry->vcpu_id, + __entry->fault_address, + __entry->error_code) +); + #endif /* _TRACE_KVM_H */ #undef TRACE_INCLUDE_PATH diff --git a/arch/riscv/kvm/vcpu_exit.c b/arch/riscv/kvm/vcpu_exit.c index 88e0c369b3544..8f44e27563f85 100644 --- a/arch/riscv/kvm/vcpu_exit.c +++ b/arch/riscv/kvm/vcpu_exit.c @@ -64,6 +64,8 @@ static int gstage_page_fault(struct kvm_vcpu *vcpu, struct kvm_run *run, }; } + trace_kvm_page_fault(vcpu, fault_addr, trap->scause); + ret = kvm_riscv_mmu_map(vcpu, memslot, fault_addr, hva, (trap->scause == EXC_STORE_GUEST_PAGE_FAULT) ? true : false, &host_map); -- 2.39.3