Hi I found that pfm_get_os_event_encoding() returns the same code for both spr::TOPDOWN:SLOTS and spr::TOPDOWN:BAD_SPEC_SLOTS counters.
If I run the check_events example: $ ./check_events TOPDOWN:SLOTS ... Requested Event: TOPDOWN:SLOTS Actual Event: spr::TOPDOWN:SLOTS:k=1:u=1:e=0:i=0:c=0:intx=0:intxcp=0 PMU : Intel SapphireRapid IDX : 1073741888 Codes : *0x530400* $ ./check_events TOPDOWN:BAD_SPEC_SLOTS Requested Event: TOPDOWN:BAD_SPEC_SLOTS Actual Event: spr::TOPDOWN:BAD_SPEC_SLOTS:k=1:u=1:e=0:i=0:c=0:intx=0:intxcp=0 PMU : Intel SapphireRapid IDX : 1073741888 Codes : *0x530400* Other sub-events like TOPDOWN:BACKEND_BOUND_SLOTS, TOPDOWN:BR_MISPREDICT_SLOTS and TOPDOWN:MEMORY_BOUND_SLOTS have correctly unique codes. Interestingly, the ./showevtinfo program shows that both TOPDOWN:SLOTS and TOPDOWN:BAD_SPEC_SLOTS have the sane Umask. IDX : 1073741888 PMU name : spr (Intel SapphireRapid) Name : TOPDOWN Equiv : None Flags : [hw_smpl] [speculative] Desc : Topdown events. Code : 0x0 Umask-00 : 0x02 : PMU : [BACKEND_BOUND_SLOTS] : [hw_smpl] [speculative] : TMA slots where no uops were being issued due to lack of back-end resources. Umask-01 : *0x04* : PMU : [BAD_SPEC_SLOTS] : [hw_smpl] [speculative] : TMA slots wasted due to incorrect speculations. Umask-02 : 0x08 : PMU : [BR_MISPREDICT_SLOTS] : [hw_smpl] [speculative] : TMA slots wasted due to incorrect speculation by branch mispredictions Umask-03 : 0x10 : PMU : [MEMORY_BOUND_SLOTS] : [hw_smpl] [speculative] : TBD Umask-04 : *0x04* : PMU : [SLOTS] : [hw_smpl] [speculative] : TMA slots available for an unhalted logical processor. Fixed counter - architectural event Umask-05 : 0x1a4 : PMU : [SLOTS_P] : [hw_smpl] [speculative] : TMA slots available for an unhalted logical processor. General counter - architectural event Modif-00 : 0x00 : PMU : [k] : monitor at priv level 0 (boolean) Modif-01 : 0x01 : PMU : [u] : monitor at priv level 1, 2, 3 (boolean) Modif-02 : 0x02 : PMU : [e] : edge level (may require counter-mask >= 1) (boolean) Modif-03 : 0x03 : PMU : [i] : invert (boolean) Modif-04 : 0x04 : PMU : [c] : counter-mask in range [0-255] (integer) Modif-05 : 0x07 : PMU : [intx] : monitor only inside transactional memory region (boolean) Modif-06 : 0x08 : PMU : [intxcp] : do not count occurrences inside aborted transactional memory region (boolean) This is tested with Intel Sapphire Rapid CPU on Linux 4.18 using the latest libpfm4 from the git repository. Laksono Adhianto
_______________________________________________ perfmon2-devel mailing list perfmon2-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/perfmon2-devel