xref: /linux/arch/s390/include/asm/trace/ap.h (revision 24f171c7e145f43b9f187578e89b0982ce87e54c)
1*9c119180SHarald Freudenberger /* SPDX-License-Identifier: GPL-2.0 */
2*9c119180SHarald Freudenberger /*
3*9c119180SHarald Freudenberger  * Tracepoint definitions for s390 ap bus related trace events
4*9c119180SHarald Freudenberger  *
5*9c119180SHarald Freudenberger  * There are two AP bus related tracepoint events defined here:
6*9c119180SHarald Freudenberger  * There is a tracepoint s390_ap_nqap event immediately after a request
7*9c119180SHarald Freudenberger  * has been pushed into the AP firmware queue with the NQAP AP command.
8*9c119180SHarald Freudenberger  * The other tracepoint s390_ap_dqap event fires immediately after a
9*9c119180SHarald Freudenberger  * reply has been pulled out of the AP firmware queue via DQAP AP command.
10*9c119180SHarald Freudenberger  * The idea of these two trace events focuses on performance to measure
11*9c119180SHarald Freudenberger  * the runtime of a crypto request/reply as close as possible at the
12*9c119180SHarald Freudenberger  * firmware level. In combination with the two zcrypt tracepoints (see the
13*9c119180SHarald Freudenberger  * zcrypt.h trace event definition file) this gives measurement data about
14*9c119180SHarald Freudenberger  * the runtime of a request/reply within the zcrpyt and AP bus layer.
15*9c119180SHarald Freudenberger  */
16*9c119180SHarald Freudenberger 
17*9c119180SHarald Freudenberger #undef TRACE_SYSTEM
18*9c119180SHarald Freudenberger #define TRACE_SYSTEM s390
19*9c119180SHarald Freudenberger 
20*9c119180SHarald Freudenberger #if !defined(_TRACE_S390_AP_H) || defined(TRACE_HEADER_MULTI_READ)
21*9c119180SHarald Freudenberger #define _TRACE_S390_AP_H
22*9c119180SHarald Freudenberger 
23*9c119180SHarald Freudenberger #include <linux/tracepoint.h>
24*9c119180SHarald Freudenberger 
25*9c119180SHarald Freudenberger DECLARE_EVENT_CLASS(s390_ap_nqapdqap_template,
26*9c119180SHarald Freudenberger 		    TP_PROTO(u16 card, u16 dom, u32 status, u64 psmid),
27*9c119180SHarald Freudenberger 		    TP_ARGS(card, dom, status, psmid),
28*9c119180SHarald Freudenberger 		    TP_STRUCT__entry(
29*9c119180SHarald Freudenberger 			    __field(u16, card)
30*9c119180SHarald Freudenberger 			    __field(u16, dom)
31*9c119180SHarald Freudenberger 			    __field(u32, status)
32*9c119180SHarald Freudenberger 			    __field(u64, psmid)),
33*9c119180SHarald Freudenberger 		    TP_fast_assign(
34*9c119180SHarald Freudenberger 			    __entry->card = card;
35*9c119180SHarald Freudenberger 			    __entry->dom = dom;
36*9c119180SHarald Freudenberger 			    __entry->status = status;
37*9c119180SHarald Freudenberger 			    __entry->psmid = psmid;),
38*9c119180SHarald Freudenberger 		    TP_printk("card=%u dom=%u status=0x%08x psmid=0x%016lx",
39*9c119180SHarald Freudenberger 			      (unsigned short)__entry->card,
40*9c119180SHarald Freudenberger 			      (unsigned short)__entry->dom,
41*9c119180SHarald Freudenberger 			      (unsigned int)__entry->status,
42*9c119180SHarald Freudenberger 			      (unsigned long)__entry->psmid)
43*9c119180SHarald Freudenberger );
44*9c119180SHarald Freudenberger 
45*9c119180SHarald Freudenberger /**
46*9c119180SHarald Freudenberger  * trace_s390_ap_nqap - ap msg nqap tracepoint function
47*9c119180SHarald Freudenberger  * @card:   Crypto card number addressed.
48*9c119180SHarald Freudenberger  * @dom:    Domain within the crypto card addressed.
49*9c119180SHarald Freudenberger  * @status: AP queue status (GR1 on return of nqap).
50*9c119180SHarald Freudenberger  * @psmid:  Unique id identifying this request/reply.
51*9c119180SHarald Freudenberger  *
52*9c119180SHarald Freudenberger  * Called immediately after a request has been enqueued into
53*9c119180SHarald Freudenberger  * the AP firmware queue with the NQAP command.
54*9c119180SHarald Freudenberger  */
55*9c119180SHarald Freudenberger DEFINE_EVENT(s390_ap_nqapdqap_template,
56*9c119180SHarald Freudenberger 	     s390_ap_nqap,
57*9c119180SHarald Freudenberger 	     TP_PROTO(u16 card, u16 dom, u32 status, u64 psmid),
58*9c119180SHarald Freudenberger 	     TP_ARGS(card, dom, status, psmid)
59*9c119180SHarald Freudenberger );
60*9c119180SHarald Freudenberger 
61*9c119180SHarald Freudenberger /**
62*9c119180SHarald Freudenberger  * trace_s390_ap_dqap - ap msg dqap tracepoint function
63*9c119180SHarald Freudenberger  * @card:  Crypto card number addressed.
64*9c119180SHarald Freudenberger  * @dom:   Domain within the crypto card addressed.
65*9c119180SHarald Freudenberger  * @status: AP queue status (GR1 on return of dqap).
66*9c119180SHarald Freudenberger  * @psmid: Unique id identifying this request/reply.
67*9c119180SHarald Freudenberger  *
68*9c119180SHarald Freudenberger  * Called immediately after a reply has been dequeued from
69*9c119180SHarald Freudenberger  * the AP firmware queue with the DQAP command.
70*9c119180SHarald Freudenberger  */
71*9c119180SHarald Freudenberger DEFINE_EVENT(s390_ap_nqapdqap_template,
72*9c119180SHarald Freudenberger 	     s390_ap_dqap,
73*9c119180SHarald Freudenberger 	     TP_PROTO(u16 card, u16 dom, u32 status, u64 psmid),
74*9c119180SHarald Freudenberger 	     TP_ARGS(card, dom, status, psmid)
75*9c119180SHarald Freudenberger );
76*9c119180SHarald Freudenberger 
77*9c119180SHarald Freudenberger #endif /* _TRACE_S390_AP_H */
78*9c119180SHarald Freudenberger 
79*9c119180SHarald Freudenberger /* This part must be outside protection */
80*9c119180SHarald Freudenberger 
81*9c119180SHarald Freudenberger #undef TRACE_INCLUDE_PATH
82*9c119180SHarald Freudenberger #undef TRACE_INCLUDE_FILE
83*9c119180SHarald Freudenberger 
84*9c119180SHarald Freudenberger #define TRACE_INCLUDE_PATH asm/trace
85*9c119180SHarald Freudenberger #define TRACE_INCLUDE_FILE ap
86*9c119180SHarald Freudenberger 
87*9c119180SHarald Freudenberger #include <trace/define_trace.h>
88