trace_secure_buffer.h 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. /* SPDX-License-Identifier: GPL-2.0-only */
  2. /*
  3. * Copyright (c) 2019, 2021 The Linux Foundation. All rights reserved.
  4. */
  5. #undef TRACE_SYSTEM
  6. #define TRACE_SYSTEM secure_buffer
  7. #if !defined(_TRACE_SECURE_BUFFER_H) || defined(TRACE_HEADER_MULTI_READ)
  8. #define _TRACE_SECURE_BUFFER_H
  9. #include <linux/types.h>
  10. #include <linux/tracepoint.h>
  11. #include <soc/qcom/secure_buffer.h>
  12. TRACE_EVENT(hyp_assign_info,
  13. TP_PROTO(u32 *source_vm_list,
  14. int source_nelems, int *dest_vmids, int *dest_perms,
  15. int dest_nelems),
  16. TP_ARGS(source_vm_list, source_nelems, dest_vmids,
  17. dest_perms, dest_nelems),
  18. TP_STRUCT__entry(
  19. __field(int, source_nelems)
  20. __field(int, dest_nelems)
  21. __dynamic_array(u32, source_vm_list, source_nelems)
  22. __dynamic_array(int, dest_vmids, dest_nelems)
  23. __dynamic_array(int, dest_perms, dest_nelems)
  24. ),
  25. TP_fast_assign(
  26. __entry->source_nelems = source_nelems;
  27. __entry->dest_nelems = dest_nelems;
  28. memcpy(__get_dynamic_array(source_vm_list), source_vm_list,
  29. source_nelems * sizeof(*source_vm_list));
  30. memcpy(__get_dynamic_array(dest_vmids), dest_vmids,
  31. dest_nelems * sizeof(*dest_vmids));
  32. memcpy(__get_dynamic_array(dest_perms), dest_perms,
  33. dest_nelems * sizeof(*dest_perms));
  34. ),
  35. TP_printk("srcVMIDs: %s dstVMIDs: %s dstPerms: %s",
  36. __print_array(__get_dynamic_array(source_vm_list),
  37. __entry->source_nelems, sizeof(u32)),
  38. __print_array(__get_dynamic_array(dest_vmids),
  39. __entry->dest_nelems, sizeof(int)),
  40. __print_array(__get_dynamic_array(dest_perms),
  41. __entry->dest_nelems, sizeof(int))
  42. )
  43. );
  44. TRACE_EVENT(hyp_assign_batch_start,
  45. TP_PROTO(struct qcom_scm_mem_map_info *info, int info_nelems),
  46. TP_ARGS(info, info_nelems),
  47. TP_STRUCT__entry(
  48. __field(int, info_nelems)
  49. __field(u64, batch_size)
  50. __dynamic_array(u64, addrs, info_nelems)
  51. __dynamic_array(u64, sizes, info_nelems)
  52. ),
  53. TP_fast_assign(
  54. unsigned int i;
  55. u64 *addr_arr_ptr = __get_dynamic_array(addrs);
  56. u64 *sizes_arr_ptr = __get_dynamic_array(sizes);
  57. __entry->info_nelems = info_nelems;
  58. __entry->batch_size = 0;
  59. for (i = 0; i < info_nelems; i++) {
  60. addr_arr_ptr[i] = le64_to_cpu(info[i].mem_addr);
  61. sizes_arr_ptr[i] = le64_to_cpu(info[i].mem_size);
  62. __entry->batch_size += le64_to_cpu(info[i].mem_size);
  63. }
  64. ),
  65. TP_printk("num entries: %d batch size: %llu phys addrs: %s sizes: %s",
  66. __entry->info_nelems, __entry->batch_size,
  67. __print_array(__get_dynamic_array(addrs),
  68. __entry->info_nelems, sizeof(u64)),
  69. __print_array(__get_dynamic_array(sizes),
  70. __entry->info_nelems, sizeof(u64))
  71. )
  72. );
  73. TRACE_EVENT(hyp_assign_batch_end,
  74. TP_PROTO(int ret, u64 delta),
  75. TP_ARGS(ret, delta),
  76. TP_STRUCT__entry(
  77. __field(int, ret)
  78. __field(u64, delta)
  79. ),
  80. TP_fast_assign(
  81. __entry->ret = ret;
  82. __entry->delta = delta;
  83. ),
  84. TP_printk("ret: %d time delta: %lld us",
  85. __entry->ret, __entry->delta
  86. )
  87. );
  88. TRACE_EVENT(hyp_assign_end,
  89. TP_PROTO(u64 tot_delta, u64 avg_delta),
  90. TP_ARGS(tot_delta, avg_delta),
  91. TP_STRUCT__entry(
  92. __field(u64, tot_delta)
  93. __field(u64, avg_delta)
  94. ),
  95. TP_fast_assign(
  96. __entry->tot_delta = tot_delta;
  97. __entry->avg_delta = avg_delta;
  98. ),
  99. TP_printk("total time delta: %lld us avg batch delta: %lld us",
  100. __entry->tot_delta, __entry->avg_delta
  101. )
  102. );
  103. #endif /* _TRACE_SECURE_BUFFER_H */
  104. #undef TRACE_INCLUDE_PATH
  105. #define TRACE_INCLUDE_PATH ../../drivers/soc/qcom/
  106. #undef TRACE_INCLUDE_FILE
  107. #define TRACE_INCLUDE_FILE trace_secure_buffer
  108. /* This part must be outside protection */
  109. #include <trace/define_trace.h>