]>
Commit | Line | Data |
---|---|---|
202c9c8d | 1 | /** @file\r |
2 | This PPI produces functions to interpret and execute the PI boot script table.\r | |
9095d37b | 3 | \r |
202c9c8d | 4 | This PPI is published by a PEIM and provides for the restoration of the platform's\r |
9095d37b LG |
5 | configuration when resuming from the ACPI S3 power state. The ability to execute\r |
6 | the boot script may depend on the availability of other PPIs. For example, if\r | |
7 | the boot script includes an SMBus command, this PEIM looks for the relevant PPI\r | |
8 | that is able to execute that command.\r | |
9 | \r | |
10 | Copyright (c) 2010 - 2018, Intel Corporation. All rights reserved.<BR>\r | |
9344f092 | 11 | SPDX-License-Identifier: BSD-2-Clause-Patent\r |
202c9c8d | 12 | \r |
13 | @par Revision Reference:\r | |
9095d37b | 14 | This PPI is defined in UEFI Platform Initialization Specification 1.2 Volume 5:\r |
202c9c8d | 15 | Standards\r |
16 | \r | |
17 | **/\r | |
18 | \r | |
19 | #ifndef __PEI_S3_RESUME_PPI_H__\r | |
20 | #define __PEI_S3_RESUME_PPI_H__\r | |
21 | \r | |
22 | ///\r | |
23 | /// Global ID for EFI_PEI_S3_RESUME2_PPI\r | |
24 | ///\r | |
25 | #define EFI_PEI_S3_RESUME2_PPI_GUID \\r | |
26 | { \\r | |
27 | 0x6D582DBC, 0xDB85, 0x4514, {0x8F, 0xCC, 0x5A, 0xDF, 0x62, 0x27, 0xB1, 0x47 } \\r | |
28 | }\r | |
29 | \r | |
30 | ///\r | |
31 | /// Forward declaration for EFI_PEI_S3_RESUME_PPI\r | |
32 | ///\r | |
33 | typedef struct _EFI_PEI_S3_RESUME2_PPI EFI_PEI_S3_RESUME2_PPI;\r | |
34 | \r | |
35 | /**\r | |
36 | Restores the platform to its preboot configuration for an S3 resume and\r | |
37 | jumps to the OS waking vector.\r | |
38 | \r | |
9095d37b | 39 | This function will restore the platform to its pre-boot configuration that was\r |
202c9c8d | 40 | pre-stored in the boot script table and transfer control to OS waking vector.\r |
9095d37b | 41 | Upon invocation, this function is responsible for locating the following\r |
202c9c8d | 42 | information before jumping to OS waking vector:\r |
43 | - ACPI tables\r | |
44 | - boot script table\r | |
45 | - any other information that it needs\r | |
9095d37b LG |
46 | \r |
47 | The S3RestoreConfig() function then executes the pre-stored boot script table\r | |
48 | and transitions the platform to the pre-boot state. The boot script is recorded\r | |
202c9c8d | 49 | during regular boot using the EFI_S3_SAVE_STATE_PROTOCOL.Write() and\r |
9095d37b LG |
50 | EFI_S3_SMM_SAVE_STATE_PROTOCOL.Write() functions. Finally, this function\r |
51 | transfers control to the OS waking vector. If the OS supports only a real-mode\r | |
52 | waking vector, this function will switch from flat mode to real mode before\r | |
53 | jumping to the waking vector. If all platform pre-boot configurations are\r | |
54 | successfully restored and all other necessary information is ready, this\r | |
55 | function will never return and instead will directly jump to the OS waking\r | |
56 | vector. If this function returns, it indicates that the attempt to resume\r | |
57 | from the ACPI S3 sleep state failed.\r | |
58 | \r | |
202c9c8d | 59 | @param[in] This Pointer to this instance of the PEI_S3_RESUME_PPI\r |
60 | \r | |
61 | @retval EFI_ABORTED Execution of the S3 resume boot script table failed.\r | |
9095d37b | 62 | @retval EFI_NOT_FOUND Some necessary information that is used for the S3\r |
202c9c8d | 63 | resume boot path could not be located.\r |
64 | \r | |
65 | **/\r | |
66 | typedef\r | |
67 | EFI_STATUS\r | |
68 | (EFIAPI *EFI_PEI_S3_RESUME_PPI_RESTORE_CONFIG2)(\r | |
69 | IN EFI_PEI_S3_RESUME2_PPI *This\r | |
70 | );\r | |
71 | \r | |
72 | /**\r | |
73 | EFI_PEI_S3_RESUME2_PPI accomplishes the firmware S3 resume boot\r | |
74 | path and transfers control to OS.\r | |
75 | **/\r | |
76 | struct _EFI_PEI_S3_RESUME2_PPI {\r | |
77 | ///\r | |
78 | /// Restores the platform to its preboot configuration for an S3 resume and\r | |
79 | /// jumps to the OS waking vector.\r | |
80 | ///\r | |
81 | EFI_PEI_S3_RESUME_PPI_RESTORE_CONFIG2 S3RestoreConfig2;\r | |
82 | };\r | |
83 | \r | |
84 | extern EFI_GUID gEfiPeiS3Resume2PpiGuid;\r | |
85 | \r | |
86 | #endif\r |