public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
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
>


      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