[edk2-devel] [PATCH 5/5] SimicsX58SktPkg: Remove unused Smm related modules
Ni, Ray
ray.ni at intel.com
Tue Apr 25 13:58:07 UTC 2023
Reviewed-by: Ray Ni <ray.ni at intel.com>
> -----Original Message-----
> From: Liu, Zhiguang <zhiguang.liu at intel.com>
> Sent: Tuesday, April 25, 2023 3:03 PM
> To: devel at edk2.groups.io
> Cc: Liu, Zhiguang <zhiguang.liu at intel.com>; Desimone, Nathaniel L
> <nathaniel.l.desimone at intel.com>; Ni, Ray <ray.ni at intel.com>
> Subject: [PATCH 5/5] SimicsX58SktPkg: Remove unused Smm related
> modules
>
> In last two commit, I replace the two SMM related modules, and now
> no platform will use these two moduels. Remove them
>
> Cc: Nate DeSimone <nathaniel.l.desimone at intel.com>
> Cc: Ray Ni <ray.ni at intel.com>
> Signed-off-by: Zhiguang Liu <zhiguang.liu at intel.com>
> ---
> .../Smm/Access/SmmAccess2Dxe.c | 148 --------
> .../Smm/Access/SmmAccess2Dxe.inf | 54 ---
> .../SimicsX58SktPkg/Smm/Access/SmmAccessPei.c | 338 ------------------
> .../Smm/Access/SmmAccessPei.inf | 62 ----
> .../Smm/Access/SmramInternal.c | 200 -----------
> .../Smm/Access/SmramInternal.h | 82 -----
> 6 files changed, 884 deletions(-)
> delete mode 100644
> Silicon/Intel/SimicsX58SktPkg/Smm/Access/SmmAccess2Dxe.c
> delete mode 100644
> Silicon/Intel/SimicsX58SktPkg/Smm/Access/SmmAccess2Dxe.inf
> delete mode 100644
> Silicon/Intel/SimicsX58SktPkg/Smm/Access/SmmAccessPei.c
> delete mode 100644
> Silicon/Intel/SimicsX58SktPkg/Smm/Access/SmmAccessPei.inf
> delete mode 100644
> Silicon/Intel/SimicsX58SktPkg/Smm/Access/SmramInternal.c
> delete mode 100644
> Silicon/Intel/SimicsX58SktPkg/Smm/Access/SmramInternal.h
>
> diff --git a/Silicon/Intel/SimicsX58SktPkg/Smm/Access/SmmAccess2Dxe.c
> b/Silicon/Intel/SimicsX58SktPkg/Smm/Access/SmmAccess2Dxe.c
> deleted file mode 100644
> index 5d3b2c14aa..0000000000
> --- a/Silicon/Intel/SimicsX58SktPkg/Smm/Access/SmmAccess2Dxe.c
> +++ /dev/null
> @@ -1,148 +0,0 @@
> -/** @file
> - A DXE_DRIVER providing SMRAM access by producing
> EFI_SMM_ACCESS2_PROTOCOL.
> -
> - X58 TSEG is expected to have been verified and set up by the
> SmmAccessPei
> - driver.
> -
> - Copyright (C) 2013, 2015, Red Hat, Inc.<BR>
> - Copyright (c) 2009 - 2019, Intel Corporation. All rights reserved.<BR>
> -
> - SPDX-License-Identifier: BSD-2-Clause-Patent
> -**/
> -
> -#include <Library/DebugLib.h>
> -#include <Library/PcdLib.h>
> -#include <Library/UefiBootServicesTableLib.h>
> -#include <Protocol/SmmAccess2.h>
> -
> -#include "SmramInternal.h"
> -
> -/**
> - Opens the SMRAM area to be accessible by a boot-service driver.
> -
> - This function "opens" SMRAM so that it is visible while not inside of SMM.
> - The function should return EFI_UNSUPPORTED if the hardware does not
> support
> - hiding of SMRAM. The function should return EFI_DEVICE_ERROR if the
> SMRAM
> - configuration is locked.
> -
> - @param[in] This The EFI_SMM_ACCESS2_PROTOCOL instance.
> -
> - @retval EFI_SUCCESS The operation was successful.
> - @retval EFI_UNSUPPORTED The system does not support opening and
> closing of
> - SMRAM.
> - @retval EFI_DEVICE_ERROR SMRAM cannot be opened, perhaps because
> it is
> - locked.
> -**/
> -STATIC
> -EFI_STATUS
> -EFIAPI
> -SmmAccess2DxeOpen (
> - IN EFI_SMM_ACCESS2_PROTOCOL *This
> - )
> -{
> - return SmramAccessOpen (&This->LockState, &This->OpenState);
> -}
> -
> -/**
> - Inhibits access to the SMRAM.
> -
> - This function "closes" SMRAM so that it is not visible while outside of SMM.
> - The function should return EFI_UNSUPPORTED if the hardware does not
> support
> - hiding of SMRAM.
> -
> - @param[in] This The EFI_SMM_ACCESS2_PROTOCOL instance.
> -
> - @retval EFI_SUCCESS The operation was successful.
> - @retval EFI_UNSUPPORTED The system does not support opening and
> closing of
> - SMRAM.
> - @retval EFI_DEVICE_ERROR SMRAM cannot be closed.
> -**/
> -STATIC
> -EFI_STATUS
> -EFIAPI
> -SmmAccess2DxeClose (
> - IN EFI_SMM_ACCESS2_PROTOCOL *This
> - )
> -{
> - return SmramAccessClose (&This->LockState, &This->OpenState);
> -}
> -
> -/**
> - Inhibits access to the SMRAM.
> -
> - This function prohibits access to the SMRAM region. This function is usually
> - implemented such that it is a write-once operation.
> -
> - @param[in] This The EFI_SMM_ACCESS2_PROTOCOL instance.
> -
> - @retval EFI_SUCCESS The device was successfully locked.
> - @retval EFI_UNSUPPORTED The system does not support locking of
> SMRAM.
> -**/
> -STATIC
> -EFI_STATUS
> -EFIAPI
> -SmmAccess2DxeLock (
> - IN EFI_SMM_ACCESS2_PROTOCOL *This
> - )
> -{
> - return SmramAccessLock (&This->LockState, &This->OpenState);
> -}
> -
> -/**
> - Queries the memory controller for the possible regions that will support
> - SMRAM.
> -
> - @param[in] This The EFI_SMM_ACCESS2_PROTOCOL instance.
> - @param[in,out] SmramMapSize A pointer to the size, in bytes, of the
> - SmramMemoryMap buffer.
> - @param[in,out] SmramMap A pointer to the buffer in which firmware
> - places the current memory map.
> -
> - @retval EFI_SUCCESS The chipset supported the given resource.
> - @retval EFI_BUFFER_TOO_SMALL The SmramMap parameter was too
> small. The
> - current buffer size needed to hold the memory
> - map is returned in SmramMapSize.
> -**/
> -STATIC
> -EFI_STATUS
> -EFIAPI
> -SmmAccess2DxeGetCapabilities (
> - IN CONST EFI_SMM_ACCESS2_PROTOCOL *This,
> - IN OUT UINTN *SmramMapSize,
> - IN OUT EFI_SMRAM_DESCRIPTOR *SmramMap
> - )
> -{
> - return SmramAccessGetCapabilities (This->LockState, This->OpenState,
> - SmramMapSize, SmramMap);
> -}
> -
> -//
> -// LockState and OpenState will be filled in by the entry point.
> -//
> -STATIC EFI_SMM_ACCESS2_PROTOCOL mAccess2 = {
> - &SmmAccess2DxeOpen,
> - &SmmAccess2DxeClose,
> - &SmmAccess2DxeLock,
> - &SmmAccess2DxeGetCapabilities
> -};
> -
> -//
> -// Entry point of this driver.
> -//
> -EFI_STATUS
> -EFIAPI
> -SmmAccess2DxeEntryPoint (
> - IN EFI_HANDLE ImageHandle,
> - IN EFI_SYSTEM_TABLE *SystemTable
> - )
> -{
> - //
> - // This module should only be included if SMRAM support is required.
> - //
> - ASSERT (FeaturePcdGet (PcdSmmSmramRequire));
> -
> - GetStates (&mAccess2.LockState, &mAccess2.OpenState);
> - return gBS->InstallMultipleProtocolInterfaces (&ImageHandle,
> - &gEfiSmmAccess2ProtocolGuid, &mAccess2,
> - NULL);
> -}
> diff --git a/Silicon/Intel/SimicsX58SktPkg/Smm/Access/SmmAccess2Dxe.inf
> b/Silicon/Intel/SimicsX58SktPkg/Smm/Access/SmmAccess2Dxe.inf
> deleted file mode 100644
> index eb8c8f93dd..0000000000
> --- a/Silicon/Intel/SimicsX58SktPkg/Smm/Access/SmmAccess2Dxe.inf
> +++ /dev/null
> @@ -1,54 +0,0 @@
> -## @file
> -# A DXE_DRIVER providing SMRAM access by producing
> EFI_SMM_ACCESS2_PROTOCOL.
> -#
> -# X58 TSEG is expected to have been verified and set up by the
> SmmAccessPei
> -# driver.
> -#
> -# Copyright (C) 2013, 2015, Red Hat, Inc.
> -# Copyright (C) 2019, Intel Corporation. All rights reserved.<BR>
> -#
> -# SPDX-License-Identifier: BSD-2-Clause-Patent
> -#
> -##
> -
> -[Defines]
> - INF_VERSION = 0x00010005
> - BASE_NAME = SmmAccess2Dxe
> - FILE_GUID = AC95AD3D-4366-44BF-9A62-E4B29D7A2206
> - MODULE_TYPE = DXE_DRIVER
> - VERSION_STRING = 1.0
> - PI_SPECIFICATION_VERSION = 0x00010400
> - ENTRY_POINT = SmmAccess2DxeEntryPoint
> -
> -#
> -# The following information is for reference only and not required by the
> build tools.
> -#
> -# VALID_ARCHITECTURES = IA32 X64
> -#
> -
> -[Sources]
> - SmmAccess2Dxe.c
> - SmramInternal.c
> - SmramInternal.h
> -
> -[Packages]
> - MdeModulePkg/MdeModulePkg.dec
> - MdePkg/MdePkg.dec
> - SimicsX58SktPkg/SktPkg.dec
> - SimicsIch10Pkg/Ich10Pkg.dec
> -
> -[LibraryClasses]
> - DebugLib
> - PcdLib
> - PciLib
> - UefiBootServicesTableLib
> - UefiDriverEntryPoint
> -
> -[Protocols]
> - gEfiSmmAccess2ProtocolGuid ## PRODUCES
> -
> -[FeaturePcd]
> - gSimicsX58PkgTokenSpaceGuid.PcdSmmSmramRequire
> -
> -[Depex]
> - TRUE
> diff --git a/Silicon/Intel/SimicsX58SktPkg/Smm/Access/SmmAccessPei.c
> b/Silicon/Intel/SimicsX58SktPkg/Smm/Access/SmmAccessPei.c
> deleted file mode 100644
> index d489cc7513..0000000000
> --- a/Silicon/Intel/SimicsX58SktPkg/Smm/Access/SmmAccessPei.c
> +++ /dev/null
> @@ -1,338 +0,0 @@
> -/** @file
> - A PEIM with the following responsibilities:
> -
> - - verify & configure the X58 TSEG in the entry point,
> - - provide SMRAM access by producing PEI_SMM_ACCESS_PPI,
> - - set aside the SMM_S3_RESUME_STATE object at the bottom of TSEG, and
> expose
> - it via the gEfiAcpiVariableGuid GUID HOB.
> -
> - This PEIM runs from RAM, so we can write to variables with static storage
> - duration.
> -
> - Copyright (C) 2013, 2015, Red Hat, Inc.<BR>
> - Copyright (c) 2010 - 2019, Intel Corporation. All rights reserved.<BR>
> -
> - SPDX-License-Identifier: BSD-2-Clause-Patent
> -**/
> -
> -#include <Guid/AcpiS3Context.h>
> -#include <Library/BaseLib.h>
> -#include <Library/BaseMemoryLib.h>
> -#include <Library/DebugLib.h>
> -#include <Library/HobLib.h>
> -#include <Library/IoLib.h>
> -#include <Library/PcdLib.h>
> -#include <Library/PciLib.h>
> -#include <Library/PeiServicesLib.h>
> -#include <Ppi/SmmAccess.h>
> -
> -#include <Register/X58Ich10.h>
> -#include "SmramInternal.h"
> -
> -//
> -// PEI_SMM_ACCESS_PPI implementation.
> -//
> -
> -/**
> - Opens the SMRAM area to be accessible by a PEIM driver.
> -
> - This function "opens" SMRAM so that it is visible while not inside of SMM.
> - The function should return EFI_UNSUPPORTED if the hardware does not
> support
> - hiding of SMRAM. The function should return EFI_DEVICE_ERROR if the
> SMRAM
> - configuration is locked.
> -
> - @param PeiServices General purpose services available to every
> - PEIM.
> - @param This The pointer to the SMM Access Interface.
> - @param DescriptorIndex The region of SMRAM to Open.
> -
> - @retval EFI_SUCCESS The region was successfully opened.
> - @retval EFI_DEVICE_ERROR The region could not be opened because
> locked
> - by chipset.
> - @retval EFI_INVALID_PARAMETER The descriptor index was out of bounds.
> -
> -**/
> -STATIC
> -EFI_STATUS
> -EFIAPI
> -SmmAccessPeiOpen (
> - IN EFI_PEI_SERVICES **PeiServices,
> - IN PEI_SMM_ACCESS_PPI *This,
> - IN UINTN DescriptorIndex
> - )
> -{
> - if (DescriptorIndex >= DescIdxCount) {
> - return EFI_INVALID_PARAMETER;
> - }
> -
> - //
> - // According to current practice, DescriptorIndex is not considered at all,
> - // beyond validating it.
> - //
> - return SmramAccessOpen (&This->LockState, &This->OpenState);
> -}
> -
> -/**
> - Inhibits access to the SMRAM.
> -
> - This function "closes" SMRAM so that it is not visible while outside of SMM.
> - The function should return EFI_UNSUPPORTED if the hardware does not
> support
> - hiding of SMRAM.
> -
> - @param PeiServices General purpose services available to every
> - PEIM.
> - @param This The pointer to the SMM Access Interface.
> - @param DescriptorIndex The region of SMRAM to Close.
> -
> - @retval EFI_SUCCESS The region was successfully closed.
> - @retval EFI_DEVICE_ERROR The region could not be closed because
> - locked by chipset.
> - @retval EFI_INVALID_PARAMETER The descriptor index was out of
> bounds.
> -
> -**/
> -STATIC
> -EFI_STATUS
> -EFIAPI
> -SmmAccessPeiClose (
> - IN EFI_PEI_SERVICES **PeiServices,
> - IN PEI_SMM_ACCESS_PPI *This,
> - IN UINTN DescriptorIndex
> - )
> -{
> - if (DescriptorIndex >= DescIdxCount) {
> - return EFI_INVALID_PARAMETER;
> - }
> -
> - //
> - // According to current practice, DescriptorIndex is not considered at all,
> - // beyond validating it.
> - //
> - return SmramAccessClose (&This->LockState, &This->OpenState);
> -}
> -
> -/**
> - Inhibits access to the SMRAM.
> -
> - This function prohibits access to the SMRAM region. This function is usually
> - implemented such that it is a write-once operation.
> -
> - @param PeiServices General purpose services available to every
> - PEIM.
> - @param This The pointer to the SMM Access Interface.
> - @param DescriptorIndex The region of SMRAM to Close.
> -
> - @retval EFI_SUCCESS The region was successfully locked.
> - @retval EFI_DEVICE_ERROR The region could not be locked because at
> - least one range is still open.
> - @retval EFI_INVALID_PARAMETER The descriptor index was out of bounds.
> -
> -**/
> -STATIC
> -EFI_STATUS
> -EFIAPI
> -SmmAccessPeiLock (
> - IN EFI_PEI_SERVICES **PeiServices,
> - IN PEI_SMM_ACCESS_PPI *This,
> - IN UINTN DescriptorIndex
> - )
> -{
> - if (DescriptorIndex >= DescIdxCount) {
> - return EFI_INVALID_PARAMETER;
> - }
> -
> - //
> - // According to current practice, DescriptorIndex is not considered at all,
> - // beyond validating it.
> - //
> - return SmramAccessLock (&This->LockState, &This->OpenState);
> -}
> -
> -/**
> - Queries the memory controller for the possible regions that will support
> - SMRAM.
> -
> - @param PeiServices General purpose services available to every
> - PEIM.
> - @param This The pointer to the SmmAccessPpi Interface.
> - @param SmramMapSize The pointer to the variable containing size of
> - the buffer to contain the description
> - information.
> - @param SmramMap The buffer containing the data describing the
> - Smram region descriptors.
> -
> - @retval EFI_BUFFER_TOO_SMALL The user did not provide a sufficient
> buffer.
> - @retval EFI_SUCCESS The user provided a sufficiently-sized buffer.
> -
> -**/
> -STATIC
> -EFI_STATUS
> -EFIAPI
> -SmmAccessPeiGetCapabilities (
> - IN EFI_PEI_SERVICES **PeiServices,
> - IN PEI_SMM_ACCESS_PPI *This,
> - IN OUT UINTN *SmramMapSize,
> - IN OUT EFI_SMRAM_DESCRIPTOR *SmramMap
> - )
> -{
> - return SmramAccessGetCapabilities (This->LockState, This->OpenState,
> SmramMapSize, SmramMap);
> -}
> -
> -//
> -// LockState and OpenState will be filled in by the entry point.
> -//
> -STATIC PEI_SMM_ACCESS_PPI mAccess = {
> - &SmmAccessPeiOpen,
> - &SmmAccessPeiClose,
> - &SmmAccessPeiLock,
> - &SmmAccessPeiGetCapabilities
> -};
> -
> -
> -STATIC EFI_PEI_PPI_DESCRIPTOR mPpiList[] = {
> - {
> - EFI_PEI_PPI_DESCRIPTOR_PPI |
> EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST,
> - &gPeiSmmAccessPpiGuid, &mAccess
> - }
> -};
> -
> -
> -//
> -// Utility functions.
> -//
> -STATIC
> -UINT8
> -CmosRead8 (
> - IN UINT8 Index
> - )
> -{
> - IoWrite8 (0x70, Index);
> - return IoRead8 (0x71);
> -}
> -
> -STATIC
> -UINT32
> -GetSystemMemorySizeBelow4gb (
> - VOID
> - )
> -{
> - UINT32 Cmos0x34;
> - UINT32 Cmos0x35;
> -
> - Cmos0x34 = CmosRead8 (0x34);
> - Cmos0x35 = CmosRead8 (0x35);
> -
> - return ((Cmos0x35 << 8 | Cmos0x34) << 16) + SIZE_16MB;
> -}
> -
> -
> -//
> -// Entry point of this driver.
> -//
> -EFI_STATUS
> -EFIAPI
> -SmmAccessPeiEntryPoint (
> - IN EFI_PEI_FILE_HANDLE FileHandle,
> - IN CONST EFI_PEI_SERVICES **PeiServices
> - )
> -{
> - UINT16 HostBridgeDevId;
> - UINT32 EsmramcVal;
> - UINT32 TopOfLowRam, TopOfLowRamMb;
> - EFI_STATUS Status;
> - UINTN SmramMapSize;
> - EFI_SMRAM_DESCRIPTOR SmramMap[DescIdxCount];
> -
> - //
> - // This module should only be included if SMRAM support is required.
> - //
> - ASSERT (FeaturePcdGet (PcdSmmSmramRequire));
> -
> - //
> - // Verify if we're running on a X58 machine type.
> - //
> - HostBridgeDevId = PciRead16 (SIMICS_HOSTBRIDGE_DID);
> - if (HostBridgeDevId != INTEL_ICH10_DEVICE_ID) {
> - DEBUG ((EFI_D_ERROR, "%a: no SMRAM with host bridge DID=0x%04x;
> only "
> - "DID=0x%04x (X58) is supported\n", __FUNCTION__, HostBridgeDevId,
> - INTEL_ICH10_DEVICE_ID));
> - goto WrongConfig;
> - }
> -
> - //
> - // Confirm if Simics supports SMRAM.
> - //
> - // With no support for it, the ESMRAMC (Extended System Management
> RAM
> - // Control) register reads as zero. If there is support, the cache-enable
> - // bits are hard-coded as 1 by Simics.
> - //
> -
> - TopOfLowRam = GetSystemMemorySizeBelow4gb ();
> - ASSERT ((TopOfLowRam & (SIZE_1MB - 1)) == 0);
> - TopOfLowRamMb = TopOfLowRam >> 20;
> - DEBUG((EFI_D_INFO, "TopOfLowRam =0x%x; TopOfLowRamMb =0x%x \n",
> TopOfLowRam, TopOfLowRamMb));
> -
> -
> - //
> - // Set Top of Low Usable DRAM.
> - //
> - PciWrite32 (DRAMC_REGISTER_X58(MCH_TOLUD), TopOfLowRam);
> - DEBUG((EFI_D_INFO, "MCH_TOLUD =0x%x; \n",
> PciRead32(DRAMC_REGISTER_X58(MCH_TOLUD))));
> -
> - //
> - // Set TSEG Memory Base.
> - //
> - EsmramcVal = (TopOfLowRamMb - FixedPcdGet8(PcdX58TsegMbytes)) <<
> MCH_TSEGMB_MB_SHIFT;
> - //
> - // Set TSEG size, and disable TSEG visibility outside of SMM. Note that the
> - // T_EN bit has inverse meaning; when T_EN is set, then TSEG visibility is
> - // *restricted* to SMM.
> - //
> - EsmramcVal &= ~(UINT32)MCH_ESMRAMC_TSEG_MASK;
> - EsmramcVal |= FixedPcdGet8 (PcdX58TsegMbytes) == 8 ?
> MCH_ESMRAMC_TSEG_8MB :
> - FixedPcdGet8 (PcdX58TsegMbytes) == 2 ?
> MCH_ESMRAMC_TSEG_2MB :
> - MCH_ESMRAMC_TSEG_1MB;
> - EsmramcVal |= MCH_ESMRAMC_T_EN;
> - PciWrite32(DRAMC_REGISTER_X58(MCH_TSEGMB), EsmramcVal);
> - DEBUG((EFI_D_INFO, "MCH_TSEGMB =0x%x; \n",
> PciRead32(DRAMC_REGISTER_X58(MCH_TSEGMB))));
> - DEBUG((EFI_D_INFO, "MCH_TSEGMB_1 =0x%x; MCH_TSEGMB_2
> =0x%x;\n", ((TopOfLowRamMb - FixedPcdGet8(PcdX58TsegMbytes)) <<
> MCH_TSEGMB_MB_SHIFT), EsmramcVal));
> -
> - //
> - // Create the GUID HOB and point it to the first SMRAM range.
> - //
> - GetStates (&mAccess.LockState, &mAccess.OpenState);
> - SmramMapSize = sizeof SmramMap;
> - Status = SmramAccessGetCapabilities (mAccess.LockState,
> mAccess.OpenState, &SmramMapSize, SmramMap);
> - ASSERT_EFI_ERROR (Status);
> -
> - DEBUG_CODE_BEGIN ();
> - {
> - UINTN Count;
> - UINTN Idx;
> -
> - Count = SmramMapSize / sizeof SmramMap[0];
> - DEBUG ((EFI_D_VERBOSE, "%a: SMRAM map follows, %d entries\n",
> __FUNCTION__, (INT32)Count));
> - DEBUG ((EFI_D_VERBOSE, "% 20a % 20a % 20a % 20a\n",
> "PhysicalStart(0x)",
> - "PhysicalSize(0x)", "CpuStart(0x)", "RegionState(0x)"));
> - for (Idx = 0; Idx < Count; ++Idx) {
> - DEBUG ((EFI_D_VERBOSE, "% 20Lx % 20Lx % 20Lx % 20Lx\n",
> - SmramMap[Idx].PhysicalStart, SmramMap[Idx].PhysicalSize,
> - SmramMap[Idx].CpuStart, SmramMap[Idx].RegionState));
> - }
> - }
> - DEBUG_CODE_END ();
> -
> - //
> - // We're done. The next step should succeed, but even if it fails, we can't
> - // roll back the above BuildGuidHob() allocation, because PEI doesn't
> support
> - // releasing memory.
> - //
> - return PeiServicesInstallPpi (mPpiList);
> -
> -WrongConfig:
> - //
> - // We really don't want to continue in this case.
> - //
> - ASSERT (FALSE);
> - CpuDeadLoop ();
> - return EFI_UNSUPPORTED;
> -}
> diff --git a/Silicon/Intel/SimicsX58SktPkg/Smm/Access/SmmAccessPei.inf
> b/Silicon/Intel/SimicsX58SktPkg/Smm/Access/SmmAccessPei.inf
> deleted file mode 100644
> index 3c71e64fe9..0000000000
> --- a/Silicon/Intel/SimicsX58SktPkg/Smm/Access/SmmAccessPei.inf
> +++ /dev/null
> @@ -1,62 +0,0 @@
> -## @file
> -# A PEIM with the following responsibilities:
> -#
> -# - provide SMRAM access by producing PEI_SMM_ACCESS_PPI,
> -# - verify & configure the X58 TSEG in the entry point,
> -# - set aside the SMM_S3_RESUME_STATE object at the bottom of TSEG,
> and expose
> -# it via the gEfiAcpiVariableGuid GUIDed HOB.
> -#
> -# Copyright (C) 2013, 2015, Red Hat, Inc.
> -# Copyright (C) 2019, Intel Corporation. All rights reserved.<BR>
> -#
> -# SPDX-License-Identifier: BSD-2-Clause-Patent
> -#
> -##
> -
> -[Defines]
> - INF_VERSION = 0x00010005
> - BASE_NAME = SmmAccessPei
> - FILE_GUID = 6C0E75B4-B0B9-44D1-8210-3377D7B4E066
> - MODULE_TYPE = PEIM
> - VERSION_STRING = 1.0
> - ENTRY_POINT = SmmAccessPeiEntryPoint
> -
> -#
> -# The following information is for reference only and not required by the
> build tools.
> -#
> -# VALID_ARCHITECTURES = IA32 X64
> -#
> -
> -[Sources]
> - SmmAccessPei.c
> - SmramInternal.c
> - SmramInternal.h
> -
> -[Packages]
> - MdeModulePkg/MdeModulePkg.dec
> - MdePkg/MdePkg.dec
> - SimicsX58SktPkg/SktPkg.dec
> - SimicsIch10Pkg/Ich10Pkg.dec
> -
> -[LibraryClasses]
> - BaseLib
> - BaseMemoryLib
> - DebugLib
> - HobLib
> - IoLib
> - PcdLib
> - PciLib
> - PeiServicesLib
> - PeimEntryPoint
> -
> -[FeaturePcd]
> - gSimicsX58PkgTokenSpaceGuid.PcdSmmSmramRequire
> -
> -[FixedPcd]
> - gSimicsX58PkgTokenSpaceGuid.PcdX58TsegMbytes
> -
> -[Ppis]
> - gPeiSmmAccessPpiGuid ## PRODUCES
> -
> -[Depex]
> - gEfiPeiMemoryDiscoveredPpiGuid
> diff --git a/Silicon/Intel/SimicsX58SktPkg/Smm/Access/SmramInternal.c
> b/Silicon/Intel/SimicsX58SktPkg/Smm/Access/SmramInternal.c
> deleted file mode 100644
> index 4b5a92f602..0000000000
> --- a/Silicon/Intel/SimicsX58SktPkg/Smm/Access/SmramInternal.c
> +++ /dev/null
> @@ -1,200 +0,0 @@
> -/** @file
> - Functions and types shared by the SMM accessor PEI and DXE modules.
> -
> - Copyright (C) 2015, Red Hat, Inc.
> - Copyright (C) 2019, Intel Corporation. All rights reserved.<BR>
> -
> - SPDX-License-Identifier: BSD-2-Clause-Patent
> -**/
> -
> -#include <Guid/AcpiS3Context.h>
> -#include <Register/X58Ich10.h>
> -#include <Library/DebugLib.h>
> -#include <Library/PciLib.h>
> -
> -#include "SmramInternal.h"
> -
> -BOOLEAN gLockState;
> -BOOLEAN gOpenState;
> -
> -/**
> - Read the MCH_SMRAM and ESMRAMC registers, and update the LockState
> and
> - OpenState fields in the PEI_SMM_ACCESS_PPI /
> EFI_SMM_ACCESS2_PROTOCOL object,
> - from the D_LCK and T_EN bits.
> -
> - PEI_SMM_ACCESS_PPI and EFI_SMM_ACCESS2_PROTOCOL member
> functions can rely on
> - the LockState and OpenState fields being up-to-date on entry, and they
> need
> - to restore the same invariant on exit, if they touch the bits in question.
> -
> - @param[out] LockState Reflects the D_LCK bit on output; TRUE iff SMRAM
> is
> - locked.
> - @param[out] OpenState Reflects the inverse of the T_EN bit on output;
> TRUE
> - iff SMRAM is open.
> -**/
> -VOID
> -GetStates (
> - OUT BOOLEAN *LockState,
> - OUT BOOLEAN *OpenState
> -)
> -{
> - UINT8 EsmramcVal;
> -
> - EsmramcVal = PciRead8(DRAMC_REGISTER_X58(MCH_TSEGMB));
> -
> - *OpenState = !(EsmramcVal & MCH_ESMRAMC_T_EN);
> - *LockState = !*OpenState;
> -
> - *OpenState = gOpenState;
> - *LockState = gLockState;
> -}
> -
> -//
> -// The functions below follow the PEI_SMM_ACCESS_PPI and
> -// EFI_SMM_ACCESS2_PROTOCOL member declarations. The PeiServices
> and This
> -// pointers are removed (TSEG doesn't depend on them), and so is the
> -// DescriptorIndex parameter (TSEG doesn't support range-wise locking).
> -//
> -// The LockState and OpenState members that are common to both
> -// PEI_SMM_ACCESS_PPI and EFI_SMM_ACCESS2_PROTOCOL are taken
> and updated in
> -// isolation from the rest of the (non-shared) members.
> -//
> -
> -EFI_STATUS
> -SmramAccessOpen (
> - OUT BOOLEAN *LockState,
> - OUT BOOLEAN *OpenState
> - )
> -{
> -
> - //
> - // Open TSEG by clearing T_EN.
> - //
> - PciAnd8(DRAMC_REGISTER_X58(MCH_TSEGMB),
> - (UINT8)((~(UINT32)MCH_ESMRAMC_T_EN) & 0xff));
> -
> - gOpenState = TRUE;
> - gLockState = !gOpenState;
> -
> - GetStates (LockState, OpenState);
> - if (!*OpenState) {
> - return EFI_DEVICE_ERROR;
> - }
> - return EFI_SUCCESS;
> -}
> -
> -EFI_STATUS
> -SmramAccessClose (
> - OUT BOOLEAN *LockState,
> - OUT BOOLEAN *OpenState
> - )
> -{
> - //
> - // Close TSEG by setting T_EN.
> - //
> - PciOr8(DRAMC_REGISTER_X58(MCH_TSEGMB), MCH_ESMRAMC_T_EN);
> -
> - gOpenState = FALSE;
> - gLockState = !gOpenState;
> -
> - GetStates (LockState, OpenState);
> - if (*OpenState) {
> - return EFI_DEVICE_ERROR;
> - }
> - return EFI_SUCCESS;
> -}
> -
> -EFI_STATUS
> -SmramAccessLock (
> - OUT BOOLEAN *LockState,
> - IN OUT BOOLEAN *OpenState
> - )
> -{
> - if (*OpenState) {
> - return EFI_DEVICE_ERROR;
> - }
> -
> - //
> - // Close & lock TSEG by setting T_EN and D_LCK.
> - //
> - PciOr8 (DRAMC_REGISTER_X58(MCH_TSEGMB), MCH_ESMRAMC_T_EN);
> -
> - gOpenState = FALSE;
> - gLockState = !gOpenState;
> -
> - GetStates (LockState, OpenState);
> - if (*OpenState || !*LockState) {
> - return EFI_DEVICE_ERROR;
> - }
> - return EFI_SUCCESS;
> -}
> -
> -EFI_STATUS
> -SmramAccessGetCapabilities (
> - IN BOOLEAN LockState,
> - IN BOOLEAN OpenState,
> - IN OUT UINTN *SmramMapSize,
> - IN OUT EFI_SMRAM_DESCRIPTOR *SmramMap
> - )
> -{
> - UINTN OriginalSize;
> - UINT32 TsegMemoryBaseMb, TsegMemoryBase;
> - UINT64 CommonRegionState;
> - UINT8 TsegSizeBits;
> -
> - OriginalSize = *SmramMapSize;
> - *SmramMapSize = DescIdxCount * sizeof *SmramMap;
> - if (OriginalSize < *SmramMapSize) {
> - return EFI_BUFFER_TOO_SMALL;
> - }
> -
> - //
> - // Read the TSEG Memory Base register.
> - //
> - TsegMemoryBaseMb =
> PciRead32(DRAMC_REGISTER_X58(MCH_TSEGMB));
> -
> - TsegMemoryBaseMb = 0xDF800000;
> -
> - TsegMemoryBase = (TsegMemoryBaseMb >> MCH_TSEGMB_MB_SHIFT)
> << 20;
> -
> - //
> - // Precompute the region state bits that will be set for all regions.
> - //
> - CommonRegionState = (OpenState ? EFI_SMRAM_OPEN :
> EFI_SMRAM_CLOSED) |
> - (LockState ? EFI_SMRAM_LOCKED : 0) |
> - EFI_CACHEABLE;
> -
> - //
> - // The first region hosts an SMM_S3_RESUME_STATE object. It is located at
> the
> - // start of TSEG. We round up the size to whole pages, and we report it as
> - // EFI_ALLOCATED, so that the SMM_CORE stays away from it.
> - //
> - SmramMap[DescIdxSmmS3ResumeState].PhysicalStart =
> TsegMemoryBase;
> - SmramMap[DescIdxSmmS3ResumeState].CpuStart = TsegMemoryBase;
> - SmramMap[DescIdxSmmS3ResumeState].PhysicalSize =
> - EFI_PAGES_TO_SIZE (EFI_SIZE_TO_PAGES (sizeof
> (SMM_S3_RESUME_STATE)));
> - SmramMap[DescIdxSmmS3ResumeState].RegionState =
> - CommonRegionState | EFI_ALLOCATED;
> -
> - //
> - // Get the TSEG size bits from the ESMRAMC register.
> - //
> - TsegSizeBits = PciRead8 (DRAMC_REGISTER_X58(MCH_TSEGMB)) &
> - MCH_ESMRAMC_TSEG_MASK;
> -
> - TsegSizeBits = MCH_ESMRAMC_TSEG_8MB;
> -
> - //
> - // The second region is the main one, following the first.
> - //
> - SmramMap[DescIdxMain].PhysicalStart =
> - SmramMap[DescIdxSmmS3ResumeState].PhysicalStart +
> - SmramMap[DescIdxSmmS3ResumeState].PhysicalSize;
> - SmramMap[DescIdxMain].CpuStart =
> SmramMap[DescIdxMain].PhysicalStart;
> - SmramMap[DescIdxMain].PhysicalSize =
> - (TsegSizeBits == MCH_ESMRAMC_TSEG_8MB ? SIZE_8MB :
> - TsegSizeBits == MCH_ESMRAMC_TSEG_2MB ? SIZE_2MB :
> - SIZE_1MB) - SmramMap[DescIdxSmmS3ResumeState].PhysicalSize;
> - SmramMap[DescIdxMain].RegionState = CommonRegionState;
> -
> - return EFI_SUCCESS;
> -}
> diff --git a/Silicon/Intel/SimicsX58SktPkg/Smm/Access/SmramInternal.h
> b/Silicon/Intel/SimicsX58SktPkg/Smm/Access/SmramInternal.h
> deleted file mode 100644
> index 81180a9c8e..0000000000
> --- a/Silicon/Intel/SimicsX58SktPkg/Smm/Access/SmramInternal.h
> +++ /dev/null
> @@ -1,82 +0,0 @@
> -/** @file
> - Functions and types shared by the SMM accessor PEI and DXE modules.
> -
> - Copyright (C) 2015, Red Hat, Inc.
> - Copyright (C) 2019, Intel Corporation. All rights reserved.<BR>
> -
> - SPDX-License-Identifier: BSD-2-Clause-Patent
> -**/
> -
> -#include <Pi/PiMultiPhase.h>
> -
> -//
> -// We'll have two SMRAM ranges.
> -//
> -// The first is a tiny one that hosts an SMM_S3_RESUME_STATE object, to
> be
> -// filled in by the CPU SMM driver during normal boot, for the PEI instance
> of
> -// the LockBox library (which will rely on the object during S3 resume).
> -//
> -// The other SMRAM range is the main one, for the SMM core and the SMM
> drivers.
> -//
> -typedef enum {
> - DescIdxSmmS3ResumeState = 0,
> - DescIdxMain = 1,
> - DescIdxCount = 2
> -} DESCRIPTOR_INDEX;
> -
> -/**
> - Read the MCH_SMRAM and ESMRAMC registers, and update the LockState
> and
> - OpenState fields in the PEI_SMM_ACCESS_PPI /
> EFI_SMM_ACCESS2_PROTOCOL object,
> - from the D_LCK and T_EN bits.
> -
> - PEI_SMM_ACCESS_PPI and EFI_SMM_ACCESS2_PROTOCOL member
> functions can rely on
> - the LockState and OpenState fields being up-to-date on entry, and they
> need
> - to restore the same invariant on exit, if they touch the bits in question.
> -
> - @param[out] LockState Reflects the D_LCK bit on output; TRUE iff SMRAM
> is
> - locked.
> - @param[out] OpenState Reflects the inverse of the T_EN bit on output;
> TRUE
> - iff SMRAM is open.
> -**/
> -VOID
> -GetStates (
> - OUT BOOLEAN *LockState,
> - OUT BOOLEAN *OpenState
> - );
> -
> -//
> -// The functions below follow the PEI_SMM_ACCESS_PPI and
> -// EFI_SMM_ACCESS2_PROTOCOL member declarations. The PeiServices
> and This
> -// pointers are removed (TSEG doesn't depend on them), and so is the
> -// DescriptorIndex parameter (TSEG doesn't support range-wise locking).
> -//
> -// The LockState and OpenState members that are common to both
> -// PEI_SMM_ACCESS_PPI and EFI_SMM_ACCESS2_PROTOCOL are taken
> and updated in
> -// isolation from the rest of the (non-shared) members.
> -//
> -
> -EFI_STATUS
> -SmramAccessOpen (
> - OUT BOOLEAN *LockState,
> - OUT BOOLEAN *OpenState
> - );
> -
> -EFI_STATUS
> -SmramAccessClose (
> - OUT BOOLEAN *LockState,
> - OUT BOOLEAN *OpenState
> - );
> -
> -EFI_STATUS
> -SmramAccessLock (
> - OUT BOOLEAN *LockState,
> - IN OUT BOOLEAN *OpenState
> - );
> -
> -EFI_STATUS
> -SmramAccessGetCapabilities (
> - IN BOOLEAN LockState,
> - IN BOOLEAN OpenState,
> - IN OUT UINTN *SmramMapSize,
> - IN OUT EFI_SMRAM_DESCRIPTOR *SmramMap
> - );
> --
> 2.31.1.windows.1
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#103546): https://edk2.groups.io/g/devel/message/103546
Mute This Topic: https://groups.io/mt/98488195/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/leave/3943202/1813853/130120423/xyzzy [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-
More information about the edk2-devel-archive
mailing list