Boot Profiling Utility
Note:
The information in this document is specific to Tegra code-named Parker. For Tegra code-named Xavier specific information please consult your Support Engineer (SE).
This topic describes how to profile the amount of time it takes to boot the SDK on platforms that use NVIDIA® Tegra® devices.
To enable profile dumping (virtual machine instances only)
See “Using Hypervisor Debug Commands” in the Foundation SDK 5.1 Development Guide.
To enable profile dumping (native OSs only)
Applies to: These procedures apply only to native OS instances. It does not apply to Virtual Machines running on Hypervisor.
1. Compile the kernel.
2. Copy the following file to the target rootfs:
<top>/drive-oss-src/out-t186ref-linux/drivers/platform/tegra/tegra_bootloader_debug.ko
 
3. Flash the system with the rebuilt kernel image and reboot.
4. Enter the following command on the target:
modprobe tegra_bootloader_debug
 
5. View the contents of: /sys/kernel/debug/tegra_bootloader/profiler.
Contents are similar to the following:
[Profiling Point] [Time-stamp] [Time-taken]
MB1 entry 13435
BPMP init 14236 801
- profiler init 14445 209
Applied WARs 14590 145
Blockdev layer Init 14663 73
Boot-device Init 15276 613
Load mb1bct 20257 4981
Validate mb1bct 22219 1962
Boost clocks 22496 277
SCR programming 28768 6272
Boot-security (MISC & SCR) 28864 96
Page-allocator init 29226 362
Reserve DRAM memory 29346 120
Pre SDRAM BCT update 30758 1412
Aux. processor ASTs 31157 399
Pad Control Regs 31230 73
Pinmux & GPIO 33580 2350
Prod settings 34082 502
Generic Pmic Init 35340 1258
SOC Rails 35415 75
MemIO Rails 36427 1012
PLLM init 36465 38
SDRAM init (MC code) 41784 5319
NVDEC sticky bits 42201 417
Load fuse-bypas 43789 1588
Validate fuse-bypas 46619 2830
Fuse-bypass check 47012 393
TSC init 47368 356
Preboot carveout 47590 222
Load preboot 49312 1722
Validate preboot 59028 9716
Limit PB access to DMCE 59133 105
WP0-payload 59434 301
Setup WP0 payload 59483 49
WP0 triggered 59555 72
WP0 ACKed 59639 84
SRAM rails 63032 3393
CPU rails 64884 1852
Dmce-pkg carveout 65090 206
Load dmce-pkg 97990 32900
Validate dmce-pkg 118258 20268
Limit access to DMCE 118553 295
WP1-payload 118765 212
Setup WP1 payload 118812 47
WP1 triggered 118882 70
AO scratch BR cmds 119006 124
Load mb2 121120 2114
Validate mb2 124131 3011
GPU rail 124274 143
Remove DMA access/lock 124465 191
WP1 ACKed 142736 18271
DMCE carveout 142981 245
- move profile data 143769 788
MB2 params 143843 74
Clear MTS keyslot 144451 608
BPMP downgrade 144552 101
Fuse mirroring 144630 78
BTCM Trampoline copy 144819 189
MB2 entry 144935
Debug Init 146140 1205
Heap Init 146350 210
Relocated BCTs/KeyStore 155033 8683
Blockdev Init 155166 133
Bootdev Init 156126 960
Partition Manager Init 170448 14322
Load cpu-bootloader 189553 19105
Validate cpu-bootloader 211715 22162
Load bpmp-fw 281388 69673
Validate bpmp-fw 372686 91298
Load bpmp-fw-dtb 383038 10352
Validate bpmp-fw-dtb 392335 9297
Copy BTCM section 393297 962
Load secure-os 410053 16756
Validate secure-os 430420 20367
Secure-OS init 447792 17372
MB2 carveouts 449210 1418
Page allocator freeup 449795 585
Page allocator mem probe 449905 110
MB2 clear firmware keyslots 452312 2407
WP2 assert 455306 2994
EL3 entry 585386
EL2 entry 585655 269
Cache Init 588214 2559
MMU Init 588931 717
BPMP Init 588981 50
Driver Init 589118 137
DT Init 590432 1314
Kernel Decomp And Load 1510665 920233
Ramdisk Load 1543095 32430
KernelEnv Setup 1575867 32772
Kernel Handoff 1576507 640
The output includes the profiling point, the timestamp of each event, and the amount of time taken for each event, where applicable. The MB1Entry, MB2Entry, EL3Entry do not have third-column values because they are starting points for each binary. The third-column value for EL2-Entry indicates the time taken by software running in EL3 mode to come to EL2 mode.