Jump to content

[Help] Rock 5B (Vendor/Noble) - Unable to set CONFIG_ARM64_VA_BITS=39, config gets overwritten


Recommended Posts

Posted

Description:

Hello everyone, I am encountering an issue where kernel configuration changes do not take effect when building an image for the Rock 5B using the Armbian Build system.

 

Environment:

Board: Rock 5B

Kernel: Vendor

Release: Noble

Build Mode: Mini

Build Tag/Branch: v25.11

 

Specific Issue:

To ensure compatibility with Redroid containers, I need to change the kernel's CONFIG_ARM64_VA_BITS from the default 48-bit to 39-bit.

 

What I have tried:

I have attempted the following three methods, but none have worked:

Ran the kernel configuration tool to change CONFIG_ARM64_VA_BITS, then copied the generated .config to userpatches/linux-rk35xx-vendor.config.

Took the default config/kernel/linux-rk35xx-vendor.config, manually modified/added CONFIG_ARM64_VA_BITS=39 and CONFIG_ARM64_VA_BITS_39=y, and copied it to userpatches/linux-rk35xx-vendor.config.

Created a kernel source patch in userpatches targeting arch/arm64/configs/rockchip_linux_defconfig and arch/arm64/configs/defconfig to force CONFIG_ARM64_VA_BITS=39 and CONFIG_ARM64_VA_BITS_39=y.

 

Result:

Regardless of the method used, the final Armbian-generated kernel remains at VA_BITS=48. It seems my configuration changes are being overwritten or ignored during the build process.

 

Request:

Is there specific logic in the Vendor/RK3588 build configuration that forcibly locks VA_BITS? What is the correct way to modify this parameter for this specific board/kernel combination?

Thanks for your help!

Posted

@Werner

 

I re-checked all my patches and custom configurations and performed a clean rebuild. I found clear evidence in the logs that `CONFIG_ARM64_VA_BITS` is being explicitly overwritten during the build process:

 

### kernel_config_initialize.log 
--> (9) INFO: Configuring kernel [ linux-rk35xx-vendor ]
--> (9) INFO: Using kernel config provided by user [ userpatches/linux-rk35xx-vendor.config ]
--> (9) COMMAND: cp -pv /armbian/userpatches/linux-rk35xx-vendor.config /armbian/cache/sources/linux-kernel-worktree/6.1__rk35xx__arm64/.config
   '/armbian/userpatches/linux-rk35xx-vendor.config' -> '/armbian/cache/sources/linux-kernel-worktree/6.1__rk35xx__arm64/.config'
--> (9) INFO: Considering available RAM for BTF build [ 13082 MiB ]
--> (9) INFO: Enabling eBPF and BTF info [ for fully BTF & CO-RE enabled kernel ]
--> (9) COMMAND: ./scripts/config --disable SECURITY_LOCKDOWN_LSM
...
--> (10) COMMAND: ./scripts/config --enable ARM64_VA_BITS_48
...
--> (12) COMMAND: ./scripts/config --set-val ARM64_PA_BITS 48
--> (12) COMMAND: env -i CCACHE_BASEDIR="/armbian/cache/sources/linux-kernel-worktree/6.1__rk35xx__arm64" CCACHE_TEMPDIR="/armbian/.tmp/work-907ace63-1eb7-43dc-ac17-503d457007a8/ccache_tmp" PATH="/usr/bin:/armbian/cache/pip/base/bin:/armbian/.tmp/work-907ace63-1eb7-43dc-ac17-503d457007a8/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" PYTHONPATH="/armbian/cache/pip/base/lib/python3.12/site-packages:" DPKG_COLORS=always XZ_OPT='--threads=0' TERM='xterm-256color' COLUMNS='248' COLORFGBG='' CCACHE_DIR='/armbian/cache/ccache' make '-j6' 'ARCH=arm64' 'LOCALVERSION=-vendor-rk35xx' 'CROSS_COMPILE=  aarch64-linux-gnu-' 'KCFLAGS=-fdiagnostics-color=always -Wno-error=misleading-indentation  ' 'SOURCE_DATE_EPOCH=1768563629' 'KBUILD_BUILD_TIMESTAMP=Fri Jan 16 11:40:29 UTC 2026' 'KBUILD_BUILD_USER=build' 'KBUILD_BUILD_HOST=armbian' 'KGZIP=pigz' 'KBZIP2=pbzip2' olddefconfig
     HOSTCC  scripts/basic/fixdep
     LEX     scripts/kconfig/lexer.lex.c
     YACC    scripts/kconfig/parser.tab.[ch]
     HOSTCC  scripts/kconfig/lexer.lex.o
     HOSTCC  scripts/kconfig/parser.tab.o
     HOSTLD  scripts/kconfig/conf
   .config:2755:warning: override: reassigning to symbol ARM64_VA_BITS_39
   .config:2789:warning: override: ARM64_VA_BITS_48 changes choice state
   #
   # configuration written to .config
   #
--> (14) INFO: Kernel configuration [ linux-rk35xx-vendor ]

 

I traced this behavior to the following function in `lib/functions/compilation/armbian-kernel.sh`:
 

function armbian_kernel_config__force_pa_va_48_bits_on_arm64() {

    if [[ "${ARCH}" == "arm64" ]]; then

        opts_y+=("ARM64_VA_BITS_48")

        opts_val["ARM64_PA_BITS"]="48"

    fi

}

 

I manually modified this function (changing `48` to `39`), and the resulting kernel deb finally compiled with `CONFIG_ARM64_VA_BITS=39` successfully.

 

Obviously, modifying the build framework source is not the proper solution.

 

Is this enforcement intended for all arm64 builds? Is there a standard way to bypass this function?

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...

Important Information

Terms of Use - Privacy Policy - Guidelines