<feed xmlns='http://www.w3.org/2005/Atom'>
<title>Tianocore/edk2-platforms.git/Platform/ARM/Library/CapsuleUpdateRuntimePolicyLib, branch master</title>
<subtitle>EDK II sample platform branches and tags (mirror)</subtitle>
<id>https://git.radix-linux.su/Tianocore/edk2-platforms.git/atom?h=master</id>
<link rel='self' href='https://git.radix-linux.su/Tianocore/edk2-platforms.git/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/Tianocore/edk2-platforms.git/'/>
<updated>2026-02-23T08:37:28+00:00</updated>
<entry>
<title>Platform/ARM/Library: Introduce CapsuleUpdateRuntimePolicyLib</title>
<updated>2026-02-23T08:37:28+00:00</updated>
<author>
<name>levi.yun</name>
<email>yeoreum.yun@arm.com</email>
</author>
<published>2024-03-04T19:10:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/Tianocore/edk2-platforms.git/commit/?id=01f4a2aae2f865b8c3c556d5c0bb1c7ec958ac70'/>
<id>urn:sha1:01f4a2aae2f865b8c3c556d5c0bb1c7ec958ac70</id>
<content type='text'>
CapsuleUpdatePolicyLib is used to control the CapsuleUpdate process.
Normaly, it's enough to use CapsuleUpdatePolicyLibNull if platform
updates firmware via the CapsuleUpdate with Coalescing.
However, if the platform updates the firmware without coalescing,
it would follow one of the approach listed below:

    1. fwupdate (using capsule on disk) - ReadyToBoot phase.
    2. CapsuleApp (in UEFI Shell) - ReadyToBoot phase.
    3. Runtime Capsule Update - Runtime phase.

The implementation of IsLockFmpDeviceAtLockEventGuidRequired() in
CapsuleUpdatePolicyLibNull, returns TRUE. Which means the
FmpDevicePkg Variables (i.e FmpVersionX, FmpLsvX, LastAttemptStatusX,
LastAttemptVersionX and etc) are locked to prevent any updates. Therefore,
FmpDevicePkg cannot access the Variable after the EndofDxe phase.

Arm does not update the firmware using capsule coalescing. It updates
the firmware by streaming the update data to StandaloneMm which has
an update client that manages the firmware storage device. This means
device locking is not required.

Therefore, add platform specific library that returns FALSE for
IsLockFmpDeviceAtLockEventGuidRequired() so that FmpDevicePkg
can access the variable data. This also means FmpDeviceLib does
not need to implement the FmpDeviceLock().

Signed-off-by: Yeoreum Yun &lt;yeoreum.yun@arm.com&gt;
</content>
</entry>
</feed>
