Re: [PATCH] riscv: increase boot command line size to 1K

From: Palmer Dabbelt
Date: Sun Dec 11 2022 - 01:21:13 EST


On Sat, 26 Nov 2022 11:31:36 PST (-0800), andrea.righi@xxxxxxxxxxxxx wrote:
On Sat, Nov 26, 2022 at 07:25:01PM +0000, Conor Dooley wrote:
On Sat, Nov 26, 2022 at 08:18:43PM +0100, Andrea Righi wrote:
> On Sat, Nov 26, 2022 at 06:46:05PM +0000, Conor Dooley wrote:
> > Hey Andrea,
> >
> > On Fri, Nov 25, 2022 at 02:37:13PM +0100, Andrea Righi wrote:
> > > Kernel parameters string is limited to 512 characters on riscv (using
> > > the default from include/uapi/asm-generic/setup.h).
> > >
> > > In some testing environments (e.g., qemu with long kernel parameters
> > > string) we may exceed this limit, triggering errors like the following:
> > >
> > > [ 3.331893] Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000000
> > > [ 3.332625] CPU: 2 PID: 1 Comm: sh Not tainted 6.1.0-rc6-kc #1
> > > [ 3.333233] Hardware name: riscv-virtio,qemu (DT)
> > > [ 3.333550] Call Trace:
> > > [ 3.333736] [<ffffffff800062b6>] dump_backtrace+0x1c/0x24
> > > [ 3.334053] [<ffffffff806e8f54>] show_stack+0x2c/0x38
> > > [ 3.334260] [<ffffffff806f2d06>] dump_stack_lvl+0x5a/0x7c
> > > [ 3.334483] [<ffffffff806f2d3c>] dump_stack+0x14/0x1c
> > > [ 3.334687] [<ffffffff806e92fa>] panic+0x116/0x2d0
> > > [ 3.334878] [<ffffffff8001b0aa>] do_exit+0x80a/0x810
> > > [ 3.335079] [<ffffffff8001b1d0>] do_group_exit+0x24/0x70
> > > [ 3.335287] [<ffffffff8001b234>] __wake_up_parent+0x0/0x20
> > > [ 3.335502] [<ffffffff80003cee>] ret_from_syscall+0x0/0x2
> > > [ 3.335857] SMP: stopping secondary CPUs
> > > [ 3.337561] ---[ end Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000000 ]---
> > >
> > > It seems reasonable enough to increase the default command line size to
> > > 1024, like arm, to prevent issues like the one reported above.
> >
> > error: arch/riscv/include/uapi/asm/setup.h: missing "WITH Linux-syscall-note" for SPDX-License-Identifier
> >
> > Unfortunately this does not build :/
> >
> > Thanks,
> > Conor.
>
> Oh I see, because it's uapi it needs "WITH Linux-syscall-note",
> wondering why I can't reproduce this failure...

tuxmake --wrapper ccache --target-arch riscv --directory . \
--environment=KBUILD_BUILD_TIMESTAMP=@1621270510 \
--environment=KBUILD_BUILD_USER=tuxmake --environment=KBUILD_BUILD_HOST=tuxmake \
-o $tmpdir --toolchain llvm -z none -k rv32_defconfig

(copy paste from a script)
That's what caught it initially & I think should be reproduce able. My
own standard build script also runs all of the HDRINST stuff if they've
changed since the last time a given toolchain was used so it reproduces
locally for me too.

Ah! I'm pretty sure it's HDRINST, I'm just doing make, cross-compiling
the kernel, and running it directly from the build directory with a
custom script (that is basically a wrapper to qemu), so I don't need to
actually install anything. That's why I didn't catch the error.

Thanks for sharing that, I'll make sure to test also a proper install
next time. :)

-Andrea


> Anyway, as pointed out by Alexandre, there was already a previous
> discussion about this topic:
> https://lore.kernel.org/lkml/CACT4Y+YYAfTafFk7DE0B=qQFgkPXS7492AhBdY_CP1WdB8CGfA@xxxxxxxxxxxxxx/T/
>
> Hopefully this change will be addressed there (and the patch land in
> -next at least), otherwise I'll post a v2.

I posted a new version of the asm-generic changes here: https://lore.kernel.org/r/20221211061358.28035-1-palmer@xxxxxxxxxxxx/



Yup, I noticed that thread - in fact I was going to link it yesterday
before I saw Alex already had ;)

Thanks,
Conor.