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