On Wed, Jun 30, 2021 at 2:48 PM David Matlack <dmatlack@xxxxxxxxxx> wrote: > > Enum values have to be exported to userspace since the formatting is not > done in the kernel. Without doing this perf maps RET_PF_FIXED and > RET_PF_SPURIOUS to 0, which results in incorrect output: > > $ perf record -a -e kvmmmu:fast_page_fault --filter "ret==3" -- ./access_tracking_perf_test > $ perf script | head -1 > [...] new 610006048d25877 spurious 0 fixed 0 <------ should be 1 > > Fix this by exporting the enum values to userspace with TRACE_DEFINE_ENUM. > > Fixes: c4371c2a682e ("KVM: x86/mmu: Return unique RET_PF_* values if the fault was fixed") > Signed-off-by: David Matlack <dmatlack@xxxxxxxxxx> > --- > arch/x86/kvm/mmu/mmutrace.h | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/arch/x86/kvm/mmu/mmutrace.h b/arch/x86/kvm/mmu/mmutrace.h > index efbad33a0645..55c7e0fcda52 100644 > --- a/arch/x86/kvm/mmu/mmutrace.h > +++ b/arch/x86/kvm/mmu/mmutrace.h > @@ -244,6 +244,9 @@ TRACE_EVENT( > __entry->access) > ); > > +TRACE_DEFINE_ENUM(RET_PF_FIXED); > +TRACE_DEFINE_ENUM(RET_PF_SPURIOUS); > + If you're planning to send out a v3 anyway, it might be worth adding all the PF return code enums: enum { RET_PF_RETRY = 0, RET_PF_EMULATE, RET_PF_INVALID, RET_PF_FIXED, RET_PF_SPURIOUS, }; Just so that no one has to worry about this in the future. > TRACE_EVENT( > fast_page_fault, > TP_PROTO(struct kvm_vcpu *vcpu, gpa_t cr2_or_gpa, u32 error_code, > -- > 2.32.0.93.g670b81a890-goog >