Implement ResetSystemLib's EnterS3WithImmediateWake() routine using a jump back to the PEI entry point with interrupts and MMU+caches disabled. This is only possible at boot time, when we are sure that the current CPU is the only one up and running. Also, it depends on the platform whether the PEI code is preserved in memory (it may be copied to DRAM rather than execute in place), so also add a feature PCD to selectively enable this feature. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>
45 lines
1.2 KiB
INI
45 lines
1.2 KiB
INI
#/** @file
|
|
# ResetSystemLib implementation using PSCI calls
|
|
#
|
|
# Copyright (c) 2017, Linaro Ltd. 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.
|
|
#
|
|
#**/
|
|
|
|
[Defines]
|
|
INF_VERSION = 0x00010019
|
|
BASE_NAME = ArmSmcPsciResetSystemLib
|
|
FILE_GUID = 18B12C83-7718-4D83-ADA4-87F2FE698DD4
|
|
MODULE_TYPE = BASE
|
|
VERSION_STRING = 1.0
|
|
LIBRARY_CLASS = ResetSystemLib
|
|
|
|
[Sources]
|
|
ArmSmcPsciResetSystemLib.c
|
|
|
|
[Packages]
|
|
ArmPkg/ArmPkg.dec
|
|
MdeModulePkg/MdeModulePkg.dec
|
|
MdePkg/MdePkg.dec
|
|
|
|
[LibraryClasses]
|
|
ArmMmuLib
|
|
ArmSmcLib
|
|
BaseLib
|
|
DebugLib
|
|
UefiBootServicesTableLib
|
|
UefiRuntimeLib
|
|
|
|
[FeaturePcd]
|
|
gArmTokenSpaceGuid.PcdArmReenterPeiForCapsuleWarmReboot
|
|
|
|
[FixedPcd]
|
|
gArmTokenSpaceGuid.PcdFvBaseAddress
|