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

Palmer Dabbelt
2022-12-11T06:18:28Z

On Sat, 26 Nov 2022 11:31:36 PST (-0800), andrea.righi@canonical.com 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@mail.gmail.com/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@rivosinc.com/

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