diff mbox

ARM: Add config option DEBUG_DECOMPRESS_KERNEL

Message ID 1347887324-22884-1-git-send-email-mvs@tigris.de (mailing list archive)
State New, archived
Headers show

Commit Message

Maximilian Schwerin Sept. 17, 2012, 1:08 p.m. UTC
This change allows preventing the message "Uncompressing Linux..." from
being sent to serial port. This is necessary if the primary serial port is
used for something other than kernel debugging (e.g. some external device
controlled by serial commands).

Signed-off-by: Maximilian Schwerin <mvs@tigris.de>
---
 arch/arm/Kconfig.debug          |    9 +++++++++
 arch/arm/boot/compressed/misc.c |    4 ++++
 2 files changed, 13 insertions(+), 0 deletions(-)

Comments

Domenico Andreoli Sept. 17, 2012, 1:17 p.m. UTC | #1
On Mon, Sep 17, 2012 at 03:08:44PM +0200, Maximilian Schwerin wrote:
> This change allows preventing the message "Uncompressing Linux..." from
> being sent to serial port. This is necessary if the primary serial port is
> used for something other than kernel debugging (e.g. some external device
> controlled by serial commands).

Disabling CONFIG_DEBUG_LL doesn't work?

Regards,
Domenico
Maximilian Schwerin Sept. 17, 2012, 1:37 p.m. UTC | #2
> -----Ursprüngliche Nachricht-----
> Von: Domenico Andreoli 
> [mailto:domenico.andreoli.it@gmail.com] Im Auftrag von 
> Domenico Andreoli
> Gesendet: Montag, 17. September 2012 15:17
> An: Maximilian Schwerin
> Cc: linux-arm-kernel@lists.infradead.org
> Betreff: Re: [PATCH] ARM: Add config option DEBUG_DECOMPRESS_KERNEL
> 
> On Mon, Sep 17, 2012 at 03:08:44PM +0200, Maximilian Schwerin wrote:
> > This change allows preventing the message "Uncompressing 
> Linux..." from
> > being sent to serial port. This is necessary if the primary 
> serial port is
> > used for something other than kernel debugging (e.g. some 
> external device
> > controlled by serial commands).
> 
> Disabling CONFIG_DEBUG_LL doesn't work?
> 
> Regards,
> Domenico
> 

No (never had that enabled), but that may be a bug or omission in the platform (omap3) code?!

Regards, m.
Nicolas Pitre Sept. 17, 2012, 5:29 p.m. UTC | #3
On Mon, 17 Sep 2012, Maximilian Schwerin wrote:

> This change allows preventing the message "Uncompressing Linux..." from
> being sent to serial port. This is necessary if the primary serial port is
> used for something other than kernel debugging (e.g. some external device
> controlled by serial commands).
> 
> Signed-off-by: Maximilian Schwerin <mvs@tigris.de>
> ---
>  arch/arm/Kconfig.debug          |    9 +++++++++
>  arch/arm/boot/compressed/misc.c |    4 ++++
>  2 files changed, 13 insertions(+), 0 deletions(-)
> 
> diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug
> index e968a52..96e90dc 100644
> --- a/arch/arm/Kconfig.debug
> +++ b/arch/arm/Kconfig.debug
> @@ -46,6 +46,15 @@ config OLD_MCOUNT
>  	depends on FUNCTION_TRACER && FRAME_POINTER
>  	default y
>  
> +config DEBUG_DECOMPRESS_KERNEL
> +	bool "Using serial port during decompressing kernel"
> +	depends on DEBUG_KERNEL
> +	default n
> +	help
> +	  If you say Y here you will confirm the start and the end of
> +	  decompressing Linux seeing "Uncompressing Linux... " and
> +	  " done, booting the kernel.\n" on console.

First, "default n" is the default already, so you don't need to provide 
it.

Next, this is going to disable the output by default for everyone which 
is an unwelcome change.  You should make sure that the default behavior 
is like before, and that the option allows you to disable the output.

And then the DEBUG_DECOMPRESS_KERNEL option is a rather bad name.  This 
output has not been considered "debugging" before.  What about 
"INHIBIT_DECOMPRESSOR_OUTPUT" instead?

> diff --git a/arch/arm/boot/compressed/misc.c b/arch/arm/boot/compressed/misc.c
> index 8e2a8fc..edf4a35 100644
> --- a/arch/arm/boot/compressed/misc.c
> +++ b/arch/arm/boot/compressed/misc.c
> @@ -144,11 +144,15 @@ decompress_kernel(unsigned long output_start, unsigned long free_mem_ptr_p,
>  
>  	arch_decomp_setup();
>  
> +#ifdef CONFIG_DEBUG_DECOMPRESS_KERNEL
>  	putstr("Uncompressing Linux...");
> +#endif /* CONFIG_DEBUG_DECOMPRESS_KERNEL */
>  	ret = do_decompress(input_data, input_data_end - input_data,
>  			    output_data, error);
>  	if (ret)
>  		error("decompressor returned an error");
> +#ifdef CONFIG_DEBUG_DECOMPRESS_KERNEL
>  	else
>  		putstr(" done, booting the kernel.\n");
> +#endif /* CONFIG_DEBUG_DECOMPRESS_KERNEL */

That would be cleaner if you simply redefined putstr() to an empty stub.  
Similarly for error() which still can output to the same UART.


Nicolas
Russell King - ARM Linux Sept. 17, 2012, 7:41 p.m. UTC | #4
On Mon, Sep 17, 2012 at 03:08:44PM +0200, Maximilian Schwerin wrote:
> This change allows preventing the message "Uncompressing Linux..." from
> being sent to serial port. This is necessary if the primary serial port is
> used for something other than kernel debugging (e.g. some external device
> controlled by serial commands).

You know, it doesn't have to go to the serial port.  It can go to
anything. We have at least one platform where it goes to the framebuffer
instead, but getting access to the framebuffer is a whole new load of
platform dependence that we don't want here.

In any case, ifdefing out the callsites is not the correct approach.
We already have this stuff fairly well abstracted, and there's no reason
why this can't be done by defining empty putc() and flush() functions.
Maximilian Schwerin Sept. 18, 2012, 6:32 a.m. UTC | #5
> -----Ursprüngliche Nachricht-----
> Von: Nicolas Pitre [mailto:nico@fluxnic.net] 
> Gesendet: Montag, 17. September 2012 19:30
> An: Maximilian Schwerin
> Cc: linux-arm-kernel@lists.infradead.org
> Betreff: Re: [PATCH] ARM: Add config option DEBUG_DECOMPRESS_KERNEL
> 
> On Mon, 17 Sep 2012, Maximilian Schwerin wrote:
> 
> > This change allows preventing the message "Uncompressing 
> Linux..." from
> > being sent to serial port. This is necessary if the primary 
> serial port is
> > used for something other than kernel debugging (e.g. some 
> external device
> > controlled by serial commands).
> > 
> > Signed-off-by: Maximilian Schwerin <mvs@tigris.de>
> > ---
> >  arch/arm/Kconfig.debug          |    9 +++++++++
> >  arch/arm/boot/compressed/misc.c |    4 ++++
> >  2 files changed, 13 insertions(+), 0 deletions(-)
> > 
> > diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug
> > index e968a52..96e90dc 100644
> > --- a/arch/arm/Kconfig.debug
> > +++ b/arch/arm/Kconfig.debug
> > @@ -46,6 +46,15 @@ config OLD_MCOUNT
> >  	depends on FUNCTION_TRACER && FRAME_POINTER
> >  	default y
> >  
> > +config DEBUG_DECOMPRESS_KERNEL
> > +	bool "Using serial port during decompressing kernel"
> > +	depends on DEBUG_KERNEL
> > +	default n
> > +	help
> > +	  If you say Y here you will confirm the start and the end of
> > +	  decompressing Linux seeing "Uncompressing Linux... " and
> > +	  " done, booting the kernel.\n" on console.
> 
> First, "default n" is the default already, so you don't need 
> to provide 
> it.

Makes sense.

> Next, this is going to disable the output by default for 
> everyone which 
> is an unwelcome change.  You should make sure that the 
> default behavior 
> is like before, and that the option allows you to disable the output.
> 
> And then the DEBUG_DECOMPRESS_KERNEL option is a rather bad 
> name.  This 
> output has not been considered "debugging" before.  What about 
> "INHIBIT_DECOMPRESSOR_OUTPUT" instead?

This is something I copied from arch/mn10300/Kconfig.debug (see http://kernel.org/doc/menuconfig/arch-mn10300-Kconfig.debug.html).

> > diff --git a/arch/arm/boot/compressed/misc.c 
> b/arch/arm/boot/compressed/misc.c
> > index 8e2a8fc..edf4a35 100644
> > --- a/arch/arm/boot/compressed/misc.c
> > +++ b/arch/arm/boot/compressed/misc.c
> > @@ -144,11 +144,15 @@ decompress_kernel(unsigned long 
> output_start, unsigned long free_mem_ptr_p,
> >  
> >  	arch_decomp_setup();
> >  
> > +#ifdef CONFIG_DEBUG_DECOMPRESS_KERNEL
> >  	putstr("Uncompressing Linux...");
> > +#endif /* CONFIG_DEBUG_DECOMPRESS_KERNEL */
> >  	ret = do_decompress(input_data, input_data_end - input_data,
> >  			    output_data, error);
> >  	if (ret)
> >  		error("decompressor returned an error");
> > +#ifdef CONFIG_DEBUG_DECOMPRESS_KERNEL
> >  	else
> >  		putstr(" done, booting the kernel.\n");
> > +#endif /* CONFIG_DEBUG_DECOMPRESS_KERNEL */
> 
> That would be cleaner if you simply redefined putstr() to an 
> empty stub.  
> Similarly for error() which still can output to the same UART.
> 
> 
> Nicolas
> 

Thanks for the feedback both of you. I'll get into contact with the OMAP guys and will try to find a fix on the platform level.

Cheers, m.
diff mbox

Patch

diff --git a/arch/arm/Kconfig.debug b/arch/arm/Kconfig.debug
index e968a52..96e90dc 100644
--- a/arch/arm/Kconfig.debug
+++ b/arch/arm/Kconfig.debug
@@ -46,6 +46,15 @@  config OLD_MCOUNT
 	depends on FUNCTION_TRACER && FRAME_POINTER
 	default y
 
+config DEBUG_DECOMPRESS_KERNEL
+	bool "Using serial port during decompressing kernel"
+	depends on DEBUG_KERNEL
+	default n
+	help
+	  If you say Y here you will confirm the start and the end of
+	  decompressing Linux seeing "Uncompressing Linux... " and
+	  " done, booting the kernel.\n" on console.
+
 config DEBUG_USER
 	bool "Verbose user fault messages"
 	help
diff --git a/arch/arm/boot/compressed/misc.c b/arch/arm/boot/compressed/misc.c
index 8e2a8fc..edf4a35 100644
--- a/arch/arm/boot/compressed/misc.c
+++ b/arch/arm/boot/compressed/misc.c
@@ -144,11 +144,15 @@  decompress_kernel(unsigned long output_start, unsigned long free_mem_ptr_p,
 
 	arch_decomp_setup();
 
+#ifdef CONFIG_DEBUG_DECOMPRESS_KERNEL
 	putstr("Uncompressing Linux...");
+#endif /* CONFIG_DEBUG_DECOMPRESS_KERNEL */
 	ret = do_decompress(input_data, input_data_end - input_data,
 			    output_data, error);
 	if (ret)
 		error("decompressor returned an error");
+#ifdef CONFIG_DEBUG_DECOMPRESS_KERNEL
 	else
 		putstr(" done, booting the kernel.\n");
+#endif /* CONFIG_DEBUG_DECOMPRESS_KERNEL */
 }