Skip to content

Commit 0092f62

Browse files
weiny2djbw
authored andcommitted
cxl/test: Add specific events
Each type of event has different trace point outputs. Add mock General Media Event, DRAM event, and Memory Module Event records to the mock list of events returned. Reviewed-by: Dan Williams <[email protected]> Reviewed-by: Jonathan Cameron <[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 d1dca85 commit 0092f62

File tree

1 file changed

+73
-0
lines changed
  • tools/testing/cxl/test

1 file changed

+73
-0
lines changed

tools/testing/cxl/test/mem.c

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -277,12 +277,85 @@ struct cxl_event_record_raw hardware_replace = {
277277
.data = { 0xDE, 0xAD, 0xBE, 0xEF },
278278
};
279279

280+
struct cxl_event_gen_media gen_media = {
281+
.hdr = {
282+
.id = UUID_INIT(0xfbcd0a77, 0xc260, 0x417f,
283+
0x85, 0xa9, 0x08, 0x8b, 0x16, 0x21, 0xeb, 0xa6),
284+
.length = sizeof(struct cxl_event_gen_media),
285+
.flags[0] = CXL_EVENT_RECORD_FLAG_PERMANENT,
286+
/* .handle = Set dynamically */
287+
.related_handle = cpu_to_le16(0),
288+
},
289+
.phys_addr = cpu_to_le64(0x2000),
290+
.descriptor = CXL_GMER_EVT_DESC_UNCORECTABLE_EVENT,
291+
.type = CXL_GMER_MEM_EVT_TYPE_DATA_PATH_ERROR,
292+
.transaction_type = CXL_GMER_TRANS_HOST_WRITE,
293+
/* .validity_flags = <set below> */
294+
.channel = 1,
295+
.rank = 30
296+
};
297+
298+
struct cxl_event_dram dram = {
299+
.hdr = {
300+
.id = UUID_INIT(0x601dcbb3, 0x9c06, 0x4eab,
301+
0xb8, 0xaf, 0x4e, 0x9b, 0xfb, 0x5c, 0x96, 0x24),
302+
.length = sizeof(struct cxl_event_dram),
303+
.flags[0] = CXL_EVENT_RECORD_FLAG_PERF_DEGRADED,
304+
/* .handle = Set dynamically */
305+
.related_handle = cpu_to_le16(0),
306+
},
307+
.phys_addr = cpu_to_le64(0x8000),
308+
.descriptor = CXL_GMER_EVT_DESC_THRESHOLD_EVENT,
309+
.type = CXL_GMER_MEM_EVT_TYPE_INV_ADDR,
310+
.transaction_type = CXL_GMER_TRANS_INTERNAL_MEDIA_SCRUB,
311+
/* .validity_flags = <set below> */
312+
.channel = 1,
313+
.bank_group = 5,
314+
.bank = 2,
315+
.column = {0xDE, 0xAD},
316+
};
317+
318+
struct cxl_event_mem_module mem_module = {
319+
.hdr = {
320+
.id = UUID_INIT(0xfe927475, 0xdd59, 0x4339,
321+
0xa5, 0x86, 0x79, 0xba, 0xb1, 0x13, 0xb7, 0x74),
322+
.length = sizeof(struct cxl_event_mem_module),
323+
/* .handle = Set dynamically */
324+
.related_handle = cpu_to_le16(0),
325+
},
326+
.event_type = CXL_MMER_TEMP_CHANGE,
327+
.info = {
328+
.health_status = CXL_DHI_HS_PERFORMANCE_DEGRADED,
329+
.media_status = CXL_DHI_MS_ALL_DATA_LOST,
330+
.add_status = (CXL_DHI_AS_CRITICAL << 2) |
331+
(CXL_DHI_AS_WARNING << 4) |
332+
(CXL_DHI_AS_WARNING << 5),
333+
.device_temp = { 0xDE, 0xAD},
334+
.dirty_shutdown_cnt = { 0xde, 0xad, 0xbe, 0xef },
335+
.cor_vol_err_cnt = { 0xde, 0xad, 0xbe, 0xef },
336+
.cor_per_err_cnt = { 0xde, 0xad, 0xbe, 0xef },
337+
}
338+
};
339+
280340
static void cxl_mock_add_event_logs(struct mock_event_store *mes)
281341
{
342+
put_unaligned_le16(CXL_GMER_VALID_CHANNEL | CXL_GMER_VALID_RANK,
343+
&gen_media.validity_flags);
344+
345+
put_unaligned_le16(CXL_DER_VALID_CHANNEL | CXL_DER_VALID_BANK_GROUP |
346+
CXL_DER_VALID_BANK | CXL_DER_VALID_COLUMN,
347+
&dram.validity_flags);
348+
282349
mes_add_event(mes, CXL_EVENT_TYPE_INFO, &maint_needed);
350+
mes_add_event(mes, CXL_EVENT_TYPE_INFO,
351+
(struct cxl_event_record_raw *)&gen_media);
352+
mes_add_event(mes, CXL_EVENT_TYPE_INFO,
353+
(struct cxl_event_record_raw *)&mem_module);
283354
mes->ev_status |= CXLDEV_EVENT_STATUS_INFO;
284355

285356
mes_add_event(mes, CXL_EVENT_TYPE_FATAL, &hardware_replace);
357+
mes_add_event(mes, CXL_EVENT_TYPE_FATAL,
358+
(struct cxl_event_record_raw *)&dram);
286359
mes->ev_status |= CXLDEV_EVENT_STATUS_FATAL;
287360
}
288361

0 commit comments

Comments
 (0)