Skip to content

Commit d950c38

Browse files
Gowthami Thiagarajanwilldeacon
authored andcommitted
perf/marvell: Odyssey DDR Performance monitor support
Odyssey DRAM Subsystem supports eight counters for monitoring performance and software can program those counters to monitor any of the defined performance events. Supported performance events include those counted at the interface between the DDR controller and the PHY, interface between the DDR Controller and the CHI interconnect, or within the DDR Controller. Additionally DSS also supports two fixed performance event counters, one for ddr reads and the other for ddr writes. Signed-off-by: Gowthami Thiagarajan <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Will Deacon <[email protected]>
1 parent 0045de7 commit d950c38

File tree

3 files changed

+349
-5
lines changed

3 files changed

+349
-5
lines changed

Documentation/admin-guide/perf/index.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ Performance monitor support
1414
qcom_l2_pmu
1515
qcom_l3_pmu
1616
starfive_starlink_pmu
17+
mrvl-odyssey-ddr-pmu
1718
arm-ccn
1819
arm-cmn
1920
arm-ni
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
===================================================================
2+
Marvell Odyssey DDR PMU Performance Monitoring Unit (PMU UNCORE)
3+
===================================================================
4+
5+
Odyssey DRAM Subsystem supports eight counters for monitoring performance
6+
and software can program those counters to monitor any of the defined
7+
performance events. Supported performance events include those counted
8+
at the interface between the DDR controller and the PHY, interface between
9+
the DDR Controller and the CHI interconnect, or within the DDR Controller.
10+
11+
Additionally DSS also supports two fixed performance event counters, one
12+
for ddr reads and the other for ddr writes.
13+
14+
The counter will be operating in either manual or auto mode.
15+
16+
The PMU driver exposes the available events and format options under sysfs::
17+
18+
/sys/bus/event_source/devices/mrvl_ddr_pmu_<>/events/
19+
/sys/bus/event_source/devices/mrvl_ddr_pmu_<>/format/
20+
21+
Examples::
22+
23+
$ perf list | grep ddr
24+
mrvl_ddr_pmu_<>/ddr_act_bypass_access/ [Kernel PMU event]
25+
mrvl_ddr_pmu_<>/ddr_bsm_alloc/ [Kernel PMU event]
26+
mrvl_ddr_pmu_<>/ddr_bsm_starvation/ [Kernel PMU event]
27+
mrvl_ddr_pmu_<>/ddr_cam_active_access/ [Kernel PMU event]
28+
mrvl_ddr_pmu_<>/ddr_cam_mwr/ [Kernel PMU event]
29+
mrvl_ddr_pmu_<>/ddr_cam_rd_active_access/ [Kernel PMU event]
30+
mrvl_ddr_pmu_<>/ddr_cam_rd_or_wr_access/ [Kernel PMU event]
31+
mrvl_ddr_pmu_<>/ddr_cam_read/ [Kernel PMU event]
32+
mrvl_ddr_pmu_<>/ddr_cam_wr_access/ [Kernel PMU event]
33+
mrvl_ddr_pmu_<>/ddr_cam_write/ [Kernel PMU event]
34+
mrvl_ddr_pmu_<>/ddr_capar_error/ [Kernel PMU event]
35+
mrvl_ddr_pmu_<>/ddr_crit_ref/ [Kernel PMU event]
36+
mrvl_ddr_pmu_<>/ddr_ddr_reads/ [Kernel PMU event]
37+
mrvl_ddr_pmu_<>/ddr_ddr_writes/ [Kernel PMU event]
38+
mrvl_ddr_pmu_<>/ddr_dfi_cmd_is_retry/ [Kernel PMU event]
39+
mrvl_ddr_pmu_<>/ddr_dfi_cycles/ [Kernel PMU event]
40+
mrvl_ddr_pmu_<>/ddr_dfi_parity_poison/ [Kernel PMU event]
41+
mrvl_ddr_pmu_<>/ddr_dfi_rd_data_access/ [Kernel PMU event]
42+
mrvl_ddr_pmu_<>/ddr_dfi_wr_data_access/ [Kernel PMU event]
43+
mrvl_ddr_pmu_<>/ddr_dqsosc_mpc/ [Kernel PMU event]
44+
mrvl_ddr_pmu_<>/ddr_dqsosc_mrr/ [Kernel PMU event]
45+
mrvl_ddr_pmu_<>/ddr_enter_mpsm/ [Kernel PMU event]
46+
mrvl_ddr_pmu_<>/ddr_enter_powerdown/ [Kernel PMU event]
47+
mrvl_ddr_pmu_<>/ddr_enter_selfref/ [Kernel PMU event]
48+
mrvl_ddr_pmu_<>/ddr_hif_pri_rdaccess/ [Kernel PMU event]
49+
mrvl_ddr_pmu_<>/ddr_hif_rd_access/ [Kernel PMU event]
50+
mrvl_ddr_pmu_<>/ddr_hif_rd_or_wr_access/ [Kernel PMU event]
51+
mrvl_ddr_pmu_<>/ddr_hif_rmw_access/ [Kernel PMU event]
52+
mrvl_ddr_pmu_<>/ddr_hif_wr_access/ [Kernel PMU event]
53+
mrvl_ddr_pmu_<>/ddr_hpri_sched_rd_crit_access/ [Kernel PMU event]
54+
mrvl_ddr_pmu_<>/ddr_load_mode/ [Kernel PMU event]
55+
mrvl_ddr_pmu_<>/ddr_lpri_sched_rd_crit_access/ [Kernel PMU event]
56+
mrvl_ddr_pmu_<>/ddr_precharge/ [Kernel PMU event]
57+
mrvl_ddr_pmu_<>/ddr_precharge_for_other/ [Kernel PMU event]
58+
mrvl_ddr_pmu_<>/ddr_precharge_for_rdwr/ [Kernel PMU event]
59+
mrvl_ddr_pmu_<>/ddr_raw_hazard/ [Kernel PMU event]
60+
mrvl_ddr_pmu_<>/ddr_rd_bypass_access/ [Kernel PMU event]
61+
mrvl_ddr_pmu_<>/ddr_rd_crc_error/ [Kernel PMU event]
62+
mrvl_ddr_pmu_<>/ddr_rd_uc_ecc_error/ [Kernel PMU event]
63+
mrvl_ddr_pmu_<>/ddr_rdwr_transitions/ [Kernel PMU event]
64+
mrvl_ddr_pmu_<>/ddr_refresh/ [Kernel PMU event]
65+
mrvl_ddr_pmu_<>/ddr_retry_fifo_full/ [Kernel PMU event]
66+
mrvl_ddr_pmu_<>/ddr_spec_ref/ [Kernel PMU event]
67+
mrvl_ddr_pmu_<>/ddr_tcr_mrr/ [Kernel PMU event]
68+
mrvl_ddr_pmu_<>/ddr_war_hazard/ [Kernel PMU event]
69+
mrvl_ddr_pmu_<>/ddr_waw_hazard/ [Kernel PMU event]
70+
mrvl_ddr_pmu_<>/ddr_win_limit_reached_rd/ [Kernel PMU event]
71+
mrvl_ddr_pmu_<>/ddr_win_limit_reached_wr/ [Kernel PMU event]
72+
mrvl_ddr_pmu_<>/ddr_wr_crc_error/ [Kernel PMU event]
73+
mrvl_ddr_pmu_<>/ddr_wr_trxn_crit_access/ [Kernel PMU event]
74+
mrvl_ddr_pmu_<>/ddr_write_combine/ [Kernel PMU event]
75+
mrvl_ddr_pmu_<>/ddr_zqcl/ [Kernel PMU event]
76+
mrvl_ddr_pmu_<>/ddr_zqlatch/ [Kernel PMU event]
77+
mrvl_ddr_pmu_<>/ddr_zqstart/ [Kernel PMU event]
78+
79+
$ perf stat -e ddr_cam_read,ddr_cam_write,ddr_cam_active_access,ddr_cam
80+
rd_or_wr_access,ddr_cam_rd_active_access,ddr_cam_mwr <workload>

0 commit comments

Comments
 (0)