zcrypt.h 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. /*
  2. * Tracepoint definitions for the s390 zcrypt device driver
  3. *
  4. * Copyright IBM Corp. 2016
  5. * Author(s): Harald Freudenberger <freude@de.ibm.com>
  6. *
  7. * Currently there are two tracepoint events defined here.
  8. * An s390_zcrypt_req request event occurs as soon as the request is
  9. * recognized by the zcrypt ioctl function. This event may act as some kind
  10. * of request-processing-starts-now indication.
  11. * As late as possible within the zcrypt ioctl function there occurs the
  12. * s390_zcrypt_rep event which may act as the point in time where the
  13. * request has been processed by the kernel and the result is about to be
  14. * transferred back to userspace.
  15. * The glue which binds together request and reply event is the ptr
  16. * parameter, which is the local buffer address where the request from
  17. * userspace has been stored by the ioctl function.
  18. *
  19. * The main purpose of this zcrypt tracepoint api is to get some data for
  20. * performance measurements together with information about on which card
  21. * and queue the request has been processed. It is not an ffdc interface as
  22. * there is already code in the zcrypt device driver to serve the s390
  23. * debug feature interface.
  24. */
  25. #undef TRACE_SYSTEM
  26. #define TRACE_SYSTEM s390
  27. #if !defined(_TRACE_S390_ZCRYPT_H) || defined(TRACE_HEADER_MULTI_READ)
  28. #define _TRACE_S390_ZCRYPT_H
  29. #include <linux/tracepoint.h>
  30. #define TP_ICARSAMODEXPO 0x0001
  31. #define TP_ICARSACRT 0x0002
  32. #define TB_ZSECSENDCPRB 0x0003
  33. #define TP_ZSENDEP11CPRB 0x0004
  34. #define TP_HWRNGCPRB 0x0005
  35. #define show_zcrypt_tp_type(type) \
  36. __print_symbolic(type, \
  37. { TP_ICARSAMODEXPO, "ICARSAMODEXPO" }, \
  38. { TP_ICARSACRT, "ICARSACRT" }, \
  39. { TB_ZSECSENDCPRB, "ZSECSENDCPRB" }, \
  40. { TP_ZSENDEP11CPRB, "ZSENDEP11CPRB" }, \
  41. { TP_HWRNGCPRB, "HWRNGCPRB" })
  42. /**
  43. * trace_s390_zcrypt_req - zcrypt request tracepoint function
  44. * @ptr: Address of the local buffer where the request from userspace
  45. * is stored. Can be used as a unique id to relate together
  46. * request and reply.
  47. * @type: One of the TP_ defines above.
  48. *
  49. * Called when a request from userspace is recognised within the ioctl
  50. * function of the zcrypt device driver and may act as an entry
  51. * timestamp.
  52. */
  53. TRACE_EVENT(s390_zcrypt_req,
  54. TP_PROTO(void *ptr, u32 type),
  55. TP_ARGS(ptr, type),
  56. TP_STRUCT__entry(
  57. __field(void *, ptr)
  58. __field(u32, type)),
  59. TP_fast_assign(
  60. __entry->ptr = ptr;
  61. __entry->type = type;),
  62. TP_printk("ptr=%p type=%s",
  63. __entry->ptr,
  64. show_zcrypt_tp_type(__entry->type))
  65. );
  66. /**
  67. * trace_s390_zcrypt_rep - zcrypt reply tracepoint function
  68. * @ptr: Address of the local buffer where the request from userspace
  69. * is stored. Can be used as a unique id to match together
  70. * request and reply.
  71. * @fc: Function code.
  72. * @rc: The bare returncode as returned by the device driver ioctl
  73. * function.
  74. * @dev: The adapter nr where this request was actually processed.
  75. * @dom: Domain id of the device where this request was processed.
  76. *
  77. * Called upon recognising the reply from the crypto adapter. This
  78. * message may act as the exit timestamp for the request but also
  79. * carries some info about on which adapter the request was processed
  80. * and the returncode from the device driver.
  81. */
  82. TRACE_EVENT(s390_zcrypt_rep,
  83. TP_PROTO(void *ptr, u32 fc, u32 rc, u16 dev, u16 dom),
  84. TP_ARGS(ptr, fc, rc, dev, dom),
  85. TP_STRUCT__entry(
  86. __field(void *, ptr)
  87. __field(u32, fc)
  88. __field(u32, rc)
  89. __field(u16, device)
  90. __field(u16, domain)),
  91. TP_fast_assign(
  92. __entry->ptr = ptr;
  93. __entry->fc = fc;
  94. __entry->rc = rc;
  95. __entry->device = dev;
  96. __entry->domain = dom;),
  97. TP_printk("ptr=%p fc=0x%04x rc=%d dev=0x%02hx domain=0x%04hx",
  98. __entry->ptr,
  99. (unsigned int) __entry->fc,
  100. (int) __entry->rc,
  101. (unsigned short) __entry->device,
  102. (unsigned short) __entry->domain)
  103. );
  104. #endif /* _TRACE_S390_ZCRYPT_H */
  105. /* This part must be outside protection */
  106. #undef TRACE_INCLUDE_PATH
  107. #undef TRACE_INCLUDE_FILE
  108. #define TRACE_INCLUDE_PATH asm/trace
  109. #define TRACE_INCLUDE_FILE zcrypt
  110. #include <trace/define_trace.h>