public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Chiu, Chasel" <chasel.chiu@intel.com>
To: devel@edk2.groups.io
Cc: Michael Kubacki <michael.a.kubacki@intel.com>,
	Nate DeSimone <nathaniel.l.desimone@intel.com>,
	Liming Gao <liming.gao@intel.com>,
	Jeremy Soller <jeremy@system76.com>
Subject: [edk2-platforms: PATCH v3 3/6] KabylakeOpenBoardPkg: Add SetCacheMtrrLib library class.
Date: Thu, 31 Oct 2019 18:28:14 +0800	[thread overview]
Message-ID: <20191031102817.17096-4-chasel.chiu@intel.com> (raw)
In-Reply-To: <20191031102817.17096-1-chasel.chiu@intel.com>

REF: https://bugzilla.tianocore.org/show_bug.cgi?id=2314

Kabylake boards are relying on FSP to configure MTRRs so
they can include SetCacheMtrrLibNull.

Test: internal platform can boot with FSP API and Dispatch modes.

Cc: Michael Kubacki <michael.a.kubacki@intel.com>
Cc: Nate DeSimone <nathaniel.l.desimone@intel.com>
Cc: Liming Gao <liming.gao@intel.com>
Cc: Jeremy Soller <jeremy@system76.com>
Signed-off-by: Chasel Chiu <chasel.chiu@intel.com>
---
 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/Intel/MinPlatformPkg/PlatformInit/PlatformInitPei/PlatformInitPreMem.c b/Platform/Intel/KabylakeOpenBoardPkg/GalagoPro3/Override/Platform/Intel/MinPlatformPkg/PlatformInit/PlatformInitPei/PlatformInitPreMem.c
deleted file mode 100644
index b784026c1b..0000000000
--- a/Platform/Intel/KabylakeOpenBoardPkg/GalagoPro3/Override/Platform/Intel/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,mDefaultMemoryTypeInformation[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..000cf2be4c 100644
--- a/Platform/Intel/KabylakeOpenBoardPkg/GalagoPro3/OpenBoardPkg.dsc
+++ b/Platform/Intel/KabylakeOpenBoardPkg/GalagoPro3/OpenBoardPkg.dsc
@@ -159,6 +159,7 @@
   #######################################
   DebugLib|MdeModulePkg/Library/PeiDxeDebugLibReportStatusCode/PeiDxeDebugLibReportStatusCode.inf
   SerialPortLib|MdePkg/Library/BaseSerialPortLibNull/BaseSerialPortLibNull.inf
+  SetCacheMtrrLib|$(PLATFORM_PACKAGE)/Library/SetCacheMtrrLib/SetCacheMtrrLibNull.inf
 
   #######################################
   # Platform Package
@@ -260,7 +261,7 @@
   # Platform Package
   #######################################
   $(PLATFORM_PACKAGE)/PlatformInit/ReportFv/ReportFvPei.inf
-  $(PROJECT)/Override/Platform/Intel/MinPlatformPkg/PlatformInit/PlatformInitPei/PlatformInitPreMem.inf {
+  $(PLATFORM_PACKAGE)/PlatformInit/PlatformInitPei/PlatformInitPreMem.inf {
     <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/PlatformInitPei/PlatformInitPreMem.inf
+INF $(PLATFORM_PACKAGE)/PlatformInit/PlatformInitPei/PlatformInitPreMem.inf
 INF IntelFsp2WrapperPkg/FspmWrapperPeim/FspmWrapperPeim.inf
 INF $(PLATFORM_PACKAGE)/PlatformInit/SiliconPolicyPei/SiliconPolicyPeiPreMem.inf
 INF $(PLATFORM_BOARD_PACKAGE)/BiosInfo/BiosInfo.inf
diff --git a/Platform/Intel/KabylakeOpenBoardPkg/GalagoPro3/Override/Platform/Intel/MinPlatformPkg/PlatformInit/PlatformInitPei/PlatformInitPreMem.inf b/Platform/Intel/KabylakeOpenBoardPkg/GalagoPro3/Override/Platform/Intel/MinPlatformPkg/PlatformInit/PlatformInitPei/PlatformInitPreMem.inf
deleted file mode 100644
index 76dd67d1a8..0000000000
--- a/Platform/Intel/KabylakeOpenBoardPkg/GalagoPro3/Override/Platform/Intel/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..8178604554 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
+  SetCacheMtrrLib|$(PLATFORM_PACKAGE)/Library/SetCacheMtrrLib/SetCacheMtrrLibNull.inf
 
   #######################################
   # Board Package
-- 
2.13.3.windows.1


  parent reply	other threads:[~2019-10-31 10:28 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-10-31 10:28 [edk2-platforms: PATCH v3 0/6] Add SetCacheMtrrLib library class Chiu, Chasel
2019-10-31 10:28 ` [edk2-platforms: PATCH v3 1/6] MinPlatformPkg: " Chiu, Chasel
2019-10-31 17:02   ` [edk2-devel] " Kubacki, Michael A
2019-11-01  1:24     ` Chiu, Chasel
2019-11-01 18:29   ` Nate DeSimone
2019-10-31 10:28 ` [edk2-platforms: PATCH v3 2/6] " Chiu, Chasel
2019-11-01 18:29   ` [edk2-devel] " Nate DeSimone
2019-10-31 10:28 ` Chiu, Chasel [this message]
2019-11-01 18:29   ` [edk2-devel] [edk2-platforms: PATCH v3 3/6] KabylakeOpenBoardPkg: " Nate DeSimone
2019-10-31 10:28 ` [edk2-platforms: PATCH v3 4/6] WhiskeylakeOpenBoardPkg: " Chiu, Chasel
2019-11-01 18:29   ` [edk2-devel] " Nate DeSimone
2019-10-31 10:28 ` [edk2-platforms: PATCH v3 5/6] PurleyOpenBoardPkg/BoardMtOlympus: " Chiu, Chasel
2019-11-01 18:29   ` [edk2-devel] " Nate DeSimone
2019-10-31 10:28 ` [edk2-platforms: PATCH v3 6/6] SimicsOpenBoardPkg/BoardX58Ich10: " Chiu, Chasel
2019-10-31 19:42   ` Agyeman, Prince
2019-11-01 18:29   ` [edk2-devel] " Nate DeSimone

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20191031102817.17096-4-chasel.chiu@intel.com \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox