[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#969070: $console handling might result in unbootable system



On 04.09.20 07:20, Andre Heider wrote:
> On 04/09/2020 03:10, Vagrant Cascadian wrote:
>> On 2020-08-28, Andre Heider wrote:
>>> Stats:
>>> Going by u-boot upstream, only 17 of +700 boards set $console (grep for

You seem

>>> CONFIG_DEFAULT_CONSOLE, which too is deprecated).

I found no CONFIG_DEFAULT_CONSOLE is deprecated?

>>>
>>> Going by linux upstream, 112 of 125 arm64 boards used "stdout-path":
>>> $ find /usr/lib/linux-image-4.19.0-10-arm64 -name \*.dtb|xargs strings

<snip />
>
> Given all that, I propose the attached patch.


On the Wandboard Quad which is one of the elder boards we have:

=> echo $console
ttymxc0

It is defined here:

include/configs/wandboard.h:48: "console=ttymxc0\0" \

Many boards set the console value directly via the
CONFIG_EXTRA_ENV_SETTINGS, e.g. include/configs/mccmon6.h:

#define CONFIG_EXTRA_ENV_SETTINGS \
        "console=ttymxc0,115200 quiet\0" \
        "boot_nor=" \
                "setenv kernelnor 0x08180000;" \
                "setenv bootargs console=${console} " \

So having a value of the console environment variable without "console="
seems to be the correct form in U-Boot.

We have only a few places where CONFIG_DEFAULT_CONSOLE is used in U-Boot:

git grep -n DEFAULT_CONS
include/configs/arndale.h:21:#define CONFIG_DEFAULT_CONSOLE
"console=ttySAC2,115200n8\0"
include/configs/espresso7420.h:22:#define CONFIG_DEFAULT_CONSOLE
"console=ttySAC1,115200n8\0"
include/configs/odroid.h:41:#define CONFIG_DEFAULT_CONSOLE
"console=ttySAC1,115200n8\0"
include/configs/odroid.h:152:   "console=" CONFIG_DEFAULT_CONSOLE \
include/configs/odroid_xu3.h:28:#define CONFIG_DEFAULT_CONSOLE
"console=ttySAC2,115200n8\0"
include/configs/odroid_xu3.h:100:       "console=" CONFIG_DEFAULT_CONSOLE \
include/configs/origen.h:30:#define CONFIG_DEFAULT_CONSOLE
"console=ttySAC1,115200n8\0"
include/configs/peach-pi.h:27:#define CONFIG_DEFAULT_CONSOLE
"console=ttySAC1,115200n8\0"
include/configs/peach-pit.h:27:#define CONFIG_DEFAULT_CONSOLE
"console=ttySAC1,115200n8\0"
include/configs/s5p_goni.h:88:#define CONFIG_DEFAULT_CONSOLE
"console=ttySAC2,115200n8\0"
include/configs/s5p_goni.h:134: "console=" CONFIG_DEFAULT_CONSOLE \
include/configs/s5pc210_universal.h:30:#define CONFIG_DEFAULT_CONSOLE
        "console=ttySAC1,115200n8\0"
include/configs/s5pc210_universal.h:105:        "console="
CONFIG_DEFAULT_CONSOLE \
include/configs/smdk5250.h:21:#define CONFIG_DEFAULT_CONSOLE
"console=ttySAC1,115200n8\0"
include/configs/smdk5420.h:28:#define CONFIG_DEFAULT_CONSOLE
"console=ttySAC1,115200n8\0"
include/configs/smdk5420.h:30:#define CONFIG_DEFAULT_CONSOLE
"console=ttySAC1,115200n8\0"
include/configs/smdkv310.h:40:#define CONFIG_DEFAULT_CONSOLE
"console=ttySAC2,115200n8\0"
include/configs/snow.h:20:#define CONFIG_DEFAULT_CONSOLE
"console=ttySAC1,115200n8\0"
include/configs/spring.h:15:#define CONFIG_DEFAULT_CONSOLE
"console=ttySAC1,115200n8\0"
include/configs/trats.h:37:#define CONFIG_DEFAULT_CONSOLE
"console=ttySAC2,115200n8\0"
include/configs/trats.h:115:    "console=" CONFIG_DEFAULT_CONSOLE \
include/configs/trats2.h:35:#define CONFIG_DEFAULT_CONSOLE
"console=ttySAC2,115200n8\0"
include/configs/trats2.h:98:    "console=" CONFIG_DEFAULT_CONSOLE \
scripts/config_whitelist.txt:293:CONFIG_DEFAULT_CONSOLE

So what should be done is to send patches for upstream U-Boot to correct
the following includes:

include/configs/odroid.h
include/configs/odroid_xu3.h
include/configs/s5p_goni.h
include/configs/s5pc210_universal.h
include/configs/trats.h
include/configs/trats2.h

Make sure that you also correct CONFIG_EXTRA_ENV_SETTINGS in these
includes,e.g. something like:

diff --git a/include/configs/odroid.h b/include/configs/odroid.h
index befb9f9aa1..f31d9bb3aa 100644
--- a/include/configs/odroid.h
+++ b/include/configs/odroid.h
@@ -38,7 +38,7 @@
 /* Console configuration */

 #define CONFIG_BOOTCOMMAND             "run distro_bootcmd ; run autoboot"
-#define CONFIG_DEFAULT_CONSOLE         "console=ttySAC1,115200n8\0"
+#define CONFIG_DEFAULT_CONSOLE         "ttySAC1,115200n8"

 #define CONFIG_SYS_INIT_SP_ADDR        (CONFIG_SYS_LOAD_ADDR \
                                        - GENERATED_GBL_DATA_SIZE)
@@ -116,7 +116,7 @@
                "fi;\0" \
        "kernel_args=" \
                "setenv bootargs
root=/dev/mmcblk${mmcrootdev}p${mmcrootpart}" \
-               " rootwait ${console} ${opts}\0" \
+               " rootwait console=${console} ${opts}\0" \
        "boot_script=" \
                "run loadbootscript;" \
                "source ${scriptaddr}\0" \
@@ -156,8 +156,8 @@
        "mmcrootpart=2\0" \
        "dfu_alt_system="CONFIG_DFU_ALT \
        "dfu_alt_info=Please reset the board\0" \
-       "consoleon=set console console=ttySAC1,115200n8; save; reset\0" \
-       "consoleoff=set console console=ram; save; reset\0" \
+       "consoleon=set console ttySAC1,115200n8; save; reset\0" \
+       "consoleoff=set console ram; save; reset\0" \
        "initrdname=uInitrd\0" \
        "ramdisk_addr_r=0x42000000\0" \
        "scriptaddr=0x42000000\0" \

Best regards

Heinrich


Reply to: