From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mian Yousaf Kaukab Date: Fri, 14 Jun 2019 19:09:34 +0200 Subject: [U-Boot] Jetson TX2 hangs during dhcp boot Message-ID: <20190614170934.GA31159@suse.de> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Hi, I am seeing a hang with dhcp boot on Jetson TX2. Its running firmware from L4T 32.1 with U-Boot from master branch (c2ea87883e) with [1] applied. I use following command sequence at u-boot prompt to boot: Tegra186 (P2771-0000-500) # setenv ftdfile tegra186-p2771-0000.dtb Tegra186 (P2771-0000-500) # setenv boot_targets dhcp Tegra186 (P2771-0000-500) # boot Last thing I see is the following error from TF-A and the board hangs: ERROR: ARI request timed out: req 89 on CPU 4 ASSERT: plat/nvidia/tegra/soc/t186/drivers/mce/ari.c <127> : retries != 0U Here is the complete log: U-Boot 2019.07-rc4-00137-g6fefd9c475 (Jun 14 2019 - 16:27:34 +0200) TEGRA186 Model: NVIDIA P2771-0000-500 Board: NVIDIA P2771-0000 DRAM: 7.8 GiB MMC: sdhci at 3400000: 1, sdhci at 3460000: 0 Loading Environment from MMC... OK In: serial Out: serial Err: serial Net: eth0: ethernet at 2490000 Hit any key to stop autoboot: 0 Tegra186 (P2771-0000-500) # setenv boot_targets dhcp Tegra186 (P2771-0000-500) # boot starting USB... No working controllers found maximum number of regions parsed, aborting ethernet at 2490000 Waiting for PHY auto negotiation to complete...... done BOOTP broadcast 1 BOOTP broadcast 2 BOOTP broadcast 3 DHCP client bound to address xx.xx.xx.xx (1259 ms) Using ethernet at 2490000 device TFTP from server xx.xx.xx.xx; our IP address is xx.xx.xx.xx Filename 'boot.scr.uimg'. Load address: 0x82600000 Loading: * TFTP error: 'File not found' (1) Not retrying... ethernet at 2490000 Waiting for PHY auto negotiation to complete........ done BOOTP broadcast 1 DHCP client bound to address xx.xx.xx.xx (5 ms) Using ethernet at 2490000 device TFTP from server xx.xx.xx.xx; our IP address is xx.xx.xx.xx Filename 'aarch64/grub.efi'. Load address: 0x80280000 Loading: T #######T ########################################################## ################################################################# ## 181.6 KiB/s done Bytes transferred = 1936896 (1d8e00 hex) ethernet at 2490000 Waiting for PHY auto negotiation to complete........ done Using ethernet at 2490000 device TFTP from server xx.xx.xx.xx; our IP address is xx.xx.xx.xx Filename 'dtb/tegra186-p2771-0000.dtb'. Load address: 0x82400000 Loading: ### 2.6 MiB/s done Bytes transferred = 30196 (75f4 hex) MMC: no card present Scanning disk sdhci at 3400000.blk... Disk sdhci at 3400000.blk not ready Scanning disk sdhci at 3460000.blk... Found 32 disks copying carveout for /host1x at 13e00000/display-hub at 15200000/display at 15200000... copying carveout for /host1x at 13e00000/display-hub at 15200000/display at 15210000... copying carveout for /host1x at 13e00000/display-hub at 15200000/display at 15220000... ERROR: ARI request timed out: req 89 on CPU 4 ASSERT: plat/nvidia/tegra/soc/t186/drivers/mce/ari.c <127> : retries != 0U It turned out that the last call to TF-A was from __asm_invalidate_l3_icache(). Following is the call trace: efi_load_image() efi_load_pe() invalidate_icache_all() __asm_invalidate_l3_icache() __asm_invalidate_l3_icache() has been called a couple of times before this point without any issues. If I boot the same EFI binary manually with bootefi it works fine. I can see that __asm_invalidate_l3_icache() returns without the hang. Following is the working command sequence: Tegra186 (P2771-0000-500) # dhcp Tegra186 (P2771-0000-500) # tftpboot $fdt_addr_r dtb/tegra186-p2771-0000.dtb Tegra186 (P2771-0000-500) # tftpboot $kernel_addr_r aarch64/grub.efi Tegra186 (P2771-0000-500) # bootefi $kernel_addr_r $fdt_addr_r This issue is 100% reproducible. Any thoughts on what could be wrong or how to debug it further? Thanks, Yousaf [1]: https://patchwork.ozlabs.org/patch/1115052/