* [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 a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox