summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Kubacki <michael.kubacki@microsoft.com>2021-03-08 09:17:47 -0800
committerNate DeSimone <nathaniel.l.desimone@intel.com>2021-04-01 22:07:32 -0700
commit325097364dbdbc7b9311c723372e4e36a2f0012e (patch)
tree67def04f5f01683e01737edabe39b59ce34e14f8
parente84d6a891b2e2bdb5596944e824227ea6efa6c95 (diff)
MinPlatformPkg/Acpi/AcpiSmm: Add Standalone MM support
REF:https://bugzilla.tianocore.org/show_bug.cgi?id=3248 Adds a new module called AcpiStandaloneMm that serves the same role as AcpiSmm but in a Standalone MM environment. This change follows a similar pattern to other changes that have added Standalone MM support to a SMM module. The SMM INF name and file path remain unaltered to allow backward compatibility and much of the code is shared between the driver instances with unique entry points for each respective module type. Cc: Chasel Chiu <chasel.chiu@intel.com> Cc: Nate DeSimone <nathaniel.l.desimone@intel.com> Cc: Liming Gao <gaoliming@byosoft.com.cn> Cc: Eric Dong <eric.dong@intel.com> Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com> Reviewed-by: Nate DeSimone <nathaniel.l.desimone@intel.com> Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn>
-rw-r--r--Platform/Intel/MinPlatformPkg/Acpi/AcpiSmm/AcpiMm.c (renamed from Platform/Intel/MinPlatformPkg/Acpi/AcpiSmm/AcpiSmm.c)33
-rw-r--r--Platform/Intel/MinPlatformPkg/Acpi/AcpiSmm/AcpiMm.h23
-rw-r--r--Platform/Intel/MinPlatformPkg/Acpi/AcpiSmm/AcpiSmm.h24
-rw-r--r--Platform/Intel/MinPlatformPkg/Acpi/AcpiSmm/AcpiSmm.inf21
-rw-r--r--Platform/Intel/MinPlatformPkg/Acpi/AcpiSmm/AcpiStandaloneMm.c34
-rw-r--r--Platform/Intel/MinPlatformPkg/Acpi/AcpiSmm/AcpiStandaloneMm.inf46
-rw-r--r--Platform/Intel/MinPlatformPkg/Acpi/AcpiSmm/AcpiTraditionalMm.c34
-rw-r--r--Platform/Intel/MinPlatformPkg/MinPlatformPkg.dsc2
8 files changed, 164 insertions, 53 deletions
diff --git a/Platform/Intel/MinPlatformPkg/Acpi/AcpiSmm/AcpiSmm.c b/Platform/Intel/MinPlatformPkg/Acpi/AcpiSmm/AcpiMm.c
index 809f75d3..2cf559f3 100644
--- a/Platform/Intel/MinPlatformPkg/Acpi/AcpiSmm/AcpiSmm.c
+++ b/Platform/Intel/MinPlatformPkg/Acpi/AcpiSmm/AcpiMm.c
@@ -1,12 +1,20 @@
/** @file
- Acpi Smm driver.
+ Functions shared between driver instances.
Copyright (c) 2017, Intel Corporation. All rights reserved.<BR>
+Copyright (c) Microsoft Corporation.<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
-#include "AcpiSmm.h"
+#include <PiMm.h>
+#include <Library/BoardAcpiEnableLib.h>
+#include <Library/DebugLib.h>
+#include <Library/MmServicesTableLib.h>
+#include <Library/PcdLib.h>
+#include <Protocol/SmmSwDispatch2.h>
+
+#include "AcpiMm.h"
/**
Enable SCI
@@ -53,20 +61,13 @@ DisableAcpiCallback (
}
/**
- Initializes the Acpi Smm Driver
-
- @param[in] ImageHandle - Pointer to the loaded image protocol for this driver
- @param[in] SystemTable - Pointer to the EFI System Table
-
- @retval Status - EFI_SUCCESS
- @retval Assert, otherwise.
+ ACPI initialization logic shared between the Traditional MM and
+ Standalone MM driver instances.
**/
-EFI_STATUS
-EFIAPI
-InitializeAcpiSmm (
- IN EFI_HANDLE ImageHandle,
- IN EFI_SYSTEM_TABLE *SystemTable
+VOID
+InitializeAcpiMm (
+ VOID
)
{
EFI_STATUS Status;
@@ -77,7 +78,7 @@ InitializeAcpiSmm (
//
// Locate the ICH SMM SW dispatch protocol
//
- Status = gSmst->SmmLocateProtocol (&gEfiSmmSwDispatch2ProtocolGuid, NULL, (VOID**)&SwDispatch);
+ Status = gMmst->MmLocateProtocol (&gEfiSmmSwDispatch2ProtocolGuid, NULL, (VOID**) &SwDispatch);
ASSERT_EFI_ERROR (Status);
//
@@ -103,6 +104,4 @@ InitializeAcpiSmm (
&SwHandle
);
ASSERT_EFI_ERROR (Status);
-
- return EFI_SUCCESS;
}
diff --git a/Platform/Intel/MinPlatformPkg/Acpi/AcpiSmm/AcpiMm.h b/Platform/Intel/MinPlatformPkg/Acpi/AcpiSmm/AcpiMm.h
new file mode 100644
index 00000000..051474b0
--- /dev/null
+++ b/Platform/Intel/MinPlatformPkg/Acpi/AcpiSmm/AcpiMm.h
@@ -0,0 +1,23 @@
+/** @file
+ Internal header file for the ACPI MM driver.
+
+Copyright (c) 2017, Intel Corporation. All rights reserved.<BR>
+Copyright (c) Microsoft Corporation.<BR>
+SPDX-License-Identifier: BSD-2-Clause-Patent
+
+**/
+
+#ifndef _ACPI_MM_H_
+#define _ACPI_MM_H_
+
+/**
+ ACPI initialization logic shared between the Traditional MM and
+ Standalone MM driver instances.
+
+**/
+VOID
+InitializeAcpiMm (
+ VOID
+ );
+
+#endif
diff --git a/Platform/Intel/MinPlatformPkg/Acpi/AcpiSmm/AcpiSmm.h b/Platform/Intel/MinPlatformPkg/Acpi/AcpiSmm/AcpiSmm.h
deleted file mode 100644
index e34ffb1b..00000000
--- a/Platform/Intel/MinPlatformPkg/Acpi/AcpiSmm/AcpiSmm.h
+++ /dev/null
@@ -1,24 +0,0 @@
-/** @file
- Header file for the Smm platform driver.
-
-Copyright (c) 2017, Intel Corporation. All rights reserved.<BR>
-SPDX-License-Identifier: BSD-2-Clause-Patent
-
-**/
-
-#ifndef _ACPI_SMM_H_
-#define _ACPI_SMM_H_
-
-#include <PiSmm.h>
-#include <Library/DebugLib.h>
-#include <Library/HobLib.h>
-#include <Library/IoLib.h>
-#include <Library/PcdLib.h>
-#include <Library/UefiBootServicesTableLib.h>
-#include <Library/UefiLib.h>
-#include <Library/SmmServicesTableLib.h>
-#include <Library/BoardAcpiEnableLib.h>
-#include <Protocol/SmmSwDispatch2.h>
-
-#endif
-
diff --git a/Platform/Intel/MinPlatformPkg/Acpi/AcpiSmm/AcpiSmm.inf b/Platform/Intel/MinPlatformPkg/Acpi/AcpiSmm/AcpiSmm.inf
index fbaf4675..651d4a29 100644
--- a/Platform/Intel/MinPlatformPkg/Acpi/AcpiSmm/AcpiSmm.inf
+++ b/Platform/Intel/MinPlatformPkg/Acpi/AcpiSmm/AcpiSmm.inf
@@ -1,7 +1,8 @@
### @file
-# Component information file for ACPI SMM module.
+# Component information file for ACPI Traditional MM module.
#
# Copyright (c) 2017, Intel Corporation. All rights reserved.<BR>
+# Copyright (c) Microsoft Corporation.<BR>
#
# SPDX-License-Identifier: BSD-2-Clause-Patent
#
@@ -14,18 +15,15 @@
VERSION_STRING = 1.0
MODULE_TYPE = DXE_SMM_DRIVER
PI_SPECIFICATION_VERSION = 1.20
- ENTRY_POINT = InitializeAcpiSmm
+ ENTRY_POINT = AcpiTraditionalMmEntryPoint
[LibraryClasses]
- UefiDriverEntryPoint
- UefiBootServicesTableLib
+ BoardAcpiEnableLib
DebugLib
- HobLib
- IoLib
+ MmServicesTableLib
PcdLib
+ UefiDriverEntryPoint
UefiLib
- SmmServicesTableLib
- BoardAcpiEnableLib
[Packages]
MdePkg/MdePkg.dec
@@ -36,13 +34,12 @@
gMinPlatformPkgTokenSpaceGuid.PcdAcpiDisableSwSmi ## CONSUMES
[Sources]
- AcpiSmm.h
- AcpiSmm.c
+ AcpiMm.h
+ AcpiMm.c
+ AcpiTraditionalMm.c
[Protocols]
gEfiSmmSwDispatch2ProtocolGuid ## CONSUMES
-[Guids]
-
[Depex]
gEfiSmmSwDispatch2ProtocolGuid
diff --git a/Platform/Intel/MinPlatformPkg/Acpi/AcpiSmm/AcpiStandaloneMm.c b/Platform/Intel/MinPlatformPkg/Acpi/AcpiSmm/AcpiStandaloneMm.c
new file mode 100644
index 00000000..f378942f
--- /dev/null
+++ b/Platform/Intel/MinPlatformPkg/Acpi/AcpiSmm/AcpiStandaloneMm.c
@@ -0,0 +1,34 @@
+/** @file
+ Standalone MM driver for ACPI initialization.
+
+Copyright (c) 2017, Intel Corporation. All rights reserved.<BR>
+Copyright (c) Microsoft Corporation.<BR>
+SPDX-License-Identifier: BSD-2-Clause-Patent
+
+**/
+
+#include <PiMm.h>
+
+#include "AcpiMm.h"
+
+/**
+ The Standalone MM driver entry point.
+
+ @param[in] ImageHandle - Pointer to the loaded image protocol for this driver
+ @param[in] SystemTable - Pointer to the EFI MM System Table
+
+ @retval Status - EFI_SUCCESS
+ @retval Assert, otherwise.
+
+**/
+EFI_STATUS
+EFIAPI
+AcpiStandaloneMmEntryPoint (
+ IN EFI_HANDLE ImageHandle,
+ IN EFI_MM_SYSTEM_TABLE *MmSystemTable
+ )
+{
+ InitializeAcpiMm ();
+
+ return EFI_SUCCESS;
+}
diff --git a/Platform/Intel/MinPlatformPkg/Acpi/AcpiSmm/AcpiStandaloneMm.inf b/Platform/Intel/MinPlatformPkg/Acpi/AcpiSmm/AcpiStandaloneMm.inf
new file mode 100644
index 00000000..f7d0861b
--- /dev/null
+++ b/Platform/Intel/MinPlatformPkg/Acpi/AcpiSmm/AcpiStandaloneMm.inf
@@ -0,0 +1,46 @@
+### @file
+# Component information file for ACPI Standalone MM module.
+#
+# Copyright (c) 2017, Intel Corporation. All rights reserved.<BR>
+# Copyright (c) Microsoft Corporation.<BR>
+#
+# SPDX-License-Identifier: BSD-2-Clause-Patent
+#
+###
+
+[Defines]
+ INF_VERSION = 0x00010017
+ BASE_NAME = AcpiStandaloneMm
+ FILE_GUID = F113611F-DEE7-4137-8623-0168675E9F6D
+ VERSION_STRING = 1.0
+ MODULE_TYPE = MM_STANDALONE
+ PI_SPECIFICATION_VERSION = 0x00010032
+ ENTRY_POINT = AcpiStandaloneMmEntryPoint
+
+[LibraryClasses]
+ BoardAcpiEnableLib
+ DebugLib
+ MmServicesTableLib
+ PcdLib
+ StandaloneMmDriverEntryPoint
+
+[Packages]
+ MdePkg/MdePkg.dec
+ MinPlatformPkg/MinPlatformPkg.dec
+
+# Note: All PCDs consumed in the Standalone MM instance must be either FixedAtBuild
+# or PatchableInModule
+[Pcd]
+ gMinPlatformPkgTokenSpaceGuid.PcdAcpiEnableSwSmi ## CONSUMES
+ gMinPlatformPkgTokenSpaceGuid.PcdAcpiDisableSwSmi ## CONSUMES
+
+[Sources]
+ AcpiMm.h
+ AcpiMm.c
+ AcpiStandaloneMm.c
+
+[Protocols]
+ gEfiSmmSwDispatch2ProtocolGuid ## CONSUMES
+
+[Depex]
+ gEfiSmmSwDispatch2ProtocolGuid
diff --git a/Platform/Intel/MinPlatformPkg/Acpi/AcpiSmm/AcpiTraditionalMm.c b/Platform/Intel/MinPlatformPkg/Acpi/AcpiSmm/AcpiTraditionalMm.c
new file mode 100644
index 00000000..9512926b
--- /dev/null
+++ b/Platform/Intel/MinPlatformPkg/Acpi/AcpiSmm/AcpiTraditionalMm.c
@@ -0,0 +1,34 @@
+/** @file
+ Traditional MM driver for ACPI initialization.
+
+Copyright (c) 2017, Intel Corporation. All rights reserved.<BR>
+Copyright (c) Microsoft Corporation.<BR>
+SPDX-License-Identifier: BSD-2-Clause-Patent
+
+**/
+
+#include <PiMm.h>
+
+#include "AcpiMm.h"
+
+/**
+ The Traditional MM driver entry point.
+
+ @param[in] ImageHandle - Pointer to the loaded image protocol for this driver
+ @param[in] SystemTable - Pointer to the EFI System Table
+
+ @retval Status - EFI_SUCCESS
+ @retval Assert, otherwise.
+
+**/
+EFI_STATUS
+EFIAPI
+AcpiTraditionalMmEntryPoint (
+ IN EFI_HANDLE ImageHandle,
+ IN EFI_SYSTEM_TABLE *SystemTable
+ )
+{
+ InitializeAcpiMm ();
+
+ return EFI_SUCCESS;
+}
diff --git a/Platform/Intel/MinPlatformPkg/MinPlatformPkg.dsc b/Platform/Intel/MinPlatformPkg/MinPlatformPkg.dsc
index 0460fd5a..998ee790 100644
--- a/Platform/Intel/MinPlatformPkg/MinPlatformPkg.dsc
+++ b/Platform/Intel/MinPlatformPkg/MinPlatformPkg.dsc
@@ -117,6 +117,7 @@
DebugLib|MdePkg/Library/BaseDebugLibNull/BaseDebugLibNull.inf
MemoryAllocationLib|StandaloneMmPkg/Library/StandaloneMmMemoryAllocationLib/StandaloneMmMemoryAllocationLib.inf
MmServicesTableLib|MdePkg/Library/StandaloneMmServicesTableLib/StandaloneMmServicesTableLib.inf
+ PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
SpiFlashCommonLib|MinPlatformPkg/Flash/Library/SpiFlashCommonLibNull/SpiFlashCommonLibNull.inf
StandaloneMmDriverEntryPoint|MdePkg/Library/StandaloneMmDriverEntryPoint/StandaloneMmDriverEntryPoint.inf
@@ -147,6 +148,7 @@
MinPlatformPkg/Acpi/AcpiTables/AcpiPlatform.inf
MinPlatformPkg/Acpi/AcpiSmm/AcpiSmm.inf
+ MinPlatformPkg/Acpi/AcpiSmm/AcpiStandaloneMm.inf
MinPlatformPkg/Acpi/Library/DxeAslUpdateLib/DxeAslUpdateLib.inf
MinPlatformPkg/Acpi/Library/BoardAcpiLibNull/BoardAcpiEnableLibNull.inf
MinPlatformPkg/Acpi/Library/BoardAcpiLibNull/BoardAcpiTableLibNull.inf