1*6338876bSHarrison MutaiRuntime Instrumentation Testing - N1SDP 2*6338876bSHarrison Mutai======================================= 3*6338876bSHarrison Mutai 4*6338876bSHarrison MutaiFor this test we used the N1 System Development Platform (`N1SDP`_), which 5*6338876bSHarrison Mutaicontains an SoC consisting of two dual-core Arm N1 clusters. 6*6338876bSHarrison Mutai 7*6338876bSHarrison MutaiThe following source trees and binaries were used: 8*6338876bSHarrison Mutai 9*6338876bSHarrison Mutai- TF-A [`v2.9-rc0-16-g666aec401`_] 10*6338876bSHarrison Mutai- TFTF [`v2.9-rc0`_] 11*6338876bSHarrison Mutai- SCP/MCP `Prebuilt Images`_ 12*6338876bSHarrison Mutai 13*6338876bSHarrison MutaiPlease see the Runtime Instrumentation `Testing Methodology`_ page for more 14*6338876bSHarrison Mutaidetails. 15*6338876bSHarrison Mutai 16*6338876bSHarrison MutaiProcedure 17*6338876bSHarrison Mutai--------- 18*6338876bSHarrison Mutai 19*6338876bSHarrison Mutai#. Build TFTF with runtime instrumentation enabled: 20*6338876bSHarrison Mutai 21*6338876bSHarrison Mutai .. code:: shell 22*6338876bSHarrison Mutai 23*6338876bSHarrison Mutai make CROSS_COMPILE=aarch64-none-elf- PLAT=n1sdp \ 24*6338876bSHarrison Mutai TESTS=runtime-instrumentation all 25*6338876bSHarrison Mutai 26*6338876bSHarrison Mutai#. Build TF-A with the following build options: 27*6338876bSHarrison Mutai 28*6338876bSHarrison Mutai .. code:: shell 29*6338876bSHarrison Mutai 30*6338876bSHarrison Mutai make CROSS_COMPILE=aarch64-none-elf- PLAT=n1sdp \ 31*6338876bSHarrison Mutai ENABLE_RUNTIME_INSTRUMENTATION=1 fiptool all 32*6338876bSHarrison Mutai 33*6338876bSHarrison Mutai#. Fetch the SCP firmware images: 34*6338876bSHarrison Mutai 35*6338876bSHarrison Mutai .. code:: shell 36*6338876bSHarrison Mutai 37*6338876bSHarrison Mutai curl --fail --connect-timeout 5 --retry 5 \ 38*6338876bSHarrison Mutai -sLS -o build/n1sdp/release/scp_rom.bin \ 39*6338876bSHarrison Mutai https://downloads.trustedfirmware.org/tf-a/css_scp_2.12.0/n1sdp/release/n1sdp-bl1.bin 40*6338876bSHarrison Mutai curl --fail --connect-timeout 5 \ 41*6338876bSHarrison Mutai --retry 5 -sLS -o build/n1sdp/release/scp_ram.bin \ 42*6338876bSHarrison Mutai https://downloads.trustedfirmware.org/tf-a/css_scp_2.12.0/n1sdp/release/n1sdp-bl2.bin 43*6338876bSHarrison Mutai 44*6338876bSHarrison Mutai#. Fetch the MCP firmware images: 45*6338876bSHarrison Mutai 46*6338876bSHarrison Mutai .. code:: shell 47*6338876bSHarrison Mutai 48*6338876bSHarrison Mutai curl --fail --connect-timeout 5 --retry 5 \ 49*6338876bSHarrison Mutai -sLS -o build/n1sdp/release/mcp_rom.bin \ 50*6338876bSHarrison Mutai https://downloads.trustedfirmware.org/tf-a/css_scp_2.12.0/n1sdp/release/n1sdp-mcp-bl1.bin 51*6338876bSHarrison Mutai curl --fail --connect-timeout 5 --retry 5 \ 52*6338876bSHarrison Mutai -sLS -o build/n1sdp/release/mcp_ram.bin \ 53*6338876bSHarrison Mutai https://downloads.trustedfirmware.org/tf-a/css_scp_2.12.0/n1sdp/release/n1sdp-mcp-bl2.bin 54*6338876bSHarrison Mutai 55*6338876bSHarrison Mutai#. Using the fiptool, create a new FIP package and append the SCP ram image onto 56*6338876bSHarrison Mutai it. 57*6338876bSHarrison Mutai 58*6338876bSHarrison Mutai .. code:: shell 59*6338876bSHarrison Mutai 60*6338876bSHarrison Mutai ./tools/fiptool/fiptool create --blob \ 61*6338876bSHarrison Mutai uuid=cfacc2c4-15e8-4668-82be-430a38fad705,file=build/n1sdp/release/bl1.bin \ 62*6338876bSHarrison Mutai --scp-fw build/n1sdp/release/scp_ram.bin build/n1sdp/release/scp_fw.bin 63*6338876bSHarrison Mutai 64*6338876bSHarrison Mutai#. Append the MCP image to the FIP. 65*6338876bSHarrison Mutai 66*6338876bSHarrison Mutai .. code:: shell 67*6338876bSHarrison Mutai 68*6338876bSHarrison Mutai ./tools/fiptool/fiptool create \ 69*6338876bSHarrison Mutai --blob uuid=54464222-a4cf-4bf8-b1b6-cee7dade539e,file=build/n1sdp/release/mcp_ram.bin \ 70*6338876bSHarrison Mutai build/n1sdp/release/mcp_fw.bin 71*6338876bSHarrison Mutai 72*6338876bSHarrison Mutai#. Then, add TFTF as the Non-Secure workload in the FIP image: 73*6338876bSHarrison Mutai 74*6338876bSHarrison Mutai .. code:: shell 75*6338876bSHarrison Mutai 76*6338876bSHarrison Mutai make CROSS_COMPILE=aarch64-none-elf- PLAT=n1sdp \ 77*6338876bSHarrison Mutai ENABLE_RUNTIME_INSTRUMENTATION=1 SCP_BL2=/dev/null \ 78*6338876bSHarrison Mutai BL33=<path/to/tftf.bin> fip 79*6338876bSHarrison Mutai 80*6338876bSHarrison Mutai#. Load the following images onto the development board: ``fip.bin``, 81*6338876bSHarrison Mutai ``scp_rom.bin``, ``scp_ram.bin``, ``mcp_rom.bin``, and ``mcp_ram.bin``. 82*6338876bSHarrison Mutai 83*6338876bSHarrison Mutai.. note:: 84*6338876bSHarrison Mutai 85*6338876bSHarrison Mutai These instructions presume you have a complete firmware stack. The N1SDP 86*6338876bSHarrison Mutai `user guide`_ provides a detailed explanation on how to get setup from 87*6338876bSHarrison Mutai scratch. 88*6338876bSHarrison Mutai 89*6338876bSHarrison MutaiResults 90*6338876bSHarrison Mutai------- 91*6338876bSHarrison Mutai 92*6338876bSHarrison Mutai``CPU_SUSPEND`` to deepest power level 93*6338876bSHarrison Mutai~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 94*6338876bSHarrison Mutai 95*6338876bSHarrison Mutai.. table:: ``CPU_SUSPEND`` latencies (µs) to deepest power level in 96*6338876bSHarrison Mutai parallel 97*6338876bSHarrison Mutai 98*6338876bSHarrison Mutai +---------+------+-----------+---------+-------------+ 99*6338876bSHarrison Mutai | Cluster | Core | Powerdown | Wakekup | Cache Flush | 100*6338876bSHarrison Mutai +=========+======+===========+=========+=============+ 101*6338876bSHarrison Mutai | 0 | 0 | 3.44 | 10.04 | 0.4 | 102*6338876bSHarrison Mutai +---------+------+-----------+---------+-------------+ 103*6338876bSHarrison Mutai | 0 | 1 | 4.98 | 12.72 | 0.16 | 104*6338876bSHarrison Mutai +---------+------+-----------+---------+-------------+ 105*6338876bSHarrison Mutai | 1 | 0 | 3.58 | 15.42 | 0.2 | 106*6338876bSHarrison Mutai +---------+------+-----------+---------+-------------+ 107*6338876bSHarrison Mutai | 1 | 1 | 5.24 | 17.78 | 0.18 | 108*6338876bSHarrison Mutai +---------+------+-----------+---------+-------------+ 109*6338876bSHarrison Mutai 110*6338876bSHarrison Mutai.. table:: ``CPU_SUSPEND`` latencies (µs) to deepest power level in 111*6338876bSHarrison Mutai serial 112*6338876bSHarrison Mutai 113*6338876bSHarrison Mutai +---------+------+-----------+---------+-------------+ 114*6338876bSHarrison Mutai | Cluster | Core | Powerdown | Wakekup | Cache Flush | 115*6338876bSHarrison Mutai +=========+======+===========+=========+=============+ 116*6338876bSHarrison Mutai | 0 | 0 | 1.82 | 9.98 | 0.32 | 117*6338876bSHarrison Mutai +---------+------+-----------+---------+-------------+ 118*6338876bSHarrison Mutai | 0 | 1 | 1.96 | 9.96 | 0.18 | 119*6338876bSHarrison Mutai +---------+------+-----------+---------+-------------+ 120*6338876bSHarrison Mutai | 1 | 0 | 2.0 | 10.5 | 0.16 | 121*6338876bSHarrison Mutai +---------+------+-----------+---------+-------------+ 122*6338876bSHarrison Mutai | 1 | 1 | 2.22 | 10.56 | 0.16 | 123*6338876bSHarrison Mutai +---------+------+-----------+---------+-------------+ 124*6338876bSHarrison Mutai 125*6338876bSHarrison Mutai``CPU_SUSPEND`` to power level 0 126*6338876bSHarrison Mutai~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 127*6338876bSHarrison Mutai 128*6338876bSHarrison Mutai.. table:: ``CPU_SUSPEND`` latencies (µs) to power level 0 in 129*6338876bSHarrison Mutai parallel 130*6338876bSHarrison Mutai 131*6338876bSHarrison Mutai +---------+------+-----------+---------+-------------+ 132*6338876bSHarrison Mutai | Cluster | Core | Powerdown | Wakekup | Cache Flush | 133*6338876bSHarrison Mutai +=========+======+===========+=========+=============+ 134*6338876bSHarrison Mutai | 0 | 0 | 1.52 | 11.84 | 0.34 | 135*6338876bSHarrison Mutai +---------+------+-----------+---------+-------------+ 136*6338876bSHarrison Mutai | 0 | 1 | 1.1 | 13.66 | 0.14 | 137*6338876bSHarrison Mutai +---------+------+-----------+---------+-------------+ 138*6338876bSHarrison Mutai | 1 | 0 | 2.18 | 9.48 | 0.18 | 139*6338876bSHarrison Mutai +---------+------+-----------+---------+-------------+ 140*6338876bSHarrison Mutai | 1 | 1 | 2.06 | 14.4 | 0.16 | 141*6338876bSHarrison Mutai +---------+------+-----------+---------+-------------+ 142*6338876bSHarrison Mutai 143*6338876bSHarrison Mutai.. table:: ``CPU_SUSPEND`` latencies (µs) to power level 0 in serial 144*6338876bSHarrison Mutai 145*6338876bSHarrison Mutai +---------+------+-----------+---------+-------------+ 146*6338876bSHarrison Mutai | Cluster | Core | Powerdown | Wakekup | Cache Flush | 147*6338876bSHarrison Mutai +=========+======+===========+=========+=============+ 148*6338876bSHarrison Mutai | 0 | 0 | 1.54 | 9.34 | 0.3 | 149*6338876bSHarrison Mutai +---------+------+-----------+---------+-------------+ 150*6338876bSHarrison Mutai | 0 | 1 | 1.88 | 9.5 | 0.16 | 151*6338876bSHarrison Mutai +---------+------+-----------+---------+-------------+ 152*6338876bSHarrison Mutai | 1 | 0 | 1.86 | 9.86 | 0.2 | 153*6338876bSHarrison Mutai +---------+------+-----------+---------+-------------+ 154*6338876bSHarrison Mutai | 1 | 1 | 2.02 | 9.64 | 0.18 | 155*6338876bSHarrison Mutai +---------+------+-----------+---------+-------------+ 156*6338876bSHarrison Mutai 157*6338876bSHarrison Mutai``CPU_OFF`` on all non-lead CPUs 158*6338876bSHarrison Mutai~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 159*6338876bSHarrison Mutai 160*6338876bSHarrison Mutai``CPU_OFF`` on all non-lead CPUs in sequence then, ``CPU_SUSPEND`` on the lead 161*6338876bSHarrison Mutaicore to the deepest power level. 162*6338876bSHarrison Mutai 163*6338876bSHarrison Mutai.. table:: ``CPU_OFF`` latencies (µs) on all non-lead CPUs 164*6338876bSHarrison Mutai 165*6338876bSHarrison Mutai +---------+------+-----------+---------+-------------+ 166*6338876bSHarrison Mutai | Cluster | Core | Powerdown | Wakekup | Cache Flush | 167*6338876bSHarrison Mutai +=========+======+===========+=========+=============+ 168*6338876bSHarrison Mutai | 0 | 0 | 1.86 | 9.88 | 0.32 | 169*6338876bSHarrison Mutai +---------+------+-----------+---------+-------------+ 170*6338876bSHarrison Mutai | 0 | 1 | 21.1 | 12.44 | 0.42 | 171*6338876bSHarrison Mutai +---------+------+-----------+---------+-------------+ 172*6338876bSHarrison Mutai | 1 | 0 | 21.22 | 13.2 | 0.32 | 173*6338876bSHarrison Mutai +---------+------+-----------+---------+-------------+ 174*6338876bSHarrison Mutai | 1 | 1 | 21.56 | 13.18 | 0.54 | 175*6338876bSHarrison Mutai +---------+------+-----------+---------+-------------+ 176*6338876bSHarrison Mutai 177*6338876bSHarrison Mutai``CPU_VERSION`` in parallel 178*6338876bSHarrison Mutai~~~~~~~~~~~~~~~~~~~~~~~~~~~ 179*6338876bSHarrison Mutai 180*6338876bSHarrison Mutai.. table:: ``CPU_VERSION`` latency (µs) in parallel on all cores 181*6338876bSHarrison Mutai 182*6338876bSHarrison Mutai +-------------+--------+--------------+ 183*6338876bSHarrison Mutai | Cluster | Core | Latency | 184*6338876bSHarrison Mutai +=============+========+==============+ 185*6338876bSHarrison Mutai | 0 | 0 | 0.08 | 186*6338876bSHarrison Mutai +-------------+--------+--------------+ 187*6338876bSHarrison Mutai | 0 | 1 | 0.22 | 188*6338876bSHarrison Mutai +-------------+--------+--------------+ 189*6338876bSHarrison Mutai | 1 | 0 | 0.28 | 190*6338876bSHarrison Mutai +-------------+--------+--------------+ 191*6338876bSHarrison Mutai | 1 | 1 | 0.26 | 192*6338876bSHarrison Mutai +-------------+--------+--------------+ 193*6338876bSHarrison Mutai 194*6338876bSHarrison Mutai-------------- 195*6338876bSHarrison Mutai 196*6338876bSHarrison Mutai*Copyright (c) 2023, Arm Limited. All rights reserved.* 197*6338876bSHarrison Mutai 198*6338876bSHarrison Mutai.. _v2.9-rc0-16-g666aec401: https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/refs/heads/v2.9-rc0-16-g666aec401 199*6338876bSHarrison Mutai.. _v2.9-rc0: https://review.trustedfirmware.org/plugins/gitiles/TF-A/tf-a-tests/+/refs/tags/v2.9-rc0 200*6338876bSHarrison Mutai.. _user guide: https://gitlab.arm.com/arm-reference-solutions/arm-reference-solutions-docs/-/blob/master/docs/n1sdp/user-guide.rst 201*6338876bSHarrison Mutai.. _Prebuilt Images: https://downloads.trustedfirmware.org/tf-a/css_scp_2.11.0/n1sdp/release/ 202*6338876bSHarrison Mutai.. _N1SDP: https://developer.arm.com/documentation/101489/latest 203*6338876bSHarrison Mutai.. _Testing Methodology: ../perf/psci-performance-methodology.html