xref: /linux/drivers/misc/cxl/trace.h (revision 44f57d78)
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 /*
3  * Copyright 2015 IBM Corp.
4  */
5 
6 #undef TRACE_SYSTEM
7 #define TRACE_SYSTEM cxl
8 
9 #if !defined(_CXL_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
10 #define _CXL_TRACE_H
11 
12 #include <linux/tracepoint.h>
13 
14 #include "cxl.h"
15 
16 #define dsisr_psl9_flags(flags) \
17 	__print_flags(flags, "|", \
18 		{ CXL_PSL9_DSISR_An_CO_MASK,	"FR" }, \
19 		{ CXL_PSL9_DSISR_An_TF,		"TF" }, \
20 		{ CXL_PSL9_DSISR_An_PE,		"PE" }, \
21 		{ CXL_PSL9_DSISR_An_AE,		"AE" }, \
22 		{ CXL_PSL9_DSISR_An_OC,		"OC" }, \
23 		{ CXL_PSL9_DSISR_An_S,		"S" })
24 
25 #define DSISR_FLAGS \
26 	{ CXL_PSL_DSISR_An_DS,	"DS" }, \
27 	{ CXL_PSL_DSISR_An_DM,	"DM" }, \
28 	{ CXL_PSL_DSISR_An_ST,	"ST" }, \
29 	{ CXL_PSL_DSISR_An_UR,	"UR" }, \
30 	{ CXL_PSL_DSISR_An_PE,	"PE" }, \
31 	{ CXL_PSL_DSISR_An_AE,	"AE" }, \
32 	{ CXL_PSL_DSISR_An_OC,	"OC" }, \
33 	{ CXL_PSL_DSISR_An_M,	"M" }, \
34 	{ CXL_PSL_DSISR_An_P,	"P" }, \
35 	{ CXL_PSL_DSISR_An_A,	"A" }, \
36 	{ CXL_PSL_DSISR_An_S,	"S" }, \
37 	{ CXL_PSL_DSISR_An_K,	"K" }
38 
39 #define TFC_FLAGS \
40 	{ CXL_PSL_TFC_An_A,	"A" }, \
41 	{ CXL_PSL_TFC_An_C,	"C" }, \
42 	{ CXL_PSL_TFC_An_AE,	"AE" }, \
43 	{ CXL_PSL_TFC_An_R,	"R" }
44 
45 #define LLCMD_NAMES \
46 	{ CXL_SPA_SW_CMD_TERMINATE,	"TERMINATE" }, \
47 	{ CXL_SPA_SW_CMD_REMOVE,	"REMOVE" }, \
48 	{ CXL_SPA_SW_CMD_SUSPEND,	"SUSPEND" }, \
49 	{ CXL_SPA_SW_CMD_RESUME,	"RESUME" }, \
50 	{ CXL_SPA_SW_CMD_ADD,		"ADD" }, \
51 	{ CXL_SPA_SW_CMD_UPDATE,	"UPDATE" }
52 
53 #define AFU_COMMANDS \
54 	{ 0,			"DISABLE" }, \
55 	{ CXL_AFU_Cntl_An_E,	"ENABLE" }, \
56 	{ CXL_AFU_Cntl_An_RA,	"RESET" }
57 
58 #define PSL_COMMANDS \
59 	{ CXL_PSL_SCNTL_An_Pc,	"PURGE" }, \
60 	{ CXL_PSL_SCNTL_An_Sc,	"SUSPEND" }
61 
62 
63 DECLARE_EVENT_CLASS(cxl_pe_class,
64 	TP_PROTO(struct cxl_context *ctx),
65 
66 	TP_ARGS(ctx),
67 
68 	TP_STRUCT__entry(
69 		__field(u8, card)
70 		__field(u8, afu)
71 		__field(u16, pe)
72 	),
73 
74 	TP_fast_assign(
75 		__entry->card = ctx->afu->adapter->adapter_num;
76 		__entry->afu = ctx->afu->slice;
77 		__entry->pe = ctx->pe;
78 	),
79 
80 	TP_printk("afu%i.%i pe=%i",
81 		__entry->card,
82 		__entry->afu,
83 		__entry->pe
84 	)
85 );
86 
87 
88 TRACE_EVENT(cxl_attach,
89 	TP_PROTO(struct cxl_context *ctx, u64 wed, s16 num_interrupts, u64 amr),
90 
91 	TP_ARGS(ctx, wed, num_interrupts, amr),
92 
93 	TP_STRUCT__entry(
94 		__field(u8, card)
95 		__field(u8, afu)
96 		__field(u16, pe)
97 		__field(pid_t, pid)
98 		__field(u64, wed)
99 		__field(u64, amr)
100 		__field(s16, num_interrupts)
101 	),
102 
103 	TP_fast_assign(
104 		__entry->card = ctx->afu->adapter->adapter_num;
105 		__entry->afu = ctx->afu->slice;
106 		__entry->pe = ctx->pe;
107 		__entry->pid = pid_nr(ctx->pid);
108 		__entry->wed = wed;
109 		__entry->amr = amr;
110 		__entry->num_interrupts = num_interrupts;
111 	),
112 
113 	TP_printk("afu%i.%i pid=%i pe=%i wed=0x%016llx irqs=%i amr=0x%llx",
114 		__entry->card,
115 		__entry->afu,
116 		__entry->pid,
117 		__entry->pe,
118 		__entry->wed,
119 		__entry->num_interrupts,
120 		__entry->amr
121 	)
122 );
123 
124 DEFINE_EVENT(cxl_pe_class, cxl_detach,
125 	TP_PROTO(struct cxl_context *ctx),
126 	TP_ARGS(ctx)
127 );
128 
129 TRACE_EVENT(cxl_afu_irq,
130 	TP_PROTO(struct cxl_context *ctx, int afu_irq, int virq, irq_hw_number_t hwirq),
131 
132 	TP_ARGS(ctx, afu_irq, virq, hwirq),
133 
134 	TP_STRUCT__entry(
135 		__field(u8, card)
136 		__field(u8, afu)
137 		__field(u16, pe)
138 		__field(u16, afu_irq)
139 		__field(int, virq)
140 		__field(irq_hw_number_t, hwirq)
141 	),
142 
143 	TP_fast_assign(
144 		__entry->card = ctx->afu->adapter->adapter_num;
145 		__entry->afu = ctx->afu->slice;
146 		__entry->pe = ctx->pe;
147 		__entry->afu_irq = afu_irq;
148 		__entry->virq = virq;
149 		__entry->hwirq = hwirq;
150 	),
151 
152 	TP_printk("afu%i.%i pe=%i afu_irq=%i virq=%i hwirq=0x%lx",
153 		__entry->card,
154 		__entry->afu,
155 		__entry->pe,
156 		__entry->afu_irq,
157 		__entry->virq,
158 		__entry->hwirq
159 	)
160 );
161 
162 TRACE_EVENT(cxl_psl9_irq,
163 	TP_PROTO(struct cxl_context *ctx, int irq, u64 dsisr, u64 dar),
164 
165 	TP_ARGS(ctx, irq, dsisr, dar),
166 
167 	TP_STRUCT__entry(
168 		__field(u8, card)
169 		__field(u8, afu)
170 		__field(u16, pe)
171 		__field(int, irq)
172 		__field(u64, dsisr)
173 		__field(u64, dar)
174 	),
175 
176 	TP_fast_assign(
177 		__entry->card = ctx->afu->adapter->adapter_num;
178 		__entry->afu = ctx->afu->slice;
179 		__entry->pe = ctx->pe;
180 		__entry->irq = irq;
181 		__entry->dsisr = dsisr;
182 		__entry->dar = dar;
183 	),
184 
185 	TP_printk("afu%i.%i pe=%i irq=%i dsisr=0x%016llx dsisr=%s dar=0x%016llx",
186 		__entry->card,
187 		__entry->afu,
188 		__entry->pe,
189 		__entry->irq,
190 		__entry->dsisr,
191 		dsisr_psl9_flags(__entry->dsisr),
192 		__entry->dar
193 	)
194 );
195 
196 TRACE_EVENT(cxl_psl_irq,
197 	TP_PROTO(struct cxl_context *ctx, int irq, u64 dsisr, u64 dar),
198 
199 	TP_ARGS(ctx, irq, dsisr, dar),
200 
201 	TP_STRUCT__entry(
202 		__field(u8, card)
203 		__field(u8, afu)
204 		__field(u16, pe)
205 		__field(int, irq)
206 		__field(u64, dsisr)
207 		__field(u64, dar)
208 	),
209 
210 	TP_fast_assign(
211 		__entry->card = ctx->afu->adapter->adapter_num;
212 		__entry->afu = ctx->afu->slice;
213 		__entry->pe = ctx->pe;
214 		__entry->irq = irq;
215 		__entry->dsisr = dsisr;
216 		__entry->dar = dar;
217 	),
218 
219 	TP_printk("afu%i.%i pe=%i irq=%i dsisr=%s dar=0x%016llx",
220 		__entry->card,
221 		__entry->afu,
222 		__entry->pe,
223 		__entry->irq,
224 		__print_flags(__entry->dsisr, "|", DSISR_FLAGS),
225 		__entry->dar
226 	)
227 );
228 
229 TRACE_EVENT(cxl_psl_irq_ack,
230 	TP_PROTO(struct cxl_context *ctx, u64 tfc),
231 
232 	TP_ARGS(ctx, tfc),
233 
234 	TP_STRUCT__entry(
235 		__field(u8, card)
236 		__field(u8, afu)
237 		__field(u16, pe)
238 		__field(u64, tfc)
239 	),
240 
241 	TP_fast_assign(
242 		__entry->card = ctx->afu->adapter->adapter_num;
243 		__entry->afu = ctx->afu->slice;
244 		__entry->pe = ctx->pe;
245 		__entry->tfc = tfc;
246 	),
247 
248 	TP_printk("afu%i.%i pe=%i tfc=%s",
249 		__entry->card,
250 		__entry->afu,
251 		__entry->pe,
252 		__print_flags(__entry->tfc, "|", TFC_FLAGS)
253 	)
254 );
255 
256 TRACE_EVENT(cxl_ste_miss,
257 	TP_PROTO(struct cxl_context *ctx, u64 dar),
258 
259 	TP_ARGS(ctx, dar),
260 
261 	TP_STRUCT__entry(
262 		__field(u8, card)
263 		__field(u8, afu)
264 		__field(u16, pe)
265 		__field(u64, dar)
266 	),
267 
268 	TP_fast_assign(
269 		__entry->card = ctx->afu->adapter->adapter_num;
270 		__entry->afu = ctx->afu->slice;
271 		__entry->pe = ctx->pe;
272 		__entry->dar = dar;
273 	),
274 
275 	TP_printk("afu%i.%i pe=%i dar=0x%016llx",
276 		__entry->card,
277 		__entry->afu,
278 		__entry->pe,
279 		__entry->dar
280 	)
281 );
282 
283 TRACE_EVENT(cxl_ste_write,
284 	TP_PROTO(struct cxl_context *ctx, unsigned int idx, u64 e, u64 v),
285 
286 	TP_ARGS(ctx, idx, e, v),
287 
288 	TP_STRUCT__entry(
289 		__field(u8, card)
290 		__field(u8, afu)
291 		__field(u16, pe)
292 		__field(unsigned int, idx)
293 		__field(u64, e)
294 		__field(u64, v)
295 	),
296 
297 	TP_fast_assign(
298 		__entry->card = ctx->afu->adapter->adapter_num;
299 		__entry->afu = ctx->afu->slice;
300 		__entry->pe = ctx->pe;
301 		__entry->idx = idx;
302 		__entry->e = e;
303 		__entry->v = v;
304 	),
305 
306 	TP_printk("afu%i.%i pe=%i SSTE[%i] E=0x%016llx V=0x%016llx",
307 		__entry->card,
308 		__entry->afu,
309 		__entry->pe,
310 		__entry->idx,
311 		__entry->e,
312 		__entry->v
313 	)
314 );
315 
316 TRACE_EVENT(cxl_pte_miss,
317 	TP_PROTO(struct cxl_context *ctx, u64 dsisr, u64 dar),
318 
319 	TP_ARGS(ctx, dsisr, dar),
320 
321 	TP_STRUCT__entry(
322 		__field(u8, card)
323 		__field(u8, afu)
324 		__field(u16, pe)
325 		__field(u64, dsisr)
326 		__field(u64, dar)
327 	),
328 
329 	TP_fast_assign(
330 		__entry->card = ctx->afu->adapter->adapter_num;
331 		__entry->afu = ctx->afu->slice;
332 		__entry->pe = ctx->pe;
333 		__entry->dsisr = dsisr;
334 		__entry->dar = dar;
335 	),
336 
337 	TP_printk("afu%i.%i pe=%i dsisr=%s dar=0x%016llx",
338 		__entry->card,
339 		__entry->afu,
340 		__entry->pe,
341 		__print_flags(__entry->dsisr, "|", DSISR_FLAGS),
342 		__entry->dar
343 	)
344 );
345 
346 TRACE_EVENT(cxl_llcmd,
347 	TP_PROTO(struct cxl_context *ctx, u64 cmd),
348 
349 	TP_ARGS(ctx, cmd),
350 
351 	TP_STRUCT__entry(
352 		__field(u8, card)
353 		__field(u8, afu)
354 		__field(u16, pe)
355 		__field(u64, cmd)
356 	),
357 
358 	TP_fast_assign(
359 		__entry->card = ctx->afu->adapter->adapter_num;
360 		__entry->afu = ctx->afu->slice;
361 		__entry->pe = ctx->pe;
362 		__entry->cmd = cmd;
363 	),
364 
365 	TP_printk("afu%i.%i pe=%i cmd=%s",
366 		__entry->card,
367 		__entry->afu,
368 		__entry->pe,
369 		__print_symbolic_u64(__entry->cmd, LLCMD_NAMES)
370 	)
371 );
372 
373 TRACE_EVENT(cxl_llcmd_done,
374 	TP_PROTO(struct cxl_context *ctx, u64 cmd, int rc),
375 
376 	TP_ARGS(ctx, cmd, rc),
377 
378 	TP_STRUCT__entry(
379 		__field(u8, card)
380 		__field(u8, afu)
381 		__field(u16, pe)
382 		__field(u64, cmd)
383 		__field(int, rc)
384 	),
385 
386 	TP_fast_assign(
387 		__entry->card = ctx->afu->adapter->adapter_num;
388 		__entry->afu = ctx->afu->slice;
389 		__entry->pe = ctx->pe;
390 		__entry->rc = rc;
391 		__entry->cmd = cmd;
392 	),
393 
394 	TP_printk("afu%i.%i pe=%i cmd=%s rc=%i",
395 		__entry->card,
396 		__entry->afu,
397 		__entry->pe,
398 		__print_symbolic_u64(__entry->cmd, LLCMD_NAMES),
399 		__entry->rc
400 	)
401 );
402 
403 DECLARE_EVENT_CLASS(cxl_afu_psl_ctrl,
404 	TP_PROTO(struct cxl_afu *afu, u64 cmd),
405 
406 	TP_ARGS(afu, cmd),
407 
408 	TP_STRUCT__entry(
409 		__field(u8, card)
410 		__field(u8, afu)
411 		__field(u64, cmd)
412 	),
413 
414 	TP_fast_assign(
415 		__entry->card = afu->adapter->adapter_num;
416 		__entry->afu = afu->slice;
417 		__entry->cmd = cmd;
418 	),
419 
420 	TP_printk("afu%i.%i cmd=%s",
421 		__entry->card,
422 		__entry->afu,
423 		__print_symbolic_u64(__entry->cmd, AFU_COMMANDS)
424 	)
425 );
426 
427 DECLARE_EVENT_CLASS(cxl_afu_psl_ctrl_done,
428 	TP_PROTO(struct cxl_afu *afu, u64 cmd, int rc),
429 
430 	TP_ARGS(afu, cmd, rc),
431 
432 	TP_STRUCT__entry(
433 		__field(u8, card)
434 		__field(u8, afu)
435 		__field(u64, cmd)
436 		__field(int, rc)
437 	),
438 
439 	TP_fast_assign(
440 		__entry->card = afu->adapter->adapter_num;
441 		__entry->afu = afu->slice;
442 		__entry->rc = rc;
443 		__entry->cmd = cmd;
444 	),
445 
446 	TP_printk("afu%i.%i cmd=%s rc=%i",
447 		__entry->card,
448 		__entry->afu,
449 		__print_symbolic_u64(__entry->cmd, AFU_COMMANDS),
450 		__entry->rc
451 	)
452 );
453 
454 DEFINE_EVENT(cxl_afu_psl_ctrl, cxl_afu_ctrl,
455 	TP_PROTO(struct cxl_afu *afu, u64 cmd),
456 	TP_ARGS(afu, cmd)
457 );
458 
459 DEFINE_EVENT(cxl_afu_psl_ctrl_done, cxl_afu_ctrl_done,
460 	TP_PROTO(struct cxl_afu *afu, u64 cmd, int rc),
461 	TP_ARGS(afu, cmd, rc)
462 );
463 
464 DEFINE_EVENT_PRINT(cxl_afu_psl_ctrl, cxl_psl_ctrl,
465 	TP_PROTO(struct cxl_afu *afu, u64 cmd),
466 	TP_ARGS(afu, cmd),
467 
468 	TP_printk("psl%i.%i cmd=%s",
469 		__entry->card,
470 		__entry->afu,
471 		__print_symbolic_u64(__entry->cmd, PSL_COMMANDS)
472 	)
473 );
474 
475 DEFINE_EVENT_PRINT(cxl_afu_psl_ctrl_done, cxl_psl_ctrl_done,
476 	TP_PROTO(struct cxl_afu *afu, u64 cmd, int rc),
477 	TP_ARGS(afu, cmd, rc),
478 
479 	TP_printk("psl%i.%i cmd=%s rc=%i",
480 		__entry->card,
481 		__entry->afu,
482 		__print_symbolic_u64(__entry->cmd, PSL_COMMANDS),
483 		__entry->rc
484 	)
485 );
486 
487 DEFINE_EVENT(cxl_pe_class, cxl_slbia,
488 	TP_PROTO(struct cxl_context *ctx),
489 	TP_ARGS(ctx)
490 );
491 
492 TRACE_EVENT(cxl_hcall,
493 	TP_PROTO(u64 unit_address, u64 process_token, long rc),
494 
495 	TP_ARGS(unit_address, process_token, rc),
496 
497 	TP_STRUCT__entry(
498 		__field(u64, unit_address)
499 		__field(u64, process_token)
500 		__field(long, rc)
501 	),
502 
503 	TP_fast_assign(
504 		__entry->unit_address = unit_address;
505 		__entry->process_token = process_token;
506 		__entry->rc = rc;
507 	),
508 
509 	TP_printk("unit_address=0x%016llx process_token=0x%016llx rc=%li",
510 		__entry->unit_address,
511 		__entry->process_token,
512 		__entry->rc
513 	)
514 );
515 
516 TRACE_EVENT(cxl_hcall_control,
517 	TP_PROTO(u64 unit_address, char *fct, u64 p1, u64 p2, u64 p3,
518 	u64 p4, unsigned long r4, long rc),
519 
520 	TP_ARGS(unit_address, fct, p1, p2, p3, p4, r4, rc),
521 
522 	TP_STRUCT__entry(
523 		__field(u64, unit_address)
524 		__field(char *, fct)
525 		__field(u64, p1)
526 		__field(u64, p2)
527 		__field(u64, p3)
528 		__field(u64, p4)
529 		__field(unsigned long, r4)
530 		__field(long, rc)
531 	),
532 
533 	TP_fast_assign(
534 		__entry->unit_address = unit_address;
535 		__entry->fct = fct;
536 		__entry->p1 = p1;
537 		__entry->p2 = p2;
538 		__entry->p3 = p3;
539 		__entry->p4 = p4;
540 		__entry->r4 = r4;
541 		__entry->rc = rc;
542 	),
543 
544 	TP_printk("unit_address=%#.16llx %s(%#llx, %#llx, %#llx, %#llx, R4: %#lx)): %li",
545 		__entry->unit_address,
546 		__entry->fct,
547 		__entry->p1,
548 		__entry->p2,
549 		__entry->p3,
550 		__entry->p4,
551 		__entry->r4,
552 		__entry->rc
553 	)
554 );
555 
556 TRACE_EVENT(cxl_hcall_attach,
557 	TP_PROTO(u64 unit_address, u64 phys_addr, unsigned long process_token,
558 		unsigned long mmio_addr, unsigned long mmio_size, long rc),
559 
560 	TP_ARGS(unit_address, phys_addr, process_token,
561 		mmio_addr, mmio_size, rc),
562 
563 	TP_STRUCT__entry(
564 		__field(u64, unit_address)
565 		__field(u64, phys_addr)
566 		__field(unsigned long, process_token)
567 		__field(unsigned long, mmio_addr)
568 		__field(unsigned long, mmio_size)
569 		__field(long, rc)
570 	),
571 
572 	TP_fast_assign(
573 		__entry->unit_address = unit_address;
574 		__entry->phys_addr = phys_addr;
575 		__entry->process_token = process_token;
576 		__entry->mmio_addr = mmio_addr;
577 		__entry->mmio_size = mmio_size;
578 		__entry->rc = rc;
579 	),
580 
581 	TP_printk("unit_address=0x%016llx phys_addr=0x%016llx "
582 		"token=0x%.8lx mmio_addr=0x%lx mmio_size=0x%lx rc=%li",
583 		__entry->unit_address,
584 		__entry->phys_addr,
585 		__entry->process_token,
586 		__entry->mmio_addr,
587 		__entry->mmio_size,
588 		__entry->rc
589 	)
590 );
591 
592 DEFINE_EVENT(cxl_hcall, cxl_hcall_detach,
593 	TP_PROTO(u64 unit_address, u64 process_token, long rc),
594 	TP_ARGS(unit_address, process_token, rc)
595 );
596 
597 DEFINE_EVENT(cxl_hcall_control, cxl_hcall_control_function,
598 	TP_PROTO(u64 unit_address, char *fct, u64 p1, u64 p2, u64 p3,
599 	u64 p4, unsigned long r4, long rc),
600 	TP_ARGS(unit_address, fct, p1, p2, p3, p4, r4, rc)
601 );
602 
603 DEFINE_EVENT(cxl_hcall, cxl_hcall_collect_int_info,
604 	TP_PROTO(u64 unit_address, u64 process_token, long rc),
605 	TP_ARGS(unit_address, process_token, rc)
606 );
607 
608 TRACE_EVENT(cxl_hcall_control_faults,
609 	TP_PROTO(u64 unit_address, u64 process_token,
610 		u64 control_mask, u64 reset_mask, unsigned long r4,
611 		long rc),
612 
613 	TP_ARGS(unit_address, process_token,
614 		control_mask, reset_mask, r4, rc),
615 
616 	TP_STRUCT__entry(
617 		__field(u64, unit_address)
618 		__field(u64, process_token)
619 		__field(u64, control_mask)
620 		__field(u64, reset_mask)
621 		__field(unsigned long, r4)
622 		__field(long, rc)
623 	),
624 
625 	TP_fast_assign(
626 		__entry->unit_address = unit_address;
627 		__entry->process_token = process_token;
628 		__entry->control_mask = control_mask;
629 		__entry->reset_mask = reset_mask;
630 		__entry->r4 = r4;
631 		__entry->rc = rc;
632 	),
633 
634 	TP_printk("unit_address=0x%016llx process_token=0x%llx "
635 		"control_mask=%#llx reset_mask=%#llx r4=%#lx rc=%li",
636 		__entry->unit_address,
637 		__entry->process_token,
638 		__entry->control_mask,
639 		__entry->reset_mask,
640 		__entry->r4,
641 		__entry->rc
642 	)
643 );
644 
645 DEFINE_EVENT(cxl_hcall_control, cxl_hcall_control_facility,
646 	TP_PROTO(u64 unit_address, char *fct, u64 p1, u64 p2, u64 p3,
647 	u64 p4, unsigned long r4, long rc),
648 	TP_ARGS(unit_address, fct, p1, p2, p3, p4, r4, rc)
649 );
650 
651 TRACE_EVENT(cxl_hcall_download_facility,
652 	TP_PROTO(u64 unit_address, char *fct, u64 list_address, u64 num,
653 	unsigned long r4, long rc),
654 
655 	TP_ARGS(unit_address, fct, list_address, num, r4, rc),
656 
657 	TP_STRUCT__entry(
658 		__field(u64, unit_address)
659 		__field(char *, fct)
660 		__field(u64, list_address)
661 		__field(u64, num)
662 		__field(unsigned long, r4)
663 		__field(long, rc)
664 	),
665 
666 	TP_fast_assign(
667 		__entry->unit_address = unit_address;
668 		__entry->fct = fct;
669 		__entry->list_address = list_address;
670 		__entry->num = num;
671 		__entry->r4 = r4;
672 		__entry->rc = rc;
673 	),
674 
675 	TP_printk("%#.16llx, %s(%#llx, %#llx), %#lx): %li",
676 		__entry->unit_address,
677 		__entry->fct,
678 		__entry->list_address,
679 		__entry->num,
680 		__entry->r4,
681 		__entry->rc
682 	)
683 );
684 
685 #endif /* _CXL_TRACE_H */
686 
687 /* This part must be outside protection */
688 #undef TRACE_INCLUDE_PATH
689 #define TRACE_INCLUDE_PATH .
690 #define TRACE_INCLUDE_FILE trace
691 #include <trace/define_trace.h>
692