diff options
-rw-r--r-- | OvmfPkg/AcpiS3SaveDxe/AcpiS3Save.c | 88 | ||||
-rw-r--r-- | OvmfPkg/AcpiS3SaveDxe/AcpiS3Save.h | 59 | ||||
-rw-r--r-- | OvmfPkg/AcpiS3SaveDxe/AcpiS3SaveDxe.inf | 8 |
3 files changed, 16 insertions, 139 deletions
diff --git a/OvmfPkg/AcpiS3SaveDxe/AcpiS3Save.c b/OvmfPkg/AcpiS3SaveDxe/AcpiS3Save.c index 8372db85bd..2e1040b612 100644 --- a/OvmfPkg/AcpiS3SaveDxe/AcpiS3Save.c +++ b/OvmfPkg/AcpiS3SaveDxe/AcpiS3Save.c @@ -1,6 +1,9 @@ /** @file
- This is an implementation of the ACPI S3 Save protocol. This is defined in
- S3 boot path specification 0.9.
+ This is a replacement for the ACPI S3 Save protocol.
+
+ The ACPI S3 Save protocol used to be defined in the S3 boot path
+ specification 0.9. Instead, the same functionality is now hooked to the
+ End-of-Dxe event.
Copyright (c) 2014-2015, Red Hat, Inc.<BR>
Copyright (c) 2006 - 2013, Intel Corporation. All rights reserved.<BR>
@@ -30,19 +33,9 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. #include <Guid/AcpiS3Context.h>
#include <Guid/Acpi.h>
#include <Guid/EventGroup.h>
-#include <Protocol/AcpiS3Save.h>
#include <Protocol/LockBox.h>
#include <IndustryStandard/Acpi.h>
-#include "AcpiS3Save.h"
-
-UINTN mLegacyRegionSize;
-
-EFI_ACPI_S3_SAVE_PROTOCOL mS3Save = {
- LegacyGetS3MemorySize,
- S3Ready,
-};
-
EFI_GUID mAcpiS3IdtrProfileGuid = {
0xdea652b0, 0xd587, 0x4c54, { 0xb5, 0xb4, 0xc6, 0x82, 0xe7, 0xa0, 0xaa, 0x3d }
};
@@ -385,52 +378,17 @@ S3CreateIdentityMappingPageTables ( }
/**
- Gets the buffer of legacy memory below 1 MB
- This function is to get the buffer in legacy memory below 1MB that is required during S3 resume.
-
- @param This A pointer to the EFI_ACPI_S3_SAVE_PROTOCOL instance.
- @param Size The returned size of legacy memory below 1 MB.
-
- @retval EFI_SUCCESS Size is successfully returned.
- @retval EFI_INVALID_PARAMETER The pointer Size is NULL.
-
-**/
-EFI_STATUS
-EFIAPI
-LegacyGetS3MemorySize (
- IN EFI_ACPI_S3_SAVE_PROTOCOL *This,
- OUT UINTN *Size
- )
-{
- ASSERT (FALSE);
-
- if (Size == NULL) {
- return EFI_INVALID_PARAMETER;
- }
-
- *Size = mLegacyRegionSize;
- return EFI_SUCCESS;
-}
-
-/**
Prepares all information that is needed in the S3 resume boot path.
Allocate the resources or prepare informations and save in ACPI variable set for S3 resume boot path
- @param This A pointer to the EFI_ACPI_S3_SAVE_PROTOCOL instance.
- @param LegacyMemoryAddress The base address of legacy memory.
-
- @retval EFI_NOT_FOUND Some necessary information cannot be found.
@retval EFI_SUCCESS All information was saved successfully.
- @retval EFI_OUT_OF_RESOURCES Resources were insufficient to save all the information.
- @retval EFI_INVALID_PARAMETER The memory range is not located below 1 MB.
-
**/
+STATIC
EFI_STATUS
EFIAPI
S3Ready (
- IN EFI_ACPI_S3_SAVE_PROTOCOL *This,
- IN VOID *LegacyMemoryAddress
+ VOID
)
{
EFI_STATUS Status;
@@ -442,17 +400,12 @@ S3Ready ( DEBUG ((EFI_D_INFO, "S3Ready!\n"));
- //
- // Platform may invoke AcpiS3Save->S3Save() before ExitPmAuth, because we need save S3 information there, while BDS ReadyToBoot may invoke it again.
- // So if 2nd S3Save() is triggered later, we need ignore it.
- //
+ ASSERT (!AlreadyEntered);
if (AlreadyEntered) {
return EFI_SUCCESS;
}
AlreadyEntered = TRUE;
- ASSERT (LegacyMemoryAddress == NULL);
-
AcpiS3Context = AllocateMemoryBelow4G (EfiReservedMemoryType, sizeof(*AcpiS3Context));
ASSERT (AcpiS3Context != NULL);
AcpiS3ContextBuffer = (EFI_PHYSICAL_ADDRESS)(UINTN)AcpiS3Context;
@@ -539,13 +492,9 @@ OnEndOfDxe ( EFI_STATUS Status;
//
- // Our S3Ready() function ignores both of its parameters, and always
- // succeeds.
+ // Our S3Ready() function always succeeds.
//
- Status = S3Ready (
- NULL, // This
- NULL // LegacyMemoryAddress
- );
+ Status = S3Ready ();
ASSERT_EFI_ERROR (Status);
//
@@ -559,8 +508,9 @@ OnEndOfDxe ( /**
The Driver Entry Point.
- The function is the driver Entry point which will produce AcpiS3SaveProtocol.
-
+ The function is the driver Entry point that will register the End-of-Dxe
+ callback.
+
@param ImageHandle A handle for the image that is initializing this driver
@param SystemTable A pointer to the EFI system table
@@ -571,7 +521,7 @@ OnEndOfDxe ( **/
EFI_STATUS
EFIAPI
-InstallAcpiS3Save (
+InstallEndOfDxeCallback (
IN EFI_HANDLE ImageHandle,
IN EFI_SYSTEM_TABLE *SystemTable
)
@@ -583,18 +533,8 @@ InstallAcpiS3Save ( return EFI_LOAD_ERROR;
}
- if (!FeaturePcdGet(PcdPlatformCsmSupport)) {
- //
- // More memory for no CSM tip, because GDT need relocation
- //
- mLegacyRegionSize = 0x250;
- } else {
- mLegacyRegionSize = 0x100;
- }
-
Status = gBS->InstallMultipleProtocolInterfaces (
&ImageHandle,
- &gEfiAcpiS3SaveProtocolGuid, &mS3Save,
&gEfiLockBoxProtocolGuid, NULL,
NULL
);
diff --git a/OvmfPkg/AcpiS3SaveDxe/AcpiS3Save.h b/OvmfPkg/AcpiS3SaveDxe/AcpiS3Save.h deleted file mode 100644 index 65974a3402..0000000000 --- a/OvmfPkg/AcpiS3SaveDxe/AcpiS3Save.h +++ /dev/null @@ -1,59 +0,0 @@ -/** @file
- This is an implementation of the ACPI S3 Save protocol. This is defined in
- S3 boot path specification 0.9.
-
-Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR>
-
-This program and the accompanying materials
-are licensed and made available under the terms and conditions
-of the BSD License which accompanies this distribution. The
-full text of the license may be found at
-http://opensource.org/licenses/bsd-license.php
-
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-
-**/
-
-#ifndef _ACPI_S3_SAVE_H_
-#define _ACPI_S3_SAVE_H_
-
-/**
- Gets the buffer of legacy memory below 1 MB
- This function is to get the buffer in legacy memory below 1MB that is required during S3 resume.
-
- @param This A pointer to the EFI_ACPI_S3_SAVE_PROTOCOL instance.
- @param Size The returned size of legacy memory below 1 MB.
-
- @retval EFI_SUCCESS Size is successfully returned.
- @retval EFI_INVALID_PARAMETER The pointer Size is NULL.
-
-**/
-EFI_STATUS
-EFIAPI
-LegacyGetS3MemorySize (
- IN EFI_ACPI_S3_SAVE_PROTOCOL * This,
- OUT UINTN * Size
- );
-
-/**
- Prepares all information that is needed in the S3 resume boot path.
-
- Allocate the resources or prepare informations and save in ACPI variable set for S3 resume boot path
-
- @param This A pointer to the EFI_ACPI_S3_SAVE_PROTOCOL instance.
- @param LegacyMemoryAddress The base address of legacy memory.
-
- @retval EFI_NOT_FOUND Some necessary information cannot be found.
- @retval EFI_SUCCESS All information was saved successfully.
- @retval EFI_OUT_OF_RESOURCES Resources were insufficient to save all the information.
- @retval EFI_INVALID_PARAMETER The memory range is not located below 1 MB.
-
-**/
-EFI_STATUS
-EFIAPI
-S3Ready (
- IN EFI_ACPI_S3_SAVE_PROTOCOL *This,
- IN VOID *LegacyMemoryAddress
- );
-#endif
diff --git a/OvmfPkg/AcpiS3SaveDxe/AcpiS3SaveDxe.inf b/OvmfPkg/AcpiS3SaveDxe/AcpiS3SaveDxe.inf index e657bbe8c5..4cc0713d1a 100644 --- a/OvmfPkg/AcpiS3SaveDxe/AcpiS3SaveDxe.inf +++ b/OvmfPkg/AcpiS3SaveDxe/AcpiS3SaveDxe.inf @@ -1,7 +1,6 @@ ## @file
-# Component description file for AcpiS3Save module.
+# AcpiS3Save module installs EndOfDxe callback to prepare S3 boot data.
#
-# This is an implementation of the ACPI S3 Save protocol.
# Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>
#
# This program and the accompanying materials are
@@ -21,7 +20,7 @@ MODULE_TYPE = DXE_DRIVER
VERSION_STRING = 1.0
- ENTRY_POINT = InstallAcpiS3Save
+ ENTRY_POINT = InstallEndOfDxeCallback
#
# The following information is for reference only and not required by the build tools.
@@ -30,7 +29,6 @@ #
[Sources]
- AcpiS3Save.h
AcpiS3Save.c
[Packages]
@@ -61,14 +59,12 @@ gEfiEndOfDxeEventGroupGuid ## CONSUMES ## Event
[Protocols]
- gEfiAcpiS3SaveProtocolGuid # PROTOCOL ALWAYS_PRODUCED
gEfiLockBoxProtocolGuid # PROTOCOL ALWAYS_PRODUCED
gEfiLegacyBiosProtocolGuid # PROTOCOL ALWAYS_CONSUMED
gEfiLegacyRegion2ProtocolGuid # PROTOCOL SOMETIMES_CONSUMED
gFrameworkEfiMpServiceProtocolGuid # PROTOCOL SOMETIMES_CONSUMED
[FeaturePcd]
- gEfiIntelFrameworkModulePkgTokenSpaceGuid.PcdPlatformCsmSupport ## CONSUMES
gEfiMdeModulePkgTokenSpaceGuid.PcdDxeIplSwitchToLongMode
[Pcd]
|