~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/Documentation/admin-guide/perf/imx-ddr.rst

Version: ~ [ linux-6.11.5 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.58 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.114 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.169 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.228 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.284 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.322 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /Documentation/admin-guide/perf/imx-ddr.rst (Architecture sparc) and /Documentation/admin-guide/perf/imx-ddr.rst (Architecture i386)


  1 ==============================================      1 =====================================================
  2 Freescale i.MX8 DDR Performance Monitoring Uni      2 Freescale i.MX8 DDR Performance Monitoring Unit (PMU)
  3 ==============================================      3 =====================================================
  4                                                     4 
  5 There are no performance counters inside the D      5 There are no performance counters inside the DRAM controller, so performance
  6 signals are brought out to the edge of the con      6 signals are brought out to the edge of the controller where a set of 4 x 32 bit
  7 counters is implemented. This is controlled by      7 counters is implemented. This is controlled by the CSV modes programmed in counter
  8 control register which causes a large number o      8 control register which causes a large number of PERF signals to be generated.
  9                                                     9 
 10 Selection of the value for each counter is don     10 Selection of the value for each counter is done via the config registers. There
 11 is one register for each counter. Counter 0 is     11 is one register for each counter. Counter 0 is special in that it always counts
 12 “time” and when expired causes a lock on i     12 “time” and when expired causes a lock on itself and the other counters and an
 13 interrupt is raised. If any other counter over     13 interrupt is raised. If any other counter overflows, it continues counting, and
 14 no interrupt is raised.                            14 no interrupt is raised.
 15                                                    15 
 16 The "format" directory describes format of the     16 The "format" directory describes format of the config (event ID) and config1/2
 17 (AXI filter setting) fields of the perf_event_     17 (AXI filter setting) fields of the perf_event_attr structure, see /sys/bus/event_source/
 18 devices/imx8_ddr0/format/. The "events" direct     18 devices/imx8_ddr0/format/. The "events" directory describes the events types
 19 hardware supported that can be used with perf      19 hardware supported that can be used with perf tool, see /sys/bus/event_source/
 20 devices/imx8_ddr0/events/. The "caps" director     20 devices/imx8_ddr0/events/. The "caps" directory describes filter features implemented
 21 in DDR PMU, see /sys/bus/events_source/devices     21 in DDR PMU, see /sys/bus/events_source/devices/imx8_ddr0/caps/.
 22                                                    22 
 23     .. code-block:: bash                           23     .. code-block:: bash
 24                                                    24 
 25         perf stat -a -e imx8_ddr0/cycles/ cmd      25         perf stat -a -e imx8_ddr0/cycles/ cmd
 26         perf stat -a -e imx8_ddr0/read/,imx8_d     26         perf stat -a -e imx8_ddr0/read/,imx8_ddr0/write/ cmd
 27                                                    27 
 28 AXI filtering is only used by CSV modes 0x41 (     28 AXI filtering is only used by CSV modes 0x41 (axid-read) and 0x42 (axid-write)
 29 to count reading or writing matches filter set     29 to count reading or writing matches filter setting. Filter setting is various
 30 from different DRAM controller implementations     30 from different DRAM controller implementations, which is distinguished by quirks
 31 in the driver. You also can dump info from use     31 in the driver. You also can dump info from userspace, "caps" directory show the
 32 type of AXI filter (filter, enhanced_filter an     32 type of AXI filter (filter, enhanced_filter and super_filter). Value 0 for
 33 un-supported, and value 1 for supported.           33 un-supported, and value 1 for supported.
 34                                                    34 
 35 * With DDR_CAP_AXI_ID_FILTER quirk(filter: 1,      35 * With DDR_CAP_AXI_ID_FILTER quirk(filter: 1, enhanced_filter: 0, super_filter: 0).
 36   Filter is defined with two configuration par     36   Filter is defined with two configuration parts:
 37   --AXI_ID defines AxID matching value.            37   --AXI_ID defines AxID matching value.
 38   --AXI_MASKING defines which bits of AxID are     38   --AXI_MASKING defines which bits of AxID are meaningful for the matching.
 39                                                    39 
 40       - 0: corresponding bit is masked.            40       - 0: corresponding bit is masked.
 41       - 1: corresponding bit is not masked, i.     41       - 1: corresponding bit is not masked, i.e. used to do the matching.
 42                                                    42 
 43   AXI_ID and AXI_MASKING are mapped on DPCR1 r     43   AXI_ID and AXI_MASKING are mapped on DPCR1 register in performance counter.
 44   When non-masked bits are matching correspond     44   When non-masked bits are matching corresponding AXI_ID bits then counter is
 45   incremented. Perf counter is incremented if:     45   incremented. Perf counter is incremented if::
 46                                                    46 
 47         AxID && AXI_MASKING == AXI_ID && AXI_M     47         AxID && AXI_MASKING == AXI_ID && AXI_MASKING
 48                                                    48 
 49   This filter doesn't support filter different     49   This filter doesn't support filter different AXI ID for axid-read and axid-write
 50   event at the same time as this filter is sha     50   event at the same time as this filter is shared between counters.
 51                                                    51 
 52   .. code-block:: bash                             52   .. code-block:: bash
 53                                                    53 
 54       perf stat -a -e imx8_ddr0/axid-read,axi_     54       perf stat -a -e imx8_ddr0/axid-read,axi_mask=0xMMMM,axi_id=0xDDDD/ cmd
 55       perf stat -a -e imx8_ddr0/axid-write,axi     55       perf stat -a -e imx8_ddr0/axid-write,axi_mask=0xMMMM,axi_id=0xDDDD/ cmd
 56                                                    56 
 57   .. note::                                        57   .. note::
 58                                                    58 
 59       axi_mask is inverted in userspace(i.e. s     59       axi_mask is inverted in userspace(i.e. set bits are bits to mask), and
 60       it will be reverted in driver automatica     60       it will be reverted in driver automatically. so that the user can just specify
 61       axi_id to monitor a specific id, rather      61       axi_id to monitor a specific id, rather than having to specify axi_mask.
 62                                                    62 
 63   .. code-block:: bash                             63   .. code-block:: bash
 64                                                    64 
 65         perf stat -a -e imx8_ddr0/axid-read,ax     65         perf stat -a -e imx8_ddr0/axid-read,axi_id=0x12/ cmd, which will monitor ARID=0x12
 66                                                    66 
 67 * With DDR_CAP_AXI_ID_FILTER_ENHANCED quirk(fi     67 * With DDR_CAP_AXI_ID_FILTER_ENHANCED quirk(filter: 1, enhanced_filter: 1, super_filter: 0).
 68   This is an extension to the DDR_CAP_AXI_ID_F     68   This is an extension to the DDR_CAP_AXI_ID_FILTER quirk which permits
 69   counting the number of bytes (as opposed to      69   counting the number of bytes (as opposed to the number of bursts) from DDR
 70   read and write transactions concurrently wit     70   read and write transactions concurrently with another set of data counters.
 71                                                    71 
 72 * With DDR_CAP_AXI_ID_PORT_CHANNEL_FILTER quir     72 * With DDR_CAP_AXI_ID_PORT_CHANNEL_FILTER quirk(filter: 0, enhanced_filter: 0, super_filter: 1).
 73   There is a limitation in previous AXI filter     73   There is a limitation in previous AXI filter, it cannot filter different IDs
 74   at the same time as the filter is shared bet     74   at the same time as the filter is shared between counters. This quirk is the
 75   extension of AXI ID filter. One improvement      75   extension of AXI ID filter. One improvement is that counter 1-3 has their own
 76   filter, means that it supports concurrently      76   filter, means that it supports concurrently filter various IDs. Another
 77   improvement is that counter 1-3 supports AXI     77   improvement is that counter 1-3 supports AXI PORT and CHANNEL selection. Support
 78   selecting address channel or data channel.       78   selecting address channel or data channel.
 79                                                    79 
 80   Filter is defined with 2 configuration regis     80   Filter is defined with 2 configuration registers per counter 1-3.
 81   --Counter N MASK COMP register - including A     81   --Counter N MASK COMP register - including AXI_ID and AXI_MASKING.
 82   --Counter N MUX CNTL register - including AX     82   --Counter N MUX CNTL register - including AXI CHANNEL and AXI PORT.
 83                                                    83 
 84       - 0: address channel                         84       - 0: address channel
 85       - 1: data channel                            85       - 1: data channel
 86                                                    86 
 87   PMU in DDR subsystem, only one single port0      87   PMU in DDR subsystem, only one single port0 exists, so axi_port is reserved
 88   which should be 0.                               88   which should be 0.
 89                                                    89 
 90   .. code-block:: bash                             90   .. code-block:: bash
 91                                                    91 
 92       perf stat -a -e imx8_ddr0/axid-read,axi_     92       perf stat -a -e imx8_ddr0/axid-read,axi_mask=0xMMMM,axi_id=0xDDDD,axi_channel=0xH/ cmd
 93       perf stat -a -e imx8_ddr0/axid-write,axi     93       perf stat -a -e imx8_ddr0/axid-write,axi_mask=0xMMMM,axi_id=0xDDDD,axi_channel=0xH/ cmd
 94                                                    94 
 95   .. note::                                        95   .. note::
 96                                                    96 
 97       axi_channel is inverted in userspace, an     97       axi_channel is inverted in userspace, and it will be reverted in driver
 98       automatically. So that users do not need     98       automatically. So that users do not need specify axi_channel if want to
 99       monitor data channel from DDR transactio     99       monitor data channel from DDR transactions, since data channel is more
100       meaningful.                                 100       meaningful.
                                                      

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php