mirror of https://github.com/acidanthera/audk.git
55 lines
1.4 KiB
C
55 lines
1.4 KiB
C
/** @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
|