1*91f16700SchasingluluRuntime Instrumentation Testing - N1SDP 2*91f16700Schasinglulu======================================= 3*91f16700Schasinglulu 4*91f16700SchasingluluFor this test we used the N1 System Development Platform (`N1SDP`_), which 5*91f16700Schasinglulucontains an SoC consisting of two dual-core Arm N1 clusters. 6*91f16700Schasinglulu 7*91f16700SchasingluluThe following source trees and binaries were used: 8*91f16700Schasinglulu 9*91f16700Schasinglulu- TF-A [`v2.9-rc0-16-g666aec401`_] 10*91f16700Schasinglulu- TFTF [`v2.9-rc0`_] 11*91f16700Schasinglulu- SCP/MCP `Prebuilt Images`_ 12*91f16700Schasinglulu 13*91f16700SchasingluluPlease see the Runtime Instrumentation :ref:`Testing Methodology 14*91f16700Schasinglulu<Runtime Instrumentation Methodology>` page for more details. 15*91f16700Schasinglulu 16*91f16700SchasingluluProcedure 17*91f16700Schasinglulu--------- 18*91f16700Schasinglulu 19*91f16700Schasinglulu#. Build TFTF with runtime instrumentation enabled: 20*91f16700Schasinglulu 21*91f16700Schasinglulu .. code:: shell 22*91f16700Schasinglulu 23*91f16700Schasinglulu make CROSS_COMPILE=aarch64-none-elf- PLAT=n1sdp \ 24*91f16700Schasinglulu TESTS=runtime-instrumentation all 25*91f16700Schasinglulu 26*91f16700Schasinglulu#. Build TF-A with the following build options: 27*91f16700Schasinglulu 28*91f16700Schasinglulu .. code:: shell 29*91f16700Schasinglulu 30*91f16700Schasinglulu make CROSS_COMPILE=aarch64-none-elf- PLAT=n1sdp \ 31*91f16700Schasinglulu ENABLE_RUNTIME_INSTRUMENTATION=1 fiptool all 32*91f16700Schasinglulu 33*91f16700Schasinglulu#. Fetch the SCP firmware images: 34*91f16700Schasinglulu 35*91f16700Schasinglulu .. code:: shell 36*91f16700Schasinglulu 37*91f16700Schasinglulu curl --fail --connect-timeout 5 --retry 5 \ 38*91f16700Schasinglulu -sLS -o build/n1sdp/release/scp_rom.bin \ 39*91f16700Schasinglulu https://downloads.trustedfirmware.org/tf-a/css_scp_2.12.0/n1sdp/release/n1sdp-bl1.bin 40*91f16700Schasinglulu curl --fail --connect-timeout 5 \ 41*91f16700Schasinglulu --retry 5 -sLS -o build/n1sdp/release/scp_ram.bin \ 42*91f16700Schasinglulu https://downloads.trustedfirmware.org/tf-a/css_scp_2.12.0/n1sdp/release/n1sdp-bl2.bin 43*91f16700Schasinglulu 44*91f16700Schasinglulu#. Fetch the MCP firmware images: 45*91f16700Schasinglulu 46*91f16700Schasinglulu .. code:: shell 47*91f16700Schasinglulu 48*91f16700Schasinglulu curl --fail --connect-timeout 5 --retry 5 \ 49*91f16700Schasinglulu -sLS -o build/n1sdp/release/mcp_rom.bin \ 50*91f16700Schasinglulu https://downloads.trustedfirmware.org/tf-a/css_scp_2.12.0/n1sdp/release/n1sdp-mcp-bl1.bin 51*91f16700Schasinglulu curl --fail --connect-timeout 5 --retry 5 \ 52*91f16700Schasinglulu -sLS -o build/n1sdp/release/mcp_ram.bin \ 53*91f16700Schasinglulu https://downloads.trustedfirmware.org/tf-a/css_scp_2.12.0/n1sdp/release/n1sdp-mcp-bl2.bin 54*91f16700Schasinglulu 55*91f16700Schasinglulu#. Using the fiptool, create a new FIP package and append the SCP ram image onto 56*91f16700Schasinglulu it. 57*91f16700Schasinglulu 58*91f16700Schasinglulu .. code:: shell 59*91f16700Schasinglulu 60*91f16700Schasinglulu ./tools/fiptool/fiptool create --blob \ 61*91f16700Schasinglulu uuid=cfacc2c4-15e8-4668-82be-430a38fad705,file=build/n1sdp/release/bl1.bin \ 62*91f16700Schasinglulu --scp-fw build/n1sdp/release/scp_ram.bin build/n1sdp/release/scp_fw.bin 63*91f16700Schasinglulu 64*91f16700Schasinglulu#. Append the MCP image to the FIP. 65*91f16700Schasinglulu 66*91f16700Schasinglulu .. code:: shell 67*91f16700Schasinglulu 68*91f16700Schasinglulu ./tools/fiptool/fiptool create \ 69*91f16700Schasinglulu --blob uuid=54464222-a4cf-4bf8-b1b6-cee7dade539e,file=build/n1sdp/release/mcp_ram.bin \ 70*91f16700Schasinglulu build/n1sdp/release/mcp_fw.bin 71*91f16700Schasinglulu 72*91f16700Schasinglulu#. Then, add TFTF as the Non-Secure workload in the FIP image: 73*91f16700Schasinglulu 74*91f16700Schasinglulu .. code:: shell 75*91f16700Schasinglulu 76*91f16700Schasinglulu make CROSS_COMPILE=aarch64-none-elf- PLAT=n1sdp \ 77*91f16700Schasinglulu ENABLE_RUNTIME_INSTRUMENTATION=1 SCP_BL2=/dev/null \ 78*91f16700Schasinglulu BL33=<path/to/tftf.bin> fip 79*91f16700Schasinglulu 80*91f16700Schasinglulu#. Load the following images onto the development board: ``fip.bin``, 81*91f16700Schasinglulu ``scp_rom.bin``, ``scp_ram.bin``, ``mcp_rom.bin``, and ``mcp_ram.bin``. 82*91f16700Schasinglulu 83*91f16700Schasinglulu.. note:: 84*91f16700Schasinglulu 85*91f16700Schasinglulu These instructions presume you have a complete firmware stack. The N1SDP 86*91f16700Schasinglulu `user guide`_ provides a detailed explanation on how to get setup from 87*91f16700Schasinglulu scratch. 88*91f16700Schasinglulu 89*91f16700SchasingluluResults 90*91f16700Schasinglulu------- 91*91f16700Schasinglulu 92*91f16700Schasinglulu``CPU_SUSPEND`` to deepest power level 93*91f16700Schasinglulu~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 94*91f16700Schasinglulu 95*91f16700Schasinglulu.. table:: ``CPU_SUSPEND`` latencies (µs) to deepest power level in 96*91f16700Schasinglulu parallel (v2.9) 97*91f16700Schasinglulu 98*91f16700Schasinglulu +---------+------+-----------+--------+-------------+ 99*91f16700Schasinglulu | Cluster | Core | Powerdown | Wakeup | Cache Flush | 100*91f16700Schasinglulu +---------+------+-----------+--------+-------------+ 101*91f16700Schasinglulu | 0 | 0 | 2.80 | 10.08 | 0.80 | 102*91f16700Schasinglulu +---------+------+-----------+--------+-------------+ 103*91f16700Schasinglulu | 0 | 0 | 4.14 | 15.92 | 0.16 | 104*91f16700Schasinglulu +---------+------+-----------+--------+-------------+ 105*91f16700Schasinglulu | 1 | 0 | 3.68 | 12.96 | 0.16 | 106*91f16700Schasinglulu +---------+------+-----------+--------+-------------+ 107*91f16700Schasinglulu | 1 | 0 | 3.36 | 18.58 | 0.18 | 108*91f16700Schasinglulu +---------+------+-----------+--------+-------------+ 109*91f16700Schasinglulu 110*91f16700Schasinglulu.. table:: ``CPU_SUSPEND`` latencies (µs) to deepest power level in 111*91f16700Schasinglulu parallel (v2.10) 112*91f16700Schasinglulu 113*91f16700Schasinglulu +---------+------+----------------+------------------+-----------------+ 114*91f16700Schasinglulu | Cluster | Core | Powerdown | Wakeup | Cache Flush | 115*91f16700Schasinglulu +---------+------+----------------+------------------+-----------------+ 116*91f16700Schasinglulu | 0 | 0 | 2.12 | 23.94 (+137.50%) | 0.42 (-47.50%) | 117*91f16700Schasinglulu +---------+------+----------------+------------------+-----------------+ 118*91f16700Schasinglulu | 0 | 0 | 3.52 | 42.08 (+164.32%) | 0.26 (+62.50%) | 119*91f16700Schasinglulu +---------+------+----------------+------------------+-----------------+ 120*91f16700Schasinglulu | 1 | 0 | 2.76 (-25.00%) | 38.3 (+195.52%) | 0.26 (+62.50%) | 121*91f16700Schasinglulu +---------+------+----------------+------------------+-----------------+ 122*91f16700Schasinglulu | 1 | 0 | 2.64 | 44.56 (+139.83%) | 0.36 (+100.00%) | 123*91f16700Schasinglulu +---------+------+----------------+------------------+-----------------+ 124*91f16700Schasinglulu 125*91f16700Schasinglulu.. table:: ``CPU_SUSPEND`` latencies (µs) to deepest power level in 126*91f16700Schasinglulu serial (v2.9) 127*91f16700Schasinglulu 128*91f16700Schasinglulu +---------+------+-----------+--------+-------------+ 129*91f16700Schasinglulu | Cluster | Core | Powerdown | Wakeup | Cache Flush | 130*91f16700Schasinglulu +---------+------+-----------+--------+-------------+ 131*91f16700Schasinglulu | 0 | 0 | 1.86 | 9.92 | 0.32 | 132*91f16700Schasinglulu +---------+------+-----------+--------+-------------+ 133*91f16700Schasinglulu | 0 | 0 | 2.70 | 10.48 | 0.36 | 134*91f16700Schasinglulu +---------+------+-----------+--------+-------------+ 135*91f16700Schasinglulu | 1 | 0 | 1.78 | 9.72 | 0.16 | 136*91f16700Schasinglulu +---------+------+-----------+--------+-------------+ 137*91f16700Schasinglulu | 1 | 0 | 1.94 | 10.44 | 0.16 | 138*91f16700Schasinglulu +---------+------+-----------+--------+-------------+ 139*91f16700Schasinglulu 140*91f16700Schasinglulu.. table:: ``CPU_SUSPEND`` latencies (µs) to deepest power level in 141*91f16700Schasinglulu serial (v2.10) 142*91f16700Schasinglulu 143*91f16700Schasinglulu +---------+------+-----------+------------------+----------------+ 144*91f16700Schasinglulu | Cluster | Core | Powerdown | Wakeup | Cache Flush | 145*91f16700Schasinglulu +---------+------+-----------+------------------+----------------+ 146*91f16700Schasinglulu | 0 | 0 | 1.74 | 23.7 (+138.91%) | 0.3 | 147*91f16700Schasinglulu +---------+------+-----------+------------------+----------------+ 148*91f16700Schasinglulu | 0 | 0 | 2.08 | 23.96 (+128.63%) | 0.26 (-27.78%) | 149*91f16700Schasinglulu +---------+------+-----------+------------------+----------------+ 150*91f16700Schasinglulu | 1 | 0 | 1.9 | 23.62 (+143.00%) | 0.28 (+75.00%) | 151*91f16700Schasinglulu +---------+------+-----------+------------------+----------------+ 152*91f16700Schasinglulu | 1 | 0 | 2.06 | 23.92 (+129.12%) | 0.26 (+62.50%) | 153*91f16700Schasinglulu +---------+------+-----------+------------------+----------------+ 154*91f16700Schasinglulu 155*91f16700Schasinglulu``CPU_SUSPEND`` to power level 0 156*91f16700Schasinglulu~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 157*91f16700Schasinglulu 158*91f16700Schasinglulu.. table:: ``CPU_SUSPEND`` latencies (µs) to power level 0 in 159*91f16700Schasinglulu parallel (v2.9) 160*91f16700Schasinglulu 161*91f16700Schasinglulu +---------------------------------------------------+ 162*91f16700Schasinglulu | test_rt_instr_cpu_susp_parallel | 163*91f16700Schasinglulu +---------+------+-----------+--------+-------------+ 164*91f16700Schasinglulu | Cluster | Core | Powerdown | Wakeup | Cache Flush | 165*91f16700Schasinglulu +---------+------+-----------+--------+-------------+ 166*91f16700Schasinglulu | 0 | 0 | 0.88 | 12.32 | 0.26 | 167*91f16700Schasinglulu +---------+------+-----------+--------+-------------+ 168*91f16700Schasinglulu | 0 | 0 | 2.12 | 14.62 | 0.26 | 169*91f16700Schasinglulu +---------+------+-----------+--------+-------------+ 170*91f16700Schasinglulu | 1 | 0 | 1.86 | 14.14 | 0.16 | 171*91f16700Schasinglulu +---------+------+-----------+--------+-------------+ 172*91f16700Schasinglulu | 1 | 0 | 1.92 | 9.44 | 0.18 | 173*91f16700Schasinglulu +---------+------+-----------+--------+-------------+ 174*91f16700Schasinglulu 175*91f16700Schasinglulu.. table:: ``CPU_SUSPEND`` latencies (µs) to power level 0 in 176*91f16700Schasinglulu parallel (v2.10) 177*91f16700Schasinglulu 178*91f16700Schasinglulu +---------+------+---------------+------------------+----------------+ 179*91f16700Schasinglulu | Cluster | Core | Powerdown | Wakeup | Cache Flush | 180*91f16700Schasinglulu +---------+------+---------------+------------------+----------------+ 181*91f16700Schasinglulu | 0 | 0 | 1.5 (+70.45%) | 35.02 (+184.25%) | 0.24 | 182*91f16700Schasinglulu +---------+------+---------------+------------------+----------------+ 183*91f16700Schasinglulu | 0 | 0 | 1.92 | 38.12 (+160.74%) | 0.28 | 184*91f16700Schasinglulu +---------+------+---------------+------------------+----------------+ 185*91f16700Schasinglulu | 1 | 0 | 1.88 | 38.1 (+169.45%) | 0.26 (+62.50%) | 186*91f16700Schasinglulu +---------+------+---------------+------------------+----------------+ 187*91f16700Schasinglulu | 1 | 0 | 2.04 | 23.1 (+144.70%) | 0.24 | 188*91f16700Schasinglulu +---------+------+---------------+------------------+----------------+ 189*91f16700Schasinglulu 190*91f16700Schasinglulu.. table:: ``CPU_SUSPEND`` latencies (µs) to power level 0 in serial (v2.9) 191*91f16700Schasinglulu 192*91f16700Schasinglulu +---------------------------------------------------+ 193*91f16700Schasinglulu | test_rt_instr_cpu_susp_serial | 194*91f16700Schasinglulu +---------+------+-----------+--------+-------------+ 195*91f16700Schasinglulu | Cluster | Core | Powerdown | Wakeup | Cache Flush | 196*91f16700Schasinglulu +---------+------+-----------+--------+-------------+ 197*91f16700Schasinglulu | 0 | 0 | 1.52 | 9.40 | 0.30 | 198*91f16700Schasinglulu +---------+------+-----------+--------+-------------+ 199*91f16700Schasinglulu | 0 | 0 | 1.92 | 9.80 | 0.18 | 200*91f16700Schasinglulu +---------+------+-----------+--------+-------------+ 201*91f16700Schasinglulu | 1 | 0 | 2.20 | 9.60 | 0.14 | 202*91f16700Schasinglulu +---------+------+-----------+--------+-------------+ 203*91f16700Schasinglulu | 1 | 0 | 1.82 | 9.78 | 0.18 | 204*91f16700Schasinglulu +---------+------+-----------+--------+-------------+ 205*91f16700Schasinglulu 206*91f16700Schasinglulu.. table:: ``CPU_SUSPEND`` latencies (µs) to power level 0 in serial (v2.10) 207*91f16700Schasinglulu 208*91f16700Schasinglulu +---------+------+-----------+------------------+-----------------+ 209*91f16700Schasinglulu | Cluster | Core | Powerdown | Wakeup | Cache Flush | 210*91f16700Schasinglulu +---------+------+-----------+------------------+-----------------+ 211*91f16700Schasinglulu | 0 | 0 | 1.52 | 23.08 (+145.53%) | 0.3 | 212*91f16700Schasinglulu +---------+------+-----------+------------------+-----------------+ 213*91f16700Schasinglulu | 0 | 0 | 1.98 | 23.68 (+141.63%) | 0.28 (+55.56%) | 214*91f16700Schasinglulu +---------+------+-----------+------------------+-----------------+ 215*91f16700Schasinglulu | 1 | 0 | 1.84 | 23.86 (+148.54%) | 0.28 (+100.00%) | 216*91f16700Schasinglulu +---------+------+-----------+------------------+-----------------+ 217*91f16700Schasinglulu | 1 | 0 | 1.98 | 23.68 (+142.13%) | 0.28 (+55.56%) | 218*91f16700Schasinglulu +---------+------+-----------+------------------+-----------------+ 219*91f16700Schasinglulu 220*91f16700Schasinglulu``CPU_OFF`` on all non-lead CPUs 221*91f16700Schasinglulu~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 222*91f16700Schasinglulu 223*91f16700Schasinglulu``CPU_OFF`` on all non-lead CPUs in sequence then, ``CPU_SUSPEND`` on the lead 224*91f16700Schasinglulucore to the deepest power level. 225*91f16700Schasinglulu 226*91f16700Schasinglulu.. table:: ``CPU_OFF`` latencies (µs) on all non-lead CPUs (v2.9) 227*91f16700Schasinglulu 228*91f16700Schasinglulu +---------+------+-----------+--------+-------------+ 229*91f16700Schasinglulu | Cluster | Core | Powerdown | Wakeup | Cache Flush | 230*91f16700Schasinglulu +---------+------+-----------+--------+-------------+ 231*91f16700Schasinglulu | 0 | 0 | 1.84 | 9.94 | 0.32 | 232*91f16700Schasinglulu +---------+------+-----------+--------+-------------+ 233*91f16700Schasinglulu | 0 | 0 | 14.20 | 13.10 | 0.50 | 234*91f16700Schasinglulu +---------+------+-----------+--------+-------------+ 235*91f16700Schasinglulu | 1 | 0 | 13.88 | 12.36 | 0.42 | 236*91f16700Schasinglulu +---------+------+-----------+--------+-------------+ 237*91f16700Schasinglulu | 1 | 0 | 14.40 | 13.26 | 0.52 | 238*91f16700Schasinglulu +---------+------+-----------+--------+-------------+ 239*91f16700Schasinglulu 240*91f16700Schasinglulu.. table:: ``CPU_OFF`` latencies (µs) on all non-lead CPUs (v2.10) 241*91f16700Schasinglulu 242*91f16700Schasinglulu +---------+------+-----------+------------------+----------------+ 243*91f16700Schasinglulu | Cluster | Core | Powerdown | Wakeup | Cache Flush | 244*91f16700Schasinglulu +---------+------+-----------+------------------+----------------+ 245*91f16700Schasinglulu | 0 | 0 | 1.78 | 23.7 (+138.43%) | 0.3 | 246*91f16700Schasinglulu +---------+------+-----------+------------------+----------------+ 247*91f16700Schasinglulu | 0 | 0 | 13.96 | 31.16 (+137.86%) | 0.34 (-32.00%) | 248*91f16700Schasinglulu +---------+------+-----------+------------------+----------------+ 249*91f16700Schasinglulu | 1 | 0 | 13.54 | 30.24 (+144.66%) | 0.26 (-38.10%) | 250*91f16700Schasinglulu +---------+------+-----------+------------------+----------------+ 251*91f16700Schasinglulu | 1 | 0 | 14.46 | 31.12 (+134.69%) | 0.7 (+34.62%) | 252*91f16700Schasinglulu +---------+------+-----------+------------------+----------------+ 253*91f16700Schasinglulu 254*91f16700Schasinglulu``CPU_VERSION`` in parallel 255*91f16700Schasinglulu~~~~~~~~~~~~~~~~~~~~~~~~~~~ 256*91f16700Schasinglulu 257*91f16700Schasinglulu.. table:: ``CPU_VERSION`` latency (µs) in parallel on all cores (v2.9) 258*91f16700Schasinglulu 259*91f16700Schasinglulu +------------------------------------+ 260*91f16700Schasinglulu | test_rt_instr_psci_version_parallel| 261*91f16700Schasinglulu +-------------+--------+-------------+ 262*91f16700Schasinglulu | Cluster | Core | Latency | 263*91f16700Schasinglulu +-------------+--------+-------------+ 264*91f16700Schasinglulu | 0 | 0 | 0.08 | 265*91f16700Schasinglulu +-------------+--------+-------------+ 266*91f16700Schasinglulu | 0 | 0 | 0.26 | 267*91f16700Schasinglulu +-------------+--------+-------------+ 268*91f16700Schasinglulu | 1 | 0 | 0.20 | 269*91f16700Schasinglulu +-------------+--------+-------------+ 270*91f16700Schasinglulu | 1 | 0 | 0.26 | 271*91f16700Schasinglulu +-------------+--------+-------------+ 272*91f16700Schasinglulu 273*91f16700Schasinglulu.. table:: ``CPU_VERSION`` latency (µs) in parallel on all cores (v2.10) 274*91f16700Schasinglulu 275*91f16700Schasinglulu +----------------------------------------------+ 276*91f16700Schasinglulu | test_rt_instr_psci_version_parallel (latest) | 277*91f16700Schasinglulu +-------------+--------+-----------------------+ 278*91f16700Schasinglulu | Cluster | Core | Latency | 279*91f16700Schasinglulu +-------------+--------+-----------------------+ 280*91f16700Schasinglulu | 0 | 0 | 0.14 (+75.00%) | 281*91f16700Schasinglulu +-------------+--------+-----------------------+ 282*91f16700Schasinglulu | 0 | 0 | 0.22 | 283*91f16700Schasinglulu +-------------+--------+-----------------------+ 284*91f16700Schasinglulu | 1 | 0 | 0.2 | 285*91f16700Schasinglulu +-------------+--------+-----------------------+ 286*91f16700Schasinglulu | 1 | 0 | 0.26 | 287*91f16700Schasinglulu +-------------+--------+-----------------------+ 288*91f16700Schasinglulu 289*91f16700Schasinglulu-------------- 290*91f16700Schasinglulu 291*91f16700Schasinglulu*Copyright (c) 2023, Arm Limited. All rights reserved.* 292*91f16700Schasinglulu 293*91f16700Schasinglulu.. _v2.9-rc0-16-g666aec401: https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/refs/heads/v2.9-rc0-16-g666aec401 294*91f16700Schasinglulu.. _v2.9-rc0: https://review.trustedfirmware.org/plugins/gitiles/TF-A/tf-a-tests/+/refs/tags/v2.9-rc0 295*91f16700Schasinglulu.. _user guide: https://gitlab.arm.com/arm-reference-solutions/arm-reference-solutions-docs/-/blob/master/docs/n1sdp/user-guide.rst 296*91f16700Schasinglulu.. _Prebuilt Images: https://downloads.trustedfirmware.org/tf-a/css_scp_2.11.0/n1sdp/release/ 297*91f16700Schasinglulu.. _N1SDP: https://developer.arm.com/documentation/101489/latest 298