diff mbox

[U-Boot,v3,2/3] bootm: Move silencing of linux console to deprecated config option.

Message ID 1326234382-8787-3-git-send-email-dianders@chromium.org
State Superseded
Headers show

Commit Message

Doug Anderson Jan. 10, 2012, 10:26 p.m. UTC
If you would like the old behavior of having bootm modify the bootargs
to silence the linux console when CONFIG_SILENT_CONSOLE is defined,
you now need to define the config CONFIG_DEPRECATED_SILENT_LINUX_CONSOLE.
A previous change already added this new config to all known users of
CONFIG_SILENT_CONSOLE.

Signed-off-by: Doug Anderson <dianders@chromium.org>
---
Changes in v2:
- Better description of CONFIG_SILENT_CONSOLE in README
- Example of how to use a script to silence Linux console in a non-
deprecated way in doc/README.silent

Changes in v3:
- Use __deprecated #define instead of direct gcc attribute
- Minor wording updates in doc/README.silent

 README             |   10 ++++++----
 common/cmd_bootm.c |   10 +++++-----
 doc/README.silent  |   27 +++++++++++++++++++++++----
 3 files changed, 34 insertions(+), 13 deletions(-)
diff mbox

Patch

diff --git a/README b/README
index 7916777..5ba8482 100644
--- a/README
+++ b/README
@@ -605,10 +605,12 @@  The following options need to be configured:
 		default i/o. Serial console can be forced with
 		environment 'console=serial'.
 
-		When CONFIG_SILENT_CONSOLE is defined, all console
-		messages (by U-Boot and Linux!) can be silenced with
-		the "silent" environment variable. See
-		doc/README.silent for more information.
+		When CONFIG_SILENT_CONSOLE is defined, all U-Boot console
+		messages can be silenced with the "silent" environment
+		variable. Linux console messages will not be silenced
+		based on the "silent" environment variable unless
+		CONFIG_DEPRECATED_SILENT_LINUX_CONSOLE is defined.
+		See doc/README.silent for more information.
 
 - Console Baudrate:
 		CONFIG_BAUDRATE - in bps
diff --git a/common/cmd_bootm.c b/common/cmd_bootm.c
index d5745b1..775a7dc 100644
--- a/common/cmd_bootm.c
+++ b/common/cmd_bootm.c
@@ -83,8 +83,8 @@  extern flash_info_t flash_info[]; /* info for FLASH chips */
 static int do_imls(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]);
 #endif
 
-#ifdef CONFIG_SILENT_CONSOLE
-static void fixup_silent_linux(void);
+#ifdef CONFIG_DEPRECATED_SILENT_LINUX_CONSOLE
+static void fixup_silent_linux(void) __deprecated;
 #endif
 
 static image_header_t *image_get_kernel(ulong img_addr, int verify);
@@ -673,7 +673,7 @@  int do_bootm(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 
 	show_boot_progress(8);
 
-#ifdef CONFIG_SILENT_CONSOLE
+#ifdef CONFIG_DEPRECATED_SILENT_LINUX_CONSOLE
 	if (images.os.os == IH_OS_LINUX)
 		fixup_silent_linux();
 #endif
@@ -1228,7 +1228,7 @@  U_BOOT_CMD(
 /*******************************************************************/
 /* helper routines */
 /*******************************************************************/
-#ifdef CONFIG_SILENT_CONSOLE
+#ifdef CONFIG_DEPRECATED_SILENT_LINUX_CONSOLE
 static void fixup_silent_linux(void)
 {
 	char buf[256], *start, *end;
@@ -1259,7 +1259,7 @@  static void fixup_silent_linux(void)
 	setenv("bootargs", buf);
 	debug("after silent fix-up: %s\n", buf);
 }
-#endif /* CONFIG_SILENT_CONSOLE */
+#endif /* CONFIG_DEPRECATED_SILENT_LINUX_CONSOLE */
 
 
 /*******************************************************************/
diff --git a/doc/README.silent b/doc/README.silent
index a26e3df..32739ed 100644
--- a/doc/README.silent
+++ b/doc/README.silent
@@ -1,5 +1,5 @@ 
 The config option CONFIG_SILENT_CONSOLE can be used to quiet messages
-on the console.  If the option has been enabled, the output can be
+on the U-Boot console.  If the option has been enabled, the output can be
 silenced by setting the environment variable "silent".  The variable
 is latched into the global data at an early stage in the boot process
 so deleting it with "setenv" will not take effect until the system is
@@ -15,6 +15,25 @@  The following actions are taken if "silent" is set at boot time:
    suppressed automatically. Make sure to enable "nulldev" by
    #defining CONFIG_SYS_DEVICE_NULLDEV in your board config file.
 
- - When booting a linux kernel, the "bootargs" are fixed up so that
-   the argument "console=" will be in the command line, no matter how
-   it was set in "bootargs" before.
+
+The config option CONFIG_SILENT_CONSOLE previously also caused u-boot
+to silence the Linux console (also based on the "silent" environment
+variable) by modifying the "bootargs" so that the argument "console="
+would be in the command line no matter how it was set in "bootargs"
+before.  That behavior is now relegated to the config option
+CONFIG_DEPRECATED_SILENT_LINUX_CONSOLE with the caveat that using
+the option opens you up to a buffer overrun if your linux bootargs
+are >256 bytes.
+
+If you were relying on the old behavior of CONFIG_SILENT_CONSOLE to
+also silence the Linux console, a script like this might help you (where
+normal_bootargs is the old bootargs without the console= part,
+console_args is the non-silent console settings, and old_bootcmd is
+the old bootcmd):
+
+ setenv generate_bootargs 'if test -n "$silent"; then \
+     setenv bootargs $normal_bootargs console=; \
+   else \
+     setenv bootargs $normal_bootargs $console_args;
+   fi'
+ setenv bootcmd 'run generate_bootargs; run old_bootcmd'