[edk2-devel] [edk2-platforms Patch 12/14] Vlv2TbltDevicePkg/PlatformSmm: Switch to PI SMM Protocols

Sun, Zailiang zailiang.sun at intel.com
Mon Jul 1 04:08:31 UTC 2019


Reviewed-By: Zailiang Sun <zailiang.sun at intel.com>

-----Original Message-----
From: devel at edk2.groups.io [mailto:devel at edk2.groups.io] On Behalf Of Michael D Kinney
Sent: Monday, July 01, 2019 10:56 AM
To: devel at edk2.groups.io
Cc: Sun, Zailiang <zailiang.sun at intel.com>; Qian, Yi <yi.qian at intel.com>
Subject: [edk2-devel] [edk2-platforms Patch 12/14] Vlv2TbltDevicePkg/PlatformSmm: Switch to PI SMM Protocols

Change use of Intel Framework SMM Protocols to PI SMM Protocols. This removes Intel Framework dependencies.
The PI SMM Protocols added are:

* gEfiSmmPowerButtonDispatch2ProtocolGuid
* gEfiSmmSxDispatch2ProtocolGuid
* gEfiSmmSwDispatch2ProtocolGuid

Cc: Zailiang Sun <zailiang.sun at intel.com>
Cc: Yi Qian <yi.qian at intel.com>
Signed-off-by: Michael D Kinney <michael.d.kinney at intel.com>
---
 .../Vlv2TbltDevicePkg/PlatformSmm/Platform.c  | 112 +++++++++++-------
 .../PlatformSmm/PlatformSmm.inf               |  16 +--
 .../PlatformSmm/SmmPlatform.h                 | 104 +++++++---------
 3 files changed, 114 insertions(+), 118 deletions(-)

diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformSmm/Platform.c b/Platform/Intel/Vlv2TbltDevicePkg/PlatformSmm/Platform.c
index fb9d090ada..c78174ed08 100644
--- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformSmm/Platform.c
+++ b/Platform/Intel/Vlv2TbltDevicePkg/PlatformSmm/Platform.c
@@ -101,14 +101,14 @@ InitializePlatformSmm (
   EFI_STATUS                                Status;
   UINT8                                     Index;
   EFI_HANDLE                                Handle;
-  EFI_SMM_POWER_BUTTON_DISPATCH_CONTEXT     PowerButtonContext;
-  EFI_SMM_POWER_BUTTON_DISPATCH_PROTOCOL    *PowerButtonDispatch;
+  EFI_SMM_POWER_BUTTON_REGISTER_CONTEXT     PowerButtonContext;
+  EFI_SMM_POWER_BUTTON_DISPATCH2_PROTOCOL   *PowerButtonDispatch;
   EFI_SMM_ICHN_DISPATCH_CONTEXT             IchnContext;
   EFI_SMM_ICHN_DISPATCH_PROTOCOL            *IchnDispatch;
-  EFI_SMM_SX_DISPATCH_PROTOCOL              *SxDispatch;
-  EFI_SMM_SX_DISPATCH_CONTEXT               EntryDispatchContext;
-  EFI_SMM_SW_DISPATCH_PROTOCOL              *SwDispatch;
-  EFI_SMM_SW_DISPATCH_CONTEXT               SwContext;
+  EFI_SMM_SX_DISPATCH2_PROTOCOL             *SxDispatch;
+  EFI_SMM_SX_REGISTER_CONTEXT               EntryDispatchContext;
+  EFI_SMM_SW_DISPATCH2_PROTOCOL             *SwDispatch;
+  EFI_SMM_SW_REGISTER_CONTEXT               SwContext;
   UINTN                                     VarSize;
   EFI_BOOT_MODE                             BootMode;
 
@@ -171,18 +171,18 @@ InitializePlatformSmm (
   //
   // Get the Power Button protocol
   //
-  Status = gBS->LocateProtocol(
-                  &gEfiSmmPowerButtonDispatchProtocolGuid,
-                  NULL,
-                  (void **)&PowerButtonDispatch
-                  );
+  Status = gSmst->SmmLocateProtocol(
+                    &gEfiSmmPowerButtonDispatch2ProtocolGuid,
+                    NULL,
+                    (VOID **)&PowerButtonDispatch
+                    );
   ASSERT_EFI_ERROR(Status);
 
   if (BootMode != BOOT_ON_FLASH_UPDATE) {
     //
     // Register for the power button event
     //
-    PowerButtonContext.Phase = PowerButtonEntry;
+    PowerButtonContext.Phase = EfiPowerButtonEntry;
     Status = PowerButtonDispatch->Register(
                                     PowerButtonDispatch,
                                     PowerButtonCallback, @@ -194,11 +194,11 @@ InitializePlatformSmm (
   //
   // Get the Sx dispatch protocol
   //
-  Status = gBS->LocateProtocol (
-                  &gEfiSmmSxDispatchProtocolGuid,
-                  NULL,
-                                  (void **)&SxDispatch
-                  );
+  Status = gSmst->SmmLocateProtocol(
+                    &gEfiSmmSxDispatch2ProtocolGuid,
+                    NULL,
+                    (VOID **)&SxDispatch
+                    );
   ASSERT_EFI_ERROR(Status);
 
   //
@@ -209,7 +209,7 @@ InitializePlatformSmm (
 
   Status = SxDispatch->Register (
                          SxDispatch,
-                           (EFI_SMM_SX_DISPATCH)SxSleepEntryCallBack,
+                         SxSleepEntryCallBack,
                          &EntryDispatchContext,
                          &Handle
                          );
@@ -247,11 +247,11 @@ InitializePlatformSmm (
   //
   //  Get the Sw dispatch protocol
   //
-  Status = gBS->LocateProtocol (
-                  &gEfiSmmSwDispatchProtocolGuid,
-                  NULL,
-                                  (void **)&SwDispatch
-                  );
+  Status = gSmst->SmmLocateProtocol (
+                    &gEfiSmmSwDispatch2ProtocolGuid,
+                    NULL,
+                    (VOID **)&SwDispatch
+                    );
   ASSERT_EFI_ERROR(Status);
 
   //
@@ -341,11 +341,13 @@ InitializePlatformSmm (
   return EFI_SUCCESS;
 }
 
-VOID
+EFI_STATUS
 EFIAPI
 SmmReadyToBootCallback (
-  IN  EFI_HANDLE                    DispatchHandle,
-  IN  EFI_SMM_SW_DISPATCH_CONTEXT   *DispatchContext
+  IN EFI_HANDLE  DispatchHandle,
+  IN CONST VOID  *Context         OPTIONAL,
+  IN OUT VOID    *CommBuffer      OPTIONAL,
+  IN OUT UINTN   *CommBufferSize  OPTIONAL
   )
 {
   EFI_STATUS Status;
@@ -371,6 +373,7 @@ SmmReadyToBootCallback (
     mSetSmmVariableProtocolSmiAllowed = FALSE;
   }
 
+  return EFI_SUCCESS;
 }
 
 /**
@@ -385,8 +388,10 @@ SmmReadyToBootCallback (  EFI_STATUS
 EFIAPI
 SxSleepEntryCallBack (
-  IN  EFI_HANDLE                    DispatchHandle,
-  IN  EFI_SMM_SX_DISPATCH_CONTEXT   *DispatchContext
+  IN EFI_HANDLE  DispatchHandle,
+  IN CONST VOID  *Context         OPTIONAL,
+  IN OUT VOID    *CommBuffer      OPTIONAL,
+  IN OUT UINTN   *CommBufferSize  OPTIONAL
   )
 {
   EFI_STATUS              Status;
@@ -479,11 +484,13 @@ SetAfterG3On (
   When a power button event happens, it shuts off the machine
 
 **/
-VOID
+EFI_STATUS
 EFIAPI
 PowerButtonCallback (
-  IN  EFI_HANDLE                              DispatchHandle,
-  IN  EFI_SMM_POWER_BUTTON_DISPATCH_CONTEXT   *DispatchContext
+  IN EFI_HANDLE  DispatchHandle,
+  IN CONST VOID  *Context         OPTIONAL,
+  IN OUT VOID    *CommBuffer      OPTIONAL,
+  IN OUT UINTN   *CommBufferSize  OPTIONAL
   )
 {
   //
@@ -538,6 +545,8 @@ PowerButtonCallback (
   // Should not return
   //
   CpuDeadLoop();
+
+  return EFI_SUCCESS;
 }
 
 
@@ -547,11 +556,13 @@ PowerButtonCallback (
   @param DispatchContext - The predefined context which contained sleep type and phase
 
 **/
-VOID
+EFI_STATUS
 EFIAPI
 S5SleepAcLossCallBack (
-  IN  EFI_HANDLE                    DispatchHandle,
-  IN  EFI_SMM_SX_DISPATCH_CONTEXT   *DispatchContext
+  IN EFI_HANDLE  DispatchHandle,
+  IN CONST VOID  *Context         OPTIONAL,
+  IN OUT VOID    *CommBuffer      OPTIONAL,
+  IN OUT UINTN   *CommBufferSize  OPTIONAL
   )
 {
   //
@@ -561,6 +572,7 @@ S5SleepAcLossCallBack (
   if (mAcLossVariable == 1) {
     SetAfterG3On (TRUE);
   }
+  return EFI_SUCCESS;
 }
 
 /**
@@ -571,11 +583,13 @@ S5SleepAcLossCallBack (
   @retval Clears the Save State bit in the clock.
 
 **/
-VOID
+EFI_STATUS
 EFIAPI
 S4S5CallBack (
-  IN  EFI_HANDLE                    DispatchHandle,
-  IN  EFI_SMM_SX_DISPATCH_CONTEXT   *DispatchContext
+  IN EFI_HANDLE  DispatchHandle,
+  IN CONST VOID  *Context         OPTIONAL,
+  IN OUT VOID    *CommBuffer      OPTIONAL,
+  IN OUT UINTN   *CommBufferSize  OPTIONAL
   )
 {
 
@@ -590,6 +604,7 @@ S4S5CallBack (
     IoWrite32(GPIO_BASE_ADDRESS + R_PCH_GPIO_SC_LVL, Data32);
   }
 
+  return EFI_SUCCESS;
 }
 
 
@@ -624,16 +639,18 @@ S4S5ProgClock()
    Enable SCI
 
   @param DispatchHandle  - EFI Handle
-  @param DispatchContext - Pointer to the EFI_SMM_SW_DISPATCH_CONTEXT
+  @param DispatchContext - Pointer to the EFI_SMM_SW_REGISTER_CONTEXT
 
   @retval Nothing
 
 **/
-VOID
+EFI_STATUS
 EFIAPI
 EnableAcpiCallback (
-  IN  EFI_HANDLE                    DispatchHandle,
-  IN  EFI_SMM_SW_DISPATCH_CONTEXT   *DispatchContext
+  IN EFI_HANDLE  DispatchHandle,
+  IN CONST VOID  *Context         OPTIONAL,
+  IN OUT VOID    *CommBuffer      OPTIONAL,
+  IN OUT UINTN   *CommBufferSize  OPTIONAL
   )
 {
   UINT32 SmiEn;
@@ -690,7 +707,7 @@ EnableAcpiCallback (
   Pm1Cnt |= B_PCH_ACPI_PM1_CNT_SCI_EN;
   IoWrite16(mAcpiBaseAddr + R_PCH_ACPI_PM1_CNT, Pm1Cnt);
 
-
+  return EFI_SUCCESS;
 }
 
 /**
@@ -710,16 +727,18 @@ EnableAcpiCallback (
    Disable SCI
 
   @param DispatchHandle  - EFI Handle
-  @param DispatchContext - Pointer to the EFI_SMM_SW_DISPATCH_CONTEXT
+  @param DispatchContext - Pointer to the EFI_SMM_SW_REGISTER_CONTEXT
 
   @retval Nothing
 
 **/
-VOID
+EFI_STATUS
 EFIAPI
 DisableAcpiCallback (
-  IN  EFI_HANDLE                    DispatchHandle,
-  IN  EFI_SMM_SW_DISPATCH_CONTEXT   *DispatchContext
+  IN EFI_HANDLE  DispatchHandle,
+  IN CONST VOID  *Context         OPTIONAL,
+  IN OUT VOID    *CommBuffer      OPTIONAL,
+  IN OUT UINTN   *CommBufferSize  OPTIONAL
   )
 {
   UINT16 Pm1Cnt;
@@ -737,6 +756,7 @@ DisableAcpiCallback (
   Pm1Cnt &= ~B_PCH_ACPI_PM1_CNT_SCI_EN;
   IoWrite16(mAcpiBaseAddr + R_PCH_ACPI_PM1_CNT, Pm1Cnt);
 
+  return EFI_SUCCESS;
 }
 
 /**
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformSmm/PlatformSmm.inf b/Platform/Intel/Vlv2TbltDevicePkg/PlatformSmm/PlatformSmm.inf
index 73c3b6f2d0..9aff4a4895 100644
--- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformSmm/PlatformSmm.inf
+++ b/Platform/Intel/Vlv2TbltDevicePkg/PlatformSmm/PlatformSmm.inf
@@ -36,6 +36,7 @@ [Sources]
 [LibraryClasses]
   UefiDriverEntryPoint
   UefiBootServicesTableLib
+  SmmServicesTableLib
   DebugLib
   IoLib
   BaseLib
@@ -52,15 +53,14 @@ [Guids]
 [Protocols]
   gEfiSmmIchnDispatchProtocolGuid
   gEfiGlobalNvsAreaProtocolGuid
-  gEfiSmmSwDispatchProtocolGuid
-  gEfiSmmPowerButtonDispatchProtocolGuid
-  gEfiSmmSxDispatchProtocolGuid
+  gEfiSmmSwDispatch2ProtocolGuid
+  gEfiSmmPowerButtonDispatch2ProtocolGuid
+  gEfiSmmSxDispatch2ProtocolGuid
   gEfiSmmVariableProtocolGuid
 
 [Packages]
   MdePkg/MdePkg.dec
   MdeModulePkg/MdeModulePkg.dec
-  IntelFrameworkPkg/IntelFrameworkPkg.dec
   Vlv2DeviceRefCodePkg/Vlv2DeviceRefCodePkg.dec
   Vlv2TbltDevicePkg/PlatformPkg.dec
 
@@ -68,11 +68,11 @@ [Pcd.common]
   gEfiMdePkgTokenSpaceGuid.PcdPciExpressBaseAddress
 
 [Depex]
-  gEfiSmmAccess2ProtocolGuid               AND
-  gEfiSmmPowerButtonDispatchProtocolGuid  AND
-  gEfiSmmSxDispatchProtocolGuid           AND
+  gEfiSmmAccess2ProtocolGuid              AND
+  gEfiSmmPowerButtonDispatch2ProtocolGuid AND
+  gEfiSmmSxDispatch2ProtocolGuid          AND
   gEfiSmmIchnDispatchProtocolGuid         AND
-  gEfiSmmSwDispatchProtocolGuid           AND
+  gEfiSmmSwDispatch2ProtocolGuid          AND
   gEfiVariableArchProtocolGuid            AND
   gEfiVariableWriteArchProtocolGuid       AND
   gEfiGlobalNvsAreaProtocolGuid
diff --git a/Platform/Intel/Vlv2TbltDevicePkg/PlatformSmm/SmmPlatform.h b/Platform/Intel/Vlv2TbltDevicePkg/PlatformSmm/SmmPlatform.h
index bcb1d8ae92..735a562e3e 100644
--- a/Platform/Intel/Vlv2TbltDevicePkg/PlatformSmm/SmmPlatform.h
+++ b/Platform/Intel/Vlv2TbltDevicePkg/PlatformSmm/SmmPlatform.h
@@ -21,18 +21,16 @@ Abstract:
 
 
 
-#include <Protocol/SmmBase.h>
-#include <Protocol/FirmwareVolume.h>
-#include <Protocol/SmmPowerButtonDispatch.h>
-#include <Protocol/SmmSxDispatch.h>
-#include <Protocol/SmmSwDispatch.h>
+#include <Protocol/SmmBase2.h>
+#include <Protocol/SmmPowerButtonDispatch2.h>
+#include <Protocol/SmmSxDispatch2.h>
 #include <Protocol/SmmSwDispatch2.h>
 #include <Protocol/SmmIchnDispatch.h>
-#include <Protocol/SmmAccess.h>
+#include <Protocol/SmmAccess2.h>
 #include <Protocol/SmmVariable.h>
 #include <Protocol/PciRootBridgeIo.h>
 #include <Protocol/LoadedImage.h>
-#include "Protocol/GlobalNvsArea.h"
+#include <Protocol/GlobalNvsArea.h>
 #include <Guid/SetupVariable.h>
 #include <Guid/EfiVpdData.h>
 #include <Guid/PciLanInfo.h>
@@ -42,6 +40,7 @@ Abstract:
 #include "PlatformBaseAddresses.h"
 
 #include <Library/UefiBootServicesTableLib.h>
+#include <Library/SmmServicesTableLib.h>
 #include <Library/S3BootScriptLib.h>
 #include <Library/IoLib.h>
 #include <Library/DebugLib.h>
@@ -130,53 +129,59 @@ extern EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL *mPciRootBridgeIo;  //  // Callback function prototypes  // -VOID
+EFI_STATUS
 EFIAPI
 PowerButtonCallback (
-  IN  EFI_HANDLE                              DispatchHandle,
-  IN  EFI_SMM_POWER_BUTTON_DISPATCH_CONTEXT   *DispatchContext
+  IN EFI_HANDLE  DispatchHandle,
+  IN CONST VOID  *Context         OPTIONAL,
+  IN OUT VOID    *CommBuffer      OPTIONAL,
+  IN OUT UINTN   *CommBufferSize  OPTIONAL
   );
 
-VOID
-S5SleepWakeOnLanCallBack (
-  IN  EFI_HANDLE                    DispatchHandle,
-  IN  EFI_SMM_SX_DISPATCH_CONTEXT   *DispatchContext
-  );
-
-VOID
+EFI_STATUS
 EFIAPI
 S5SleepAcLossCallBack (
-  IN  EFI_HANDLE                    DispatchHandle,
-  IN  EFI_SMM_SX_DISPATCH_CONTEXT   *DispatchContext
+  IN EFI_HANDLE  DispatchHandle,
+  IN CONST VOID  *Context         OPTIONAL,
+  IN OUT VOID    *CommBuffer      OPTIONAL,
+  IN OUT UINTN   *CommBufferSize  OPTIONAL
   );
 
 
-VOID
+EFI_STATUS
 EFIAPI
 S4S5CallBack (
-  IN  EFI_HANDLE                    DispatchHandle,
-  IN  EFI_SMM_SX_DISPATCH_CONTEXT   *DispatchContext
+  IN EFI_HANDLE  DispatchHandle,
+  IN CONST VOID  *Context         OPTIONAL,
+  IN OUT VOID    *CommBuffer      OPTIONAL,
+  IN OUT UINTN   *CommBufferSize  OPTIONAL
   );
 
-VOID
+EFI_STATUS
 EFIAPI
 EnableAcpiCallback (
-  IN  EFI_HANDLE                    DispatchHandle,
-  IN  EFI_SMM_SW_DISPATCH_CONTEXT   *DispatchContext
+  IN EFI_HANDLE  DispatchHandle,
+  IN CONST VOID  *Context         OPTIONAL,
+  IN OUT VOID    *CommBuffer      OPTIONAL,
+  IN OUT UINTN   *CommBufferSize  OPTIONAL
   );
 
-VOID
+EFI_STATUS
 EFIAPI
 DisableAcpiCallback (
-  IN  EFI_HANDLE                    DispatchHandle,
-  IN  EFI_SMM_SW_DISPATCH_CONTEXT   *DispatchContext
+  IN EFI_HANDLE  DispatchHandle,
+  IN CONST VOID  *Context         OPTIONAL,
+  IN OUT VOID    *CommBuffer      OPTIONAL,
+  IN OUT UINTN   *CommBufferSize  OPTIONAL
   );
 
-VOID
+EFI_STATUS
 EFIAPI
 SmmReadyToBootCallback (
-  IN  EFI_HANDLE                    DispatchHandle,
-  IN  EFI_SMM_SW_DISPATCH_CONTEXT   *DispatchContext
+  IN EFI_HANDLE  DispatchHandle,
+  IN CONST VOID  *Context         OPTIONAL,
+  IN OUT VOID    *CommBuffer      OPTIONAL,
+  IN OUT UINTN   *CommBufferSize  OPTIONAL
   );
 
 VOID
@@ -185,46 +190,18 @@ DummyTco1Callback (
   IN  EFI_SMM_ICHN_DISPATCH_CONTEXT           *DispatchContext
   );
 
-
-VOID
-PerrSerrCallback (
-  IN  EFI_HANDLE                              DispatchHandle,
-  IN  EFI_SMM_ICHN_DISPATCH_CONTEXT           *DispatchContext
-  );
-
-VOID
-RiCallback (
-  IN  EFI_HANDLE                              DispatchHandle,
-  IN  EFI_SMM_ICHN_DISPATCH_CONTEXT           *DispatchContext
-  );
-
-
 VOID
 SetAfterG3On (
   BOOLEAN Enable
   );
 
-VOID
-TurnOffVregUsb (
-  );
-
-VOID
-PStateSupportCallback (
-  IN  EFI_HANDLE                              DispatchHandle,
-  IN  EFI_SMM_SW_DISPATCH_CONTEXT             *DispatchContext
-  );
-
-VOID
-PStateTransitionCallback (
-  IN  EFI_HANDLE                              DispatchHandle,
-  IN  EFI_SMM_SW_DISPATCH_CONTEXT             *DispatchContext
-  );
-
 EFI_STATUS
 EFIAPI
 SxSleepEntryCallBack (
-  IN  EFI_HANDLE                    DispatchHandle,
-  IN  EFI_SMM_SX_DISPATCH_CONTEXT   *DispatchContext
+  IN EFI_HANDLE  DispatchHandle,
+  IN CONST VOID  *Context         OPTIONAL,
+  IN OUT VOID    *CommBuffer      OPTIONAL,
+  IN OUT UINTN   *CommBufferSize  OPTIONAL
   );
 
 EFI_STATUS
@@ -232,6 +209,5 @@ SaveRuntimeScriptTable (
   VOID
   );
 
-
 #endif
 
--
2.21.0.windows.1





-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#43093): https://edk2.groups.io/g/devel/message/43093
Mute This Topic: https://groups.io/mt/32267627/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-





More information about the edk2-devel-archive mailing list