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? 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