Comment 0 for bug 2069534

Revision history for this message
Shantur Rathore (rathore4u) wrote : linux 6.8 fails to boot on arm64 if any param is more than 140 chars

Hi,

Linux 6.8 kernel fails to boot on ARM64 when any Linux command line param is more than 140 characters.

Test Machine
=============

Rockchip RK3399 based RockPro64 with latest u-boot 2024.07-rc3 in EFI mode booting grubaa64.efi

Reproduced on
==============
Ubuntu 22.04.4 with Linux HWE Proposed 6.8
Ubuntu 24.04 with Linux 6.8

Works on
=========
Ubuntu 22.04.4 with Linux 5.15, 6.6, 6.7, 6.9

Steps to reproduce
====================

1. Install Ubuntu 24.04 which comes with Linux 6.8 by default or Ubuntu 22.04.4 install Linux HWE 6.8 from https://launchpad.net/~canonical-kernel-team/+archive/ubuntu/proposed?field.series_filter=jammy

2. Edit /boot/grub/grub.cfg and add the following param to any boot entry with Linux 6.8

testparam=f081c381e7b54edcba27e5f790d47911a4cc3e726d8d256878d3df9175c020e0f081c381e7b54edcba27e5f790d47911a4cc3e726d8d256878d3df9175c020e0f081c381e7b5

3. Reboot the machine and select the boot entry in grub with the testparam as above.

4. Observe kernel never boots.

Cause
========

After bisecting the kernel, I found that the bug was introduced in Linux 6.8-rc1 ( and released in Linux 6.8 ) with commit

commit dc3f5aae06381b43bc9d0d416bd15ee1682940e9
Author: Ard Biesheuvel <email address hidden>
Date: Wed Nov 29 12:16:12 2023 +0100

    arm64: idreg-override: Avoid parameq() and parameqn()

This got fixed with Linux 6.9-rc1 and released in Linux 6.9 as part of rework

commit e223a449125571daa62debd8249fa4fc2da0a961
Author: Ard Biesheuvel <email address hidden>
Date: Wed Feb 14 13:28:50 2024 +0100

    arm64: idreg-override: Move to early mini C runtime

That got merged to Linux 6.9-rc1 with commit

commit 6d75c6f40a03c97e1ecd683ae54e249abb9d922b
Merge: fe46a7dd189e 1ef21fcd6a50
Author: Linus Torvalds <email address hidden>
Date: Thu Mar 14 15:35:42 2024 -0700

    Merge tag 'arm64-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux

Fix Options
=============

Option 1.
For Linux 6.8 the safest fix would be to revert

commit dc3f5aae06381b43bc9d0d416bd15ee1682940e9
Author: Ard Biesheuvel <email address hidden>
Date: Wed Nov 29 12:16:12 2023 +0100

    arm64: idreg-override: Avoid parameq() and parameqn()

Option 2.
Unless Ubuntu Team is interested in bringing the whole Mini C Runtime rework to Linux 6.8 with

commit 6d75c6f40a03c97e1ecd683ae54e249abb9d922b
Merge: fe46a7dd189e 1ef21fcd6a50
Author: Linus Torvalds <email address hidden>
Date: Thu Mar 14 15:35:42 2024 -0700

    Merge tag 'arm64-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux

Please revert the change in Linux 6.8

Thanks