[U-Boot] [PATCH] fdt: fix get_next_memory_node()

Michal Simek monstr at monstr.eu
Mon Sep 10 12:45:08 UTC 2018


On 10.9.2018 13:27, Marek Vasut wrote:
> On 09/10/2018 01:23 PM, Michal Simek wrote:
>> On 9.9.2018 16:30, Marek Vasut wrote:
>>> The get_next_memory_node() always sets mem to -1 , which is incorrect,
>>> because then every iteration of memory bank parsing will start from the
>>> first memory bank instead of the previous one.
>>>
>>> On systems with 1 memory bank defined in DT and CONFIG_NR_DRAM_BANKS=4 ,
>>> like ie. r8a77965-salvator-x , this will result in U-Boot incorrectly
>>> reporting four identical memory banks with the same memory configuration.
>>>
>>> Fix this by setting mem to startoffset value, which restores the behavior
>>> before the fixed patch was applied.
>>>
>>> Signed-off-by: Marek Vasut <marek.vasut+renesas at gmail.com>
>>> Cc: Jens Wiklander <jens.wiklander at linaro.org>
>>> Cc: Simon Glass <sjg at chromium.org>
>>> Cc: Tom Rini <trini at konsulko.com>
>>> Fixes: 452bc121027d ("fdt: fix fdtdec_setup_memory_banksize()")
>>
>>
>> Tested-by: Michal Simek <michal.simek at xilinx.com> [on ZynqMP}
>>
>> Before
>> arch_number = 0x00000000
>> boot_params = 0x00000000
>> DRAM bank   = 0x00000000
>> -> start    = 0x00000000
>> -> size     = 0x10000000
>> DRAM bank   = 0x00000001
>> -> start    = 0x10000000
>> -> size     = 0x40000000
>> DRAM bank   = 0x00000002
>> -> start    = 0x50000000
>> -> size     = 0x30000000
>> DRAM bank   = 0x00000003
>> -> start    = 0x00000000
>> -> size     = 0x10000000
>>
>>
>> after
>> arch_number = 0x00000000
>> boot_params = 0x00000000
>> DRAM bank   = 0x00000000
>> -> start    = 0x00000000
>> -> size     = 0x10000000
>> DRAM bank   = 0x00000001
>> -> start    = 0x10000000
>> -> size     = 0x40000000
>> DRAM bank   = 0x00000002
>> -> start    = 0x50000000
>> -> size     = 0x30000000
> 
> That's on a system with three banks, so it was broken before this patch?

yes that's on 3 bank system and as is visible above there are 4 banks
listed and also all of them were calculated together.
That's why system with 2GB of memory had surprisingly 2.3GiB.

Before with my 3 bank setup
DRAM:  2.3 GiB
After
DRAM:  2 GiB

With one bank this is even more tricky because
DRAM:  8 GiB
is reported but relocation works properly.

Definitely this is regression and it should go to this release.

Thanks,
Michal

-- 
Michal Simek, Ing. (M.Eng), OpenPGP -> KeyID: FE3D1F91
w: www.monstr.eu p: +42-0-721842854
Maintainer of Linux kernel - Xilinx Microblaze
Maintainer of Linux kernel - Xilinx Zynq ARM and ZynqMP ARM64 SoCs
U-Boot custodian - Xilinx Microblaze/Zynq/ZynqMP SoCs


-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: OpenPGP digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20180910/f337ae88/attachment.sig>


More information about the U-Boot mailing list