diff mbox series

[U-Boot] cmd: fdt: Fix fdt address information after the movement

Message ID 20181018184354.22000-1-marek.vasut+renesas@gmail.com
State Accepted
Commit b1a7e79949a972231ddf793fd48ca0ce9cf48da5
Delegated to: Simon Glass
Headers show
Series [U-Boot] cmd: fdt: Fix fdt address information after the movement | expand

Commit Message

Marek Vasut Oct. 18, 2018, 6:43 p.m. UTC
From: Hiroyuki Yokoyama <hiroyuki.yokoyama.vx@renesas.com>

This patch fixes the address information of fdt.

wrong case:
 => fdt addr 0x48000000
 => fdt move 0x48000000 0x41000000 0xa000
 => fdt addr
The address of the fdt is 48000000

Active address in this case is 0x41000000.

Signed-off-by: Hiroyuki Yokoyama <hiroyuki.yokoyama.vx@renesas.com>
Signed-off-by: Marek Vasut <marek.vasut+renesas@gmail.com>
Cc: Hiroyuki Yokoyama <hiroyuki.yokoyama.vx@renesas.com>
Cc: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
Cc: Pantelis Antoniou <pantelis.antoniou@konsulko.com>
---
 cmd/fdt.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Simon Glass Nov. 17, 2018, 12:13 a.m. UTC | #1
On Thu, 18 Oct 2018 at 12:44, Marek Vasut <marek.vasut@gmail.com> wrote:
>
> From: Hiroyuki Yokoyama <hiroyuki.yokoyama.vx@renesas.com>
>
> This patch fixes the address information of fdt.
>
> wrong case:
>  => fdt addr 0x48000000
>  => fdt move 0x48000000 0x41000000 0xa000
>  => fdt addr
> The address of the fdt is 48000000
>
> Active address in this case is 0x41000000.
>
> Signed-off-by: Hiroyuki Yokoyama <hiroyuki.yokoyama.vx@renesas.com>
> Signed-off-by: Marek Vasut <marek.vasut+renesas@gmail.com>
> Cc: Hiroyuki Yokoyama <hiroyuki.yokoyama.vx@renesas.com>
> Cc: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
> Cc: Pantelis Antoniou <pantelis.antoniou@konsulko.com>
> ---
>  cmd/fdt.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>

Reviewed-by: Simon Glass <sjg@chromium.org>

Also, the cast to struct fdt_header * in the code above looks wrong. I
think it should have a map_sysmem() in there.
Marek Vasut Nov. 18, 2018, 3:02 p.m. UTC | #2
On 11/17/2018 01:13 AM, Simon Glass wrote:
> On Thu, 18 Oct 2018 at 12:44, Marek Vasut <marek.vasut@gmail.com> wrote:
>>
>> From: Hiroyuki Yokoyama <hiroyuki.yokoyama.vx@renesas.com>
>>
>> This patch fixes the address information of fdt.
>>
>> wrong case:
>>  => fdt addr 0x48000000
>>  => fdt move 0x48000000 0x41000000 0xa000
>>  => fdt addr
>> The address of the fdt is 48000000
>>
>> Active address in this case is 0x41000000.
>>
>> Signed-off-by: Hiroyuki Yokoyama <hiroyuki.yokoyama.vx@renesas.com>
>> Signed-off-by: Marek Vasut <marek.vasut+renesas@gmail.com>
>> Cc: Hiroyuki Yokoyama <hiroyuki.yokoyama.vx@renesas.com>
>> Cc: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
>> Cc: Pantelis Antoniou <pantelis.antoniou@konsulko.com>
>> ---
>>  cmd/fdt.c | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>
> 
> Reviewed-by: Simon Glass <sjg@chromium.org>
> 
> Also, the cast to struct fdt_header * in the code above looks wrong. I
> think it should have a map_sysmem() in there.

Rather than that, I wonder, what would happen if we put FDT above 32bit
address space and used the 'fdt' command ? Would that work or not ? I
suspect the later ...
Simon Glass Nov. 18, 2018, 9:22 p.m. UTC | #3
Hi Marek,

