[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