Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-or-later */
0002 /*
0003  * Copyright 2015 IBM Corp.
0004  */
0005 
0006 #undef TRACE_SYSTEM
0007 #define TRACE_SYSTEM cxl
0008 
0009 #if !defined(_CXL_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
0010 #define _CXL_TRACE_H
0011 
0012 #include <linux/tracepoint.h>
0013 
0014 #include "cxl.h"
0015 
0016 #define dsisr_psl9_flags(flags) \
0017     __print_flags(flags, "|", \
0018         { CXL_PSL9_DSISR_An_CO_MASK,    "FR" }, \
0019         { CXL_PSL9_DSISR_An_TF,     "TF" }, \
0020         { CXL_PSL9_DSISR_An_PE,     "PE" }, \
0021         { CXL_PSL9_DSISR_An_AE,     "AE" }, \
0022         { CXL_PSL9_DSISR_An_OC,     "OC" }, \
0023         { CXL_PSL9_DSISR_An_S,      "S" })
0024 
0025 #define DSISR_FLAGS \
0026     { CXL_PSL_DSISR_An_DS,  "DS" }, \
0027     { CXL_PSL_DSISR_An_DM,  "DM" }, \
0028     { CXL_PSL_DSISR_An_ST,  "ST" }, \
0029     { CXL_PSL_DSISR_An_UR,  "UR" }, \
0030     { CXL_PSL_DSISR_An_PE,  "PE" }, \
0031     { CXL_PSL_DSISR_An_AE,  "AE" }, \
0032     { CXL_PSL_DSISR_An_OC,  "OC" }, \
0033     { CXL_PSL_DSISR_An_M,   "M" }, \
0034     { CXL_PSL_DSISR_An_P,   "P" }, \
0035     { CXL_PSL_DSISR_An_A,   "A" }, \
0036     { CXL_PSL_DSISR_An_S,   "S" }, \
0037     { CXL_PSL_DSISR_An_K,   "K" }
0038 
0039 #define TFC_FLAGS \
0040     { CXL_PSL_TFC_An_A, "A" }, \
0041     { CXL_PSL_TFC_An_C, "C" }, \
0042     { CXL_PSL_TFC_An_AE,    "AE" }, \
0043     { CXL_PSL_TFC_An_R, "R" }
0044 
0045 #define LLCMD_NAMES \
0046     { CXL_SPA_SW_CMD_TERMINATE, "TERMINATE" }, \
0047     { CXL_SPA_SW_CMD_REMOVE,    "REMOVE" }, \
0048     { CXL_SPA_SW_CMD_SUSPEND,   "SUSPEND" }, \
0049     { CXL_SPA_SW_CMD_RESUME,    "RESUME" }, \
0050     { CXL_SPA_SW_CMD_ADD,       "ADD" }, \
0051     { CXL_SPA_SW_CMD_UPDATE,    "UPDATE" }
0052 
0053 #define AFU_COMMANDS \
0054     { 0,            "DISABLE" }, \
0055     { CXL_AFU_Cntl_An_E,    "ENABLE" }, \
0056     { CXL_AFU_Cntl_An_RA,   "RESET" }
0057 
0058 #define PSL_COMMANDS \
0059     { CXL_PSL_SCNTL_An_Pc,  "PURGE" }, \
0060     { CXL_PSL_SCNTL_An_Sc,  "SUSPEND" }
0061 
0062 
0063 DECLARE_EVENT_CLASS(cxl_pe_class,
0064     TP_PROTO(struct cxl_context *ctx),
0065 
0066     TP_ARGS(ctx),
0067 
0068     TP_STRUCT__entry(
0069         __field(u8, card)
0070         __field(u8, afu)
0071         __field(u16, pe)
0072     ),
0073 
0074     TP_fast_assign(
0075         __entry->card = ctx->afu->adapter->adapter_num;
0076         __entry->afu = ctx->afu->slice;
0077         __entry->pe = ctx->pe;
0078     ),
0079 
0080     TP_printk("afu%i.%i pe=%i",
0081         __entry->card,
0082         __entry->afu,
0083         __entry->pe
0084     )
0085 );
0086 
0087 
0088 TRACE_EVENT(cxl_attach,
0089     TP_PROTO(struct cxl_context *ctx, u64 wed, s16 num_interrupts, u64 amr),
0090 
0091     TP_ARGS(ctx, wed, num_interrupts, amr),
0092 
0093     TP_STRUCT__entry(
0094         __field(u8, card)
0095         __field(u8, afu)
0096         __field(u16, pe)
0097         __field(pid_t, pid)
0098         __field(u64, wed)
0099         __field(u64, amr)
0100         __field(s16, num_interrupts)
0101     ),
0102 
0103     TP_fast_assign(
0104         __entry->card = ctx->afu->adapter->adapter_num;
0105         __entry->afu = ctx->afu->slice;
0106         __entry->pe = ctx->pe;
0107         __entry->pid = pid_nr(ctx->pid);
0108         __entry->wed = wed;
0109         __entry->amr = amr;
0110         __entry->num_interrupts = num_interrupts;
0111     ),
0112 
0113     TP_printk("afu%i.%i pid=%i pe=%i wed=0x%016llx irqs=%i amr=0x%llx",
0114         __entry->card,
0115         __entry->afu,
0116         __entry->pid,
0117         __entry->pe,
0118         __entry->wed,
0119         __entry->num_interrupts,
0120         __entry->amr
0121     )
0122 );
0123 
0124 DEFINE_EVENT(cxl_pe_class, cxl_detach,
0125     TP_PROTO(struct cxl_context *ctx),
0126     TP_ARGS(ctx)
0127 );
0128 
0129 TRACE_EVENT(cxl_afu_irq,
0130     TP_PROTO(struct cxl_context *ctx, int afu_irq, int virq, irq_hw_number_t hwirq),
0131 
0132     TP_ARGS(ctx, afu_irq, virq, hwirq),
0133 
0134     TP_STRUCT__entry(
0135         __field(u8, card)
0136         __field(u8, afu)
0137         __field(u16, pe)
0138         __field(u16, afu_irq)
0139         __field(int, virq)
0140         __field(irq_hw_number_t, hwirq)
0141     ),
0142 
0143     TP_fast_assign(
0144         __entry->card = ctx->afu->adapter->adapter_num;
0145         __entry->afu = ctx->afu->slice;
0146         __entry->pe = ctx->pe;
0147         __entry->afu_irq = afu_irq;
0148         __entry->virq = virq;
0149         __entry->hwirq = hwirq;
0150     ),
0151 
0152     TP_printk("afu%i.%i pe=%i afu_irq=%i virq=%i hwirq=0x%lx",
0153         __entry->card,
0154         __entry->afu,
0155         __entry->pe,
0156         __entry->afu_irq,
0157         __entry->virq,
0158         __entry->hwirq
0159     )
0160 );
0161 
0162 TRACE_EVENT(cxl_psl9_irq,
0163     TP_PROTO(struct cxl_context *ctx, int irq, u64 dsisr, u64 dar),
0164 
0165     TP_ARGS(ctx, irq, dsisr, dar),
0166 
0167     TP_STRUCT__entry(
0168         __field(u8, card)
0169         __field(u8, afu)
0170         __field(u16, pe)
0171         __field(int, irq)
0172         __field(u64, dsisr)
0173         __field(u64, dar)
0174     ),
0175 
0176     TP_fast_assign(
0177         __entry->card = ctx->afu->adapter->adapter_num;
0178         __entry->afu = ctx->afu->slice;
0179         __entry->pe = ctx->pe;
0180         __entry->irq = irq;
0181         __entry->dsisr = dsisr;
0182         __entry->dar = dar;
0183     ),
0184 
0185     TP_printk("afu%i.%i pe=%i irq=%i dsisr=0x%016llx dsisr=%s dar=0x%016llx",
0186         __entry->card,
0187         __entry->afu,
0188         __entry->pe,
0189         __entry->irq,
0190         __entry->dsisr,
0191         dsisr_psl9_flags(__entry->dsisr),
0192         __entry->dar
0193     )
0194 );
0195 
0196 TRACE_EVENT(cxl_psl_irq,
0197     TP_PROTO(struct cxl_context *ctx, int irq, u64 dsisr, u64 dar),
0198 
0199     TP_ARGS(ctx, irq, dsisr, dar),
0200 
0201     TP_STRUCT__entry(
0202         __field(u8, card)
0203         __field(u8, afu)
0204         __field(u16, pe)
0205         __field(int, irq)
0206         __field(u64, dsisr)
0207         __field(u64, dar)
0208     ),
0209 
0210     TP_fast_assign(
0211         __entry->card = ctx->afu->adapter->adapter_num;
0212         __entry->afu = ctx->afu->slice;
0213         __entry->pe = ctx->pe;
0214         __entry->irq = irq;
0215         __entry->dsisr = dsisr;
0216         __entry->dar = dar;
0217     ),
0218 
0219     TP_printk("afu%i.%i pe=%i irq=%i dsisr=%s dar=0x%016llx",
0220         __entry->card,
0221         __entry->afu,
0222         __entry->pe,
0223         __entry->irq,
0224         __print_flags(__entry->dsisr, "|", DSISR_FLAGS),
0225         __entry->dar
0226     )
0227 );
0228 
0229 TRACE_EVENT(cxl_psl_irq_ack,
0230     TP_PROTO(struct cxl_context *ctx, u64 tfc),
0231 
0232     TP_ARGS(ctx, tfc),
0233 
0234     TP_STRUCT__entry(
0235         __field(u8, card)
0236         __field(u8, afu)
0237         __field(u16, pe)
0238         __field(u64, tfc)
0239     ),
0240 
0241     TP_fast_assign(
0242         __entry->card = ctx->afu->adapter->adapter_num;
0243         __entry->afu = ctx->afu->slice;
0244         __entry->pe = ctx->pe;
0245         __entry->tfc = tfc;
0246     ),
0247 
0248     TP_printk("afu%i.%i pe=%i tfc=%s",
0249         __entry->card,
0250         __entry->afu,
0251         __entry->pe,
0252         __print_flags(__entry->tfc, "|", TFC_FLAGS)
0253     )
0254 );
0255 
0256 TRACE_EVENT(cxl_ste_miss,
0257     TP_PROTO(struct cxl_context *ctx, u64 dar),
0258 
0259     TP_ARGS(ctx, dar),
0260 
0261     TP_STRUCT__entry(
0262         __field(u8, card)
0263         __field(u8, afu)
0264         __field(u16, pe)
0265         __field(u64, dar)
0266     ),
0267 
0268     TP_fast_assign(
0269         __entry->card = ctx->afu->adapter->adapter_num;
0270         __entry->afu = ctx->afu->slice;
0271         __entry->pe = ctx->pe;
0272         __entry->dar = dar;
0273     ),
0274 
0275     TP_printk("afu%i.%i pe=%i dar=0x%016llx",
0276         __entry->card,
0277         __entry->afu,
0278         __entry->pe,
0279         __entry->dar
0280     )
0281 );
0282 
0283 TRACE_EVENT(cxl_ste_write,
0284     TP_PROTO(struct cxl_context *ctx, unsigned int idx, u64 e, u64 v),
0285 
0286     TP_ARGS(ctx, idx, e, v),
0287 
0288     TP_STRUCT__entry(
0289         __field(u8, card)
0290         __field(u8, afu)
0291         __field(u16, pe)
0292         __field(unsigned int, idx)
0293         __field(u64, e)
0294         __field(u64, v)
0295     ),
0296 
0297     TP_fast_assign(
0298         __entry->card = ctx->afu->adapter->adapter_num;
0299         __entry->afu = ctx->afu->slice;
0300         __entry->pe = ctx->pe;
0301         __entry->idx = idx;
0302         __entry->e = e;
0303         __entry->v = v;
0304     ),
0305 
0306     TP_printk("afu%i.%i pe=%i SSTE[%i] E=0x%016llx V=0x%016llx",
0307         __entry->card,
0308         __entry->afu,
0309         __entry->pe,
0310         __entry->idx,
0311         __entry->e,
0312         __entry->v
0313     )
0314 );
0315 
0316 TRACE_EVENT(cxl_pte_miss,
0317     TP_PROTO(struct cxl_context *ctx, u64 dsisr, u64 dar),
0318 
0319     TP_ARGS(ctx, dsisr, dar),
0320 
0321     TP_STRUCT__entry(
0322         __field(u8, card)
0323         __field(u8, afu)
0324         __field(u16, pe)
0325         __field(u64, dsisr)
0326         __field(u64, dar)
0327     ),
0328 
0329     TP_fast_assign(
0330         __entry->card = ctx->afu->adapter->adapter_num;
0331         __entry->afu = ctx->afu->slice;
0332         __entry->pe = ctx->pe;
0333         __entry->dsisr = dsisr;
0334         __entry->dar = dar;
0335     ),
0336 
0337     TP_printk("afu%i.%i pe=%i dsisr=%s dar=0x%016llx",
0338         __entry->card,
0339         __entry->afu,
0340         __entry->pe,
0341         __print_flags(__entry->dsisr, "|", DSISR_FLAGS),
0342         __entry->dar
0343     )
0344 );
0345 
0346 TRACE_EVENT(cxl_llcmd,
0347     TP_PROTO(struct cxl_context *ctx, u64 cmd),
0348 
0349     TP_ARGS(ctx, cmd),
0350 
0351     TP_STRUCT__entry(
0352         __field(u8, card)
0353         __field(u8, afu)
0354         __field(u16, pe)
0355         __field(u64, cmd)
0356     ),
0357 
0358     TP_fast_assign(
0359         __entry->card = ctx->afu->adapter->adapter_num;
0360         __entry->afu = ctx->afu->slice;
0361         __entry->pe = ctx->pe;
0362         __entry->cmd = cmd;
0363     ),
0364 
0365     TP_printk("afu%i.%i pe=%i cmd=%s",
0366         __entry->card,
0367         __entry->afu,
0368         __entry->pe,
0369         __print_symbolic_u64(__entry->cmd, LLCMD_NAMES)
0370     )
0371 );
0372 
0373 TRACE_EVENT(cxl_llcmd_done,
0374     TP_PROTO(struct cxl_context *ctx, u64 cmd, int rc),
0375 
0376     TP_ARGS(ctx, cmd, rc),
0377 
0378     TP_STRUCT__entry(
0379         __field(u8, card)
0380         __field(u8, afu)
0381         __field(u16, pe)
0382         __field(u64, cmd)
0383         __field(int, rc)
0384     ),
0385 
0386     TP_fast_assign(
0387         __entry->card = ctx->afu->adapter->adapter_num;
0388         __entry->afu = ctx->afu->slice;
0389         __entry->pe = ctx->pe;
0390         __entry->rc = rc;
0391         __entry->cmd = cmd;
0392     ),
0393 
0394     TP_printk("afu%i.%i pe=%i cmd=%s rc=%i",
0395         __entry->card,
0396         __entry->afu,
0397         __entry->pe,
0398         __print_symbolic_u64(__entry->cmd, LLCMD_NAMES),
0399         __entry->rc
0400     )
0401 );
0402 
0403 DECLARE_EVENT_CLASS(cxl_afu_psl_ctrl,
0404     TP_PROTO(struct cxl_afu *afu, u64 cmd),
0405 
0406     TP_ARGS(afu, cmd),
0407 
0408     TP_STRUCT__entry(
0409         __field(u8, card)
0410         __field(u8, afu)
0411         __field(u64, cmd)
0412     ),
0413 
0414     TP_fast_assign(
0415         __entry->card = afu->adapter->adapter_num;
0416         __entry->afu = afu->slice;
0417         __entry->cmd = cmd;
0418     ),
0419 
0420     TP_printk("afu%i.%i cmd=%s",
0421         __entry->card,
0422         __entry->afu,
0423         __print_symbolic_u64(__entry->cmd, AFU_COMMANDS)
0424     )
0425 );
0426 
0427 DECLARE_EVENT_CLASS(cxl_afu_psl_ctrl_done,
0428     TP_PROTO(struct cxl_afu *afu, u64 cmd, int rc),
0429 
0430     TP_ARGS(afu, cmd, rc),
0431 
0432     TP_STRUCT__entry(
0433         __field(u8, card)
0434         __field(u8, afu)
0435         __field(u64, cmd)
0436         __field(int, rc)
0437     ),
0438 
0439     TP_fast_assign(
0440         __entry->card = afu->adapter->adapter_num;
0441         __entry->afu = afu->slice;
0442         __entry->rc = rc;
0443         __entry->cmd = cmd;
0444     ),
0445 
0446     TP_printk("afu%i.%i cmd=%s rc=%i",
0447         __entry->card,
0448         __entry->afu,
0449         __print_symbolic_u64(__entry->cmd, AFU_COMMANDS),
0450         __entry->rc
0451     )
0452 );
0453 
0454 DEFINE_EVENT(cxl_afu_psl_ctrl, cxl_afu_ctrl,
0455     TP_PROTO(struct cxl_afu *afu, u64 cmd),
0456     TP_ARGS(afu, cmd)
0457 );
0458 
0459 DEFINE_EVENT(cxl_afu_psl_ctrl_done, cxl_afu_ctrl_done,
0460     TP_PROTO(struct cxl_afu *afu, u64 cmd, int rc),
0461     TP_ARGS(afu, cmd, rc)
0462 );
0463 
0464 DEFINE_EVENT_PRINT(cxl_afu_psl_ctrl, cxl_psl_ctrl,
0465     TP_PROTO(struct cxl_afu *afu, u64 cmd),
0466     TP_ARGS(afu, cmd),
0467 
0468     TP_printk("psl%i.%i cmd=%s",
0469         __entry->card,
0470         __entry->afu,
0471         __print_symbolic_u64(__entry->cmd, PSL_COMMANDS)
0472     )
0473 );
0474 
0475 DEFINE_EVENT_PRINT(cxl_afu_psl_ctrl_done, cxl_psl_ctrl_done,
0476     TP_PROTO(struct cxl_afu *afu, u64 cmd, int rc),
0477     TP_ARGS(afu, cmd, rc),
0478 
0479     TP_printk("psl%i.%i cmd=%s rc=%i",
0480         __entry->card,
0481         __entry->afu,
0482         __print_symbolic_u64(__entry->cmd, PSL_COMMANDS),
0483         __entry->rc
0484     )
0485 );
0486 
0487 DEFINE_EVENT(cxl_pe_class, cxl_slbia,
0488     TP_PROTO(struct cxl_context *ctx),
0489     TP_ARGS(ctx)
0490 );
0491 
0492 TRACE_EVENT(cxl_hcall,
0493     TP_PROTO(u64 unit_address, u64 process_token, long rc),
0494 
0495     TP_ARGS(unit_address, process_token, rc),
0496 
0497     TP_STRUCT__entry(
0498         __field(u64, unit_address)
0499         __field(u64, process_token)
0500         __field(long, rc)
0501     ),
0502 
0503     TP_fast_assign(
0504         __entry->unit_address = unit_address;
0505         __entry->process_token = process_token;
0506         __entry->rc = rc;
0507     ),
0508 
0509     TP_printk("unit_address=0x%016llx process_token=0x%016llx rc=%li",
0510         __entry->unit_address,
0511         __entry->process_token,
0512         __entry->rc
0513     )
0514 );
0515 
0516 TRACE_EVENT(cxl_hcall_control,
0517     TP_PROTO(u64 unit_address, char *fct, u64 p1, u64 p2, u64 p3,
0518     u64 p4, unsigned long r4, long rc),
0519 
0520     TP_ARGS(unit_address, fct, p1, p2, p3, p4, r4, rc),
0521 
0522     TP_STRUCT__entry(
0523         __field(u64, unit_address)
0524         __field(char *, fct)
0525         __field(u64, p1)
0526         __field(u64, p2)
0527         __field(u64, p3)
0528         __field(u64, p4)
0529         __field(unsigned long, r4)
0530         __field(long, rc)
0531     ),
0532 
0533     TP_fast_assign(
0534         __entry->unit_address = unit_address;
0535         __entry->fct = fct;
0536         __entry->p1 = p1;
0537         __entry->p2 = p2;
0538         __entry->p3 = p3;
0539         __entry->p4 = p4;
0540         __entry->r4 = r4;
0541         __entry->rc = rc;
0542     ),
0543 
0544     TP_printk("unit_address=%#.16llx %s(%#llx, %#llx, %#llx, %#llx, R4: %#lx)): %li",
0545         __entry->unit_address,
0546         __entry->fct,
0547         __entry->p1,
0548         __entry->p2,
0549         __entry->p3,
0550         __entry->p4,
0551         __entry->r4,
0552         __entry->rc
0553     )
0554 );
0555 
0556 TRACE_EVENT(cxl_hcall_attach,
0557     TP_PROTO(u64 unit_address, u64 phys_addr, unsigned long process_token,
0558         unsigned long mmio_addr, unsigned long mmio_size, long rc),
0559 
0560     TP_ARGS(unit_address, phys_addr, process_token,
0561         mmio_addr, mmio_size, rc),
0562 
0563     TP_STRUCT__entry(
0564         __field(u64, unit_address)
0565         __field(u64, phys_addr)
0566         __field(unsigned long, process_token)
0567         __field(unsigned long, mmio_addr)
0568         __field(unsigned long, mmio_size)
0569         __field(long, rc)
0570     ),
0571 
0572     TP_fast_assign(
0573         __entry->unit_address = unit_address;
0574         __entry->phys_addr = phys_addr;
0575         __entry->process_token = process_token;
0576         __entry->mmio_addr = mmio_addr;
0577         __entry->mmio_size = mmio_size;
0578         __entry->rc = rc;
0579     ),
0580 
0581     TP_printk("unit_address=0x%016llx phys_addr=0x%016llx "
0582         "token=0x%.8lx mmio_addr=0x%lx mmio_size=0x%lx rc=%li",
0583         __entry->unit_address,
0584         __entry->phys_addr,
0585         __entry->process_token,
0586         __entry->mmio_addr,
0587         __entry->mmio_size,
0588         __entry->rc
0589     )
0590 );
0591 
0592 DEFINE_EVENT(cxl_hcall, cxl_hcall_detach,
0593     TP_PROTO(u64 unit_address, u64 process_token, long rc),
0594     TP_ARGS(unit_address, process_token, rc)
0595 );
0596 
0597 DEFINE_EVENT(cxl_hcall_control, cxl_hcall_control_function,
0598     TP_PROTO(u64 unit_address, char *fct, u64 p1, u64 p2, u64 p3,
0599     u64 p4, unsigned long r4, long rc),
0600     TP_ARGS(unit_address, fct, p1, p2, p3, p4, r4, rc)
0601 );
0602 
0603 DEFINE_EVENT(cxl_hcall, cxl_hcall_collect_int_info,
0604     TP_PROTO(u64 unit_address, u64 process_token, long rc),
0605     TP_ARGS(unit_address, process_token, rc)
0606 );
0607 
0608 TRACE_EVENT(cxl_hcall_control_faults,
0609     TP_PROTO(u64 unit_address, u64 process_token,
0610         u64 control_mask, u64 reset_mask, unsigned long r4,
0611         long rc),
0612 
0613     TP_ARGS(unit_address, process_token,
0614         control_mask, reset_mask, r4, rc),
0615 
0616     TP_STRUCT__entry(
0617         __field(u64, unit_address)
0618         __field(u64, process_token)
0619         __field(u64, control_mask)
0620         __field(u64, reset_mask)
0621         __field(unsigned long, r4)
0622         __field(long, rc)
0623     ),
0624 
0625     TP_fast_assign(
0626         __entry->unit_address = unit_address;
0627         __entry->process_token = process_token;
0628         __entry->control_mask = control_mask;
0629         __entry->reset_mask = reset_mask;
0630         __entry->r4 = r4;
0631         __entry->rc = rc;
0632     ),
0633 
0634     TP_printk("unit_address=0x%016llx process_token=0x%llx "
0635         "control_mask=%#llx reset_mask=%#llx r4=%#lx rc=%li",
0636         __entry->unit_address,
0637         __entry->process_token,
0638         __entry->control_mask,
0639         __entry->reset_mask,
0640         __entry->r4,
0641         __entry->rc
0642     )
0643 );
0644 
0645 DEFINE_EVENT(cxl_hcall_control, cxl_hcall_control_facility,
0646     TP_PROTO(u64 unit_address, char *fct, u64 p1, u64 p2, u64 p3,
0647     u64 p4, unsigned long r4, long rc),
0648     TP_ARGS(unit_address, fct, p1, p2, p3, p4, r4, rc)
0649 );
0650 
0651 TRACE_EVENT(cxl_hcall_download_facility,
0652     TP_PROTO(u64 unit_address, char *fct, u64 list_address, u64 num,
0653     unsigned long r4, long rc),
0654 
0655     TP_ARGS(unit_address, fct, list_address, num, r4, rc),
0656 
0657     TP_STRUCT__entry(
0658         __field(u64, unit_address)
0659         __field(char *, fct)
0660         __field(u64, list_address)
0661         __field(u64, num)
0662         __field(unsigned long, r4)
0663         __field(long, rc)
0664     ),
0665 
0666     TP_fast_assign(
0667         __entry->unit_address = unit_address;
0668         __entry->fct = fct;
0669         __entry->list_address = list_address;
0670         __entry->num = num;
0671         __entry->r4 = r4;
0672         __entry->rc = rc;
0673     ),
0674 
0675     TP_printk("%#.16llx, %s(%#llx, %#llx), %#lx): %li",
0676         __entry->unit_address,
0677         __entry->fct,
0678         __entry->list_address,
0679         __entry->num,
0680         __entry->r4,
0681         __entry->rc
0682     )
0683 );
0684 
0685 #endif /* _CXL_TRACE_H */
0686 
0687 /* This part must be outside protection */
0688 #undef TRACE_INCLUDE_PATH
0689 #define TRACE_INCLUDE_PATH .
0690 #define TRACE_INCLUDE_FILE trace
0691 #include <trace/define_trace.h>