mirror of
https://github.com/torvalds/linux.git
synced 2024-11-21 19:41:42 +00:00
docs/perf: Add explanation for DDR_CAP_AXI_ID_PORT_CHANNEL_FILTER quirk
Add explanation for DDR_CAP_AXI_ID_PORT_CHANNEL_FILTER quirk. Signed-off-by: Xu Yang <xu.yang_2@nxp.com> Link: https://lore.kernel.org/r/20231120093317.2652866-2-xu.yang_2@nxp.com Signed-off-by: Will Deacon <will@kernel.org>
This commit is contained in:
parent
afd83967e7
commit
9745295358
@ -13,8 +13,8 @@ is one register for each counter. Counter 0 is special in that it always counts
|
||||
interrupt is raised. If any other counter overflows, it continues counting, and
|
||||
no interrupt is raised.
|
||||
|
||||
The "format" directory describes format of the config (event ID) and config1
|
||||
(AXI filtering) fields of the perf_event_attr structure, see /sys/bus/event_source/
|
||||
The "format" directory describes format of the config (event ID) and config1/2
|
||||
(AXI filter setting) fields of the perf_event_attr structure, see /sys/bus/event_source/
|
||||
devices/imx8_ddr0/format/. The "events" directory describes the events types
|
||||
hardware supported that can be used with perf tool, see /sys/bus/event_source/
|
||||
devices/imx8_ddr0/events/. The "caps" directory describes filter features implemented
|
||||
@ -28,12 +28,11 @@ in DDR PMU, see /sys/bus/events_source/devices/imx8_ddr0/caps/.
|
||||
AXI filtering is only used by CSV modes 0x41 (axid-read) and 0x42 (axid-write)
|
||||
to count reading or writing matches filter setting. Filter setting is various
|
||||
from different DRAM controller implementations, which is distinguished by quirks
|
||||
in the driver. You also can dump info from userspace, filter in "caps" directory
|
||||
indicates whether PMU supports AXI ID filter or not; enhanced_filter indicates
|
||||
whether PMU supports enhanced AXI ID filter or not. Value 0 for un-supported, and
|
||||
value 1 for supported.
|
||||
in the driver. You also can dump info from userspace, "caps" directory show the
|
||||
type of AXI filter (filter, enhanced_filter and super_filter). Value 0 for
|
||||
un-supported, and value 1 for supported.
|
||||
|
||||
* With DDR_CAP_AXI_ID_FILTER quirk(filter: 1, enhanced_filter: 0).
|
||||
* With DDR_CAP_AXI_ID_FILTER quirk(filter: 1, enhanced_filter: 0, super_filter: 0).
|
||||
Filter is defined with two configuration parts:
|
||||
--AXI_ID defines AxID matching value.
|
||||
--AXI_MASKING defines which bits of AxID are meaningful for the matching.
|
||||
@ -65,7 +64,37 @@ value 1 for supported.
|
||||
|
||||
perf stat -a -e imx8_ddr0/axid-read,axi_id=0x12/ cmd, which will monitor ARID=0x12
|
||||
|
||||
* With DDR_CAP_AXI_ID_FILTER_ENHANCED quirk(filter: 1, enhanced_filter: 1).
|
||||
* With DDR_CAP_AXI_ID_FILTER_ENHANCED quirk(filter: 1, enhanced_filter: 1, super_filter: 0).
|
||||
This is an extension to the DDR_CAP_AXI_ID_FILTER quirk which permits
|
||||
counting the number of bytes (as opposed to the number of bursts) from DDR
|
||||
read and write transactions concurrently with another set of data counters.
|
||||
|
||||
* With DDR_CAP_AXI_ID_PORT_CHANNEL_FILTER quirk(filter: 0, enhanced_filter: 0, super_filter: 1).
|
||||
There is a limitation in previous AXI filter, it cannot filter different IDs
|
||||
at the same time as the filter is shared between counters. This quirk is the
|
||||
extension of AXI ID filter. One improvement is that counter 1-3 has their own
|
||||
filter, means that it supports concurrently filter various IDs. Another
|
||||
improvement is that counter 1-3 supports AXI PORT and CHANNEL selection. Support
|
||||
selecting address channel or data channel.
|
||||
|
||||
Filter is defined with 2 configuration registers per counter 1-3.
|
||||
--Counter N MASK COMP register - including AXI_ID and AXI_MASKING.
|
||||
--Counter N MUX CNTL register - including AXI CHANNEL and AXI PORT.
|
||||
|
||||
- 0: address channel
|
||||
- 1: data channel
|
||||
|
||||
PMU in DDR subsystem, only one single port0 exists, so axi_port is reserved
|
||||
which should be 0.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
perf stat -a -e imx8_ddr0/axid-read,axi_mask=0xMMMM,axi_id=0xDDDD,axi_channel=0xH/ cmd
|
||||
perf stat -a -e imx8_ddr0/axid-write,axi_mask=0xMMMM,axi_id=0xDDDD,axi_channel=0xH/ cmd
|
||||
|
||||
.. note::
|
||||
|
||||
axi_channel is inverted in userspace, and it will be reverted in driver
|
||||
automatically. So that users do not need specify axi_channel if want to
|
||||
monitor data channel from DDR transactions, since data channel is more
|
||||
meaningful.
|
||||
|
Loading…
Reference in New Issue
Block a user