xref: /kernel/linux/linux-6.6/drivers/misc/cxl/trace.h (revision 62306a36)
162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-or-later */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Copyright 2015 IBM Corp.
462306a36Sopenharmony_ci */
562306a36Sopenharmony_ci
662306a36Sopenharmony_ci#undef TRACE_SYSTEM
762306a36Sopenharmony_ci#define TRACE_SYSTEM cxl
862306a36Sopenharmony_ci
962306a36Sopenharmony_ci#if !defined(_CXL_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
1062306a36Sopenharmony_ci#define _CXL_TRACE_H
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ci#include <linux/tracepoint.h>
1362306a36Sopenharmony_ci
1462306a36Sopenharmony_ci#include "cxl.h"
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_ci#define dsisr_psl9_flags(flags) \
1762306a36Sopenharmony_ci	__print_flags(flags, "|", \
1862306a36Sopenharmony_ci		{ CXL_PSL9_DSISR_An_CO_MASK,	"FR" }, \
1962306a36Sopenharmony_ci		{ CXL_PSL9_DSISR_An_TF,		"TF" }, \
2062306a36Sopenharmony_ci		{ CXL_PSL9_DSISR_An_PE,		"PE" }, \
2162306a36Sopenharmony_ci		{ CXL_PSL9_DSISR_An_AE,		"AE" }, \
2262306a36Sopenharmony_ci		{ CXL_PSL9_DSISR_An_OC,		"OC" }, \
2362306a36Sopenharmony_ci		{ CXL_PSL9_DSISR_An_S,		"S" })
2462306a36Sopenharmony_ci
2562306a36Sopenharmony_ci#define DSISR_FLAGS \
2662306a36Sopenharmony_ci	{ CXL_PSL_DSISR_An_DS,	"DS" }, \
2762306a36Sopenharmony_ci	{ CXL_PSL_DSISR_An_DM,	"DM" }, \
2862306a36Sopenharmony_ci	{ CXL_PSL_DSISR_An_ST,	"ST" }, \
2962306a36Sopenharmony_ci	{ CXL_PSL_DSISR_An_UR,	"UR" }, \
3062306a36Sopenharmony_ci	{ CXL_PSL_DSISR_An_PE,	"PE" }, \
3162306a36Sopenharmony_ci	{ CXL_PSL_DSISR_An_AE,	"AE" }, \
3262306a36Sopenharmony_ci	{ CXL_PSL_DSISR_An_OC,	"OC" }, \
3362306a36Sopenharmony_ci	{ CXL_PSL_DSISR_An_M,	"M" }, \
3462306a36Sopenharmony_ci	{ CXL_PSL_DSISR_An_P,	"P" }, \
3562306a36Sopenharmony_ci	{ CXL_PSL_DSISR_An_A,	"A" }, \
3662306a36Sopenharmony_ci	{ CXL_PSL_DSISR_An_S,	"S" }, \
3762306a36Sopenharmony_ci	{ CXL_PSL_DSISR_An_K,	"K" }
3862306a36Sopenharmony_ci
3962306a36Sopenharmony_ci#define TFC_FLAGS \
4062306a36Sopenharmony_ci	{ CXL_PSL_TFC_An_A,	"A" }, \
4162306a36Sopenharmony_ci	{ CXL_PSL_TFC_An_C,	"C" }, \
4262306a36Sopenharmony_ci	{ CXL_PSL_TFC_An_AE,	"AE" }, \
4362306a36Sopenharmony_ci	{ CXL_PSL_TFC_An_R,	"R" }
4462306a36Sopenharmony_ci
4562306a36Sopenharmony_ci#define LLCMD_NAMES \
4662306a36Sopenharmony_ci	{ CXL_SPA_SW_CMD_TERMINATE,	"TERMINATE" }, \
4762306a36Sopenharmony_ci	{ CXL_SPA_SW_CMD_REMOVE,	"REMOVE" }, \
4862306a36Sopenharmony_ci	{ CXL_SPA_SW_CMD_SUSPEND,	"SUSPEND" }, \
4962306a36Sopenharmony_ci	{ CXL_SPA_SW_CMD_RESUME,	"RESUME" }, \
5062306a36Sopenharmony_ci	{ CXL_SPA_SW_CMD_ADD,		"ADD" }, \
5162306a36Sopenharmony_ci	{ CXL_SPA_SW_CMD_UPDATE,	"UPDATE" }
5262306a36Sopenharmony_ci
5362306a36Sopenharmony_ci#define AFU_COMMANDS \
5462306a36Sopenharmony_ci	{ 0,			"DISABLE" }, \
5562306a36Sopenharmony_ci	{ CXL_AFU_Cntl_An_E,	"ENABLE" }, \
5662306a36Sopenharmony_ci	{ CXL_AFU_Cntl_An_RA,	"RESET" }
5762306a36Sopenharmony_ci
5862306a36Sopenharmony_ci#define PSL_COMMANDS \
5962306a36Sopenharmony_ci	{ CXL_PSL_SCNTL_An_Pc,	"PURGE" }, \
6062306a36Sopenharmony_ci	{ CXL_PSL_SCNTL_An_Sc,	"SUSPEND" }
6162306a36Sopenharmony_ci
6262306a36Sopenharmony_ci
6362306a36Sopenharmony_ciDECLARE_EVENT_CLASS(cxl_pe_class,
6462306a36Sopenharmony_ci	TP_PROTO(struct cxl_context *ctx),
6562306a36Sopenharmony_ci
6662306a36Sopenharmony_ci	TP_ARGS(ctx),
6762306a36Sopenharmony_ci
6862306a36Sopenharmony_ci	TP_STRUCT__entry(
6962306a36Sopenharmony_ci		__field(u8, card)
7062306a36Sopenharmony_ci		__field(u8, afu)
7162306a36Sopenharmony_ci		__field(u16, pe)
7262306a36Sopenharmony_ci	),
7362306a36Sopenharmony_ci
7462306a36Sopenharmony_ci	TP_fast_assign(
7562306a36Sopenharmony_ci		__entry->card = ctx->afu->adapter->adapter_num;
7662306a36Sopenharmony_ci		__entry->afu = ctx->afu->slice;
7762306a36Sopenharmony_ci		__entry->pe = ctx->pe;
7862306a36Sopenharmony_ci	),
7962306a36Sopenharmony_ci
8062306a36Sopenharmony_ci	TP_printk("afu%i.%i pe=%i",
8162306a36Sopenharmony_ci		__entry->card,
8262306a36Sopenharmony_ci		__entry->afu,
8362306a36Sopenharmony_ci		__entry->pe
8462306a36Sopenharmony_ci	)
8562306a36Sopenharmony_ci);
8662306a36Sopenharmony_ci
8762306a36Sopenharmony_ci
8862306a36Sopenharmony_ciTRACE_EVENT(cxl_attach,
8962306a36Sopenharmony_ci	TP_PROTO(struct cxl_context *ctx, u64 wed, s16 num_interrupts, u64 amr),
9062306a36Sopenharmony_ci
9162306a36Sopenharmony_ci	TP_ARGS(ctx, wed, num_interrupts, amr),
9262306a36Sopenharmony_ci
9362306a36Sopenharmony_ci	TP_STRUCT__entry(
9462306a36Sopenharmony_ci		__field(u8, card)
9562306a36Sopenharmony_ci		__field(u8, afu)
9662306a36Sopenharmony_ci		__field(u16, pe)
9762306a36Sopenharmony_ci		__field(pid_t, pid)
9862306a36Sopenharmony_ci		__field(u64, wed)
9962306a36Sopenharmony_ci		__field(u64, amr)
10062306a36Sopenharmony_ci		__field(s16, num_interrupts)
10162306a36Sopenharmony_ci	),
10262306a36Sopenharmony_ci
10362306a36Sopenharmony_ci	TP_fast_assign(
10462306a36Sopenharmony_ci		__entry->card = ctx->afu->adapter->adapter_num;
10562306a36Sopenharmony_ci		__entry->afu = ctx->afu->slice;
10662306a36Sopenharmony_ci		__entry->pe = ctx->pe;
10762306a36Sopenharmony_ci		__entry->pid = pid_nr(ctx->pid);
10862306a36Sopenharmony_ci		__entry->wed = wed;
10962306a36Sopenharmony_ci		__entry->amr = amr;
11062306a36Sopenharmony_ci		__entry->num_interrupts = num_interrupts;
11162306a36Sopenharmony_ci	),
11262306a36Sopenharmony_ci
11362306a36Sopenharmony_ci	TP_printk("afu%i.%i pid=%i pe=%i wed=0x%016llx irqs=%i amr=0x%llx",
11462306a36Sopenharmony_ci		__entry->card,
11562306a36Sopenharmony_ci		__entry->afu,
11662306a36Sopenharmony_ci		__entry->pid,
11762306a36Sopenharmony_ci		__entry->pe,
11862306a36Sopenharmony_ci		__entry->wed,
11962306a36Sopenharmony_ci		__entry->num_interrupts,
12062306a36Sopenharmony_ci		__entry->amr
12162306a36Sopenharmony_ci	)
12262306a36Sopenharmony_ci);
12362306a36Sopenharmony_ci
12462306a36Sopenharmony_ciDEFINE_EVENT(cxl_pe_class, cxl_detach,
12562306a36Sopenharmony_ci	TP_PROTO(struct cxl_context *ctx),
12662306a36Sopenharmony_ci	TP_ARGS(ctx)
12762306a36Sopenharmony_ci);
12862306a36Sopenharmony_ci
12962306a36Sopenharmony_ciTRACE_EVENT(cxl_afu_irq,
13062306a36Sopenharmony_ci	TP_PROTO(struct cxl_context *ctx, int afu_irq, int virq, irq_hw_number_t hwirq),
13162306a36Sopenharmony_ci
13262306a36Sopenharmony_ci	TP_ARGS(ctx, afu_irq, virq, hwirq),
13362306a36Sopenharmony_ci
13462306a36Sopenharmony_ci	TP_STRUCT__entry(
13562306a36Sopenharmony_ci		__field(u8, card)
13662306a36Sopenharmony_ci		__field(u8, afu)
13762306a36Sopenharmony_ci		__field(u16, pe)
13862306a36Sopenharmony_ci		__field(u16, afu_irq)
13962306a36Sopenharmony_ci		__field(int, virq)
14062306a36Sopenharmony_ci		__field(irq_hw_number_t, hwirq)
14162306a36Sopenharmony_ci	),
14262306a36Sopenharmony_ci
14362306a36Sopenharmony_ci	TP_fast_assign(
14462306a36Sopenharmony_ci		__entry->card = ctx->afu->adapter->adapter_num;
14562306a36Sopenharmony_ci		__entry->afu = ctx->afu->slice;
14662306a36Sopenharmony_ci		__entry->pe = ctx->pe;
14762306a36Sopenharmony_ci		__entry->afu_irq = afu_irq;
14862306a36Sopenharmony_ci		__entry->virq = virq;
14962306a36Sopenharmony_ci		__entry->hwirq = hwirq;
15062306a36Sopenharmony_ci	),
15162306a36Sopenharmony_ci
15262306a36Sopenharmony_ci	TP_printk("afu%i.%i pe=%i afu_irq=%i virq=%i hwirq=0x%lx",
15362306a36Sopenharmony_ci		__entry->card,
15462306a36Sopenharmony_ci		__entry->afu,
15562306a36Sopenharmony_ci		__entry->pe,
15662306a36Sopenharmony_ci		__entry->afu_irq,
15762306a36Sopenharmony_ci		__entry->virq,
15862306a36Sopenharmony_ci		__entry->hwirq
15962306a36Sopenharmony_ci	)
16062306a36Sopenharmony_ci);
16162306a36Sopenharmony_ci
16262306a36Sopenharmony_ciTRACE_EVENT(cxl_psl9_irq,
16362306a36Sopenharmony_ci	TP_PROTO(struct cxl_context *ctx, int irq, u64 dsisr, u64 dar),
16462306a36Sopenharmony_ci
16562306a36Sopenharmony_ci	TP_ARGS(ctx, irq, dsisr, dar),
16662306a36Sopenharmony_ci
16762306a36Sopenharmony_ci	TP_STRUCT__entry(
16862306a36Sopenharmony_ci		__field(u8, card)
16962306a36Sopenharmony_ci		__field(u8, afu)
17062306a36Sopenharmony_ci		__field(u16, pe)
17162306a36Sopenharmony_ci		__field(int, irq)
17262306a36Sopenharmony_ci		__field(u64, dsisr)
17362306a36Sopenharmony_ci		__field(u64, dar)
17462306a36Sopenharmony_ci	),
17562306a36Sopenharmony_ci
17662306a36Sopenharmony_ci	TP_fast_assign(
17762306a36Sopenharmony_ci		__entry->card = ctx->afu->adapter->adapter_num;
17862306a36Sopenharmony_ci		__entry->afu = ctx->afu->slice;
17962306a36Sopenharmony_ci		__entry->pe = ctx->pe;
18062306a36Sopenharmony_ci		__entry->irq = irq;
18162306a36Sopenharmony_ci		__entry->dsisr = dsisr;
18262306a36Sopenharmony_ci		__entry->dar = dar;
18362306a36Sopenharmony_ci	),
18462306a36Sopenharmony_ci
18562306a36Sopenharmony_ci	TP_printk("afu%i.%i pe=%i irq=%i dsisr=0x%016llx dsisr=%s dar=0x%016llx",
18662306a36Sopenharmony_ci		__entry->card,
18762306a36Sopenharmony_ci		__entry->afu,
18862306a36Sopenharmony_ci		__entry->pe,
18962306a36Sopenharmony_ci		__entry->irq,
19062306a36Sopenharmony_ci		__entry->dsisr,
19162306a36Sopenharmony_ci		dsisr_psl9_flags(__entry->dsisr),
19262306a36Sopenharmony_ci		__entry->dar
19362306a36Sopenharmony_ci	)
19462306a36Sopenharmony_ci);
19562306a36Sopenharmony_ci
19662306a36Sopenharmony_ciTRACE_EVENT(cxl_psl_irq,
19762306a36Sopenharmony_ci	TP_PROTO(struct cxl_context *ctx, int irq, u64 dsisr, u64 dar),
19862306a36Sopenharmony_ci
19962306a36Sopenharmony_ci	TP_ARGS(ctx, irq, dsisr, dar),
20062306a36Sopenharmony_ci
20162306a36Sopenharmony_ci	TP_STRUCT__entry(
20262306a36Sopenharmony_ci		__field(u8, card)
20362306a36Sopenharmony_ci		__field(u8, afu)
20462306a36Sopenharmony_ci		__field(u16, pe)
20562306a36Sopenharmony_ci		__field(int, irq)
20662306a36Sopenharmony_ci		__field(u64, dsisr)
20762306a36Sopenharmony_ci		__field(u64, dar)
20862306a36Sopenharmony_ci	),
20962306a36Sopenharmony_ci
21062306a36Sopenharmony_ci	TP_fast_assign(
21162306a36Sopenharmony_ci		__entry->card = ctx->afu->adapter->adapter_num;
21262306a36Sopenharmony_ci		__entry->afu = ctx->afu->slice;
21362306a36Sopenharmony_ci		__entry->pe = ctx->pe;
21462306a36Sopenharmony_ci		__entry->irq = irq;
21562306a36Sopenharmony_ci		__entry->dsisr = dsisr;
21662306a36Sopenharmony_ci		__entry->dar = dar;
21762306a36Sopenharmony_ci	),
21862306a36Sopenharmony_ci
21962306a36Sopenharmony_ci	TP_printk("afu%i.%i pe=%i irq=%i dsisr=%s dar=0x%016llx",
22062306a36Sopenharmony_ci		__entry->card,
22162306a36Sopenharmony_ci		__entry->afu,
22262306a36Sopenharmony_ci		__entry->pe,
22362306a36Sopenharmony_ci		__entry->irq,
22462306a36Sopenharmony_ci		__print_flags(__entry->dsisr, "|", DSISR_FLAGS),
22562306a36Sopenharmony_ci		__entry->dar
22662306a36Sopenharmony_ci	)
22762306a36Sopenharmony_ci);
22862306a36Sopenharmony_ci
22962306a36Sopenharmony_ciTRACE_EVENT(cxl_psl_irq_ack,
23062306a36Sopenharmony_ci	TP_PROTO(struct cxl_context *ctx, u64 tfc),
23162306a36Sopenharmony_ci
23262306a36Sopenharmony_ci	TP_ARGS(ctx, tfc),
23362306a36Sopenharmony_ci
23462306a36Sopenharmony_ci	TP_STRUCT__entry(
23562306a36Sopenharmony_ci		__field(u8, card)
23662306a36Sopenharmony_ci		__field(u8, afu)
23762306a36Sopenharmony_ci		__field(u16, pe)
23862306a36Sopenharmony_ci		__field(u64, tfc)
23962306a36Sopenharmony_ci	),
24062306a36Sopenharmony_ci
24162306a36Sopenharmony_ci	TP_fast_assign(
24262306a36Sopenharmony_ci		__entry->card = ctx->afu->adapter->adapter_num;
24362306a36Sopenharmony_ci		__entry->afu = ctx->afu->slice;
24462306a36Sopenharmony_ci		__entry->pe = ctx->pe;
24562306a36Sopenharmony_ci		__entry->tfc = tfc;
24662306a36Sopenharmony_ci	),
24762306a36Sopenharmony_ci
24862306a36Sopenharmony_ci	TP_printk("afu%i.%i pe=%i tfc=%s",
24962306a36Sopenharmony_ci		__entry->card,
25062306a36Sopenharmony_ci		__entry->afu,
25162306a36Sopenharmony_ci		__entry->pe,
25262306a36Sopenharmony_ci		__print_flags(__entry->tfc, "|", TFC_FLAGS)
25362306a36Sopenharmony_ci	)
25462306a36Sopenharmony_ci);
25562306a36Sopenharmony_ci
25662306a36Sopenharmony_ciTRACE_EVENT(cxl_ste_miss,
25762306a36Sopenharmony_ci	TP_PROTO(struct cxl_context *ctx, u64 dar),
25862306a36Sopenharmony_ci
25962306a36Sopenharmony_ci	TP_ARGS(ctx, dar),
26062306a36Sopenharmony_ci
26162306a36Sopenharmony_ci	TP_STRUCT__entry(
26262306a36Sopenharmony_ci		__field(u8, card)
26362306a36Sopenharmony_ci		__field(u8, afu)
26462306a36Sopenharmony_ci		__field(u16, pe)
26562306a36Sopenharmony_ci		__field(u64, dar)
26662306a36Sopenharmony_ci	),
26762306a36Sopenharmony_ci
26862306a36Sopenharmony_ci	TP_fast_assign(
26962306a36Sopenharmony_ci		__entry->card = ctx->afu->adapter->adapter_num;
27062306a36Sopenharmony_ci		__entry->afu = ctx->afu->slice;
27162306a36Sopenharmony_ci		__entry->pe = ctx->pe;
27262306a36Sopenharmony_ci		__entry->dar = dar;
27362306a36Sopenharmony_ci	),
27462306a36Sopenharmony_ci
27562306a36Sopenharmony_ci	TP_printk("afu%i.%i pe=%i dar=0x%016llx",
27662306a36Sopenharmony_ci		__entry->card,
27762306a36Sopenharmony_ci		__entry->afu,
27862306a36Sopenharmony_ci		__entry->pe,
27962306a36Sopenharmony_ci		__entry->dar
28062306a36Sopenharmony_ci	)
28162306a36Sopenharmony_ci);
28262306a36Sopenharmony_ci
28362306a36Sopenharmony_ciTRACE_EVENT(cxl_ste_write,
28462306a36Sopenharmony_ci	TP_PROTO(struct cxl_context *ctx, unsigned int idx, u64 e, u64 v),
28562306a36Sopenharmony_ci
28662306a36Sopenharmony_ci	TP_ARGS(ctx, idx, e, v),
28762306a36Sopenharmony_ci
28862306a36Sopenharmony_ci	TP_STRUCT__entry(
28962306a36Sopenharmony_ci		__field(u8, card)
29062306a36Sopenharmony_ci		__field(u8, afu)
29162306a36Sopenharmony_ci		__field(u16, pe)
29262306a36Sopenharmony_ci		__field(unsigned int, idx)
29362306a36Sopenharmony_ci		__field(u64, e)
29462306a36Sopenharmony_ci		__field(u64, v)
29562306a36Sopenharmony_ci	),
29662306a36Sopenharmony_ci
29762306a36Sopenharmony_ci	TP_fast_assign(
29862306a36Sopenharmony_ci		__entry->card = ctx->afu->adapter->adapter_num;
29962306a36Sopenharmony_ci		__entry->afu = ctx->afu->slice;
30062306a36Sopenharmony_ci		__entry->pe = ctx->pe;
30162306a36Sopenharmony_ci		__entry->idx = idx;
30262306a36Sopenharmony_ci		__entry->e = e;
30362306a36Sopenharmony_ci		__entry->v = v;
30462306a36Sopenharmony_ci	),
30562306a36Sopenharmony_ci
30662306a36Sopenharmony_ci	TP_printk("afu%i.%i pe=%i SSTE[%i] E=0x%016llx V=0x%016llx",
30762306a36Sopenharmony_ci		__entry->card,
30862306a36Sopenharmony_ci		__entry->afu,
30962306a36Sopenharmony_ci		__entry->pe,
31062306a36Sopenharmony_ci		__entry->idx,
31162306a36Sopenharmony_ci		__entry->e,
31262306a36Sopenharmony_ci		__entry->v
31362306a36Sopenharmony_ci	)
31462306a36Sopenharmony_ci);
31562306a36Sopenharmony_ci
31662306a36Sopenharmony_ciTRACE_EVENT(cxl_pte_miss,
31762306a36Sopenharmony_ci	TP_PROTO(struct cxl_context *ctx, u64 dsisr, u64 dar),
31862306a36Sopenharmony_ci
31962306a36Sopenharmony_ci	TP_ARGS(ctx, dsisr, dar),
32062306a36Sopenharmony_ci
32162306a36Sopenharmony_ci	TP_STRUCT__entry(
32262306a36Sopenharmony_ci		__field(u8, card)
32362306a36Sopenharmony_ci		__field(u8, afu)
32462306a36Sopenharmony_ci		__field(u16, pe)
32562306a36Sopenharmony_ci		__field(u64, dsisr)
32662306a36Sopenharmony_ci		__field(u64, dar)
32762306a36Sopenharmony_ci	),
32862306a36Sopenharmony_ci
32962306a36Sopenharmony_ci	TP_fast_assign(
33062306a36Sopenharmony_ci		__entry->card = ctx->afu->adapter->adapter_num;
33162306a36Sopenharmony_ci		__entry->afu = ctx->afu->slice;
33262306a36Sopenharmony_ci		__entry->pe = ctx->pe;
33362306a36Sopenharmony_ci		__entry->dsisr = dsisr;
33462306a36Sopenharmony_ci		__entry->dar = dar;
33562306a36Sopenharmony_ci	),
33662306a36Sopenharmony_ci
33762306a36Sopenharmony_ci	TP_printk("afu%i.%i pe=%i dsisr=%s dar=0x%016llx",
33862306a36Sopenharmony_ci		__entry->card,
33962306a36Sopenharmony_ci		__entry->afu,
34062306a36Sopenharmony_ci		__entry->pe,
34162306a36Sopenharmony_ci		__print_flags(__entry->dsisr, "|", DSISR_FLAGS),
34262306a36Sopenharmony_ci		__entry->dar
34362306a36Sopenharmony_ci	)
34462306a36Sopenharmony_ci);
34562306a36Sopenharmony_ci
34662306a36Sopenharmony_ciTRACE_EVENT(cxl_llcmd,
34762306a36Sopenharmony_ci	TP_PROTO(struct cxl_context *ctx, u64 cmd),
34862306a36Sopenharmony_ci
34962306a36Sopenharmony_ci	TP_ARGS(ctx, cmd),
35062306a36Sopenharmony_ci
35162306a36Sopenharmony_ci	TP_STRUCT__entry(
35262306a36Sopenharmony_ci		__field(u8, card)
35362306a36Sopenharmony_ci		__field(u8, afu)
35462306a36Sopenharmony_ci		__field(u16, pe)
35562306a36Sopenharmony_ci		__field(u64, cmd)
35662306a36Sopenharmony_ci	),
35762306a36Sopenharmony_ci
35862306a36Sopenharmony_ci	TP_fast_assign(
35962306a36Sopenharmony_ci		__entry->card = ctx->afu->adapter->adapter_num;
36062306a36Sopenharmony_ci		__entry->afu = ctx->afu->slice;
36162306a36Sopenharmony_ci		__entry->pe = ctx->pe;
36262306a36Sopenharmony_ci		__entry->cmd = cmd;
36362306a36Sopenharmony_ci	),
36462306a36Sopenharmony_ci
36562306a36Sopenharmony_ci	TP_printk("afu%i.%i pe=%i cmd=%s",
36662306a36Sopenharmony_ci		__entry->card,
36762306a36Sopenharmony_ci		__entry->afu,
36862306a36Sopenharmony_ci		__entry->pe,
36962306a36Sopenharmony_ci		__print_symbolic_u64(__entry->cmd, LLCMD_NAMES)
37062306a36Sopenharmony_ci	)
37162306a36Sopenharmony_ci);
37262306a36Sopenharmony_ci
37362306a36Sopenharmony_ciTRACE_EVENT(cxl_llcmd_done,
37462306a36Sopenharmony_ci	TP_PROTO(struct cxl_context *ctx, u64 cmd, int rc),
37562306a36Sopenharmony_ci
37662306a36Sopenharmony_ci	TP_ARGS(ctx, cmd, rc),
37762306a36Sopenharmony_ci
37862306a36Sopenharmony_ci	TP_STRUCT__entry(
37962306a36Sopenharmony_ci		__field(u8, card)
38062306a36Sopenharmony_ci		__field(u8, afu)
38162306a36Sopenharmony_ci		__field(u16, pe)
38262306a36Sopenharmony_ci		__field(u64, cmd)
38362306a36Sopenharmony_ci		__field(int, rc)
38462306a36Sopenharmony_ci	),
38562306a36Sopenharmony_ci
38662306a36Sopenharmony_ci	TP_fast_assign(
38762306a36Sopenharmony_ci		__entry->card = ctx->afu->adapter->adapter_num;
38862306a36Sopenharmony_ci		__entry->afu = ctx->afu->slice;
38962306a36Sopenharmony_ci		__entry->pe = ctx->pe;
39062306a36Sopenharmony_ci		__entry->rc = rc;
39162306a36Sopenharmony_ci		__entry->cmd = cmd;
39262306a36Sopenharmony_ci	),
39362306a36Sopenharmony_ci
39462306a36Sopenharmony_ci	TP_printk("afu%i.%i pe=%i cmd=%s rc=%i",
39562306a36Sopenharmony_ci		__entry->card,
39662306a36Sopenharmony_ci		__entry->afu,
39762306a36Sopenharmony_ci		__entry->pe,
39862306a36Sopenharmony_ci		__print_symbolic_u64(__entry->cmd, LLCMD_NAMES),
39962306a36Sopenharmony_ci		__entry->rc
40062306a36Sopenharmony_ci	)
40162306a36Sopenharmony_ci);
40262306a36Sopenharmony_ci
40362306a36Sopenharmony_ciDECLARE_EVENT_CLASS(cxl_afu_psl_ctrl,
40462306a36Sopenharmony_ci	TP_PROTO(struct cxl_afu *afu, u64 cmd),
40562306a36Sopenharmony_ci
40662306a36Sopenharmony_ci	TP_ARGS(afu, cmd),
40762306a36Sopenharmony_ci
40862306a36Sopenharmony_ci	TP_STRUCT__entry(
40962306a36Sopenharmony_ci		__field(u8, card)
41062306a36Sopenharmony_ci		__field(u8, afu)
41162306a36Sopenharmony_ci		__field(u64, cmd)
41262306a36Sopenharmony_ci	),
41362306a36Sopenharmony_ci
41462306a36Sopenharmony_ci	TP_fast_assign(
41562306a36Sopenharmony_ci		__entry->card = afu->adapter->adapter_num;
41662306a36Sopenharmony_ci		__entry->afu = afu->slice;
41762306a36Sopenharmony_ci		__entry->cmd = cmd;
41862306a36Sopenharmony_ci	),
41962306a36Sopenharmony_ci
42062306a36Sopenharmony_ci	TP_printk("afu%i.%i cmd=%s",
42162306a36Sopenharmony_ci		__entry->card,
42262306a36Sopenharmony_ci		__entry->afu,
42362306a36Sopenharmony_ci		__print_symbolic_u64(__entry->cmd, AFU_COMMANDS)
42462306a36Sopenharmony_ci	)
42562306a36Sopenharmony_ci);
42662306a36Sopenharmony_ci
42762306a36Sopenharmony_ciDECLARE_EVENT_CLASS(cxl_afu_psl_ctrl_done,
42862306a36Sopenharmony_ci	TP_PROTO(struct cxl_afu *afu, u64 cmd, int rc),
42962306a36Sopenharmony_ci
43062306a36Sopenharmony_ci	TP_ARGS(afu, cmd, rc),
43162306a36Sopenharmony_ci
43262306a36Sopenharmony_ci	TP_STRUCT__entry(
43362306a36Sopenharmony_ci		__field(u8, card)
43462306a36Sopenharmony_ci		__field(u8, afu)
43562306a36Sopenharmony_ci		__field(u64, cmd)
43662306a36Sopenharmony_ci		__field(int, rc)
43762306a36Sopenharmony_ci	),
43862306a36Sopenharmony_ci
43962306a36Sopenharmony_ci	TP_fast_assign(
44062306a36Sopenharmony_ci		__entry->card = afu->adapter->adapter_num;
44162306a36Sopenharmony_ci		__entry->afu = afu->slice;
44262306a36Sopenharmony_ci		__entry->rc = rc;
44362306a36Sopenharmony_ci		__entry->cmd = cmd;
44462306a36Sopenharmony_ci	),
44562306a36Sopenharmony_ci
44662306a36Sopenharmony_ci	TP_printk("afu%i.%i cmd=%s rc=%i",
44762306a36Sopenharmony_ci		__entry->card,
44862306a36Sopenharmony_ci		__entry->afu,
44962306a36Sopenharmony_ci		__print_symbolic_u64(__entry->cmd, AFU_COMMANDS),
45062306a36Sopenharmony_ci		__entry->rc
45162306a36Sopenharmony_ci	)
45262306a36Sopenharmony_ci);
45362306a36Sopenharmony_ci
45462306a36Sopenharmony_ciDEFINE_EVENT(cxl_afu_psl_ctrl, cxl_afu_ctrl,
45562306a36Sopenharmony_ci	TP_PROTO(struct cxl_afu *afu, u64 cmd),
45662306a36Sopenharmony_ci	TP_ARGS(afu, cmd)
45762306a36Sopenharmony_ci);
45862306a36Sopenharmony_ci
45962306a36Sopenharmony_ciDEFINE_EVENT(cxl_afu_psl_ctrl_done, cxl_afu_ctrl_done,
46062306a36Sopenharmony_ci	TP_PROTO(struct cxl_afu *afu, u64 cmd, int rc),
46162306a36Sopenharmony_ci	TP_ARGS(afu, cmd, rc)
46262306a36Sopenharmony_ci);
46362306a36Sopenharmony_ci
46462306a36Sopenharmony_ciDEFINE_EVENT_PRINT(cxl_afu_psl_ctrl, cxl_psl_ctrl,
46562306a36Sopenharmony_ci	TP_PROTO(struct cxl_afu *afu, u64 cmd),
46662306a36Sopenharmony_ci	TP_ARGS(afu, cmd),
46762306a36Sopenharmony_ci
46862306a36Sopenharmony_ci	TP_printk("psl%i.%i cmd=%s",
46962306a36Sopenharmony_ci		__entry->card,
47062306a36Sopenharmony_ci		__entry->afu,
47162306a36Sopenharmony_ci		__print_symbolic_u64(__entry->cmd, PSL_COMMANDS)
47262306a36Sopenharmony_ci	)
47362306a36Sopenharmony_ci);
47462306a36Sopenharmony_ci
47562306a36Sopenharmony_ciDEFINE_EVENT_PRINT(cxl_afu_psl_ctrl_done, cxl_psl_ctrl_done,
47662306a36Sopenharmony_ci	TP_PROTO(struct cxl_afu *afu, u64 cmd, int rc),
47762306a36Sopenharmony_ci	TP_ARGS(afu, cmd, rc),
47862306a36Sopenharmony_ci
47962306a36Sopenharmony_ci	TP_printk("psl%i.%i cmd=%s rc=%i",
48062306a36Sopenharmony_ci		__entry->card,
48162306a36Sopenharmony_ci		__entry->afu,
48262306a36Sopenharmony_ci		__print_symbolic_u64(__entry->cmd, PSL_COMMANDS),
48362306a36Sopenharmony_ci		__entry->rc
48462306a36Sopenharmony_ci	)
48562306a36Sopenharmony_ci);
48662306a36Sopenharmony_ci
48762306a36Sopenharmony_ciDEFINE_EVENT(cxl_pe_class, cxl_slbia,
48862306a36Sopenharmony_ci	TP_PROTO(struct cxl_context *ctx),
48962306a36Sopenharmony_ci	TP_ARGS(ctx)
49062306a36Sopenharmony_ci);
49162306a36Sopenharmony_ci
49262306a36Sopenharmony_ciTRACE_EVENT(cxl_hcall,
49362306a36Sopenharmony_ci	TP_PROTO(u64 unit_address, u64 process_token, long rc),
49462306a36Sopenharmony_ci
49562306a36Sopenharmony_ci	TP_ARGS(unit_address, process_token, rc),
49662306a36Sopenharmony_ci
49762306a36Sopenharmony_ci	TP_STRUCT__entry(
49862306a36Sopenharmony_ci		__field(u64, unit_address)
49962306a36Sopenharmony_ci		__field(u64, process_token)
50062306a36Sopenharmony_ci		__field(long, rc)
50162306a36Sopenharmony_ci	),
50262306a36Sopenharmony_ci
50362306a36Sopenharmony_ci	TP_fast_assign(
50462306a36Sopenharmony_ci		__entry->unit_address = unit_address;
50562306a36Sopenharmony_ci		__entry->process_token = process_token;
50662306a36Sopenharmony_ci		__entry->rc = rc;
50762306a36Sopenharmony_ci	),
50862306a36Sopenharmony_ci
50962306a36Sopenharmony_ci	TP_printk("unit_address=0x%016llx process_token=0x%016llx rc=%li",
51062306a36Sopenharmony_ci		__entry->unit_address,
51162306a36Sopenharmony_ci		__entry->process_token,
51262306a36Sopenharmony_ci		__entry->rc
51362306a36Sopenharmony_ci	)
51462306a36Sopenharmony_ci);
51562306a36Sopenharmony_ci
51662306a36Sopenharmony_ciTRACE_EVENT(cxl_hcall_control,
51762306a36Sopenharmony_ci	TP_PROTO(u64 unit_address, char *fct, u64 p1, u64 p2, u64 p3,
51862306a36Sopenharmony_ci	u64 p4, unsigned long r4, long rc),
51962306a36Sopenharmony_ci
52062306a36Sopenharmony_ci	TP_ARGS(unit_address, fct, p1, p2, p3, p4, r4, rc),
52162306a36Sopenharmony_ci
52262306a36Sopenharmony_ci	TP_STRUCT__entry(
52362306a36Sopenharmony_ci		__field(u64, unit_address)
52462306a36Sopenharmony_ci		__field(char *, fct)
52562306a36Sopenharmony_ci		__field(u64, p1)
52662306a36Sopenharmony_ci		__field(u64, p2)
52762306a36Sopenharmony_ci		__field(u64, p3)
52862306a36Sopenharmony_ci		__field(u64, p4)
52962306a36Sopenharmony_ci		__field(unsigned long, r4)
53062306a36Sopenharmony_ci		__field(long, rc)
53162306a36Sopenharmony_ci	),
53262306a36Sopenharmony_ci
53362306a36Sopenharmony_ci	TP_fast_assign(
53462306a36Sopenharmony_ci		__entry->unit_address = unit_address;
53562306a36Sopenharmony_ci		__entry->fct = fct;
53662306a36Sopenharmony_ci		__entry->p1 = p1;
53762306a36Sopenharmony_ci		__entry->p2 = p2;
53862306a36Sopenharmony_ci		__entry->p3 = p3;
53962306a36Sopenharmony_ci		__entry->p4 = p4;
54062306a36Sopenharmony_ci		__entry->r4 = r4;
54162306a36Sopenharmony_ci		__entry->rc = rc;
54262306a36Sopenharmony_ci	),
54362306a36Sopenharmony_ci
54462306a36Sopenharmony_ci	TP_printk("unit_address=%#.16llx %s(%#llx, %#llx, %#llx, %#llx, R4: %#lx)): %li",
54562306a36Sopenharmony_ci		__entry->unit_address,
54662306a36Sopenharmony_ci		__entry->fct,
54762306a36Sopenharmony_ci		__entry->p1,
54862306a36Sopenharmony_ci		__entry->p2,
54962306a36Sopenharmony_ci		__entry->p3,
55062306a36Sopenharmony_ci		__entry->p4,
55162306a36Sopenharmony_ci		__entry->r4,
55262306a36Sopenharmony_ci		__entry->rc
55362306a36Sopenharmony_ci	)
55462306a36Sopenharmony_ci);
55562306a36Sopenharmony_ci
55662306a36Sopenharmony_ciTRACE_EVENT(cxl_hcall_attach,
55762306a36Sopenharmony_ci	TP_PROTO(u64 unit_address, u64 phys_addr, unsigned long process_token,
55862306a36Sopenharmony_ci		unsigned long mmio_addr, unsigned long mmio_size, long rc),
55962306a36Sopenharmony_ci
56062306a36Sopenharmony_ci	TP_ARGS(unit_address, phys_addr, process_token,
56162306a36Sopenharmony_ci		mmio_addr, mmio_size, rc),
56262306a36Sopenharmony_ci
56362306a36Sopenharmony_ci	TP_STRUCT__entry(
56462306a36Sopenharmony_ci		__field(u64, unit_address)
56562306a36Sopenharmony_ci		__field(u64, phys_addr)
56662306a36Sopenharmony_ci		__field(unsigned long, process_token)
56762306a36Sopenharmony_ci		__field(unsigned long, mmio_addr)
56862306a36Sopenharmony_ci		__field(unsigned long, mmio_size)
56962306a36Sopenharmony_ci		__field(long, rc)
57062306a36Sopenharmony_ci	),
57162306a36Sopenharmony_ci
57262306a36Sopenharmony_ci	TP_fast_assign(
57362306a36Sopenharmony_ci		__entry->unit_address = unit_address;
57462306a36Sopenharmony_ci		__entry->phys_addr = phys_addr;
57562306a36Sopenharmony_ci		__entry->process_token = process_token;
57662306a36Sopenharmony_ci		__entry->mmio_addr = mmio_addr;
57762306a36Sopenharmony_ci		__entry->mmio_size = mmio_size;
57862306a36Sopenharmony_ci		__entry->rc = rc;
57962306a36Sopenharmony_ci	),
58062306a36Sopenharmony_ci
58162306a36Sopenharmony_ci	TP_printk("unit_address=0x%016llx phys_addr=0x%016llx "
58262306a36Sopenharmony_ci		"token=0x%.8lx mmio_addr=0x%lx mmio_size=0x%lx rc=%li",
58362306a36Sopenharmony_ci		__entry->unit_address,
58462306a36Sopenharmony_ci		__entry->phys_addr,
58562306a36Sopenharmony_ci		__entry->process_token,
58662306a36Sopenharmony_ci		__entry->mmio_addr,
58762306a36Sopenharmony_ci		__entry->mmio_size,
58862306a36Sopenharmony_ci		__entry->rc
58962306a36Sopenharmony_ci	)
59062306a36Sopenharmony_ci);
59162306a36Sopenharmony_ci
59262306a36Sopenharmony_ciDEFINE_EVENT(cxl_hcall, cxl_hcall_detach,
59362306a36Sopenharmony_ci	TP_PROTO(u64 unit_address, u64 process_token, long rc),
59462306a36Sopenharmony_ci	TP_ARGS(unit_address, process_token, rc)
59562306a36Sopenharmony_ci);
59662306a36Sopenharmony_ci
59762306a36Sopenharmony_ciDEFINE_EVENT(cxl_hcall_control, cxl_hcall_control_function,
59862306a36Sopenharmony_ci	TP_PROTO(u64 unit_address, char *fct, u64 p1, u64 p2, u64 p3,
59962306a36Sopenharmony_ci	u64 p4, unsigned long r4, long rc),
60062306a36Sopenharmony_ci	TP_ARGS(unit_address, fct, p1, p2, p3, p4, r4, rc)
60162306a36Sopenharmony_ci);
60262306a36Sopenharmony_ci
60362306a36Sopenharmony_ciDEFINE_EVENT(cxl_hcall, cxl_hcall_collect_int_info,
60462306a36Sopenharmony_ci	TP_PROTO(u64 unit_address, u64 process_token, long rc),
60562306a36Sopenharmony_ci	TP_ARGS(unit_address, process_token, rc)
60662306a36Sopenharmony_ci);
60762306a36Sopenharmony_ci
60862306a36Sopenharmony_ciTRACE_EVENT(cxl_hcall_control_faults,
60962306a36Sopenharmony_ci	TP_PROTO(u64 unit_address, u64 process_token,
61062306a36Sopenharmony_ci		u64 control_mask, u64 reset_mask, unsigned long r4,
61162306a36Sopenharmony_ci		long rc),
61262306a36Sopenharmony_ci
61362306a36Sopenharmony_ci	TP_ARGS(unit_address, process_token,
61462306a36Sopenharmony_ci		control_mask, reset_mask, r4, rc),
61562306a36Sopenharmony_ci
61662306a36Sopenharmony_ci	TP_STRUCT__entry(
61762306a36Sopenharmony_ci		__field(u64, unit_address)
61862306a36Sopenharmony_ci		__field(u64, process_token)
61962306a36Sopenharmony_ci		__field(u64, control_mask)
62062306a36Sopenharmony_ci		__field(u64, reset_mask)
62162306a36Sopenharmony_ci		__field(unsigned long, r4)
62262306a36Sopenharmony_ci		__field(long, rc)
62362306a36Sopenharmony_ci	),
62462306a36Sopenharmony_ci
62562306a36Sopenharmony_ci	TP_fast_assign(
62662306a36Sopenharmony_ci		__entry->unit_address = unit_address;
62762306a36Sopenharmony_ci		__entry->process_token = process_token;
62862306a36Sopenharmony_ci		__entry->control_mask = control_mask;
62962306a36Sopenharmony_ci		__entry->reset_mask = reset_mask;
63062306a36Sopenharmony_ci		__entry->r4 = r4;
63162306a36Sopenharmony_ci		__entry->rc = rc;
63262306a36Sopenharmony_ci	),
63362306a36Sopenharmony_ci
63462306a36Sopenharmony_ci	TP_printk("unit_address=0x%016llx process_token=0x%llx "
63562306a36Sopenharmony_ci		"control_mask=%#llx reset_mask=%#llx r4=%#lx rc=%li",
63662306a36Sopenharmony_ci		__entry->unit_address,
63762306a36Sopenharmony_ci		__entry->process_token,
63862306a36Sopenharmony_ci		__entry->control_mask,
63962306a36Sopenharmony_ci		__entry->reset_mask,
64062306a36Sopenharmony_ci		__entry->r4,
64162306a36Sopenharmony_ci		__entry->rc
64262306a36Sopenharmony_ci	)
64362306a36Sopenharmony_ci);
64462306a36Sopenharmony_ci
64562306a36Sopenharmony_ciDEFINE_EVENT(cxl_hcall_control, cxl_hcall_control_facility,
64662306a36Sopenharmony_ci	TP_PROTO(u64 unit_address, char *fct, u64 p1, u64 p2, u64 p3,
64762306a36Sopenharmony_ci	u64 p4, unsigned long r4, long rc),
64862306a36Sopenharmony_ci	TP_ARGS(unit_address, fct, p1, p2, p3, p4, r4, rc)
64962306a36Sopenharmony_ci);
65062306a36Sopenharmony_ci
65162306a36Sopenharmony_ciTRACE_EVENT(cxl_hcall_download_facility,
65262306a36Sopenharmony_ci	TP_PROTO(u64 unit_address, char *fct, u64 list_address, u64 num,
65362306a36Sopenharmony_ci	unsigned long r4, long rc),
65462306a36Sopenharmony_ci
65562306a36Sopenharmony_ci	TP_ARGS(unit_address, fct, list_address, num, r4, rc),
65662306a36Sopenharmony_ci
65762306a36Sopenharmony_ci	TP_STRUCT__entry(
65862306a36Sopenharmony_ci		__field(u64, unit_address)
65962306a36Sopenharmony_ci		__field(char *, fct)
66062306a36Sopenharmony_ci		__field(u64, list_address)
66162306a36Sopenharmony_ci		__field(u64, num)
66262306a36Sopenharmony_ci		__field(unsigned long, r4)
66362306a36Sopenharmony_ci		__field(long, rc)
66462306a36Sopenharmony_ci	),
66562306a36Sopenharmony_ci
66662306a36Sopenharmony_ci	TP_fast_assign(
66762306a36Sopenharmony_ci		__entry->unit_address = unit_address;
66862306a36Sopenharmony_ci		__entry->fct = fct;
66962306a36Sopenharmony_ci		__entry->list_address = list_address;
67062306a36Sopenharmony_ci		__entry->num = num;
67162306a36Sopenharmony_ci		__entry->r4 = r4;
67262306a36Sopenharmony_ci		__entry->rc = rc;
67362306a36Sopenharmony_ci	),
67462306a36Sopenharmony_ci
67562306a36Sopenharmony_ci	TP_printk("%#.16llx, %s(%#llx, %#llx), %#lx): %li",
67662306a36Sopenharmony_ci		__entry->unit_address,
67762306a36Sopenharmony_ci		__entry->fct,
67862306a36Sopenharmony_ci		__entry->list_address,
67962306a36Sopenharmony_ci		__entry->num,
68062306a36Sopenharmony_ci		__entry->r4,
68162306a36Sopenharmony_ci		__entry->rc
68262306a36Sopenharmony_ci	)
68362306a36Sopenharmony_ci);
68462306a36Sopenharmony_ci
68562306a36Sopenharmony_ci#endif /* _CXL_TRACE_H */
68662306a36Sopenharmony_ci
68762306a36Sopenharmony_ci/* This part must be outside protection */
68862306a36Sopenharmony_ci#undef TRACE_INCLUDE_PATH
68962306a36Sopenharmony_ci#define TRACE_INCLUDE_PATH .
69062306a36Sopenharmony_ci#define TRACE_INCLUDE_FILE trace
69162306a36Sopenharmony_ci#include <trace/define_trace.h>
692