InES-HPMM / linux-l4t

Linux kernel 3.10 forked from Nvidia Linux4Tegra for the TX1. Branches for L4T 24.2.1. Also available: 23.1 (DEPRECATED), 24.1 (DEPRECATED).
https://blog.zhaw.ch/high-performance/
Other
21 stars 17 forks source link

Fails to boot with prebuilt image #4

Closed sergey789 closed 7 years ago

sergey789 commented 7 years ago

Downloaded both images from https://github.com/InES-HPMM/linux-l4t/wiki/l4t_prebuilt_image Boot results in failure: "ERROR: board-specific fdt fixup failed: FDT_ERR_NOTFOUND"

Complete boot log: U-Boot 2015.07-rc2-dirty (Dec 02 2016 - 16:21:18 +0100)

TEGRA210 Model: NVIDIA P2371-2180 DRAM: 4 GiB MC: Tegra SD/MMC: 0, Tegra SD/MMC: 1 *** Warning - bad CRC, using default environment

tegra-pcie: PCI regions: tegra-pcie: I/O: 0x0000000012000000-0x0000000012010000 tegra-pcie: non-prefetchable memory: 0x0000000013000000-0x0000000020000000 tegra-pcie: prefetchable memory: 0x0000000020000000-0x0000000040000000 tegra-pcie: 4x1, 1x1 configuration tegra-pcie: probing port 0, using 4 lanes tegra-pcie: link 0 down, retrying tegra-pcie: link 0 down, retrying tegra-pcie: link 0 down, retrying tegra-pcie: link 0 down, ignoring tegra-pcie: probing port 1, using 1 lanes tegra-pcie: link 1 down, retrying tegra-pcie: link 1 down, retrying tegra-pcie: link 1 down, retrying tegra-pcie: link 1 down, ignoring In: serial Out: serial Err: serial Net: No ethernet found. Hit any key to stop autoboot: 0 Tegra210 (P2371-2180) # [0000.171] [TegraBoot] (version 24.00.2015.42-mobile-8f63c9bf) [0000.176] Processing in cold boot mode Bootloader 2 [0000.181] A02 Bootrom Patch rev = 63 [0000.184] Power-up reason: reset button [0000.188] No Battery Present [0000.191] RamCode = 0 [0000.193] Platform has Ddr4 type ram [0000.196] max77620 disabling SD1 Remote Sense [0000.200] Setting Ddr voltage to 1125mv [0000.204] Serial Number of Pmic Max77663: 0x2003b6 [0000.212] Entering ramdump check [0000.215] Get RamDumpCarveOut = 0x0 [0000.218] RamDumpCarveOut=0x0, RamDumperFlag=0xe59ff3f8 [0000.223] Last reboot was clean, booting normally! [0000.228] Sdram initialization is successful [0000.232] SecureOs Carveout Base=0xff800000 Size=0x00800000 [0000.238] GSC1 Carveout Base=0xff700000 Size=0x00100000 [0000.243] GSC2 Carveout Base=0xff600000 Size=0x00100000 [0000.248] GSC3 Carveout Base=0xff500000 Size=0x00100000 [0000.253] GSC4 Carveout Base=0xff400000 Size=0x00100000 [0000.258] GSC5 Carveout Base=0xff300000 Size=0x00100000 [0000.263] BpmpFw Carveout Base=0xff2c0000 Size=0x00040000 [0000.269] Lp0 Carveout Base=0xff2bf000 Size=0x00001000 [0000.284] RamDump Carveout Base=0xff23f000 Size=0x00080000 [0000.289] Platform-DebugCarveout: 0 [0000.293] Nck Carveout Base=0xff03f000 Size=0x00200000 [0000.298] Non secure mode. Disable rollback prevention [0000.303] AOTAG Init Done [0000.350] Using GPT Primary to query partitions [0000.355] Loading Tboot-CPU binary [0000.404] Verifying bootloader in OdmNonSecureSBK mode [0000.414] Bootloader load address is 0xa0000000, entry address is 0xa0000258 [0000.421] Bootloader downloaded successfully. [0000.425] Downloaded Tboot-CPU binary to 0xa0000258 [0000.430] MAX77620_GPIO1 Configured. [0000.434] MAX77620_GPIO5 Configured. [0000.437] CPU power rail is up [0000.440] CPU clock enabled [0000.444] Performing RAM repair [0000.447] Updating A64 Warmreset Address to 0xa00002e9 [0000.464] Bootloader DTB Load Address: 0x83000000 [0000.481] Kernel DTB Load Address: 0x83080000 [0000.486] Loading cboot binary [0000.580] Verifying bootloader in OdmNonSecureSBK mode [0000.673] Bootloader load address is 0x8010fda8, entry address is 0x80110000 [0000.680] Bootloader downloaded successfully. [0000.684] GPT: Partition NOT found ! [0000.687] Find Partition via GPT Failed [0000.691] Find Partition via PT Failed [0000.694] function NvTbootGetBinaryOffsets: 0x1 error [0000.699] Error in NvTbootLoadBinary: 0x1 ! [0000.703] Next binary entry address: 0x80110000 [0000.708] BoardId: 2180 [0000.734] NvTbootI2cProbe(): error code 0x00045100 Error while read [0000.740] Display board id is not available [0000.744] dram memory type is 3 [0000.748] WB0 init successful [0000.774] Bpmp FW successfully loaded [0000.777] Set NvDecSticky Bits [0000.781] GSC1 address : ff700000 [0000.784] GSC2 address ff63fffc value c0edbbcc [0000.789] GSC2 address : ff600000 [0000.793] GSC3 address : ff500000 [0000.796] GSC4 address : ff400000 [0000.800] GSC5 address : ff300000 [0000.803] GSC MC Settings done [0000.807] TOS old plaintext Image length 65536 [0000.813] Secure OS image signature not verified [0000.818] Loading and Validation of Secure OS Successful [0000.823] NvTbootPackSdramParams: start. [0000.829] NvTbootPackSdramParams: done. [0000.832] Tegraboot started after 150541 us [0000.836] Basic modules init took 312933 us [0000.840] Sec Bootdevice Read Time = 194 ms, Read Size = 8464 KB [0000.846] Sec Bootdevice Write Time = -1940251267 ms, Write Size = 343597383 KB [0000.853] Next stage binary read took 12282 us [0000.858] Carveout took 251697 us [0000.861] CPU initialization took 125254 us [0000.865] Total time taken by TegraBoot 702166 us

