From af1a266670d040d2f4083ff309d732d648afba2a Mon Sep 17 00:00:00 2001 From: Angelos Mouzakitis Date: Tue, 10 Oct 2023 14:33:42 +0000 Subject: Add submodule dependency files Change-Id: Iaf8d18082d3991dec7c0ebbea540f092188eb4ec --- .../Universal/CapsuleRuntimeDxe/Arm/CapsuleReset.c | 36 ++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 roms/edk2/MdeModulePkg/Universal/CapsuleRuntimeDxe/Arm/CapsuleReset.c (limited to 'roms/edk2/MdeModulePkg/Universal/CapsuleRuntimeDxe/Arm/CapsuleReset.c') diff --git a/roms/edk2/MdeModulePkg/Universal/CapsuleRuntimeDxe/Arm/CapsuleReset.c b/roms/edk2/MdeModulePkg/Universal/CapsuleRuntimeDxe/Arm/CapsuleReset.c new file mode 100644 index 000000000..e05f14de6 --- /dev/null +++ b/roms/edk2/MdeModulePkg/Universal/CapsuleRuntimeDxe/Arm/CapsuleReset.c @@ -0,0 +1,36 @@ +/** @file + ARM implementation of architecture specific routines related to + PersistAcrossReset capsules + + Copyright (c) 2018, Linaro, Ltd. All rights reserved.
+ Copyright (c) 2019, Intel Corporation. All rights reserved.
+ + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#include "CapsuleService.h" + +/** + Whether the platform supports capsules that persist across reset. Note that + some platforms only support such capsules at boot time. + + @return TRUE if a PersistAcrossReset capsule may be passed to UpdateCapsule() + at this time + FALSE otherwise +**/ +BOOLEAN +IsPersistAcrossResetCapsuleSupported ( + VOID + ) +{ + // + // ARM requires the capsule payload to be cleaned to the point of coherency + // (PoC), but only permits doing so using cache maintenance instructions that + // operate on virtual addresses. Since at runtime, we don't know the virtual + // addresses of the data structures that make up the scatter/gather list, we + // cannot perform the maintenance, and all we can do is give up. + // + return FeaturePcdGet (PcdSupportUpdateCapsuleReset) && !EfiAtRuntime (); +} + -- cgit