2008-02-01 10:33:47

by Yinghai Lu

[permalink] [raw]
Subject: [PATCH] make loglevel related commandline to early_param

[PATCH] make loglevel related command_line to early_param

so we can use them for early console like console=uart8250 or earlycon=uart8250 or early_printk

Signed-off-by: Yinghai Lu <[email protected]>

diff --git a/init/main.c b/init/main.c
index cb81ed1..a774a93 100644
--- a/init/main.c
+++ b/init/main.c
@@ -232,22 +232,18 @@ EXPORT_SYMBOL(loops_per_jiffy);

static int __init debug_kernel(char *str)
{
- if (*str)
- return 0;
console_loglevel = 10;
return 1;
}

static int __init quiet_kernel(char *str)
{
- if (*str)
- return 0;
console_loglevel = 4;
return 1;
}

-__setup("debug", debug_kernel);
-__setup("quiet", quiet_kernel);
+early_param("debug", debug_kernel);
+early_param("quiet", quiet_kernel);

static int __init loglevel(char *str)
{
@@ -255,7 +251,7 @@ static int __init loglevel(char *str)
return 1;
}

-__setup("loglevel=", loglevel);
+early_param("loglevel", loglevel);

/*
* Unknown boot options get handed to init, unless they look like
diff --git a/kernel/printk.c b/kernel/printk.c
index 58bbec6..8c25e37 100644
--- a/kernel/printk.c
+++ b/kernel/printk.c
@@ -458,7 +458,7 @@ static int __init ignore_loglevel_setup(char *str)
return 1;
}

-__setup("ignore_loglevel", ignore_loglevel_setup);
+early_param("ignore_loglevel", ignore_loglevel_setup);

/*
* Write out chars from start to end - 1 inclusive


2008-02-01 12:39:49

by Andi Kleen

[permalink] [raw]
Subject: Re: [PATCH] make loglevel related commandline to early_param

Yinghai Lu <[email protected]> writes:

> diff --git a/init/main.c b/init/main.c
> index cb81ed1..a774a93 100644
> --- a/init/main.c
> +++ b/init/main.c
> @@ -232,22 +232,18 @@ EXPORT_SYMBOL(loops_per_jiffy);
>
> static int __init debug_kernel(char *str)
> {
> - if (*str)
> - return 0;
> console_loglevel = 10;
> return 1;

The return semantics changes with early_param so you need to change that in all cases to return 0
(and negative value for errors)

-Andi

2008-02-01 18:34:34

by Yinghai Lu

[permalink] [raw]
Subject: Re: [PATCH] make loglevel related commandline to early_param

On Friday 01 February 2008 04:39:39 am Andi Kleen wrote:
> Yinghai Lu <[email protected]> writes:
>
> > diff --git a/init/main.c b/init/main.c
> > index cb81ed1..a774a93 100644
> > --- a/init/main.c
> > +++ b/init/main.c
> > @@ -232,22 +232,18 @@ EXPORT_SYMBOL(loops_per_jiffy);
> >
> > static int __init debug_kernel(char *str)
> > {
> > - if (*str)
> > - return 0;
> > console_loglevel = 10;
> > return 1;
>
> The return semantics changes with early_param so you need to change that in all cases to return 0
> (and negative value for errors)
>


thanks. I will send another one.

YH

2008-02-01 19:28:43

by Yinghai Lu

[permalink] [raw]
Subject: [PATCH] make loglevel related commandline to early_param v2

[PATCH] make loglevel related commandline to early_param v2

so we can use them for early console like
console=uart8250,io,0x3f8,115200n8
earlycon=uart8250,io,0x3f8,115200n8
early_printk

otherwise printk(KERN_DEBUG "debug msg") will not print out to console even
"debug" command line is used.

andi point out early_param need to return 0 instead 1.

Ingo had another patch in x86.git to process ignore_loglevel

Signed-off-by: Yinghai Lu <[email protected]>

diff --git a/init/main.c b/init/main.c
index cb81ed1..3741bda 100644
--- a/init/main.c
+++ b/init/main.c
@@ -232,30 +232,26 @@ EXPORT_SYMBOL(loops_per_jiffy);

static int __init debug_kernel(char *str)
{
- if (*str)
- return 0;
console_loglevel = 10;
- return 1;
+ return 0;
}

static int __init quiet_kernel(char *str)
{
- if (*str)
- return 0;
console_loglevel = 4;
- return 1;
+ return 0;
}

-__setup("debug", debug_kernel);
-__setup("quiet", quiet_kernel);
+early_param("debug", debug_kernel);
+early_param("quiet", quiet_kernel);

static int __init loglevel(char *str)
{
get_option(&str, &console_loglevel);
- return 1;
+ return 0;
}

-__setup("loglevel=", loglevel);
+early_param("loglevel", loglevel);

/*
* Unknown boot options get handed to init, unless they look like

2008-02-01 19:56:50

by Andrew Morton

[permalink] [raw]
Subject: Re: [PATCH] make loglevel related commandline to early_param v2

On Fri, 01 Feb 2008 11:35:35 -0800
Yinghai Lu <[email protected]> wrote:

> [PATCH] make loglevel related commandline to early_param v2
>
> so we can use them for early console like
> console=uart8250,io,0x3f8,115200n8
> earlycon=uart8250,io,0x3f8,115200n8
> early_printk
>
> otherwise printk(KERN_DEBUG "debug msg") will not print out to console even
> "debug" command line is used.
>
> andi point out early_param need to return 0 instead 1.
>
> Ingo had another patch in x86.git to process ignore_loglevel
>
> Signed-off-by: Yinghai Lu <[email protected]>
>
> diff --git a/init/main.c b/init/main.c
> index cb81ed1..3741bda 100644
> --- a/init/main.c
> +++ b/init/main.c
> @@ -232,30 +232,26 @@ EXPORT_SYMBOL(loops_per_jiffy);
>
> static int __init debug_kernel(char *str)
> {
> - if (*str)
> - return 0;
> console_loglevel = 10;
> - return 1;
> + return 0;
> }
>
> static int __init quiet_kernel(char *str)
> {
> - if (*str)
> - return 0;
> console_loglevel = 4;
> - return 1;
> + return 0;
> }
>
> -__setup("debug", debug_kernel);
> -__setup("quiet", quiet_kernel);
> +early_param("debug", debug_kernel);
> +early_param("quiet", quiet_kernel);
>
> static int __init loglevel(char *str)
> {
> get_option(&str, &console_loglevel);
> - return 1;
> + return 0;
> }
>
> -__setup("loglevel=", loglevel);
> +early_param("loglevel", loglevel);
>
> /*
> * Unknown boot options get handed to init, unless they look like

Your earlier patch converted ignore_loglevel but this one no longer does
so. Was that deliberate?

Below is the patch whcih I presently have queued. Is it OK?

init/main.c | 14 +++++---------
kernel/printk.c | 5 ++---
2 files changed, 7 insertions(+), 12 deletions(-)

diff -puN init/main.c~convert-loglevel-related-kernel-boot-parameters-to-early_param init/main.c
--- a/init/main.c~convert-loglevel-related-kernel-boot-parameters-to-early_param
+++ a/init/main.c
@@ -232,22 +232,18 @@ EXPORT_SYMBOL(loops_per_jiffy);

static int __init debug_kernel(char *str)
{
- if (*str)
- return 0;
console_loglevel = 10;
- return 1;
+ return 0;
}

static int __init quiet_kernel(char *str)
{
- if (*str)
- return 0;
console_loglevel = 4;
- return 1;
+ return 0;
}

-__setup("debug", debug_kernel);
-__setup("quiet", quiet_kernel);
+early_param("debug", debug_kernel);
+early_param("quiet", quiet_kernel);

static int __init loglevel(char *str)
{
@@ -255,7 +251,7 @@ static int __init loglevel(char *str)
return 1;
}

-__setup("loglevel=", loglevel);
+early_param("loglevel", loglevel);

/*
* Unknown boot options get handed to init, unless they look like
diff -puN kernel/printk.c~convert-loglevel-related-kernel-boot-parameters-to-early_param kernel/printk.c
--- a/kernel/printk.c~convert-loglevel-related-kernel-boot-parameters-to-early_param
+++ a/kernel/printk.c
@@ -447,11 +447,10 @@ static int __init ignore_loglevel_setup(
{
ignore_loglevel = 1;
printk(KERN_INFO "debug: ignoring loglevel setting.\n");
-
- return 1;
+ return 0;
}

-__setup("ignore_loglevel", ignore_loglevel_setup);
+early_param("ignore_loglevel", ignore_loglevel_setup);

/*
* Write out chars from start to end - 1 inclusive
_

2008-02-01 20:04:16

by Yinghai Lu

[permalink] [raw]
Subject: Re: [PATCH] make loglevel related commandline to early_param v2

On Friday 01 February 2008 11:56:23 am Andrew Morton wrote:
> On Fri, 01 Feb 2008 11:35:35 -0800
> Yinghai Lu <[email protected]> wrote:
>
> > [PATCH] make loglevel related commandline to early_param v2
> >
> > so we can use them for early console like
> > console=uart8250,io,0x3f8,115200n8
> > earlycon=uart8250,io,0x3f8,115200n8
> > early_printk
> >
> > otherwise printk(KERN_DEBUG "debug msg") will not print out to console even
> > "debug" command line is used.
> >
> > andi point out early_param need to return 0 instead 1.
> >
> > Ingo had another patch in x86.git to process ignore_loglevel
> >
...
>
> Your earlier patch converted ignore_loglevel but this one no longer does
> so. Was that deliberate?

Ingo put one process "ingore_logleve" in x86.git last night.

YH