[0000.869] Starting CPU & Halting co-processor

64b[0000.994] LPDDR4 Training: Read DT: Number of tables = 10 [0000.999] EMC Training (SRC-freq: 204000; DST-freq: 40800) [0001.004] EMC Training Skipped [0001.007] EMC Training (SRC-freq: 204000; DST-freq: 68000) [0001.012] EMC Training Skipped [0001.015] EMC Training (SRC-freq: 204000; DST-freq: 102000) [0001.021] EMC Training Skipped [0001.023] EMC Training (SRC-freq: 204000; DST-freq: 204000) [0001.029] EMC Training Skipped [0001.031] EMC Training (SRC-freq: 204000; DST-freq: 408000) [0001.038] EMC Training Successful [0001.041] EMC Training (SRC-freq: 204000; DST-freq: 665600) [0001.046] EMC Training Successful [0001.049] EMC Training (SRC-freq: 204000; DST-freq: 800000) [0001.061] EMC Training Successful [0001.064] EMC Training (SRC-freq: 204000; DST-freq: 1065600) [0001.087] EMC Training Successful [0001.090] EMC Training (SRC-freq: 204000; DST-freq: 1331200) [0001.111] EMC Training Successful [0001.114] EMC Training (SRC-freq: 204000; DST-freq: 1600000) [0001.134] EMC Training Successful [0001.137] Switching to 800000 KHz Success [0001.146] DT Write: emc-table@40800 succeeded [0001.152] DT Write: emc-table@68000 succeeded [0001.158] DT Write: emc-table@102000 succeeded [0001.164] DT Write: emc-table@204000 succeeded [0001.170] DT Write: emc-table@408000 succeeded [0001.176] DT Write: emc-table@665600 succeeded [0001.182] DT Write: emc-table@800000 succeeded [0001.188] DT Write: emc-table@1065600 succeeded [0001.194] DT Write: emc-table@1331200 succeeded [0001.200] DT Write: emc-table@1600000 succeeded [0001.204] LPDDR4 Training: Write DT: Number of tables = 10

U-Boot 2015.07-rc2-dirty (Dec 02 2016 - 16:21:18 +0100)

TEGRA210 Model: NVIDIA P2371-2180 DRAM: 4 GiB MC: Tegra SD/MMC: 0, Tegra SD/MMC: 1 *** Warning - bad CRC, using default environment

