hc
2024-03-22 a0752693d998599af469473b8dc239ef973a012f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
/** @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 ();
}