Skip to content
View in the app

A better way to browse. Learn more.

Armbian Community Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

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

Featured Replies

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!

Solved by Werner

Hi

 

While I thiknk your approach should have worked, a quick search revealed that something similar is done for a different family. Perhaps try this way:https://github.com/armbian/build/blob/9aa6e1e29ec2d397bbe223bebaa93bd13ef79818/patch/kernel/archive/filogic-6.16/patches.armbian/0007-build.sh-add-additional-build-script-config-defconfi.patch#L1909 

  • Author

@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...

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.