tegra-pcie: PCI regions: tegra-pcie: I/O: 0x0000000012000000-0x0000000012010000 tegra-pcie: non-prefetchable memory: 0x0000000013000000-0x0000000020000000 tegra-pcie: prefetchable memory: 0x0000000020000000-0x0000000040000000 tegra-pcie: 4x1, 1x1 configuration tegra-pcie: probing port 0, using 4 lanes tegra-pcie: link 0 down, retrying tegra-pcie: link 0 down, retrying tegra-pcie: link 0 down, retrying tegra-pcie: link 0 down, ignoring tegra-pcie: probing port 1, using 1 lanes tegra-pcie: link 1 down, retrying tegra-pcie: link 1 down, retrying tegra-pcie: link 1 down, retrying tegra-pcie: link 1 down, ignoring In: serial Out: serial Err: serial Net: No ethernet found. Hit any key to stop autoboot: 0 MMC: no card present switch to partitions #0, OK mmc0(part 0) is current device Scanning mmc 0:1... Found /boot/extlinux/extlinux.conf Retrieving file: /boot/extlinux/extlinux.conf 2870 bytes read in 351 ms (7.8 KiB/s) p2371-2180 eMMC boot options 1: primary kernel 2: hdmi2csi 3: hdmi2csi (HDMI-B disabled) Enter choice: 2 2: hdmi2csi Retrieving file: /boot/initrd 6902654 bytes read in 382 ms (17.2 MiB/s) Retrieving file: /boot/Image_hdmi2csi 20114760 bytes read in 995 ms (19.3 MiB/s) append: fbcon=map:0 console=tty0 console=ttyS0,115200n8 androidboot.modem=none androidboot.serialno=P2180A00P00940c0t Retrieving file: /boot/tegra210-jetson-tx1-p2597-2180-a01-devkit-hdmi2csi.dtb 384555 bytes read in 268 ms (1.4 MiB/s)

Flattened Device Tree blob at 82000000

Booting using the fdt blob at 0x82000000 reserving fdt memory region: addr=80000000 size=20000 Using Device Tree in place at 0000000082000000, end 0000000082060e2a Can't create DT prop nvidia,emc-burst-mc-regs to copy Can't create DT prop nvidia,dvfs-version to copy Can't create DT node emc-table@204000 to copy ERROR: board-specific fdt fixup failed: FDT_ERR_NOTFOUND

FDT creation failed! hanging...### ERROR ### Please RESET the board ###

CTRL-A Z for help | 115200 8N1 | NOR | Minicom 2.7 | VT102 | Не на линии | ttyUSB0

tkammacher commented 7 years ago

I assume you have downloaded and flashed both the APP and EBT partitions, as described in https://github.com/InES-HPMM/linux-l4t/wiki/l4t_prebuilt_image.

One thing that may be different is the environment variables of U-Boot. Could you hit a key when U-Boot is starting to interrupt booting. Then enter printenv to show the environment variables and show them here?

Also could you try to boot Kernel 3 (hdmi2csi (HDMI-B disabled))? Just hit the 3 and Enter after you see this in U-Boot:

p2371-2180 eMMC boot options
1: primary kernel
2: hdmi2csi
3: hdmi2csi (HDMI-B disabled)
Enter choice:
ivanovean commented 7 years ago

I have a same problem. Trying to boot with other options - not successfull. This is result of printenv:

