Skip to contentSkip to conversation

PPC: Record uboot's relocated address in RAM and show in bdinfo.

PATCH New Richard Retanubun 4 participants 10 messages Jan 15, 2010 – Mar 11, 2010 2 messages not in the archive

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 PPC: Record uboot's relocated address in RAM and show in bdinfo.

From a1d1f6fa9b579c4a766eea45c01224edd536880c Mon Sep 17 00:00:00 2001
From: Richard Retanubun <[email protected]>
Date: Fri, 15 Jan 2010 10:06:06 -0500
Subject: [PATCH] PPC: Record uboot's relocated address in RAM and show in bdinfo.

This commit uses gd->relocaddr variable to store uboot's relocated address in RAM and shows it in bdinfo command.

---
  common/cmd_bdinfo.c           |    1 +
  include/asm-ppc/global_data.h |    2 --
  lib_ppc/board.c               |    8 ++++++++
  3 files changed, 9 insertions(+), 2 deletions(-)
common/cmd_bdinfo.c +1 -0
index 11c1547..f8400bc 100644
@@ -115,6 +115,7 @@ int do_bdinfo ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
  #endif
  	printf ("IP addr     = %pI4\n", &bd->bi_ip_addr);
  	printf ("baudrate    = %6ld bps\n", bd->bi_baudrate   );
+	print_num ("relocaddr", gd->relocaddr);
  	return 0;
  }
 
