/** @file | |
This file defines the SMM S3 communication hob structure. | |
Copyright (c) 2021, Intel Corporation. All rights reserved.<BR> | |
SPDX-License-Identifier: BSD-2-Clause-Patent | |
**/ | |
#ifndef PAYLOAD_S3_COMMUNICATION_GUID_H_ | |
#define PAYLOAD_S3_COMMUNICATION_GUID_H_ | |
extern EFI_GUID gS3CommunicationGuid; | |
#pragma pack(1) | |
typedef struct { | |
EFI_SMRAM_DESCRIPTOR CommBuffer; | |
BOOLEAN PldAcpiS3Enable; | |
} PLD_S3_COMMUNICATION; | |
/// | |
/// The information below is used for communication between bootloader and payload. | |
/// It is used to save/store some registers in S3 path | |
/// | |
/// This region exists only when gEfiAcpiVariableGuid HOB exist. | |
/// when PLD_S3_INFO.PldAcpiS3Enable is false, the communication buffer is defined as below. | |
/// | |
typedef struct { | |
UINT32 ApicId; | |
UINT32 SmmBase; | |
} CPU_SMMBASE; | |
typedef struct { | |
UINT8 SwSmiData; | |
UINT8 SwSmiTriggerValue; | |
UINT16 Reserved; | |
UINT32 CpuCount; | |
CPU_SMMBASE SmmBase[0]; | |
} SMM_S3_INFO; | |
// | |
// Payload would save this structure to S3 communication area in normal boot. | |
// In S3 path, bootloader need restore SMM base and writie IO port 0xB2 with SwSmiTriggerValue | |
// to trigger SMI to let payload to restore S3. | |
// | |
typedef struct { | |
EFI_HOB_GUID_TYPE Header; | |
SMM_S3_INFO S3Info; | |
} PLD_TO_BL_SMM_INFO; | |
#pragma pack() | |
#endif |