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 |
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.
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 ...
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
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 --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) {