====== 1GiB メモリ全領域を使用する(1GiB DRAM 搭載機) ======
1GiB DRAM 搭載時、**CONFIG_HIGHMEM** を有効にすると問題が発生する可能性が否定できないため、v5.1.1 ファームウェアから Bootloader によりメモリサイズを **768MiB** に制限しています。
* [[https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1034756/am3356-linux-kernel-with-1gb-memory-crashes|[参考]
AM3356: Linux Kernel with 1GB memory crashes - TI E2E Forum]] (2021/09/09 に起票されています)
現時点(2022/02/15)では回答が記載されておらず、スレッドもロックされて結論も出ていないために上記制限をいれました。
Forum を起票した方が書いている下記変更で問題が回避されると仮定した場合、1GiB 全領域を使用するためには下記対応が必要となります。
When we change the kernel config:
CONFIG_VMSPLIT_3G =>> CONFIG_VMSPLIT_3G_OPT(disable highmem and use entire 1G space for direct memory)
or
CONFIG_HIGHPTE = n (disable the 2nd level page table from highmem)
The issue seems solved.
\\
上記 **CONFIG_VMSPLIT_3G** を有効にする変更を現在テスト中で、問題がないと確認ができ次第適用する予定です。
\\
===== 変更方法 =====
==== Bootloader の入れ替え ====
ファームウェアの barebox.bin.img を、v5.1.0 までに入っていたものに入れ替えます。
^ File ^ Stat ^ SHA1SUM ^ Note |
|{{ :mae3xx_tips:use_1gib_memory_without_highmem:barebox.bin.img |}}|2022/02/15 17:27 383.5 KB|d31d6aff5b48d62eb3682b4732fd7532662ea231|通常版|
|{{ :mae3xx_tips:use_1gib_memory_without_highmem:barebox_nojre.bin.img |}}|2022/02/15 17:27 383.5 KB|6b3f6cb15789b9dcbcbabec587a8a6f64f017dff|JRE 領域縮小版|
\\
# ls -l
-rwxr-xr-x 1 root root 392672 2月 15 17:30 barebox.bin.img
-rwxr-xr-x 1 root root 392704 2月 15 17:30 barebox_nojre.bin.img
# zip -j mae3xx_focal_v5_1_1.img barebox*
updating: barebox_nojre.bin.img (deflated 36%)
updating: barebox.bin.img (deflated 36%)
\\
==== Kernel Config の変更 ====
フォーラムにあるとおり、**CONFIG_VMSPLIT_3G_OPT** に変更します。
user1@pc:~/src/linux-kernel-wireguard-ti-4.19.y$ make CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
Kernel Features -> Memory split -> 3G/1G user/kernel split (for full 1G low memory)
{{:mae3xx_tips:use_1gib_memory_without_highmem:1gib_full_config_00.png|}}
\\
※ Github に置いてあるリポジトリには、**plum_MA_NOHIGHMEM_defconfig** という config を追加してあるので、下記のとおり config を作成する方法もあります。
$ make CROSS_COMPILE=arm-linux-gnueabihf- plum_MA_NOHIGHMEM_defconfig
#
# configuration written to .config
#
\\
==== ファームウェアのビルド ====
[[mae3xx_devel:build_firmware:start|]] の方法で、ファームウェアのビルドを行います。
\\