NXP社区技术人员,大家好
在 i.MX8MP 平台上做系统稳定性测试时,遇到一个与 CAAM 相关的 warm reboot 小概率卡住问题,想请教是否有相关经验或建议的配置方式。
SoC:i.MX8MP
系统:Yocto Linux(init 启动方式)
内核版本:6.6.52
存储:eMMC
测试方式:系统启动后,通过脚本进行连续 reboot 压力测试
关闭 CAAM 相关功能时
连续 reboot 测试超过 500 次
系统均可正常启动
未出现卡死或启动异常
开启 CAAM 及 trusted/encrypted keys 相关功能后
reboot 测试中 约 1/100 ~ 1/200 的概率
系统在启动阶段卡住
串口停留在早期初始化日志
3、异常时可观察到类似日志
<1>内核卡住log
[ 2.159151] caam 30900000.crypto: caam pkc algorithms registered in /proc/crypto
[ 2.166628] caam 30900000.crypto: rng crypto API alg registered prng-caam
[ 2.173441] caam 30900000.crypto: registering rng-caam
[ 2.180670] Executing RNG SELF-TEST with wait
[ 2.259240] mmc2: new HS400 Enhanced strobe MMC card at address 0001
[ 2.266720] mmcblk2: mmc2:0001 DV4032 29.1 GiB
[ 2.274171] mmcblk2: p1 p2 p3
[ 2.279584] mmcblk2boot0: mmc2:0001 DV4032 4.00 MiB
[ 2.286069] mmcblk2boot1: mmc2:0001 DV4032 4.00 MiB
[ 2.293040] mmcblk2rpmb: mmc2:0001 DV4032 16.0 MiB, chardev (234:0)
[ 60.410412] imx-sdma 30bd0000.dma-controller: Direct firmware load for imx/sdma/sdma-imx7d.bin failed with error -2
[ 60.420874] imx-sdma 30bd0000.dma-controller: Falling back to sysfs fallback for: imx/sdma/sdma-imx7d.bin
[ 121.822422] imx-sdma 30bd0000.dma-controller: external firmware not found, using ROM firmware
[ 123.010384] random: crng init done<2> 在 reboot 过程中,也偶尔能看到:
caam_jr ... Device is busy<3> 相关内核配置
CONFIG_CRYPTO=y
CONFIG_CRYPTO_DEV_FSL_CAAM=y
CONFIG_CRYPTO_DEV_FSL_CAAM_JR=y
CONFIG_CRYPTO_DEV_FSL_CAAM_RNG_API=y
CONFIG_TRUSTED_KEYS=y
CONFIG_TRUSTED_KEYS_CAAM=y
CONFIG_ENCRYPTED_KEYS=y
CONFIG_DM_CRYPT=y关闭 CAAM(或 trusted/encrypted keys),warm reboot 稳定性恢复正常
你好
在 i.MX8MP 平台上,考虑到您提供的内核 6.6.52 和 CAAM RNG 自检卡住问题,这通常与残余 RNG 初始化状态、作业环权限锁定或 SDMA 固件加载超时引起的连锁反应有关。以下是针对该问题的分析建议和配置解决方案:
1。核心原因分析 CAAM 状态机未 RESET:热重启不会 RESET 所有 SoC 寄存器。如果 CAAM 在重启之前很忙(例如,caam_jr...设备在日志中处于繁忙状态),重启后 RNG 的硬件状态机可能处于不确定的中间状态。任务环权限问题:如果使用高度保证启动 (HAB) 或 OP-TEE,BootROM 或 ATF 可能会锁定某些任务环 (JR)。在热重启期间,如果未正确释放 JR 寄存器,Linux 内核将在执行 RNG 自测并等待阶段无限期等待,因为它无法获得硬件响应。
2.建议的优化和解决方案
答:内核配置和驱动程序调整禁用同步自检:尝试在 CONFIG_CRYPTO_DEV_FSL_CAAM_RNG_API 中禁用强制等待机制,或者在 U-启动 中预初始化 RNG。
集成 SDMA 固件:将 SDMA 固件编译到内核(CONFIG_EXTRA_FIRMWARE= " imx/sdma/sdma-imx7d.bin ")中,以避免在启动的早期阶段由于文件系统未安装而导致 60 秒的等待时间。这可以大大降低启动过程中的时间风险。
B. 修改 U-启动/ATF RESET 行为(解决方法)热RESET 在 i.MX8M 系列上经常会出现这种残留问题。
C 。DTS 设备树检查 caam_jr 节点的属性。在某些版本中,必须确保任务环分配与安全模式一致:
&crypto {
status = "okay";
};
&sec_jr0 {
status = "okay";
};
此致