public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Zhiguang Liu" <zhiguang.liu@intel.com>
To: devel@edk2.groups.io
Cc: Zhiguang Liu <zhiguang.liu@intel.com>,
	Nate DeSimone <nathaniel.l.desimone@intel.com>,
	Ray Ni <ray.ni@intel.com>
Subject: [PATCH v2 5/5] SimicsX58SktPkg: Remove unused Smm related modules
Date: Wed, 26 Apr 2023 14:15:49 +0800	[thread overview]
Message-ID: <20230426061549.1254-6-zhiguang.liu@intel.com> (raw)
In-Reply-To: <20230426061549.1254-1-zhiguang.liu@intel.com>

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@intel.com>
Cc: Ray Ni <ray.ni@intel.com>
Reviewed-by: Ray Ni <ray.ni@intel.com>
Signed-off-by: Zhiguang Liu <zhiguang.liu@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 ff9f9d8577..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 - 2023, 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 6aa5b76e63..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 - 2023, 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


  parent reply	other threads:[~2023-04-26  6:16 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-04-26  6:15 [PATCH v2 0/5] refine Smm range code in BoardX58Ich10 Zhiguang Liu
2023-04-26  6:15 ` [PATCH v2 1/5] SimicsOpenBoardPkg: Build gEfiSmmSmramMemoryGuid Hob in S3 path Zhiguang Liu
2023-04-26  6:15 ` [PATCH v2 2/5] SimicsOpenBoardPkg: Move AcpiVariableGuid hob to MemDetect Zhiguang Liu
2023-04-26  6:15 ` [PATCH v2 3/5] SimicsOpenBoardPkg: Use SmmAccessLib instead of SmmAccessPei.inf Zhiguang Liu
2023-04-26  6:15 ` [PATCH v2 4/5] SimicsOpenBoardPkg: Use another SmmAccess Driver Zhiguang Liu
2023-04-26  6:15 ` Zhiguang Liu [this message]
2023-04-26  9:19 ` [edk2-devel] [PATCH v2 0/5] refine Smm range code in BoardX58Ich10 Ni, Ray

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=20230426061549.1254-6-zhiguang.liu@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