trace.h 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. // SPDX-License-Identifier: GPL-2.0
  2. /*
  3. * Tracepoints for RISC-V KVM
  4. *
  5. * Copyright 2024 Beijing ESWIN Computing Technology Co., Ltd.
  6. *
  7. */
  8. #if !defined(_TRACE_KVM_H) || defined(TRACE_HEADER_MULTI_READ)
  9. #define _TRACE_KVM_H
  10. #include <linux/tracepoint.h>
  11. #undef TRACE_SYSTEM
  12. #define TRACE_SYSTEM kvm
  13. TRACE_EVENT(kvm_entry,
  14. TP_PROTO(struct kvm_vcpu *vcpu),
  15. TP_ARGS(vcpu),
  16. TP_STRUCT__entry(
  17. __field(unsigned long, pc)
  18. ),
  19. TP_fast_assign(
  20. __entry->pc = vcpu->arch.guest_context.sepc;
  21. ),
  22. TP_printk("PC: 0x016%lx", __entry->pc)
  23. );
  24. TRACE_EVENT(kvm_exit,
  25. TP_PROTO(struct kvm_cpu_trap *trap),
  26. TP_ARGS(trap),
  27. TP_STRUCT__entry(
  28. __field(unsigned long, sepc)
  29. __field(unsigned long, scause)
  30. __field(unsigned long, stval)
  31. __field(unsigned long, htval)
  32. __field(unsigned long, htinst)
  33. ),
  34. TP_fast_assign(
  35. __entry->sepc = trap->sepc;
  36. __entry->scause = trap->scause;
  37. __entry->stval = trap->stval;
  38. __entry->htval = trap->htval;
  39. __entry->htinst = trap->htinst;
  40. ),
  41. TP_printk("SEPC:0x%lx, SCAUSE:0x%lx, STVAL:0x%lx, HTVAL:0x%lx, HTINST:0x%lx",
  42. __entry->sepc,
  43. __entry->scause,
  44. __entry->stval,
  45. __entry->htval,
  46. __entry->htinst)
  47. );
  48. #endif /* _TRACE_RSICV_KVM_H */
  49. #undef TRACE_INCLUDE_PATH
  50. #define TRACE_INCLUDE_PATH .
  51. #undef TRACE_INCLUDE_FILE
  52. #define TRACE_INCLUDE_FILE trace
  53. /* This part must be outside protection */
  54. #include <trace/define_trace.h>