• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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