1dbaf1002SNishad Kamdar /* SPDX-License-Identifier: GPL-2.0 */
2dbaf1002SNishad Kamdar /* Tracepoints for vfio_ccw driver
33cd90214SHalil Pasic  *
43cd90214SHalil Pasic  * Copyright IBM Corp. 2018
53cd90214SHalil Pasic  *
63cd90214SHalil Pasic  * Author(s): Dong Jia Shi <bjsdjshi@linux.vnet.ibm.com>
73cd90214SHalil Pasic  *            Halil Pasic <pasic@linux.vnet.ibm.com>
83cd90214SHalil Pasic  */
93cd90214SHalil Pasic 
107af52ccaSEric Farman #include "cio.h"
117af52ccaSEric Farman 
123cd90214SHalil Pasic #undef TRACE_SYSTEM
133cd90214SHalil Pasic #define TRACE_SYSTEM vfio_ccw
143cd90214SHalil Pasic 
153cd90214SHalil Pasic #if !defined(_VFIO_CCW_TRACE_) || defined(TRACE_HEADER_MULTI_READ)
163cd90214SHalil Pasic #define _VFIO_CCW_TRACE_
173cd90214SHalil Pasic 
183cd90214SHalil Pasic #include <linux/tracepoint.h>
193cd90214SHalil Pasic 
20b2dd9a44SEric Farman TRACE_EVENT(vfio_ccw_chp_event,
21b2dd9a44SEric Farman 	TP_PROTO(struct subchannel_id schid,
22b2dd9a44SEric Farman 		 int mask,
23b2dd9a44SEric Farman 		 int event),
24b2dd9a44SEric Farman 	TP_ARGS(schid, mask, event),
25b2dd9a44SEric Farman 
26b2dd9a44SEric Farman 	TP_STRUCT__entry(
27b2dd9a44SEric Farman 		__field(u8, cssid)
28b2dd9a44SEric Farman 		__field(u8, ssid)
29b2dd9a44SEric Farman 		__field(u16, sch_no)
30b2dd9a44SEric Farman 		__field(int, mask)
31b2dd9a44SEric Farman 		__field(int, event)
32b2dd9a44SEric Farman 	),
33b2dd9a44SEric Farman 
34b2dd9a44SEric Farman 	TP_fast_assign(
35b2dd9a44SEric Farman 		__entry->cssid = schid.cssid;
36b2dd9a44SEric Farman 		__entry->ssid = schid.ssid;
37b2dd9a44SEric Farman 		__entry->sch_no = schid.sch_no;
38b2dd9a44SEric Farman 		__entry->mask = mask;
39b2dd9a44SEric Farman 		__entry->event = event;
40b2dd9a44SEric Farman 	),
41b2dd9a44SEric Farman 
42b2dd9a44SEric Farman 	TP_printk("schid=%x.%x.%04x mask=0x%x event=%d",
43b2dd9a44SEric Farman 		  __entry->cssid,
44b2dd9a44SEric Farman 		  __entry->ssid,
45b2dd9a44SEric Farman 		  __entry->sch_no,
46b2dd9a44SEric Farman 		  __entry->mask,
47b2dd9a44SEric Farman 		  __entry->event)
48b2dd9a44SEric Farman );
49b2dd9a44SEric Farman 
50d5950b02SEric Farman TRACE_EVENT(vfio_ccw_fsm_async_request,
51d5950b02SEric Farman 	TP_PROTO(struct subchannel_id schid,
52d5950b02SEric Farman 		 int command,
53d5950b02SEric Farman 		 int errno),
54d5950b02SEric Farman 	TP_ARGS(schid, command, errno),
55d5950b02SEric Farman 
56d5950b02SEric Farman 	TP_STRUCT__entry(
57d5950b02SEric Farman 		__field(u8, cssid)
58d5950b02SEric Farman 		__field(u8, ssid)
59d5950b02SEric Farman 		__field(u16, sch_no)
60d5950b02SEric Farman 		__field(int, command)
61d5950b02SEric Farman 		__field(int, errno)
62d5950b02SEric Farman 	),
63d5950b02SEric Farman 
64d5950b02SEric Farman 	TP_fast_assign(
65d5950b02SEric Farman 		__entry->cssid = schid.cssid;
66d5950b02SEric Farman 		__entry->ssid = schid.ssid;
67d5950b02SEric Farman 		__entry->sch_no = schid.sch_no;
68d5950b02SEric Farman 		__entry->command = command;
69d5950b02SEric Farman 		__entry->errno = errno;
70d5950b02SEric Farman 	),
71d5950b02SEric Farman 
72d5950b02SEric Farman 	TP_printk("schid=%x.%x.%04x command=0x%x errno=%d",
73d5950b02SEric Farman 		  __entry->cssid,
74d5950b02SEric Farman 		  __entry->ssid,
75d5950b02SEric Farman 		  __entry->sch_no,
76d5950b02SEric Farman 		  __entry->command,
77d5950b02SEric Farman 		  __entry->errno)
78d5950b02SEric Farman );
79d5950b02SEric Farman 
80970ebeb8SEric Farman TRACE_EVENT(vfio_ccw_fsm_event,
81970ebeb8SEric Farman 	TP_PROTO(struct subchannel_id schid, int state, int event),
82970ebeb8SEric Farman 	TP_ARGS(schid, state, event),
83970ebeb8SEric Farman 
84970ebeb8SEric Farman 	TP_STRUCT__entry(
85970ebeb8SEric Farman 		__field(u8, cssid)
86970ebeb8SEric Farman 		__field(u8, ssid)
87970ebeb8SEric Farman 		__field(u16, schno)
88970ebeb8SEric Farman 		__field(int, state)
89970ebeb8SEric Farman 		__field(int, event)
90970ebeb8SEric Farman 	),
91970ebeb8SEric Farman 
92970ebeb8SEric Farman 	TP_fast_assign(
93970ebeb8SEric Farman 		__entry->cssid = schid.cssid;
94970ebeb8SEric Farman 		__entry->ssid = schid.ssid;
95970ebeb8SEric Farman 		__entry->schno = schid.sch_no;
96970ebeb8SEric Farman 		__entry->state = state;
97970ebeb8SEric Farman 		__entry->event = event;
98970ebeb8SEric Farman 	),
99970ebeb8SEric Farman 
100970ebeb8SEric Farman 	TP_printk("schid=%x.%x.%04x state=%d event=%d",
101970ebeb8SEric Farman 		__entry->cssid, __entry->ssid, __entry->schno,
102970ebeb8SEric Farman 		__entry->state,
103970ebeb8SEric Farman 		__entry->event)
104970ebeb8SEric Farman );
105970ebeb8SEric Farman 
10685298880SEric Farman TRACE_EVENT(vfio_ccw_fsm_io_request,
1073cd90214SHalil Pasic 	TP_PROTO(int fctl, struct subchannel_id schid, int errno, char *errstr),
1083cd90214SHalil Pasic 	TP_ARGS(fctl, schid, errno, errstr),
1093cd90214SHalil Pasic 
1103cd90214SHalil Pasic 	TP_STRUCT__entry(
11185298880SEric Farman 		__field(u8, cssid)
11285298880SEric Farman 		__field(u8, ssid)
11385298880SEric Farman 		__field(u16, sch_no)
1143cd90214SHalil Pasic 		__field(int, fctl)
1153cd90214SHalil Pasic 		__field(int, errno)
1163cd90214SHalil Pasic 		__field(char*, errstr)
1173cd90214SHalil Pasic 	),
1183cd90214SHalil Pasic 
1193cd90214SHalil Pasic 	TP_fast_assign(
12085298880SEric Farman 		__entry->cssid = schid.cssid;
12185298880SEric Farman 		__entry->ssid = schid.ssid;
12285298880SEric Farman 		__entry->sch_no = schid.sch_no;
1233cd90214SHalil Pasic 		__entry->fctl = fctl;
1243cd90214SHalil Pasic 		__entry->errno = errno;
1253cd90214SHalil Pasic 		__entry->errstr = errstr;
1263cd90214SHalil Pasic 	),
1273cd90214SHalil Pasic 
12885298880SEric Farman 	TP_printk("schid=%x.%x.%04x fctl=0x%x errno=%d info=%s",
12985298880SEric Farman 		  __entry->cssid,
13085298880SEric Farman 		  __entry->ssid,
13185298880SEric Farman 		  __entry->sch_no,
1323cd90214SHalil Pasic 		  __entry->fctl,
1333cd90214SHalil Pasic 		  __entry->errno,
1343cd90214SHalil Pasic 		  __entry->errstr)
1353cd90214SHalil Pasic );
1363cd90214SHalil Pasic 
1373cd90214SHalil Pasic #endif /* _VFIO_CCW_TRACE_ */
1383cd90214SHalil Pasic 
1393cd90214SHalil Pasic /* This part must be outside protection */
1403cd90214SHalil Pasic 
1413cd90214SHalil Pasic #undef TRACE_INCLUDE_PATH
1423cd90214SHalil Pasic #define TRACE_INCLUDE_PATH .
1433cd90214SHalil Pasic #undef TRACE_INCLUDE_FILE
1443cd90214SHalil Pasic #define TRACE_INCLUDE_FILE vfio_ccw_trace
1453cd90214SHalil Pasic 
1463cd90214SHalil Pasic #include <trace/define_trace.h>
147