@@ -277,12 +277,85 @@ struct cxl_event_record_raw hardware_replace = {
277
277
.data = { 0xDE , 0xAD , 0xBE , 0xEF },
278
278
};
279
279
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
+
280
340
static void cxl_mock_add_event_logs (struct mock_event_store * mes )
281
341
{
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
+
282
349
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 );
283
354
mes -> ev_status |= CXLDEV_EVENT_STATUS_INFO ;
284
355
285
356
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 );
286
359
mes -> ev_status |= CXLDEV_EVENT_STATUS_FATAL ;
287
360
}
288
361
0 commit comments