On Sun, 18 Nov 2018 at 08:02, Marek Vasut <marek.vasut@gmail.com> wrote:
>
> On 11/17/2018 01:13 AM, Simon Glass wrote:
> > On Thu, 18 Oct 2018 at 12:44, Marek Vasut <marek.vasut@gmail.com> wrote:
> >>
> >> From: Hiroyuki Yokoyama <hiroyuki.yokoyama.vx@renesas.com>
> >>
> >> This patch fixes the address information of fdt.
> >>
> >> wrong case:
> >>  => fdt addr 0x48000000
> >>  => fdt move 0x48000000 0x41000000 0xa000
> >>  => fdt addr
> >> The address of the fdt is 48000000
> >>
> >> Active address in this case is 0x41000000.
> >>
> >> Signed-off-by: Hiroyuki Yokoyama <hiroyuki.yokoyama.vx@renesas.com>
> >> Signed-off-by: Marek Vasut <marek.vasut+renesas@gmail.com>
> >> Cc: Hiroyuki Yokoyama <hiroyuki.yokoyama.vx@renesas.com>
> >> Cc: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
> >> Cc: Pantelis Antoniou <pantelis.antoniou@konsulko.com>
> >> ---
> >>  cmd/fdt.c | 2 +-
> >>  1 file changed, 1 insertion(+), 1 deletion(-)
> >>
> >
> > Reviewed-by: Simon Glass <sjg@chromium.org>
> >
> > Also, the cast to struct fdt_header * in the code above looks wrong. I
> > think it should have a map_sysmem() in there.
>
> Rather than that, I wonder, what would happen if we put FDT above 32bit
> address space and used the 'fdt' command ? Would that work or not ? I
> suspect the later ...

I don't know. I'm looking forward to having tests for all these cases one day.

Regards,
Simon
Simon Glass Nov. 22, 2018, 8:22 p.m. UTC | #4
On Sun, 18 Nov 2018 at 14:22, Simon Glass <sjg@chromium.org> wrote:
>
> Hi Marek,
>
> On Sun, 18 Nov 2018 at 08:02, Marek Vasut <marek.vasut@gmail.com> wrote:
> >
> > On 11/17/2018 01:13 AM, Simon Glass wrote:
> > > On Thu, 18 Oct 2018 at 12:44, Marek Vasut <marek.vasut@gmail.com> wrote:
> > >>
> > >> From: Hiroyuki Yokoyama <hiroyuki.yokoyama.vx@renesas.com>
> > >>
> > >> This patch fixes the address information of fdt.
> > >>
> > >> wrong case:
> > >>  => fdt addr 0x48000000
> > >>  => fdt move 0x48000000 0x41000000 0xa000
> > >>  => fdt addr
> > >> The address of the fdt is 48000000
> > >>
> > >> Active address in this case is 0x41000000.
> > >>
> > >> Signed-off-by: Hiroyuki Yokoyama <hiroyuki.yokoyama.vx@renesas.com>
> > >> Signed-off-by: Marek Vasut <marek.vasut+renesas@gmail.com>
> > >> Cc: Hiroyuki Yokoyama <hiroyuki.yokoyama.vx@renesas.com>
> > >> Cc: Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
> > >> Cc: Pantelis Antoniou <pantelis.antoniou@konsulko.com>
> > >> ---
> > >>  cmd/fdt.c | 2 +-
> > >>  1 file changed, 1 insertion(+), 1 deletion(-)
> > >>
> > >
> > > Reviewed-by: Simon Glass <sjg@chromium.org>
> > >
> > > Also, the cast to struct fdt_header * in the code above looks wrong. I
> > > think it should have a map_sysmem() in there.
> >
> > Rather than that, I wonder, what would happen if we put FDT above 32bit
> > address space and used the 'fdt' command ? Would that work or not ? I
> > suspect the later ...
>
> I don't know. I'm looking forward to having tests for all these cases one day.

Applied to u-boot-dm, thanks!
diff mbox series

Patch

diff --git a/cmd/fdt.c b/cmd/fdt.c
index 8a19a3fdbf..84be26f4f1 100644
--- a/cmd/fdt.c
+++ b/cmd/fdt.c
@@ -202,7 +202,7 @@  static int do_fdt(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 				fdt_strerror(err));
 			return 1;
 		}
-		working_fdt = newaddr;
+		set_working_fdt_addr((ulong)newaddr);
 #ifdef CONFIG_OF_SYSTEM_SETUP
 	/* Call the board-specific fixup routine */
 	} else if (strncmp(argv[1], "sys", 3) == 0) {