diff --git a/README b/README
index 391880765a0865f05a71efc6dedf40d99e61d7fe..96cc4668e0c219731c318d0bb577012d6c8d08a4 100644
--- a/README
+++ b/README
@@ -4627,6 +4627,12 @@ List of environment variables (most likely not complete):
 
   npe_ucode	- set load address for the NPE microcode
 
+  silent_linux  - If set then linux will be told to boot silently, by
+		  changing the console to be empty. If "yes" it will be
+		  made silent. If "no" it will not be made silent. If
+		  unset, then it will be made silent if the U-Boot console
+		  is silent.
+
   tftpsrcport	- If this is set, the value is used for TFTP's
 		  UDP source port.
 
diff --git a/common/cmd_bootm.c b/common/cmd_bootm.c
index 046e22ff48f57efd4e9957d311b64377c2e048dd..31ec0f4bbcd5aa8a0435da7c8c55553456db9391 100644
--- a/common/cmd_bootm.c
+++ b/common/cmd_bootm.c
@@ -1384,9 +1384,19 @@ static void fixup_silent_linux(void)
 	char *buf;
 	const char *env_val;
 	char *cmdline = getenv("bootargs");
+	int want_silent;
 
-	/* Only fix cmdline when requested */
-	if (!(gd->flags & GD_FLG_SILENT))
+	/*
+	 * Only fix cmdline when requested. The environment variable can be:
+	 *
+	 *	no - we never fixup
+	 *	yes - we always fixup
+	 *	unset - we rely on the console silent flag
+	 */
+	want_silent = getenv_yesno("silent_linux");
+	if (want_silent == 0)
+		return;
+	else if (want_silent == -1 && !(gd->flags & GD_FLG_SILENT))
 		return;
 
 	debug("before silent fix-up: %s\n", cmdline);