@@ -478,7 +478,7 @@ TRACE_EVENT(cxl_general_media,
478
478
/*
479
479
* DRAM Event Record - DER
480
480
*
481
- * CXL rev 3.0 section 8.2.9.2.1.2; Table 8-44
481
+ * CXL rev 3.1 section 8.2.9.2.1.2; Table 8-46
482
482
*/
483
483
/*
484
484
* DRAM Event Record defines many fields the same as the General Media Event
@@ -488,11 +488,17 @@ TRACE_EVENT(cxl_general_media,
488
488
#define CXL_DER_MEM_EVT_TYPE_SCRUB_MEDIA_ECC_ERROR 0x01
489
489
#define CXL_DER_MEM_EVT_TYPE_INV_ADDR 0x02
490
490
#define CXL_DER_MEM_EVT_TYPE_DATA_PATH_ERROR 0x03
491
- #define show_dram_mem_event_type (type ) __print_symbolic(type, \
492
- { CXL_DER_MEM_EVT_TYPE_ECC_ERROR, "ECC Error" }, \
493
- { CXL_DER_MEM_EVT_TYPE_SCRUB_MEDIA_ECC_ERROR, "Scrub Media ECC Error" }, \
494
- { CXL_DER_MEM_EVT_TYPE_INV_ADDR, "Invalid Address" }, \
495
- { CXL_DER_MEM_EVT_TYPE_DATA_PATH_ERROR, "Data Path Error" } \
491
+ #define CXL_DER_MEM_EVT_TYPE_TE_STATE_VIOLATION 0x04
492
+ #define CXL_DER_MEM_EVT_TYPE_AP_CME_COUNTER_EXPIRE 0x05
493
+ #define CXL_DER_MEM_EVT_TYPE_CKID_VIOLATION 0x06
494
+ #define show_dram_mem_event_type (type ) __print_symbolic(type, \
495
+ { CXL_DER_MEM_EVT_TYPE_ECC_ERROR, "ECC Error" }, \
496
+ { CXL_DER_MEM_EVT_TYPE_SCRUB_MEDIA_ECC_ERROR, "Scrub Media ECC Error" }, \
497
+ { CXL_DER_MEM_EVT_TYPE_INV_ADDR, "Invalid Address" }, \
498
+ { CXL_DER_MEM_EVT_TYPE_DATA_PATH_ERROR, "Data Path Error" }, \
499
+ { CXL_DER_MEM_EVT_TYPE_TE_STATE_VIOLATION, "TE State Violation" }, \
500
+ { CXL_DER_MEM_EVT_TYPE_AP_CME_COUNTER_EXPIRE, "Adv Prog CME Counter Expiration" }, \
501
+ { CXL_DER_MEM_EVT_TYPE_CKID_VIOLATION, "CKID Violation" } \
496
502
)
497
503
498
504
#define CXL_DER_VALID_CHANNEL BIT(0)
@@ -503,15 +509,21 @@ TRACE_EVENT(cxl_general_media,
503
509
#define CXL_DER_VALID_ROW BIT(5)
504
510
#define CXL_DER_VALID_COLUMN BIT(6)
505
511
#define CXL_DER_VALID_CORRECTION_MASK BIT(7)
506
- #define show_dram_valid_flags (flags ) __print_flags(flags, "|", \
507
- { CXL_DER_VALID_CHANNEL, "CHANNEL" }, \
508
- { CXL_DER_VALID_RANK, "RANK" }, \
509
- { CXL_DER_VALID_NIBBLE, "NIBBLE" }, \
510
- { CXL_DER_VALID_BANK_GROUP, "BANK GROUP" }, \
511
- { CXL_DER_VALID_BANK, "BANK" }, \
512
- { CXL_DER_VALID_ROW, "ROW" }, \
513
- { CXL_DER_VALID_COLUMN, "COLUMN" }, \
514
- { CXL_DER_VALID_CORRECTION_MASK, "CORRECTION MASK" } \
512
+ #define CXL_DER_VALID_COMPONENT BIT(8)
513
+ #define CXL_DER_VALID_COMPONENT_ID_FORMAT BIT(9)
514
+ #define CXL_DER_VALID_SUB_CHANNEL BIT(10)
515
+ #define show_dram_valid_flags (flags ) __print_flags(flags, "|", \
516
+ { CXL_DER_VALID_CHANNEL, "CHANNEL" }, \
517
+ { CXL_DER_VALID_RANK, "RANK" }, \
518
+ { CXL_DER_VALID_NIBBLE, "NIBBLE" }, \
519
+ { CXL_DER_VALID_BANK_GROUP, "BANK GROUP" }, \
520
+ { CXL_DER_VALID_BANK, "BANK" }, \
521
+ { CXL_DER_VALID_ROW, "ROW" }, \
522
+ { CXL_DER_VALID_COLUMN, "COLUMN" }, \
523
+ { CXL_DER_VALID_CORRECTION_MASK, "CORRECTION MASK" }, \
524
+ { CXL_DER_VALID_COMPONENT, "COMPONENT" }, \
525
+ { CXL_DER_VALID_COMPONENT_ID_FORMAT, "COMPONENT PLDM FORMAT" }, \
526
+ { CXL_DER_VALID_SUB_CHANNEL, "SUB CHANNEL" } \
515
527
)
516
528
517
529
TRACE_EVENT (cxl_dram ,
@@ -540,6 +552,12 @@ TRACE_EVENT(cxl_dram,
540
552
__field (u8 , bank_group ) /* Out of order to pack trace record */
541
553
__field (u8 , bank ) /* Out of order to pack trace record */
542
554
__field (u8 , dpa_flags ) /* Out of order to pack trace record */
555
+ /* Following are out of order to pack trace record */
556
+ __array (u8 , comp_id , CXL_EVENT_GEN_MED_COMP_ID_SIZE )
557
+ __field (u32 , cvme_count )
558
+ __field (u8 , sub_type )
559
+ __field (u8 , sub_channel )
560
+ __field (u8 , cme_threshold_ev_flags )
543
561
__string (region_name , cxlr ? dev_name (& cxlr -> dev ) : "" )
544
562
),
545
563
@@ -553,6 +571,7 @@ TRACE_EVENT(cxl_dram,
553
571
__entry -> dpa &= CXL_DPA_MASK ;
554
572
__entry -> descriptor = rec -> media_hdr .descriptor ;
555
573
__entry -> type = rec -> media_hdr .type ;
574
+ __entry -> sub_type = rec -> sub_type ;
556
575
__entry -> transaction_type = rec -> media_hdr .transaction_type ;
557
576
__entry -> validity_flags = get_unaligned_le16 (rec -> media_hdr .validity_flags );
558
577
__entry -> channel = rec -> media_hdr .channel ;
@@ -572,23 +591,40 @@ TRACE_EVENT(cxl_dram,
572
591
__assign_str (region_name );
573
592
uuid_copy (& __entry -> region_uuid , & uuid_null );
574
593
}
594
+ memcpy (__entry -> comp_id , & rec -> component_id ,
595
+ CXL_EVENT_GEN_MED_COMP_ID_SIZE );
596
+ __entry -> sub_channel = rec -> sub_channel ;
597
+ __entry -> cme_threshold_ev_flags = rec -> cme_threshold_ev_flags ;
598
+ __entry -> cvme_count = get_unaligned_le24 (rec -> cvme_count );
575
599
),
576
600
577
- CXL_EVT_TP_printk ("dpa=%llx dpa_flags='%s' descriptor='%s' type='%s' " \
601
+ CXL_EVT_TP_printk ("dpa=%llx dpa_flags='%s' descriptor='%s' type='%s' sub_type='%s' " \
578
602
"transaction_type='%s' channel=%u rank=%u nibble_mask=%x " \
579
603
"bank_group=%u bank=%u row=%u column=%u cor_mask=%s " \
580
604
"validity_flags='%s' " \
581
- "hpa=%llx region=%s region_uuid=%pUb" ,
605
+ "comp_id=%s comp_id_pldm_valid_flags='%s' " \
606
+ "pldm_entity_id=%s pldm_resource_id=%s " \
607
+ "hpa=%llx region=%s region_uuid=%pUb " \
608
+ "sub_channel=%u cme_threshold_ev_flags='%s' cvme_count=%u" ,
582
609
__entry -> dpa , show_dpa_flags (__entry -> dpa_flags ),
583
610
show_event_desc_flags (__entry -> descriptor ),
584
611
show_dram_mem_event_type (__entry -> type ),
612
+ show_mem_event_sub_type (__entry -> sub_type ),
585
613
show_trans_type (__entry -> transaction_type ),
586
614
__entry -> channel , __entry -> rank , __entry -> nibble_mask ,
587
615
__entry -> bank_group , __entry -> bank ,
588
616
__entry -> row , __entry -> column ,
589
617
__print_hex (__entry -> cor_mask , CXL_EVENT_DER_CORRECTION_MASK_SIZE ),
590
618
show_dram_valid_flags (__entry -> validity_flags ),
591
- __entry -> hpa , __get_str (region_name ), & __entry -> region_uuid
619
+ __print_hex (__entry -> comp_id , CXL_EVENT_GEN_MED_COMP_ID_SIZE ),
620
+ show_comp_id_pldm_flags (__entry -> comp_id [0 ]),
621
+ show_pldm_entity_id (__entry -> validity_flags , CXL_DER_VALID_COMPONENT ,
622
+ CXL_DER_VALID_COMPONENT_ID_FORMAT , __entry -> comp_id ),
623
+ show_pldm_resource_id (__entry -> validity_flags , CXL_DER_VALID_COMPONENT ,
624
+ CXL_DER_VALID_COMPONENT_ID_FORMAT , __entry -> comp_id ),
625
+ __entry -> hpa , __get_str (region_name ), & __entry -> region_uuid ,
626
+ __entry -> sub_channel , show_cme_threshold_ev_flags (__entry -> cme_threshold_ev_flags ),
627
+ __entry -> cvme_count
592
628
)
593
629
);
594
630
0 commit comments