[Jetson BSP] long init times for the BPMP

Hi all,

I was investigating the kernel boot time and process of a custom-made image for Jetson Orin Nano with the Jetson BSP with kernel 6.12. On average, the kernel boottime is around 12-13 seconds which, I would say, is quite long for an arm64 device with 6 cores.

Investigating the different steps and initcalls in the kernel boot process, I came across this:

---

Top 10 initcall durations:
 * tegra_pcie_dw_driver_init -> 4467701us
 * tegra_bpmp_driver_init -> 4193836us
 * clk_disable_unused -> 163179us
 * deferred_probe_initcall -> 120094us
 * tegra_p2u_driver_init -> 69377us
 * init_encrypted -> 60460us
 * optee_core_init -> 59314us
 * arm_smmu_driver_init -> 36234us
 * fusb301_i2c_driver_init -> 34756us
 * tegra_bpmp_thermal_driver_init -> 32982us

---

Top 10 probe durations:
 * bpmp -> 4193443us
 * 141e0000.pcie -> 2047080us
 * 14160000.pcie -> 2046793us
 * 140a0000.pcie -> 246941us
 * 3400000.mmc -> 226069us
 * 14100000.pcie -> 126565us
 * bpmp:thermal -> 61638us
 * firmware:optee -> 59066us
 * 1-0025 -> 52823us
 * 1-2 -> 36737us

I was already able to decrease the boottime by just disabling some unused pcie interfaces in the device tree, which eliminates the influence of tegra_pcie_dw_driver_init in the list above. However, to decrease the boot time even more, we need to handle with the bpmp and other initcalls (see above).

I’m not that familiar with the (workings of) BPMP, but I know it’s one of the most important and most needed components on the Jetson. Is there a way to decrease the high initcall duration (almost 4 seconds)? Does anyone experience the same?

I did take a small look in the code of the bpmp kernel module, specifically the init, and saw a busy wait-loop which just waits for a response of the bpmp. Does the bpmp really take 4 seconds to init everything and block the kernel from booting any further?

I would love to hear your opinions!

Hi,

Do you close the serial log to reduce the boot time?
If no, please refer to this topic

Thanks

Hi,
Yes, the Boot Time Optimization documentation has already been followed. I’m conducting research to see where the kernel boot time can further be reduced, other than just disabling some logging which doesn’t change the init call durations seen above.

Now, a simple raspberry pi with Ubuntu can boot quicker than the Jetson Orin Nano which is strange, but also not so strange considering the bpmp-explaination I gave above. Are there any developers on this (the Jetson BSP, or bpmp kernel driver in general) who can share their opinion on this matter?

Thanks!

Hi,

We don’t provide such optimization in bpmp driver.
Please try to make bpmp as a built in driver (recommend) or disable it directly (we not verify) in kernel config.

Thanks

So, the Jetson is still able to boot and work properly without the bpmp kernel driver present?

Hi,

Sorry for the mislead.
With internal team confirm, disable bpmp driver might corrupt the system.
Please do built in driver instead.

Thanks

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.