From: Ard Biesheuvel <ard.biesheuvel@linaro.org> To: Ingo Molnar <mingo@kernel.org> Cc: linux-efi <linux-efi@vger.kernel.org>, Thomas Gleixner <tglx@linutronix.de>, Linux Kernel Mailing List <linux-kernel@vger.kernel.org>, Andy Lutomirski <luto@kernel.org>, Arend Van Spriel <arend.vanspriel@broadcom.com>, Bhupesh Sharma <bhsharma@redhat.com>, Borislav Petkov <bp@alien8.de>, Dave Hansen <dave.hansen@intel.com>, Eric Snowberg <eric.snowberg@oracle.com>, Hans de Goede <hdegoede@redhat.com>, Joe Perches <joe@perches.com>, Jon Hunter <jonathanh@nvidia.com>, Julien Thierry <julien.thierry@arm.com>, Marc Zyngier <marc.zyngier@arm.com>, Nathan Chancellor <natechancellor@gmail.com>, Peter Zijlstra <peterz@infradead.org>, "Prakhya, Sai Praneeth" <sai.praneeth.prakhya@intel.com>, Sedat Dilek <sedat.dilek@gmail.com>, YiFei Zhu <zhuyifei1999@gmail.com> Subject: Re: [PATCH 01/11] x86/efi: Allocate e820 buffer before calling efi_exit_boot_service Date: Fri, 30 Nov 2018 09:26:32 +0100 [thread overview] Message-ID: <CAKv+Gu8OMvnxb-n+ubYETRNhm79_H1RkGp+-7N1KF6Hgg3cbCQ@mail.gmail.com> (raw) In-Reply-To: <20181130072952.GA16084@gmail.com> On Fri, 30 Nov 2018 at 08:29, Ingo Molnar <mingo@kernel.org> wrote: > > > * Ard Biesheuvel <ard.biesheuvel@linaro.org> wrote: > > > From: Eric Snowberg <eric.snowberg@oracle.com> > > > > Commit d64934019f6c ("x86/efi: Use efi_exit_boot_services()") > > introduced a regression on systems with large memory maps > > causing them to hang on boot. The first "goto get_map" that was removed > > from exit_boot insured there was enough room for the memory map when > > efi_call_early(exit_boot_services) was called. This happens when > > (nr_desc > ARRAY_SIZE(params->e820_table). > > > > Chain of events: > > exit_boot() > > efi_exit_boot_services() > > efi_get_memory_map <- at this point the mm can't grow over 8 desc > > priv_func() > > exit_boot_func() > > allocate_e820ext() <- new mm grows over 8 desc from e820 alloc > > efi_call_early(exit_boot_services) <- mm key doesn't match so retry > > efi_call_early(get_memory_map) <- not enough room for new mm > > system hangs > > > > This patch allocates the e820 buffer before calling efi_exit_boot_services > > and fixes the regression. > > > > Signed-off-by: Eric Snowberg <eric.snowberg@oracle.com> > > Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> > > --- > > arch/x86/boot/compressed/eboot.c | 65 ++++++++++++++++++++------------ > > 1 file changed, 41 insertions(+), 24 deletions(-) > > Any objections against marking this for -stable and filing it in > efi/urgent? Boot hangs are show-stopper bugs, so distributions would want > to backport this fix anyway. > No objections per se, but this is the kind of patch that might go the other way as well, so I would prefer to give it some wider coverage at first, given how quickly patches are taken into -stable. I can make a note of it and send it to Greg halfway into the next -rc cycle. > > + boot_map.map = ↦ > > + boot_map.map_size = &map_size; > > + boot_map.desc_size = &desc_size; > > + boot_map.desc_ver = NULL; > > + boot_map.key_ptr = NULL; > > + boot_map.buff_size = &buff_size; > > I have changed this to the canonical style, which is also used elsewhere > in the file: > > > map.buff_size = &buff_size; > > priv.boot_params = boot_params; > > priv.efi = &boot_params->efi_info; > > - priv.e820ext = NULL; > > - priv.e820ext_size = 0; > > I.e.: > > + boot_map.map = ↦ > + boot_map.map_size = &map_size; > + boot_map.desc_size = &desc_size; > + boot_map.desc_ver = NULL; > + boot_map.key_ptr = NULL; > + boot_map.buff_size = &buff_size; > + > + status = efi_get_memory_map(sys_table, &boot_map); > Excellent, thanks.
WARNING: multiple messages have this Message-ID (diff)
From: Ard Biesheuvel <ard.biesheuvel@linaro.org> To: Ingo Molnar <mingo@kernel.org> Cc: linux-efi <linux-efi@vger.kernel.org>, Thomas Gleixner <tglx@linutronix.de>, Linux Kernel Mailing List <linux-kernel@vger.kernel.org>, Andy Lutomirski <luto@kernel.org>, Arend Van Spriel <arend.vanspriel@broadcom.com>, Bhupesh Sharma <bhsharma@redhat.com>, Borislav Petkov <bp@alien8.de>, Dave Hansen <dave.hansen@intel.com>, Eric Snowberg <eric.snowberg@oracle.com>, Hans de Goede <hdegoede@redhat.com>, Joe Perches <joe@perches.com>, Jon Hunter <jonathanh@nvidia.com>, Julien Thierry <julien.thierry@arm.com>, Marc Zyngier <marc.zyngier@arm.com>, Nathan Chancellor <natechancellor@gmail.com>, Peter Zijlstra <peterz@infradead.org>, "Prakhya, Sai Praneeth" <sai.praneeth.prakhya@intel.com>, Sedat Dilek <sedat.dilek@gmail.com>, YiFei Zhu <zhuyifei1999> Subject: Re: [PATCH 01/11] x86/efi: Allocate e820 buffer before calling efi_exit_boot_service Date: Fri, 30 Nov 2018 09:26:32 +0100 [thread overview] Message-ID: <CAKv+Gu8OMvnxb-n+ubYETRNhm79_H1RkGp+-7N1KF6Hgg3cbCQ@mail.gmail.com> (raw) In-Reply-To: <20181130072952.GA16084@gmail.com> On Fri, 30 Nov 2018 at 08:29, Ingo Molnar <mingo@kernel.org> wrote: > > > * Ard Biesheuvel <ard.biesheuvel@linaro.org> wrote: > > > From: Eric Snowberg <eric.snowberg@oracle.com> > > > > Commit d64934019f6c ("x86/efi: Use efi_exit_boot_services()") > > introduced a regression on systems with large memory maps > > causing them to hang on boot. The first "goto get_map" that was removed > > from exit_boot insured there was enough room for the memory map when > > efi_call_early(exit_boot_services) was called. This happens when > > (nr_desc > ARRAY_SIZE(params->e820_table). > > > > Chain of events: > > exit_boot() > > efi_exit_boot_services() > > efi_get_memory_map <- at this point the mm can't grow over 8 desc > > priv_func() > > exit_boot_func() > > allocate_e820ext() <- new mm grows over 8 desc from e820 alloc > > efi_call_early(exit_boot_services) <- mm key doesn't match so retry > > efi_call_early(get_memory_map) <- not enough room for new mm > > system hangs > > > > This patch allocates the e820 buffer before calling efi_exit_boot_services > > and fixes the regression. > > > > Signed-off-by: Eric Snowberg <eric.snowberg@oracle.com> > > Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> > > --- > > arch/x86/boot/compressed/eboot.c | 65 ++++++++++++++++++++------------ > > 1 file changed, 41 insertions(+), 24 deletions(-) > > Any objections against marking this for -stable and filing it in > efi/urgent? Boot hangs are show-stopper bugs, so distributions would want > to backport this fix anyway. > No objections per se, but this is the kind of patch that might go the other way as well, so I would prefer to give it some wider coverage at first, given how quickly patches are taken into -stable. I can make a note of it and send it to Greg halfway into the next -rc cycle. > > + boot_map.map = ↦ > > + boot_map.map_size = &map_size; > > + boot_map.desc_size = &desc_size; > > + boot_map.desc_ver = NULL; > > + boot_map.key_ptr = NULL; > > + boot_map.buff_size = &buff_size; > > I have changed this to the canonical style, which is also used elsewhere > in the file: > > > map.buff_size = &buff_size; > > priv.boot_params = boot_params; > > priv.efi = &boot_params->efi_info; > > - priv.e820ext = NULL; > > - priv.e820ext_size = 0; > > I.e.: > > + boot_map.map = ↦ > + boot_map.map_size = &map_size; > + boot_map.desc_size = &desc_size; > + boot_map.desc_ver = NULL; > + boot_map.key_ptr = NULL; > + boot_map.buff_size = &buff_size; > + > + status = efi_get_memory_map(sys_table, &boot_map); > Excellent, thanks.
next prev parent reply other threads:[~2018-11-30 8:26 UTC|newest] Thread overview: 57+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-11-29 17:12 [GIT PULL 00/11] EFI updates Ard Biesheuvel 2018-11-29 17:12 ` [PATCH 01/11] x86/efi: Allocate e820 buffer before calling efi_exit_boot_service Ard Biesheuvel 2018-11-30 7:29 ` Ingo Molnar 2018-11-30 8:26 ` Ard Biesheuvel [this message] 2018-11-30 8:26 ` Ard Biesheuvel 2018-11-30 8:36 ` Ingo Molnar 2018-11-30 8:36 ` Ingo Molnar 2018-11-30 9:55 ` [tip:efi/core] " tip-bot for Eric Snowberg 2018-11-29 17:12 ` [PATCH 02/11] efi/fdt: Indentation fix Ard Biesheuvel 2018-11-30 7:56 ` [PATCH] efi/fdt: More cleanups Ingo Molnar 2018-11-30 8:31 ` Ard Biesheuvel 2018-11-30 8:31 ` Ard Biesheuvel 2018-11-30 9:48 ` Ingo Molnar 2018-11-30 9:48 ` Ingo Molnar 2018-11-30 9:56 ` [tip:efi/core] efi/fdt: Indentation fix tip-bot for Julien Thierry 2018-11-29 17:12 ` [PATCH 03/11] efi/fdt: Simplify get_fdt flow Ard Biesheuvel 2018-11-30 9:57 ` [tip:efi/core] efi/fdt: Simplify the get_fdt() flow tip-bot for Julien Thierry 2018-11-29 17:12 ` [PATCH 04/11] x86/mm/pageattr: Introduce helper function to unmap EFI boot services Ard Biesheuvel 2018-11-30 9:58 ` [tip:efi/core] " tip-bot for Sai Praneeth Prakhya 2018-11-29 17:12 ` [PATCH 05/11] x86/efi: Unmap EFI boot services code/data regions from efi_pgd Ard Biesheuvel 2018-11-30 9:58 ` [tip:efi/core] " tip-bot for Sai Praneeth Prakhya 2018-12-17 18:06 ` Prakhya, Sai Praneeth 2018-12-17 18:10 ` Ard Biesheuvel 2018-12-17 18:42 ` Prakhya, Sai Praneeth 2018-12-17 19:35 ` Ard Biesheuvel 2018-12-17 19:48 ` Prakhya, Sai Praneeth 2018-12-21 17:02 ` Ard Biesheuvel 2018-12-21 17:13 ` Borislav Petkov 2018-12-21 17:26 ` Ard Biesheuvel 2018-12-21 19:29 ` Borislav Petkov 2018-12-22 11:07 ` Ard Biesheuvel 2019-01-07 15:57 ` Matt Fleming 2018-12-21 17:52 ` Prakhya, Sai Praneeth 2018-11-29 17:12 ` [PATCH 06/11] x86/efi: Move efi_<reserve/free>_boot_services() to arch/x86 Ard Biesheuvel 2018-11-30 9:59 ` [tip:efi/core] " tip-bot for Sai Praneeth Prakhya 2018-11-29 17:12 ` [PATCH 07/11] efi/libstub: Disable some warnings for x86{,_64} Ard Biesheuvel 2018-11-30 9:59 ` [tip:efi/core] " tip-bot for Nathan Chancellor 2018-11-29 17:12 ` [PATCH 08/11] firmware: efi: add NULL pointer checks in efivars api functions Ard Biesheuvel 2018-11-30 8:11 ` Ingo Molnar 2018-11-30 8:37 ` Ard Biesheuvel 2018-11-30 8:37 ` Ard Biesheuvel 2018-11-30 9:56 ` [tip:efi/core] firmware/efi: Add NULL pointer checks in efivars API functions tip-bot for Arend van Spriel 2018-11-29 17:12 ` [PATCH 09/11] efi: permit multiple entries in persistent memreserve data structure Ard Biesheuvel 2018-11-30 10:00 ` [tip:efi/core] efi: Permit " tip-bot for Ard Biesheuvel 2018-11-29 17:12 ` [PATCH 10/11] efi: reduce the amount of memblock reservations for persistent allocations Ard Biesheuvel 2018-11-30 8:38 ` Ingo Molnar 2018-11-30 8:39 ` Ard Biesheuvel 2018-11-30 8:39 ` Ard Biesheuvel 2018-11-30 10:00 ` [tip:efi/core] efi: Reduce " tip-bot for Ard Biesheuvel 2018-11-29 17:12 ` [PATCH 11/11] efi/x86: earlyprintk - Fix infinite loop on some screen widths Ard Biesheuvel 2018-11-30 8:05 ` Ingo Molnar 2018-11-30 8:32 ` Ard Biesheuvel 2018-11-30 8:32 ` Ard Biesheuvel 2018-11-30 9:55 ` [tip:efi/core] x86/earlyprintk/efi: " tip-bot for YiFei Zhu 2018-11-29 18:27 ` [GIT PULL 00/11] EFI updates Prakhya, Sai Praneeth 2018-11-30 12:01 ` Ard Biesheuvel 2018-11-30 18:01 ` Prakhya, Sai Praneeth
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=CAKv+Gu8OMvnxb-n+ubYETRNhm79_H1RkGp+-7N1KF6Hgg3cbCQ@mail.gmail.com \ --to=ard.biesheuvel@linaro.org \ --cc=arend.vanspriel@broadcom.com \ --cc=bhsharma@redhat.com \ --cc=bp@alien8.de \ --cc=dave.hansen@intel.com \ --cc=eric.snowberg@oracle.com \ --cc=hdegoede@redhat.com \ --cc=joe@perches.com \ --cc=jonathanh@nvidia.com \ --cc=julien.thierry@arm.com \ --cc=linux-efi@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=luto@kernel.org \ --cc=marc.zyngier@arm.com \ --cc=mingo@kernel.org \ --cc=natechancellor@gmail.com \ --cc=peterz@infradead.org \ --cc=sai.praneeth.prakhya@intel.com \ --cc=sedat.dilek@gmail.com \ --cc=tglx@linutronix.de \ --cc=zhuyifei1999@gmail.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.