The rk3399-rock-pi-4b device fails to mount the root filesystem over
NFS when the kernel is built with 64K page size.
CONFIG_ARM64_64K_PAGES=y
This regression was first observed with the Linux next-20250717 tag
and continues to persist through next-20250722.
Device: rk3399-rock-pi-4b
Build Configuration: lkftconfig-64k_page_size
Regression Window:
Good: next-20250716
Bad: next-20250717.. Still Bad: next-20250722
Kernel Config Impact:
CONFIG_ARM64_64K_PAGES=y - NFS mount fails
CONFIG_ARM64_4K_PAGES=y - NFS mount works as expected
Regression Analysis:
- New regression? Yes
- Reproducibility? Yes
Boot regression: next-20250717 arm64 rk3399-rock-pi-4b NFS mount
failure with 64K page size
Reported-by: Linux Kernel Functional Testing <lkft(a)linaro.org>
## Boot log
[ 0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034]
[ 0.000000] Linux version 6.16.0-rc6-next-20250717
(tuxmake@tuxmake) (aarch64-linux-gnu-gcc (Debian 13.3.0-16) 13.3.0,
GNU ld (GNU Binutils for Debian) 2.44) #1 SMP PREEMPT @1752747461
[ 0.000000] KASLR disabled due to lack of seed
[ 0.000000] Machine model: Radxa ROCK Pi 4B
[ 0.000000] efi: UEFI not found.
[ 0.000000] earlycon: uart0 at MMIO32 0x00000000ff1a0000 (options
'1500000n8')
[ 0.000000] printk: legacy bootconsole [uart0] enabled
[ 0.000000] OF: reserved mem: Reserved memory: No reserved-memory
node in the DT
[ 0.000000] NUMA: Faking a node at [mem
0x0000000000200000-0x00000000f7ffffff]
<trim>
[ 6.520442] Sending DHCP requests ..
[ 13.295867] platform sdio-pwrseq: deferred probe pending:
pwrseq_simple: reset control not ready
[ 13.295887] dwmmc_rockchip fe310000.mmc: IDMAC supports 32-bit address mode.
[ 13.296260] rockchip-pm-domain
ff310000.power-management:power-controller: sync_state() pending due
to fe310000.mmc
[ 13.296278] rockchip-pm-domain
ff310000.power-management:power-controller: sync_state() pending due
to ff650000.video-codec
[ 13.297085] dwmmc_rockchip fe310000.mmc: Using internal DMA controller.
[ 13.297660] rockchip-pm-domain
ff310000.power-management:power-controller: sync_state() pending due
to ff660000.video-codec
[ 13.298653] dwmmc_rockchip fe310000.mmc: Version ID is 270a
[ 13.299536] rockchip-pm-domain
ff310000.power-management:power-controller: sync_state() pending due
to ff680000.rga
[ 13.300164] dwmmc_rockchip fe310000.mmc: DW MMC controller at irq
49,32 bit host data width,256 deep fifo
[ 13.301117] rockchip-pm-domain
ff310000.power-management:power-controller: sync_state() pending due
to ff880000.i2s
[ 13.304227] rockchip-pm-domain
ff310000.power-management:power-controller: sync_state() pending due
to ff8a0000.i2s
[ 13.305148] rockchip-pm-domain
ff310000.power-management:power-controller: sync_state() pending due
to ff8f0000.vop
[ 13.306071] rockchip-pm-domain
ff310000.power-management:power-controller: sync_state() pending due
to ff900000.vop
[ 13.307009] rockchip-pm-domain
ff310000.power-management:power-controller: sync_state() pending due
to ff940000.hdmi
[ 13.307937] rockchip-pm-domain
ff310000.power-management:power-controller: sync_state() pending due
to ff9a0000.gpu
[ 14.620509] ., OK
[ 14.636949] IP-Config: Got DHCP answer from 10.66.16.15, my address
is 10.66.30.7
[ 14.637647] IP-Config: Complete:
[ 14.637955] device=eth0, hwaddr=0a:fb:82:cd:ed:a8,
ipaddr=10.66.30.7, mask=255.255.240.0, gw=10.66.16.1
[ 14.638845] host=10.66.30.7, domain=lkftlab, nis-domain=(none)
[ 14.639417] bootserver=0.0.0.0, rootserver=10.66.16.116, rootpath=
[ 14.639440] nameserver0=10.66.16.15
[ 14.641679] clk: Disabling unused clocks
[ 14.646347] dw-apb-uart ff1a0000.serial: forbid DMA for kernel console
[ 14.647091] check access for rdinit=/init failed: -2, ignoring
[ 14.762496] VFS: Mounted root (nfs filesystem) on device 0:22.
[ 14.763768] devtmpfs: mounted
[ 14.775761] Freeing unused kernel memory: 4928K
[ 14.776566] Run /sbin/init as init process
[ 95.816464] random: crng init done
[ 195.556677] nfs: server 10.66.16.116 not responding, still trying
..
[ 195.556703] nfs: server 10.66.16.116 not responding, still trying
[ 195.556869] nfs: server 10.66.16.116 not responding, still trying
[ 195.557010] nfs: server 10.66.16.116 not responding, still trying
[ 195.557055] nfs: server 10.66.16.116 not responding, still trying
[ 195.557114] nfs: server 10.66.16.116 not responding, still trying
[ 195.557166] nfs: server 10.66.16.116 not responding, still trying
[ 195.557217] nfs: server 10.66.16.116 not responding, still trying
[ 195.557269] nfs: server 10.66.16.116 not responding, still trying
[ 195.557304] nfs: server 10.66.16.116 not responding, still trying
[ 227.459759] nfs: server 10.66.16.116 OK
[ 227.459868] nfs: server 10.66.16.116 OK
[ 227.681008] nfs: server 10.66.16.116 OK
[ 319.645474] nfs: server 10.66.16.116 OK
[ 407.677657] nfs: server 10.66.16.116 OK
[ 499.834818] nfs: server 10.66.16.116 OK
[ 587.895692] nfs: server 10.66.16.116 OK
[ 680.052774] nfs: server 10.66.16.116 OK
[ 768.113810] nfs: server 10.66.16.116 OK
[ 860.270785] nfs: server 10.66.16.116 OK
#
[ 948.331418] nfs: server 10.66.16.116 OK
#
[ 1096.679211] nfs: server 10.66.16.116 OK
#
[ 1274.856436] nfs: server 10.66.16.116 OK
#
[ 1488.985700] nfs: server 10.66.16.116 OK
## Source
* Git tree: https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next.git
* Project: https://qa-reports.linaro.org/lkft/linux-next-master/build/next-20250717/
* Git sha: 024e09e444bd2b06aee9d1f3fe7b313c7a2df1bb
* Git describe: 6.16.0-rc6-next-20250717
* kernel version: next-20250717
* Architectures: arm64 (rock-pi-4b)
* Toolchains: gcc-13
* Kconfigs: defconfig+64K page size
## Test
* Test log: https://qa-reports.linaro.org/api/testruns/29168904/log_file/
* Test LAVA: https://lkft.validation.linaro.org/scheduler/job/8364278#L924
* Test run: https://regressions.linaro.org/lkft/linux-next-master/next-20250717/testrun…
* Test plan: https://tuxapi.tuxsuite.com/v1/groups/linaro/projects/lkft/tests/2zzwHDuV3x…
* Build link: https://storage.tuxsuite.com/public/linaro/lkft/builds/2zzwEbz0aS3AtluE2oRQ…
* Kernel config:
https://storage.tuxsuite.com/public/linaro/lkft/builds/2zzwEbz0aS3AtluE2oRQ…
--
Linaro LKFT
https://lkft.linaro.org
The vma05 test was producing false positive failures by flagging any
"??" symbols in gdb backtraces as vDSO kernel bugs, including those
from normal stripped system libraries.
This caused widespread false failures in production environments where
system libraries like libc.so.6 are typically stripped of debug symbols.
The fix filters out "??" symbols that originate from system libraries
(paths containing "/lib/" or "/usr/lib/") while still detecting genuine
unresolved symbols in application code that could indicate real vDSO bugs.
Signed-off-by: Ben Copeland <ben.copeland(a)linaro.org>
Reviewed-by: Petr Vorel <pvorel(a)suse.cz>
---
testcases/kernel/mem/vma/vma05.sh | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/testcases/kernel/mem/vma/vma05.sh b/testcases/kernel/mem/vma/vma05.sh
index c560eecbc..1546342a8 100755
--- a/testcases/kernel/mem/vma/vma05.sh
+++ b/testcases/kernel/mem/vma/vma05.sh
@@ -64,8 +64,10 @@ tst_test()
TRACE=$(gdb -silent -ex="thread apply all backtrace" -ex="quit"\
vma05_vdso ./core* 2> /dev/null)
- if echo "$TRACE" | grep -qF "??"; then
- tst_res TFAIL "[vdso] bug not patched"
+ # Only check for ?? symbols in application code, not system libraries
+ APP_UNKNOWN=$(echo "$TRACE" | grep -F "??" | grep -v -e "from /lib/" -e "from /usr/lib/")
+ if [ -n "$APP_UNKNOWN" ]; then
+ tst_res TFAIL "[vdso] bug not patched - unknown symbols in application code"
else
tst_res TPASS "[vdso] backtrace complete"
fi
--
2.50.1
The vma05 test was producing false positive failures by flagging any
"??" symbols in gdb backtraces as vDSO kernel bugs, including those
from normal stripped system libraries.
This caused widespread false failures in production environments where
system libraries like libc.so.6 are typically stripped of debug symbols.
The fix filters out "??" symbols that originate from system libraries
(paths containing "/lib/" or "/usr/lib/") while still detecting genuine
unresolved symbols in application code that could indicate real vDSO bugs.
Signed-off-by: Ben Copeland <ben.copeland(a)linaro.org>
---
testcases/kernel/mem/vma/vma05.sh | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/testcases/kernel/mem/vma/vma05.sh b/testcases/kernel/mem/vma/vma05.sh
index c560eecbc..09757a0fe 100755
--- a/testcases/kernel/mem/vma/vma05.sh
+++ b/testcases/kernel/mem/vma/vma05.sh
@@ -64,11 +64,14 @@ tst_test()
TRACE=$(gdb -silent -ex="thread apply all backtrace" -ex="quit"\
vma05_vdso ./core* 2> /dev/null)
- if echo "$TRACE" | grep -qF "??"; then
- tst_res TFAIL "[vdso] bug not patched"
+ # Only check for ?? symbols in application code, not system libraries
+ APP_UNKNOWN=$(echo "$TRACE" | grep -F "??" | grep -v "from /lib/" | grep -v "from /usr/lib/")
+ if [ -n "$APP_UNKNOWN" ]; then
+ tst_res TFAIL "[vdso] bug not patched - unknown symbols in application code"
else
tst_res TPASS "[vdso] backtrace complete"
fi
+ fi
}
. tst_run.sh
--
2.50.1