From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from linux.microsoft.com (linux.microsoft.com [13.77.154.182]) by mx.groups.io with SMTP id smtpd.web11.39691.1615223902054322431 for ; Mon, 08 Mar 2021 09:18:22 -0800 Authentication-Results: mx.groups.io; dkim=fail reason="body hash did not verify" header.i=@linux.microsoft.com header.s=default header.b=SONuVXdG; spf=pass (domain: linux.microsoft.com, ip: 13.77.154.182, mailfrom: mikuback@linux.microsoft.com) Received: from localhost.localdomain (unknown [131.107.174.202]) by linux.microsoft.com (Postfix) with ESMTPSA id 4223320B39C5; Mon, 8 Mar 2021 09:18:21 -0800 (PST) DKIM-Filter: OpenDKIM Filter v2.11.0 linux.microsoft.com 4223320B39C5 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com; s=default; t=1615223901; bh=yTwuVF/vpheL35D2mz6Jb1kB31sPM0LDIxnptTMnZ2k=; h=From:To:Cc:Subject:Date:From; b=SONuVXdGqaweXb30Trbzhjtm7Ubjwde6lHRY1s+UvDipR2c9augmVTV50jgl0BHW3 E2FktJ0L4wKn2tDLGFAHHdcKeARzAXtpa0jbPZ8zoNFkbDnqsWwybKD8tFq0oHgtNy hPt/+w2t+2uVK2MKJTcf1iCY2xc0SLd32XrblhVo= From: "Michael Kubacki" To: devel@edk2.groups.io Cc: Chasel Chiu , Nate DeSimone , Liming Gao , Eric Dong Subject: [edk2-platforms][PATCH v2 1/1] MinPlatformPkg/Acpi/AcpiSmm: Add Standalone MM support Date: Mon, 8 Mar 2021 09:17:47 -0800 Message-Id: <20210308171747.3034-1-mikuback@linux.microsoft.com> X-Mailer: git-send-email 2.28.0.windows.1 MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable From: Michael Kubacki REF:https://bugzilla.tianocore.org/show_bug.cgi?id=3D3248 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 Cc: Nate DeSimone Cc: Liming Gao Cc: Eric Dong Signed-off-by: Michael Kubacki --- Notes: V2 change: Add BZ link Platform/Intel/MinPlatformPkg/Acpi/AcpiSmm/{AcpiSmm.c =3D> AcpiMm.c} = | 33 +++++++++---------- Platform/Intel/MinPlatformPkg/Acpi/AcpiSmm/AcpiStandaloneMm.c = | 34 ++++++++++++++++++++ Platform/Intel/MinPlatformPkg/Acpi/AcpiSmm/AcpiTraditionalMm.c = | 34 ++++++++++++++++++++ Platform/Intel/MinPlatformPkg/Acpi/AcpiSmm/AcpiMm.h = | 23 +++++++++++++ Platform/Intel/MinPlatformPkg/Acpi/AcpiSmm/AcpiSmm.h = | 24 -------------- Platform/Intel/MinPlatformPkg/Acpi/AcpiSmm/AcpiSmm.inf = | 21 ++++++------ Platform/Intel/MinPlatformPkg/Acpi/AcpiSmm/{AcpiSmm.inf =3D> AcpiStandal= oneMm.inf} | 32 +++++++++--------- Platform/Intel/MinPlatformPkg/MinPlatformPkg.dsc = | 2 ++ 8 files changed, 133 insertions(+), 70 deletions(-) diff --git a/Platform/Intel/MinPlatformPkg/Acpi/AcpiSmm/AcpiSmm.c b/Platf= orm/Intel/MinPlatformPkg/Acpi/AcpiSmm/AcpiMm.c similarity index 81% rename from Platform/Intel/MinPlatformPkg/Acpi/AcpiSmm/AcpiSmm.c rename to Platform/Intel/MinPlatformPkg/Acpi/AcpiSmm/AcpiMm.c index 809f75d3c588..2cf559f3fe09 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. =20 Copyright (c) 2017, Intel Corporation. All rights reserved.
+Copyright (c) Microsoft Corporation.
SPDX-License-Identifier: BSD-2-Clause-Patent =20 **/ =20 -#include "AcpiSmm.h" +#include +#include +#include +#include +#include +#include + +#include "AcpiMm.h" =20 /** Enable SCI @@ -53,20 +61,13 @@ DisableAcpiCallback ( } =20 /** - Initializes the Acpi Smm Driver - - @param[in] ImageHandle - Pointer to the loaded image protocol for th= is 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. =20 **/ -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 =3D gSmst->SmmLocateProtocol (&gEfiSmmSwDispatch2ProtocolGuid, = NULL, (VOID**)&SwDispatch); + Status =3D gMmst->MmLocateProtocol (&gEfiSmmSwDispatch2ProtocolGuid, N= ULL, (VOID**) &SwDispatch); ASSERT_EFI_ERROR (Status); =20 // @@ -103,6 +104,4 @@ InitializeAcpiSmm ( &SwHandle ); ASSERT_EFI_ERROR (Status); - - return EFI_SUCCESS; } diff --git a/Platform/Intel/MinPlatformPkg/Acpi/AcpiSmm/AcpiStandaloneMm.= c b/Platform/Intel/MinPlatformPkg/Acpi/AcpiSmm/AcpiStandaloneMm.c new file mode 100644 index 000000000000..f378942fdc07 --- /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.
+Copyright (c) Microsoft Corporation.
+SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include + +#include "AcpiMm.h" + +/** + The Standalone MM driver entry point. + + @param[in] ImageHandle - Pointer to the loaded image protocol for th= is 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/AcpiTraditionalMm= .c b/Platform/Intel/MinPlatformPkg/Acpi/AcpiSmm/AcpiTraditionalMm.c new file mode 100644 index 000000000000..9512926b9e2e --- /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.
+Copyright (c) Microsoft Corporation.
+SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include + +#include "AcpiMm.h" + +/** + The Traditional MM driver entry point. + + @param[in] ImageHandle - Pointer to the loaded image protocol for th= is 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/Acpi/AcpiSmm/AcpiMm.h b/Platfo= rm/Intel/MinPlatformPkg/Acpi/AcpiSmm/AcpiMm.h new file mode 100644 index 000000000000..051474b0e833 --- /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.
+Copyright (c) Microsoft Corporation.
+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/Platf= orm/Intel/MinPlatformPkg/Acpi/AcpiSmm/AcpiSmm.h deleted file mode 100644 index e34ffb1b755b..000000000000 --- 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.
-SPDX-License-Identifier: BSD-2-Clause-Patent - -**/ - -#ifndef _ACPI_SMM_H_ -#define _ACPI_SMM_H_ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#endif - diff --git a/Platform/Intel/MinPlatformPkg/Acpi/AcpiSmm/AcpiSmm.inf b/Pla= tform/Intel/MinPlatformPkg/Acpi/AcpiSmm/AcpiSmm.inf index fbaf46752563..651d4a293e9b 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.
+# Copyright (c) Microsoft Corporation.
# # SPDX-License-Identifier: BSD-2-Clause-Patent # @@ -14,18 +15,15 @@ [Defines] VERSION_STRING =3D 1.0 MODULE_TYPE =3D DXE_SMM_DRIVER PI_SPECIFICATION_VERSION =3D 1.20 - ENTRY_POINT =3D InitializeAcpiSmm + ENTRY_POINT =3D AcpiTraditionalMmEntryPoint =20 [LibraryClasses] - UefiDriverEntryPoint - UefiBootServicesTableLib + BoardAcpiEnableLib DebugLib - HobLib - IoLib + MmServicesTableLib PcdLib + UefiDriverEntryPoint UefiLib - SmmServicesTableLib - BoardAcpiEnableLib =20 [Packages] MdePkg/MdePkg.dec @@ -36,13 +34,12 @@ [Pcd] gMinPlatformPkgTokenSpaceGuid.PcdAcpiDisableSwSmi ## CONSUMES =20 [Sources] - AcpiSmm.h - AcpiSmm.c + AcpiMm.h + AcpiMm.c + AcpiTraditionalMm.c =20 [Protocols] gEfiSmmSwDispatch2ProtocolGuid ## CONSUMES =20 -[Guids] - [Depex] gEfiSmmSwDispatch2ProtocolGuid diff --git a/Platform/Intel/MinPlatformPkg/Acpi/AcpiSmm/AcpiSmm.inf b/Pla= tform/Intel/MinPlatformPkg/Acpi/AcpiSmm/AcpiStandaloneMm.inf similarity index 50% copy from Platform/Intel/MinPlatformPkg/Acpi/AcpiSmm/AcpiSmm.inf copy to Platform/Intel/MinPlatformPkg/Acpi/AcpiSmm/AcpiStandaloneMm.inf index fbaf46752563..f7d0861b512d 100644 --- a/Platform/Intel/MinPlatformPkg/Acpi/AcpiSmm/AcpiSmm.inf +++ b/Platform/Intel/MinPlatformPkg/Acpi/AcpiSmm/AcpiStandaloneMm.inf @@ -1,7 +1,8 @@ ### @file -# Component information file for ACPI SMM module. +# Component information file for ACPI Standalone MM module. # # Copyright (c) 2017, Intel Corporation. All rights reserved.
+# Copyright (c) Microsoft Corporation.
# # SPDX-License-Identifier: BSD-2-Clause-Patent # @@ -9,40 +10,37 @@ =20 [Defines] INF_VERSION =3D 0x00010017 - BASE_NAME =3D AcpiSmm - FILE_GUID =3D DF9A9FFC-A075-4867-A0B2-5E7540BB023= E + BASE_NAME =3D AcpiStandaloneMm + FILE_GUID =3D F113611F-DEE7-4137-8623-0168675E9F6= D VERSION_STRING =3D 1.0 - MODULE_TYPE =3D DXE_SMM_DRIVER - PI_SPECIFICATION_VERSION =3D 1.20 - ENTRY_POINT =3D InitializeAcpiSmm + MODULE_TYPE =3D MM_STANDALONE + PI_SPECIFICATION_VERSION =3D 0x00010032 + ENTRY_POINT =3D AcpiStandaloneMmEntryPoint =20 [LibraryClasses] - UefiDriverEntryPoint - UefiBootServicesTableLib + BoardAcpiEnableLib DebugLib - HobLib - IoLib + MmServicesTableLib PcdLib - UefiLib - SmmServicesTableLib - BoardAcpiEnableLib + StandaloneMmDriverEntryPoint =20 [Packages] MdePkg/MdePkg.dec MinPlatformPkg/MinPlatformPkg.dec =20 +# Note: All PCDs consumed in the Standalone MM instance must be either F= ixedAtBuild +# or PatchableInModule [Pcd] gMinPlatformPkgTokenSpaceGuid.PcdAcpiEnableSwSmi ## CONSUMES gMinPlatformPkgTokenSpaceGuid.PcdAcpiDisableSwSmi ## CONSUMES =20 [Sources] - AcpiSmm.h - AcpiSmm.c + AcpiMm.h + AcpiMm.c + AcpiStandaloneMm.c =20 [Protocols] gEfiSmmSwDispatch2ProtocolGuid ## CONSUMES =20 -[Guids] - [Depex] gEfiSmmSwDispatch2ProtocolGuid diff --git a/Platform/Intel/MinPlatformPkg/MinPlatformPkg.dsc b/Platform/= Intel/MinPlatformPkg/MinPlatformPkg.dsc index 0460fd5a3206..998ee7909568 100644 --- a/Platform/Intel/MinPlatformPkg/MinPlatformPkg.dsc +++ b/Platform/Intel/MinPlatformPkg/MinPlatformPkg.dsc @@ -117,6 +117,7 @@ [LibraryClasses.common.MM_STANDALONE] DebugLib|MdePkg/Library/BaseDebugLibNull/BaseDebugLibNull.inf MemoryAllocationLib|StandaloneMmPkg/Library/StandaloneMmMemoryAllocati= onLib/StandaloneMmMemoryAllocationLib.inf MmServicesTableLib|MdePkg/Library/StandaloneMmServicesTableLib/Standal= oneMmServicesTableLib.inf + PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf SpiFlashCommonLib|MinPlatformPkg/Flash/Library/SpiFlashCommonLibNull/S= piFlashCommonLibNull.inf StandaloneMmDriverEntryPoint|MdePkg/Library/StandaloneMmDriverEntryPoi= nt/StandaloneMmDriverEntryPoint.inf =20 @@ -147,6 +148,7 @@ [Components] =20 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.in= f MinPlatformPkg/Acpi/Library/BoardAcpiLibNull/BoardAcpiTableLibNull.inf --=20 2.28.0.windows.1