[PATCH v2 2/3] RISC-V: KVM: add tracepoints for guest page faults

From: wang.yechao255

Date: Wed Apr 29 2026 - 05:38:05 EST


From: Wang Yechao <wang.yechao255@xxxxxxxxxx>


Add the kvm_page_fault event tracepoints to count the number of KVM

guest page faults.


Signed-off-by: Wang Yechao <wang.yechao255@xxxxxxxxxx>

---

 arch/riscv/kvm/trace.h     | 25 +++++++++++++++++++++++++

 arch/riscv/kvm/vcpu_exit.c |  3 +++

 2 files changed, 28 insertions(+)


diff --git a/arch/riscv/kvm/trace.h b/arch/riscv/kvm/trace.h

index 3d54175d805c..9056cc9883cf 100644

--- a/arch/riscv/kvm/trace.h

+++ b/arch/riscv/kvm/trace.h

@@ -56,6 +56,31 @@ TRACE_EVENT(kvm_exit,

  __entry->htinst)

 );

 

+/*

+ * Tracepoint for page fault.

+ */

+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_RSICV_KVM_H */

 

 #undef TRACE_INCLUDE_PATH

diff --git a/arch/riscv/kvm/vcpu_exit.c b/arch/riscv/kvm/vcpu_exit.c

index 0bb0c51e3c89..0cfb0149da9f 100644

--- a/arch/riscv/kvm/vcpu_exit.c

+++ b/arch/riscv/kvm/vcpu_exit.c

@@ -11,6 +11,7 @@

 #include <asm/insn-def.h>

 #include <asm/kvm_mmu.h>

 #include <asm/kvm_nacl.h>

+#include "trace.h"

 

 static int gstage_page_fault(struct kvm_vcpu *vcpu, struct kvm_run *run,

       struct kvm_cpu_trap *trap)

@@ -43,6 +44,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.43.5