[PATCH 4/5] arm: mvebu: Espressobin: Define console env

Andre Heider a.heider at gmail.com
Thu Aug 27 06:51:57 CEST 2020


On 26/08/2020 17:10, Pali Rohár wrote:
> On Wednesday 26 August 2020 16:43:10 Andre Heider wrote:
>> On 26/08/2020 16:10, Pali Rohár wrote:
>>> On Wednesday 26 August 2020 16:00:05 Andre Heider wrote:
>>>> On 26/08/2020 15:31, Pali Rohár wrote:
>>>>> On Wednesday 26 August 2020 15:22:26 Andre Heider wrote:
>>>>>> Hi,
>>>>>>
>>>>>> On 24/08/2020 16:25, Pali Rohár wrote:
>>>>>>> Some distribution bootscripts append console env into boot cmdline.
>>>>>>> So define console env correctly to have early console access.
>>>>>>>
>>>>>>> Signed-off-by: Pali Rohár <pali at kernel.org>
>>>>>>> ---
>>>>>>>      include/configs/mvebu_armada-37xx.h | 2 ++
>>>>>>>      1 file changed, 2 insertions(+)
>>>>>>>
>>>>>>> diff --git a/include/configs/mvebu_armada-37xx.h b/include/configs/mvebu_armada-37xx.h
>>>>>>> index 6feceda757..b473072976 100644
>>>>>>> --- a/include/configs/mvebu_armada-37xx.h
>>>>>>> +++ b/include/configs/mvebu_armada-37xx.h
>>>>>>> @@ -17,6 +17,7 @@
>>>>>>>      #define CONFIG_SYS_BAUDRATE_TABLE	{ 9600, 19200, 38400, 57600, \
>>>>>>>      					  115200, 230400, 460800, 921600 }
>>>>>>> +#define CONFIG_DEFAULT_CONSOLE "console=ttyMV0,115200 earlycon=ar3700_uart,0xd0012000"
>>>>>>>      /*
>>>>>>>       * For booting Linux, the board info and command line data
>>>>>>> @@ -99,6 +100,7 @@
>>>>>>>      	"kernel_addr=0x7000000\0"	\
>>>>>>>      	"kernel_addr_r=0x7000000\0"	\
>>>>>>>      	"ramdisk_addr_r=0x8000000\0"	\
>>>>>>> +	"console=" CONFIG_DEFAULT_CONSOLE "\0" \
>>>>>>>      	BOOTENV
>>>>>>>      #endif /* _CONFIG_MVEBU_ARMADA_37XX_H */
>>>>>>>
>>>>>>
>>>>>> this breaks booting debian with systemd for me:
>>>>>> [    4.632197] systemd-udevd[90]: Starting version 241
>>>>>> [    4.639324] systemd-udevd[91]: Failed to create udev control event
>>>>>> source: Operation not permitted
>>>>>>
>>>>>> "env delete console" and it works again.
>>>>>
>>>>> This is really suspicious. Why systemd has problems with control socket
>>>>> when console= parameter is specified on boot command line? And if
>>>>> console= parameter is problematic on command line, why console output is
>>>>> working fine? For me it looks like this variable controls something
>>>>> different, not (only) console output. Maybe some bootscript sets
>>>>> something more when it see u-boot env ${console} non-empty?
>>>>
>>>> It sounds like a bug in systemd, this may be related:
>>>> https://github.com/systemd/systemd/issues/13332
>>>>
>>>> With ugly workarounds like:
>>>> https://github.com/openembedded/openembedded-core/commit/dd6ee0b06cd8df6204cf600050516d15172302ea
>>>>
>>>> This is easy for to me to work around, but note that this systemd version is
>>>> the one shipping with current debian stable.
>>>
>>> But this looks like to be related to command line 'console=null'.
>>>
>>> Can you check which parameter is causing problem? console=... or
>>> earlycon=... ? Also do you have /dev/ttyMV0 in your system?
>>>
>>
>> yup, it's there:
>> crw--w---- 1 root tty 253, 0 Aug 26 15:09 /dev/ttyMV0
>>
>> But I think it's related to console=null because it ends up as invalid:
>> Your patch sets "console" to "console=...".
> 
> It is doing same thing as other boards in U-Boot, see:
> 
> $ git grep 'define.*CONFIG_DEFAULT_CONSOLE'
> include/configs/arndale.h:#define CONFIG_DEFAULT_CONSOLE                "console=ttySAC2,115200n8\0"
> include/configs/espresso7420.h:#define CONFIG_DEFAULT_CONSOLE   "console=ttySAC1,115200n8\0"
> include/configs/odroid.h:#define CONFIG_DEFAULT_CONSOLE         "console=ttySAC1,115200n8\0"
> include/configs/odroid_xu3.h:#define CONFIG_DEFAULT_CONSOLE             "console=ttySAC2,115200n8\0"
> include/configs/origen.h:#define CONFIG_DEFAULT_CONSOLE         "console=ttySAC1,115200n8\0"
> include/configs/peach-pi.h:#define CONFIG_DEFAULT_CONSOLE       "console=ttySAC1,115200n8\0"
> include/configs/peach-pit.h:#define CONFIG_DEFAULT_CONSOLE      "console=ttySAC1,115200n8\0"
> include/configs/s5p_goni.h:#define CONFIG_DEFAULT_CONSOLE       "console=ttySAC2,115200n8\0"
> include/configs/s5pc210_universal.h:#define CONFIG_DEFAULT_CONSOLE              "console=ttySAC1,115200n8\0"
> include/configs/smdk5250.h:#define CONFIG_DEFAULT_CONSOLE               "console=ttySAC1,115200n8\0"
> include/configs/smdk5420.h:#define CONFIG_DEFAULT_CONSOLE       "console=ttySAC1,115200n8\0"
> include/configs/smdk5420.h:#define CONFIG_DEFAULT_CONSOLE               "console=ttySAC1,115200n8\0"
> include/configs/smdkv310.h:#define CONFIG_DEFAULT_CONSOLE               "console=ttySAC2,115200n8\0"
> include/configs/snow.h:#define CONFIG_DEFAULT_CONSOLE           "console=ttySAC1,115200n8\0"
> include/configs/spring.h:#define CONFIG_DEFAULT_CONSOLE         "console=ttySAC1,115200n8\0"
> include/configs/trats.h:#define CONFIG_DEFAULT_CONSOLE          "console=ttySAC2,115200n8\0"
> include/configs/trats2.h:#define CONFIG_DEFAULT_CONSOLE         "console=ttySAC2,115200n8\0"
> 
> and:
> 
> $ git grep 'CONFIG_DEFAULT_CONSOLE' | grep -v ':#define'
> include/configs/odroid.h:       "console=" CONFIG_DEFAULT_CONSOLE \
> include/configs/odroid_xu3.h:   "console=" CONFIG_DEFAULT_CONSOLE \
> include/configs/s5p_goni.h:     "console=" CONFIG_DEFAULT_CONSOLE \
> include/configs/s5pc210_universal.h:    "console=" CONFIG_DEFAULT_CONSOLE \
> include/configs/trats.h:        "console=" CONFIG_DEFAULT_CONSOLE \
> include/configs/trats2.h:       "console=" CONFIG_DEFAULT_CONSOLE \
> scripts/config_whitelist.txt:CONFIG_DEFAULT_CONSOLE

Looking at this again, CONFIG_DEFAULT_CONSOLE with "console=" doesn't 
look like a de facto standard to me:

$ ll include/configs/|wc -l
712

$ git grep CONFIG_DEFAULT_CONSOLE|grep define|wc -l
18

Only 18 out of +700 boards use it, and all of them ttySAC*, so probably 
just copy pasta.
CONFIG_DEFAULT_CONSOLE looks like a leftover, it's not used anywhere 
except in those config headers. Some boards even define it, but don't 
use it, making it effectively dead.

On the other hand, check "git grep 'console='". So why not just add the 
earlycon to bootargs directly so it works everywhere?

Regards,
Andre


More information about the U-Boot mailing list