riscv: increase boot command line size to 1K

Message ID 20221125133713.314796-1-andrea.righi@canonical.com
State New
Headers
Series riscv: increase boot command line size to 1K |

Commit Message

Andrea Righi Nov. 25, 2022, 1:37 p.m. UTC
  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.

Signed-off-by: Andrea Righi <andrea.righi@canonical.com>
---
 arch/riscv/include/asm/setup.h      | 7 +++++++
 arch/riscv/include/uapi/asm/setup.h | 7 +++++++
 2 files changed, 14 insertions(+)
 create mode 100644 arch/riscv/include/asm/setup.h
 create mode 100644 arch/riscv/include/uapi/asm/setup.h
  

Comments

Alexandre Ghiti Nov. 25, 2022, 1:41 p.m. UTC | #1
Hi Andrea,

On 11/25/22 14:37, 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.
>
> Signed-off-by: Andrea Righi <andrea.righi@canonical.com>
> ---
>   arch/riscv/include/asm/setup.h      | 7 +++++++
>   arch/riscv/include/uapi/asm/setup.h | 7 +++++++
>   2 files changed, 14 insertions(+)
>   create mode 100644 arch/riscv/include/asm/setup.h
>   create mode 100644 arch/riscv/include/uapi/asm/setup.h
>
> diff --git a/arch/riscv/include/asm/setup.h b/arch/riscv/include/asm/setup.h
> new file mode 100644
> index 000000000000..f4fe549aab40
> --- /dev/null
> +++ b/arch/riscv/include/asm/setup.h
> @@ -0,0 +1,7 @@
> +/* SPDX-License-Identifier: GPL-2.0-only */
> +#ifndef __ASMRISCV_SETUP_H
> +#define __ASMRISCV_SETUP_H
> +
> +#include <uapi/asm/setup.h>
> +
> +#endif /* __ASMRISCV_SETUP_H */
> diff --git a/arch/riscv/include/uapi/asm/setup.h b/arch/riscv/include/uapi/asm/setup.h
> new file mode 100644
> index 000000000000..5738f93ae437
> --- /dev/null
> +++ b/arch/riscv/include/uapi/asm/setup.h
> @@ -0,0 +1,7 @@
> +/* SPDX-License-Identifier: GPL-2.0 */
> +#ifndef _UAPI__ASMRISCV_SETUP_H
> +#define _UAPI__ASMRISCV_SETUP_H
> +
> +#define COMMAND_LINE_SIZE 1024
> +
> +#endif /* _UAPI__ASMRISCV_SETUP_H */


Just for reference to previous discussions regarding this: 
https://lore.kernel.org/lkml/CACT4Y+YYAfTafFk7DE0B=qQFgkPXS7492AhBdY_CP1WdB8CGfA@mail.gmail.com/T/

Thanks,

Alex
  
Andrea Righi Nov. 25, 2022, 1:44 p.m. UTC | #2
On Fri, Nov 25, 2022 at 02:41:11PM +0100, Alexandre Ghiti wrote:
> Hi Andrea,
> 
> On 11/25/22 14:37, 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.
> > 
> > Signed-off-by: Andrea Righi <andrea.righi@canonical.com>
> > ---
> >   arch/riscv/include/asm/setup.h      | 7 +++++++
> >   arch/riscv/include/uapi/asm/setup.h | 7 +++++++
> >   2 files changed, 14 insertions(+)
> >   create mode 100644 arch/riscv/include/asm/setup.h
> >   create mode 100644 arch/riscv/include/uapi/asm/setup.h
> > 
> > diff --git a/arch/riscv/include/asm/setup.h b/arch/riscv/include/asm/setup.h
> > new file mode 100644
> > index 000000000000..f4fe549aab40
> > --- /dev/null
> > +++ b/arch/riscv/include/asm/setup.h
> > @@ -0,0 +1,7 @@
> > +/* SPDX-License-Identifier: GPL-2.0-only */
> > +#ifndef __ASMRISCV_SETUP_H
> > +#define __ASMRISCV_SETUP_H
> > +
> > +#include <uapi/asm/setup.h>
> > +
> > +#endif /* __ASMRISCV_SETUP_H */
> > diff --git a/arch/riscv/include/uapi/asm/setup.h b/arch/riscv/include/uapi/asm/setup.h
> > new file mode 100644
> > index 000000000000..5738f93ae437
> > --- /dev/null
> > +++ b/arch/riscv/include/uapi/asm/setup.h
> > @@ -0,0 +1,7 @@
> > +/* SPDX-License-Identifier: GPL-2.0 */
> > +#ifndef _UAPI__ASMRISCV_SETUP_H
> > +#define _UAPI__ASMRISCV_SETUP_H
> > +
> > +#define COMMAND_LINE_SIZE 1024
> > +
> > +#endif /* _UAPI__ASMRISCV_SETUP_H */
> 
> 
> Just for reference to previous discussions regarding this: https://lore.kernel.org/lkml/CACT4Y+YYAfTafFk7DE0B=qQFgkPXS7492AhBdY_CP1WdB8CGfA@mail.gmail.com/T/
> 
> Thanks,
> 
> Alex

