| /** @file | |
| ARM implementation of architecture specific routines related to | |
| PersistAcrossReset capsules | |
| Copyright (c) 2018, Linaro, Ltd. All rights reserved.<BR> | |
| Copyright (c) 2019, Intel Corporation. All rights reserved.<BR> | |
| 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 (); | |
| } |