Armadilloフォーラム

OP-TEE のTAで使われるメモリを増やしたい

mikan

2022年11月20日 17時34分

OP-TEEのメモリを多く使うTAのプログラムを実行したところ、以下のようなエラーが発生しました。

E/TC:? 0 alloc_pgt:147 10 page tables not available
E/LD:  populate_segments:829 sys_map_zi
E/TC:? 0 ldelf_init_with_ldelf:126 ldelf failed with res: 0xffff000c
Error: System ran out of resources. (error code 0xffff000c)

おそらくTAに割り当てるメモリが足りないということなので、imx-optee-core/core/arch/arm/plat-imx/conf.mk の CFG_TZDRAM_SIZE ?= 0x01c00000 を 0x1c000000に増やしてビルドしました。swuアップデートイメージを作成し、armadilloでアップデートをしましたが、以下のようなエラーがでました。

U-Boot SPL 2020.04-localv1.00 (Nov 19 2022 - 18:20:28 +0900)
DDRINFO: start DRAM init
DDRINFO: DRAM rate 4000MTS
DDRINFO:ddrphy calibration done
DDRINFO: ddrmix config done
Normal Boot
Trying to boot from BOOTROM
image offset 0x0, pagesize 0x200, ivt offset 0x0
NOTICE:  BL31: v2.4(release):
NOTICE:  BL31: Built : 12:16:12, Nov 11 2022
E/TC:0 0 Panic at core/arch/arm/mm/core_mmu.c:299 <carve_out_phys_mem>
E/TC:0 0 TEE load address @ 0x56000000
E/TC:0 0 Call stack:
E/TC:0 0  0x0000000056008cb0

TAに割り当てるためのメモリを増やすには何を変更すればいいのかわからず、質問させていただきました。
よろしくお願いいたします。

コメント

at_dominique.m…

2022年11月21日 12時58分

mikanさん

私は実際に試してませんので、とりあえず読んだことを報告します。

* https://optee.readthedocs.io/en/latest/faq/faq.html#q-whats-the-maximum…
32KB~1MBのメモリサイズの場合は、user_ta_header_defines.h の TA_DATA_SIZE の変更だけでよさそうです。

* https://github.com/OP-TEE/optee_os/issues/3109
FAQに1MB以上のサイズが必要な場合は「you also must adjust TA’s MMU L1 table accordingly」って書いてますが、説明がないためにもう少ししらべたらこの issue で PGT_CACHE_SIZE の変更でできるのではないかと思います。

optee に渡されてるメモリはすでに 0x200_0000 (32MB) ありますので、optee OSが使う2MBを引けば 30MB まではこの設定だけでできそうだと思います。

* 30MB 以上の場合は恐らく optee だけではなく、imx-atf でも変更が必要だと思います

申し訳ありませんが、この場合はもう少ししらべないと何ともいえませんので、mikanさんの目的を少し説明いただければ助かります。

よろしくお願いします。

> mikanさん
>
> 私は実際に試してませんので、とりあえず読んだことを報告します。
>
> * https://optee.readthedocs.io/en/latest/faq/faq.html#q-whats-the-maximum…
> 32KB~1MBのメモリサイズの場合は、user_ta_header_defines.h の TA_DATA_SIZE の変更だけでよさそうです。
>
> * https://github.com/OP-TEE/optee_os/issues/3109
> FAQに1MB以上のサイズが必要な場合は「you also must adjust TA’s MMU L1 table accordingly」って書いてますが、説明がないためにもう少ししらべたらこの issue で PGT_CACHE_SIZE の変更でできるのではないかと思います。
>
> optee に渡されてるメモリはすでに 0x200_0000 (32MB) ありますので、optee OSが使う2MBを引けば 30MB まではこの設定だけでできそうだと思います。
>
> * 30MB 以上の場合は恐らく optee だけではなく、imx-atf でも変更が必要だと思います
>
> 申し訳ありませんが、この場合はもう少ししらべないと何ともいえませんので、mikanさんの目的を少し説明いただければ助かります。
>
> よろしくお願いします。

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