From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by mx.groups.io with SMTP id smtpd.web11.957.1573872845428634749 for ; Fri, 15 Nov 2019 18:54:05 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=unDi4yCA; spf=pass (domain: intel.com, ip: 192.55.52.151, mailfrom: michael.a.kubacki@intel.com) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by fmsmga107.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 15 Nov 2019 18:54:05 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.68,310,1569308400"; d="scan'208";a="236287387" Received: from fmsmsx103.amr.corp.intel.com ([10.18.124.201]) by fmsmga002.fm.intel.com with ESMTP; 15 Nov 2019 18:54:05 -0800 Received: from fmsmsx114.amr.corp.intel.com (10.18.116.8) by FMSMSX103.amr.corp.intel.com (10.18.124.201) with Microsoft SMTP Server (TLS) id 14.3.439.0; Fri, 15 Nov 2019 18:54:04 -0800 Received: from FMSEDG001.ED.cps.intel.com (10.1.192.133) by FMSMSX114.amr.corp.intel.com (10.18.116.8) with Microsoft SMTP Server (TLS) id 14.3.439.0; Fri, 15 Nov 2019 18:54:04 -0800 Received: from NAM04-BN3-obe.outbound.protection.outlook.com (104.47.46.59) by edgegateway.intel.com (192.55.55.68) with Microsoft SMTP Server (TLS) id 14.3.439.0; Fri, 15 Nov 2019 18:54:04 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=RmYx7sIZxmEeE3Hv643uOcbw3O9DYvJkzbRflPfkSS0J4w9cy+91qeHnpMC3s2K1VYGzZ7SBnHLhr7S2LKw/1Iig//47lW+4AJBctn/UUH6G8XEv+FXw6NEY0K9Cq2vq+JKTx/MmHZEx5zPg+ZrqB3qTrBcIO0/lv4sVrUd50sa+G3ycxNO0m2O46IaHeZLbBUnas1P/jFM7CU16CourLV1JejWCQdSMzRbvMW17FGNPG0Kh0310Msfr5Y9I3t+RpBfHYpODl+fnmAsw+g7AXcfFqU5Pssqi/UINpeF96EcfnsezjpNCpas/3VjSfyswFEQ/fSGy9zNARzdvvIodtA== 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=Hl7IxJZdT1NHlqKTb9aMh+SFUrYhm/9RnMT4/CmsL54=; b=WcgxrcmVMVSN52gtdG27vfX45zxhdbbW1DyauUC+UYsrp/fMC04CIi0FA2qmEfCmCSd1vyu7OYBzxAGiKq5olCeE/BCxR2G/jVD250XR9okSEgt7Nd2Djv2gBCeWBk58OJ864tZhgo1c6Dz7c+ciz46XNvF8oKw8YG2PhMtY+OqNBa33mwZg4rnUTFDIiFeBvqid2sjZqmAT1u7yCUimerfgeU5m3N7VThDnF7uXazBKb5t01fzvGGuNO/5Rze/11OqeuPd69/XJ/i7FSX2IZBfch751Ey2StX8mtJCBLH1RRfDTEuOEwKNLPajouqcW9nl6IjTQE4sozwooZaFnsg== 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=Hl7IxJZdT1NHlqKTb9aMh+SFUrYhm/9RnMT4/CmsL54=; b=unDi4yCAycb1CDBkNFX8tihqXEmsTCiKxTkOkWTe4VKFlEqrlnTaHN9WXL3k/LnOmJ0XV5HcXJZAg2PgaqEX0HhLn6jRnTXkS3XMeDHdVlgF2ro6RsO9cQg5slPPSYmt7nSlXxK0Gni+EOsbgYlpGF/4/NWn9eWVGPE46YROwTI= Received: from BY5PR11MB4484.namprd11.prod.outlook.com (52.132.254.155) by BY5PR11MB4226.namprd11.prod.outlook.com (52.132.253.140) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2451.23; Sat, 16 Nov 2019 02:54:02 +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:54:01 +0000 From: "Kubacki, Michael A" To: "Desimone, Nathaniel L" , "devel@edk2.groups.io" CC: "Chiu, Chasel" , "Gao, Liming" Subject: Re: [edk2-platforms] [PATCH V1 09/13] MinPlatformPkg: FSP Dispatch Mode Support for PlatformSecLib Thread-Topic: [edk2-platforms] [PATCH V1 09/13] MinPlatformPkg: FSP Dispatch Mode Support for PlatformSecLib Thread-Index: AQHVmrQASe8t3Bmcg0GrIaZgHV7kYqeNE30Q Date: Sat, 16 Nov 2019 02:54:01 +0000 Message-ID: References: <20191114060655.5161-1-nathaniel.l.desimone@intel.com> <20191114060655.5161-10-nathaniel.l.desimone@intel.com> In-Reply-To: <20191114060655.5161-10-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: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiNmJkOTNiZTYtYzhlMS00NWZmLTg0YTYtZGU5OTMwMDQ5YWM3IiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiYUZ2OFZLRnNXU2lPY1JnbkhBMFwvbUd2bXI1alU2T3IydkJUSm53MENaajFZR2Y0THNHZklcL2VNSU5ZckFUVzFiIn0= 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: a197dee4-0658-4f18-eb22-08d76a403c45 x-ms-traffictypediagnostic: BY5PR11MB4226: 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:6790; x-forefront-prvs: 02234DBFF6 x-forefront-antispam-report: SFV:NSPM;SFS:(10019020)(979002)(136003)(366004)(346002)(396003)(39860400002)(376002)(13464003)(189003)(199004)(76116006)(66946007)(55016002)(25786009)(66476007)(66556008)(52536014)(4326008)(14454004)(5660300002)(9686003)(64756008)(2906002)(3846002)(6116002)(66446008)(6436002)(229853002)(8936002)(30864003)(81166006)(81156014)(8676002)(478600001)(6246003)(107886003)(14444005)(256004)(19627235002)(2501003)(76176011)(74316002)(102836004)(53546011)(6506007)(486006)(7736002)(476003)(305945005)(71200400001)(71190400001)(7696005)(11346002)(446003)(110136005)(54906003)(66066001)(316002)(99286004)(33656002)(86362001)(186003)(26005)(969003)(989001)(999001)(1009001)(1019001);DIR:OUT;SFP:1102;SCL:1;SRVR:BY5PR11MB4226;H:BY5PR11MB4484.namprd11.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;MX:1;A:1; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: C/s4ke898rSRsUAz7/TdZwYS618OdRlW6hi5DeihBZHkWZbDzpAPjPAeKltGKO6tm6Ei3jQWfXzMDB5sQXfiTs6EOsl+NsSumtw8+o0IRmjbDuQCk/dkm8LV/y0Z4h6ioepihVB4WZ7Nua8g3GzFkgRimGQkti4Hy+RgcXhYHkBg0oGSYRM+kXWu3kqzfTAC5codq8SkaiN4qDNiTYPrDL+NWh4Wg+XLJihKOnLTQFGsCEHTO91pehWDgqwRyFuGayqxXjXrXoKFlo/duZ0l++/l8FbBID5/FVXImprei4ULzB9JcUBEyW10bbZliy6JDrlWerLdgbbc8eB8N/s4nYLxr+So+hrpZOauTZr123ooPpLjWfSJISF07w0zlGzs6L+H7WhuQ5+lcyqtiZ0AZrWUICm4HsnqR6EuuMVf30P9FCYkk8bN4LxNst0NLMaX MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: a197dee4-0658-4f18-eb22-08d76a403c45 X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Nov 2019 02:54:01.6121 (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: /6Qx2Th7H73sJzsyPgBVt0YWF/N/NmTapIm9SyBxf/jsqKt9sl4fSN4I15L61JTn4ionSnelGfnomCLTGpSulDg+8anA+AQd+eRepUXXrgE= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY5PR11MB4226 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 FspWrapperPlatformSecLib.c: * Line 179: Given the other whitespace fixes, there's one missing here afte= r sizeof. CopyMem (CopyDestinationPointer, mPeiSecPlatformPpi, sizeof(mPeiSecPlat= formPpi)); It does not have to be fixed in this commit. Reviewed-by: Michael Kubacki > -----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 09/13] MinPlatformPkg: FSP Dispatch > Mode Support for PlatformSecLib >=20 > Cc: Michael Kubacki > Cc: Chasel Chiu > Cc: Liming Gao > Signed-off-by: Nate DeSimone > --- > .../FspWrapperPlatformSecLib.c | 34 ++++++++++++--- > .../SecFspWrapperPlatformSecLib.inf | 7 +++- > .../SecTempRamDone.c | 42 +++++++++++++++---- > .../Intel/MinPlatformPkg/MinPlatformPkg.dec | 28 ++++++++++++- > 4 files changed, 95 insertions(+), 16 deletions(-) >=20 > diff --git > a/Platform/Intel/MinPlatformPkg/FspWrapper/Library/SecFspWrapperPlatf > ormSecLib/FspWrapperPlatformSecLib.c > b/Platform/Intel/MinPlatformPkg/FspWrapper/Library/SecFspWrapperPlatf > ormSecLib/FspWrapperPlatformSecLib.c > index 303f3aac40..876c073fc4 100644 > --- > a/Platform/Intel/MinPlatformPkg/FspWrapper/Library/SecFspWrapperPlatf > ormSecLib/FspWrapperPlatformSecLib.c > +++ > b/Platform/Intel/MinPlatformPkg/FspWrapper/Library/SecFspWrapperPlat > +++ formSecLib/FspWrapperPlatformSecLib.c > @@ -1,7 +1,7 @@ > /** @file Provide FSP wrapper platform sec related function. -Copyrigh= t (c) > 2017, Intel Corporation. All rights reserved.
+Copyright (c) 2017 - 20= 19, > Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-= 2- > Clause-Patent **/@@ -12,6 +12,7 @@ SPDX-License-Identifier: BSD-2- > Clause-Patent > #include #include > #include +#include > #include #include > @@ -66,6 +67,18 @@ PEI_SEC_PERFORMANCE_PPI > mSecPerformancePpi =3D { > SecGetPerformance }; +EFI_PEI_CORE_FV_LOCATION_PPI > mPeiCoreFvLocationPpi =3D {+ (VOID *) (UINTN) FixedPcdGet32 > (PcdFspmBaseAddress)+};++EFI_PEI_PPI_DESCRIPTOR > mPeiCoreFvLocationPpiList[] =3D {+ {+ EFI_PEI_PPI_DESCRIPTOR_PPI,+ > &gEfiPeiCoreFvLocationPpiGuid,+ &mPeiCoreFvLocationPpi+ }+};+ > EFI_PEI_PPI_DESCRIPTOR mPeiSecPlatformPpi[] =3D { { > EFI_PEI_PPI_DESCRIPTOR_PPI,@@ -129,6 +142,8 @@ SecPlatformMain ( > ) { EFI_PEI_PPI_DESCRIPTOR *PpiList;+ UINT8 > TopOfTemporaryRamPpiIndex;+ UINT8 *CopyDestination= Pointer; > DEBUG ((DEBUG_INFO, "FSP Wrapper BootFirmwareVolumeBase - 0x%x\n", > SecCoreData->BootFirmwareVolumeBase)); DEBUG ((DEBUG_INFO, "FSP > Wrapper BootFirmwareVolumeSize - 0x%x\n", SecCoreData- > >BootFirmwareVolumeSize));@@ -150,13 +165,22 @@ SecPlatformMain ( > // Use middle of Heap as temp buffer, it will be copied by caller. /= / Do not > use Stack, because it will cause wrong calculation on stack by PeiCore = //- > PpiList =3D (VOID *)((UINTN)SecCoreData->PeiTemporaryRamBase + > (UINTN)SecCoreData->PeiTemporaryRamSize/2);- CopyMem (PpiList, > mPeiSecPlatformPpi, sizeof(mPeiSecPlatformPpi));-+ PpiList =3D (VOID > *)((UINTN) SecCoreData->PeiTemporaryRamBase + (UINTN) SecCoreData- > >PeiTemporaryRamSize/2);+ CopyDestinationPointer =3D (UINT8 *) PpiList;+ > TopOfTemporaryRamPpiIndex =3D 0;+ if ((PcdGet8 (PcdFspModeSelection) =3D= =3D > 0) && PcdGetBool (PcdFspDispatchModeUseFspPeiMain)) {+ //+ // In > Dispatch mode, wrapper should provide PeiCoreFvLocationPpi.+ //+ > CopyMem (CopyDestinationPointer, mPeiCoreFvLocationPpiList, sizeof > (mPeiCoreFvLocationPpiList));+ TopOfTemporaryRamPpiIndex =3D 1;+ > CopyDestinationPointer +=3D sizeof (mPeiCoreFvLocationPpiList);+ }+ > CopyMem (CopyDestinationPointer, mPeiSecPlatformPpi, > sizeof(mPeiSecPlatformPpi)); // // Patch TopOfTemporaryRamPpi //- > PpiList[0].Ppi =3D (VOID *)((UINTN)SecCoreData->TemporaryRamBase + > SecCoreData->TemporaryRamSize);+ > PpiList[TopOfTemporaryRamPpiIndex].Ppi =3D (VOID *)((UINTN) SecCoreData- > >TemporaryRamBase + SecCoreData->TemporaryRamSize); return PpiList; > }diff --git > a/Platform/Intel/MinPlatformPkg/FspWrapper/Library/SecFspWrapperPlatf > ormSecLib/SecFspWrapperPlatformSecLib.inf > b/Platform/Intel/MinPlatformPkg/FspWrapper/Library/SecFspWrapperPlatf > ormSecLib/SecFspWrapperPlatformSecLib.inf > index 3f5a63f273..02c720c73d 100644 > --- > a/Platform/Intel/MinPlatformPkg/FspWrapper/Library/SecFspWrapperPlatf > ormSecLib/SecFspWrapperPlatformSecLib.inf > +++ > b/Platform/Intel/MinPlatformPkg/FspWrapper/Library/SecFspWrapperPlat > +++ formSecLib/SecFspWrapperPlatformSecLib.inf > @@ -72,18 +72,20 @@ > BoardInitLib SecBoardInitLib TestPointCheckLib+ > PeiServicesTablePointerLib [Ppis] gEfiSecPlatformInformationPpiGuid = ## > CONSUMES gPeiSecPerformancePpiGuid ## CONSUMES > gTopOfTemporaryRamPpiGuid ## PRODUCES > gEfiPeiFirmwareVolumeInfoPpiGuid ## PRODUCES+ > gFspTempRamExitPpiGuid ## CONSUMES [Pcd] > gUefiCpuPkgTokenSpaceGuid.PcdPeiTemporaryRamStackSize ## > CONSUMES gIntelFsp2WrapperTokenSpaceGuid.PcdFsptBaseAddress > ## CONSUMES gIntelFsp2PkgTokenSpaceGuid.PcdFspTemporaryRamSize > ## CONSUMES- > gMinPlatformPkgTokenSpaceGuid.PcdSecSerialPortDebugEnable ## > CONSUMES+ > gMinPlatformPkgTokenSpaceGuid.PcdSecSerialPortDebugEnable ## > CONSUMES [FixedPcd] > gIntelFsp2WrapperTokenSpaceGuid.PcdCpuMicrocodePatchAddress ## > CONSUMES@@ -91,3 +93,6 @@ > gIntelFsp2WrapperTokenSpaceGuid.PcdFlashMicrocodeOffset ## > CONSUMES > gIntelFsp2WrapperTokenSpaceGuid.PcdFlashCodeCacheAddress ## > CONSUMES gIntelFsp2WrapperTokenSpaceGuid.PcdFlashCodeCacheSize > ## CONSUMES+ gIntelFsp2WrapperTokenSpaceGuid.PcdFspmBaseAddress > ## CONSUMES+ gIntelFsp2WrapperTokenSpaceGuid.PcdFspModeSelection > ## CONSUMES+ > gMinPlatformPkgTokenSpaceGuid.PcdFspDispatchModeUseFspPeiMain > ## CONSUMESdiff --git > a/Platform/Intel/MinPlatformPkg/FspWrapper/Library/SecFspWrapperPlatf > ormSecLib/SecTempRamDone.c > b/Platform/Intel/MinPlatformPkg/FspWrapper/Library/SecFspWrapperPlatf > ormSecLib/SecTempRamDone.c > index cde8a80a4e..922e4ec204 100644 > --- > a/Platform/Intel/MinPlatformPkg/FspWrapper/Library/SecFspWrapperPlatf > ormSecLib/SecTempRamDone.c > +++ > b/Platform/Intel/MinPlatformPkg/FspWrapper/Library/SecFspWrapperPlat > +++ formSecLib/SecTempRamDone.c > @@ -1,7 +1,7 @@ > /** @file Provide SecTemporaryRamDone function. -Copyright (c) 2017, > Intel Corporation. All rights reserved.
+Copyright (c) 2017 - 2019, In= tel > Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clau= se- > Patent **/@@ -9,6 +9,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent > #include #include +#include > #include #include > @@ -17,6 +18,7 @@ SPDX-License-Identifier: BSD-2- > Clause-Patent #include #include > #include +#include > /** This interface disables > temporary memory in SEC Phase.@@ -29,17 +31,41 @@ > SecPlatformDisableTemporaryMemory ( > { EFI_STATUS Status; VOID *TempR= amExitParam;+ > CONST EFI_PEI_SERVICES **PeiServices;+ FSP_TEMP_RAM_EXIT_PPI > *TempRamExitPpi;++ DEBUG ((DEBUG_INFO, > "SecPlatformDisableTemporaryMemory enter\n")); - DEBUG((DEBUG_INFO, > "SecPlatformDisableTemporaryMemory enter\n"));- Status =3D > BoardInitBeforeTempRamExit (); ASSERT_EFI_ERROR (Status); - > TempRamExitParam =3D UpdateTempRamExitParam ();- Status =3D > CallTempRamExit (TempRamExitParam);- DEBUG((DEBUG_INFO, > "TempRamExit status: 0x%x\n", Status));- ASSERT_EFI_ERROR(Status);- + = if > (PcdGet8 (PcdFspModeSelection) =3D=3D 1) {+ //+ // FSP API mode+ = //+ > TempRamExitParam =3D UpdateTempRamExitParam ();+ Status =3D > CallTempRamExit (TempRamExitParam);+ DEBUG ((DEBUG_INFO, > "TempRamExit status: 0x%x\n", Status));+ ASSERT_EFI_ERROR (Status);+ = } > else {+ //+ // FSP Dispatch mode+ //+ PeiServices =3D > GetPeiServicesTablePointer ();+ Status =3D (*PeiServices)->LocatePpi (= + > PeiServices,+ &gFspTempRamExitPpiGuid,+ = 0,+ > NULL,+ (VOID **) &TempRamExitPpi+ = );+ > ASSERT_EFI_ERROR (Status);+ if (EFI_ERROR (Status)) {+ return;+ = }+ > TempRamExitPpi->TempRamExit (NULL);+ }+ Status =3D > BoardInitAfterTempRamExit (); ASSERT_EFI_ERROR (Status); diff --git > a/Platform/Intel/MinPlatformPkg/MinPlatformPkg.dec > b/Platform/Intel/MinPlatformPkg/MinPlatformPkg.dec > index a851021c0b..856c17f737 100644 > --- a/Platform/Intel/MinPlatformPkg/MinPlatformPkg.dec > +++ b/Platform/Intel/MinPlatformPkg/MinPlatformPkg.dec > @@ -69,8 +69,6 @@ SetCacheMtrrLib|Include/Library/SetCacheMtrrLib.h > [PcdsFixedAtBuild, PcdsPatchableInModule] - > gMinPlatformPkgTokenSpaceGuid.PcdFspWrapperBootMode|FALSE|BOOLE > AN|0x80000008- > gMinPlatformPkgTokenSpaceGuid.PcdFspMaxUpdSize|0x00000000|UINT32| > 0x80000000 > gMinPlatformPkgTokenSpaceGuid.PcdFspReservedSizeOnStackTop|0x00000 > 040|UINT32|0x80000001 > gMinPlatformPkgTokenSpaceGuid.PcdPeiPhaseStackTop|0x00000000|UINT3 > 2|0x80000002@@ -272,6 +270,32 @@ > gMinPlatformPkgTokenSpaceGuid.PcdPcIoApicEnable|0x0|UINT32|0x90000 > 019 > # gMinPlatformPkgTokenSpaceGuid.PcdBootStage|4|UINT8|0xF00000A0 > + ## FSP Boot Mode Selector+ # FALSE: The board is not a FSP wrapper (F= SP > binary not used)+ # TRUE: The board is a FSP wrapper (FSP binary is use= d)+ > #+ > gMinPlatformPkgTokenSpaceGuid.PcdFspWrapperBootMode|FALSE|BOOLE > AN|0x80000008++ ## FSP Dispatch Mode: Use the PEI Main Binary Included > in FSP-M+ # FALSE: The PEI Main included in FvPreMemory is used to > dispatch all PEIMs+ # (both inside FSP and outside FSP).+ # = Pros:+ # > * PEI Main is re-built from source and is always the latest version+ # = * > Platform code can link any desired LibraryClass to PEI Main+ # = (Ex: > Custom DebugLib instance, SerialPortLib, etc.)+ # Cons:+ # = * The PEI > Main being used to execute FSP PEIMs is not the PEI Main+ # t= hat the > FSP PEIMs were tested with, adding risk of breakage.+ # * Two c= opies of > PEI Main will exist in the final binary,+ # #1 in FSP-M, #2 i= n > FvPreMemory. The copy in FSP-M is never+ # executed, wasting > space.+ #+ # TRUE: The PEI Main included in FSP is used to disp= atch > all PEIMs+ # (both inside FSP and outside FSP). PEI Main will not= be > included in+ # FvPreMemory. This is the default and is the recomm= ended > choice.+ #+ > gMinPlatformPkgTokenSpaceGuid.PcdFspDispatchModeUseFspPeiMain|TR > UE|BOOLEAN|0xF00000A8+ [PcdsFeatureFlag] > gMinPlatformPkgTokenSpaceGuid.PcdStopAfterDebugInit > |FALSE|BOOLEAN|0xF00000A1-- > 2.23.0.windows.1