UefiCpuPkg/PiSmmCpuDxeSmm: Get SMRAM info from gEfiSmmSmramMemoryGuid

MM can not use the SMM Access Protocol, so get SMRAM info from
gEfiSmmSmramMemoryGuid instead of via SMM Access Protocol for both SMM
and MM.

Signed-off-by: Jiaxin Wu <jiaxin.wu@intel.com>
Cc: Ray Ni <ray.ni@intel.com>
Cc: Rahul Kumar <rahul1.kumar@intel.com>
Cc: Gerd Hoffmann <kraxel@redhat.com>
Cc: Star Zeng <star.zeng@intel.com>
Cc: Dun Tan <dun.tan@intel.com>
Cc: Hongbin1 Zhang <hongbin1.zhang@intel.com>
Cc: Wei6 Xu <wei6.xu@intel.com>
Cc: Yuanhao Xie <yuanhao.xie@intel.com>
This commit is contained in:
Jiaxin Wu 2024-06-24 20:49:23 +08:00 committed by mergify[bot]
parent 8ccf7f65e5
commit c8a1295d3e
3 changed files with 16 additions and 28 deletions

View File

@ -1282,7 +1282,6 @@ CpuSmramRangeCompare (
} }
/** /**
Find out SMRAM information including SMRR base and SMRR size. Find out SMRAM information including SMRR base and SMRR size.
@param SmrrBase SMRR base @param SmrrBase SMRR base
@ -1295,35 +1294,24 @@ FindSmramInfo (
OUT UINT32 *SmrrSize OUT UINT32 *SmrrSize
) )
{ {
EFI_STATUS Status; VOID *GuidHob;
UINTN Size; EFI_SMRAM_HOB_DESCRIPTOR_BLOCK *DescriptorBlock;
EFI_SMM_ACCESS2_PROTOCOL *SmmAccess; EFI_SMRAM_DESCRIPTOR *CurrentSmramRange;
EFI_SMRAM_DESCRIPTOR *CurrentSmramRange; UINTN Index;
UINTN Index; UINT64 MaxSize;
UINT64 MaxSize; BOOLEAN Found;
BOOLEAN Found; EFI_SMRAM_DESCRIPTOR SmramDescriptor;
EFI_SMRAM_DESCRIPTOR SmramDescriptor;
// ASSERT (SmrrBase != NULL && SmrrSize != NULL);
// Get SMM Access Protocol
//
Status = gBS->LocateProtocol (&gEfiSmmAccess2ProtocolGuid, NULL, (VOID **)&SmmAccess);
ASSERT_EFI_ERROR (Status);
// //
// Get SMRAM information // Get SMRAM information
// //
Size = 0; GuidHob = GetFirstGuidHob (&gEfiSmmSmramMemoryGuid);
Status = SmmAccess->GetCapabilities (SmmAccess, &Size, NULL); ASSERT (GuidHob != NULL);
ASSERT (Status == EFI_BUFFER_TOO_SMALL); DescriptorBlock = (EFI_SMRAM_HOB_DESCRIPTOR_BLOCK *)GET_GUID_HOB_DATA (GuidHob);
mSmmCpuSmramRangeCount = DescriptorBlock->NumberOfSmmReservedRegions;
mSmmCpuSmramRanges = (EFI_SMRAM_DESCRIPTOR *)AllocatePool (Size); mSmmCpuSmramRanges = DescriptorBlock->Descriptor;
ASSERT (mSmmCpuSmramRanges != NULL);
Status = SmmAccess->GetCapabilities (SmmAccess, &Size, mSmmCpuSmramRanges);
ASSERT_EFI_ERROR (Status);
mSmmCpuSmramRangeCount = Size / sizeof (EFI_SMRAM_DESCRIPTOR);
// //
// Sort the mSmmCpuSmramRanges // Sort the mSmmCpuSmramRanges
@ -1373,7 +1361,7 @@ FindSmramInfo (
} }
} while (Found); } while (Found);
DEBUG ((DEBUG_INFO, "SMRR Base: 0x%x, SMRR Size: 0x%x\n", *SmrrBase, *SmrrSize)); DEBUG ((DEBUG_INFO, "%a: SMRR Base = 0x%x, SMRR Size = 0x%x\n", __func__, *SmrrBase, *SmrrSize));
} }
/** /**

View File

@ -16,7 +16,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
#include <Protocol/SmmConfiguration.h> #include <Protocol/SmmConfiguration.h>
#include <Protocol/SmmCpu.h> #include <Protocol/SmmCpu.h>
#include <Protocol/SmmAccess2.h>
#include <Protocol/SmmReadyToLock.h> #include <Protocol/SmmReadyToLock.h>
#include <Protocol/SmmCpuService.h> #include <Protocol/SmmCpuService.h>
#include <Protocol/SmmMemoryAttribute.h> #include <Protocol/SmmMemoryAttribute.h>
@ -25,6 +24,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
#include <Guid/AcpiS3Context.h> #include <Guid/AcpiS3Context.h>
#include <Guid/MemoryAttributesTable.h> #include <Guid/MemoryAttributesTable.h>
#include <Guid/PiSmmMemoryAttributesTable.h> #include <Guid/PiSmmMemoryAttributesTable.h>
#include <Guid/SmramMemoryReserve.h>
#include <Guid/SmmBaseHob.h> #include <Guid/SmmBaseHob.h>
#include <Guid/MpInformation2.h> #include <Guid/MpInformation2.h>

View File

@ -102,7 +102,6 @@
SmmCpuSyncLib SmmCpuSyncLib
[Protocols] [Protocols]
gEfiSmmAccess2ProtocolGuid ## CONSUMES
gEfiSmmConfigurationProtocolGuid ## PRODUCES gEfiSmmConfigurationProtocolGuid ## PRODUCES
gEfiSmmCpuProtocolGuid ## PRODUCES gEfiSmmCpuProtocolGuid ## PRODUCES
gEfiSmmReadyToLockProtocolGuid ## NOTIFY gEfiSmmReadyToLockProtocolGuid ## NOTIFY
@ -118,6 +117,7 @@
gEfiMemoryAttributesTableGuid ## CONSUMES ## SystemTable gEfiMemoryAttributesTableGuid ## CONSUMES ## SystemTable
gSmmBaseHobGuid ## CONSUMES gSmmBaseHobGuid ## CONSUMES
gMpInformation2HobGuid ## CONSUMES # Assume the HOB must has been created gMpInformation2HobGuid ## CONSUMES # Assume the HOB must has been created
gEfiSmmSmramMemoryGuid
[FeaturePcd] [FeaturePcd]
gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmDebug ## CONSUMES gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmDebug ## CONSUMES