cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
mrazarbad
Participant
Participant
594 Views
Registered: ‎12-21-2019

Zynq Ultrascale+ Kernel Boot Fails and Reboots Automatically

In a xczu2eg-sfvc784-2-i custom board, the kernel built using Petalinux, fails booting and reboots automatically with a 64-bit 2400 MT/s DDR4 operating at 2100 MT/s which is configured with 2133 MT/s parameters in Zynq PS processing system. Kernel fails after printing “[ 0.015846] bootconsole [cdns0] disabled” and FSBL reboots automatically and prints “Xilinx Zynq MP First Stage Boot Loader” and again after starting kernel, it fails. This process loops again and again. The log is attached in the following.
The DDR4 used for PS is MTA4ATF51264HZ-2G3 4 GB SODIM. Zynq DRAM test available on Xilinx SDK in bare metal mode has been applied to the board and there were no errors either in eye tests (with minimum of 54% eye width) and read-write tests (through all regions of 4 GB DDR4).
Various Linux images have been built and tested with different DDR4 rates and bit-widths. With the 64-bit DDR4 operating at 1600 MT/s, kernel boots successfully 50% of cases and in the case of the 32-bit DDR4 operating at 1600 MT/s, kernel boots successfully 90% cases. Also, we found that in 25% of cases, kernel boots successfully with the 32-bit DDR4 operating at 2100 MT/s but kernel always fails with the 64-bit DDR4 operating at 2100 MT/s. When operating at 2100 MT/s, the DDR4 configuration parameters of 2133 MT/s is used in Zynq PS processing system. The DDR configuration setting is also attached.
1. Is the problem surely something related to DDR4?
2. Skew constrains mentioned in Table 2-17 and 2-18 of ug583 have been considered but unfortunately, we have NOT included FPGA package pin delays (flight times) in skew constraints. Does this violation cause any problems even in the derated condition of 1600 MT/s where the skew constraints are relaxed?
3. According to the console log, what causes kernel failing boot? Does kernel applying strict tests on DDR4 on that phase?

DDR configuration:

mrazarbad_0-1596550241988.png

Console log:

Xilinx Zynq MP First Stage Boot Loader
Release 2018.1 Jul 28 2020 - 18:57:51
NOTICE: ATF running on XCZU2EG/silicon v4/RTL5.1 at 0xfffea000
NOTICE: BL31: Secure code at 0x0
NOTICE: BL31: Non secure code at 0x8000000
NOTICE: BL31: v1.4(release):xilinx-v2017.4-1351-gdf4a7e97
NOTICE: BL31: Built : 14:25:56, Jul 28 2020
PMUFW: v1.0


U-Boot 2018.01 (Jul 28 2020 - 18:56:31 +0430) Xilinx ZynqMP ZCU102 rev1.0

DRAM: 2 GiB
EL Level: EL2
Chip ID: zu2eg
MMC: sdhci@ff170000: 0 (SD)
SF: Detected s25fl512s_256k with page size 512 Bytes, erase size 256 KiB, total 64 MiB
*** Warning - bad CRC, using default environment

In: serial@ff000000
Out: serial@ff000000
Err: serial@ff000000
Board: Xilinx ZynqMP
Bootmode: SD_MODE1
Net: ZYNQ GEM: ff0e0000, phyaddr ffffffff, interface rgmii-id
PHY is not detected
GEM PHY init failed
No ethernet found.
U-BOOT for app_zu4_ddr4_32bit_1600

