diff mbox series

livetree: avoid assertion of orphan phandles with overlays

Message ID 1508854458-9937-1-git-send-email-t-kristo@ti.com
State New
Headers show
Series livetree: avoid assertion of orphan phandles with overlays | expand

Commit Message

Tero Kristo Oct. 24, 2017, 2:14 p.m. UTC
Right now, check_interrupts_property fails with overlays, as the phandle
for the interrupt-parent can be orphan. Avoid this by allowing the orphan
node to pass the assert check.

The process_checks() call is also moved later during init sequence,
so that we can use the global variable generate_fixups to check if
we are compiling an overlay.

Signed-off-by: Tero Kristo <t-kristo@ti.com>

---
 dtc.c      | 3 ++-
 livetree.c | 2 +-
 2 files changed, 3 insertions(+), 2 deletions(-)

-- 
1.9.1

--
Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki. Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Comments

Rob Herring Oct. 24, 2017, 3:21 p.m. UTC | #1
On Tue, Oct 24, 2017 at 9:14 AM, Tero Kristo <t-kristo@ti.com> wrote:
> Right now, check_interrupts_property fails with overlays, as the phandle

> for the interrupt-parent can be orphan. Avoid this by allowing the orphan

> node to pass the assert check.

>

> The process_checks() call is also moved later during init sequence,

> so that we can use the global variable generate_fixups to check if

> we are compiling an overlay.


This is fixed by [1].

David, BTW, you didn't push to kernel.org dtc repo. That's still the
"official" one?

Rob

[1] https://github.com/dgibson/dtc/commit/c1e55a5513e9bca41dc78a0f20245cc928596a3a
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
David Gibson Oct. 24, 2017, 4:07 p.m. UTC | #2
On Tue, Oct 24, 2017 at 10:21:10AM -0500, Rob Herring wrote:
> On Tue, Oct 24, 2017 at 9:14 AM, Tero Kristo <t-kristo@ti.com> wrote:

> > Right now, check_interrupts_property fails with overlays, as the phandle

> > for the interrupt-parent can be orphan. Avoid this by allowing the orphan

> > node to pass the assert check.

> >

> > The process_checks() call is also moved later during init sequence,

> > so that we can use the global variable generate_fixups to check if

> > we are compiling an overlay.

> 

> This is fixed by [1].

> 

> David, BTW, you didn't push to kernel.org dtc repo. That's still the

> "official" one?


Yess.  I usually push to github first, wait for the Travis build to
complete then push to kernel.org, but I got distracted and forgot to
finish that.  Fixed now.

> 

> Rob

> 

> [1] https://github.com/dgibson/dtc/commit/c1e55a5513e9bca41dc78a0f20245cc928596a3a

> 


-- 
David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you.  NOT _the_ _other_
				| _way_ _around_!
http://www.ozlabs.org/~dgibson
David Gibson Oct. 27, 2017, 2:33 p.m. UTC | #3
On Tue, Oct 24, 2017 at 05:14:18PM +0300, Tero Kristo wrote:
> Right now, check_interrupts_property fails with overlays, as the phandle

> for the interrupt-parent can be orphan. Avoid this by allowing the orphan

> node to pass the assert check.

> 

> The process_checks() call is also moved later during init sequence,

> so that we can use the global variable generate_fixups to check if

> we are compiling an overlay.

> 

> Signed-off-by: Tero Kristo <t-kristo@ti.com>


Applied, with a bit of a tweak.

> ---

>  dtc.c      | 3 ++-

>  livetree.c | 2 +-

>  2 files changed, 3 insertions(+), 2 deletions(-)

> 

> diff --git a/dtc.c b/dtc.c

> index 5ed873c..a0f4603 100644

> --- a/dtc.c

> +++ b/dtc.c

> @@ -319,13 +319,14 @@ int main(int argc, char *argv[])

>  		dti->boot_cpuid_phys = cmdline_boot_cpuid;

>  

>  	fill_fullpaths(dti->dt, "");

> -	process_checks(force, dti);

>  

>  	/* on a plugin, generate by default */

>  	if (dti->dtsflags & DTSF_PLUGIN) {

>  		generate_fixups = 1;

>  	}

>  

> +	process_checks(force, dti);

> +

>  	if (auto_label_aliases)

>  		generate_label_tree(dti, "aliases", false);

>  

> diff --git a/livetree.c b/livetree.c

> index 6846ad2..d6a7681 100644

> --- a/livetree.c

> +++ b/livetree.c

> @@ -540,7 +540,7 @@ struct node *get_node_by_phandle(struct node *tree, cell_t phandle)

>  {

>  	struct node *child, *node;

>  

> -	assert((phandle != 0) && (phandle != -1));

> +	assert((phandle != 0 && (phandle != -1 || generate_fixups == 1)));

>  

>  	if (tree->phandle == phandle) {

>  		if (tree->deleted)


-- 
David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you.  NOT _the_ _other_
				| _way_ _around_!
http://www.ozlabs.org/~dgibson
diff mbox series

Patch

diff --git a/dtc.c b/dtc.c
index 5ed873c..a0f4603 100644
--- a/dtc.c
+++ b/dtc.c
@@ -319,13 +319,14 @@  int main(int argc, char *argv[])
 		dti->boot_cpuid_phys = cmdline_boot_cpuid;
 
 	fill_fullpaths(dti->dt, "");
-	process_checks(force, dti);
 
 	/* on a plugin, generate by default */
 	if (dti->dtsflags & DTSF_PLUGIN) {
 		generate_fixups = 1;
 	}
 
+	process_checks(force, dti);
+
 	if (auto_label_aliases)
 		generate_label_tree(dti, "aliases", false);
 
diff --git a/livetree.c b/livetree.c
index 6846ad2..d6a7681 100644
--- a/livetree.c
+++ b/livetree.c
@@ -540,7 +540,7 @@  struct node *get_node_by_phandle(struct node *tree, cell_t phandle)
 {
 	struct node *child, *node;
 
-	assert((phandle != 0) && (phandle != -1));
+	assert((phandle != 0 && (phandle != -1 || generate_fixups == 1)));
 
 	if (tree->phandle == phandle) {
 		if (tree->deleted)