Skip to content

Commit 0c8393d

Browse files
weiny2djbw
authored andcommitted
cxl/trace: Standardize device information output
The trace points were written to take a struct device input for the trace. In CXL multiple device objects are associated with each CXL hardware device. Using different device objects in the trace point can lead to confusion for users. The PCIe device is nice to have, but the user space tooling relies on the memory device naming. It is better to have those device names reported. Change all trace points to take struct cxl_memdev as a standard and report that name. Furthermore, standardize on the name 'memdev' in both /sys/kernel/tracing/trace and cxl-cli monitor output. Cc: Steven Rostedt <[email protected]> Cc: Dave Jiang <[email protected]> Signed-off-by: Ira Weiny <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Dan Williams <[email protected]>
1 parent 5a84711 commit 0c8393d

File tree

3 files changed

+44
-48
lines changed

3 files changed

+44
-48
lines changed

drivers/cxl/core/mbox.c

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -743,7 +743,7 @@ static const uuid_t mem_mod_event_uuid =
743743
UUID_INIT(0xfe927475, 0xdd59, 0x4339,
744744
0xa5, 0x86, 0x79, 0xba, 0xb1, 0x13, 0xb7, 0x74);
745745

746-
static void cxl_event_trace_record(const struct device *dev,
746+
static void cxl_event_trace_record(const struct cxl_memdev *cxlmd,
747747
enum cxl_event_log_type type,
748748
struct cxl_event_record_raw *record)
749749
{
@@ -753,19 +753,19 @@ static void cxl_event_trace_record(const struct device *dev,
753753
struct cxl_event_gen_media *rec =
754754
(struct cxl_event_gen_media *)record;
755755

756-
trace_cxl_general_media(dev, type, rec);
756+
trace_cxl_general_media(cxlmd, type, rec);
757757
} else if (uuid_equal(id, &dram_event_uuid)) {
758758
struct cxl_event_dram *rec = (struct cxl_event_dram *)record;
759759

760-
trace_cxl_dram(dev, type, rec);
760+
trace_cxl_dram(cxlmd, type, rec);
761761
} else if (uuid_equal(id, &mem_mod_event_uuid)) {
762762
struct cxl_event_mem_module *rec =
763763
(struct cxl_event_mem_module *)record;
764764

765-
trace_cxl_memory_module(dev, type, rec);
765+
trace_cxl_memory_module(cxlmd, type, rec);
766766
} else {
767767
/* For unknown record types print just the header */
768-
trace_cxl_generic_event(dev, type, record);
768+
trace_cxl_generic_event(cxlmd, type, record);
769769
}
770770
}
771771

@@ -872,11 +872,11 @@ static void cxl_mem_get_records_log(struct cxl_dev_state *cxlds,
872872
break;
873873

874874
for (i = 0; i < nr_rec; i++)
875-
cxl_event_trace_record(cxlds->dev, type,
875+
cxl_event_trace_record(cxlds->cxlmd, type,
876876
&payload->records[i]);
877877

878878
if (payload->flags & CXL_GET_EVENT_FLAG_OVERFLOW)
879-
trace_cxl_overflow(cxlds->dev, type, payload);
879+
trace_cxl_overflow(cxlds->cxlmd, type, payload);
880880

881881
rc = cxl_clear_event_record(cxlds, type, payload);
882882
if (rc) {

drivers/cxl/core/pci.c

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -627,8 +627,6 @@ EXPORT_SYMBOL_NS_GPL(read_cdat_data, CXL);
627627
void cxl_cor_error_detected(struct pci_dev *pdev)
628628
{
629629
struct cxl_dev_state *cxlds = pci_get_drvdata(pdev);
630-
struct cxl_memdev *cxlmd = cxlds->cxlmd;
631-
struct device *dev = &cxlmd->dev;
632630
void __iomem *addr;
633631
u32 status;
634632

@@ -639,7 +637,7 @@ void cxl_cor_error_detected(struct pci_dev *pdev)
639637
status = readl(addr);
640638
if (status & CXL_RAS_CORRECTABLE_STATUS_MASK) {
641639
writel(status & CXL_RAS_CORRECTABLE_STATUS_MASK, addr);
642-
trace_cxl_aer_correctable_error(dev, status);
640+
trace_cxl_aer_correctable_error(cxlds->cxlmd, status);
643641
}
644642
}
645643
EXPORT_SYMBOL_NS_GPL(cxl_cor_error_detected, CXL);
@@ -667,8 +665,6 @@ static void header_log_copy(struct cxl_dev_state *cxlds, u32 *log)
667665
*/
668666
static bool cxl_report_and_clear(struct cxl_dev_state *cxlds)
669667
{
670-
struct cxl_memdev *cxlmd = cxlds->cxlmd;
671-
struct device *dev = &cxlmd->dev;
672668
u32 hl[CXL_HEADERLOG_SIZE_U32];
673669
void __iomem *addr;
674670
u32 status;
@@ -691,7 +687,7 @@ static bool cxl_report_and_clear(struct cxl_dev_state *cxlds)
691687
}
692688

693689
header_log_copy(cxlds, hl);
694-
trace_cxl_aer_uncorrectable_error(dev, status, fe, hl);
690+
trace_cxl_aer_uncorrectable_error(cxlds->cxlmd, status, fe, hl);
695691
writel(status & CXL_RAS_UNCORRECTABLE_STATUS_MASK, addr);
696692

697693
return true;

drivers/cxl/core/trace.h

Lines changed: 35 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -47,16 +47,16 @@
4747
)
4848

4949
TRACE_EVENT(cxl_aer_uncorrectable_error,
50-
TP_PROTO(const struct device *dev, u32 status, u32 fe, u32 *hl),
51-
TP_ARGS(dev, status, fe, hl),
50+
TP_PROTO(const struct cxl_memdev *cxlmd, u32 status, u32 fe, u32 *hl),
51+
TP_ARGS(cxlmd, status, fe, hl),
5252
TP_STRUCT__entry(
53-
__string(dev_name, dev_name(dev))
53+
__string(memdev, dev_name(&cxlmd->dev))
5454
__field(u32, status)
5555
__field(u32, first_error)
5656
__array(u32, header_log, CXL_HEADERLOG_SIZE_U32)
5757
),
5858
TP_fast_assign(
59-
__assign_str(dev_name, dev_name(dev));
59+
__assign_str(memdev, dev_name(&cxlmd->dev));
6060
__entry->status = status;
6161
__entry->first_error = fe;
6262
/*
@@ -65,8 +65,8 @@ TRACE_EVENT(cxl_aer_uncorrectable_error,
6565
*/
6666
memcpy(__entry->header_log, hl, CXL_HEADERLOG_SIZE);
6767
),
68-
TP_printk("%s: status: '%s' first_error: '%s'",
69-
__get_str(dev_name),
68+
TP_printk("memdev=%s: status: '%s' first_error: '%s'",
69+
__get_str(memdev),
7070
show_uc_errs(__entry->status),
7171
show_uc_errs(__entry->first_error)
7272
)
@@ -91,18 +91,18 @@ TRACE_EVENT(cxl_aer_uncorrectable_error,
9191
)
9292

9393
TRACE_EVENT(cxl_aer_correctable_error,
94-
TP_PROTO(const struct device *dev, u32 status),
95-
TP_ARGS(dev, status),
94+
TP_PROTO(const struct cxl_memdev *cxlmd, u32 status),
95+
TP_ARGS(cxlmd, status),
9696
TP_STRUCT__entry(
97-
__string(dev_name, dev_name(dev))
97+
__string(memdev, dev_name(&cxlmd->dev))
9898
__field(u32, status)
9999
),
100100
TP_fast_assign(
101-
__assign_str(dev_name, dev_name(dev));
101+
__assign_str(memdev, dev_name(&cxlmd->dev));
102102
__entry->status = status;
103103
),
104-
TP_printk("%s: status: '%s'",
105-
__get_str(dev_name), show_ce_errs(__entry->status)
104+
TP_printk("memdev=%s: status: '%s'",
105+
__get_str(memdev), show_ce_errs(__entry->status)
106106
)
107107
);
108108

@@ -115,29 +115,29 @@ TRACE_EVENT(cxl_aer_correctable_error,
115115

116116
TRACE_EVENT(cxl_overflow,
117117

118-
TP_PROTO(const struct device *dev, enum cxl_event_log_type log,
118+
TP_PROTO(const struct cxl_memdev *cxlmd, enum cxl_event_log_type log,
119119
struct cxl_get_event_payload *payload),
120120

121-
TP_ARGS(dev, log, payload),
121+
TP_ARGS(cxlmd, log, payload),
122122

123123
TP_STRUCT__entry(
124-
__string(dev_name, dev_name(dev))
124+
__string(memdev, dev_name(&cxlmd->dev))
125125
__field(int, log)
126126
__field(u64, first_ts)
127127
__field(u64, last_ts)
128128
__field(u16, count)
129129
),
130130

131131
TP_fast_assign(
132-
__assign_str(dev_name, dev_name(dev));
132+
__assign_str(memdev, dev_name(&cxlmd->dev));
133133
__entry->log = log;
134134
__entry->count = le16_to_cpu(payload->overflow_err_count);
135135
__entry->first_ts = le64_to_cpu(payload->first_overflow_timestamp);
136136
__entry->last_ts = le64_to_cpu(payload->last_overflow_timestamp);
137137
),
138138

139-
TP_printk("%s: log=%s : %u records from %llu to %llu",
140-
__get_str(dev_name), cxl_event_log_type_str(__entry->log),
139+
TP_printk("memdev=%s: log=%s : %u records from %llu to %llu",
140+
__get_str(memdev), cxl_event_log_type_str(__entry->log),
141141
__entry->count, __entry->first_ts, __entry->last_ts)
142142

143143
);
@@ -170,7 +170,7 @@ TRACE_EVENT(cxl_overflow,
170170
* See the generic_event tracepoint as an example.
171171
*/
172172
#define CXL_EVT_TP_entry \
173-
__string(dev_name, dev_name(dev)) \
173+
__string(memdev, dev_name(&cxlmd->dev)) \
174174
__field(int, log) \
175175
__field_struct(uuid_t, hdr_uuid) \
176176
__field(u32, hdr_flags) \
@@ -180,8 +180,8 @@ TRACE_EVENT(cxl_overflow,
180180
__field(u8, hdr_length) \
181181
__field(u8, hdr_maint_op_class)
182182

183-
#define CXL_EVT_TP_fast_assign(dev, l, hdr) \
184-
__assign_str(dev_name, dev_name(dev)); \
183+
#define CXL_EVT_TP_fast_assign(cxlmd, l, hdr) \
184+
__assign_str(memdev, dev_name(&(cxlmd)->dev)); \
185185
__entry->log = (l); \
186186
memcpy(&__entry->hdr_uuid, &(hdr).id, sizeof(uuid_t)); \
187187
__entry->hdr_length = (hdr).length; \
@@ -192,29 +192,29 @@ TRACE_EVENT(cxl_overflow,
192192
__entry->hdr_maint_op_class = (hdr).maint_op_class
193193

194194
#define CXL_EVT_TP_printk(fmt, ...) \
195-
TP_printk("%s log=%s : time=%llu uuid=%pUb len=%d flags='%s' " \
195+
TP_printk("memdev=%s log=%s : time=%llu uuid=%pUb len=%d flags='%s' " \
196196
"handle=%x related_handle=%x maint_op_class=%u" \
197197
" : " fmt, \
198-
__get_str(dev_name), cxl_event_log_type_str(__entry->log), \
198+
__get_str(memdev), cxl_event_log_type_str(__entry->log), \
199199
__entry->hdr_timestamp, &__entry->hdr_uuid, __entry->hdr_length,\
200200
show_hdr_flags(__entry->hdr_flags), __entry->hdr_handle, \
201201
__entry->hdr_related_handle, __entry->hdr_maint_op_class, \
202202
##__VA_ARGS__)
203203

204204
TRACE_EVENT(cxl_generic_event,
205205

206-
TP_PROTO(const struct device *dev, enum cxl_event_log_type log,
206+
TP_PROTO(const struct cxl_memdev *cxlmd, enum cxl_event_log_type log,
207207
struct cxl_event_record_raw *rec),
208208

209-
TP_ARGS(dev, log, rec),
209+
TP_ARGS(cxlmd, log, rec),
210210

211211
TP_STRUCT__entry(
212212
CXL_EVT_TP_entry
213213
__array(u8, data, CXL_EVENT_RECORD_DATA_LENGTH)
214214
),
215215

216216
TP_fast_assign(
217-
CXL_EVT_TP_fast_assign(dev, log, rec->hdr);
217+
CXL_EVT_TP_fast_assign(cxlmd, log, rec->hdr);
218218
memcpy(__entry->data, &rec->data, CXL_EVENT_RECORD_DATA_LENGTH);
219219
),
220220

@@ -293,10 +293,10 @@ TRACE_EVENT(cxl_generic_event,
293293

294294
TRACE_EVENT(cxl_general_media,
295295

296-
TP_PROTO(const struct device *dev, enum cxl_event_log_type log,
296+
TP_PROTO(const struct cxl_memdev *cxlmd, enum cxl_event_log_type log,
297297
struct cxl_event_gen_media *rec),
298298

299-
TP_ARGS(dev, log, rec),
299+
TP_ARGS(cxlmd, log, rec),
300300

301301
TP_STRUCT__entry(
302302
CXL_EVT_TP_entry
@@ -315,7 +315,7 @@ TRACE_EVENT(cxl_general_media,
315315
),
316316

317317
TP_fast_assign(
318-
CXL_EVT_TP_fast_assign(dev, log, rec->hdr);
318+
CXL_EVT_TP_fast_assign(cxlmd, log, rec->hdr);
319319

320320
/* General Media */
321321
__entry->dpa = le64_to_cpu(rec->phys_addr);
@@ -376,10 +376,10 @@ TRACE_EVENT(cxl_general_media,
376376

377377
TRACE_EVENT(cxl_dram,
378378

379-
TP_PROTO(const struct device *dev, enum cxl_event_log_type log,
379+
TP_PROTO(const struct cxl_memdev *cxlmd, enum cxl_event_log_type log,
380380
struct cxl_event_dram *rec),
381381

382-
TP_ARGS(dev, log, rec),
382+
TP_ARGS(cxlmd, log, rec),
383383

384384
TP_STRUCT__entry(
385385
CXL_EVT_TP_entry
@@ -401,7 +401,7 @@ TRACE_EVENT(cxl_dram,
401401
),
402402

403403
TP_fast_assign(
404-
CXL_EVT_TP_fast_assign(dev, log, rec->hdr);
404+
CXL_EVT_TP_fast_assign(cxlmd, log, rec->hdr);
405405

406406
/* DRAM */
407407
__entry->dpa = le64_to_cpu(rec->phys_addr);
@@ -525,10 +525,10 @@ TRACE_EVENT(cxl_dram,
525525

526526
TRACE_EVENT(cxl_memory_module,
527527

528-
TP_PROTO(const struct device *dev, enum cxl_event_log_type log,
528+
TP_PROTO(const struct cxl_memdev *cxlmd, enum cxl_event_log_type log,
529529
struct cxl_event_mem_module *rec),
530530

531-
TP_ARGS(dev, log, rec),
531+
TP_ARGS(cxlmd, log, rec),
532532

533533
TP_STRUCT__entry(
534534
CXL_EVT_TP_entry
@@ -548,7 +548,7 @@ TRACE_EVENT(cxl_memory_module,
548548
),
549549

550550
TP_fast_assign(
551-
CXL_EVT_TP_fast_assign(dev, log, rec->hdr);
551+
CXL_EVT_TP_fast_assign(cxlmd, log, rec->hdr);
552552

553553
/* Memory Module Event */
554554
__entry->event_type = rec->event_type;

0 commit comments

Comments
 (0)