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

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

Reply via email to