include/asm-ppc/global_data.h +0 -2
index 3f11918..d3dd44e 100644
@@ -152,9 +152,7 @@ typedef	struct	global_data {
      defined(CONFIG_SANDPOINT)
  	void *		console_addr;
  #endif
-#ifdef CONFIG_AMIGAONEG3SE
  	unsigned long	relocaddr;	/* Start address of U-Boot in RAM */
-#endif
  #if defined(CONFIG_LCD) || defined(CONFIG_VIDEO)
  	unsigned long	fb_base;	/* Base address of framebuffer memory	*/
  #endif
lib_ppc/board.c +8 -0
index dd22f99..f4a357b 100644
@@ -659,6 +659,14 @@ void board_init_r (gd_t *id, ulong dest_addr)
 
  	debug ("Now running in RAM - U-Boot at: %08lx\n", dest_addr);
 
+	/*
+	 * Record uboot's address in RAM, useful for debugging;
+	 * CONFIG_AMIGAONEG3SE gets the address during board_init_f.
+	 */
+#ifndef CONFIG_AMIGAONEG3SE
+	gd->relocaddr = dest_addr;
+#endif
+
  	WATCHDOG_RESET ();
 
  	/*

--
1.6.5

#1 lore raw

PATCH 1/1 PPC: Record uboot's relocated address in RAM and show in bdinfo.

Hi Richard,

Quoted 48 lines

From a1d1f6fa9b579c4a766eea45c01224edd536880c Mon Sep 17 00:00:00 2001
From: Richard Retanubun <[email protected]>
Date: Fri, 15 Jan 2010 10:06:06 -0500
Subject: [PATCH] PPC: Record uboot's relocated address in RAM and show in bdinfo.

This commit uses gd->relocaddr variable to store uboot's relocated address in RAM and shows it in bdinfo command.

---
 common/cmd_bdinfo.c           |    1 +
 include/asm-ppc/global_data.h |    2 --
 lib_ppc/board.c               |    8 ++++++++
 3 files changed, 9 insertions(+), 2 deletions(-)
common/cmd_bdinfo.c +1 -0
index 11c1547..f8400bc 100644
@@ -115,6 +115,7 @@ int do_bdinfo ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 #endif
 	printf ("IP addr     = %pI4\n", &bd->bi_ip_addr);
 	printf ("baudrate    = %6ld bps\n", bd->bi_baudrate   );
+	print_num ("relocaddr", gd->relocaddr);
 	return 0;
 }
 
include/asm-ppc/global_data.h +0 -2
index 3f11918..d3dd44e 100644
@@ -152,9 +152,7 @@ typedef	struct	global_data {
     defined(CONFIG_SANDPOINT)
 	void *		console_addr;
 #endif
-#ifdef CONFIG_AMIGAONEG3SE
 	unsigned long	relocaddr;	/* Start address of U-Boot in RAM */
-#endif
 #if defined(CONFIG_LCD) || defined(CONFIG_VIDEO)
 	unsigned long	fb_base;	/* Base address of framebuffer memory	*/
 #endif
lib_ppc/board.c +0 -0
index dd22f99..f4a357b 100644
@@ -659,6 +659,14 @@ void board_init_r (gd_t *id, ulong dest_addr)
 
 	debug ("Now running in RAM - U-Boot at: %08lx\n", dest_addr);

lib_ppc/board.c void board_init_r (gd_t *id, ulong dest_addr) · line 670

Quoted 10 lines
lib_ppc/board.c +8 -0
 
+	/*
+	 * Record uboot's address in RAM, useful for debugging;
+	 * CONFIG_AMIGAONEG3SE gets the address during board_init_f.
+	 */
+#ifndef CONFIG_AMIGAONEG3SE
+	gd->relocaddr = dest_addr;
+#endif
+
 	WATCHDOG_RESET ();

Please excuse my ignorance, but why not simply remove the #ifdef CONFIG_AMIGAONEG3SE in board_init_f? Actually I was hoping to remove the Amigaone special case.

Cheers
Detlev

Signature · 8 lines
I'm  not  one of those who   think Bill Gates is   the devil. I simply
suspect that if Microsoft ever met up with the devil, it wouldn't need
an interpreter.
               --NICHOLAS PETRELEY, Sr. Editor, InfoWorld
--
DENX Software Engineering GmbH,      MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich,  Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-40 Fax: (+49)-8142-66989-80 Email: dzu at denx.de
#2 lore raw

PATCH 1/1 PPC: Record uboot's relocated address in RAM and show in bdinfo.

Detlev Zundel wrote:
<snip>

Quoted 8 lines

Please excuse my ignorance, but why not simply remove the #ifdef CONFIG_AMIGAONEG3SE in board_init_f? Actually I was hoping to remove the Amigaone special case.

Cheers
Detlev

I prefer getting the data from board_init_r because we really are running from RAM at that point; dest_addr is a passed in function param.

In board_init_f, the addr variable is just what the calculated address is. If we must do the copy there I'd like to move the gd->relocaddr = addr to just before the call to relocate_code, that way if the calculation code got reworked/refactored, we always copy the correct addr variable.

Plus the line: debug ("Now running in RAM - U-Boot at: %08lx\n", dest_addr); in board_init_r

Is the de-facto place where documentations that I've seen refer to for figuring out where u-boot is relocated, so making the assignment there makes it clearer.

All these leads to my preference of getting it from board_init_r.

I'll be happy to submit a V2 that takes out the CONFIG_AMIGAONEG3SE copy operation in board_init_f as well, but I can't confirm if that does not break the AMIGAONE board.

- Richard

#3 lore raw

PATCH 1/1 PPC: Record uboot's relocated address in RAM and show in bdinfo.

Hi Richard,

Quoted 7 lines

Detlev Zundel wrote:
<snip>

Quoted 5 lines

Please excuse my ignorance, but why not simply remove the #ifdef CONFIG_AMIGAONEG3SE in board_init_f? Actually I was hoping to remove the Amigaone special case.

Quoted 6 lines
Quoted 3 lines

Cheers
Detlev

I prefer getting the data from board_init_r because we really are running from RAM at that point; dest_addr is a passed in function param.

I see, thanks for the explanation.

Quoted 5 lines

In board_init_f, the addr variable is just what the calculated address is. If we must do the copy there I'd like to move the gd->relocaddr = addr to just before the call to relocate_code, that way if the calculation code got reworked/refactored, we always copy the correct addr variable.

Yes, I also agree - if we want to have it in _f, we should move the assignment.

Quoted 7 lines

Plus the line: debug ("Now running in RAM - U-Boot at: %08lx\n", dest_addr); in board_init_r

Is the de-facto place where documentations that I've seen refer to for figuring out where u-boot is relocated, so making the assignment there makes it clearer.

All these leads to my preference of getting it from board_init_r.

Actually I do not have a strong preference myself. The only thing I could think of is that an earlier assignment discloses the information also when debugging problems in relocation. On the other hand if you _do_ debug the relocation it is unlikely that you need the variable, so this argument does not tip the scale in any direction.

Quoted 3 lines

I'll be happy to submit a V2 that takes out the CONFIG_AMIGAONEG3SE copy operation in board_init_f as well, but I can't confirm if that does not break the AMIGAONE board.

Yes, please send such a follow-on patch. Not being able to test a change is rather the norm in U-Boot, so it is acceptable to simply CC the relevant maintainer ("Thomas Frieden <[email protected]>") and if no NACK is seen include the changes anyway at some point.

Thanks
Detlev

Signature · 7 lines
It's like manually inflatable airbags -- people will never
think to use it in time to actually get any help from it.
             -- Miles Bader in <[email protected]>
--
DENX Software Engineering GmbH,      MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich,  Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-40 Fax: (+49)-8142-66989-80 Email: dzu at denx.de
#4 lore raw

PATCH 1/1 PPC: Record uboot's relocated address in RAM and show in bdinfo.

Quoted 25 lines

Hi Richard,

Quoted 7 lines

Detlev Zundel wrote:
<snip>

Quoted 5 lines

Please excuse my ignorance, but why not simply remove the #ifdef CONFIG_AMIGAONEG3SE in board_init_f? Actually I was hoping to remove the Amigaone special case.

Quoted 6 lines
Quoted 3 lines

Cheers
Detlev

I prefer getting the data from board_init_r because we really are running from RAM at that point; dest_addr is a passed in function param.

I see, thanks for the explanation.

Quoted 5 lines

In board_init_f, the addr variable is just what the calculated address is. If we must do the copy there I'd like to move the gd->relocaddr = addr to just before the call to relocate_code, that way if the calculation code got reworked/refactored, we always copy the correct addr variable.

Quoted 5 lines

Yes, I also agree - if we want to have it in _f, we should move the assignment.

Quoted 1 line

Plus the line: debug ("Now running in RAM - U-Boot at: %08lx\n", dest_addr);

in board_init_r

This printout is so useful that it should have its own config option so one can have it always on without enabling debug.

Jocke

#5 lore raw

PATCH v2 1/1 PPC: Record uboot's relocated address in RAM and show in bdinfo.

In reply to Detlev Zundel

From c9b845a6dac24e74ab450aa0bac071b441d16ae9 Mon Sep 17 00:00:00 2001
From: Richard Retanubun <[email protected]>
Date: Fri, 15 Jan 2010 10:06:06 -0500
Subject: [PATCH] PPC: Record uboot's relocated address in RAM and show in bdinfo.

This patch uses gd->relocaddr variable to store uboot's relocated address in RAM and shows it in bdinfo command.

This patch removes CONFIG_AMIGAONEG3SE style copying of the address in board_init_f; it is moved to a common place in board_init_r.

---
  common/cmd_bdinfo.c           |    1 +
  include/asm-ppc/global_data.h |    2 --
  lib_ppc/board.c               |    7 +++----
  3 files changed, 4 insertions(+), 6 deletions(-)
common/cmd_bdinfo.c +1 -0
index 11c1547..f8400bc 100644
@@ -115,6 +115,7 @@ int do_bdinfo ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
  #endif
  	printf ("IP addr     = %pI4\n", &bd->bi_ip_addr);
  	printf ("baudrate    = %6ld bps\n", bd->bi_baudrate   );
+	print_num ("relocaddr", gd->relocaddr);
  	return 0;
  }
 
