From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932218AbcF3OmX (ORCPT ); Thu, 30 Jun 2016 10:42:23 -0400 Received: from relay4-d.mail.gandi.net ([217.70.183.196]:52215 "EHLO relay4-d.mail.gandi.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751840AbcF3OmV (ORCPT ); Thu, 30 Jun 2016 10:42:21 -0400 Date: Thu, 30 Jun 2016 07:41:43 -0700 From: Josh Triplett To: Matt Fleming Cc: Ard Biesheuvel , Dave Young , linux-kernel@vger.kernel.org, linux-efi@vger.kernel.org, Leif Lindholm , Peter Jones , Borislav Petkov , Mark Rutland , Josh Boyer , Andy Lutomirski , =?iso-8859-1?Q?M=F4she?= van der Sterre Subject: Re: [PATCH 11/11] x86/efi-bgrt: Use efi_mem_reserve() to avoid copying image data Message-ID: <20160630144143.GA13005@cloud> References: <1466681690-5850-1-git-send-email-matt@codeblueprint.co.uk> <1466681690-5850-12-git-send-email-matt@codeblueprint.co.uk> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <1466681690-5850-12-git-send-email-matt@codeblueprint.co.uk> User-Agent: Mutt/1.5.23 (2014-03-12) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 > Cc: Leif Lindholm > Cc: Peter Jones > Cc: Borislav Petkov > Cc: Mark Rutland > Cc: Dave Young > Cc: Josh Boyer > Cc: Josh Triplett > Cc: Andy Lutomirski > Cc: Môshe van der Sterre > Signed-off-by: Matt Fleming Reviewed-by: Josh Triplett 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 >