/** @file This file defines the SMM S3 communication hob structure. Copyright (c) 2021, Intel Corporation. All rights reserved.
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