On Thu, Jun 23, 2016 at 12:34:50PM +0100, Matt Fleming wrote: > efi_mem_reserve() allows us to permanently mark EFI boot services > regions as reserved, which means we no longer need to copy the image > data out and into a separate buffer. > > Leaving the data in the original boot services region has the added > benefit that BGRT images can now be passed across kexec reboot. > > Cc: Ard Biesheuvel <[email protected]> > Cc: Leif Lindholm <[email protected]> > Cc: Peter Jones <[email protected]> > Cc: Borislav Petkov <[email protected]> > Cc: Mark Rutland <[email protected]> > Cc: Dave Young <[email protected]> > Cc: Josh Boyer <[email protected]> > Cc: Josh Triplett <[email protected]> > Cc: Andy Lutomirski <[email protected]> > Cc: Môshe van der Sterre <[email protected]> > Signed-off-by: Matt Fleming <[email protected]>
Reviewed-by: Josh Triplett <[email protected]> This definitely seems like an improvement. > arch/x86/platform/efi/efi-bgrt.c | 13 ++----------- > 1 file changed, 2 insertions(+), 11 deletions(-) > > diff --git a/arch/x86/platform/efi/efi-bgrt.c > b/arch/x86/platform/efi/efi-bgrt.c > index 6a2f5691b1ab..6aad870e8962 100644 > --- a/arch/x86/platform/efi/efi-bgrt.c > +++ b/arch/x86/platform/efi/efi-bgrt.c > @@ -82,21 +82,12 @@ void __init efi_bgrt_init(void) > } > bgrt_image_size = bmp_header.size; > > - bgrt_image = kmalloc(bgrt_image_size, GFP_KERNEL | __GFP_NOWARN); > + bgrt_image = memremap(bgrt_tab->image_address, bmp_header.size, > MEMREMAP_WB); > if (!bgrt_image) { > - pr_notice("Ignoring BGRT: failed to allocate memory for image > (wanted %zu bytes)\n", > - bgrt_image_size); > - return; > - } > - > - image = memremap(bgrt_tab->image_address, bmp_header.size, MEMREMAP_WB); > - if (!image) { > pr_notice("Ignoring BGRT: failed to map image memory\n"); > - kfree(bgrt_image); > bgrt_image = NULL; > return; > } > > - memcpy(bgrt_image, image, bgrt_image_size); > - memunmap(image); > + efi_mem_reserve(bgrt_tab->image_address, bgrt_image_size); > } > -- > 2.7.3 >

