
On Tue, Feb 06, 2018 at 02:24:54PM +0100, Dr. Philipp Tomsich wrote:
Tom,
Do you plan to apply this or should I include it into my next pull-request?
Please pick it up, thanks!
Thanks, Philipp.
On 2 Feb 2018, at 16:00, Michal Simek michal.simek@xilinx.com wrote:
On 2.2.2018 12:01, Philipp Tomsich wrote:
The fdt_record_loadable()-function was wedged between other functions that were guarded by ARCH_FIXUP_FDT_MEMORY. This could lead to linker errors on some configurations.
With this change, fdt_record_loadable() is moved out of the ARCH_FIXUP_FDT_MEMORY guard (plus I tried to retain alphabetical ordering for functions by placing it appropriately).
References: 9f45aeb ("spl: fit: implement fdt_record_loadable") Signed-off-by: Philipp Tomsich philipp.tomsich@theobroma-systems.com
common/fdt_support.c | 78 ++++++++++++++++++++++++++-------------------------- 1 file changed, 39 insertions(+), 39 deletions(-)
diff --git a/common/fdt_support.c b/common/fdt_support.c index 724452d..17623a1 100644 --- a/common/fdt_support.c +++ b/common/fdt_support.c @@ -410,45 +410,6 @@ static int fdt_pack_reg(const void *fdt, void *buf, u64 *address, u64 *size, return p - (char *)buf; }
-int fdt_record_loadable(void *blob, u32 index, const char *name,
uintptr_t load_addr, u32 size, uintptr_t entry_point,
const char *type, const char *os)
-{
- int err, node;
- err = fdt_check_header(blob);
- if (err < 0) {
printf("%s: %s\n", __func__, fdt_strerror(err));
return err;
- }
- /* find or create "/fit-images" node */
- node = fdt_find_or_add_subnode(blob, 0, "fit-images");
- if (node < 0)
return node;
- /* find or create "/fit-images/<name>" node */
- node = fdt_find_or_add_subnode(blob, node, name);
- if (node < 0)
return node;
- /*
* We record these as 32bit entities, possibly truncating addresses.
* However, spl_fit.c is not 64bit safe either: i.e. we should not
* have an issue here.
*/
- fdt_setprop_u32(blob, node, "load-addr", load_addr);
- if (entry_point != -1)
fdt_setprop_u32(blob, node, "entry-point", entry_point);
- fdt_setprop_u32(blob, node, "size", size);
- if (type)
fdt_setprop_string(blob, node, "type", type);
- if (os)
fdt_setprop_string(blob, node, "os", os);
- return node;
-}
#ifdef CONFIG_NR_DRAM_BANKS #define MEMORY_BANKS_MAX CONFIG_NR_DRAM_BANKS #else @@ -584,6 +545,45 @@ void fdt_fixup_ethernet(void *fdt) } }
+int fdt_record_loadable(void *blob, u32 index, const char *name,
uintptr_t load_addr, u32 size, uintptr_t entry_point,
const char *type, const char *os)
+{
- int err, node;
- err = fdt_check_header(blob);
- if (err < 0) {
printf("%s: %s\n", __func__, fdt_strerror(err));
return err;
- }
- /* find or create "/fit-images" node */
- node = fdt_find_or_add_subnode(blob, 0, "fit-images");
- if (node < 0)
return node;
- /* find or create "/fit-images/<name>" node */
- node = fdt_find_or_add_subnode(blob, node, name);
- if (node < 0)
return node;
- /*
* We record these as 32bit entities, possibly truncating addresses.
* However, spl_fit.c is not 64bit safe either: i.e. we should not
* have an issue here.
*/
- fdt_setprop_u32(blob, node, "load-addr", load_addr);
- if (entry_point != -1)
fdt_setprop_u32(blob, node, "entry-point", entry_point);
- fdt_setprop_u32(blob, node, "size", size);
- if (type)
fdt_setprop_string(blob, node, "type", type);
- if (os)
fdt_setprop_string(blob, node, "os", os);
- return node;
+}
/* Resize the fdt to its actual size + a bit of padding */ int fdt_shrink_to_minimum(void *blob, uint extrasize) {
Reported-by: Michal Simek michal.simek@xilinx.com Tested-by: Michal Simek michal.simek@xilinx.com
Thanks, Michal