public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
* [U-Boot] [PATCH v2] powerpc: Fix bootm to boot up again with a Ramdisk
@ 2008-09-10  9:34 Heiko Schocher
  2008-09-10 20:30 ` Kumar Gala
  0 siblings, 1 reply; 5+ messages in thread
From: Heiko Schocher @ 2008-09-10  9:34 UTC (permalink / raw)
  To: u-boot

Patch
http://git.denx.de/?p=u-boot.git;a=commitdiff;h=2a1a2cb6e2b87ee550e6f27b647d23331dfd5e1b#patch3

didnt remove the dummy mem reservation in fdt_chosen, and
this stopped Linux from booting with a Ramdisk. This patch
fixes this, by deleting the useless dummy mem reservation.

When booting with a Ramdisk, a fix offset FDT_RAMDISK_OVERHEAD
is now added to of_size, so we dont need anymore a dummy
mem reservation.

Signed-off-by: Heiko Schocher <hs@denx.de>
---

changes sinse last patch:

- added comments from Wolfgang Denk

 common/cmd_fdt.c      |    3 ++-
 common/fdt_support.c  |    4 +---
 include/fdt.h         |    2 ++
 include/fdt_support.h |    2 +-
 lib_ppc/bootm.c       |    5 +++--
 5 files changed, 9 insertions(+), 7 deletions(-)

diff --git a/common/cmd_fdt.c b/common/cmd_fdt.c
index 0593bad..288a5c4 100644
--- a/common/cmd_fdt.c
+++ b/common/cmd_fdt.c
@@ -450,7 +450,8 @@ int do_fdt (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
 			initrd_end = simple_strtoul(argv[3], NULL, 16);
 		}

-		fdt_chosen(working_fdt, initrd_start, initrd_end, 1);
+		fdt_chosen(working_fdt, 1);
+		fdt_initrd(working_fdt, initrd_start, initrd_end, 1);
 	}
 	/* resize the fdt */
 	else if (strncmp(argv[1], "re", 2) == 0) {
diff --git a/common/fdt_support.c b/common/fdt_support.c
index a7773ab..8ceeb0f 100644
--- a/common/fdt_support.c
+++ b/common/fdt_support.c
@@ -165,7 +165,7 @@ int fdt_initrd(void *fdt, ulong initrd_start, ulong initrd_end, int force)
 	return 0;
 }

-int fdt_chosen(void *fdt, ulong initrd_start, ulong initrd_end, int force)
+int fdt_chosen(void *fdt, int force)
 {
 	int   nodeoffset;
 	int   err;
@@ -215,8 +215,6 @@ int fdt_chosen(void *fdt, ulong initrd_start, ulong initrd_end, int force)
 		}
 	}

-	fdt_initrd(fdt, initrd_start, initrd_end, force);
-
 #ifdef CONFIG_OF_STDOUT_VIA_ALIAS
 	path = fdt_getprop(fdt, nodeoffset, "linux,stdout-path", NULL);
 	if ((path == NULL) || force)
diff --git a/include/fdt.h b/include/fdt.h
index 48ccfd9..c51212e 100644
--- a/include/fdt.h
+++ b/include/fdt.h
@@ -57,4 +57,6 @@ struct fdt_property {
 #define FDT_V16_SIZE	FDT_V3_SIZE
 #define FDT_V17_SIZE	(FDT_V16_SIZE + sizeof(uint32_t))

+/* adding a ramdisk needs 0x44 bytes in version 2008.10 */
+#define FDT_RAMDISK_OVERHEAD	0x80
 #endif /* _FDT_H */
diff --git a/include/fdt_support.h b/include/fdt_support.h
index 424c3c6..ceaadc2 100644
--- a/include/fdt_support.h
+++ b/include/fdt_support.h
@@ -28,7 +28,7 @@

 #include <fdt.h>

-int fdt_chosen(void *fdt, ulong initrd_start, ulong initrd_end, int force);
+int fdt_chosen(void *fdt, int force);
 int fdt_initrd(void *fdt, ulong initrd_start, ulong initrd_end, int force);
 void do_fixup_by_path(void *fdt, const char *path, const char *prop,
 		      const void *val, int len, int create);
diff --git a/lib_ppc/bootm.c b/lib_ppc/bootm.c
index 348421f..38266e1 100644
--- a/lib_ppc/bootm.c
+++ b/lib_ppc/bootm.c
@@ -145,8 +145,7 @@ int do_bootm_linux(int flag, int argc, char *argv[], bootm_headers_t *images)
 	 * if the user wants it (the logic is in the subroutines).
 	 */
 	if (of_size) {
-		/* pass in dummy initrd info, we'll fix up later */
-		if (fdt_chosen(of_flat_tree, images->rd_start, images->rd_end, 0) < 0) {
+		if (fdt_chosen(of_flat_tree, 0) < 0) {
 			puts ("ERROR: ");
 			puts ("/chosen node create failed");
 			puts (" - must RESET the board to recover.\n");
@@ -169,6 +168,8 @@ int do_bootm_linux(int flag, int argc, char *argv[], bootm_headers_t *images)
 			goto error;
 		of_size = ret;

+		if ((of_flat_tree) && (initrd_start && initrd_end))
+			of_size += FDT_RAMDISK_OVERHEAD;
 		/* Create a new LMB reservation */
 		lmb_reserve(lmb, (ulong)of_flat_tree, of_size);
 	}
-- 
1.5.6.1

-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [U-Boot] [PATCH v2] powerpc: Fix bootm to boot up again with a Ramdisk
  2008-09-10  9:34 [U-Boot] [PATCH v2] powerpc: Fix bootm to boot up again with a Ramdisk Heiko Schocher
@ 2008-09-10 20:30 ` Kumar Gala
  2008-09-11  6:11   ` [U-Boot] [PATCH v3] " Heiko Schocher
  0 siblings, 1 reply; 5+ messages in thread
From: Kumar Gala @ 2008-09-10 20:30 UTC (permalink / raw)
  To: u-boot


On Sep 10, 2008, at 4:34 AM, Heiko Schocher wrote:

> Patch
> http://git.denx.de/?p=u-boot.git;a=commitdiff;h=2a1a2cb6e2b87ee550e6f27b647d23331dfd5e1b#patch3
>
> didnt remove the dummy mem reservation in fdt_chosen, and
> this stopped Linux from booting with a Ramdisk. This patch
> fixes this, by deleting the useless dummy mem reservation.
>
> When booting with a Ramdisk, a fix offset FDT_RAMDISK_OVERHEAD
> is now added to of_size, so we dont need anymore a dummy
> mem reservation.
>
> Signed-off-by: Heiko Schocher <hs@denx.de>
> ---
>
> changes sinse last patch:
>
> - added comments from Wolfgang Denk
>
> common/cmd_fdt.c      |    3 ++-
> common/fdt_support.c  |    4 +---
> include/fdt.h         |    2 ++
> include/fdt_support.h |    2 +-
> lib_ppc/bootm.c       |    5 +++--
> 5 files changed, 9 insertions(+), 7 deletions(-)

it would be nice in either the commit message or a comment how you  
came to the value of FDT_RAMDISK_OVERHEAD.

- k

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [U-Boot] [PATCH v3] powerpc: Fix bootm to boot up again with a Ramdisk
  2008-09-10 20:30 ` Kumar Gala
