[U-Boot] i.MX6: u-boot,dm-pre-reloc block U-Boot

Simon Glass sjg at chromium.org
Sat May 20 02:29:01 UTC 2017


Hi Jagan,

On 17 May 2017 at 11:18, Jagan Teki <jagannadh.teki at gmail.com> wrote:
> Hi Simon,
>
> On Tue, May 16, 2017 at 5:47 AM, Simon Glass <sjg at chromium.org> wrote:
>> Hi,
>>
>> On 13 May 2017 at 10:15, Jagan Teki <jagannadh.teki at gmail.com> wrote:
>>> Hi All,
>>>
>>> On Thu, May 11, 2017 at 1:40 PM, Jagan Teki <jagannadh.teki at gmail.com> wrote:
>>>> On Thu, May 11, 2017 at 7:39 AM, Lokesh Vutla <lokeshvutla at ti.com> wrote:
>>>>>
>>>>>
>>>>> On 5/11/2017 12:52 AM, Jagan Teki wrote:
>>>>>> Hi Lokesh,
>>>>>>
>>>>>> On Tue, May 9, 2017 at 10:03 PM, Jagan Teki <jagannadh.teki at gmail.com> wrote:
>>>>>>> On Tue, May 9, 2017 at 8:54 PM, Lokesh Vutla <lokeshvutla at ti.com> wrote:
>>>>>>>>
>>>>>>>>
>>>>>>>> On Tuesday 09 May 2017 08:37 PM, Jagan Teki wrote:
>>>>>>>>> On Tue, May 9, 2017 at 7:49 PM, Lokesh Vutla <lokeshvutla at ti.com> wrote:
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Tuesday 09 May 2017 04:35 PM, Jagan Teki wrote:
>>>>>>>>>>> Hi All,
>>>>>>>>>>>
>>>>>>>>>>> I'm trying to add SPL_OF_CONTROL for i.MX6UL, with usdhc1 and gpio1
>>>>>>>>>>> nodes are marking as "u-boot,dm-pre-reloc" like
>>>>>>>>>>
>>>>>>>>>> Did you try "u-boot,dm-spl" instead?
>>>>>>>>>
>>>>>>>>> Yes, no change.
>>>>>>>>
>>>>>>>> Hmm..Ideally this should have taken effect :(
>>>>>>>>
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> --- a/arch/arm/dts/imx6ul.dtsi
>>>>>>>>>>> +++ b/arch/arm/dts/imx6ul.dtsi
>>>>>>>>>>> @@ -129,6 +129,7 @@
>>>>>>>>>>>         };
>>>>>>>>>>>
>>>>>>>>>>>         soc {
>>>>>>>>>>> +               u-boot,dm-pre-reloc;
>>>>>>>>>>>                 #address-cells = <1>;
>>>>>>>>>>>                 #size-cells = <1>;
>>>>>>>>>>>                 compatible = "simple-bus";
>>>>>>>>>>> @@ -180,6 +181,7 @@
>>>>>>>>>>>                 };
>>>>>>>>>>>
>>>>>>>>>>>                 aips1: aips-bus at 02000000 {
>>>>>>>>>>> +                       u-boot,dm-pre-reloc;
>>>>>>>>>>>                         compatible = "fsl,aips-bus", "simple-bus";
>>>>>>>>>>>                         #address-cells = <1>;
>>>>>>>>>>>                         #size-cells = <1>;
>>>>>>>>>>> @@ -405,6 +407,7 @@
>>>>>>>>>>>                         };
>>>>>>>>>>>
>>>>>>>>>>>                         gpio1: gpio at 0209c000 {
>>>>>>>>>>> +                               u-boot,dm-pre-reloc;
>>>>>>>>>>>                                 compatible = "fsl,imx6ul-gpio",
>>>>>>>>>>> "fsl,imx35-gpio";
>>>>>>>>>>>                                 reg = <0x0209c000 0x4000>;
>>>>>>>>>>>                                 interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>,
>>>>>>>>>>> @@ -724,6 +727,7 @@
>>>>>>>>>>>                 };
>>>>>>>>>>>
>>>>>>>>>>>                 aips2: aips-bus at 02100000 {
>>>>>>>>>>> +                       u-boot,dm-pre-reloc;
>>>>>>>>>>>                         compatible = "fsl,aips-bus", "simple-bus";
>>>>>>>>>>>                         #address-cells = <1>;
>>>>>>>>>>>                         #size-cells = <1>;
>>>>>>>>>>> @@ -781,6 +785,7 @@
>>>>>>>>>>>                         };
>>>>>>>>>>>
>>>>>>>>>>>                         usdhc1: usdhc at 02190000 {
>>>>>>>>>>> +                               u-boot,dm-pre-reloc;
>>>>>>>>>>>                                 compatible = "fsl,imx6ul-usdhc",
>>>>>>>>>>> "fsl,imx6sx-usdhc";
>>>>>>>>>>>                                 reg = <0x02190000 0x4000>;
>>>>>>>>>>>                                 interrupts = <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>;
>>>>>>>>>>>
>>>>>>>>>>> SPL is loading fine from MMC but block the U-Boot that means we can't
>>>>>>>>>>> see U-Boot log on console.
>>>>>>>>>>
>>>>>>>>>> Any chance you can try enabling early debug? Since enabling pre-reloc is
>>>>>>>>>> going for a toss, I guess your malloc size is going for a toss. Can you
>>>>>>>>>> try increasing initial malloc size?
>>>>>>>>>
>>>>>>>>> Yes, I've increased malloc CONFIG_SYS_MALLOC_LEN from 16M to upto 128M
>>>>>>>>> but no change.
>>>>>>>>
>>>>>>>> No, try CONFIG_SYS_MALLOC_F_LEN=0x2000.
>>>>>>>>
>>>>>>>> Is it possible to check where exactly is it hanged?
>>>>>>>
>>>>>>> Yes, it hangs while relocating dram[1] and I also observed the main
>>>>>>> bus nodes are are 'not found' which I haven't see before and these are
>>>>>>> marked 'u-boot,dm-spl'
>>>>>>>
>>>>>>> uclass_find_device_by_seq: 0 -1
>>>>>>> uclass_find_device_by_seq: 0 0
>>>>>>>    - -1 -1 'soc'
>>>>>>>    - -1 -1 'aips-bus at 02000000'
>>>>>>>    - -1 -1 'aips-bus at 02100000'
>>>>>>>    - not found
>>>>>>
>>>>>> Any clue, I still investigating. Look like the node seq numbers which
>>>>>> are marked as "u-boot,dm-spl" in SPL are checking before relocating in
>>>>>> U-Boot, and they seems not found.
>>>>>>
>>>>>> Interestingly I couldn't see any panic or exception, the code ends
>>>>>> board_f last line.
>>>>>
>>>>> Manfred posted a patch[1] stating a similar issue. See if it fixes it?
>>>>
>>>> It's not. I think this hanged at relocation assembly relocate_code or
>>>> relocate_vectors.
>>>
>>> Any help on this, this look relocation is not possible in U-Boot with
>>> 'u-boot,dm-pre-reloc' and incidentally removing property from /soc all
>>> works fine.
>>
>> I don't have any idea based on the DM angle. I assume that you have
>> called spi_init() correctly. That patch does seem useful though.
>
> Are you referring  this  patch "spl: Add spl_early_init()" ? anyway
> I'm on top of master, result is same. Do you think deleting
> 'u-boot,dm-pre-reloc' from /soc before moving to U-Boot help?

That effectively removes those devices from driver model before relocation.

But there is a root cause here that I think is worth finding. If you
don't have an ICE tool, maybe just use the debug UART?

Regards,
Simon


More information about the U-Boot mailing list