fdt_support: Use VLA instead of MEMORY_BANKS_MAX
PATCH v2 1/1 fdt_support: Use VLA instead of MEMORY_BANKS_MAX
Instead of relaying on user to configure MEMORY_BANKS_MAX correctly, use VLA (variable length array) to accommodate the required banks.
defined"")
---
Resending same patch but with the right email address
common/fdt_support.c | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-)
common/fdt_support.c +2 -7
@@ -409,19 +409,14 @@ static int fdt_pack_reg(const void *fdt, void *buf, u64 *address, u64 *size,return p - (char *)buf; } -#define MEMORY_BANKS_MAX 4int fdt_fixup_memory_banks (void *blob,u64 start[],u64 size[],int banks) {int err, nodeoffset;int len, i; -u8 tmp[MEMORY_BANKS_MAX *16 ];/* Up to 64-bit address + 64-bit size */ +u8 tmp[banks *16 ];/* Up to 64-bit address + 64-bit size */ -if (banks >MEMORY_BANKS_MAX ) { -printf ("%s: num banks %d exceeds hardcoded limit %d." -" Recompile with higher MEMORY_BANKS_MAX?\n" , - __FUNCTION__, banks,MEMORY_BANKS_MAX ); +if (!banks)return -1 ; - } err =fdt_check_header (blob);if (err <0 ) {
Signature · 1 line
2.18.0
PATCH v2 1/1 fdt_support: Use VLA instead of MEMORY_BANKS_MAX
Hi Ramon,
Quoted 28 lines
Instead of relaying on user to configure
MEMORY_BANKS_MAXcorrectly, use VLA (variable length array) to accommodate the required banks.Fixes 2a1f4f1758b5 ("Revert "fdt_support: Use CONFIG_NR_DRAM_BANKS ifdefined"")
Signed-off-by Ramon Fried <[email protected]>---
Resending same patch but with the right email addresscommon/fdt_support.c | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-)common/fdt_support.c +0
-2@@ -409,19 +409,14 @@ static int fdt_pack_reg(const void *fdt, void *buf, u64 *address, u64 *size, return p - (char *)buf; } -#define MEMORY_BANKS_MAX 4int fdt_fixup_memory_banks (void *blob,u64 start[],u64 size[],int banks) {int err, nodeoffset;int len, i; -u8 tmp[MEMORY_BANKS_MAX *16 ];/* Up to 64-bit address + 64-bit size */
common/fdt_support.c static int fdt_pack_reg(const void *fdt, void *buf, u64 *address, u64 *size, · line 416
Quoted 1 line
common/fdt_support.c +1
-0+u8 tmp[banks *16 ];/* Up to 64-bit address + 64-bit size */
Why cannot we read the RAM size from "memory" DTS property? SDRAM is continuous - there are no "holes" in it.
The memory banks and their sizes are going to be replaced by DTS "memory" description anyway.
common/fdt_support.c static int fdt_pack_reg(const void *fdt, void *buf, u64 *address, u64 *size, · line 422
Quoted 11 lines
common/fdt_support.c +1
-5-if (banks >MEMORY_BANKS_MAX ) { -printf ("%s: num banks %d exceeds hardcoded limit %d." -" Recompile with higher MEMORY_BANKS_MAX?\n" , - __FUNCTION__, banks,MEMORY_BANKS_MAX ); +if (!banks)return -1 ; - } err =fdt_check_header (blob);if (err <0 ) {
Best regards,
Lukasz Majewski
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: [email protected] -------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20180812/869857a3/attachment.sig>
PATCH v2 1/1 fdt_support: Use VLA instead of MEMORY_BANKS_MAX
Quoted 36 lines · Lukasz Majewski
Hi Ramon,
Quoted 27 lines
Instead of relaying on user to configure
MEMORY_BANKS_MAXcorrectly, use VLA (variable length array) to accommodate the required banks.Fixes 2a1f4f1758b5 ("Revert "fdt_support: Use CONFIG_NR_DRAM_BANKS ifdefined"")
Signed-off-by Ramon Fried <[email protected]>---
Resending same patch but with the right email addresscommon/fdt_support.c | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-)common/fdt_support.c +0
-2@@ -409,19 +409,14 @@ static int fdt_pack_reg(const void *fdt, void *buf, u64 *address, u64 *size, return p - (char *)buf; } -#define MEMORY_BANKS_MAX 4int fdt_fixup_memory_banks (void *blob,u64 start[],u64 size[],int banks) {int err, nodeoffset;int len, i; -u8 tmp[MEMORY_BANKS_MAX *16 ];/* Up to 64-bit address + Quoted 2 lines
64-bit size */
+ u8 tmp[banks * 16]; /* Up to 64-bit address + 64-bit size */Why cannot we read the RAM size from "memory" DTS property? SDRAM is continuous - there are no "holes" in it.
Quoted 3 lines
The memory banks and their sizes are going to be replaced by DTS "memory" description anyway.
I'm not sure I understand what your suggesting.
The whole purpose of this function is to fixup the DTS, so how can we read the information from it ?
Quoted 24 lines
common/fdt_support.c static int fdt_pack_reg(const void *fdt, void *buf, u64 *address, u64 *size, · line 422
Quoted 11 lines
common/fdt_support.c +1
-5-if (banks >MEMORY_BANKS_MAX ) { -printf ("%s: num banks %d exceeds hardcoded limit %d." -" Recompile with higher MEMORY_BANKS_MAX?\n" , - __FUNCTION__, banks,MEMORY_BANKS_MAX ); +if (!banks)return -1 ; - } err =fdt_check_header (blob);if (err <0 ) {Best regards,
Lukasz Majewski
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de