summaryrefslogtreecommitdiff
path: root/drivers/perf
diff options
context:
space:
mode:
authorJoakim Zhang <qiangqing.zhang@nxp.com>2019-05-07 13:11:14 +0800
committerJoakim Zhang <qiangqing.zhang@nxp.com>2019-05-14 09:12:53 +0800
commit525cce9da853fbf231c0dee64d202db31597aa6f (patch)
tree83c600c0846c521a544e11adf6f49a2b03b96fd7 /drivers/perf
parentf0e9f058af055c7aa34f6c4475a4183e655f4453 (diff)
MLK-21289 perf: ddr-perf: calculate ddr bandwidth via virtual event read-bytes/write-bytes
We can calculate ddr bandwidth via virtual event read-bytes/write-bytes based on ddr burst width, which actually share event read-cycles/write-cycles. Burst width is 32 bit on i.MX8 board till now. The ddr interface will generate 2 up edges and 2 down edges in an internal clock cycle, so it can pass 4 beats of data. 4 bytes of each beat if ddr burst width is 32 bit. Cmd bellow: perf stat -a -e ddr0/read-bytes/ ls perf stat -a -e ddr0/write-bytes/ ls Signed-off-by: Joakim Zhang <qiangqing.zhang@nxp.com>
Diffstat (limited to 'drivers/perf')
-rw-r--r--drivers/perf/ddr-perf.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/perf/ddr-perf.c b/drivers/perf/ddr-perf.c
index cd338cb5f64a..7374a094b439 100644
--- a/drivers/perf/ddr-perf.c
+++ b/drivers/perf/ddr-perf.c
@@ -69,7 +69,13 @@ PMU_EVENT_ATTR_STRING(lp-req-nocredit, ddr_perf_lp_req_nocredit, "event=0x26");
PMU_EVENT_ATTR_STRING(lp-xact-credit, ddr_perf_lp_xact_credit, "event=0x27");
PMU_EVENT_ATTR_STRING(wr-xact-credit, ddr_perf_wr_xact_credit, "event=0x29");
PMU_EVENT_ATTR_STRING(read-cycles, ddr_perf_read_cycles, "event=0x2a");
+PMU_EVENT_ATTR_STRING(read-bytes, ddr_perf_read_bytes, "event=0xf2a");
+PMU_EVENT_ATTR_STRING(read-bytes.unit, ddr_perf_read_bytes_unit, "MB");
+PMU_EVENT_ATTR_STRING(read-bytes.scale, ddr_perf_read_bytes_scale, "0.000016");
PMU_EVENT_ATTR_STRING(write-cycles, ddr_perf_write_cycles, "event=0x2b");
+PMU_EVENT_ATTR_STRING(write-bytes, ddr_perf_write_bytes, "event=0xf2b");
+PMU_EVENT_ATTR_STRING(write-bytes.unit, ddr_perf_write_bytes_unit, "MB");
+PMU_EVENT_ATTR_STRING(write-bytes.scale, ddr_perf_write_bytes_scale, "0.000016");
PMU_EVENT_ATTR_STRING(read-write-transition, ddr_perf_read_write_transition,
"event=0x30");
PMU_EVENT_ATTR_STRING(precharge, ddr_perf_precharge, "event=0x31");
@@ -154,7 +160,13 @@ static struct attribute *ddr_perf_events_attrs[] = {
&ddr_perf_lp_xact_credit.attr.attr,
&ddr_perf_wr_xact_credit.attr.attr,
&ddr_perf_read_cycles.attr.attr,
+ &ddr_perf_read_bytes.attr.attr,
+ &ddr_perf_read_bytes_unit.attr.attr,
+ &ddr_perf_read_bytes_scale.attr.attr,
&ddr_perf_write_cycles.attr.attr,
+ &ddr_perf_write_bytes.attr.attr,
+ &ddr_perf_write_bytes_unit.attr.attr,
+ &ddr_perf_write_bytes_scale.attr.attr,
&ddr_perf_read_write_transition.attr.attr,
&ddr_perf_precharge.attr.attr,
&ddr_perf_activate.attr.attr,