[PATCH] raspberrypi: reserve first two pages in efi memory map

Kyle Evans kevans at freebsd.org
Wed Feb 26 19:26:39 CET 2020


On Wed, Feb 26, 2020 at 12:06 PM Matthias Brugger <mbrugger at suse.com> wrote:
>
>
>
> On 26/02/2020 15:03, kevans at FreeBSD.org wrote:
> > From: Kyle Evans <kevans at FreeBSD.org>
> >
> > The psci stub provided by Raspberry Pi is around 5k in size, thus residing
> > in the first two pages of memory. Without this reservation, the next stage
> > or OS assume they're free to use the second page and may get catastrophic
> > results from clobbering it.
> >
> > Signed-off-by: Kyle Evans <kevans at FreeBSD.org>
> > Cc: Matthias Brugger <mbrugger at suse.com>
> > ---
> >  board/raspberrypi/rpi/rpi.c | 4 ++--
> >  1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/board/raspberrypi/rpi/rpi.c b/board/raspberrypi/rpi/rpi.c
> > index e367ba3092..d3f9bd16ac 100644
> > --- a/board/raspberrypi/rpi/rpi.c
> > +++ b/board/raspberrypi/rpi/rpi.c
> > @@ -488,8 +488,8 @@ int ft_board_setup(void *blob, bd_t *bd)
> >       lcd_dt_simplefb_add_node(blob);
> >
> >  #ifdef CONFIG_EFI_LOADER
> > -     /* Reserve the spin table */
> > -     efi_add_memory_map(0, 1, EFI_RESERVED_MEMORY_TYPE, 0);
> > +     /* Reserve the first two pages for spin table/psci stub. */
> > +     efi_add_memory_map(0, 2, EFI_RESERVED_MEMORY_TYPE, 0);
>
> Is this that changed recently or was the memory reservation wrong from the
> beginning?
>

As far as I can tell it just wasn't quite accounted for in the initial
reservation -- Linux presumably uses spin-table as described in the
DTS, where-as FreeBSD opts for PSCI instead since it's available. I
don't have a good intuition for who else may be using PSCI for RPi; we
may be in the minority.

FWIW, /memreserve/ in the upstream (raspberrypi/firmware) DTB also do
not account for PSCI stubs -- I've filed an issue[1] there, as well.

Thanks,

Kyle Evans

[1] https://github.com/raspberrypi/firmware/issues/1340


More information about the U-Boot mailing list