[SRU B/C/D/E][bionic/master-next 1/1] LP#1836079 efi: efi_get_memory_map -- increase map headroom

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

[SRU B/C/D/E][bionic/master-next 1/1] LP#1836079 efi: efi_get_memory_map -- increase map headroom

Andy Whitcroft-3
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
Signed-off-by: Andy Whitcroft <[hidden email]>
---
 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;
--
2.20.1


--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team
Reply | Threaded
Open this post in threaded view
|

Re: [SRU B/C/D/E][bionic/master-next 1/1] LP#1836079 efi: efi_get_memory_map -- increase map headroom

Stefan Bader-2
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 <[hidden email]>
> ---
>

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;
>


--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team

signature.asc (849 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: [SRU B/C/D/E][bionic/master-next 1/1] LP#1836079 efi: efi_get_memory_map -- increase map headroom

Andy Whitcroft-3
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 <[hidden email]>
> > ---
> >
>
> 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

--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team