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

Reply via email to