devicetree overlay small fixes
cover devicetree overlay small fixes
Hello,
while testing overlay loading I found some issues with applying the overlay.
I sent these like a year ago already. One was since fixed but two still apply.
Thanks
Michal
Michal Suchanek (2):
of: overlay: add resolver error prints
of: fdt: mark unflattened tree as detached
drivers/of/fdt.c | 12 +++++++++--- drivers/of/resolver.c | 6 ++++++ 2 files changed, 15 insertions(+), 3 deletions(-)
Signature · 1 line
2.8.1
PATCH 1/2 of: overlay: add resolver error prints
Applying overlay fails silently in case of an error. Add error prints. Most notably the lack of symbols in the live tree is not reported.
--- drivers/of/resolver.c | 6 ++++++ 1 file changed, 6 insertions(+)
drivers/of/resolver.c +6 -0
@@ -313,6 +313,11 @@ int of_resolve_phandles(struct device_node *resolve)phandle phandle, phandle_delta;int err; +if (!resolve) +pr_err ("%s: null node\n" , __func__); +if (resolve && !of_node_check_flag (resolve,OF_DETACHED )) +pr_err ("%s: node %s not detached\n" , __func__, + resolve->full_name);/* the resolve node must exist, and be detached */ if (!resolve || !of_node_check_flag (resolve,OF_DETACHED ))return -EINVAL ;
@@ -369,6 +374,7 @@ int of_resolve_phandles(struct device_node *resolve)/* we need to fixup, but no root symbols... */ if (!root_sym) { +pr_err ("%s: no symbols in root of device tree.\n" , __func__); err = -EINVAL ; goto out; }
Signature · 6 lines
2.8.1 -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
Rob Herring
AppliedRe: [PATCH 1/2] of: overlay: add resolver error prints
Quoted 7 lines · Michal Suchanek
Applying overlay fails silently in case of an error. Add error prints. Most notably the lack of symbols in the live tree is not reported.
Signed-off-by Michal Suchanek <[email protected]>--- drivers/of/resolver.c | 6 ++++++ 1 file changed, 6 insertions(+)
Applied, thanks.
Rob
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
PATCH 2/2 of: fdt: mark unflattened tree as detached
In reply to Michal SuchanekThe tree returned from of_fdt_unflatten_tree cannot be attached to the live tree because it is not marked as detached so mark it as such. The dt resolver checks the flag and refuses to process the tree otherwise.
--- drivers/of/fdt.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-)
drivers/of/fdt.c +9 -3
@@ -384,7 +384,8 @@ static void * unflatten_dt_node(const void *blob,*/ static void __unflatten_device_tree (const void *blob,struct device_node **mynodes, -void * (*dt_alloc)(u64 size,u64 align)) +void * (*dt_alloc)(u64 size,u64 align), +bool detached) {unsigned long size;int start;
@@ -428,6 +429,10 @@ static void __unflatten_device_tree(const void *blob,if (be32_to_cpup (mem + size) !=0xdeadbeef )pr_warning ("End of tree marker overwritten: %08x\n" ,be32_to_cpup (mem + size)); +if (detached) { +of_node_set_flag (*mynodes,OF_DETACHED ); +pr_debug ("unflattened tree is detached\n" ); + }pr_debug (" <- unflatten_device_tree()\n" ); }
@@ -451,7 +456,7 @@ void of_fdt_unflatten_tree(const unsigned long *blob, struct device_node **mynodes) {mutex_lock (&of_fdt_unflatten_mutex); -__unflatten_device_tree (blob, mynodes, &kernel_tree_alloc); +__unflatten_device_tree (blob, mynodes, &kernel_tree_alloc, true);mutex_unlock (&of_fdt_unflatten_mutex); }EXPORT_SYMBOL_GPL (of_fdt_unflatten_tree);
@@ -1119,7 +1124,8 @@ bool __init early_init_dt_scan(void *params)void __init unflatten_device_tree (void ) {__unflatten_device_tree (initial_boot_params, &of_root, - early_init_dt_alloc_memory_arch); + early_init_dt_alloc_memory_arch, + false);/* Get pointer to "/chosen" and "/aliases" nodes for use everywhere */ of_alias_scan (early_init_dt_alloc_memory_arch);
Signature · 1 line
2.8.1
Re: [PATCH 2/2] of: fdt: mark unflattened tree as detached
Quoted 8 lines · Michal Suchanek
The tree returned from
of_fdt_unflatten_treecannot be attached to the live tree because it is not marked as detached so mark it as such. The dt resolver checks the flag and refuses to process the tree otherwise.Signed-off-by Michal Suchanek <[email protected]>--- drivers/of/fdt.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-)
This doesn't apply because the unflattening code has been re-written. Please rebase to current -rc and resend.
Rob
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
PATCH 1/1 of: fdt: mark unflattened tree as detached
The tree returned from of_fdt_unflatten_tree cannot be attached to the live tree because it is not marked as detached so mark it as such. The dt resolver checks the flag and refuses to process the tree otherwise.
---
- rebase on top of 4.7rc
--- drivers/of/fdt.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-)
drivers/of/fdt.c +10 -3
@@ -472,7 +472,8 @@ static int unflatten_dt_nodes(const void *blob,static void *__unflatten_device_tree (const void *blob,struct device_node *dad,struct device_node **mynodes, -void *(*dt_alloc)(u64 size,u64 align)) +void *(*dt_alloc)(u64 size,u64 align), +bool detached) {int size;void *mem;
@@ -516,6 +517,11 @@ static void *__unflatten_device_tree(const void *blob,pr_warning ("End of tree marker overwritten: %08x\n" ,be32_to_cpup (mem + size)); +if (detached) { +of_node_set_flag (*mynodes,OF_DETACHED ); +pr_debug ("unflattened tree is detached\n" ); + } +pr_debug (" <- unflatten_device_tree()\n" );return mem; }
@@ -548,7 +554,8 @@ void *of_fdt_unflatten_tree(const unsigned long *blob,void *mem;mutex_lock (&of_fdt_unflatten_mutex); - mem =__unflatten_device_tree (blob, dad, mynodes, &kernel_tree_alloc); + mem =__unflatten_device_tree (blob, dad, mynodes, &kernel_tree_alloc, + true);mutex_unlock (&of_fdt_unflatten_mutex);return mem;
@@ -1224,7 +1231,7 @@ bool __init early_init_dt_scan(void *params)void __init unflatten_device_tree (void ) {__unflatten_device_tree (initial_boot_params,NULL , &of_root, - early_init_dt_alloc_memory_arch); + early_init_dt_alloc_memory_arch, false);/* Get pointer to "/chosen" and "/aliases" nodes for use everywhere */ of_alias_scan (early_init_dt_alloc_memory_arch);
Signature · 6 lines
2.8.1 -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
Rob Herring
AppliedRe: [PATCH] of: fdt: mark unflattened tree as detached
Quoted 7 lines · Michal Suchanek
The tree returned from
of_fdt_unflatten_treecannot be attached to the live tree because it is not marked as detached so mark it as such. The dt resolver checks the flag and refuses to process the tree otherwise.Signed-off-by Michal Suchanek <[email protected]>---
- rebase on top of 4.7rc
Applied, thanks.
Rob