amdxdna.h 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. /*
  3. * Copyright (C) 2023-2024, Advanced Micro Devices, Inc.
  4. */
  5. #undef TRACE_SYSTEM
  6. #define TRACE_SYSTEM amdxdna
  7. #if !defined(_TRACE_AMDXDNA_H) || defined(TRACE_HEADER_MULTI_READ)
  8. #define _TRACE_AMDXDNA_H
  9. #include <drm/gpu_scheduler.h>
  10. #include <linux/tracepoint.h>
  11. TRACE_EVENT(amdxdna_debug_point,
  12. TP_PROTO(const char *name, u64 number, const char *str),
  13. TP_ARGS(name, number, str),
  14. TP_STRUCT__entry(__string(name, name)
  15. __field(u64, number)
  16. __string(str, str)),
  17. TP_fast_assign(__assign_str(name);
  18. __entry->number = number;
  19. __assign_str(str);),
  20. TP_printk("%s:%llu %s", __get_str(name), __entry->number,
  21. __get_str(str))
  22. );
  23. TRACE_EVENT(xdna_job,
  24. TP_PROTO(struct drm_sched_job *sched_job, const char *name, const char *str, u64 seq),
  25. TP_ARGS(sched_job, name, str, seq),
  26. TP_STRUCT__entry(__string(name, name)
  27. __string(str, str)
  28. __field(u64, fence_context)
  29. __field(u64, fence_seqno)
  30. __field(u64, seq)),
  31. TP_fast_assign(__assign_str(name);
  32. __assign_str(str);
  33. __entry->fence_context = sched_job->s_fence->finished.context;
  34. __entry->fence_seqno = sched_job->s_fence->finished.seqno;
  35. __entry->seq = seq;),
  36. TP_printk("fence=(context:%llu, seqno:%lld), %s seq#:%lld %s",
  37. __entry->fence_context, __entry->fence_seqno,
  38. __get_str(name), __entry->seq,
  39. __get_str(str))
  40. );
  41. DECLARE_EVENT_CLASS(xdna_mbox_msg,
  42. TP_PROTO(char *name, u8 chann_id, u32 opcode, u32 msg_id),
  43. TP_ARGS(name, chann_id, opcode, msg_id),
  44. TP_STRUCT__entry(__string(name, name)
  45. __field(u32, chann_id)
  46. __field(u32, opcode)
  47. __field(u32, msg_id)),
  48. TP_fast_assign(__assign_str(name);
  49. __entry->chann_id = chann_id;
  50. __entry->opcode = opcode;
  51. __entry->msg_id = msg_id;),
  52. TP_printk("%s.%d id 0x%x opcode 0x%x", __get_str(name),
  53. __entry->chann_id, __entry->msg_id, __entry->opcode)
  54. );
  55. DEFINE_EVENT(xdna_mbox_msg, mbox_set_tail,
  56. TP_PROTO(char *name, u8 chann_id, u32 opcode, u32 id),
  57. TP_ARGS(name, chann_id, opcode, id)
  58. );
  59. DEFINE_EVENT(xdna_mbox_msg, mbox_set_head,
  60. TP_PROTO(char *name, u8 chann_id, u32 opcode, u32 id),
  61. TP_ARGS(name, chann_id, opcode, id)
  62. );
  63. TRACE_EVENT(mbox_irq_handle,
  64. TP_PROTO(char *name, int irq),
  65. TP_ARGS(name, irq),
  66. TP_STRUCT__entry(__string(name, name)
  67. __field(int, irq)),
  68. TP_fast_assign(__assign_str(name);
  69. __entry->irq = irq;),
  70. TP_printk("%s.%d", __get_str(name), __entry->irq)
  71. );
  72. #endif /* !defined(_TRACE_AMDXDNA_H) || defined(TRACE_HEADER_MULTI_READ) */
  73. /* This part must be outside protection */
  74. #include <trace/define_trace.h>