2397586_ja-JP

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

2397586_ja-JP

2397586_ja-JP

LX2160AでMPキーの取得に失敗しました

こんにちは、NXPさん。

LLDP LX2160Aベースの安全なブートシステムを構築し、MPキーの機能検証も行っています。

LX2160Aボードのセキュアブートシステムのインストールと起動は問題なく、ITSのビット値は1だと考えていますが、「mp_app -p」コマンドを実行すると「Device is not initiated」エラーが出ます。

截圖 2026-07-22 15.50.34.png

この問題について確認するためのアドバイスはありますか?


ありがとうございました。

ジェフリー


Re: LX2160A get MP key failed

顧客はLLDPの文書6.4.4項を守りましたか?

 

screenshot-1.png


のような

  1. Linuxプロンプトからtee-supplicant & commandを実行してください。
  2. Linuxカーネルのバージョンによっては、右フォルダからinsmod securekeydev.koを使用していました

また、顧客が「mp_app」を実行する際にカーネルPrintkを有効にしてもらい、ログを共有してください。

エコー 8 > /proc/sys/kernel/printk

dmesg

Re: LX2160A get MP key failed

こんにちは、イーピンワンさん

はい、 mp_appコマンドを実行する前に、tee-supplicantを起動してsecurekeydev.koをロードします。

截圖 2026-07-24 14.22.00.png





















以下はdmesgの情報です。

截圖 2026-07-24 14.22.27.png


Jeffrey

Re: LX2160A get MP key failed

AEチームからの以下のアップデートをご参照ください。

お客様のフィードバックによると、「error: caam_submit_mp_get_pub_key_op: submit_job」と表示され、SECへの送信失敗を示しています。

お客様に以下のLinuxシステムでのテストをお願いしてください。
1. xtestを実行してエラーレポートを確認しますか?
2. LX2160用のCAAMモジュールをインストールするには「modprobe 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);
 if (!ret)
 wait_for_comption_interruptible(&comp);
それ以外
return ret;

 ret = job_comp_status;
 + pr_err( "job_comp_status ret (%d)\n" , ret);
 return ret;
 }

よろしくお願いいたします。

Re: LX2160A get MP key failed

あなたのコメントについてですが、

1. xtestを実行して、エラーレポートを確認しますか?

添付のxtestログを参照してください。


2. LX2160 用の caam モジュールをインストールするには、「modprobe caam」を実行してください。モジュールのインストールに失敗した場合は、カーネル バージョンと互換性のあるモジュールを更新してください。

既にカーネルにcaamモジュールを組み込みました。


3.エラーを報告する場合は、以下のパッチを適用してSECの戻り結果を確認し、エラーの種類を特定して、完全なログを共有してください。

caamとmp_appに関するdmesgの出力は以下のとおりです。

截圖 2026-07-29 16.03.42.png截圖 2026-07-29 15.53.07.png

 
よろしくお願いします。
Re: LX2160A get MP key failed

1. Linuxカーネルでcaamジョブリングが正常に動作しているか確認してください。下のコマンドを実行して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 レベル 8010000.jr
 379: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 GICv3 173 レベル 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 レベル 8010000.jr
 379: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 GICv3 173 レベル 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 device *jrdev, uint32_t *desc)

 /* caam_jr_enqueue 関数を呼び出して、ジョブ記述子のヘッダーをキュー追加します。*/
 ret = caam_jr_enqueue(jrdev, desc, caam_op_done, NULL);
 - if (!ret)
 + pr_err( "caam_jr_enqueue ret (%d)\n" , ret);
 + if (ret == -EINPROGRESS)
 wait_for_comption_interruptible(&comp);
それ以外
return ret;

 ret = job_comp_status;
 + pr_err( "job_comp_status ret (%d)\n" , ret);
 return ret;
 }
Re: LX2160A get MP key failed

1. Linuxカーネルでcaamジョブリングが正常に動作しているか確認してください。下のコマンドを実行して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. さらに、-pコマンドmp_app実行後、プロセスはwait_for_completion_interruptible()で停止し、SO戻りを待っています。


截圖 2026-07-31 17.33.36.png 




Re: LX2160A get MP key failed

カーネルのソースコードをもう一度確認してください。
caam_jr_enqueue() はこの分岐で戻り値を更新します。
https://github.com/nxp-qoriq/linux/blob/95448dd0dc9b621ae027cbefedaaa7c3d0d3ad2d/drivers/crypto/caam...

Re: LX2160A get MP key failed

AEチームからの以下のアップデートをご参照ください。

1. チームは、LSDKドキュメントに記載されているとおり、この機能はLS1046Aボードでのみ実行可能であることを確認しました。
2. 顧客のLX2160およびLS1046のランニングログから、いずれもLSDK20.04で動作しています。カーネルバージョン4.19では、caam_jr_enqueue()はこのバージョンで0を返すため、私のパッチを適用する必要はありません。
https://github.com/nxp-qoriq/linux/blob/94e0473db2feed7ed6b84848c8d227faf72297c2/drivers/crypto/caam...
3. 私の方でもさらにテストが必要です。

調査結果が出次第、更新します。

Re: LX2160A get MP key failed

すべてのドライバ、暗号通貨、CAAMのソースファイルを確認しましたが、同じです。

以下のようにubootスクリプトを使用してITSを有効にします。

mw.l 0x1e80200 0x4

mw.l 0x1e80020 0x2


ITSの有効化プロセスは不完全だと思いますか?



Re: LX2160A get MP key failed

AEチームからの以下のアップデートをご参照ください。

お客様はu-bootの「md」コマンドでITSビットが有効かどうかを確認できます。
md 0x1e80200

顧客はcaam_jr_enqueue()関数のソースコードを共有できますか?ソースコードパスは「linux/ドライバ/crypto/caam/jr.c」です。
あるいはソースコードのリンクを共有してもらえます。

Re: LX2160A get MP key failed

レジスタ値については下記を参照してください。jr.c ソースコードについては添付ファイルを参照してください。

list_register.png

Re: LX2160A get MP key failed

ITSの持ち分は爆発した。
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 device *jrdev, uint32_t *desc)

 /* caam_jr_enqueue 関数を呼び出して、ジョブ記述子のヘッダーをキュー追加します。*/
 ret = caam_jr_enqueue(jrdev, desc, caam_op_done, NULL);
 - if (!ret)
 + pr_err( "caam_jr_enqueue ret (%d)\n" , ret);
 + if (ret == -EINPROGRESS)
 wait_for_comption_interruptible(&comp);
それ以外
return ret;

 ret = job_comp_status;
 + pr_err( "job_comp_status ret (%d)\n" , ret);
 return ret;
 }
Re: LX2160A get MP key failed

ご指摘のとおりsubmit_job()にパッチを適用しましたが、結果として「mp_app -p」を実行した後、「wait_for_completion_interruptible」で停止します。

LSDKとLLDPのユーザーマニュアルの説明によると、セキュリティアプリケーション はプラットフォームLS1046ARDB上で完全に検証・検証されており、LS1046ボードでLSDKでこの問題を確認しており、動作しています。

lx1046_mp_key.png

別のLX2160製品もLSDK付きで確認すると、こちらも「wait_for_completion_interruptible」で止まっています。

lx2160_lsdk.png

LSDKを使うにせよLLDPを使うにせよ、プラットフォームLX2160A何らかの問題が生じます。

NXPはLX2160Aプラットフォーム上でセキュリティアプリケーションの検証を行いましたか?

Tags (1)
No ratings
Version history
Last update:
Thursday
Updated by: