Reviewed-by: Michael Kubacki <[email protected]> > -----Original Message----- > From: Chiu, Chasel <[email protected]> > Sent: Wednesday, October 30, 2019 5:30 PM > To: [email protected] > Cc: Kubacki, Michael A <[email protected]>; Desimone, Nathaniel > L <[email protected]>; Gao, Liming <[email protected]>; > Jeremy Soller <[email protected]> > Subject: [edk2-platforms: PATCH v2 3/6] KabylakeOpenBoardPkg: Add > SetCacheLib library class. > > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=2314 > > Kabylake boards are relying on FSP to configure MTRRs so they can include > SetCacheLibNull. > > Test: internal platform can boot with FSP API and Dispatch modes. > > Cc: Michael Kubacki <[email protected]> > Cc: Nate DeSimone <[email protected]> > Cc: Liming Gao <[email protected]> > Cc: Jeremy Soller <[email protected]> > Signed-off-by: Chasel Chiu <[email protected]> > --- > > Platform/Intel/KabylakeOpenBoardPkg/GalagoPro3/Override/Platform/Intel > /MinPlatformPkg/PlatformInit/PlatformInitPei/PlatformInitPreMem.c | 640 > ---------------------------------------------------------------------------------------------- > ---------------------------------------------------------------------------------------------- > ---------------------------------------------------------------------------------------------- > ---------------------------------------------------------------------------------------------- > ---------------------------------------------------------------------------------------------- > ---------------------------------------------------------------------------------------------- > ---------------------------------------------------------------------------- > Platform/Intel/KabylakeOpenBoardPkg/GalagoPro3/OpenBoardPkg.dsc > | 3 ++- > Platform/Intel/KabylakeOpenBoardPkg/GalagoPro3/OpenBoardPkg.fdf > | 2 +- > > Platform/Intel/KabylakeOpenBoardPkg/GalagoPro3/Override/Platform/Intel > /MinPlatformPkg/PlatformInit/PlatformInitPei/PlatformInitPreMem.inf | 67 > ------------------------------------------------------------------- > Platform/Intel/KabylakeOpenBoardPkg/KabylakeRvp3/OpenBoardPkg.dsc > | 1 + > 5 files changed, 4 insertions(+), 709 deletions(-) > > diff --git > a/Platform/Intel/KabylakeOpenBoardPkg/GalagoPro3/Override/Platform/In > tel/MinPlatformPkg/PlatformInit/PlatformInitPei/PlatformInitPreMem.c > b/Platform/Intel/KabylakeOpenBoardPkg/GalagoPro3/Override/Platform/In > tel/MinPlatformPkg/PlatformInit/PlatformInitPei/PlatformInitPreMem.c > deleted file mode 100644 > index b784026c1b..0000000000 > --- > a/Platform/Intel/KabylakeOpenBoardPkg/GalagoPro3/Override/Platform/In > tel/MinPlatformPkg/PlatformInit/PlatformInitPei/PlatformInitPreMem.c > +++ /dev/null > @@ -1,640 +0,0 @@ > -/** @file > - Source code file for Platform Init Pre-Memory PEI module > - > -Copyright (c) 2019, Intel Corporation. All rights reserved.<BR> > -SPDX-License-Identifier: BSD-2-Clause-Patent > - > -**/ > - > -#include <Base.h> > -#include <IndustryStandard/Pci30.h> > -#include <Library/IoLib.h> > -#include <Library/DebugLib.h> > -#include <Library/HobLib.h> > -#include <Library/PcdLib.h> > -#include <Library/TimerLib.h> > -#include <Library/BaseMemoryLib.h> > -#include <Library/PeiServicesLib.h> > -#include <Library/MtrrLib.h> > -#include <Library/ReportFvLib.h> > -#include <Ppi/ReadOnlyVariable2.h> > -#include <Ppi/MemoryDiscovered.h> > -#include <Ppi/FirmwareVolumeInfo.h> > -#include <Ppi/BootInRecoveryMode.h> > -#include <Ppi/MasterBootMode.h> > -#include <Guid/FirmwareFileSystem2.h> > -#include <Library/PeiServicesTablePointerLib.h> > -#include <Library/BoardInitLib.h> > -#include <Library/TestPointCheckLib.h> > -#include <Guid/MemoryTypeInformation.h> -#include > <Ppi/PlatformMemorySize.h> -#include <Ppi/BaseMemoryTest.h> > - > -EFI_STATUS > -EFIAPI > -MemoryDiscoveredPpiNotifyCallback ( > - IN CONST EFI_PEI_SERVICES **PeiServices, > - IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDescriptor, > - IN VOID *Ppi > - ); > - > -EFI_STATUS > -EFIAPI > -GetPlatformMemorySize ( > - IN EFI_PEI_SERVICES **PeiServices, > - IN PEI_PLATFORM_MEMORY_SIZE_PPI *This, > - IN OUT UINT64 *MemorySize > - ); > - > -/** > - > - This function checks the memory range in PEI. > - > - @param PeiServices Pointer to PEI Services. > - @param This Pei memory test PPI pointer. > - @param BeginAddress Beginning of the memory address to be checked. > - @param MemoryLength Bytes of memory range to be checked. > - @param Operation Type of memory check operation to be performed. > - @param ErrorAddress Return the address of the error memory address. > - > - @retval EFI_SUCCESS The operation completed successfully. > - @retval EFI_DEVICE_ERROR Memory test failed. It's not safe to use this > range of memory. > - > -**/ > -EFI_STATUS > -EFIAPI > -BaseMemoryTest ( > - IN EFI_PEI_SERVICES **PeiServices, > - IN PEI_BASE_MEMORY_TEST_PPI *This, > - IN EFI_PHYSICAL_ADDRESS BeginAddress, > - IN UINT64 MemoryLength, > - IN PEI_MEMORY_TEST_OP Operation, > - OUT EFI_PHYSICAL_ADDRESS *ErrorAddress > - ); > - > -static EFI_PEI_NOTIFY_DESCRIPTOR mMemDiscoveredNotifyList = { > - (EFI_PEI_PPI_DESCRIPTOR_NOTIFY_CALLBACK | > EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST), > - &gEfiPeiMemoryDiscoveredPpiGuid, > - (EFI_PEIM_NOTIFY_ENTRY_POINT) MemoryDiscoveredPpiNotifyCallback - > }; > - > -GLOBAL_REMOVE_IF_UNREFERENCED EFI_PEI_PPI_DESCRIPTOR > mPpiListRecoveryBootMode = { > - (EFI_PEI_PPI_DESCRIPTOR_PPI | > EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST), > - &gEfiPeiBootInRecoveryModePpiGuid, > - NULL > -}; > - > -GLOBAL_REMOVE_IF_UNREFERENCED EFI_PEI_PPI_DESCRIPTOR > mPpiBootMode = { > - (EFI_PEI_PPI_DESCRIPTOR_PPI | > EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST), > - &gEfiPeiMasterBootModePpiGuid, > - NULL > -}; > - > -static PEI_BASE_MEMORY_TEST_PPI mPeiBaseMemoryTestPpi = { > BaseMemoryTest }; > - > -static PEI_PLATFORM_MEMORY_SIZE_PPI mMemoryMemorySizePpi = { > GetPlatformMemorySize }; > - > -static EFI_PEI_PPI_DESCRIPTOR mMemPpiList[] = { > - { > - EFI_PEI_PPI_DESCRIPTOR_PPI, > - &gPeiBaseMemoryTestPpiGuid, > - &mPeiBaseMemoryTestPpi > - }, > - { > - (EFI_PEI_PPI_DESCRIPTOR_PPI | > EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST), > - &gPeiPlatformMemorySizePpiGuid, > - &mMemoryMemorySizePpi > - }, > -}; > - > -/// > -/// 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. > -/// > -GLOBAL_REMOVE_IF_UNREFERENCED EFI_MEMORY_TYPE_INFORMATION > mDefaultMemoryTypeInformation[] = { > - { EfiACPIReclaimMemory, FixedPcdGet32 > (PcdPlatformEfiAcpiReclaimMemorySize) }, // ASL > - { EfiACPIMemoryNVS, FixedPcdGet32 > (PcdPlatformEfiAcpiNvsMemorySize) }, // ACPI NVS (including S3 related) > - { EfiReservedMemoryType, FixedPcdGet32 > (PcdPlatformEfiReservedMemorySize) }, // BIOS Reserved (including S3 > related) > - { EfiRuntimeServicesData, FixedPcdGet32 > (PcdPlatformEfiRtDataMemorySize) }, // Runtime Service Data > - { EfiRuntimeServicesCode, FixedPcdGet32 > (PcdPlatformEfiRtCodeMemorySize) }, // Runtime Service Code > - { EfiMaxMemoryType, 0 } > -}; > - > -VOID > -BuildMemoryTypeInformation ( > - VOID > - ) > -{ > - EFI_STATUS Status; > - EFI_PEI_READ_ONLY_VARIABLE2_PPI *VariableServices; > - UINTN DataSize; > - EFI_MEMORY_TYPE_INFORMATION MemoryData[EfiMaxMemoryType + > 1]; > - > - // > - // Locate system configuration variable > - // > - Status = PeiServicesLocatePpi( > - &gEfiPeiReadOnlyVariable2PpiGuid, // GUID > - 0, // INSTANCE > - NULL, // EFI_PEI_PPI_DESCRIPTOR > - (VOID **) &VariableServices // PPI > - ); > - ASSERT_EFI_ERROR(Status); > - > - DataSize = sizeof (MemoryData); > - Status = VariableServices->GetVariable ( > - VariableServices, > - EFI_MEMORY_TYPE_INFORMATION_VARIABLE_NAME, > - &gEfiMemoryTypeInformationGuid, > - NULL, > - &DataSize, > - &MemoryData > - ); > - if (EFI_ERROR(Status)) { > - DataSize = sizeof (mDefaultMemoryTypeInformation); > - CopyMem(MemoryData, mDefaultMemoryTypeInformation, DataSize); > - } > - > - /// > - /// Build the GUID'd HOB for DXE > - /// > - BuildGuidDataHob ( > - &gEfiMemoryTypeInformationGuid, > - MemoryData, > - DataSize > - ); > -} > - > -EFI_STATUS > -EFIAPI > -GetPlatformMemorySize ( > - IN EFI_PEI_SERVICES **PeiServices, > - IN PEI_PLATFORM_MEMORY_SIZE_PPI *This, > - IN OUT UINT64 *MemorySize > - ) > -{ > - EFI_STATUS Status; > - EFI_PEI_READ_ONLY_VARIABLE2_PPI *Variable; > - UINTN DataSize; > - EFI_MEMORY_TYPE_INFORMATION MemoryData[EfiMaxMemoryType + > 1]; > - UINTN Index; > - EFI_BOOT_MODE BootMode; > - UINTN IndexNumber; > - > -#define PEI_MIN_MEMORY_SIZE (EFI_PHYSICAL_ADDRESS) ((320 * > 0x100000)) > - > - *MemorySize = PEI_MIN_MEMORY_SIZE; > - Status = PeiServicesLocatePpi ( > - &gEfiPeiReadOnlyVariable2PpiGuid, > - 0, > - NULL, > - (VOID **)&Variable > - ); > - > - ASSERT_EFI_ERROR (Status); > - > - Status = PeiServicesGetBootMode (&BootMode); > - ASSERT_EFI_ERROR (Status); > - > - DataSize = sizeof (MemoryData); > - > - Status = Variable->GetVariable ( > - Variable, > - EFI_MEMORY_TYPE_INFORMATION_VARIABLE_NAME, > - &gEfiMemoryTypeInformationGuid, > - NULL, > - &DataSize, > - &MemoryData > - ); > - IndexNumber = sizeof (mDefaultMemoryTypeInformation) / sizeof > (EFI_MEMORY_TYPE_INFORMATION); > - > - // > - // Accumulate maximum amount of memory needed > - // > - > - DEBUG((DEBUG_ERROR, "PEI_MIN_MEMORY_SIZE:%dKB \n", > DivU64x32(*MemorySize,1024))); > - DEBUG((DEBUG_ERROR, "IndexNumber:%d MemoryDataNumber%d \n", > IndexNumber,DataSize/ sizeof (EFI_MEMORY_TYPE_INFORMATION))); > - if (EFI_ERROR (Status)) { > - // > - // Start with minimum memory > - // > - for (Index = 0; Index < IndexNumber; Index++) { > - DEBUG((DEBUG_ERROR, "Index[%d].Type = %d > .NumberOfPages=0x%x\n", > Index,mDefaultMemoryTypeInformation[Index].Type,mDefaultMemoryTyp > eInformation[Index].NumberOfPages)); > - *MemorySize += > mDefaultMemoryTypeInformation[Index].NumberOfPages * > EFI_PAGE_SIZE; > - } > - DEBUG((DEBUG_ERROR, "No memory type, Total platform > memory:%dKB \n", DivU64x32(*MemorySize,1024))); > - } else { > - // > - // Start with at least 0x200 pages of memory for the DXE Core and the DXE > Stack > - // > - for (Index = 0; Index < IndexNumber; Index++) { > - DEBUG((DEBUG_ERROR, "Index[%d].Type = %d > .NumberOfPages=0x%x\n", > Index,MemoryData[Index].Type,MemoryData[Index].NumberOfPages)); > - *MemorySize += MemoryData[Index].NumberOfPages * > EFI_PAGE_SIZE; > - > - } > - DEBUG((DEBUG_ERROR, "has memory type, Total platform > memory:%dKB \n", DivU64x32(*MemorySize,1024))); > - } > - > - return EFI_SUCCESS; > -} > - > -/** > - > - This function checks the memory range in PEI. > - > - @param PeiServices Pointer to PEI Services. > - @param This Pei memory test PPI pointer. > - @param BeginAddress Beginning of the memory address to be checked. > - @param MemoryLength Bytes of memory range to be checked. > - @param Operation Type of memory check operation to be performed. > - @param ErrorAddress Return the address of the error memory address. > - > - @retval EFI_SUCCESS The operation completed successfully. > - @retval EFI_DEVICE_ERROR Memory test failed. It's not safe to use this > range of memory. > - > -**/ > -EFI_STATUS > -EFIAPI > -BaseMemoryTest ( > - IN EFI_PEI_SERVICES **PeiServices, > - IN PEI_BASE_MEMORY_TEST_PPI *This, > - IN EFI_PHYSICAL_ADDRESS BeginAddress, > - IN UINT64 MemoryLength, > - IN PEI_MEMORY_TEST_OP Operation, > - OUT EFI_PHYSICAL_ADDRESS *ErrorAddress > - ) > -{ > - UINT32 TestPattern; > - UINT32 SpanSize; > - EFI_PHYSICAL_ADDRESS TempAddress; > - > -#define MEMORY_TEST_PATTERN 0x5A5A5A5A > -#define MEMORY_TEST_COVER_SPAN 0x40000 > - > - TestPattern = MEMORY_TEST_PATTERN; > - SpanSize = 0; > - > - // > - // Make sure we don't try and test anything above the max physical > address range > - // > - ASSERT (BeginAddress + MemoryLength < MAX_ADDRESS); > - > - switch (Operation) { > - case Extensive: > - SpanSize = 0x4; > - break; > - > - case Sparse: > - case Quick: > - SpanSize = MEMORY_TEST_COVER_SPAN; > - break; > - > - case Ignore: > - goto Done; > - break; > - } > - // > - // Write the test pattern into memory range > - // > - TempAddress = BeginAddress; > - while (TempAddress < BeginAddress + MemoryLength) { > - (*(UINT32 *) (UINTN) TempAddress) = TestPattern; > - TempAddress += SpanSize; > - } > - // > - // Read pattern from memory and compare it > - // > - TempAddress = BeginAddress; > - while (TempAddress < BeginAddress + MemoryLength) { > - if ((*(UINT32 *) (UINTN) TempAddress) != TestPattern) { > - *ErrorAddress = TempAddress; > - return EFI_DEVICE_ERROR; > - } > - > - TempAddress += SpanSize; > - } > - > -Done: > - > - return EFI_SUCCESS; > -} > - > -/** > - Set Cache Mtrr. > -**/ > -VOID > -SetCacheMtrr ( > - VOID > - ) > -{ > - EFI_STATUS Status; > - EFI_PEI_HOB_POINTERS Hob; > - MTRR_SETTINGS MtrrSetting; > - UINT64 MemoryBase; > - UINT64 MemoryLength; > - UINT64 LowMemoryLength; > - UINT64 HighMemoryLength; > - EFI_BOOT_MODE BootMode; > - EFI_RESOURCE_ATTRIBUTE_TYPE ResourceAttribute; > - UINT64 CacheMemoryLength; > - > - /// > - /// Reset all MTRR setting. > - /// > - ZeroMem(&MtrrSetting, sizeof(MTRR_SETTINGS)); > - > - /// > - /// Cache the Flash area as WP to boost performance > - /// > - Status = MtrrSetMemoryAttributeInMtrrSettings ( > - &MtrrSetting, > - (UINTN) PcdGet32 (PcdFlashAreaBaseAddress), > - (UINTN) PcdGet32 (PcdFlashAreaSize), > - CacheWriteProtected > - ); > - ASSERT_EFI_ERROR (Status); > - > - /// > - /// Update MTRR setting from MTRR buffer for Flash Region to be WP to > boost performance > - /// > - MtrrSetAllMtrrs (&MtrrSetting); > - > - /// > - /// Set low to 1 MB. Since 1MB cacheability will always be set > - /// until override by CSM. > - /// Initialize high memory to 0. > - /// > - LowMemoryLength = 0x100000; > - HighMemoryLength = 0; > - ResourceAttribute = ( > - EFI_RESOURCE_ATTRIBUTE_PRESENT | > - EFI_RESOURCE_ATTRIBUTE_INITIALIZED | > - EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE | > - EFI_RESOURCE_ATTRIBUTE_WRITE_COMBINEABLE | > - EFI_RESOURCE_ATTRIBUTE_WRITE_THROUGH_CACHEABLE | > - EFI_RESOURCE_ATTRIBUTE_WRITE_BACK_CACHEABLE > - ); > - > - Status = PeiServicesGetBootMode (&BootMode); > - ASSERT_EFI_ERROR (Status); > - > - if (BootMode != BOOT_ON_S3_RESUME) { > - ResourceAttribute |= EFI_RESOURCE_ATTRIBUTE_TESTED; > - } > - > - Status = PeiServicesGetHobList ((VOID **) &Hob.Raw); > - while (!END_OF_HOB_LIST (Hob)) { > - if (Hob.Header->HobType == EFI_HOB_TYPE_RESOURCE_DESCRIPTOR) { > - if ((Hob.ResourceDescriptor->ResourceType == > EFI_RESOURCE_SYSTEM_MEMORY) || > - ((Hob.ResourceDescriptor->ResourceType == > EFI_RESOURCE_MEMORY_RESERVED) && > - (Hob.ResourceDescriptor->ResourceAttribute == ResourceAttribute)) > - ) { > - if (Hob.ResourceDescriptor->PhysicalStart >= 0x100000000ULL) { > - HighMemoryLength += Hob.ResourceDescriptor->ResourceLength; > - } else if (Hob.ResourceDescriptor->PhysicalStart >= 0x100000) { > - LowMemoryLength += Hob.ResourceDescriptor->ResourceLength; > - } > - } > - } > - > - Hob.Raw = GET_NEXT_HOB (Hob); > - } > - > - DEBUG ((DEBUG_INFO, "Memory Length (Below 4GB) = %lx.\n", > LowMemoryLength)); > - DEBUG ((DEBUG_INFO, "Memory Length (Above 4GB) = %lx.\n", > HighMemoryLength)); > - > - /// > - /// Assume size of main memory is multiple of 256MB > - /// > - MemoryLength = (LowMemoryLength + 0xFFFFFFF) & 0xF0000000; > - MemoryBase = 0; > - > - CacheMemoryLength = MemoryLength; > - /// > - /// Programming MTRRs to avoid override SPI region with UC when MAX > TOLUD Length >= 3.5GB > - /// > - if (MemoryLength > 0xDC000000) { > - CacheMemoryLength = 0xC0000000; > - Status = MtrrSetMemoryAttributeInMtrrSettings ( > - &MtrrSetting, > - MemoryBase, > - CacheMemoryLength, > - CacheWriteBack > - ); > - ASSERT_EFI_ERROR (Status); > - > - MemoryBase = 0xC0000000; > - CacheMemoryLength = MemoryLength - 0xC0000000; > - if (MemoryLength > 0xE0000000) { > - CacheMemoryLength = 0x20000000; > - Status = MtrrSetMemoryAttributeInMtrrSettings ( > - &MtrrSetting, > - MemoryBase, > - CacheMemoryLength, > - CacheWriteBack > - ); > - ASSERT_EFI_ERROR (Status); > - > - MemoryBase = 0xE0000000; > - CacheMemoryLength = MemoryLength - 0xE0000000; > - } > - } > - > - Status = MtrrSetMemoryAttributeInMtrrSettings ( > - &MtrrSetting, > - MemoryBase, > - CacheMemoryLength, > - CacheWriteBack > - ); > - ASSERT_EFI_ERROR (Status); > - > - if (LowMemoryLength != MemoryLength) { > - MemoryBase = LowMemoryLength; > - MemoryLength -= LowMemoryLength; > - Status = MtrrSetMemoryAttributeInMtrrSettings ( > - &MtrrSetting, > - MemoryBase, > - MemoryLength, > - CacheUncacheable > - ); > - ASSERT_EFI_ERROR (Status); > - } > - > - /// > - /// VGA-MMIO - 0xA0000 to 0xC0000 to be UC > - /// > - Status = MtrrSetMemoryAttributeInMtrrSettings ( > - &MtrrSetting, > - 0xA0000, > - 0x20000, > - CacheUncacheable > - ); > - ASSERT_EFI_ERROR (Status); > - > - /// > - /// Update MTRR setting from MTRR buffer > - /// > - MtrrSetAllMtrrs (&MtrrSetting); > - > - return ; > -} > - > -VOID > -ReportCpuHob ( > - VOID > - ) > -{ > - UINT8 PhysicalAddressBits; > - UINT32 RegEax; > - > - AsmCpuid (0x80000000, &RegEax, NULL, NULL, NULL); > - if (RegEax >= 0x80000008) { > - AsmCpuid (0x80000008, &RegEax, NULL, NULL, NULL); > - PhysicalAddressBits = (UINT8) RegEax; > - } else { > - PhysicalAddressBits = 36; > - } > - > - /// > - /// Create a CPU hand-off information > - /// > - BuildCpuHob (PhysicalAddressBits, 16); -} > - > -/** > - Install Firmware Volume Hob's once there is main memory > - > - @param[in] PeiServices General purpose services available to every > PEIM. > - @param[in] NotifyDescriptor Notify that this module published. > - @param[in] Ppi PPI that was installed. > - > - @retval EFI_SUCCESS The function completed successfully. > -**/ > -EFI_STATUS > -EFIAPI > -MemoryDiscoveredPpiNotifyCallback ( > - IN CONST EFI_PEI_SERVICES **PeiServices, > - IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDescriptor, > - IN VOID *Ppi > - ) > -{ > - EFI_STATUS Status; > - EFI_BOOT_MODE BootMode; > - > - Status = BoardInitAfterMemoryInit (); > - ASSERT_EFI_ERROR (Status); > - > - Status = PeiServicesGetBootMode (&BootMode); > - ASSERT_EFI_ERROR (Status); > - > - > - ReportCpuHob (); > - > - TestPointMemoryDiscoveredMtrrFunctional (); > - > - TestPointMemoryDiscoveredMemoryResourceFunctional (); > - > - /// > - /// If S3 resume, then we are done > - /// > - if (BootMode == BOOT_ON_S3_RESUME) { > - return EFI_SUCCESS; > - } > - > - TestPointMemoryDiscoveredDmaProtectionEnabled (); > - > - if (PcdGetBool (PcdStopAfterMemInit)) { > - CpuDeadLoop (); > - } > - > - return Status; > -} > - > - > -/** > - This function handles PlatformInit task after PeiReadOnlyVariable2 PPI > produced > - > - @param[in] PeiServices Pointer to PEI Services Table. > - > - @retval EFI_SUCCESS The function completes successfully > - @retval others > -**/ > -EFI_STATUS > -EFIAPI > -PlatformInitPreMem ( > - IN CONST EFI_PEI_SERVICES **PeiServices > - ) > -{ > - EFI_STATUS Status; > - EFI_BOOT_MODE BootMode; > - > - // > - // Start board detection > - // > - BoardDetect (); > - > - BoardDebugInit (); > - > - TestPointDebugInitDone (); > - > - if (PcdGetBool (PcdStopAfterDebugInit)) { > - CpuDeadLoop (); > - } > - > - BootMode = BoardBootModeDetect (); > - Status = PeiServicesSetBootMode (BootMode); > - ASSERT_EFI_ERROR (Status); > - if (BootMode == BOOT_IN_RECOVERY_MODE) { > - Status = PeiServicesInstallPpi (&mPpiListRecoveryBootMode); > - } > - /// > - /// Signal possible dependent modules that there has been a > - /// final boot mode determination, it is used to build BIST > - /// Hob for Dxe use. > - /// > - Status = PeiServicesInstallPpi (&mPpiBootMode); > - ASSERT_EFI_ERROR (Status); > - > - BuildMemoryTypeInformation (); > - > - if (!PcdGetBool(PcdFspWrapperBootMode)) { > - Status = PeiServicesInstallPpi (mMemPpiList); > - ASSERT_EFI_ERROR (Status); > - } > - > - Status = BoardInitBeforeMemoryInit (); > - ASSERT_EFI_ERROR (Status); > - > - return Status; > -} > - > - > -/** > - Platform Init before memory PEI module entry point > - > - @param[in] FileHandle Not used. > - @param[in] PeiServices General purpose services available to > every > PEIM. > - > - @retval EFI_SUCCESS The function completes successfully > - @retval EFI_OUT_OF_RESOURCES Insufficient resources to create > database > -**/ > -EFI_STATUS > -EFIAPI > -PlatformInitPreMemEntryPoint ( > - IN EFI_PEI_FILE_HANDLE FileHandle, > - IN CONST EFI_PEI_SERVICES **PeiServices > - ) > -{ > - EFI_STATUS Status; > - > - Status = PlatformInitPreMem (PeiServices); > - > - /// > - /// After code reorangized, memorycallback will run because the PPI is > already > - /// installed when code run to here, it is supposed that the > InstallEfiMemory is > - /// done before. > - /// > - Status = PeiServicesNotifyPpi (&mMemDiscoveredNotifyList); > - > - return Status; > -} > diff --git > a/Platform/Intel/KabylakeOpenBoardPkg/GalagoPro3/OpenBoardPkg.dsc > b/Platform/Intel/KabylakeOpenBoardPkg/GalagoPro3/OpenBoardPkg.dsc > index f59248bba4..d1384d9773 100644 > --- a/Platform/Intel/KabylakeOpenBoardPkg/GalagoPro3/OpenBoardPkg.dsc > +++ > b/Platform/Intel/KabylakeOpenBoardPkg/GalagoPro3/OpenBoardPkg.dsc > @@ -159,6 +159,7 @@ > ####################################### > > DebugLib|MdeModulePkg/Library/PeiDxeDebugLibReportStatusCode/PeiDx > eDebugLibReportStatusCode.inf > > SerialPortLib|MdePkg/Library/BaseSerialPortLibNull/BaseSerialPortLibNull.in > f > + > + > SetCacheLib|$(PLATFORM_PACKAGE)/Library/SetCacheLib/SetCacheLibNull. > in > + f > > ####################################### > # Platform Package > @@ -260,7 +261,7 @@ > # Platform Package > ####################################### > $(PLATFORM_PACKAGE)/PlatformInit/ReportFv/ReportFvPei.inf > - > $(PROJECT)/Override/Platform/Intel/MinPlatformPkg/PlatformInit/PlatformI > nitPei/PlatformInitPreMem.inf { > + > + > $(PLATFORM_PACKAGE)/PlatformInit/PlatformInitPei/PlatformInitPreMem.i > n > + f { > <LibraryClasses> > !if gKabylakeOpenBoardPkgTokenSpaceGuid.PcdMultiBoardSupport == > FALSE > > BoardInitLib|$(PROJECT)/Library/BoardInitLib/PeiBoardInitPreMemLib.inf > diff --git > a/Platform/Intel/KabylakeOpenBoardPkg/GalagoPro3/OpenBoardPkg.fdf > b/Platform/Intel/KabylakeOpenBoardPkg/GalagoPro3/OpenBoardPkg.fdf > index 80efab1aad..6827019c25 100644 > --- a/Platform/Intel/KabylakeOpenBoardPkg/GalagoPro3/OpenBoardPkg.fdf > +++ > b/Platform/Intel/KabylakeOpenBoardPkg/GalagoPro3/OpenBoardPkg.fdf > @@ -237,7 +237,7 @@ INF MdeModulePkg/Core/Pei/PeiMain.inf !include > $(PLATFORM_PACKAGE)/Include/Fdf/CorePreMemoryInclude.fdf > > INF $(PLATFORM_PACKAGE)/PlatformInit/ReportFv/ReportFvPei.inf > -INF > $(PROJECT)/Override/Platform/Intel/MinPlatformPkg/PlatformInit/PlatformI > nitPei/PlatformInitPreMem.inf > +INF > +$(PLATFORM_PACKAGE)/PlatformInit/PlatformInitPei/PlatformInitPreMem > .inf > INF IntelFsp2WrapperPkg/FspmWrapperPeim/FspmWrapperPeim.inf > INF > $(PLATFORM_PACKAGE)/PlatformInit/SiliconPolicyPei/SiliconPolicyPeiPreMe > m.inf > INF $(PLATFORM_BOARD_PACKAGE)/BiosInfo/BiosInfo.inf > diff --git > a/Platform/Intel/KabylakeOpenBoardPkg/GalagoPro3/Override/Platform/In > tel/MinPlatformPkg/PlatformInit/PlatformInitPei/PlatformInitPreMem.inf > b/Platform/Intel/KabylakeOpenBoardPkg/GalagoPro3/Override/Platform/In > tel/MinPlatformPkg/PlatformInit/PlatformInitPei/PlatformInitPreMem.inf > deleted file mode 100644 > index 76dd67d1a8..0000000000 > --- > a/Platform/Intel/KabylakeOpenBoardPkg/GalagoPro3/Override/Platform/In > tel/MinPlatformPkg/PlatformInit/PlatformInitPei/PlatformInitPreMem.inf > +++ /dev/null > @@ -1,67 +0,0 @@ > -### @file > -# Component information file for the Platform Init Pre-Memory PEI module. > -# > -# Copyright (c) 2019, Intel Corporation. All rights reserved.<BR> -# -# SPDX- > License-Identifier: BSD-2-Clause-Patent -# -### > - > -[Defines] > - INF_VERSION = 0x00010017 > - BASE_NAME = PlatformInitPreMem > - FILE_GUID = EEEE611D-F78F-4FB9-B868-55907F169280 > - VERSION_STRING = 1.0 > - MODULE_TYPE = PEIM > - ENTRY_POINT = PlatformInitPreMemEntryPoint > - > -[LibraryClasses] > - BaseMemoryLib > - BoardInitLib > - DebugLib > - HobLib > - IoLib > - MemoryAllocationLib > - MtrrLib > - PeimEntryPoint > - PeiServicesLib > - ReportFvLib > - TestPointCheckLib > - TimerLib > - > -[Packages] > - MinPlatformPkg/MinPlatformPkg.dec > - MdeModulePkg/MdeModulePkg.dec > - MdePkg/MdePkg.dec > - UefiCpuPkg/UefiCpuPkg.dec > - > -[Pcd] > - gMinPlatformPkgTokenSpaceGuid.PcdFspWrapperBootMode ## > CONSUMES > - gMinPlatformPkgTokenSpaceGuid.PcdFlashAreaBaseAddress ## > CONSUMES > - gMinPlatformPkgTokenSpaceGuid.PcdFlashAreaSize ## 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 > - > -[Ppis] > - gEfiPeiMemoryDiscoveredPpiGuid > - gEfiPeiMasterBootModePpiGuid ## PRODUCES > - gEfiPeiBootInRecoveryModePpiGuid ## PRODUCES > - gEfiPeiReadOnlyVariable2PpiGuid > - gPeiBaseMemoryTestPpiGuid > - gPeiPlatformMemorySizePpiGuid > - > -[Guids] > - gEfiMemoryTypeInformationGuid > - > -[Depex] > - gEfiPeiReadOnlyVariable2PpiGuid > diff --git > a/Platform/Intel/KabylakeOpenBoardPkg/KabylakeRvp3/OpenBoardPkg.dsc > b/Platform/Intel/KabylakeOpenBoardPkg/KabylakeRvp3/OpenBoardPkg.dsc > index 7e65eeda6f..6df8008215 100644 > --- > a/Platform/Intel/KabylakeOpenBoardPkg/KabylakeRvp3/OpenBoardPkg.dsc > +++ > b/Platform/Intel/KabylakeOpenBoardPkg/KabylakeRvp3/OpenBoardPkg.dsc > @@ -208,6 +208,7 @@ > !if $(TARGET) == DEBUG > > TestPointCheckLib|$(PLATFORM_PACKAGE)/Test/Library/TestPointCheckLib > /PeiTestPointCheckLib.inf > !endif > + > + > SetCacheLib|$(PLATFORM_PACKAGE)/Library/SetCacheLib/SetCacheLibNull. > in > + f > > ####################################### > # Board Package > -- > 2.13.3.windows.1
-=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#49717): https://edk2.groups.io/g/devel/message/49717 Mute This Topic: https://groups.io/mt/40049894/21656 Group Owner: [email protected] Unsubscribe: https://edk2.groups.io/g/devel/unsub [[email protected]] -=-=-=-=-=-=-=-=-=-=-=-
