[SRU B/C/D/E][bionic/master-next 1/1] LP#1836079 efi: efi_get_memory_map -- increase map headroom
Andy Whitcroft
apw at canonical.com
Fri Nov 8 09:59:44 UTC 2019
On Fri, Nov 08, 2019 at 10:43:53AM +0100, Stefan Bader wrote:
> On 06.11.19 18:06, Andy Whitcroft wrote:
> > We are seeing some EFI based machines failing to boot hard in the EFI
> > stub:
> >
> > exit_boot() failed!
> > efi_main() failed!
> >
> > This seems to occur when the bootloader (grub2 in this case) has had to
> > manipulate some additional files. We tracked this down to the memory map
> > dance efi_get_memory_map(). Basically we attempt to close boot services
> > and it informs us it cannot do so because it failed to record the updated
> > memory map. This occurs when there is insufficient space in the passed
> > memory map buffer to record changes during the operation. At the point
> > when this occurs we are unable to reallocate the buffer so we panic.
> >
> > To avoid this we allocate some additional entries in the buffer to cover
> > any additional entries. These are currently insufficient for these
> > machines in this use case. Increase EFI_MMAP_NR_SLACK_SLOTS to provide
> > space for more map modifications.
> >
> > BugLink: http://bugs.launchpad.net/bugs/1836079
>
> ^this is a private bug and we normally use https
>
> > Signed-off-by: Andy Whitcroft <apw at canonical.com>
> > ---
> >
>
> also the subject is confusing having multible series (and btw, Cosmic is EOL)
> and then again bionic...
>
> drivers/firmware/efi/libstub/efi-stub-helper.c | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/drivers/firmware/efi/libstub/efi-stub-helper.c b/drivers/firmware/efi/libstub/efi-stub-helper.c
> > index 39f87e6dac5c..957dff5a26a2 100644
> > --- a/drivers/firmware/efi/libstub/efi-stub-helper.c
> > +++ b/drivers/firmware/efi/libstub/efi-stub-helper.c
> > @@ -49,7 +49,7 @@ int __pure novamap(void)
> > return __novamap;
> > }
> >
> > -#define EFI_MMAP_NR_SLACK_SLOTS 8
> > +#define EFI_MMAP_NR_SLACK_SLOTS 16
> >
> > struct file_info {
> > efi_file_handle_t *handle;
> >
>
>
Yeah it seems I rather botched this one, and there I was thinking I was
infalable.
:)
-apw
More information about the kernel-team
mailing list