include/asm-ppc/global_data.h +0 -2
index 3f11918..d3dd44e 100644
@@ -152,9 +152,7 @@ typedef	struct	global_data {
      defined(CONFIG_SANDPOINT)
  	void *		console_addr;
  #endif
-#ifdef CONFIG_AMIGAONEG3SE
  	unsigned long	relocaddr;	/* Start address of U-Boot in RAM */
-#endif
  #if defined(CONFIG_LCD) || defined(CONFIG_VIDEO)
  	unsigned long	fb_base;	/* Base address of framebuffer memory	*/
  #endif
lib_ppc/board.c +3 -4
index dd22f99..2e2872e 100644
@@ -476,10 +476,6 @@ void board_init_f (ulong bootflag)
 
  	debug ("Reserving %ldk for U-Boot at: %08lx\n", len >> 10, addr);
 
-#ifdef CONFIG_AMIGAONEG3SE
-	gd->relocaddr = addr;
-#endif
-
  	/*
  	 * reserve memory for malloc() arena
  	 */
@@ -659,6 +655,9 @@ void board_init_r (gd_t *id, ulong dest_addr)
 
  	debug ("Now running in RAM - U-Boot at: %08lx\n", dest_addr);
 
+	/* Record uboot's address in RAM, useful for debugging. */
+	gd->relocaddr = dest_addr;
+
  	WATCHDOG_RESET ();
 
  	/*

--
1.6.5

#6 lore raw

PATCH v2 1/1 PPC: Record uboot's relocated address in RAM and show in bdinfo.

Hi Richard,

can you please resend the patch - it is strangely whitespace damaged:

Quoted 23 lines

From c9b845a6dac24e74ab450aa0bac071b441d16ae9 Mon Sep 17 00:00:00 2001
From: Richard Retanubun <[email protected]>
Date: Fri, 15 Jan 2010 10:06:06 -0500
Subject: [PATCH] PPC: Record uboot's relocated address in RAM and show in bdinfo.

This patch uses gd->relocaddr variable to store uboot's relocated address in RAM and shows it in bdinfo command.

This patch removes CONFIG_AMIGAONEG3SE style copying of the address in board_init_f; it is moved to a common place in board_init_r.

---
  common/cmd_bdinfo.c           |    1 +
  include/asm-ppc/global_data.h |    2 --
  lib_ppc/board.c               |    7 +++----
  3 files changed, 4 insertions(+), 6 deletions(-)
common/cmd_bdinfo.c +0 -0
index 11c1547..f8400bc 100644

common/cmd_bdinfo.c int do_bdinfo ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) · line 121

Quoted 7 lines
common/cmd_bdinfo.c +1 -0
@@ -115,6 +115,7 @@ int do_bdinfo ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
  #endif
  	printf ("IP addr     = %pI4\n", &bd->bi_ip_addr);
  	printf ("baudrate    = %6ld bps\n", bd->bi_baudrate   );
+	print_num ("relocaddr", gd->relocaddr);
  	return 0;
  }
 

I did not check why the other hunks fail, but in this one there is a space too much at the beginning of the lines...

Cheers
Detlev

Signature · 9 lines
... that every year or so they're going to give you a new release full
of 50 000  additional lines of code all  written  by monkeys.  Because
they generally follow  the  ``million monkeys typing,   and eventually
they'll come up with something useful'' school of system development.
	                                    -- Richard M. Stallman
--
DENX Software Engineering GmbH,      MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich,  Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-40 Fax: (+49)-8142-66989-80 Email: dzu at denx.de

A message that is not in the archive (sent off-list or not yet received): [email protected]

A message that is not in the archive (sent off-list or not yet received): [email protected]

#10 lore raw

PATCH v3 1/1 PPC: Record uboot's relocated address in RAM and show in bdinfo.

Hi Richard,

Quoted 11 lines
Quoted 1 line

From 58e9529fa466ef79232398aeda69373125eb2aac Mon Sep 17 00:00:00 2001

From: Richard Retanubun <[email protected]>
Date: Fri, 15 Jan 2010 10:06:06 -0500
Subject: [PATCH] PPC: Record uboot's relocated address in RAM and show in bdinfo.

This patch uses gd->relocaddr variable to store uboot's relocated address in RAM and shows it in bdinfo command.

This patch moves CONFIG_AMIGAONEG3SE style copying of the address in board_init_f to just before relocation is actually done.

Quoted 6 lines

---
Hi Detlev,

Sorry it took a while, got swamped with other tasks. I see your point and have made a patch per your request.

No problem, I know how it is. Thanks for the patch!

Quoted 59 lines

Cheers,

(quoted diff) +0 -1
-Richard
 
 common/cmd_bdinfo.c           |    1 +
 include/asm-ppc/global_data.h |    2 --
 lib_ppc/board.c               |    6 ++----
 3 files changed, 3 insertions(+), 6 deletions(-)
common/cmd_bdinfo.c +1 -0
index 11c1547..f8400bc 100644
@@ -115,6 +115,7 @@ int do_bdinfo ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 #endif
 	printf ("IP addr     = %pI4\n", &bd->bi_ip_addr);
 	printf ("baudrate    = %6ld bps\n", bd->bi_baudrate   );
+	print_num ("relocaddr", gd->relocaddr);
 	return 0;
 }
 
include/asm-ppc/global_data.h +0 -2
index 55e7e20..e031fdb 100644
@@ -149,9 +149,7 @@ typedef	struct	global_data {
     defined(CONFIG_SANDPOINT)
 	void *		console_addr;
 #endif
-#ifdef CONFIG_AMIGAONEG3SE
 	unsigned long	relocaddr;	/* Start address of U-Boot in RAM */
-#endif
 #if defined(CONFIG_LCD) || defined(CONFIG_VIDEO)
 	unsigned long	fb_base;	/* Base address of framebuffer memory	*/
 #endif
lib_ppc/board.c +2 -4
index dd22f99..1e3fe59 100644
@@ -476,10 +476,6 @@ void board_init_f (ulong bootflag)
 
 	debug ("Reserving %ldk for U-Boot at: %08lx\n", len >> 10, addr);
 
-#ifdef CONFIG_AMIGAONEG3SE
-	gd->relocaddr = addr;
-#endif
-
 	/*
 	 * reserve memory for malloc() arena
 	 */
@@ -611,6 +607,8 @@ void board_init_f (ulong bootflag)
 
 	WATCHDOG_RESET();
 
+	gd->relocaddr = addr; /* Record relocation address, useful for debug */
+
 	memcpy (id, (void *)gd, sizeof (gd_t));
 
 	relocate_code (addr_sp, id, addr);
Signature · 8 lines
We can forgive a man for making a useful thing as long as he does not
admire it.  The only excuse  for making  a useless  thing is that one
admires it intensely.
                                    --- Oscar Wilde
--
DENX Software Engineering GmbH,      MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich,  Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-40 Fax: (+49)-8142-66989-80 Email: dzu at denx.de
#11 lore raw

PATCH v3 1/1 PPC: Record uboot's relocated address in RAM and show in bdinfo.

In reply to richardretanubun at ruggedcom.com

Dear richardretanubun at ruggedcom.com,

Quoted 18 lines · In message <[email protected]> you wrote:

From 58e9529fa466ef79232398aeda69373125eb2aac Mon Sep 17 00:00:00 2001
From: Richard Retanubun <[email protected]>
Date: Fri, 15 Jan 2010 10:06:06 -0500
Subject: [PATCH] PPC: Record uboot's relocated address in RAM and show in bdinfo.

This patch uses gd->relocaddr variable to store uboot's relocated address in RAM and shows it in bdinfo command.

This patch moves CONFIG_AMIGAONEG3SE style copying of the address in board_init_f to just before relocation is actually done.

---
Hi Detlev,

Sorry it took a while, got swamped with other tasks. I see your point and have made a patch per your request.

Quoted 8 lines

Cheers,

-Richard

 common/cmd_bdinfo.c           |    1 +
 include/asm-ppc/global_data.h |    2 --
 lib_ppc/board.c               |    6 ++----
 3 files changed, 3 insertions(+), 6 deletions(-)

Applied, thanks.

Best regards,

Wolfgang Denk

Signature · 5 lines
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
One difference between a man and a machine is that a machine is quiet
when well oiled.