All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] kernel/crash_core: suppress unknown crashkernel parameter warning
@ 2021-12-06 11:17 Philipp Rudo
  2021-12-07  3:34 ` Baoquan He
  0 siblings, 1 reply; 3+ messages in thread
From: Philipp Rudo @ 2021-12-06 11:17 UTC (permalink / raw)
  To: kexec; +Cc: ahalaney

When booting with crashkernel= on the kernel command line a warning
similar to

[    0.038294] Kernel command line: ro console=ttyS0 crashkernel=256M
[    0.038353] Unknown kernel command line parameters "crashkernel=256M", will be passed to user space.

is printed. This originates from crashkernel= being parsed independent from
the early_param() mechanism. So the code in init/main.c doesn't know
that crashkernel= is a valid kernel parameter and prints this incorrect
warning. Suppress the warning by adding a dummy early_param handler for
crashkernel=.

Fixes: 86d1919a4fb0 ("init: print out unknown kernel parameters")
Signed-off-by: Philipp Rudo <prudo@redhat.com>
---
 kernel/crash_core.c | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/kernel/crash_core.c b/kernel/crash_core.c
index eb53f5ec62c9..256cf6db573c 100644
--- a/kernel/crash_core.c
+++ b/kernel/crash_core.c
@@ -6,6 +6,7 @@
 
 #include <linux/buildid.h>
 #include <linux/crash_core.h>
+#include <linux/init.h>
 #include <linux/utsname.h>
 #include <linux/vmalloc.h>
 
@@ -295,6 +296,16 @@ int __init parse_crashkernel_low(char *cmdline,
 				"crashkernel=", suffix_tbl[SUFFIX_LOW]);
 }
 
+/*
+ * Add a dummy early_param handler to mark crashkernel= as a known command line
+ * parameter and suppress incorrect warnings in init/main.c.
+ */
+static int __init parse_crashkernel_dummy(char *arg)
+{
+	return 0;
+}
+early_param("crashkernel", parse_crashkernel_dummy);
+
 Elf_Word *append_elf_note(Elf_Word *buf, char *name, unsigned int type,
 			  void *data, size_t data_len)
 {
-- 
2.31.1


_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] kernel/crash_core: suppress unknown crashkernel parameter warning
  2021-12-06 11:17 [PATCH] kernel/crash_core: suppress unknown crashkernel parameter warning Philipp Rudo
@ 2021-12-07  3:34 ` Baoquan He
  2021-12-07 13:28   ` Philipp Rudo
  0 siblings, 1 reply; 3+ messages in thread
From: Baoquan He @ 2021-12-07  3:34 UTC (permalink / raw)
  To: Philipp Rudo; +Cc: kexec, ahalaney, akpm

On 12/06/21 at 12:17pm, Philipp Rudo wrote:
> When booting with crashkernel= on the kernel command line a warning
> similar to
> 
> [    0.038294] Kernel command line: ro console=ttyS0 crashkernel=256M
> [    0.038353] Unknown kernel command line parameters "crashkernel=256M", will be passed to user space.
> 
> is printed. This originates from crashkernel= being parsed independent from
> the early_param() mechanism. So the code in init/main.c doesn't know

Not only the early_param(), __setup() also takes the same mechanism.
It's just handled in different stage. You might need to call it kernel
param handling mechanism, not sure if it's accurate.

> that crashkernel= is a valid kernel parameter and prints this incorrect
> warning. Suppress the warning by adding a dummy early_param handler for
> crashkernel=.

The fix looks good to me, thanks.

Acked-by: Baoquan He <bhe@redhat.com>

By the way, on which arch did you find this issue? Ask because I am
wondering whether there's any other similiar independent kernel cmdline
handling from __setup_param(). If have, is there a chance to take a
common method to handle them, e.g a generic function or a place to
identify them. Just wild thought, I have no idea yet. Otherwise, we may
need several this kind of dummy handler for each one.

> 
> Fixes: 86d1919a4fb0 ("init: print out unknown kernel parameters")
> Signed-off-by: Philipp Rudo <prudo@redhat.com>
> ---
>  kernel/crash_core.c | 11 +++++++++++
>  1 file changed, 11 insertions(+)
> 
> diff --git a/kernel/crash_core.c b/kernel/crash_core.c
> index eb53f5ec62c9..256cf6db573c 100644
> --- a/kernel/crash_core.c
> +++ b/kernel/crash_core.c
> @@ -6,6 +6,7 @@
>  
>  #include <linux/buildid.h>
>  #include <linux/crash_core.h>
> +#include <linux/init.h>
>  #include <linux/utsname.h>
>  #include <linux/vmalloc.h>
>  
> @@ -295,6 +296,16 @@ int __init parse_crashkernel_low(char *cmdline,
>  				"crashkernel=", suffix_tbl[SUFFIX_LOW]);
>  }
>  
> +/*
> + * Add a dummy early_param handler to mark crashkernel= as a known command line
> + * parameter and suppress incorrect warnings in init/main.c.
> + */
> +static int __init parse_crashkernel_dummy(char *arg)
> +{
> +	return 0;
> +}
> +early_param("crashkernel", parse_crashkernel_dummy);
> +
>  Elf_Word *append_elf_note(Elf_Word *buf, char *name, unsigned int type,
>  			  void *data, size_t data_len)
>  {
> -- 
> 2.31.1
> 
> 
> _______________________________________________
> kexec mailing list
> kexec@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/kexec
> 


_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] kernel/crash_core: suppress unknown crashkernel parameter warning
  2021-12-07  3:34 ` Baoquan He
