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