I'm having an issue getting the root cell to boot.
Log is as follows:
U-Boot SPL 2019.04-master+geed200e0 (Sep 17 2021 - 02:06:08 +0000)
Normal Boot
Trying to boot from MMC1
Load image from MMC/SD 0x6b800
U-Boot 2019.04-master+geed200e0 (Sep 17 2021 - 02:06:08 +0000)
CPU: NXP i.MX8QM RevB A53 at 1200 MHz at 60C
Model: SECO i.MX8QM C26
Board: iMX8QM C26
Boot: MMC0
DRAM: 4 GiB
Debug uart: serial@5a060000
Additional uart: serial@5a070000
MMC: FSL_SDHC: 0, FSL_SDHC: 1, FSL_SDHC: 2
Loading Environment from MMC... OK
In: serial@5a060000
Out: serial@5a060000
Err: serial@5a060000
BuildInfo:
- SCFW 4e91f37b, SECO-FW d7523fe8, IMX-MKIMAGE cce8c4da, ATF 70fa7bc
- U-Boot 2019.04-master+geed200e0
flash target is MMC:0
Net:
Warning: ethernet@5b040000 (eth0) using random MAC address - b2:94:0f:15:ef:52
eth0: ethernet@5b040000
Fastboot: Normal
Normal Boot
Hit any key to stop autoboot: 0
u-boot seco c26=>
u-boot seco c26=> setenv bootargs console=ttyLP0,115200,earlycon=lpuart32,0x5a060000,115200 mem=1024M root=/dev/mmcblk0p2 rootwait rw clk_ignore_unused
u-boot seco c26=> ext2load mmc 0:1 0x80280000 Image
26073600 bytes read in 372 ms (66.8 MiB/s)
u-boot seco c26=> ext2load mmc 0:1 0x83000000 seco-imx8qm-c26-root.dtb
115705 bytes read in 16 ms (6.9 MiB/s)
u-boot seco c26=> scu_rm dtb 0x83000000
fdt addr 0000000083000000
u-boot seco c26=> booti 0x80280000 - 0x83000000
## Flattened Device Tree blob at 83000000
Booting using the fdt blob at 0x83000000
Loading Device Tree to 00000000df6e0000, end 00000000df6ff3f8 ... OK
Disable gpt0@5d140000, resource id 207 not owned
/dma-controller@5a1f0000, 60740
/dma-controller@591F0000, 61584
/dma-controller@591F0000, 61584
/dma-controller@599F0000, 62628
Starting kernel ...
^ This is where it hangs
manual u-boot booting steps:
setenv bootargs console=ttyLP0,115200,earlycon=lpuart32,0x5a060000,115200 mem=1024M root=/dev/mmcblk0p2 rootwait rw clk_ignore_unused
ext2load mmc 0:1 0x80280000 Image
ext2load mmc 0:1 0x83000000 seco-imx8qm-c26-root.dtb
scu_rm dtb 0x83000000
booti 0x80280000 - 0x83000000
Configurations and data:
Linux : 4.19 (yocto)
u-boot: SPL 2019.04
Jailhouse: v0.10
Git log of jailhouse version for reference:
commit e83ab629ccc6f44e4caa05bc51c66d2f86546ee6 (HEAD -> devtool, tag: rel_imx_4.19.35_1.1.0, tag: rel_imx_4.14.98_2.3.3_patch, tag: rel_imx_4.14.98_2.3.1_patch, tag: rel_imx_4.14.98_2.3.0, tag: rel_imx_4.14.98_2.2.0, tag: devtool-patched, tag: devtool-base, origin/imx_4.19.35_1.1.0, origin/imx_4.14.98_2.3.0, origin/imx_4.14.98_2.2.0, imx_4.19.35_1.1.0)
Author: Peng Fan <peng.fan@nxp.com>
Date: Wed Jul 3 14:43:59 2019 +0800
Pass MU2_A interrupts to inmate linux
The 4.19 Linux use MU interrupt for IPC, so we need pass MU_2A interrupt
to inmate linux.
Signed-off-by: Peng Fan <peng.fan@nxp.com>
Device Tree (sits atop what is line-for-line fsl-imx8qm.dtsi):
/*
* Copyright 2018 NXP
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#include "seco-imx8qm-c26-wrapper.dts"
/ {
domu {
/*
* There are 5 MUs, 0A is used by root cell, 1A is used
* by ATF, so for non-root cell, 2A/3A/4A could be used.
* SC_R_MU_0A
* SC_R_MU_1A
* SC_R_MU_2A
* SC_R_MU_3A
* SC_R_MU_4A
* The rsrcs and pads will be configured by uboot scu_rm cmd
*/
#address-cells = <1>;
#size-cells = <0>;
doma {
/*
* This is not for domu, this is just reuse
* the method for jailhouse inmate non root cell
* Linux.
*/
compatible = "xen,domu";
/*
* The reg property will be updated by U-Boot to
* reflect the partition id.
*/
reg = <0>;
init_on_rsrcs = <
SC_R_MU_2A
>;
rsrcs = <
SC_R_SDHC_0
SC_R_DMA_0_CH16
SC_R_DMA_0_CH17
SC_R_UART_2
SC_R_MU_2A
>;
pads = <
/* emmc */
SC_P_EMMC0_CLK
SC_P_EMMC0_CMD
SC_P_EMMC0_DATA0
SC_P_EMMC0_DATA1
SC_P_EMMC0_DATA2
SC_P_EMMC0_DATA3
SC_P_EMMC0_DATA4
SC_P_EMMC0_DATA5
SC_P_EMMC0_DATA6
SC_P_EMMC0_DATA7
SC_P_EMMC0_STROBE
SC_P_EMMC0_RESET_B
/* lpuart2 */
SC_P_UART0_RTS_B
SC_P_UART0_CTS_B
>;
};
};
};
&{/reserved-memory} {
jh_reserved: jh@fdc00000 {
no-map;
reg = <0x0 0xfdc00000 0x0 0x400000>;
};
loader_reserved: loader@fdb00000 {
no-map;
reg = <0x0 0xfdb00000 0x0 0x00100000>;
};
ivshmem_reserved: ivshmem@fd900000 {
no-map;
reg = <0x0 0xfd900000 0x0 0x00200000>;
};
pci_reserved: pci@fd700000 {
no-map;
reg = <0x0 0xfd700000 0x0 0x00200000>;
};
/* Decrease if no need such big memory */
inmate_reserved: inmate@df7000000 {
no-map;
reg = <0x0 0xdf700000 0x0 0x1e000000>;
};
};
&smmu {
/* Jailhouse hypervisor will initialize SMMU and use it. */
status = "disabled";
};
&usdhc1 {
/* Let U-Boot program SID */
iommus = <&smmu 0x10 0x7f80>;
/delete-property/ compatible;
};
&lpuart2 {
/* Let inmate linux use this for console */
status = "disabled";
};
The *.dtb does boot without using the jailhouse dtb. I tried disabling those resources (one at a time and all together) to see if it made any difference but the symptom is the same. I'm working on getting a jtag debugger up and running now to get more data.
Does seco-imx8qm-c26-wrapper.dtb or seco-imx8qm-c26.dtb boot without using jailhouse dtb?
Do you have a jtag to see where it hangs? It is a bit hard to tell where it hangs without any log.
Maybe worth give a try with dropping the resoruces one by one to see whether it is one resource cause issue.
SC_R_SDHC_0
SC_R_DMA_0_CH16
SC_R_DMA_0_CH17
SC_R_UART_2
SC_R_MU_2A
Good!!