Skip to content

Commit

Permalink
Make PlatformInitPreMem independent to IntelSiliconPkg and IntelFsp2W…
Browse files Browse the repository at this point in the history
…rapperPkg (microsoft#293)

## Description

This driver is shared across different Silicon vendors. So it should not
use any Intel specific packages.

In order to achieve this, added a new lib `FspSupportLib` to isolate
silicon related PCDs

- [ ] Impacts functionality?
- [ ] Impacts security?
- [ ] Breaking change?
- [ ] Includes tests?
- [ ] Includes documentation?

## How This Was Tested

CI build passed.

## Integration Instructions

No additional change is required for the consuming platforms.

---------

Co-authored-by: Michael Kubacki <[email protected]>
  • Loading branch information
PaddyDengKC and makubacki committed Nov 5, 2024
1 parent 35527d3 commit 1bf8daf
Show file tree
Hide file tree
Showing 6 changed files with 111 additions and 1 deletion.
1 change: 1 addition & 0 deletions MinPlatformPkg/MinPlatformPkg.dsc
Original file line number Diff line number Diff line change
Expand Up @@ -190,6 +190,7 @@

MinPlatformPkg/PlatformInit/ReportFv/ReportFvPei.inf
MinPlatformPkg/PlatformInit/PlatformInitPei/PlatformInitPreMem.inf
MinPlatformPkg/PlatformInit/PlatformInitPei/PlatformInitPreMemNonFsp.inf
MinPlatformPkg/PlatformInit/PlatformInitPei/PlatformInitPostMem.inf
MinPlatformPkg/PlatformInit/PlatformInitDxe/PlatformInitDxe.inf
MinPlatformPkg/PlatformInit/PlatformInitSmm/PlatformInitSmm.inf
Expand Down
17 changes: 17 additions & 0 deletions MinPlatformPkg/PlatformInit/PlatformInitPei/FspSupport.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
/** @file FspSupport.c
Provides FSP mode selection value based on PcdFspModeSelection
Copyright (c) Microsoft Corporation.
SPDX-License-Identifier: BSD-2-Clause-Patent
**/

#include <PiPei.h>

UINT8
EFIAPI
FspGetModeSelection (
VOID
)
{
return PcdGet8 (PcdFspModeSelection);
}
17 changes: 17 additions & 0 deletions MinPlatformPkg/PlatformInit/PlatformInitPei/FspSupportNull.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
/** @file FspSupport.c
Provides FSP mode selection value based on PcdFspModeSelection
Copyright (c) Microsoft Corporation.
SPDX-License-Identifier: BSD-2-Clause-Patent
**/

#include <PiPei.h>

UINT8
EFIAPI
FspGetModeSelection (
VOID
)
{
return 0;
}
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,12 @@ GetPlatformMemorySize (
IN OUT UINT64 *MemorySize
);

UINT8
EFIAPI
FspGetModeSelection (
VOID
);

/**
This function checks the memory range in PEI.
Expand Down Expand Up @@ -516,7 +522,7 @@ PlatformInitPreMem (

BuildMemoryTypeInformation ();

if ((!PcdGetBool (PcdFspWrapperBootMode)) || (PcdGet8 (PcdFspModeSelection) == 0)) {
if ((!PcdGetBool (PcdFspWrapperBootMode)) || (FspGetModeSelection () == 0)) {
//
// Install memory relating PPIs for EDKII native build and FSP dispatch mode
//
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@

[Sources]
PlatformInitPreMem.c
FspSupport.c

[Ppis]
gEfiPeiMemoryDiscoveredPpiGuid
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
### @file
# Component information file for the Platform Init Pre-Memory PEI module.
#
# Copyright (c) 2017 - 2021, Intel Corporation. All rights reserved.<BR>
# Copyright (c) Microsoft Corporation.
#
# SPDX-License-Identifier: BSD-2-Clause-Patent
#
###

[Defines]
INF_VERSION = 0x00010017
BASE_NAME = PlatformInitPreMemNonFsp
FILE_GUID = BEB6F1A6-F6BC-4C34-AB32-F0390A428479
VERSION_STRING = 1.0
MODULE_TYPE = PEIM
ENTRY_POINT = PlatformInitPreMemEntryPoint

[LibraryClasses]
BaseMemoryLib
BoardInitLib
DebugLib
HobLib
IoLib
MemoryAllocationLib
PeimEntryPoint
PeiServicesLib
TestPointCheckLib
TimerLib
SetCacheMtrrLib
ReportCpuHobLib

[Packages]
MinPlatformPkg/MinPlatformPkg.dec
MdeModulePkg/MdeModulePkg.dec
MdePkg/MdePkg.dec

[Pcd]
gMinPlatformPkgTokenSpaceGuid.PcdFspWrapperBootMode ## CONSUMES
gMinPlatformPkgTokenSpaceGuid.PcdStopAfterDebugInit ## CONSUMES
gMinPlatformPkgTokenSpaceGuid.PcdStopAfterMemInit ## CONSUMES

[FixedPcd]
gMinPlatformPkgTokenSpaceGuid.PcdPlatformEfiAcpiReclaimMemorySize ## CONSUMES
gMinPlatformPkgTokenSpaceGuid.PcdPlatformEfiAcpiNvsMemorySize ## CONSUMES
gMinPlatformPkgTokenSpaceGuid.PcdPlatformEfiReservedMemorySize ## CONSUMES
gMinPlatformPkgTokenSpaceGuid.PcdPlatformEfiRtDataMemorySize ## CONSUMES
gMinPlatformPkgTokenSpaceGuid.PcdPlatformEfiRtCodeMemorySize ## CONSUMES

[Sources]
PlatformInitPreMem.c
FspSupportNull.c

[Ppis]
gEfiPeiMemoryDiscoveredPpiGuid
gEfiPeiMasterBootModePpiGuid ## PRODUCES
gEfiPeiBootInRecoveryModePpiGuid ## PRODUCES
gPlatformInitTempRamExitPpiGuid ## PRODUCES
gEfiPeiReadOnlyVariable2PpiGuid
gPeiBaseMemoryTestPpiGuid
gPeiPlatformMemorySizePpiGuid

[Guids]
gEfiMemoryTypeInformationGuid
gEfiMemoryTypeMinimumAllocationGuid #MU_CHANGE - Add minimum memory type allocations

[Depex]
gEfiPeiReadOnlyVariable2PpiGuid

0 comments on commit 1bf8daf

Please sign in to comment.