您好,NXP,
我们正在构建基于LLDP的LX2160A安全启动系统,并验证MP密钥功能。
在我们的 LX2160A 板上安装并启动安全启动系统没有问题,因此我们认为 ITS 位值为 1,但在执行“mp_app -p”命令后出现“设备未初始化”错误。
截圖 2026-07-22 15.50.34.png
您有什么建议可以帮我检查这个问题吗?
谢谢!
杰弗里
客户是否遵循了 LLDP 文档第 6.4.4 节?
screenshot-1.png
例如
请让客户在运行“mp_app”时启用内核 printk,并分享他们的日志。
echo 8 > /proc/sys/kernel/printk
dmesg
王一平你好,
是的,我们在执行 mp_app 命令之前启动 tee-supplicant 并加载 securekeydev.ko。
截圖 2026-07-24 14.22.00.png
以下是 dmesg 信息。
截圖 2026-07-24 14.22.27.png
杰弗里
请参考AE团队的以下更新。
从客户的反馈中,我看到“错误:caam_submit_mp_get_pub_key_op:submit_job”,这表明向 SEC 发送作业失败。
请客户在其Linux系统中执行以下测试:
1. 运行 xtest,看看有没有错误报告?
2. 请运行“modprobe caam”为LX2160安装caam模块,如果安装模块失败,请更新与您的内核版本兼容的模块。
3.如果也报告错误,请应用以下补丁检查 高效密码学标准(SEC) 返回结果以确定错误类型,并分享其完整日志。
diff --git a/securekeydev/securekey_caam.cb/securekeydev/securekey_caam.c索引 b82acd3..d657742 100644 --- a/securekeydev/securekey_caam.c+++ b/securekeydev/securekey_caam.c@@ -59,12 +59,14 @@ static int submit_job(struct device *jrdev, uint32_t *desc) /* 调用 caam_jr_enqueue 函数,将作业描述符头加入队列。 */ ret = caam_jr_enqueue(jrdev, desc, caam_op_done, NULL); + pr_err( "caam_jr_enqueue ret (%d)\n" , ret); 如果(!ret) wait_for_completion_interruptible(&comp); 别的 返回ret; ret = job_comp_status; + pr_err( "job_comp_status 返回 (%d)\n" , ret); 返回ret; }
此致,
关于您的评论,
1. 运行 xtest,看看有没有错误报告?
请参考附件中的xtest日志。
2. 请运行“modprobe caam”为 LX2160 安装 caam 模块,如果安装模块失败,请更新与您的内核版本兼容的模块。
我们已经在内核中构建了 caam 模块。
3.如果也报告错误,请应用以下补丁检查 高效密码学标准(SEC) 返回结果以确定错误类型,并分享其完整日志。
关于 caam 和 mp_app 的 dmesg 返回如下信息。
截圖 2026-07-29 16.03.42.png
截圖 2026-07-29 15.53.07.png
1. 请确保 caam job ring 在 Linux 内核中运行良好,请运行以下命令检查 caam jr 中断是否增加。
root@localhost:~# cat /proc/interrupts | grep jr
378: 41 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 GICv3 172 Level 8010000.jr
379: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 GICv3 173 Level 8020000.jr
380: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 GICv3 174 级 fsl-jr0
root@localhost:~#
root@localhost:~#
root@localhost:~# dd if =/dev/hwrng of=/tmp/random.dat bs=1 count=16
16+0 条记录
16+0 条记录
复制了 16 字节,耗时 0.000420759 秒,速度为 38.0 kB/秒
root@localhost:~#
root@localhost:~#
root@localhost:~# cat /proc/interrupts | grep jr
378: 42 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 GICv3 172 Level 8010000.jr
379: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 GICv3 173 Level 8020000.jr
380: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 GICv3 174 级 fsl-jr0
root@localhost:~#
2. 在 submit_job() 中,被调用的函数 caam_jr_enqueue() 在成功时返回 (-EINPROGRESS = -115)。请尝试应用以下补丁来检查 caam enqueue 返回结果。
https://github.com/nxp-qoriq/linux/commit/4d370a1036958d7df9f1492c345b4984a4eba7f6#diff-8acc41c53445...
diff --git a/securekeydev/securekey_caam.cb/securekeydev/securekey_caam.c索引 b82acd3..808e8da 100644 --- a/securekeydev/securekey_caam.c+++ b/securekeydev/securekey_caam.c@@ -59,12 +59,14 @@ static int submit_job(struct 设备 *jrdev, uint32_t *desc) /* 调用 caam_jr_enqueue 函数,将作业描述符头加入队列。 */ ret = caam_jr_enqueue(jrdev, desc, caam_op_done, NULL); -如果(!ret) + pr_err( "caam_jr_enqueue ret (%d)\n" , ret); +如果(ret == -EINPROGRESS) wait_for_completion_interruptible(&comp); 别的 返回ret; ret = job_comp_status; + pr_err( "job_comp_status 返回 (%d)\n" , ret); 返回ret; }
1. 请确保 caam job ring 在 Linux 内核中运行良好,请运行以下命令检查 caam jr 中断是否增加。
答:是的
截圖 2026-07-31 17.33.06.png
2. 在 submit_job() 中,被调用的函数 caam_jr_enqueue() 在成功时返回 (-EINPROGRESS = -115)。请尝试应用以下补丁来检查 caam enqueue 返回结果。
答:我们的系统使用 Linux 内核 v5.15.71-rt51,似乎不需要进行任何额外的补丁。
3. 此外,运行 mp_app -p 命令后,进程在 wait_for_completion_interruptible() 处停止,目前仍在等待返回。
截圖 2026-07-31 17.33.36.png
请仔细检查您的内核源代码。
caam_jr_enqueue() 在此分支中具有更新返回值。
https://github.com/nxp-qoriq/linux/blob/95448dd0dc9b621ae027cbefedaaa7c3d0d3ad2d/drivers/crypto/caam...
请参考AE团队的以下更新。
|
1. 团队确认此功能只能在 LS1046A 板上执行,如 LSDK 文档所述。 有调查结果后会更新。 |
请参考AE团队的以下更新。
客户可以通过 u-boot 'md' 命令检查 ITS 位是否已启用。
md 0x1e80200
客户可以共享caam_jr_enqueue()函数源代码吗?源代码路径是“linux/drivers/crypto/caam/jr.c”。
或者他们可以分享他们的源代码链接。
我们检查了所有驱动程序/加密/caam 源文件,它们都相同。
我们通过如下的 uboot 脚本启用 ITS。
mw.l 0x1e80200 0x4
mw.l 0x1e80020 0x2
你认为智能交通系统(ITS)的激活过程是否未完成?
注册值请参见下方,jr.c 源代码请参见附件。
list_register.png
我们已经按照您之前提到的方法修补了 submit_job(),结果是在运行“mp_app -p”后,程序会在“wait_for_completion_interruptible”处停止。
根据 LSDK 和 LLDP 用户手册中的描述,安全应用程序在 LS1046ARDB 平台上已得到充分验证,我们在 LS1046 板上使用 LSDK 验证了此问题,并且它运行正常。
lx1046_mp_key.png
使用 LSDK 验证我们的另一个 LX2160 产品,它也会在“wait_for_completion_interruptible”处停止。
lx2160_lsdk.png
无论使用 LSDK 还是 LLDP,我们在 LX2160A 平台上都会遇到一些问题。
NXP是否对LX2160A平台进行了网络安全应用验证?
它的某个部分被炸毁了。
检查你的 jr.c 源代码,你需要为 submit_job 应用补丁。
diff --git a/securekeydev/securekey_caam.cb/securekeydev/securekey_caam.c索引 b82acd3..808e8da 100644 --- a/securekeydev/securekey_caam.c+++ b/securekeydev/securekey_caam.c@@ -59,12 +59,14 @@ static int submit_job(struct 设备 *jrdev, uint32_t *desc) /* 调用 caam_jr_enqueue 函数,将作业描述符头加入队列。 */ ret = caam_jr_enqueue(jrdev, desc, caam_op_done, NULL); -如果(!ret) + pr_err( "caam_jr_enqueue ret (%d)\n" , ret); +如果(ret == -EINPROGRESS) wait_for_completion_interruptible(&comp); 别的 返回ret; ret = job_comp_status; + pr_err( "job_comp_status 返回 (%d)\n" , ret); 返回ret; }