From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by mx.groups.io with SMTP id smtpd.web10.989.1573873012964293515 for ; Fri, 15 Nov 2019 18:56:53 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=GkQa48r5; spf=pass (domain: intel.com, ip: 192.55.52.43, mailfrom: michael.a.kubacki@intel.com) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga006.jf.intel.com ([10.7.209.51]) by fmsmga105.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 15 Nov 2019 18:56:52 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.68,310,1569308400"; d="scan'208";a="208591523" Received: from fmsmsx108.amr.corp.intel.com ([10.18.124.206]) by orsmga006.jf.intel.com with ESMTP; 15 Nov 2019 18:56:52 -0800 Received: from fmsmsx155.amr.corp.intel.com (10.18.116.71) by FMSMSX108.amr.corp.intel.com (10.18.124.206) with Microsoft SMTP Server (TLS) id 14.3.439.0; Fri, 15 Nov 2019 18:56:51 -0800 Received: from FMSEDG001.ED.cps.intel.com (10.1.192.133) by FMSMSX155.amr.corp.intel.com (10.18.116.71) with Microsoft SMTP Server (TLS) id 14.3.439.0; Fri, 15 Nov 2019 18:56:51 -0800 Received: from NAM03-CO1-obe.outbound.protection.outlook.com (104.47.40.56) by edgegateway.intel.com (192.55.55.68) with Microsoft SMTP Server (TLS) id 14.3.439.0; Fri, 15 Nov 2019 18:56:51 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=QjBkVIrqsbVl0QYuzCS1GgCGJkIPNN7qzlNfHcTTgRux4dEDVBGHayoaQ2pQO9LLYS4BDw/TiFV8k/69oTre8jY1SIaJsJHJBmk1rrjUyp16Kh/K2IsRhV121n7O3r8mXemxKsa3+tRv9+7JqJ1gErzYvv9wflTr59kuCnZeFkNdq1HjYo4Gqo6XNc1l/V1+emzsWffYta6GyWkbs9lz4xbfNagnUtUw3TR7G+aXWQsCVO9Q2EL4dQ02717rwtNtYTH1ik4ep9m7a6Xlj/o1Z685JEkqV9TxTiSBXDZ2HQonizj0jzNBezDYNgkX99Ata8l+2epsg143gBRJ5QTQjw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=iMuxX8nUCB5H6mp1pGVdaGnyFucYvo75LlRAN/J7yJc=; b=NSPQvtwKcJvjWd9qR6sdr1tLih10Ju4Iw2bkQR/7mRgu4NTEWR0Vtf8ipOJK5NJuufO9l3EH3NAD50BDbHy5mEYRkWj52q/+nMT1+4/P2OhPkqxri+nH9dReksOBtG8xrSOCk3GYtCuVTkLlburPmXfSNWEFPpSFTIxF7UVKbvO6Q7llkx0l/cyaY5F6xo/dGFcACGg6cZ1nN1SeEEtlEsUD1TI5FMc8wuW1tprEfI8hoXT6Y9ZiMR92pdOdUQBW0tL1qoGDUXgt325MqLsoSnN0MjCsoCDKftmoIIkc6gZhwoDM6Tl2ELH6PP5t05666MeLLKRZdpcMRuoQtv9K8w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=iMuxX8nUCB5H6mp1pGVdaGnyFucYvo75LlRAN/J7yJc=; b=GkQa48r5BdMVAa05s4Xwy9AHwaQMzW/VUAoWOezWxFocZQoSMoQ49Z8u1A/A6CdClt5j8CM3WrZBjf8hwedT8Sx8sMDxLqfTluC+IA6XiLHPBhPPKR0KNL6Xqad4lYgjXWdU53WiStsgCWXKlXIP6lpMAG7SKT2S/Y+1eSc6v1c= Received: from BY5PR11MB4484.namprd11.prod.outlook.com (52.132.254.155) by BY5PR11MB3957.namprd11.prod.outlook.com (10.255.72.85) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2451.29; Sat, 16 Nov 2019 02:56:49 +0000 Received: from BY5PR11MB4484.namprd11.prod.outlook.com ([fe80::a114:604b:7ca3:5420]) by BY5PR11MB4484.namprd11.prod.outlook.com ([fe80::a114:604b:7ca3:5420%7]) with mapi id 15.20.2451.027; Sat, 16 Nov 2019 02:56:49 +0000 From: "Kubacki, Michael A" To: "Desimone, Nathaniel L" , "devel@edk2.groups.io" CC: "Chiu, Chasel" , "Gao, Liming" Subject: Re: [edk2-platforms] [PATCH V1 13/13] MinPlatformPkg: Remove BoardInitLib dependency from PlatformSecLib Thread-Topic: [edk2-platforms] [PATCH V1 13/13] MinPlatformPkg: Remove BoardInitLib dependency from PlatformSecLib Thread-Index: AQHVmrQBUwL6WSury0mFi716pQCM0aeNGCqw Date: Sat, 16 Nov 2019 02:56:49 +0000 Message-ID: References: <20191114060655.5161-1-nathaniel.l.desimone@intel.com> <20191114060655.5161-14-nathaniel.l.desimone@intel.com> In-Reply-To: <20191114060655.5161-14-nathaniel.l.desimone@intel.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows x-ctpclassification: CTP_NT x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiNzgxZmZiY2YtNGI2Yi00YjMxLTg1YjEtOTFmMTEwNWFiYzQ0IiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiRWNKMkdxUFNPXC9YZThldW13MlNOVnhITU1NbXBseHFsd1wvUGFIdTlnUXNQUG56UXN0WFdNU1pkVk1vWnN1Y2NuIn0= dlp-reaction: no-action dlp-version: 11.2.0.6 authentication-results: spf=none (sender IP is ) smtp.mailfrom=michael.a.kubacki@intel.com; x-originating-ip: [134.134.136.217] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 71939f93-cb46-4bad-0f34-08d76a40a050 x-ms-traffictypediagnostic: BY5PR11MB3957: x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-forefront-prvs: 02234DBFF6 x-forefront-antispam-report: SFV:NSPM;SFS:(10019020)(39860400002)(136003)(376002)(366004)(396003)(346002)(199004)(189003)(13464003)(476003)(4326008)(5660300002)(110136005)(446003)(66476007)(66556008)(186003)(11346002)(64756008)(66446008)(54906003)(66946007)(99286004)(30864003)(7696005)(52536014)(66066001)(9686003)(53546011)(76116006)(71190400001)(71200400001)(6506007)(102836004)(76176011)(256004)(14444005)(107886003)(6246003)(316002)(19627235002)(229853002)(486006)(6436002)(33656002)(86362001)(55016002)(81166006)(81156014)(2501003)(8676002)(478600001)(14454004)(6116002)(8936002)(305945005)(25786009)(2906002)(3846002)(7736002)(74316002)(26005);DIR:OUT;SFP:1102;SCL:1;SRVR:BY5PR11MB3957;H:BY5PR11MB4484.namprd11.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: znBWXd/Yng5Yx4ssFft7mPiJRl3phry4Hdz9zKOYYVHr3LlOU8ixUprX9mJMB+ZHMQThzzzqoEl1xnaOWMn4fMNipuTlvM4u3ybucK/faDuyZj6LCjp0rE6qFW9YIFTO+2GCpVzaAPFDeVSJ9hpDH05gfS1i136bY1TdiE4GgzjPihwhPYMeLe9QnSzjDBkOF9rtwI7H481YR/Bmr6shKpynygD+4gPlshGdqUaSgickR/C19zlHY6Lg8NAFjMWKkknkUaHrNIB9hOdZctiIoafuKXmsis7YmLkW/JixcfoMgXvdgYjPsgdH6cq4b8TeboZM11y76I44u93PMrBYtU6mwao4iApLNPe7wGIkbdv99eyJooroT0U+DcCgp8OpanuYE0+XrusjEEOMA3AhIAiVceGGLsgIPIQWj78tmmM1whRW4KYnN4qZ8bDBB0Ag MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: 71939f93-cb46-4bad-0f34-08d76a40a050 X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Nov 2019 02:56:49.4678 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: x1DRY8fozfSGQ88tklYly9QbBmrtZNBdj6hCdMGgbgfdRF94wy3o9zxg2q7zPrHwEgsPdd3qpKuOdkMZWAw7Ocr7Kx/keOAy5lBC84kVits= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR11MB3957 Return-Path: michael.a.kubacki@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable SecFspWrapperPlatformSecLib.inf: * Line 72: It seems BoardInitLib should be able to be removed from [Library= Classes] with gPlatformInitTempRamExitPpiGuid Can you please check? > -----Original Message----- > From: Desimone, Nathaniel L > Sent: Wednesday, November 13, 2019 10:07 PM > To: devel@edk2.groups.io > Cc: Kubacki, Michael A ; Chiu, Chasel > ; Gao, Liming > Subject: [edk2-platforms] [PATCH V1 13/13] MinPlatformPkg: Remove > BoardInitLib dependency from PlatformSecLib >=20 > SecFspWrapperPlatformSecLib contains the implementation of > SecPlatformDisableTemporaryMemory(), which SecMain in UefiCpuPkg will > call as part of its implementation of EFI_PEI_TEMPORARY_RAM_DONE_PPI. > For platforms that use FSP, the implementation of > SecPlatformDisableTemporaryMemory() can be made generic since the > chipset specifics will be contained in FspTempRamExit(). >=20 > The Minimum Platform Specification provides the BoardPkg two interface > hook points, BoardInitBeforeTempRamExit() and > BoardInitAfterTempRamExit() which must be called during > SecPlatformDisableTemporaryMemory(). Due to > EFI_PEI_TEMPORARY_RAM_DONE_PPI being a special case of a PPI that is > implemented in SEC, these two functions are the only ones in BoardInitLib > that need to be called by SEC. >=20 > Linking BoardInitLib with SEC places many restrictions on the implementat= ion > of that library. The features available to SEC phase code are very minima= l. > Since this code runs during PEI phase, these restrictions are not actuall= y > required. >=20 > Instead of directly linking with BoardInitLib, > SecPlatformDisableTemporaryMemory() shall call BoardInitLib indirectly > through a PPI (PLATFORM_INIT_TEMP_RAM_EXIT_PPI.) This PPI is produced > by PlatformInitPreMem, which implements the other BoardInitLib calls > already, so this change should also slightly reduce the size of the final= binary > image since less PE/COFF images will need to link with BoardInitLib. >=20 > Cc: Michael Kubacki > Cc: Chasel Chiu > Cc: Liming Gao > Signed-off-by: Nate DeSimone > --- > .../SecFspWrapperPlatformSecLib.inf | 1 + > .../SecTempRamDone.c | 36 +++++++-- > .../Include/Ppi/PlatformInitTempRamExitPpi.h | 55 ++++++++++++++ > .../Intel/MinPlatformPkg/MinPlatformPkg.dec | 2 + > .../PlatformInitPei/PlatformInitPreMem.c | 76 ++++++++++++++++++- > .../PlatformInitPei/PlatformInitPreMem.inf | 1 + > 6 files changed, 159 insertions(+), 12 deletions(-) create mode 100644 > Platform/Intel/MinPlatformPkg/Include/Ppi/PlatformInitTempRamExitPpi.h >=20 > diff --git > a/Platform/Intel/MinPlatformPkg/FspWrapper/Library/SecFspWrapperPlatf > ormSecLib/SecFspWrapperPlatformSecLib.inf > b/Platform/Intel/MinPlatformPkg/FspWrapper/Library/SecFspWrapperPlatf > ormSecLib/SecFspWrapperPlatformSecLib.inf > index 02c720c73d..3465f50126 100644 > --- > a/Platform/Intel/MinPlatformPkg/FspWrapper/Library/SecFspWrapperPlatf > ormSecLib/SecFspWrapperPlatformSecLib.inf > +++ > b/Platform/Intel/MinPlatformPkg/FspWrapper/Library/SecFspWrapperPlat > +++ formSecLib/SecFspWrapperPlatformSecLib.inf > @@ -80,6 +80,7 @@ > gTopOfTemporaryRamPpiGuid ## PRODUCES > gEfiPeiFirmwareVolumeInfoPpiGuid ## PRODUCES > gFspTempRamExitPpiGuid ## CONSUMES+ > gPlatformInitTempRamExitPpiGuid ## CONSUMES [Pcd] > gUefiCpuPkgTokenSpaceGuid.PcdPeiTemporaryRamStackSize ## > CONSUMESdiff --git > a/Platform/Intel/MinPlatformPkg/FspWrapper/Library/SecFspWrapperPlatf > ormSecLib/SecTempRamDone.c > b/Platform/Intel/MinPlatformPkg/FspWrapper/Library/SecFspWrapperPlatf > ormSecLib/SecTempRamDone.c > index 922e4ec204..b22cf57d6c 100644 > --- > a/Platform/Intel/MinPlatformPkg/FspWrapper/Library/SecFspWrapperPlatf > ormSecLib/SecTempRamDone.c > +++ > b/Platform/Intel/MinPlatformPkg/FspWrapper/Library/SecFspWrapperPlat > +++ formSecLib/SecTempRamDone.c > @@ -10,6 +10,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent > #include #include > +#include > #include #include @@ - > 17,7 +18,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include > #include > #include -#include > #include /**@@ -29,14 +29,35 @@ > SecPlatformDisableTemporaryMemory ( > VOID ) {- EFI_STATUS Status;- VOID > *TempRamExitParam;- CONST EFI_PEI_SERVICES **PeiServices;- > FSP_TEMP_RAM_EXIT_PPI *TempRamExitPpi;+ EFI_STATUS > Status;+ VOID *TempRamExitParam;+ CONST > EFI_PEI_SERVICES **PeiServices;+ FSP_TEMP_RAM_EXIT_PPI > *TempRamExitPpi;+ PLATFORM_INIT_TEMP_RAM_EXIT_PPI > *PlatformInitTempRamExitPpi; DEBUG ((DEBUG_INFO, > "SecPlatformDisableTemporaryMemory enter\n"));+ PeiServices =3D > GetPeiServicesTablePointer ();+ ASSERT (PeiServices !=3D NULL);+ if > (PeiServices =3D=3D NULL) {+ return;+ }+ ASSERT ((*PeiServices) !=3D= NULL);+ if > ((*PeiServices) =3D=3D NULL) {+ return;+ }+ Status =3D (*PeiServices= )->LocatePpi > (+ PeiServices,+ > &gPlatformInitTempRamExitPpiGuid,+ 0,+ = NULL,+ > (VOID **) &PlatformInitTempRamExitPpi+ );+ > ASSERT_EFI_ERROR (Status);+ if (EFI_ERROR (Status)) {+ return;+ } - = Status > =3D BoardInitBeforeTempRamExit ();+ Status =3D PlatformInitTempRamExitPp= i- > >PlatformInitBeforeTempRamExit (); ASSERT_EFI_ERROR (Status); if > (PcdGet8 (PcdFspModeSelection) =3D=3D 1) {@@ -51,7 +72,6 @@ > SecPlatformDisableTemporaryMemory ( > // // FSP Dispatch mode //- PeiServices =3D GetPeiService= sTablePointer > (); Status =3D (*PeiServices)->LocatePpi ( = PeiServices, > &gFspTempRamExitPpiGuid,@@ -66,7 +86,7 @@ > SecPlatformDisableTemporaryMemory ( > TempRamExitPpi->TempRamExit (NULL); } - Status =3D > BoardInitAfterTempRamExit ();+ Status =3D PlatformInitTempRamExitPpi- > >PlatformInitAfterTempRamExit (); ASSERT_EFI_ERROR (Status); return > ;diff --git > a/Platform/Intel/MinPlatformPkg/Include/Ppi/PlatformInitTempRamExitPpi. > h > b/Platform/Intel/MinPlatformPkg/Include/Ppi/PlatformInitTempRamExitPpi. > h > new file mode 100644 > index 0000000000..590647738c > --- /dev/null > +++ > b/Platform/Intel/MinPlatformPkg/Include/Ppi/PlatformInitTempRamExitP > +++ pi.h > @@ -0,0 +1,55 @@ > +/** @file+ This file defines the PPI for notifying PlatformInitPreMem+ = of > temporary memory being disabled.++Copyright (c) 2019, Intel Corporation. > All rights reserved.
+SPDX-License-Identifier: BSD-2-Clause- > Patent++**/++#ifndef > _PLATFORM_INIT_TEMP_RAM_EXIT_PPI_H_+#define > _PLATFORM_INIT_TEMP_RAM_EXIT_PPI_H_++#include ++//+// > Forward declaration for the > PLATFORM_INIT_TEMP_RAM_EXIT_PPI.+//+typedef struct > _PLATFORM_INIT_TEMP_RAM_EXIT_PPI > PLATFORM_INIT_TEMP_RAM_EXIT_PPI;++/**+ A hook for platform-specific > initialization prior to disabling temporary RAM.++ @retval EFI_SUCCESS = The > platform initialization was successful.+ @retval EFI_NOT_READY The > platform has not been detected yet.+**/+typedef+EFI_STATUS+(EFIAPI > *PLATFORM_INIT_BEFORE_TEMP_RAM_EXIT) (+ VOID+ );++/**+ A hook > for platform-specific initialization after disabling temporary RAM.++ @r= etval > EFI_SUCCESS The platform initialization was successful.+ @retval > EFI_NOT_READY The platform has not been detected > yet.+**/+typedef+EFI_STATUS+(EFIAPI > *PLATFORM_INIT_AFTER_TEMP_RAM_EXIT) (+ VOID+ );++///+/// This PPI > provides functions for notifying PlatformInitPreMem+/// of temporary > memory being disabled.+///+struct > _PLATFORM_INIT_TEMP_RAM_EXIT_PPI {+ > PLATFORM_INIT_BEFORE_TEMP_RAM_EXIT > PlatformInitBeforeTempRamExit;+ > PLATFORM_INIT_AFTER_TEMP_RAM_EXIT > PlatformInitAfterTempRamExit;+};++extern EFI_GUID > gPlatformInitTempRamExitPpiGuid;++#endif // > _PLATFORM_INIT_TEMP_RAM_EXIT_PPI_H_diff --git > a/Platform/Intel/MinPlatformPkg/MinPlatformPkg.dec > b/Platform/Intel/MinPlatformPkg/MinPlatformPkg.dec > index c6b5881646..5dfa4d420e 100644 > --- a/Platform/Intel/MinPlatformPkg/MinPlatformPkg.dec > +++ b/Platform/Intel/MinPlatformPkg/MinPlatformPkg.dec > @@ -28,6 +28,8 @@ > gPeiBaseMemoryTestPpiGuid =3D {0xb6ec423c, 0x21d2, 0x490d, {0x= 85, > 0xc6, 0xdd, 0x58, 0x64, 0xea, 0xa6, 0x74}} gPeiPlatformMemorySizePpiGui= d > =3D {0x9a7ef41e, 0xc140, 0x4bd1, {0xb8, 0x84, 0x1e, 0x11, 0x24, 0x0b, 0x4= c, > 0xe6}} + gPlatformInitTempRamExitPpiGuid =3D {0xbae23646, 0xbd60, 0x4f= 8b, > {0xb3, 0xf9, 0xf3, 0x91, 0xee, 0x7e, 0xe6, 0xc8}}+ [Guids] > gMinPlatformPkgTokenSpaceGuid =3D {0x69d13bf0, 0xaf91, 0x4d96, {0xaa, > 0x9f, 0x21, 0x84, 0xc5, 0xce, 0x3b, 0xc0}} diff --git > a/Platform/Intel/MinPlatformPkg/PlatformInit/PlatformInitPei/PlatformInit= P > reMem.c > b/Platform/Intel/MinPlatformPkg/PlatformInit/PlatformInitPei/PlatformInit= P > reMem.c > index c579ff008e..efdeb6a91c 100644 > --- > a/Platform/Intel/MinPlatformPkg/PlatformInit/PlatformInitPei/PlatformInit= P > reMem.c > +++ b/Platform/Intel/MinPlatformPkg/PlatformInit/PlatformInitPei/Platfor > +++ mInitPreMem.c > @@ -29,6 +29,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include > #include > #include +#include > EFI_STATUS EFIAPI@@ -72,7 +73,31 > @@ BaseMemoryTest ( > OUT EFI_PHYSICAL_ADDRESS *ErrorAddress ); -static > EFI_PEI_NOTIFY_DESCRIPTOR mMemDiscoveredNotifyList =3D {+/**+ A hook > for platform-specific initialization prior to disabling temporary RAM.++ > @retval EFI_SUCCESS The platform initialization was successful.+ @retv= al > EFI_NOT_READY The platform has not been detected > yet.+**/+EFI_STATUS+EFIAPI+PlatformInitBeforeTempRamExit (+ VOID+ > );++/**+ A hook for platform-specific initialization after disabling tem= porary > RAM.++ @retval EFI_SUCCESS The platform initialization was successful.= + > @retval EFI_NOT_READY The platform has not been detected > yet.+**/+EFI_STATUS+EFIAPI+PlatformInitAfterTempRamExit (+ VOID+ > );++GLOBAL_REMOVE_IF_UNREFERENCED EFI_PEI_NOTIFY_DESCRIPTOR > mMemDiscoveredNotifyList =3D { > (EFI_PEI_PPI_DESCRIPTOR_NOTIFY_CALLBACK | > EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST), > &gEfiPeiMemoryDiscoveredPpiGuid, (EFI_PEIM_NOTIFY_ENTRY_POINT) > MemoryDiscoveredPpiNotifyCallback@@ -90,11 +115,11 @@ > GLOBAL_REMOVE_IF_UNREFERENCED EFI_PEI_PPI_DESCRIPTOR > mPpiBootMode =3D { > NULL }; -static PEI_BASE_MEMORY_TEST_PPI mPeiBaseMemoryTestPpi =3D > { BaseMemoryTest };+GLOBAL_REMOVE_IF_UNREFERENCED > PEI_BASE_MEMORY_TEST_PPI mPeiBaseMemoryTestPpi =3D { > BaseMemoryTest }; -static PEI_PLATFORM_MEMORY_SIZE_PPI > mMemoryMemorySizePpi =3D { GetPlatformMemorySize > };+GLOBAL_REMOVE_IF_UNREFERENCED > PEI_PLATFORM_MEMORY_SIZE_PPI mMemoryMemorySizePpi =3D { > GetPlatformMemorySize }; -static EFI_PEI_PPI_DESCRIPTOR > mMemPpiList[] =3D {+GLOBAL_REMOVE_IF_UNREFERENCED > EFI_PEI_PPI_DESCRIPTOR mMemPpiList[] =3D { { > EFI_PEI_PPI_DESCRIPTOR_PPI, &gPeiBaseMemoryTestPpiGuid,@@ -107,6 > +132,17 @@ static EFI_PEI_PPI_DESCRIPTOR mMemPpiList[] =3D { > }, }; +GLOBAL_REMOVE_IF_UNREFERENCED > PLATFORM_INIT_TEMP_RAM_EXIT_PPI mPlatformInitTempRamExitPpi =3D {+ > PlatformInitBeforeTempRamExit,+ > PlatformInitAfterTempRamExit+};++GLOBAL_REMOVE_IF_UNREFERENCED > EFI_PEI_PPI_DESCRIPTOR mPlatformInitTempRamExitPpiDesc =3D {+ > (EFI_PEI_PPI_DESCRIPTOR_PPI | > EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST),+ > &gPlatformInitTempRamExitPpiGuid,+ &mPlatformInitTempRamExitPpi+};+ > /// /// Memory Reserved should be between 125% to 150% of the Current > required memory /// otherwise BdsMisc.c would do a reset to make it 125% > to avoid s4 resume issues.@@ -391,6 +427,35 @@ > MemoryDiscoveredPpiNotifyCallback ( > return Status; } +/**+ A hook for platform-specific initialization pr= ior to > disabling temporary RAM.++ @retval EFI_SUCCESS The platform > initialization was successful.+ @retval EFI_NOT_READY The platform has n= ot > been detected > yet.+**/+EFI_STATUS+EFIAPI+PlatformInitBeforeTempRamExit (+ VOID+ > )+{+ return BoardInitBeforeTempRamExit ();+}++/**+ A hook for platform- > specific initialization after disabling temporary RAM.++ @retval EFI_SUC= CESS > The platform initialization was successful.+ @retval EFI_NOT_READY The > platform has not been detected > yet.+**/+EFI_STATUS+EFIAPI+PlatformInitAfterTempRamExit (+ VOID+ > )+{+ return BoardInitAfterTempRamExit ();+} /** This function handles > PlatformInit task after PeiReadOnlyVariable2 PPI produced@@ -446,6 +511,9 > @@ PlatformInitPreMem ( > Status =3D BoardInitBeforeMemoryInit (); ASSERT_EFI_ERROR (Status); = + > Status =3D PeiServicesInstallPpi (&mPlatformInitTempRamExitPpiDesc);+ > ASSERT_EFI_ERROR (Status);+ return Status; } diff --git > a/Platform/Intel/MinPlatformPkg/PlatformInit/PlatformInitPei/PlatformInit= P > reMem.inf > b/Platform/Intel/MinPlatformPkg/PlatformInit/PlatformInitPei/PlatformInit= P > reMem.inf > index af5dbe8772..7ee18eb6d5 100644 > --- > a/Platform/Intel/MinPlatformPkg/PlatformInit/PlatformInitPei/PlatformInit= P > reMem.inf > +++ b/Platform/Intel/MinPlatformPkg/PlatformInit/PlatformInitPei/Platfor > +++ mInitPreMem.inf > @@ -53,6 +53,7 @@ > gEfiPeiMemoryDiscoveredPpiGuid gEfiPeiMasterBootModePpiGuid > ## PRODUCES gEfiPeiBootInRecoveryModePpiGuid ## PRODUCES+ > gPlatformInitTempRamExitPpiGuid ## PRODUCES > gEfiPeiReadOnlyVariable2PpiGuid gPeiBaseMemoryTestPpiGuid > gPeiPlatformMemorySizePpiGuid-- > 2.23.0.windows.1