diff mbox series

platform: generic: Keep some empty space in FDT passed to next stage

Message ID 20251105160146.271156-1-apatel@ventanamicro.com
State Superseded
Headers show
Series platform: generic: Keep some empty space in FDT passed to next stage | expand

Commit Message

Anup Patel Nov. 5, 2025, 4:01 p.m. UTC
Leaving no empty space in the FDT passed to the next booting stage
causes the following U-Boot crash on Ventana internal platforms:

Unhandled exception: Load access fault
EPC: 00000000fffa6372 RA: 00000000fffa7418 TVAL: 0001746174730068
EPC: 0000000080245372 RA: 0000000080246418 reloc adjusted

SP:  00000000fef38440 GP:  00000000fef40e60 TP:  0000000000000000
T0:  00000000fef40a70 T1:  000000000000ff00 T2:  0000000000000000
S0:  00000000fffc17a8 S1:  00000000fef38d40 A0:  7375746174730068
A1:  00000000fffc17a8 A2:  0000000000000010 A3:  0000000000000010
A4:  0000000000000000 A5:  00000000fffc17b8 A6:  0000000000ff0000
A7:  000000000000b100 S2:  0000000000000000 S3:  0000000000000001
S4:  00000000fef38d40 S5:  7375746174730068 S6:  0000000000000000
S7:  00000000fef4eef0 S8:  00000000fef4ef90 S9:  0000000000000000
S10: 0000000000000000 S11: 00000000fef4efc0 T3:  00000000fef40ea8
T4:  0000000000ff0000 T5:  00000000fef40a60 T6:  00000000fef40a6c

To address the above issue, keep some minimal empty space in the
FDT instead of no empty space.

Fixes: bbe9a23060e9 ("platform: generic: Pack the FDT after applying fixups")
Signed-off-by: Anup Patel <apatel@ventanamicro.com>
---
 platform/generic/platform.c | 2 ++
 1 file changed, 2 insertions(+)

Comments

Andrew Jones Nov. 5, 2025, 4:14 p.m. UTC | #1
On Wed, Nov 05, 2025 at 09:31:45PM +0530, Anup Patel wrote:
> Leaving no empty space in the FDT passed to the next booting stage
> causes the following U-Boot crash on Ventana internal platforms:
> 
> Unhandled exception: Load access fault
> EPC: 00000000fffa6372 RA: 00000000fffa7418 TVAL: 0001746174730068
> EPC: 0000000080245372 RA: 0000000080246418 reloc adjusted
> 
> SP:  00000000fef38440 GP:  00000000fef40e60 TP:  0000000000000000
> T0:  00000000fef40a70 T1:  000000000000ff00 T2:  0000000000000000
> S0:  00000000fffc17a8 S1:  00000000fef38d40 A0:  7375746174730068
> A1:  00000000fffc17a8 A2:  0000000000000010 A3:  0000000000000010
> A4:  0000000000000000 A5:  00000000fffc17b8 A6:  0000000000ff0000
> A7:  000000000000b100 S2:  0000000000000000 S3:  0000000000000001
> S4:  00000000fef38d40 S5:  7375746174730068 S6:  0000000000000000
> S7:  00000000fef4eef0 S8:  00000000fef4ef90 S9:  0000000000000000
> S10: 0000000000000000 S11: 00000000fef4efc0 T3:  00000000fef40ea8
> T4:  0000000000ff0000 T5:  00000000fef40a60 T6:  00000000fef40a6c
> 
> To address the above issue, keep some minimal empty space in the
> FDT instead of no empty space.
> 
> Fixes: bbe9a23060e9 ("platform: generic: Pack the FDT after applying fixups")
> Signed-off-by: Anup Patel <apatel@ventanamicro.com>
> ---
>  platform/generic/platform.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/platform/generic/platform.c b/platform/generic/platform.c
> index e66f99fa..ea44676b 100644
> --- a/platform/generic/platform.c
> +++ b/platform/generic/platform.c
> @@ -245,7 +245,9 @@ int generic_final_init(bool cold_boot)
>  	fdt_fixups(fdt);
>  	fdt_domain_fixup(fdt);
>  
> +	/* Minimize the empty space in FDT to 4KB */
>  	fdt_pack(fdt);
> +	fdt_open_into(fdt, fdt, fdt_totalsize(fdt) + 4096);
>  
>  	return 0;
>  }
> -- 
> 2.43.0
>

I agree opensbi needs to workaround uboot issues in order to ensure it
doesn't break current configurations, but maybe we should make the
extra space added be a Kconfig managed define, rather than a hard 4096.
The main reason would be to enable setting it to zero so issues with
second stage loaders like this one can be flushed out and fixed.

Thanks,
drew
Anup Patel Dec. 1, 2025, 4:59 a.m. UTC | #2
On Wed, Nov 5, 2025 at 9:44 PM Andrew Jones <ajones@ventanamicro.com> wrote:
>
> On Wed, Nov 05, 2025 at 09:31:45PM +0530, Anup Patel wrote:
> > Leaving no empty space in the FDT passed to the next booting stage
> > causes the following U-Boot crash on Ventana internal platforms:
> >
> > Unhandled exception: Load access fault
> > EPC: 00000000fffa6372 RA: 00000000fffa7418 TVAL: 0001746174730068
> > EPC: 0000000080245372 RA: 0000000080246418 reloc adjusted
> >
> > SP:  00000000fef38440 GP:  00000000fef40e60 TP:  0000000000000000
> > T0:  00000000fef40a70 T1:  000000000000ff00 T2:  0000000000000000
> > S0:  00000000fffc17a8 S1:  00000000fef38d40 A0:  7375746174730068
> > A1:  00000000fffc17a8 A2:  0000000000000010 A3:  0000000000000010
> > A4:  0000000000000000 A5:  00000000fffc17b8 A6:  0000000000ff0000
> > A7:  000000000000b100 S2:  0000000000000000 S3:  0000000000000001
> > S4:  00000000fef38d40 S5:  7375746174730068 S6:  0000000000000000
> > S7:  00000000fef4eef0 S8:  00000000fef4ef90 S9:  0000000000000000
> > S10: 0000000000000000 S11: 00000000fef4efc0 T3:  00000000fef40ea8
> > T4:  0000000000ff0000 T5:  00000000fef40a60 T6:  00000000fef40a6c
> >
> > To address the above issue, keep some minimal empty space in the
> > FDT instead of no empty space.
> >
> > Fixes: bbe9a23060e9 ("platform: generic: Pack the FDT after applying fixups")
> > Signed-off-by: Anup Patel <apatel@ventanamicro.com>
> > ---
> >  platform/generic/platform.c | 2 ++
> >  1 file changed, 2 insertions(+)
> >
> > diff --git a/platform/generic/platform.c b/platform/generic/platform.c
> > index e66f99fa..ea44676b 100644
> > --- a/platform/generic/platform.c
> > +++ b/platform/generic/platform.c
> > @@ -245,7 +245,9 @@ int generic_final_init(bool cold_boot)
> >       fdt_fixups(fdt);
> >       fdt_domain_fixup(fdt);
> >
> > +     /* Minimize the empty space in FDT to 4KB */
> >       fdt_pack(fdt);
> > +     fdt_open_into(fdt, fdt, fdt_totalsize(fdt) + 4096);
> >
> >       return 0;
> >  }
> > --
> > 2.43.0
> >
>
> I agree opensbi needs to workaround uboot issues in order to ensure it
> doesn't break current configurations, but maybe we should make the
> extra space added be a Kconfig managed define, rather than a hard 4096.
> The main reason would be to enable setting it to zero so issues with
> second stage loaders like this one can be flushed out and fixed.
>

Adding a Kconfig option for the amount of extra space should be fine,
I will update and send v2.

Thanks,
Anup
diff mbox series

Patch

diff --git a/platform/generic/platform.c b/platform/generic/platform.c
index e66f99fa..ea44676b 100644
--- a/platform/generic/platform.c
+++ b/platform/generic/platform.c
@@ -245,7 +245,9 @@  int generic_final_init(bool cold_boot)
 	fdt_fixups(fdt);
 	fdt_domain_fixup(fdt);
 
+	/* Minimize the empty space in FDT to 4KB */
 	fdt_pack(fdt);
+	fdt_open_into(fdt, fdt, fdt_totalsize(fdt) + 4096);
 
 	return 0;
 }