From: Ard Biesheuvel <ard.biesheuvel@linaro.org>
To: "edk2-devel@lists.01.org" <edk2-devel@lists.01.org>
Cc: Leif Lindholm <leif.lindholm@linaro.org>,
"Zeng, Star" <star.zeng@intel.com>,
"Yao, Jiewen" <jiewen.yao@intel.com>,
"Kinney, Michael D" <michael.d.kinney@intel.com>,
Ard Biesheuvel <ard.biesheuvel@linaro.org>
Subject: Re: [PATCH v4 0/4] MdeModulePkg ArmPkg: support for persistent capsules and progress reporting
Date: Fri, 15 Jun 2018 18:19:31 +0200 [thread overview]
Message-ID: <CAKv+Gu8eHLebFtgxf+-A=uXURz7XOf51=MgBG25EZZc-3w-6sw@mail.gmail.com> (raw)
In-Reply-To: <20180613080901.7156-1-ard.biesheuvel@linaro.org>
On 13 June 2018 at 10:08, Ard Biesheuvel <ard.biesheuvel@linaro.org> wrote:
> This is the delta of code required to implement PersistAcrossReset on ARM
> systems, and to wire up the capsule handling routines in a way that makes
> the new progress reporting code do something meaningful on such platforms.
>
> Changes since v3:
> - let both UpdateCapsule() and QueryCapsuleCapabilities() return EFI_UNSUPPORTED
> when called at OS runtime on an ARM system
> - reset the system unconditionally after having processed any capsules (#3)
> - re-add Leif's ack (#3)
>
> Changes since v2:
> - move cache handling from CapsulePei to CapsuleRuntimeDxe, and make it ARM only
> - drop patch to change ProcessCapsules() logic in DxeCapsuleLibFmp; instead,
> the platform BDS code is modified to perform the ProcessCapsuleImage()
> call directly
>
> Changes since v1:
> - incorporate Star's feedback (#1, #2)
> - add Leif's ack (#4)
>
> Patch #1 ensures that the capsule data which is preserved in DRAM across
> a reboot is written back to main memory before attempting to access it
> with the caches off.
>
> Patch #2 updates DxeCapsuleLibFmp so it does not pass down the progress
> indication callback if its own attempt to invoke it has already failed.
>
> Patch #3 updates ArmPkg's generic PlatformBootManagerLib implementation
> to only call ProcessCapsules() after the [potentially non-trusted]
> console is up and running, to ensure that firmware update progress can
> be reported to the user.
>
> Patch #4 modifies ArmSmcPsciResetSystemLib to emulate a proper warm reboot
> by reentering PEI with interrupts, MMU and caches enabled. This works
> around the lack of an architected warm reboot in most current implementations.
> (The PSCI spec does cover warm reboot, but it was added recently and most
> secure firmware implementations haven't caught up yet)
>
> Ard Biesheuvel (4):
> MdeModulePkg/CapsuleRuntimeDxe: clean the capsule payload to DRAM
> MdeModulePkg/DxeCapsuleLibFmp: pass progress callback only if it works
> ArmPkg/PlatformBootManagerLib: call ProcessCapsules() only once
> ArmPkg/ArmSmcPsciResetSystemLib: implement fallback for warm reboot
>
Pushed as 488aab257f70..dde2dd64f070
Thanks all
> ArmPkg/ArmPkg.dec | 4 +
> .../ArmSmcPsciResetSystemLib.c | 21 ++++-
> .../ArmSmcPsciResetSystemLib.inf | 9 ++
> .../PlatformBootManagerLib/PlatformBm.c | 86 +++++++++++++------
> .../PlatformBootManagerLib.inf | 1 +
> .../Library/DxeCapsuleLibFmp/DxeCapsuleLib.c | 13 ++-
> .../CapsuleRuntimeDxe/Arm/CapsuleReset.c | 77 +++++++++++++++++
> .../CapsuleRuntimeDxe/CapsuleReset.c | 51 +++++++++++
> .../CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf | 14 ++-
> .../CapsuleRuntimeDxe/CapsuleService.c | 33 ++-----
> .../CapsuleRuntimeDxe/CapsuleService.h | 73 ++++++++++++++++
> 11 files changed, 321 insertions(+), 61 deletions(-)
> create mode 100644 MdeModulePkg/Universal/CapsuleRuntimeDxe/Arm/CapsuleReset.c
> create mode 100644 MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleReset.c
> create mode 100644 MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleService.h
>
> --
> 2.17.1
>
prev parent reply other threads:[~2018-06-15 16:19 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-06-13 8:08 [PATCH v4 0/4] MdeModulePkg ArmPkg: support for persistent capsules and progress reporting Ard Biesheuvel
2018-06-13 8:08 ` [PATCH v4 1/4] MdeModulePkg/CapsuleRuntimeDxe: clean the capsule payload to DRAM Ard Biesheuvel
2018-06-14 0:54 ` Zeng, Star
2018-06-15 10:52 ` Ard Biesheuvel
2018-06-15 14:02 ` Yao, Jiewen
2018-06-13 8:08 ` [PATCH v4 2/4] MdeModulePkg/DxeCapsuleLibFmp: pass progress callback only if it works Ard Biesheuvel
2018-06-14 0:54 ` Zeng, Star
2018-06-13 8:09 ` [PATCH v4 3/4] ArmPkg/PlatformBootManagerLib: call ProcessCapsules() only once Ard Biesheuvel
2018-06-13 8:09 ` [PATCH v4 4/4] ArmPkg/ArmSmcPsciResetSystemLib: implement fallback for warm reboot Ard Biesheuvel
2018-06-15 16:19 ` Ard Biesheuvel [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-list from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='CAKv+Gu8eHLebFtgxf+-A=uXURz7XOf51=MgBG25EZZc-3w-6sw@mail.gmail.com' \
--to=devel@edk2.groups.io \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox