[U-Boot] [PATCH] image: fix getenv_bootm_size() function

Hannes Schmelzer hannes at schmelzer.or.at
Mon Feb 8 15:16:40 CET 2016



On 08.02.2016 15:11, Matthias Weißer wrote:
> Hi Hannes
>
> I had the same problem. http://patchwork.ozlabs.org/patch/579391/ fixed it.
>
> Regards,
> Matthias
>
>
> 2016-02-08 15:01 GMT+01:00 Hannes Schmelzer <hannes at schmelzer.or.at>:
>>
>> On 18.12.2015 06:17, Masahiro Yamada wrote:
>>> Currently, this function returns wrong size if "bootm_low" is defined,
>>> but "bootm_size" is not.
>>>
>>> Signed-off-by: Masahiro Yamada <yamada.masahiro at socionext.com>
>>> ---
>>>
>>>    common/image.c | 4 ++--
>>>    1 file changed, 2 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/common/image.c b/common/image.c
>>> index d63d9e0..f4a1dc8 100644
>>> --- a/common/image.c
>>> +++ b/common/image.c
>>> @@ -472,9 +472,9 @@ phys_size_t getenv_bootm_size(void)
>>>        #if defined(CONFIG_ARM) && defined(CONFIG_NR_DRAM_BANKS)
>>> -       return gd->bd->bi_dram[0].size - tmp;
>>> +       return gd->bd->bi_dram[0].size - (tmp - gd->bd->bi_dram[0].start);
>>>    #else
>>> -       return gd->bd->bi_memsize - tmp;
>>> +       return gd->bd->bi_memsize - (tmp - gd->bd->bi_memstart);
>>>    #endif
>>>    }
>> Hi Masahiro,
>>
>> your commit has been merged on 19.1. this year.
>> Today i ran a test on my tseries board with most current u-boot/master.
>>
>> I ran into trouble booting my linux kernel:
>>
>> ---
>> Kernel image @ 0x80200000 [ 0x000000 - 0x222720 ]
>> ## Loading init Ramdisk from Legacy Image at 80a00000 ...
>>     Image Name:
>>     Image Type:   ARM Linux RAMDisk Image (uncompressed)
>>     Data Size:    12452646 Bytes = 11.9 MiB
>>     Load Address: 00000000
>>     Entry Point:  00000000
>> ## Flattened Device Tree blob at 80100000
>>     Booting using the fdt blob at 0x80100000
>> ERROR: Failed to allocate 0xbe0326 bytes below 0x10000000.
>> ramdisk - allocation error
>> FDT creation failed! hanging...### ERROR ### Please RESET the board ###
>> ---
>>
>> I debugged  bit am came to the conclusio, that the line
>>
>> +       return gd->bd->bi_dram[0].size - (tmp - gd->bd->bi_dram[0].start);
>>
>> brings me into trouble.
>>
>> On my board DRAM is configured as follows:
>> U-Boot (BuR V2.0)# bdinfo
>> arch_number = 0xFFFFFFFF
>> boot_params = 0x80000100
>> DRAM bank   = 0x00000000
>> *-> start    = 0x80000000**
>> **-> size     = 0x10000000**
>> *
>> so size minus start would give a negative number.
>> I tried local revert of this commit and everything works as before.
>>
>> more correct would be
>>
>> +       return gd->bd->bi_dram[0].start - (tmp - gd->bd->bi_dram[0].size);
>>
>>
>> whats your thinking about?
>>
>> best regards,
>> Hannes
>>
>> _______________________________________________
>> U-Boot mailing list
>> U-Boot at lists.denx.de
>> http://lists.denx.de/mailman/listinfo/u-boot
Hi Matthias,

this also fixes my problem.

many thanks!

best regards,
Hannes



More information about the U-Boot mailing list