@ 2008-09-11  6:11   ` Heiko Schocher
  2008-09-12 14:25     ` Kumar Gala
  2008-09-13  0:03     ` Wolfgang Denk
  0 siblings, 2 replies; 5+ messages in thread
From: Heiko Schocher @ 2008-09-11  6:11 UTC (permalink / raw)
  To: u-boot

Patch
http://git.denx.de/?p=u-boot.git;a=commitdiff;h=2a1a2cb6e2b87ee550e6f27b647d23331dfd5e1b#patch3

didnt remove the dummy mem reservation in fdt_chosen, and
this stopped Linux from booting with a Ramdisk. This patch
fixes this, by deleting the useless dummy mem reservation.

When booting with a Ramdisk, a fix offset FDT_RAMDISK_OVERHEAD
is now added to of_size, so we dont need anymore a dummy
mem reservation.

I measured the value of FDT_RAMDISK_OVERHEAD on a MPC8270
based system (=0x44 bytes) and rounded it up to 0x80).

Signed-off-by: Heiko Schocher <hs@denx.de>
---
 common/cmd_fdt.c      |    3 ++-
 common/fdt_support.c  |    4 +---
 include/fdt.h         |    2 ++
 include/fdt_support.h |    2 +-
 lib_ppc/bootm.c       |    5 +++--
 5 files changed, 9 insertions(+), 7 deletions(-)

diff --git a/common/cmd_fdt.c b/common/cmd_fdt.c
index 0593bad..288a5c4 100644
--- a/common/cmd_fdt.c
+++ b/common/cmd_fdt.c
@@ -450,7 +450,8 @@ int do_fdt (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
 			initrd_end = simple_strtoul(argv[3], NULL, 16);
 		}

-		fdt_chosen(working_fdt, initrd_start, initrd_end, 1);
+		fdt_chosen(working_fdt, 1);
+		fdt_initrd(working_fdt, initrd_start, initrd_end, 1);
 	}
 	/* resize the fdt */
 	else if (strncmp(argv[1], "re", 2) == 0) {
diff --git a/common/fdt_support.c b/common/fdt_support.c
index a7773ab..8ceeb0f 100644
--- a/common/fdt_support.c
+++ b/common/fdt_support.c
@@ -165,7 +165,7 @@ int fdt_initrd(void *fdt, ulong initrd_start, ulong initrd_end, int force)
 	return 0;
 }

-int fdt_chosen(void *fdt, ulong initrd_start, ulong initrd_end, int force)
+int fdt_chosen(void *fdt, int force)
 {
 	int   nodeoffset;
 	int   err;
@@ -215,8 +215,6 @@ int fdt_chosen(void *fdt, ulong initrd_start, ulong initrd_end, int force)
 		}
 	}

-	fdt_initrd(fdt, initrd_start, initrd_end, force);
-
 #ifdef CONFIG_OF_STDOUT_VIA_ALIAS
 	path = fdt_getprop(fdt, nodeoffset, "linux,stdout-path", NULL);
 	if ((path == NULL) || force)
diff --git a/include/fdt.h b/include/fdt.h
index 48ccfd9..c51212e 100644
--- a/include/fdt.h
+++ b/include/fdt.h
@@ -57,4 +57,6 @@ struct fdt_property {
 #define FDT_V16_SIZE	FDT_V3_SIZE
 #define FDT_V17_SIZE	(FDT_V16_SIZE + sizeof(uint32_t))

+/* adding a ramdisk needs 0x44 bytes in version 2008.10 */
+#define FDT_RAMDISK_OVERHEAD	0x80
 #endif /* _FDT_H */
diff --git a/include/fdt_support.h b/include/fdt_support.h
index 424c3c6..ceaadc2 100644
--- a/include/fdt_support.h
+++ b/include/fdt_support.h
@@ -28,7 +28,7 @@

 #include <fdt.h>

-int fdt_chosen(void *fdt, ulong initrd_start, ulong initrd_end, int force);
+int fdt_chosen(void *fdt, int force);
 int fdt_initrd(void *fdt, ulong initrd_start, ulong initrd_end, int force);
 void do_fixup_by_path(void *fdt, const char *path, const char *prop,
 		      const void *val, int len, int create);
diff --git a/lib_ppc/bootm.c b/lib_ppc/bootm.c
index 348421f..38266e1 100644
--- a/lib_ppc/bootm.c
+++ b/lib_ppc/bootm.c
@@ -145,8 +145,7 @@ int do_bootm_linux(int flag, int argc, char *argv[], bootm_headers_t *images)
 	 * if the user wants it (the logic is in the subroutines).
 	 */
 	if (of_size) {
-		/* pass in dummy initrd info, we'll fix up later */
-		if (fdt_chosen(of_flat_tree, images->rd_start, images->rd_end, 0) < 0) {
+		if (fdt_chosen(of_flat_tree, 0) < 0) {
 			puts ("ERROR: ");
 			puts ("/chosen node create failed");
 			puts (" - must RESET the board to recover.\n");
@@ -169,6 +168,8 @@ int do_bootm_linux(int flag, int argc, char *argv[], bootm_headers_t *images)
 			goto error;
 		of_size = ret;

+		if ((of_flat_tree) && (initrd_start && initrd_end))
+			of_size += FDT_RAMDISK_OVERHEAD;
 		/* Create a new LMB reservation */
 		lmb_reserve(lmb, (ulong)of_flat_tree, of_size);
 	}
-- 
1.5.6.1


-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [U-Boot] [PATCH v3] powerpc: Fix bootm to boot up again with a Ramdisk
  2008-09-11  6:11   ` [U-Boot] [PATCH v3] " Heiko Schocher