ZYNQ GEM: ff0e0000, phyaddr ffffffff, interface rgmii-id
mdio_register: non unique device name 'eth0'
ZYNQ GEM: ff0e0000, phyaddr ffffffff, interface rgmii-id
mdio_register: non unique device name 'eth0'
ZYNQ GEM: ff0e0000, phyaddr ffffffff, interface rgmii-id
mdio_register: non unique device name 'eth0'
ZYNQ GEM: ff0e0000, phyaddr ffffffff, interface rgmii-id
mdio_register: non unique device name 'eth0'
No ethernet found.
ZYNQ GEM: ff0e0000, phyaddr ffffffff, interface rgmii-id
mdio_register: non unique device name 'eth0'
Hit any key to stop autoboot: 0
Device: sdhci@ff170000
Manufacturer ID: 0
OEM: 0
Name: SD16G
Tran Speed: 50000000
Rd Block Len: 512
SD version 3.0
High Capacity: Yes
Capacity: 7.5 GiB
Bus Width: 4-bit
Erase Group Size: 512 Bytes
reading image.ub
13330024 bytes read in 985 ms (12.9 MiB/s)
## Loading kernel from FIT Image at 10000000 ...
Using 'conf@system-top.dtb' configuration
Trying 'kernel@1' kernel subimage
Description: Linux kernel
Type: Kernel Image
Compression: gzip compressed
Data Start: 0x10000104
Data Size: 6883331 Bytes = 6.6 MiB
Architecture: AArch64
OS: Linux
Load Address: 0x00080000
Entry Point: 0x00080000
Hash algo: sha1
Hash value: 97a2fe3e9d884eedddab68eaf9f46e13c68de19d
Verifying Hash Integrity ... sha1+ OK
## Loading ramdisk from FIT Image at 10000000 ...
Using 'conf@system-top.dtb' configuration
Trying 'ramdisk@1' ramdisk subimage
Description: petalinux-user-image
Type: RAMDisk Image
Compression: gzip compressed
Data Start: 0x10698284
Data Size: 6413907 Bytes = 6.1 MiB
Architecture: AArch64
OS: Linux
Load Address: unavailable
Entry Point: unavailable
Hash algo: sha1
Hash value: 823d08f6b2614889d05890628cba117fa069153f
Verifying Hash Integrity ... sha1+ OK
## Loading fdt from FIT Image at 10000000 ...
Using 'conf@system-top.dtb' configuration
Trying 'fdt@system-top.dtb' fdt subimage
Description: Flattened Device Tree blob
Type: Flat Device Tree
Compression: uncompressed
Data Start: 0x10690a0c
Data Size: 30644 Bytes = 29.9 KiB
Architecture: AArch64
Hash algo: sha1
Hash value: c6b5e38610e90d22397becca09cbd74ae97df0cf
Verifying Hash Integrity ... sha1+ OK
Booting using the fdt blob at 0x10690a0c
ZYNQ GEM: ff0e0000, phyaddr ffffffff, interface rgmii-id
mdio_register: non unique device name 'eth0'
Uncompressing Kernel Image ... OK
Loading Ramdisk to 079e2000, end 07fffe53 ... OK
Loading Device Tree to 00000000079d7000, end 00000000079e17b3 ... OK

Starting kernel ...

[ 0.000000] Booting Linux on physical CPU 0x0
[ 0.000000] Linux version 4.14.0-xilinx-v2018.1 (oe-user@oe-host) (gcc version 7.2.0 (GCC)) #1 SMP Tue Jul 28 18:59:14 +0430 2020
[ 0.000000] Boot CPU: AArch64 Processor [410fd034]
[ 0.000000] Machine model: xlnx,zynqmp
[ 0.000000] earlycon: cdns0 at MMIO 0x00000000ff000000 (options '115200n8')
[ 0.000000] bootconsole [cdns0] enabled
[ 0.000000] efi: Getting EFI parameters from FDT:
[ 0.000000] efi: UEFI not found.
[ 0.000000] cma: Reserved 256 MiB at 0x000000006fc00000
[ 0.000000] psci: probing for conduit method from DT.
[ 0.000000] psci: PSCIv1.1 detected in firmware.
[ 0.000000] psci: Using standard PSCI v0.2 function IDs
[ 0.000000] psci: MIGRATE_INFO_TYPE not supported.
[ 0.000000] percpu: Embedded 21 pages/cpu @ffffffc07fe79000 s46488 r8192 d31336 u86016
[ 0.000000] Detected VIPT I-cache on CPU0
[ 0.000000] CPU features: enabling workaround for ARM erratum 845719
[ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 516867
[ 0.000000] Kernel command line: earlycon clk_ignore_unused
[ 0.000000] PID hash table entries: 4096 (order: 3, 32768 bytes)
[ 0.000000] Dentry cache hash table entries: 262144 (order: 9, 2097152 bytes)
[ 0.000000] Inode-cache hash table entries: 131072 (order: 8, 1048576 bytes)
[ 0.000000] Memory: 1779172K/2096128K available (9852K kernel code, 638K rwdata, 2988K rodata, 512K init, 2166K bss, 54812K reserved, 262144K cma-reserved)
[ 0.000000] Virtual kernel memory layout:
[ 0.000000] modules : 0xffffff8000000000 - 0xffffff8008000000 ( 128 MB)
[ 0.000000] vmalloc : 0xffffff8008000000 - 0xffffffbebfff0000 ( 250 GB)
[ 0.000000] .text : 0xffffff8008080000 - 0xffffff8008a20000 ( 9856 KB)
[ 0.000000] .rodata : 0xffffff8008a20000 - 0xffffff8008d10000 ( 3008 KB)
[ 0.000000] .init : 0xffffff8008d10000 - 0xffffff8008d90000 ( 512 KB)
[ 0.000000] .data : 0xffffff8008d90000 - 0xffffff8008e2fa00 ( 639 KB)
[ 0.000000] .bss : 0xffffff8008e2fa00 - 0xffffff800904d2b0 ( 2167 KB)
[ 0.000000] fixed : 0xffffffbefe7fd000 - 0xffffffbefec00000 ( 4108 KB)
[ 0.000000] PCI I/O : 0xffffffbefee00000 - 0xffffffbeffe00000 ( 16 MB)
[ 0.000000] vmemmap : 0xffffffbf00000000 - 0xffffffc000000000 ( 4 GB maximum)
[ 0.000000] 0xffffffbf00000000 - 0xffffffbf01bfc800 ( 27 MB actual)
[ 0.000000] memory : 0xffffffc000000000 - 0xffffffc07ff00000 ( 2047 MB)
[ 0.000000] Hierarchical RCU implementation.
[ 0.000000] RCU event tracing is enabled.
[ 0.000000] RCU restricting CPUs from NR_CPUS=8 to nr_cpu_ids=4.
[ 0.000000] RCU: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=4
[ 0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
[ 0.000000] GIC: Adjusting CPU interface base to 0x00000000f902f000
[ 0.000000] GIC: Using split EOI/Deactivate mode
[ 0.000000] arch_timer: cp15 timer(s) running at 50.00MHz (phys).
[ 0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0xb8812736b, max_idle_ns: 440795202655 ns
[ 0.000002] sched_clock: 56 bits at 50MHz, resolution 20ns, wraps every 4398046511100ns
[ 0.008231] Console: colour dummy device 80x25
[ 0.012489] console [tty0] enabled
[ 0.015855] bootconsole [cdns0] disabled
Xilinx Zynq MP First Stage Boot Loader
Release 2018.1 Jul 28 2020 - 18:57:51

*everything repeats again*

0 Kudos
3 Replies
simon.beaudoin
Adventurer
Adventurer
582 Views
Registered: ‎05-08-2018

I'm still brainstorming about your issue. I noticed you don't have "console=ttyPS0,115200n8" in your bootargs. Did you erased it? Could you try adding it and see if the kernel spits out more information during boot?

mrazarbad
Participant
Participant
506 Views
Registered: ‎12-21-2019

Dear @simon.beaudoin,

Thank you for your reply. I added console=ttyPS0,115200n8 to bootargs and unfortunately, there is no more information.

0 Kudos
mrazarbad
Participant
Participant
417 Views
Registered: ‎12-21-2019

Any ideas? Is this a DDR issue?

0 Kudos