Ah! It has been address/discussed already, great! Thanks for pointing
that out and sorry for the unnecessary patch. :)

-Andrea
  
Alexandre Ghiti Nov. 25, 2022, 1:47 p.m. UTC | #3
On 11/25/22 14:44, Andrea Righi wrote:
> On Fri, Nov 25, 2022 at 02:41:11PM +0100, Alexandre Ghiti wrote:
>> Hi Andrea,
>>
>> On 11/25/22 14:37, 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.
>>>
>>> Signed-off-by: Andrea Righi <andrea.righi@canonical.com>
>>> ---
>>>    arch/riscv/include/asm/setup.h      | 7 +++++++
>>>    arch/riscv/include/uapi/asm/setup.h | 7 +++++++
>>>    2 files changed, 14 insertions(+)
>>>    create mode 100644 arch/riscv/include/asm/setup.h
>>>    create mode 100644 arch/riscv/include/uapi/asm/setup.h
>>>
>>> diff --git a/arch/riscv/include/asm/setup.h b/arch/riscv/include/asm/setup.h
>>> new file mode 100644
>>> index 000000000000..f4fe549aab40
>>> --- /dev/null
>>> +++ b/arch/riscv/include/asm/setup.h
>>> @@ -0,0 +1,7 @@
>>> +/* SPDX-License-Identifier: GPL-2.0-only */
>>> +#ifndef __ASMRISCV_SETUP_H
>>> +#define __ASMRISCV_SETUP_H
>>> +
>>> +#include <uapi/asm/setup.h>
>>> +
>>> +#endif /* __ASMRISCV_SETUP_H */
>>> diff --git a/arch/riscv/include/uapi/asm/setup.h b/arch/riscv/include/uapi/asm/setup.h
>>> new file mode 100644
>>> index 000000000000..5738f93ae437
>>> --- /dev/null
>>> +++ b/arch/riscv/include/uapi/asm/setup.h
>>> @@ -0,0 +1,7 @@
>>> +/* SPDX-License-Identifier: GPL-2.0 */
>>> +#ifndef _UAPI__ASMRISCV_SETUP_H
>>> +#define _UAPI__ASMRISCV_SETUP_H
>>> +
>>> +#define COMMAND_LINE_SIZE 1024
>>> +
>>> +#endif /* _UAPI__ASMRISCV_SETUP_H */
>>
>> Just for reference to previous discussions regarding this: https://lore.kernel.org/lkml/CACT4Y+YYAfTafFk7DE0B=qQFgkPXS7492AhBdY_CP1WdB8CGfA@mail.gmail.com/T/
>>
>> Thanks,
>>
>> Alex
> Ah! It has been address/discussed already, great! Thanks for pointing
> that out and sorry for the unnecessary patch. :)


Not unnecessary at all, that will hopefully trigger a new discussion 
because no progress was made so far :)


> -Andrea
>
> _______________________________________________
> linux-riscv mailing list
> linux-riscv@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-riscv
  
Conor Dooley Nov. 26, 2022, 6:46 p.m. UTC | #4
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.

> Signed-off-by: Andrea Righi <andrea.righi@canonical.com>
> ---
>  arch/riscv/include/asm/setup.h      | 7 +++++++
>  arch/riscv/include/uapi/asm/setup.h | 7 +++++++
>  2 files changed, 14 insertions(+)
>  create mode 100644 arch/riscv/include/asm/setup.h
>  create mode 100644 arch/riscv/include/uapi/asm/setup.h
> 
> diff --git a/arch/riscv/include/asm/setup.h b/arch/riscv/include/asm/setup.h
> new file mode 100644
> index 000000000000..f4fe549aab40
> --- /dev/null
> +++ b/arch/riscv/include/asm/setup.h
> @@ -0,0 +1,7 @@
> +/* SPDX-License-Identifier: GPL-2.0-only */
> +#ifndef __ASMRISCV_SETUP_H
> +#define __ASMRISCV_SETUP_H
> +
> +#include <uapi/asm/setup.h>
> +
> +#endif /* __ASMRISCV_SETUP_H */
> diff --git a/arch/riscv/include/uapi/asm/setup.h b/arch/riscv/include/uapi/asm/setup.h
> new file mode 100644
> index 000000000000..5738f93ae437
> --- /dev/null
> +++ b/arch/riscv/include/uapi/asm/setup.h
> @@ -0,0 +1,7 @@
> +/* SPDX-License-Identifier: GPL-2.0 */
> +#ifndef _UAPI__ASMRISCV_SETUP_H
> +#define _UAPI__ASMRISCV_SETUP_H
> +
> +#define COMMAND_LINE_SIZE 1024
> +
> +#endif /* _UAPI__ASMRISCV_SETUP_H */
> -- 
> 2.37.2
>
  
