dt/flattree: Fix return value of early_init_dt_scan_memory

Message ID 1303225269-10092-1-git-send-email-shawn.guo@linaro.org
State New
Headers show

Commit Message

Shawn Guo April 19, 2011, 3:01 p.m.
It fixes the return value of funciont early_init_dt_scan_memory on
the success return path.

Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
---
 drivers/of/fdt.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

Comments

Jeremy Kerr April 20, 2011, 12:47 a.m. | #1
Hi Shawn,

> It fixes the return value of funciont early_init_dt_scan_memory on
> the success return path.

[In general, the changelog should explain why you're making this change,
not just re-iterate what the patch does. Does this fix a problem you
were seeing?]

With regards to this specific patch - I don't think this is correct; if
we return 1 here, we'll abort the of_scan_flat_dt loop after
successfully parsing one memory node, whereas machines may have multiple
nodes. This change will break booting on those machines.

Cheers,


Jeremy
Grant Likely April 20, 2011, 2:44 a.m. | #2
On Tue, Apr 19, 2011 at 6:47 PM, Jeremy Kerr <jeremy.kerr@canonical.com> wrote:
> Hi Shawn,
>
>> It fixes the return value of funciont early_init_dt_scan_memory on
>> the success return path.
>
> [In general, the changelog should explain why you're making this change,
> not just re-iterate what the patch does. Does this fix a problem you
> were seeing?]
>
> With regards to this specific patch - I don't think this is correct; if
> we return 1 here, we'll abort the of_scan_flat_dt loop after
> successfully parsing one memory node, whereas machines may have multiple
> nodes. This change will break booting on those machines.
>
> Cheers,

Yes, the current code is correct.  All of the memory nodes are
supposed to be processed.

g.
Shawn Guo April 20, 2011, 2:16 p.m. | #3
Hi Jeremy,

On Wed, Apr 20, 2011 at 08:47:26AM +0800, Jeremy Kerr wrote:
> Hi Shawn,
> 
> > It fixes the return value of funciont early_init_dt_scan_memory on
> > the success return path.
> 
> [In general, the changelog should explain why you're making this change,
> not just re-iterate what the patch does. Does this fix a problem you
> were seeing?]
> 
Thanks for the guide.

> With regards to this specific patch - I don't think this is correct; if
> we return 1 here, we'll abort the of_scan_flat_dt loop after
> successfully parsing one memory node, whereas machines may have multiple
> nodes. This change will break booting on those machines.
> 
I really did not think of the case that there are multiple memory
nodes.  Please ignore it, and sorry for the noise.

Patch

diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c
index c9db49c..387336d 100644
--- a/drivers/of/fdt.c
+++ b/drivers/of/fdt.c
@@ -659,7 +659,7 @@  int __init early_init_dt_scan_memory(unsigned long node, const char *uname,
 		early_init_dt_add_memory_arch(base, size);
 	}
 
-	return 0;
+	return 1;
 }
 
 int __init early_init_dt_scan_chosen(unsigned long node, const char *uname,