@ 2008-09-12 14:25     ` Kumar Gala
  2008-09-13  0:03     ` Wolfgang Denk
  1 sibling, 0 replies; 5+ messages in thread
From: Kumar Gala @ 2008-09-12 14:25 UTC (permalink / raw)
  To: u-boot


On Sep 11, 2008, at 1:11 AM, Heiko Schocher wrote:

> Patch
> http://git.denx.de/?p=u-boot.git;a=commitdiff;h=2a1a2cb6e2b87ee550e6f27b647d23331dfd5e1b#patch3
>
> didnt remove the dummy mem reservation in fdt_chosen, and
> this stopped Linux from booting with a Ramdisk. This patch
> fixes this, by deleting the useless dummy mem reservation.
>
> When booting with a Ramdisk, a fix offset FDT_RAMDISK_OVERHEAD
> is now added to of_size, so we dont need anymore a dummy
> mem reservation.
>
> I measured the value of FDT_RAMDISK_OVERHEAD on a MPC8270
> based system (=0x44 bytes) and rounded it up to 0x80).
>
> Signed-off-by: Heiko Schocher <hs@denx.de>
> ---
> common/cmd_fdt.c      |    3 ++-
> common/fdt_support.c  |    4 +---
> include/fdt.h         |    2 ++
> include/fdt_support.h |    2 +-
> lib_ppc/bootm.c       |    5 +++--
> 5 files changed, 9 insertions(+), 7 deletions(-)

