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