Tegra210 (P2371-2180) # printenv arch=arm baudrate=115200 board=p2371-2180 board_name=p2371-2180 boot_a_script=load ${devtype} ${devnum}:${bootpart} ${scriptaddr} ${prefix}${script}; source ${scriptaddr} boot_extlinux=sysboot ${devtype} ${devnum}:${bootpart} any ${scriptaddr} ${prefix}extlinux/extlinux.conf boot_net_usb_start=usb start boot_prefixes=/ /boot/ boot_script_dhcp=boot.scr.uimg boot_scripts=boot.scr.uimg boot.scr boot_targets=mmc1 mmc0 usb0 pxe dhcp bootcmd=run distro_bootcmd bootcmd_dhcp=run boot_net_usb_start; if dhcp ${scriptaddr} ${boot_script_dhcp}; then source ${scriptaddr}; fi bootcmd_mmc0=setenv devnum 0; run mmc_boot bootcmd_mmc1=setenv devnum 1; run mmc_boot bootcmd_pxe=run boot_net_usb_start; dhcp; if pxe get; then pxe boot; fi bootcmd_usb0=setenv devnum 0; run usb_boot bootdelay=2 cpu=armv8 distro_bootcmd=for target in ${boottargets}; do run bootcmd${target}; done fdt_addr_r=0x82000000 fdt_copy_node_names=/memory-controller@7001b000 fdt_copy_src_addr=0x83080000 fdt_high=ffffffffffffffff fdt_remove_property_names=/pinmux@700008d4/pinctrl-names initrd_high=ffffffffffffffff kernel_addr_r=0x80080000 loadaddr=0x80080000 lp0_vec=0x1000@0xff2bf000 mmc_boot=if mmc dev ${devnum}; then setenv devtype mmc; run scan_dev_for_boot_part; fi nvdumper_reserved=0xff23f000 pxefile_addr_r=0x90100000 ramdisk_addr_r=0x83100000 scan_dev_for_boot=echo Scanning ${devtype} ${devnum}:${bootpart}...; for prefix in ${boot_prefixes}; do run scan_dev_for_extlinux; run scan_dev_for_scripts; done scan_dev_for_boot_part=part list ${devtype} ${devnum} -bootable devplist; env exists devplist || setenv devplist 1; for bootpart in ${devplist}; do if fstype ${devtype} ${devnum}:${bootpart} bootfstype; then run scan_dev_for_boot; fi; de scan_dev_for_extlinux=if test -e ${devtype} ${devnum}:${bootpart} ${prefix}extlinux/extlinux.conf; then echo Found ${prefix}extlinux/extlinux.conf; run boot_extlinux; echo SCRIPT FAILED: continuing...; fi scan_dev_for_scripts=for script in ${boot_scripts}; do if test -e ${devtype} ${devnum}:${bootpart} ${prefix}${script}; then echo Found U-Boot script ${prefix}${script}; run boot_a_script; echo SCRIPT FAILED: continuing...; fi; done scriptaddr=0x90000000 soc=tegra210 stderr=serial stdin=serial stdout=serial usb_boot=usb start; if usb dev ${devnum}; then setenv devtype usb; run scan_dev_for_boot_part; fi vendor=nvidia Environment size: 2436/8188 bytes

tkammacher commented 7 years ago

Hi @ivanovean Could you enter U-Boot and enter these commands:

Tegra210 (P2371-2180) # setenv fdt_remove_property_names
Tegra210 (P2371-2180) # saveenv

