Skip to content

Commit 23c198e

Browse files
committed
Merge branch 'for-6.3/cxl-events' into cxl/next
Include some additional fixups for event support for v6.3, namely, rationalize the identifiers in the trace output and fixup a kdoc comment.
2 parents a5fcd22 + 1bb3113 commit 23c198e

File tree

4 files changed

+67
-51
lines changed

4 files changed

+67
-51
lines changed

drivers/cxl/core/mbox.c

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

771-
static void cxl_event_trace_record(const struct device *dev,
771+
static void cxl_event_trace_record(const struct cxl_memdev *cxlmd,
772772
enum cxl_event_log_type type,
773773
struct cxl_event_record_raw *record)
774774
{
@@ -778,19 +778,19 @@ static void cxl_event_trace_record(const struct device *dev,
778778
struct cxl_event_gen_media *rec =
779779
(struct cxl_event_gen_media *)record;
780780

781-
trace_cxl_general_media(dev, type, rec);
781+
trace_cxl_general_media(cxlmd, type, rec);
782782
} else if (uuid_equal(id, &dram_event_uuid)) {
783783
struct cxl_event_dram *rec = (struct cxl_event_dram *)record;
784784

785-
trace_cxl_dram(dev, type, rec);
785+
trace_cxl_dram(cxlmd, type, rec);
786786
} else if (uuid_equal(id, &mem_mod_event_uuid)) {
787787
struct cxl_event_mem_module *rec =
788788
(struct cxl_event_mem_module *)record;
789789

790-
trace_cxl_memory_module(dev, type, rec);
790+
trace_cxl_memory_module(cxlmd, type, rec);
791791
} else {
792792
/* For unknown record types print just the header */
793-
trace_cxl_generic_event(dev, type, record);
793+
trace_cxl_generic_event(cxlmd, type, record);
794794
}
795795
}
796796

@@ -897,11 +897,11 @@ static void cxl_mem_get_records_log(struct cxl_dev_state *cxlds,
897897
break;
898898

899899
for (i = 0; i < nr_rec; i++)
900-
cxl_event_trace_record(cxlds->dev, type,
900+
cxl_event_trace_record(cxlds->cxlmd, type,
901901
&payload->records[i]);
902902

903903
if (payload->flags & CXL_GET_EVENT_FLAG_OVERFLOW)
904-
trace_cxl_overflow(cxlds->dev, type, payload);
904+
trace_cxl_overflow(cxlds->cxlmd, type, payload);
905905

906906
rc = cxl_clear_event_record(cxlds, type, payload);
907907
if (rc) {

drivers/cxl/core/pci.c

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -608,8 +608,6 @@ EXPORT_SYMBOL_NS_GPL(read_cdat_data, CXL);
608608
void cxl_cor_error_detected(struct pci_dev *pdev)
609609
{
610610
struct cxl_dev_state *cxlds = pci_get_drvdata(pdev);
611-
struct cxl_memdev *cxlmd = cxlds->cxlmd;
612-
struct device *dev = &cxlmd->dev;
613611
void __iomem *addr;
614612
u32 status;
615613

@@ -620,7 +618,7 @@ void cxl_cor_error_detected(struct pci_dev *pdev)
620618
status = readl(addr);
621619
if (status & CXL_RAS_CORRECTABLE_STATUS_MASK) {
622620
writel(status & CXL_RAS_CORRECTABLE_STATUS_MASK, addr);
623-
trace_cxl_aer_correctable_error(dev, status);
621+
trace_cxl_aer_correctable_error(cxlds->cxlmd, status);
624622
}
625623
}
626624
EXPORT_SYMBOL_NS_GPL(cxl_cor_error_detected, CXL);
@@ -648,8 +646,6 @@ static void header_log_copy(struct cxl_dev_state *cxlds, u32 *log)
648646
*/
649647
static bool cxl_report_and_clear(struct cxl_dev_state *cxlds)
650648
{
651-
struct cxl_memdev *cxlmd = cxlds->cxlmd;
652-
struct device *dev = &cxlmd->dev;
653649
u32 hl[CXL_HEADERLOG_SIZE_U32];
654650
void __iomem *addr;
655651
u32 status;
@@ -675,7 +671,7 @@ static bool cxl_report_and_clear(struct cxl_dev_state *cxlds)
675671
}
676672

677673
header_log_copy(cxlds, hl);
678-
trace_cxl_aer_uncorrectable_error(dev, status, fe, hl);
674+
trace_cxl_aer_uncorrectable_error(cxlds->cxlmd, status, fe, hl);
679675
writel(status & CXL_RAS_UNCORRECTABLE_STATUS_MASK, addr);
680676

681677
return true;

drivers/cxl/core/trace.h

Lines changed: 57 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -47,16 +47,20 @@
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))
54+
__string(host, dev_name(cxlmd->dev.parent))
55+
__field(u64, serial)
5456
__field(u32, status)
5557
__field(u32, first_error)
5658
__array(u32, header_log, CXL_HEADERLOG_SIZE_U32)
5759
),
5860
TP_fast_assign(
59-
__assign_str(dev_name, dev_name(dev));
61+
__assign_str(memdev, dev_name(&cxlmd->dev));
62+
__assign_str(host, dev_name(cxlmd->dev.parent));
63+
__entry->serial = cxlmd->cxlds->serial;
6064
__entry->status = status;
6165
__entry->first_error = fe;
6266
/*
@@ -65,8 +69,8 @@ TRACE_EVENT(cxl_aer_uncorrectable_error,
6569
*/
6670
memcpy(__entry->header_log, hl, CXL_HEADERLOG_SIZE);
6771
),
68-
TP_printk("%s: status: '%s' first_error: '%s'",
69-
__get_str(dev_name),
72+
TP_printk("memdev=%s host=%s serial=%lld: status: '%s' first_error: '%s'",
73+
__get_str(memdev), __get_str(host), __entry->serial,
7074
show_uc_errs(__entry->status),
7175
show_uc_errs(__entry->first_error)
7276
)
@@ -91,18 +95,23 @@ TRACE_EVENT(cxl_aer_uncorrectable_error,
9195
)
9296

9397
TRACE_EVENT(cxl_aer_correctable_error,
94-
TP_PROTO(const struct device *dev, u32 status),
95-
TP_ARGS(dev, status),
98+
TP_PROTO(const struct cxl_memdev *cxlmd, u32 status),
99+
TP_ARGS(cxlmd, status),
96100
TP_STRUCT__entry(
97-
__string(dev_name, dev_name(dev))
101+
__string(memdev, dev_name(&cxlmd->dev))
102+
__string(host, dev_name(cxlmd->dev.parent))
103+
__field(u64, serial)
98104
__field(u32, status)
99105
),
100106
TP_fast_assign(
101-
__assign_str(dev_name, dev_name(dev));
107+
__assign_str(memdev, dev_name(&cxlmd->dev));
108+
__assign_str(host, dev_name(cxlmd->dev.parent));
109+
__entry->serial = cxlmd->cxlds->serial;
102110
__entry->status = status;
103111
),
104-
TP_printk("%s: status: '%s'",
105-
__get_str(dev_name), show_ce_errs(__entry->status)
112+
TP_printk("memdev=%s host=%s serial=%lld: status: '%s'",
113+
__get_str(memdev), __get_str(host), __entry->serial,
114+
show_ce_errs(__entry->status)
106115
)
107116
);
108117

@@ -115,30 +124,35 @@ TRACE_EVENT(cxl_aer_correctable_error,
115124

116125
TRACE_EVENT(cxl_overflow,
117126

118-
TP_PROTO(const struct device *dev, enum cxl_event_log_type log,
127+
TP_PROTO(const struct cxl_memdev *cxlmd, enum cxl_event_log_type log,
119128
struct cxl_get_event_payload *payload),
120129

121-
TP_ARGS(dev, log, payload),
130+
TP_ARGS(cxlmd, log, payload),
122131

123132
TP_STRUCT__entry(
124-
__string(dev_name, dev_name(dev))
133+
__string(memdev, dev_name(&cxlmd->dev))
134+
__string(host, dev_name(cxlmd->dev.parent))
125135
__field(int, log)
136+
__field(u64, serial)
126137
__field(u64, first_ts)
127138
__field(u64, last_ts)
128139
__field(u16, count)
129140
),
130141

131142
TP_fast_assign(
132-
__assign_str(dev_name, dev_name(dev));
143+
__assign_str(memdev, dev_name(&cxlmd->dev));
144+
__assign_str(host, dev_name(cxlmd->dev.parent));
145+
__entry->serial = cxlmd->cxlds->serial;
133146
__entry->log = log;
134147
__entry->count = le16_to_cpu(payload->overflow_err_count);
135148
__entry->first_ts = le64_to_cpu(payload->first_overflow_timestamp);
136149
__entry->last_ts = le64_to_cpu(payload->last_overflow_timestamp);
137150
),
138151

139-
TP_printk("%s: log=%s : %u records from %llu to %llu",
140-
__get_str(dev_name), cxl_event_log_type_str(__entry->log),
141-
__entry->count, __entry->first_ts, __entry->last_ts)
152+
TP_printk("memdev=%s host=%s serial=%lld: log=%s : %u records from %llu to %llu",
153+
__get_str(memdev), __get_str(host), __entry->serial,
154+
cxl_event_log_type_str(__entry->log), __entry->count,
155+
__entry->first_ts, __entry->last_ts)
142156

143157
);
144158

@@ -170,19 +184,23 @@ TRACE_EVENT(cxl_overflow,
170184
* See the generic_event tracepoint as an example.
171185
*/
172186
#define CXL_EVT_TP_entry \
173-
__string(dev_name, dev_name(dev)) \
187+
__string(memdev, dev_name(&cxlmd->dev)) \
188+
__string(host, dev_name(cxlmd->dev.parent)) \
174189
__field(int, log) \
175190
__field_struct(uuid_t, hdr_uuid) \
191+
__field(u64, serial) \
176192
__field(u32, hdr_flags) \
177193
__field(u16, hdr_handle) \
178194
__field(u16, hdr_related_handle) \
179195
__field(u64, hdr_timestamp) \
180196
__field(u8, hdr_length) \
181197
__field(u8, hdr_maint_op_class)
182198

183-
#define CXL_EVT_TP_fast_assign(dev, l, hdr) \
184-
__assign_str(dev_name, dev_name(dev)); \
199+
#define CXL_EVT_TP_fast_assign(cxlmd, l, hdr) \
200+
__assign_str(memdev, dev_name(&(cxlmd)->dev)); \
201+
__assign_str(host, dev_name((cxlmd)->dev.parent)); \
185202
__entry->log = (l); \
203+
__entry->serial = (cxlmd)->cxlds->serial; \
186204
memcpy(&__entry->hdr_uuid, &(hdr).id, sizeof(uuid_t)); \
187205
__entry->hdr_length = (hdr).length; \
188206
__entry->hdr_flags = get_unaligned_le24((hdr).flags); \
@@ -192,29 +210,30 @@ TRACE_EVENT(cxl_overflow,
192210
__entry->hdr_maint_op_class = (hdr).maint_op_class
193211

194212
#define CXL_EVT_TP_printk(fmt, ...) \
195-
TP_printk("%s log=%s : time=%llu uuid=%pUb len=%d flags='%s' " \
196-
"handle=%x related_handle=%x maint_op_class=%u" \
197-
" : " fmt, \
198-
__get_str(dev_name), cxl_event_log_type_str(__entry->log), \
213+
TP_printk("memdev=%s host=%s serial=%lld log=%s : time=%llu uuid=%pUb " \
214+
"len=%d flags='%s' handle=%x related_handle=%x " \
215+
"maint_op_class=%u : " fmt, \
216+
__get_str(memdev), __get_str(host), __entry->serial, \
217+
cxl_event_log_type_str(__entry->log), \
199218
__entry->hdr_timestamp, &__entry->hdr_uuid, __entry->hdr_length,\
200219
show_hdr_flags(__entry->hdr_flags), __entry->hdr_handle, \
201220
__entry->hdr_related_handle, __entry->hdr_maint_op_class, \
202221
##__VA_ARGS__)
203222

204223
TRACE_EVENT(cxl_generic_event,
205224

206-
TP_PROTO(const struct device *dev, enum cxl_event_log_type log,
225+
TP_PROTO(const struct cxl_memdev *cxlmd, enum cxl_event_log_type log,
207226
struct cxl_event_record_raw *rec),
208227

209-
TP_ARGS(dev, log, rec),
228+
TP_ARGS(cxlmd, log, rec),
210229

211230
TP_STRUCT__entry(
212231
CXL_EVT_TP_entry
213232
__array(u8, data, CXL_EVENT_RECORD_DATA_LENGTH)
214233
),
215234

216235
TP_fast_assign(
217-
CXL_EVT_TP_fast_assign(dev, log, rec->hdr);
236+
CXL_EVT_TP_fast_assign(cxlmd, log, rec->hdr);
218237
memcpy(__entry->data, &rec->data, CXL_EVENT_RECORD_DATA_LENGTH);
219238
),
220239

@@ -293,10 +312,10 @@ TRACE_EVENT(cxl_generic_event,
293312

294313
TRACE_EVENT(cxl_general_media,
295314

296-
TP_PROTO(const struct device *dev, enum cxl_event_log_type log,
315+
TP_PROTO(const struct cxl_memdev *cxlmd, enum cxl_event_log_type log,
297316
struct cxl_event_gen_media *rec),
298317

299-
TP_ARGS(dev, log, rec),
318+
TP_ARGS(cxlmd, log, rec),
300319

301320
TP_STRUCT__entry(
302321
CXL_EVT_TP_entry
@@ -315,7 +334,7 @@ TRACE_EVENT(cxl_general_media,
315334
),
316335

317336
TP_fast_assign(
318-
CXL_EVT_TP_fast_assign(dev, log, rec->hdr);
337+
CXL_EVT_TP_fast_assign(cxlmd, log, rec->hdr);
319338

320339
/* General Media */
321340
__entry->dpa = le64_to_cpu(rec->phys_addr);
@@ -376,10 +395,10 @@ TRACE_EVENT(cxl_general_media,
376395

377396
TRACE_EVENT(cxl_dram,
378397

379-
TP_PROTO(const struct device *dev, enum cxl_event_log_type log,
398+
TP_PROTO(const struct cxl_memdev *cxlmd, enum cxl_event_log_type log,
380399
struct cxl_event_dram *rec),
381400

382-
TP_ARGS(dev, log, rec),
401+
TP_ARGS(cxlmd, log, rec),
383402

384403
TP_STRUCT__entry(
385404
CXL_EVT_TP_entry
@@ -401,7 +420,7 @@ TRACE_EVENT(cxl_dram,
401420
),
402421

403422
TP_fast_assign(
404-
CXL_EVT_TP_fast_assign(dev, log, rec->hdr);
423+
CXL_EVT_TP_fast_assign(cxlmd, log, rec->hdr);
405424

406425
/* DRAM */
407426
__entry->dpa = le64_to_cpu(rec->phys_addr);
@@ -525,10 +544,10 @@ TRACE_EVENT(cxl_dram,
525544

526545
TRACE_EVENT(cxl_memory_module,
527546

528-
TP_PROTO(const struct device *dev, enum cxl_event_log_type log,
547+
TP_PROTO(const struct cxl_memdev *cxlmd, enum cxl_event_log_type log,
529548
struct cxl_event_mem_module *rec),
530549

531-
TP_ARGS(dev, log, rec),
550+
TP_ARGS(cxlmd, log, rec),
532551

533552
TP_STRUCT__entry(
534553
CXL_EVT_TP_entry
@@ -548,7 +567,7 @@ TRACE_EVENT(cxl_memory_module,
548567
),
549568

550569
TP_fast_assign(
551-
CXL_EVT_TP_fast_assign(dev, log, rec->hdr);
570+
CXL_EVT_TP_fast_assign(cxlmd, log, rec->hdr);
552571

553572
/* Memory Module Event */
554573
__entry->event_type = rec->event_type;

drivers/cxl/cxlmem.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -250,6 +250,7 @@ struct cxl_event_state {
250250
* @info: Cached DVSEC information about the device.
251251
* @serial: PCIe Device Serial Number
252252
* @doe_mbs: PCI DOE mailbox array
253+
* @event: event log driver state
253254
* @mbox_send: @dev specific transport for transmitting mailbox commands
254255
*
255256
* See section 8.2.9.5.2 Capacity Configuration and Label Storage for

0 commit comments

Comments
 (0)