From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=192.55.52.43; helo=mga05.intel.com; envelope-from=star.zeng@intel.com; receiver=edk2-devel@lists.01.org Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 0D91D21A07A80 for ; Wed, 5 Sep 2018 03:27:07 -0700 (PDT) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga105.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 05 Sep 2018 03:27:06 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.53,333,1531810800"; d="scan'208";a="254684849" Received: from fmsmsx104.amr.corp.intel.com ([10.18.124.202]) by orsmga005.jf.intel.com with ESMTP; 05 Sep 2018 03:27:05 -0700 Received: from fmsmsx112.amr.corp.intel.com (10.18.116.6) by fmsmsx104.amr.corp.intel.com (10.18.124.202) with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 5 Sep 2018 03:27:05 -0700 Received: from shsmsx104.ccr.corp.intel.com (10.239.4.70) by FMSMSX112.amr.corp.intel.com (10.18.116.6) with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 5 Sep 2018 03:27:04 -0700 Received: from shsmsx102.ccr.corp.intel.com ([169.254.2.226]) by SHSMSX104.ccr.corp.intel.com ([169.254.5.143]) with mapi id 14.03.0319.002; Wed, 5 Sep 2018 18:27:03 +0800 From: "Zeng, Star" To: "Gao, Liming" , "edk2-devel@lists.01.org" CC: "Zeng, Star" Thread-Topic: [edk2] [Patch] MdeModulePkg PeiCore: Remove the copy logic for PeiImageRead function Thread-Index: AQHURLot8sZedIFfJUmRcUVPS3TP8aTheywA Date: Wed, 5 Sep 2018 10:27:02 +0000 Message-ID: <0C09AFA07DD0434D9E2A0C6AEB0483103BBB56A8@shsmsx102.ccr.corp.intel.com> References: <20180905014032.14596-1-liming.gao@intel.com> In-Reply-To: <20180905014032.14596-1-liming.gao@intel.com> Accept-Language: zh-CN, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Subject: Re: [Patch] MdeModulePkg PeiCore: Remove the copy logic for PeiImageRead function X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 05 Sep 2018 10:27:08 -0000 Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hi Liming, The code removed is about copying PeiImageReadForShadow, but not PeiImageRe= ad. How about updating the title and commit log a little? And I suggest eliminating GetImageReadFunction() further in this patch and = move " ImageContext->ImageRead =3D PeiImageRead; " into LoadAndRelocatePeCo= ffImage() directly. What do you think? Thanks, Star -----Original Message----- From: edk2-devel [mailto:edk2-devel-bounces@lists.01.org] On Behalf Of Limi= ng Gao Sent: Wednesday, September 5, 2018 9:41 AM To: edk2-devel@lists.01.org Subject: [edk2] [Patch] MdeModulePkg PeiCore: Remove the copy logic for Pei= ImageRead function The copy PeiImageRead function doesn't improve the boot performance. This patch removes this copy logic to simplify the code logic. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Liming Gao --- MdeModulePkg/Core/Pei/Image/Image.c | 65 +--------------------------------= ---- 1 file changed, 1 insertion(+), 64 deletions(-) diff --git a/MdeModulePkg/Core/Pei/Image/Image.c b/MdeModulePkg/Core/Pei/Im= age/Image.c index f84f2c7..303acf3 100644 --- a/MdeModulePkg/Core/Pei/Image/Image.c +++ b/MdeModulePkg/Core/Pei/Image/Image.c @@ -62,44 +62,6 @@ PeiImageRead ( =20 /** =20 - Support routine for the PE/COFF Loader that reads a buffer from a PE/COF= F file. - The function is implemented as PIC so as to support shadowing. - - @param FileHandle - The handle to the PE/COFF file - @param FileOffset - The offset, in bytes, into the file to read - @param ReadSize - The number of bytes to read from the file start= ing at FileOffset - @param Buffer - A pointer to the buffer to read the data into. - - @return EFI_SUCCESS - ReadSize bytes of data were read into Buffer from = the PE/COFF file starting at FileOffset - -**/ -EFI_STATUS -EFIAPI -PeiImageReadForShadow ( - IN VOID *FileHandle, - IN UINTN FileOffset, - IN UINTN *ReadSize, - OUT VOID *Buffer - ) -{ - volatile CHAR8 *Destination8; - CHAR8 *Source8; - UINTN Length; - - Destination8 =3D Buffer; - Source8 =3D (CHAR8 *) ((UINTN) FileHandle + FileOffset); - if (Destination8 !=3D Source8) { - Length =3D *ReadSize; - while ((Length--) > 0) { - *(Destination8++) =3D *(Source8++); - } - } - - return EFI_SUCCESS; -} - -/** - Support routine to get the Image read file function. =20 @param ImageContext - The context of the image being loaded @@ -112,35 +74,10 @@ GetImageReadFunction ( IN PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext ) { -#if defined (MDE_CPU_IA32) || defined (MDE_CPU_X64) - PEI_CORE_INSTANCE *Private; - EFI_PHYSICAL_ADDRESS MemoryBuffer; - - Private =3D PEI_CORE_INSTANCE_FROM_PS_THIS (GetPeiServicesTablePointer (= )); - MemoryBuffer =3D 0; - - if (Private->PeiMemoryInstalled && (((Private->HobList.HandoffInformati= onTable->BootMode !=3D BOOT_ON_S3_RESUME) && PcdGetBool (PcdShadowPeimOnBoo= t)) || - ((Private->HobList.HandoffInformationTable->BootMode =3D=3D BOOT_ON_= S3_RESUME) && PcdGetBool (PcdShadowPeimOnS3Boot)))) { - // - // Shadow algorithm makes lots of non ANSI C assumptions and only work= s for IA32 and X64 - // compilers that have been tested - // - if (Private->ShadowedImageRead =3D=3D NULL) { - PeiServicesAllocatePages (EfiBootServicesCode, 0x400 / EFI_PAGE_SIZE= + 1, &MemoryBuffer); - ASSERT (MemoryBuffer !=3D 0); - CopyMem ((VOID *)(UINTN)MemoryBuffer, (CONST VOID *) (UINTN) PeiImag= eReadForShadow, 0x400); - Private->ShadowedImageRead =3D (PE_COFF_LOADER_READ_FILE) (UINTN) Me= moryBuffer; - } - - ImageContext->ImageRead =3D Private->ShadowedImageRead; - } else { - ImageContext->ImageRead =3D PeiImageRead; - } -#else ImageContext->ImageRead =3D PeiImageRead; -#endif return EFI_SUCCESS; } + /** To check memory usage bit map array to figure out if the memory range th= e image will be loaded in is available or not. If memory range is available, the function will mark the corresponding bits= to 1 which indicates the memory range is used. -- 2.10.0.windows.1 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel