From eb3d4015a3a2db15b4f5d6b9706f80e99b5f9072 Mon Sep 17 00:00:00 2001 From: Manish V Badarkhe Date: Mon, 4 Jul 2022 10:00:29 +0100 Subject: [PATCH] docs(fwu): update firmware update design Refactored legacy firmware design and added details about PSA firmware updates. Signed-off-by: Manish V Badarkhe Change-Id: I9c123b3f62580d4271dbaff0a728b6412fae7890 --- docs/components/firmware-update.rst | 149 +++++++++++++++++++++++----- docs/resources/diagrams/Makefile | 11 +- docs/resources/diagrams/PSA-FWU.dia | Bin 0 -> 3516 bytes docs/resources/diagrams/PSA-FWU.png | Bin 0 -> 52886 bytes 4 files changed, 133 insertions(+), 27 deletions(-) create mode 100644 docs/resources/diagrams/PSA-FWU.dia create mode 100644 docs/resources/diagrams/PSA-FWU.png diff --git a/docs/components/firmware-update.rst b/docs/components/firmware-update.rst index a59156568..1ba1e1c6e 100644 --- a/docs/components/firmware-update.rst +++ b/docs/components/firmware-update.rst @@ -1,22 +1,118 @@ Firmware Update (FWU) ===================== -Introduction ------------- +This document describes the design of the various Firmware Update (FWU) +mechanisms available in TF-A. -This document describes the design of the Firmware Update (FWU) feature, which -enables authenticated firmware to update firmware images from external -interfaces such as USB, UART, SD-eMMC, NAND, NOR or Ethernet to SoC Non-Volatile -memories such as NAND Flash, LPDDR2-NVM or any memory determined by the -platform. This feature functions even when the current firmware in the system -is corrupt or missing; it therefore may be used as a recovery mode. It may also -be complemented by other, higher level firmware update software. +1. PSA Firmware Update (PSA FWU) +2. TBBR Firmware Update (TBBR FWU) + +PSA Firmware Update implements the specification of the same name (Arm document +IHI 0093), which defines a standard firmware interface for installing firmware +updates. +On the other hand, TBBR Firmware Update only covers firmware recovery. Arguably, +its name is somewhat misleading but the TBBR specification and terminology +predates PSA FWU. Both mechanisms are complementary in the sense that PSA FWU +assumes that the device has a backup or recovery capability in the event of a +failed update, which can be fulfilled with TBBR FWU implementation. + +.. _PSA Firmware Update: + +PSA Firmware Update (PSA FWU) +----------------------------- + +Introduction +~~~~~~~~~~~~ +The `PSA FW update specification`_ defines the concepts of ``Firmware Update +Client`` and ``Firmware Update Agent``. +The new firmware images are provided by the ``Client`` to the ``Update Agent`` +to flash them in non-volatile storage. + +A common system design will place the ``Update Agent`` in the Secure-world +while the ``Client`` executes in the Normal-world. +The `PSA FW update specification`_ provides ABIs meant for a Normal-world +entity aka ``Client`` to transmit the firmware images to the ``Update Agent``. + +Scope +~~~~~ +The design of the ``Client`` and ``Update Agent`` is out of scope of this +document. +This document mainly covers ``Platform Boot`` details i.e. the role of +the second stage Bootloader after FWU has been done by ``Client`` and +``Update Agent``. + +Overview +~~~~~~~~ + +There are active and update banks in the non-volatile storage identified +by the ``active_index`` and the ``update_index`` respectively. +An active bank stores running firmware, whereas an update bank contains +firmware updates. + +Once Firmwares are updated in the update bank of the non-volatile +storage, then ``Update Agent`` marks the update bank as the active bank, +and write updated FWU metadata in non-volatile storage. +On subsequent reboot, the second stage Bootloader (BL2) performs the +following actions: + +- Read FWU metadata in memory +- Retrieve the image specification (offset and length) of updated images + present in non-volatile storage with the help of FWU metadata +- Set these image specification in the corresponding I/O policies of the + updated images using the FWU platform functions + ``plat_fwu_set_images_source()`` and ``plat_fwu_set_metadata_image_source()``, + please refer :ref:`Porting Guide` +- Use these I/O policies to read the images from this address into the memory + +By default, the platform uses the active bank of non-volatile storage to boot +the images in ``trial state``. If images pass through the authentication check +and also if the system successfully booted the Normal-world image then +``Update Agent`` marks this update as accepted after further sanitisation +checking at Normal-world. + +The second stage Bootloader (BL2) avoids upgrading the platform NV-counter until +it's been confirmed that given update is accepted. + +The following sequence diagram shows platform-boot flow: + +.. image:: ../resources/diagrams/PSA-FWU.png + +If the platform fails to boot from active bank due to any reasons such +as authentication failure or non-fuctionality of Normal-world software then the +watchdog will reset to give a chance to the platform to fix the issue. This +boot failure & reset sequence might be repeated up to ``trial state`` times. +After that, the platform can decide to boot from the ``previous_active_index`` +bank. + +If the images still does not boot successfully from the ``previous_active_index`` +bank (e.g. due to ageing effect of non-volatile storage) then the platform can +choose firmware recovery mechanism :ref:`TBBR Firmware Update` to bring system +back to life. + +.. _TBBR Firmware Update: + +TBBR Firmware Update (TBBR FWU) +------------------------------- + +Introduction +~~~~~~~~~~~~ + +This technique enables authenticated firmware to update firmware images from +external interfaces such as USB, UART, SD-eMMC, NAND, NOR or Ethernet to SoC +Non-Volatile memories such as NAND Flash, LPDDR2-NVM or any memory determined +by the platform. +This feature functions even when the current firmware in the system is corrupt +or missing; it therefore may be used as a recovery mode. It may also be +complemented by other, higher level firmware update software. FWU implements a specific part of the Trusted Board Boot Requirements (TBBR) specification, Arm DEN0006C-1. It should be used in conjunction with the :ref:`Trusted Board Boot` design document, which describes the image authentication parts of the Trusted Firmware-A (TF-A) TBBR implementation. +It can be used as a last resort when all firmware updates that are carried out +as part of the :ref:`PSA Firmware Update` procedure have failed to function. + Scope ~~~~~ @@ -25,8 +121,8 @@ describe how normal world FWU images should operate. To implement normal world FWU images, please refer to the "Non-Trusted Firmware Updater" requirements in the TBBR. -FWU Overview ------------- +Overview +~~~~~~~~ The FWU boot flow is primarily mediated by BL1. Since BL1 executes in ROM, and it is usually desirable to minimize the amount of ROM code, the design allows @@ -66,7 +162,7 @@ use all defined FWU images. Other platforms may use a subset of these. |Flow Diagram| Image Identification --------------------- +~~~~~~~~~~~~~~~~~~~~ Each FWU image and certificate is identified by a unique ID, defined by the platform, which BL1 uses to fetch an image descriptor (``image_desc_t``) via a @@ -93,7 +189,7 @@ BL1 uses the FWU image descriptors to: - Initialize the execution state of the next FWU image. FWU State Machine ------------------ +~~~~~~~~~~~~~~~~~ BL1 maintains state for each FWU image during FWU execution. FWU images at lower Exception Levels raise SMCs to invoke FWU functionality in BL1, which causes @@ -126,10 +222,10 @@ The following is a brief description of the supported states: requested BL1 to resume normal world execution. BL1 SMC Interface ------------------ +~~~~~~~~~~~~~~~~~ BL1_SMC_CALL_COUNT -~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^^ :: @@ -142,7 +238,7 @@ BL1_SMC_CALL_COUNT This SMC returns the number of SMCs supported by BL1. BL1_SMC_UID -~~~~~~~~~~~ +^^^^^^^^^^^ :: @@ -156,7 +252,7 @@ This SMC returns the 128-bit `Universally Unique Identifier`_ for the BL1 SMC service. BL1_SMC_VERSION -~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^ :: @@ -170,7 +266,7 @@ BL1_SMC_VERSION This SMC returns the current version of the BL1 SMC service. BL1_SMC_RUN_IMAGE -~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^ :: @@ -190,7 +286,7 @@ This SMC passes execution control to an EL3 image described by the provided this SMC for BL1 to pass execution control to BL31. FWU_SMC_IMAGE_COPY -~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^^ :: @@ -239,7 +335,7 @@ contiguous memory. Once the SMC is handled, BL1 returns from exception to the normal world caller. FWU_SMC_IMAGE_AUTH -~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^^ :: @@ -279,7 +375,7 @@ sets the image state to AUTHENTICATED. If authentication fails then BL1 returns the -EAUTH error and sets the image state back to RESET. FWU_SMC_IMAGE_EXECUTE -~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^^^^^ :: @@ -307,7 +403,7 @@ BL1 saves the normal world caller's context, sets the secure image state to EXECUTED, and returns from exception to the secure image. FWU_SMC_IMAGE_RESUME -~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^^^^ :: @@ -334,7 +430,7 @@ the resuming world. If the call is successful then the caller provided returned to the caller. FWU_SMC_SEC_IMAGE_DONE -~~~~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^^^^^^ :: @@ -355,7 +451,7 @@ restores the normal world context and returns from exception into the normal world. FWU_SMC_UPDATE_DONE -~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^^^ :: @@ -371,7 +467,7 @@ function ``bl1_plat_fwu_done``, passing the optional argument ``client_cookie`` a ``void *``. The SMC does not return. FWU_SMC_IMAGE_RESET -~~~~~~~~~~~~~~~~~~~ +^^^^^^^^^^^^^^^^^^^ :: @@ -393,8 +489,9 @@ This is only allowed if the image is not being executed. -------------- -*Copyright (c) 2015-2019, Arm Limited and Contributors. All rights reserved.* +*Copyright (c) 2015-2022, Arm Limited and Contributors. All rights reserved.* .. _Universally Unique Identifier: https://tools.ietf.org/rfc/rfc4122.txt .. |Flow Diagram| image:: ../resources/diagrams/fwu_flow.png .. |FWU state machine| image:: ../resources/diagrams/fwu_states.png +.. _PSA FW update specification: https://developer.arm.com/documentation/den0118/a/ diff --git a/docs/resources/diagrams/Makefile b/docs/resources/diagrams/Makefile index 4e65569c1..c951754cf 100644 --- a/docs/resources/diagrams/Makefile +++ b/docs/resources/diagrams/Makefile @@ -73,7 +73,13 @@ RMM_EL3_MANIFEST_PNG = rmm_el3_manifest_struct.png rmm_el3_manifest_struct_layers = "Background" rmm_el3_manifest_struct_opts = -all:$(RESET_PNGS) $(INT_PNGS) $(XLAT_PNG) $(RMM_PNG) $(RMM_EL3_MANIFEST_PNG) +PSA_FWU_DIA = PSA-FWU.dia +PSA_FWU_PNG = PSA-FWU.png + +FWU-update_struct_layers = "background" +FWU-update_struct_opts = + +all:$(RESET_PNGS) $(INT_PNGS) $(XLAT_PNG) $(RMM_PNG) $(RMM_EL3_MANIFEST_PNG) $(PSA_FWU_PNG) $(RESET_PNGS):$(RESET_DIA) $(call generate_image,$($(patsubst %.png,%_layers,$@)),$@,png,$($(patsubst %.png,%_opts,$@)),$<) @@ -90,3 +96,6 @@ $(RMM_PNG):$(RMM_DIA) $(RMM_EL3_MANIFEST_PNG):$(RMM_EL3_MANIFEST_DIA) $(call generate_image,$($(patsubst %.png,%_layers,$@)),$@,png,$($(patsubst %.png,%_opts,$@)),$<) + +$(PSA_FWU_PNG):$(PSA_FWU_DIA) + $(call generate_image,$($(patsubst %.png,%_layers,$@)),$@,png,$($(patsubst %.png,%_opts,$@)),$<) diff --git a/docs/resources/diagrams/PSA-FWU.dia b/docs/resources/diagrams/PSA-FWU.dia new file mode 100644 index 0000000000000000000000000000000000000000..aac52769706225cc93b435a7a14e153641b1adc4 GIT binary patch literal 3516 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 literal 0 HcmV?d00001