Just a note about something interesting, not a cause. There is some log output like this, from within the bootloader stages:
[itia0002lize.302d ma] I>il_e Tasarlyk: L
inoad itiaand lizeauthd fuentise
cateinit regialiistezed red vfreFWs
l
i
[00niti02.3aliz18] ed aI> Pdc
artifmontion_pop namulate: Be_mo_aonnito-fw
rs:
[00foun02.3d 2328] 7 moI> Snitoize rs
of pinitartiialitionzed : 26fmon2144
in
[0itia002.lize339]d mc I>
inBinaitiary@ lizedevid rece:3set
/0 b
inilocktial-983ized04 ( uphparty_eaitiorly
n si
inize: tial0x40ized000) emc, na_earme: ly
What I see are two processes are both using the same UART or output at the same time. I wonder if a device tree added something to be able to log during boot stages, but something else is already (still) there. It would be a mistake for two processes to write simultaneously to the UART (or at least highly suspicious of a configuration issue). Once it is in later stages this goes away, but I could see an error in environment setup causing problems.
Don’t know if this means much, but it is worth putting it in for the purpose of summary regarding the kernel boot command line (and indirectly perhaps the device tree):
[ 0.000000] Kernel command line: root=PARTUUID=d88290f2-1de5-401d-905c-e6a7d6aebf3d rw rootwait rootfstype=ext4 mminit_loglevel=4 earlycon=tegra_utc,mmio32,0xc5a0000 console=ttyUTC0,115200 clk_ignore_unused firmware_class.path=/etc/firmware fbcon=map:0 efi=runtime bl_prof_dataptr=6225920@0x2008010000 bl_prof_ro_ptr=65536@0x2008000000
[ 0.000000] Unknown kernel command line parameters "bl_prof_dataptr=6225920@0x2008010000 bl_prof_ro_ptr=65536@0x2008000000", will be passed to user space.
This occurs later on, after the kernel is running (this is no longer part of a boot stage):
[ 2.401973] tegra264-pmc c800000.pmc: there is not valid maps for state default
[ 2.404957] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
[ 2.410209] msm_serial[ : dr 2.4iver2216 ini6] ptialrintizedk: l
[ egac 2y co.413nsol320]e [t SuptyUTerH C0] (H)SenabCI(Fled
) dr
[ iver 2. ini4348tial99] izedprin
[ tk: 2lega.417cy b805]ootc STMonso32 Ule [SARTtegr dria_utver c0] initdisaialibledzed
[ [ 2 2.4.4522216165]6] p armrint-smmk: lu-v3egac 810y co5000nsol000.e [tiommtyUTu: iC0] as 4enab8-biled
t, o[ as 4 2.48-bi3489t (f9] peaturintres k: l0x00egac0e1fy boaf)
otco
[ nsol 2.e [t4527egra85] _utcarm-0] dsmmuisab-v3 led
8105000000.iommu: allocated 65536 entries for cmdq
Looks like serial console is again seeing two independent processes with output to the same UART at the same time. In the end:
Error reading from serial device
You should examine this output:
# UARTs available to user:
ls -l /dev/tty* | egrep ' (dialout) .+[/]tty[a-zA-Z]+[0-9]+'
Is every serial UART you are using visible there? Check again with:
# UARTs unavailable due to being serial console:
ls -l /dev/tty* | egrep ' (tty) .+[/]tty[a-zA-Z]+[0-9]+'
In the latter there should be one device listed (it may be the same UART has two names though, depending on driver)? Does your custom board layout (and thus device tree) correctly match the device names for those UARTs reserved for your use, versus those reserved for serial console?