diff --git a/ArmPkg/ArmPkg.dec b/ArmPkg/ArmPkg.dec index 39ff339c95..eaf1072d9e 100644 --- a/ArmPkg/ArmPkg.dec +++ b/ArmPkg/ArmPkg.dec @@ -78,10 +78,6 @@ # Define if the GICv3 controller should use the GICv2 legacy gArmTokenSpaceGuid.PcdArmGicV3WithV2Legacy|FALSE|BOOLEAN|0x00000042 - # Whether to implement warm reboot for capsule update using a jump back to the - # PEI entry point with caches and interrupts disabled. - gArmTokenSpaceGuid.PcdArmReenterPeiForCapsuleWarmReboot|FALSE|BOOLEAN|0x0000001F - [PcdsFeatureFlag.ARM] # Whether to map normal memory as non-shareable. FALSE is the safe choice, but # TRUE may be appropriate to fix performance problems if you don't care about diff --git a/ArmPkg/Library/ArmSmcPsciResetSystemLib/AArch64/Reset.S b/ArmPkg/Library/ArmSmcPsciResetSystemLib/AArch64/Reset.S deleted file mode 100644 index d0d908b7d7..0000000000 --- a/ArmPkg/Library/ArmSmcPsciResetSystemLib/AArch64/Reset.S +++ /dev/null @@ -1,24 +0,0 @@ -/** @file - ResetSystemLib implementation using PSCI calls - - Copyright (c) 2018, Linaro Ltd. All rights reserved.
- - SPDX-License-Identifier: BSD-2-Clause-Patent - -**/ - -#include - -ASM_FUNC(DisableMmuAndReenterPei) - stp x29, x30, [sp, #-16]! - mov x29, sp - - bl ArmDisableMmu - - // no memory accesses after MMU and caches have been disabled - - MOV64 (x0, FixedPcdGet64 (PcdFvBaseAddress)) - blr x0 - - // never returns - nop diff --git a/ArmPkg/Library/ArmSmcPsciResetSystemLib/AArch64/Reset.asm b/ArmPkg/Library/ArmSmcPsciResetSystemLib/AArch64/Reset.asm deleted file mode 100644 index 752df07251..0000000000 --- a/ArmPkg/Library/ArmSmcPsciResetSystemLib/AArch64/Reset.asm +++ /dev/null @@ -1,29 +0,0 @@ -;/** @file -; ResetSystemLib implementation using PSCI calls -; -; Copyright (c) 2018, Linaro Ltd. All rights reserved.
-; -; SPDX-License-Identifier: BSD-2-Clause-Patent -; -;**/ - - AREA Reset, CODE, READONLY - - EXPORT DisableMmuAndReenterPei - IMPORT ArmDisableMmu - -DisableMmuAndReenterPei - stp x29, x30, [sp, #-16]! - mov x29, sp - - bl ArmDisableMmu - - ; no memory accesses after MMU and caches have been disabled - - movl x0, FixedPcdGet64 (PcdFvBaseAddress) - blr x0 - - ; never returns - nop - - END diff --git a/ArmPkg/Library/ArmSmcPsciResetSystemLib/Arm/Reset.S b/ArmPkg/Library/ArmSmcPsciResetSystemLib/Arm/Reset.S deleted file mode 100644 index c0c5bcf197..0000000000 --- a/ArmPkg/Library/ArmSmcPsciResetSystemLib/Arm/Reset.S +++ /dev/null @@ -1,23 +0,0 @@ -/** @file - ResetSystemLib implementation using PSCI calls - - Copyright (c) 2018, Linaro Ltd. All rights reserved.
- - SPDX-License-Identifier: BSD-2-Clause-Patent - -**/ - -#include - -ASM_FUNC(DisableMmuAndReenterPei) - push {lr} - - bl ArmDisableMmu - - // no memory accesses after MMU and caches have been disabled - - MOV32 (r0, FixedPcdGet64 (PcdFvBaseAddress)) - blx r0 - - // never returns - nop diff --git a/ArmPkg/Library/ArmSmcPsciResetSystemLib/Arm/Reset.asm b/ArmPkg/Library/ArmSmcPsciResetSystemLib/Arm/Reset.asm deleted file mode 100644 index ab7519a5a9..0000000000 --- a/ArmPkg/Library/ArmSmcPsciResetSystemLib/Arm/Reset.asm +++ /dev/null @@ -1,28 +0,0 @@ -;/** @file -; ResetSystemLib implementation using PSCI calls -; -; Copyright (c) 2018, Linaro Ltd. All rights reserved.
-; -; SPDX-License-Identifier: BSD-2-Clause-Patent -; -;**/ - - INCLUDE AsmMacroExport.inc - PRESERVE8 - - IMPORT ArmDisableMmu - -RVCT_ASM_EXPORT DisableMmuAndReenterPei - push {lr} - - bl ArmDisableMmu - - ; no memory accesses after MMU and caches have been disabled - - mov32 r0, FixedPcdGet64 (PcdFvBaseAddress) - blx r0 - - ; never returns - nop - - END diff --git a/ArmPkg/Library/ArmSmcPsciResetSystemLib/ArmSmcPsciResetSystemLib.c b/ArmPkg/Library/ArmSmcPsciResetSystemLib/ArmSmcPsciResetSystemLib.c index b2dde9bfc1..8b5ff5c27e 100644 --- a/ArmPkg/Library/ArmSmcPsciResetSystemLib/ArmSmcPsciResetSystemLib.c +++ b/ArmPkg/Library/ArmSmcPsciResetSystemLib/ArmSmcPsciResetSystemLib.c @@ -10,13 +10,10 @@ #include -#include #include #include #include #include -#include -#include #include @@ -76,79 +73,6 @@ ResetShutdown ( ArmCallSmc (&ArmSmcArgs); } -VOID DisableMmuAndReenterPei (VOID); - -/** - This function causes the system to enter S3 and then wake up immediately. - - If this function returns, it means that the system does not support S3 feature. -**/ -VOID -EFIAPI -EnterS3WithImmediateWake ( - VOID - ) -{ - EFI_PHYSICAL_ADDRESS Alloc; - EFI_MEMORY_DESCRIPTOR *MemMap; - UINTN MemMapSize; - UINTN MapKey, DescriptorSize; - UINT32 DescriptorVersion; - EFI_STATUS Status; - - if (FeaturePcdGet (PcdArmReenterPeiForCapsuleWarmReboot) && - !EfiAtRuntime ()) { - // - // At boot time, we are the only core running, so we can implement the - // immediate wake (which is used by capsule update) by disabling the MMU - // and interrupts, and jumping to the PEI entry point. - // - - // - // Obtain the size of the memory map - // - MemMapSize = 0; - MemMap = NULL; - Status = gBS->GetMemoryMap (&MemMapSize, MemMap, &MapKey, &DescriptorSize, - &DescriptorVersion); - ASSERT (Status == EFI_BUFFER_TOO_SMALL); - - // - // Add some slack to the allocation to cater for changes in the memory - // map if ExitBootServices () fails the first time around. - // - MemMapSize += SIZE_4KB; - Status = gBS->AllocatePages (AllocateAnyPages, EfiBootServicesData, - EFI_SIZE_TO_PAGES (MemMapSize), &Alloc); - ASSERT_EFI_ERROR (Status); - - MemMap = (EFI_MEMORY_DESCRIPTOR *)(UINTN)Alloc; - - Status = gBS->GetMemoryMap (&MemMapSize, MemMap, &MapKey, &DescriptorSize, - &DescriptorVersion); - ASSERT_EFI_ERROR (Status); - - Status = gBS->ExitBootServices (gImageHandle, MapKey); - if (EFI_ERROR (Status)) { - // - // ExitBootServices () may fail the first time around if an event fired - // right after the call to GetMemoryMap() which allocated or freed memory. - // Since that first call to ExitBootServices () will disarm the timer, - // this is guaranteed not to happen again, so one additional attempt - // should suffice. - // - Status = gBS->GetMemoryMap (&MemMapSize, MemMap, &MapKey, &DescriptorSize, - &DescriptorVersion); - ASSERT_EFI_ERROR (Status); - - Status = gBS->ExitBootServices (gImageHandle, MapKey); - ASSERT_EFI_ERROR (Status); - } - - DisableMmuAndReenterPei (); - } -} - /** This function causes a systemwide reset. The exact type of the reset is defined by the EFI_GUID that follows the Null-terminated Unicode string passed diff --git a/ArmPkg/Library/ArmSmcPsciResetSystemLib/ArmSmcPsciResetSystemLib.inf b/ArmPkg/Library/ArmSmcPsciResetSystemLib/ArmSmcPsciResetSystemLib.inf index fa19bf6491..c17b28cfac 100644 --- a/ArmPkg/Library/ArmSmcPsciResetSystemLib/ArmSmcPsciResetSystemLib.inf +++ b/ArmPkg/Library/ArmSmcPsciResetSystemLib/ArmSmcPsciResetSystemLib.inf @@ -15,14 +15,6 @@ VERSION_STRING = 1.0 LIBRARY_CLASS = ResetSystemLib -[Sources.AARCH64] - AArch64/Reset.S | GCC - AArch64/Reset.asm | MSFT - -[Sources.ARM] - Arm/Reset.S | GCC - Arm/Reset.asm | RVCT - [Sources] ArmSmcPsciResetSystemLib.c @@ -32,15 +24,6 @@ MdePkg/MdePkg.dec [LibraryClasses] - ArmMmuLib ArmSmcLib BaseLib DebugLib - UefiBootServicesTableLib - UefiRuntimeLib - -[FeaturePcd] - gArmTokenSpaceGuid.PcdArmReenterPeiForCapsuleWarmReboot - -[FixedPcd] - gArmTokenSpaceGuid.PcdFvBaseAddress