Then reboot. Does this help? (Source: https://github.com/InES-HPMM/linux-l4t/issues/1)

ivanovean commented 7 years ago

Hi @tkammacher It really helped. Now everything works fine.

Many thanks!

tkammacher commented 7 years ago

Good to hear. Maybe @sergey789 you could try this workaround too?

rrcarlosrodriguez commented 7 years ago

Hi! I have the same problem described. I'm working based on https://github.com/InES-HPMM/linux-l4t/wiki/l4t_prebuilt_image.

My files checksums are: 68279df473154c3fe6e3d34e8d9f9a40dc4c9f82 tx1_hdmi2csi_l4t_r24_2.1_g1685ac7.img 8330467319791ba018c6d4568d916c6213e85553 tx1_hdmi2csi_l4t_r24_2.1_gdd13899-dirty_EBT.img

My u-boot environment is:

arch=arm baudrate=115200 board=p2371-2180 board_name=p2371-2180 boot_a_script=load ${devtype} ${devnum}:${bootpart} ${scriptaddr} ${prefix}${script}; source ${scriptaddr} boot_extlinux=sysboot ${devtype} ${devnum}:${bootpart} any ${scriptaddr} ${prefix}extlinux/extlinux.conf boot_net_usb_start=usb start boot_prefixes=/ /boot/ boot_script_dhcp=boot.scr.uimg boot_scripts=boot.scr.uimg boot.scr boot_targets=mmc1 mmc0 usb0 pxe dhcp bootcmd=run distro_bootcmd bootcmd_dhcp=run boot_net_usb_start; if dhcp ${scriptaddr} ${boot_script_dhcp}; then source ${scriptaddr}; fi bootcmd_mmc0=setenv devnum 0; run mmc_boot bootcmd_mmc1=setenv devnum 1; run mmc_boot bootcmd_pxe=run boot_net_usb_start; dhcp; if pxe get; then pxe boot; fi bootcmd_usb0=setenv devnum 0; run usb_boot bootdelay=2 cpu=armv8 distro_bootcmd=for target in ${boottargets}; do run bootcmd${target}; done fdt_addr_r=0x82000000 fdt_copy_node_names=/memory-controller@7001b000 fdt_copy_src_addr=0x83080000 fdt_high=ffffffffffffffff initrd_high=ffffffffffffffff kernel_addr_r=0x80080000 loadaddr=0x80080000 lp0_vec=0x1000@0xff2bf000 mmc_boot=if mmc dev ${devnum}; then setenv devtype mmc; run scan_dev_for_boot_part; fi nvdumper_reserved=0xff23f000 pxefile_addr_r=0x90100000 ramdisk_addr_r=0x83100000 scan_dev_for_boot=echo Scanning ${devtype} ${devnum}:${bootpart}...; for prefix in ${boot_prefixes}; do run scan_dev_for_extlinux; run scan_dev_for_scripts; done scan_dev_for_boot_part=part list ${devtype} ${devnum} -bootable devplist; env exists devplist || setenv devplist 1; for bootpart in ${devplist}; do if fstype ${devtype} ${devnum}:${bootpart} bootfstype; then run scan_dev_for_boot; fi; done scan_dev_for_extlinux=if test -e ${devtype} ${devnum}:${bootpart} ${prefix}extlinux/extlinux.conf; then echo Found ${prefix}extlinux/extlinux.conf; run boot_extlinux; echo SCRIPT FAILED: continuing...; fi scan_dev_for_scripts=for script in ${boot_scripts}; do if test -e ${devtype} ${devnum}:${bootpart} ${prefix}${script}; then echo Found U-Boot script ${prefix}${script}; run boot_a_script; echo SCRIPT FAILED: continuing...; fi; done scriptaddr=0x90000000 soc=tegra210 stderr=serial stdin=serial stdout=serial usb_boot=usb start; if usb dev ${devnum}; then setenv devtype usb; run scan_dev_for_boot_part; fi vendor=nvidia

I already tried with the fdt_remove_property_names hack mentioned in here

But it didn't work! Any suggestion about something else to try?

Thanks!

tkammacher commented 7 years ago

Hi @rrcarlosrodriguez

I have diffed your Uboot environment to mine, and it's pretty much the same:

diff ubootEnvRR.txt ubootEnvZhaw.txt
11c11
< boot_targets=mmc1 mmc0 usb0 pxe dhcp
---
> boot_targets=mmc1 mmc0 usb0 pxe dhcp

Do you get the exact same error messages in U-Boot as in the first post of this issue? Since you have the same environment as me, you should not get this error. If you have different error messages, could you post them (best would be the complete U-Boot log)?

And which version of L4T have you been running on your TX1 before flashing our prebuilt images? Was it R24.2.1?

rrcarlosrodriguez commented 7 years ago

Hi @tkammacher !

This is the complete boot log: tegra-boot-fail.txt

I've been using 24.2 in all my tests! Should I move to 24.2.1 for any specific reason?

tkammacher commented 7 years ago

As far as I am aware, an important change from 24.2 to 24.2.1 is the handling of the devicetree in Uboot, specifically for pinmux configuration. See #1 and [1].

We had issues before with 24.2 and a kernel/dt for 24.2.1. It appears that somewhere on the TX1 there is still some file or environment variable that causes issues, when you are combining 24.2 and 24.2.1. I thought we had solved the problem by overwriting the EBT partition with our custom Uboot (CONFIG_OF_REMOVE_PROPERTIES disabled), but it seems that is not sufficient.

I would suggest you either flash the TX1 first with 24.2.1 and then our custom images, or you try to reset this environment variable in uboot:

Tegra210 (P2371-2180) # setenv fdt_copy_node_names
Tegra210 (P2371-2180) # saveenv

Please let me know if any of these solutions helps..

[1] http://nv-tegra.nvidia.com/gitweb/?p=3rdparty/u-boot.git;a=commit;h=ec1720cded3a3e89967f2f70294b84ae3c29dfc8

rrcarlosrodriguez commented 7 years ago

I flashed a 24.2.1 image and then I tested your image again and it works. That mismatch between versions was causing the error.

Thanks a lot!

tkammacher commented 7 years ago

It is now necessary to first flash the TX1 to the official L4T 24.2.1 by Nvidia. Users can use the Jetpack tool. After this, our pre-built image can be flashed.

The instructions on https://github.com/InES-HPMM/linux-l4t/wiki/l4t_prebuilt_image have been adjusted to include this prerequisite.