Skip to content

Commit

Permalink
MinPlatformPkg/Acpi/AcpiSmm: Add Standalone MM support
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
makubacki authored and nate-desimone committed Apr 2, 2021
1 parent e84d6a8 commit 3250973
Show file tree
Hide file tree
Showing 8 changed files with 164 additions and 53 deletions.
Original file line number Diff line number Diff line change
@@ -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
Expand Down Expand Up @@ -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;
Expand All @@ -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);

//
Expand All @@ -103,6 +104,4 @@ InitializeAcpiSmm (
&SwHandle
);
ASSERT_EFI_ERROR (Status);

return EFI_SUCCESS;
}
23 changes: 23 additions & 0 deletions Platform/Intel/MinPlatformPkg/Acpi/AcpiSmm/AcpiMm.h
Original file line number Diff line number Diff line change
@@ -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
24 changes: 0 additions & 24 deletions Platform/Intel/MinPlatformPkg/Acpi/AcpiSmm/AcpiSmm.h

This file was deleted.

21 changes: 9 additions & 12 deletions Platform/Intel/MinPlatformPkg/Acpi/AcpiSmm/AcpiSmm.inf
Original file line number Diff line number Diff line change
@@ -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
#
Expand All @@ -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
Expand All @@ -36,13 +34,12 @@
gMinPlatformPkgTokenSpaceGuid.PcdAcpiDisableSwSmi ## CONSUMES

[Sources]
AcpiSmm.h
AcpiSmm.c
AcpiMm.h
AcpiMm.c
AcpiTraditionalMm.c

[Protocols]
gEfiSmmSwDispatch2ProtocolGuid ## CONSUMES

[Guids]

[Depex]
gEfiSmmSwDispatch2ProtocolGuid
34 changes: 34 additions & 0 deletions Platform/Intel/MinPlatformPkg/Acpi/AcpiSmm/AcpiStandaloneMm.c
Original file line number Diff line number Diff line change
@@ -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;
}
46 changes: 46 additions & 0 deletions Platform/Intel/MinPlatformPkg/Acpi/AcpiSmm/AcpiStandaloneMm.inf
Original file line number Diff line number Diff line change
@@ -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
34 changes: 34 additions & 0 deletions Platform/Intel/MinPlatformPkg/Acpi/AcpiSmm/AcpiTraditionalMm.c
Original file line number Diff line number Diff line change
@@ -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;
}
2 changes: 2 additions & 0 deletions Platform/Intel/MinPlatformPkg/MinPlatformPkg.dsc
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down Expand Up @@ -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
Expand Down

0 comments on commit 3250973

Please sign in to comment.