Andrea Righi Nov. 26, 2022, 7:18 p.m. UTC | #5
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...

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.

Thanks,
-Andrea
  
Conor Dooley Nov. 26, 2022, 7:25 p.m. UTC | #6
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.

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

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

Thanks,
Conor.
  
Andrea Righi Nov. 26, 2022, 7:31 p.m. UTC | #7
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.
> 
> Yup, I noticed that thread - in fact I was going to link it yesterday
> before I saw Alex already had ;)
> 
> Thanks,
> Conor.
  
kernel test robot Dec. 2, 2022, 1:06 a.m. UTC | #8
Hi Andrea,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on linus/master]
[also build test ERROR on v6.1-rc7 next-20221201]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Andrea-Righi/riscv-increase-boot-command-line-size-to-1K/20221125-213750
patch link:    https://lore.kernel.org/r/20221125133713.314796-1-andrea.righi%40canonical.com
patch subject: [PATCH] riscv: increase boot command line size to 1K
config: riscv-allmodconfig
compiler: riscv64-linux-gcc (GCC) 12.1.0
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://github.com/intel-lab-lkp/linux/commit/68f7f12cac48557c337a453631d4e39b14f3a326
        git remote add linux-review https://github.com/intel-lab-lkp/linux
        git fetch --no-tags linux-review Andrea-Righi/riscv-increase-boot-command-line-size-to-1K/20221125-213750
        git checkout 68f7f12cac48557c337a453631d4e39b14f3a326
        # save the config file
        mkdir build_dir && cp config build_dir/.config
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross W=1 O=build_dir ARCH=riscv prepare

If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

   scripts/genksyms/parse.y: warning: 9 shift/reduce conflicts [-Wconflicts-sr]
   scripts/genksyms/parse.y: warning: 5 reduce/reduce conflicts [-Wconflicts-rr]
   scripts/genksyms/parse.y: note: rerun with option '-Wcounterexamples' to generate conflict counterexamples
>> error: arch/riscv/include/uapi/asm/setup.h: missing "WITH Linux-syscall-note" for SPDX-License-Identifier
   make[2]: *** [scripts/Makefile.headersinst:63: usr/include/asm/setup.h] Error 1
   make[2]: Target '__headers' not remade because of errors.
   make[1]: *** [Makefile:1367: headers] Error 2
   make[1]: Target 'prepare' not remade because of errors.
   make: *** [Makefile:231: __sub-make] Error 2
   make: Target 'prepare' not remade because of errors.
  
Palmer Dabbelt Dec. 11, 2022, 6:17 a.m. UTC | #9
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.
  

Patch

diff --git a/arch/riscv/include/asm/setup.h b/arch/riscv/include/asm/setup.h
new file mode 100644
index 000000000000..f4fe549aab40
--- /dev/null
+++ b/arch/riscv/include/asm/setup.h
@@ -0,0 +1,7 @@ 
+/* SPDX-License-Identifier: GPL-2.0-only */
+#ifndef __ASMRISCV_SETUP_H
+#define __ASMRISCV_SETUP_H
+
+#include <uapi/asm/setup.h>
+
+#endif /* __ASMRISCV_SETUP_H */
diff --git a/arch/riscv/include/uapi/asm/setup.h b/arch/riscv/include/uapi/asm/setup.h
new file mode 100644
index 000000000000..5738f93ae437
--- /dev/null
+++ b/arch/riscv/include/uapi/asm/setup.h
@@ -0,0 +1,7 @@ 
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef _UAPI__ASMRISCV_SETUP_H
+#define _UAPI__ASMRISCV_SETUP_H
+
+#define COMMAND_LINE_SIZE 1024
+
+#endif /* _UAPI__ASMRISCV_SETUP_H */