@ 2021-12-07 13:28   ` Philipp Rudo
  0 siblings, 0 replies; 3+ messages in thread
From: Philipp Rudo @ 2021-12-07 13:28 UTC (permalink / raw)
  To: Baoquan He; +Cc: kexec, ahalaney, akpm

Hi Baoquan,

On Tue, 7 Dec 2021 11:34:46 +0800
Baoquan He <bhe@redhat.com> wrote:

> On 12/06/21 at 12:17pm, Philipp Rudo wrote:
> > When booting with crashkernel= on the kernel command line a warning
> > similar to
> > 
> > [    0.038294] Kernel command line: ro console=ttyS0 crashkernel=256M
> > [    0.038353] Unknown kernel command line parameters "crashkernel=256M", will be passed to user space.
> > 
> > is printed. This originates from crashkernel= being parsed independent from
> > the early_param() mechanism. So the code in init/main.c doesn't know  
> 
> Not only the early_param(), __setup() also takes the same mechanism.
> It's just handled in different stage. You might need to call it kernel
> param handling mechanism, not sure if it's accurate.

you are right, "kernel param handling" is better. I used early_param as
that's where we would need to hook into if we wanted to use the common
kernel param handling. But I don't think it is worth it.

@akpm: do you update the commit message before sending the patch to
       Linus or shall I send a v2?

> > that crashkernel= is a valid kernel parameter and prints this incorrect
> > warning. Suppress the warning by adding a dummy early_param handler for
> > crashkernel=.  
> 
> The fix looks good to me, thanks.
> 
> Acked-by: Baoquan He <bhe@redhat.com>

Thanks

> By the way, on which arch did you find this issue? Ask because I am
> wondering whether there's any other similiar independent kernel cmdline
> handling from __setup_param(). If have, is there a chance to take a
> common method to handle them, e.g a generic function or a place to
> identify them. Just wild thought, I have no idea yet. Otherwise, we may
> need several this kind of dummy handler for each one.

The issue was first reported on s390 but I used x86 to test the fix.
The only other reported parameter I encountered was BOOT_IMAGE= which
is not a kernel parameter and thus correct. But in the corresponding
bugzilla Andrew (on cc) said "Gah! I thought I had squashed all of
these interesting uses of the kernel command line, it is like playing whack-a-mole."
So I believe there were multiple other parameters that had the same problem.

Thanks
Philipp

> > Fixes: 86d1919a4fb0 ("init: print out unknown kernel parameters")
> > Signed-off-by: Philipp Rudo <prudo@redhat.com>
> > ---
> >  kernel/crash_core.c | 11 +++++++++++
> >  1 file changed, 11 insertions(+)
> > 
> > diff --git a/kernel/crash_core.c b/kernel/crash_core.c
> > index eb53f5ec62c9..256cf6db573c 100644
> > --- a/kernel/crash_core.c
> > +++ b/kernel/crash_core.c
> > @@ -6,6 +6,7 @@
> >  
> >  #include <linux/buildid.h>
> >  #include <linux/crash_core.h>
> > +#include <linux/init.h>
> >  #include <linux/utsname.h>
> >  #include <linux/vmalloc.h>
> >  
> > @@ -295,6 +296,16 @@ int __init parse_crashkernel_low(char *cmdline,
> >  				"crashkernel=", suffix_tbl[SUFFIX_LOW]);
> >  }
> >  
> > +/*
> > + * Add a dummy early_param handler to mark crashkernel= as a known command line
> > + * parameter and suppress incorrect warnings in init/main.c.
> > + */
> > +static int __init parse_crashkernel_dummy(char *arg)
> > +{
> > +	return 0;
> > +}
> > +early_param("crashkernel", parse_crashkernel_dummy);
> > +
> >  Elf_Word *append_elf_note(Elf_Word *buf, char *name, unsigned int type,
> >  			  void *data, size_t data_len)
> >  {
> > -- 
> > 2.31.1
> > 
> > 
> > _______________________________________________
> > kexec mailing list
> > kexec@lists.infradead.org
> > http://lists.infradead.org/mailman/listinfo/kexec
> >   
> 


_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2021-12-07 13:28 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-12-06 11:17 [PATCH] kernel/crash_core: suppress unknown crashkernel parameter warning Philipp Rudo
2021-12-07  3:34 ` Baoquan He
2021-12-07 13:28   ` Philipp Rudo

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.