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

Andre Heider a.heider at gmail.com
Wed Aug 26 16:43:10 CEST 2020


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=...".
Debian's boot.scr set "bootargs" to "... console=${console}".
So we end up with with kernel args "console=console=..." :)

So we need to strip one "console=", at least for debian's boot scripts:
"setenv console ttyMV0,115200 earlycon=ar3700_uart,0xd0012000" and it 
works again, including earlycon.

Regards,
Andre


More information about the U-Boot mailing list