Acked-by: Kumar Gala <galak@kernel.crashing.org>

- k

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [U-Boot] [PATCH v3] powerpc: Fix bootm to boot up again with a Ramdisk
  2008-09-11  6:11   ` [U-Boot] [PATCH v3] " Heiko Schocher
  2008-09-12 14:25     ` Kumar Gala
@ 2008-09-13  0:03     ` Wolfgang Denk
  1 sibling, 0 replies; 5+ messages in thread
From: Wolfgang Denk @ 2008-09-13  0:03 UTC (permalink / raw)
  To: u-boot

Dear Heiko Schocher,

In message <48C8B68B.5050603@denx.de> you wrote:
> Patch
> http://git.denx.de/?p=u-boot.git;a=commitdiff;h=2a1a2cb6e2b87ee550e6f27b647d23331dfd5e1b#patch3
> 
> didnt remove the dummy mem reservation in fdt_chosen, and
> this stopped Linux from booting with a Ramdisk. This patch
> fixes this, by deleting the useless dummy mem reservation.
> 
> When booting with a Ramdisk, a fix offset FDT_RAMDISK_OVERHEAD
> is now added to of_size, so we dont need anymore a dummy
> mem reservation.
> 
> I measured the value of FDT_RAMDISK_OVERHEAD on a MPC8270
> based system (=0x44 bytes) and rounded it up to 0x80).
> 
> Signed-off-by: Heiko Schocher <hs@denx.de>
> ---
>  common/cmd_fdt.c      |    3 ++-
>  common/fdt_support.c  |    4 +---
>  include/fdt.h         |    2 ++
>  include/fdt_support.h |    2 +-
>  lib_ppc/bootm.c       |    5 +++--
>  5 files changed, 9 insertions(+), 7 deletions(-)

Applied, thanks.

Best regards,

Wolfgang Denk

-- 
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
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
 The software required `Windows 95 or better', so I installed Linux.

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2008-09-13  0:03 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-09-10  9:34 [U-Boot] [PATCH v2] powerpc: Fix bootm to boot up again with a Ramdisk Heiko Schocher
2008-09-10 20:30 ` Kumar Gala
2008-09-11  6:11   ` [U-Boot] [PATCH v3] " Heiko Schocher
2008-09-12 14:25     ` Kumar Gala
2008-09-13  0:03     ` Wolfgang Denk

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox