[U-Boot] i.MX6: Prealloc pinctrl make U-Boot hang at relocation (data abort)

Jagan Teki jagannadh.teki at gmail.com
Mon Oct 16 22:44:15 UTC 2017


Hi,

I'm trying to use SPL_OF_CONTROL with u-boot,dm-spl So I've marked
u-boot,dm-spl with pinctrl since MMC used the pinconfig.

The issue observed here is SPL handover to U-Boot proper and before
relocation U-Boot probed imx_thermal dm-driver through device_probe.
But the same time device_probe unnecessary probing all u-boot,dm-spl
marked nodes(which are strictly related for SPL) Since pinctrl marked
as u-boot, dm-spl the same probed and this might be the show-stopper.

Based on the data abort, the code hang at relocation code, relocate.S,
eventually stop calling uclass_get_device( was called in
arch/arm/mach-imx/cpu.c) during board_f or unmark u-boot,dm-spl make
U-Boot boots.

Below are relocation code hang point and Log dump, request for any inputs.

Relocation code:
----------------------

        /* relative fix: increase location by offset */
        add     r0, r0, r4
87800ac4:       e0800004        add     r0, r0, r4
        ldr     r1, [r0]
87800ac8:       e5901000        ldr     r1, [r0]       /* HANG */
        add     r1, r1, r4
87800acc:       e0811004        add     r1, r1, r4
        str     r1, [r0]
87800ad0:       e5801000        str     r1, [r0]

87800ad4 <fixnext>:

Log:
-----
U-Boot SPL 2017.11-rc1-00165-g7340683-dirty (Oct 17 2017 - 04:00:01)
Trying to boot from MMC1

device_probe: Process pinctrl for soc

device_probe: Process pinctrl for aips-bus at 02000000
initialized IMX pinctrl driver

device_probe: Process pinctrl for aips-bus at 02100000

device_probe: Process pinctrl for usdhc at 02190000

device_probe: Process pinctrl for usdhc1grp

device_probe: Process pinctrl for gpio at 0209c000
Expected Linux image is not found. Trying to start U-boot


U-Boot 2017.11-rc1-00165-g7340683-dirty (Oct 17 2017 - 04:00:01 +0530)

U-Boot code: 87800000 -> 8783FB38  BSS: -> 87857338
CPU:   Freescale i.MX6UL rev1.1 528 MHz (running at 396 MHz)
CPU:   Industrial temperature grade (-40C to 105C)
device_probe: Process pinctrl for imx_thermal

device_probe: Process pinctrl for soc

device_probe: Process pinctrl for aips-bus at 02000000
initialized IMX pinctrl driver
 at 31C
Reset cause: POR
Model: Engicam Is.IoT MX6UL MMC Starterkit
DRAM:  Monitor len: 00057338
Ram size: 08000000
Ram top: 88000000
TLB table from 87ff0000 to 87ff4000
Reserving 348k for U-Boot at: 87f98000
Reserving 16384k for malloc() at: 86f98000
Reserving 80 Bytes for Board Info at: 86f97fb0
Reserving 240 Bytes for Global Data at: 86f97ec0
Reserving 24448 Bytes for FDT at: 86f91f40

RAM Configuration:
Bank #0: 80000000
DRAM:  128 MiB
New Stack Pointer is: 86f91f20
Relocation Offset is: 00798000
Relocating to 87f98000, new gd at 86f97ec0, sp at 86f91f20
data abort
pc : [<87800ac8>]          lr : [<87f986ac>]
sp : 86f91f20  ip : 0000001c     fp : 00000017
r10: 8783fa98  r9 : 86f97ec0     r8 : 00913b18
r7 : deadbeef  r6 : 0091de88     r5 : 87800320  r4 : 00798000
r3 : 87848848  r2 : 87843820     r1 : 00000017  r0 : 02878000
Flags: nZCv  IRQs off  FIQs off  Mode SVC_32
Resetting CPU ...

resetting ...

thanks!
-- 
Jagan Teki
Free Software Engineer | www.openedev.com
U-Boot, Linux | Upstream Maintainer
Hyderabad, India.


More information about the U-Boot mailing list