Hi Krzysztof, On Mon, 18 Mar 2019 at 18:20, Krzysztof Kozlowski <krzk@xxxxxxxxxx> wrote: > > On Mon, 18 Mar 2019 at 13:32, Anand Moon <linux.amoon@xxxxxxxxx> wrote: > > > > Hi Krzysztof / Marek, > > > > After I update the latest u-boot on my Odroud U3+ it fails to load the > > kernel it hangs. > > I am using Archlinux on Odroid U3. > > > > U-Boot 2019.04-rc3-00131-g8303467e80d-dirty (Mar 18 2019 - 12:12:23 +0000) > > > > CPU: Exynos4412 @ 1 GHz > > Model: Odroid based on Exynos4412 > > Type: u3 > > DRAM: 2 GiB > > LDO20@VDDQ_EMMC_1.8V: set 1800000 uV; enabling > > LDO22@VDDQ_EMMC_2.8V: set 2800000 uV; enabling > > LDO21@TFLASH_2.8V: set 2800000 uV; enabling > > MMC: SAMSUNG SDHCI: 1, EXYNOS DWMMC: 0 > > Loading Environment from MMC... Card did not respond to voltage select! > > *** Warning - No block device, using default environment > > > > Net: No ethernet found. > > Hit any key to stop autoboot: 0 > > switch to partitions #0, OK > > mmc1 is current device > > Scanning mmc 1:1... > > Found U-Boot script /boot/boot.scr > > 769 bytes read in 6 ms (125 KiB/s) > > ## Executing script at 42000000 > > 6901856 bytes read in 253 ms (26 MiB/s) > > 53078 bytes read in 19 ms (2.7 MiB/s) > > 6590950 bytes read in 240 ms (26.2 MiB/s) > > Kernel image @ 0x41000000 [ 0x000000 - 0x695060 ] > > ## Flattened Device Tree blob at 40800000 > > Booting using the fdt blob at 0x40800000 > > Loading Ramdisk to 4f9b6000, end 4ffff1e6 ... OK > > Loading Device Tree to 4f9a6000, end 4f9b5f55 ... OK > > > > Starting kernel ... > > Can you attach your boot.init file (the source of boot.scr)? > > By the size of DTB you can see that different DTB is loaded. I assume > you tried to boot the same kernel, then it could mean that boardname > was used instead of board_name to choose DTB. Suspicious is that > kernel size also differs... so maybe you booted something else? As > usual debugging practice, reduce number of unknown factors. Do not > change kernel and U-Boot at the same time. > > Also, you can try reverting commit e6b1467081d3 ("arm: exynos: Remove > duplicated "boardname" env setting") and see if it helps. Or just try > to bisect around changes coming from u-boot samsung tree. Try booting > v2019.01 and paste the results as well. > > Best regards, > Krzysztof > I have tested with pre-compiled image and the cross compiled kernel image both failed to load the kernel. No revert of the commit e6b1467081d3 did not help. Yes it seem strange that that load address is changes some how in the u-boot env printenv setting of the latest u-boot U-Boot 2019.04-rc3-00131-g8303467e80d-dirty [0] https://pastebin.com/1Hgc5xxC (newu-boot.txt) printenv setting for the old u-boot. U-Boot 2018.01-1 [1] https://pastebin.com/wD6zK6eG (oldu-boot.txt) Attach is the boot.txt (boot.scr), also the u-boot env old and u-boot-env new Best Regards -Anand
# After modifying, run ./mkscr # MAC address configuration # setenv macaddr "00:1e:ee:61:7a:39" setenv macaddr "3A:02:DD:67:B6:01" part uuid ${devtype} ${devnum}:${bootpart} uuid setenv bootargs "console=tty1 console=${console} root=PARTUUID=${uuid} rw rootwait smsc95xx.macaddr=${macaddr}" if load ${devtype} ${devnum}:${bootpart} ${kernel_addr_r} /boot/zImage; then if load ${devtype} ${devnum}:${bootpart} ${fdt_addr_r} /boot/dtbs/${fdtfile}; then if load ${devtype} ${devnum}:${bootpart} ${ramdisk_addr_r} /boot/initramfs-linux.img; then bootz ${kernel_addr_r} ${ramdisk_addr_r}:${filesize} ${fdt_addr_r}; else bootz ${kernel_addr_r} - ${fdt_addr_r}; fi; fi; fi
U-Boot 2019.04-rc3-00131-g8303467e80d-dirty (Mar 18 2019 - 16:27:40 +0000) CPU: Exynos4412 @ 1 GHz Model: Odroid based on Exynos4412 Type: u3 DRAM: 2 GiB LDO20@VDDQ_EMMC_1.8V: set 1800000 uV; enabling LDO22@VDDQ_EMMC_2.8V: set 2800000 uV; enabling LDO21@TFLASH_2.8V: set 2800000 uV; enabling MMC: SAMSUNG SDHCI: 1, EXYNOS DWMMC: 0 Loading Environment from MMC... Card did not respond to voltage select! *** Warning - No block device, using default environment Net: No ethernet found. Hit any key to stop autoboot: 0 Odroid # Odroid # Odroid # Odroid # Odroid # print env ## Error: "env" not defined Odroid # printenv arch=arm autoboot=if test -e mmc 0 boot.scr; then; run boot_script; elif test -e mmc 0 Image.itb; then; run boot_fit;elif test -e mmc 0 zImage; then; run boot_zimg;elif test -e mmc 0 uImage; then; run boot_uimg;fi; baudrate=115200 board=odroid board_name=odroid boardname=odroidu3 boot_a_script=load ${devtype} ${devnum}:${distro_bootpart} ${scriptaddr} ${prefix}${script}; source ${scriptaddr} boot_efi_binary=if fdt addr ${fdt_addr_r}; then bootefi bootmgr ${fdt_addr_r};else bootefi bootmgr ${fdtcontroladdr};fi;load ${devtype} ${devnum}:${distro_bootpart} ${kernel_addr_r} efi/boot/bootarm.efi; if fdt addr ${fdt_addr_r}; then bootefi ${kernel_addr_r} ${fdt_addr_r};else bootefi ${kernel_addr_r} ${fdtcontroladdr};fi boot_extlinux=sysboot ${devtype} ${devnum}:${distro_bootpart} any ${scriptaddr} ${prefix}${boot_syslinux_conf} boot_fit=setenv kernelname Image.itb;run loadkernel;run kernel_args;bootm ${kernel_addr_r}#${boardname} boot_net_usb_start=usb start boot_prefixes=/ /boot/ boot_script=run loadbootscript;source ${scriptaddr} boot_script_dhcp=boot.scr.uimg boot_scripts=boot.scr.uimg boot.scr boot_syslinux_conf=extlinux/extlinux.conf boot_targets=mmc1 mmc0 boot_uimg=setenv kernelname uImage;run check_dtb;run check_ramdisk;run loadkernel;run kernel_args;bootm ${kernel_addr_r} ${initrd_addr} ${fdt_addr}; boot_zimg=setenv kernelname zImage;run check_dtb;run check_ramdisk;run loadkernel;run kernel_args;bootz ${kernel_addr_r} ${initrd_addr} ${fdt_addr}; bootargs=Please use defined boot bootcmd=run distro_bootcmd ; run autoboot bootcmd_mmc0=devnum=0; run mmc_boot bootcmd_mmc1=devnum=1; run mmc_boot bootdelay=2 check_dtb=if run loaddtb; then setenv fdt_addr ${fdt_addr_r};else setenv fdt_addr;fi; check_ramdisk=if run loadinitrd; then setenv initrd_addr ${ramdisk_addr_r};else setenv initrd_addr -;fi; console=console=ttySAC1,115200n8 consoleoff=set console console=ram; save; reset consoleon=set console console=ttySAC1,115200n8; save; reset cpu=armv7 dfu_alt_info=Please reset the board dfu_alt_system=uImage fat 0 1;zImage fat 0 1;Image.itb fat 0 1;uInitrd fat 0 1;exynos4412-odroidu3.dtb fat 0 1;exynos4412-odroidx2.dtb fat 0 1;boot part 0 1;platform part 0 2 distro_bootcmd=for target in ${boot_targets}; do run bootcmd_${target}; done efi_dtb_prefixes=/ /dtb/ /dtb/current/ fdt_addr_r=0x40800000 fdtcontroladdr=bae71f08 fdtfile=exynos4412-odroidu3.dtb initrdname=uInitrd kernel_addr_r=0x41000000 kernel_args=setenv bootargs root=/dev/mmcblk${mmcrootdev}p${mmcrootpart} rootwait ${console} ${opts} load_efi_dtb=load ${devtype} ${devnum}:${distro_bootpart} ${fdt_addr_r} ${prefix}${efi_fdtfile} loadbootscript=load mmc ${mmcbootdev}:${mmcbootpart} ${scriptaddr} boot.scr loaddtb=load mmc ${mmcbootdev}:${mmcbootpart} ${fdt_addr_r} ${fdtfile} loadinitrd=load mmc ${mmcbootdev}:${mmcbootpart} ${ramdisk_addr_r} ${initrdname} loadkernel=load mmc ${mmcbootdev}:${mmcbootpart} ${kernel_addr_r} ${kernelname} mmc_boot=if mmc dev ${devnum}; then devtype=mmc; run scan_dev_for_boot_part; fi mmcbootdev=0 mmcbootpart=1 mmcrootdev=0 mmcrootpart=2 ramdisk_addr_r=0x42000000 scan_dev_for_boot=echo Scanning ${devtype} ${devnum}:${distro_bootpart}...; for prefix in ${boot_prefixes}; do run scan_dev_for_extlinux; run scan_dev_for_scripts; done;run scan_dev_for_efi; scan_dev_for_boot_part=part list ${devtype} ${devnum} -bootable devplist; env exists devplist || setenv devplist 1; for distro_bootpart in ${devplist}; do if fstype ${devtype} ${devnum}:${distro_bootpart} bootfstype; then run scan_dev_for_boot; fi; done; setenv devplist scan_dev_for_efi=setenv efi_fdtfile ${fdtfile}; if test -z "${fdtfile}" -a -n "${soc}"; then setenv efi_fdtfile ${soc}-${board}${boardver}.dtb; fi; for prefix in ${efi_dtb_prefixes}; do if test -e ${devtype} ${devnum}:${distro_bootpart} ${prefix}${efi_fdtfile}; then run load_efi_dtb; fi;done;if test -e ${devtype} ${devnum}:${distro_bootpart} efi/boot/bootarm.efi; then echo Found EFI removable media binary efi/boot/bootarm.efi; run boot_efi_binary; echo EFI LOAD FAILED: continuing...; fi; setenv efi_fdtfile scan_dev_for_extlinux=if test -e ${devtype} ${devnum}:${distro_bootpart} ${prefix}${boot_syslinux_conf}; then echo Found ${prefix}${boot_syslinux_conf}; run boot_extlinux; echo SCRIPT FAILED: continuing...; fi scan_dev_for_scripts=for script in ${boot_scripts}; do if test -e ${devtype} ${devnum}:${distro_bootpart} ${prefix}${script}; then echo Found U-Boot script ${prefix}${script}; run boot_a_script; echo SCRIPT FAILED: continuing...; fi; done scriptaddr=0x42000000 soc=exynos soc_id=4412 soc_rev=2.0 usb_boot=usb start; if usb dev ${devnum}; then devtype=usb; run scan_dev_for_boot_part; fi vendor=samsung Environment size: 4673/16380 bytes
U-Boot 2018.01-1 (Feb 13 2018 - 02:19:55 +0000) Arch Linux ARM CPU: Exynos4412 @ 1 GHz Model: Odroid based on Exynos4412 Board: Odroid based on Exynos4412 Type: u3 DRAM: 2 GiB LDO20@VDDQ_EMMC_1.8V: set 1800000 uV; enabling LDO22@VDDQ_EMMC_2.8V: set 2800000 uV; enabling LDO21@TFLASH_2.8V: set 2800000 uV; enabling MMC: SAMSUNG SDHCI: 1, EXYNOS DWMMC: 0 Card did not respond to voltage select! mmc_init: -95, time 10 *** Warning - No block device, using default environment Net: No ethernet found. Hit any key to stop autoboot: 0 Odroid # Odroid # Odroid # Odroid # printenv arch=arm autoboot=if test -e mmc 0 boot.scr; then; run boot_script; elif test -e mmc 0 Image.itb; then; run boot_fit;elif test -e mmc 0 zImage; then; run boot_zimg;elif test -e mmc 0 uImage; then; run boot_uimg;fi; baudrate=115200 board=odroid board_name=odroid boardname=odroidu3 boot_a_script=load ${devtype} ${devnum}:${distro_bootpart} ${scriptaddr} ${prefix}${script}; source ${scriptaddr} boot_efi_binary=if fdt addr ${fdt_addr_r}; then bootefi bootmgr ${fdt_addr_r};else bootefi bootmgr ${fdtcontroladdr};fi;load ${devtype} ${devnum}:${distro_bootpart} ${kernel_addr_r} efi/boot/bootarm.efi; if fdt addr ${fdt_addr_r}; then bootefi ${kernel_addr_r} ${fdt_addr_r};else bootefi ${kernel_addr_r} ${fdtcontroladdr};fi boot_extlinux=sysboot ${devtype} ${devnum}:${distro_bootpart} any ${scriptaddr} ${prefix}extlinux/extlinux.conf boot_fit=setenv kerneladdr 0x42000000;setenv kernelname Image.itb;run loadkernel;run kernel_args;bootm ${kerneladdr}#${boardname} boot_net_usb_start=usb start boot_prefixes=/ /boot/ boot_script=run loadbootscript;source ${scriptaddr} boot_script_dhcp=boot.scr.uimg x boot_scripts=boot.scr.uimg boot.scr boot_targets=mmc1 mmc0 boot_uimg=setenv kerneladdr 0x40007FC0;setenv kernelname uImage;run check_dtb;run check_ramdisk;run loadkernel;run kernel_args;bootm ${kerneladdr} ${initrd_addr} ${fdt_addr}; boot_zimg=setenv kerneladdr 0x40007FC0;setenv kernelname zImage;run check_dtb;run check_ramdisk;run loadkernel;run kernel_args;bootz ${kerneladdr} ${initrd_addr} ${fdt_addr}; bootargs=Please use defined boot bootcmd=run distro_bootcmd bootcmd_mmc0=setenv devnum 0; run mmc_boot bootcmd_mmc1=setenv devnum 1; run mmc_boot bootdelay=2 bootm_size=0x10000000 check_dtb=if run loaddtb; then setenv fdt_addr ${fdtaddr};else setenv fdt_addr;fi; check_ramdisk=if run loadinitrd; then setenv initrd_addr ${initrdaddr};else setenv initrd_addr -;fi; console=ttySAC1,115200n8 consoleoff=set console console=ram; save; reset consoleon=set console console=ttySAC1,115200n8; save; reset cpu=armv7 dfu_alt_info=Please reset the board dfu_alt_system=uImage fat 0 1;zImage fat 0 1;Image.itb fat 0 1;uInitrd fat 0 1;exynos4412-odroidu3.dtb fat 0 1;exynos4412-odroidx2.dtb fat 0 1;boot part 0 1;platform part 0 2 distro_bootcmd=for target in ${boot_targets}; do run bootcmd_${target}; done efi_dtb_prefixes=/ /dtb/ /dtb/current/ fdt_addr_r=0x43000000 fdtaddr=40800000 x fdtcontroladdr=bae3def0 fdtfile=exynos4412-odroidu3.dtb initrdaddr=42000000 initrdname=uInitrd kernel_addr_r=0x42000000 kernel_args=setenv bootargs root=/dev/mmcblk${mmcrootdev}p${mmcrootpart} rootwait ${console} ${opts} load_efi_dtb=load ${devtype} ${devnum}:${distro_bootpart} ${fdt_addr_r} ${prefix}${efi_fdtfile} loadbootscript=load mmc ${mmcbootdev}:${mmcbootpart} ${scriptaddr} boot.scr loaddtb=load mmc ${mmcbootdev}:${mmcbootpart} ${fdtaddr} ${fdtfile} loadinitrd=load mmc ${mmcbootdev}:${mmcbootpart} ${initrdaddr} ${initrdname} loadkernel=load mmc ${mmcbootdev}:${mmcbootpart} ${kerneladdr} ${kernelname} mmc_boot=if mmc dev ${devnum}; then setenv devtype mmc; run scan_dev_for_boot_part; fi mmcbootdev=0 mmcbootpart=1 mmcrootdev=0 mmcrootpart=2 pxefile_addr_r=0x51000000 ramdisk_addr_r=0x43300000 scan_dev_for_boot=echo Scanning ${devtype} ${devnum}:${distro_bootpart}...; for prefix in ${boot_prefixes}; do run scan_dev_for_extlinux; run scan_dev_for_scripts; done;run scan_dev_for_efi; scan_dev_for_boot_part=part list ${devtype} ${devnum} -bootable devplist; env exists devplist || setenv devplist 1; for distro_bootpart in ${devplist}; do if fstype ${devtype} ${devnum}:${distro_bootpart} bootfstype; then run scan_dev_for_boot; fi; done scan_dev_for_efi=setenv efi_fdtfile ${fdtfile}; if test -z "${fdtfile}" -a -n "${soc}"; then setenv efi_fdtfile ${soc}-${board}${boardver}.dtb; fi; for prefix in ${efi_dtb_prefixes}; do if test -e ${devtype} ${devnum}:${distro_bootpart} ${prefix}${efi_fdtfile}; then run load_efi_dtb; fi;done;if test -e ${devtype} ${devnum}:${distro_bootpart} efi/boot/bootarm.efi; then echo Found EFI removable media binary efi/boot/bootarm.efi; run boot_efi_binary; echo EFI LOAD FAILED: continuing...; fi; setenv efi_fdtfile scan_dev_for_extlinux=if test -e ${devtype} ${devnum}:${distro_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}:${distro_bootpart} ${prefix}${script}; then echo Found U-Boot script ${prefix}${script}; run boot_a_script; echo SCRIPT FAILED: continuing...; fi; done scriptaddr=0x50000000 soc=exynos soc_id=4412 soc_rev=2.0 usb_boot=usb start; if usb dev ${devnum}; then setenv devtype usb; run scan_dev_for_boot_part; fi vendor=samsung Environment size: 4898/8188 bytes Odroid #