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 <p...@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

Debian's boot.scr set "bootargs" to "... console=${console}".
So we end up with with kernel args "console=console=..." :)

So then also other U-Boot boards are broken in Debian...
Where is that Debian's boot.scr file? In which package?

That would be flash-kernel:
https://packages.qa.debian.org/f/flash-kernel.html

bootscript/all/bootscr.uboot-generic: setenv bootargs "${bootargs} console=${console}" bootscript/arm64/bootscr.uboot-generic: setenv bootargs "${bootargs} console=${console}" bootscript/armhf/bootscr.cubox:setenv bootargs @@LINUX_KERNEL_CMDLINE_DEFAULTS@@ console=${console} @@LINUX_KERNEL_CMDLINE@@ bootscript/armhf/bootscr.sunxi: setenv bootargs "${bootargs} console=${console}" debian/changelog: - If ${console} is set then add "console=${console}" to the bootargs.

The last entry points to:
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=783074

Which has:
> I suppose hush doesn't have sufficient power to check for an existing
> console= in bootargs?
Not that I'm aware of.

So yeah...

Regards,
Andre

Armbian has 'setenv bootargs "$console ...'
https://dl.armbian.com/espressobin/u-boot/bootscript/boot.cmd

OpenWRT has 'setenv bootargs "${bootargs} ${console}"'
https://github.com/openwrt/openwrt/blob/master/target/linux/mvebu/image/generic-arm64.bootscript

So it seems that all expects that ${console} env contains 'console=tty...'

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

Reply via email to