From: "Liming Gao" <liming.gao@intel.com>
To: "devel@edk2.groups.io" <devel@edk2.groups.io>,
"Fu, Siyuan" <siyuan.fu@intel.com>
Cc: "Wu, Hao A" <hao.a.wu@intel.com>
Subject: Re: [edk2-devel] [PATCH v2] MdeModulePkg/Capsule: Remove RT restriction in UpdateCapsule service.
Date: Fri, 7 Feb 2020 06:42:00 +0000 [thread overview]
Message-ID: <cfc09f4c10bd46e9ac2e0a2f7f1cb397@intel.com> (raw)
In-Reply-To: <b384fef9fbf004f01f3504ad2ec7f21e191b8b97.1581057382.git.siyuan.fu@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
> -----Original Message-----
> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Siyuan, Fu
> Sent: Friday, February 7, 2020 2:39 PM
> To: devel@edk2.groups.io
> Cc: Wu, Hao A <hao.a.wu@intel.com>; Gao, Liming <liming.gao@intel.com>
> Subject: [edk2-devel] [PATCH v2] MdeModulePkg/Capsule: Remove RT restriction in UpdateCapsule service.
>
> V2:
> Add feature PCD for this change.
>
> Current UpdateCapsule service will reject all non-reset capsule images and
> return EFI_OUT_OF_RESOURCE if the system is at runtime. This will block a
> platform CapsuleLib from implementing ProcessCapsuleImage() with runtime
> capsule processing capability.
>
> This patch removes this restriction. The change is controled by a feature
> PCD PcdSupportProcessCapsuleAtRuntime, and the default value is FALSE
> which means not enable this feature.
>
> BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=2501
>
> Cc: Hao A Wu <hao.a.wu@intel.com>
> Cc: Liming Gao <liming.gao@intel.com>
> Signed-off-by: Siyuan Fu <siyuan.fu@intel.com>
> ---
> MdeModulePkg/MdeModulePkg.dec | 8 +++++++-
> MdeModulePkg/MdeModulePkg.uni | 9 ++++++++-
> .../Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf | 5 +++--
> .../Universal/CapsuleRuntimeDxe/CapsuleService.c | 4 ++--
> 4 files changed, 20 insertions(+), 6 deletions(-)
>
> diff --git a/MdeModulePkg/MdeModulePkg.dec b/MdeModulePkg/MdeModulePkg.dec
> index e840cebe2e..91a3c60823 100644
> --- a/MdeModulePkg/MdeModulePkg.dec
> +++ b/MdeModulePkg/MdeModulePkg.dec
> @@ -4,7 +4,7 @@
> # and libraries instances, which are used for those modules.
> #
> # Copyright (c) 2019, NVIDIA CORPORATION. All rights reserved.
> -# Copyright (c) 2007 - 2019, Intel Corporation. All rights reserved.<BR>
> +# Copyright (c) 2007 - 2020, Intel Corporation. All rights reserved.<BR>
> # Copyright (c) 2016, Linaro Ltd. All rights reserved.<BR>
> # (C) Copyright 2016 - 2019 Hewlett Packard Enterprise Development LP<BR>
> # Copyright (c) 2017, AMD Incorporated. All rights reserved.<BR>
> @@ -870,6 +870,12 @@
> # @Prompt Degrade 64-bit PCI MMIO BARs for legacy BIOS option ROMs
> gEfiMdeModulePkgTokenSpaceGuid.PcdPciDegradeResourceForOptionRom|TRUE|BOOLEAN|0x0001003a
>
> + ## Indicates if the platform can support process non-reset capsule image at runtime.<BR><BR>
> + # TRUE - Supports process non-reset capsule image at runtime.<BR>
> + # FALSE - Does not support process non-reset capsule image at runtime.<BR>
> + # @Prompt Enable process non-reset capsule image at runtime.
> + gEfiMdeModulePkgTokenSpaceGuid.PcdSupportProcessCapsuleAtRuntime|FALSE|BOOLEAN|0x00010079
> +
> [PcdsFeatureFlag.IA32, PcdsFeatureFlag.ARM, PcdsFeatureFlag.AARCH64]
> gEfiMdeModulePkgTokenSpaceGuid.PcdPciDegradeResourceForOptionRom|FALSE|BOOLEAN|0x0001003a
>
> diff --git a/MdeModulePkg/MdeModulePkg.uni b/MdeModulePkg/MdeModulePkg.uni
> index d9c7b1ac6c..cc18e53322 100644
> --- a/MdeModulePkg/MdeModulePkg.uni
> +++ b/MdeModulePkg/MdeModulePkg.uni
> @@ -4,7 +4,7 @@
> // It also provides the definitions(including PPIs/PROTOCOLs/GUIDs and library classes)
> // and libraries instances, which are used for those modules.
> //
> -// Copyright (c) 2007 - 2019, Intel Corporation. All rights reserved.<BR>
> +// Copyright (c) 2007 - 2020, Intel Corporation. All rights reserved.<BR>
> //
> // SPDX-License-Identifier: BSD-2-Clause-Patent
> //
> @@ -1009,6 +1009,13 @@
> "TRUE - All PCI MMIO BARs of a device will be located below 4 GB if it has an option
> ROM.<BR>"
> "FALSE - PCI MMIO BARs of a device may be located above 4 GB even if it has an
> option ROM.<BR>"
>
> +#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdSupportProcessCapsuleAtRuntime_PROMPT #language en-US "Enable process
> non-reset capsule image at runtime."
> +
> +#string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdSupportProcessCapsuleAtRuntime_HELP #language en-US "Indicates if the
> platform can support process non-reset capsule image at runtime.<BR><BR>\n"
> + "TRUE - Supports process non-reset capsule image at runtime.<BR>\n"
> + "FALSE - Does not support process non-reset capsule image at runtime.<BR>"
> +
> +
> #string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdStatusCodeSubClassCapsule_PROMPT #language en-US "Status Code for Capsule
> subclass definitions"
>
> #string STR_gEfiMdeModulePkgTokenSpaceGuid_PcdStatusCodeSubClassCapsule_HELP #language en-US "Status Code for Capsule
> subclass definitions.<BR><BR>\n"
> diff --git a/MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf
> b/MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf
> index 9da450722b..942eda235c 100644
> --- a/MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf
> +++ b/MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf
> @@ -4,7 +4,7 @@
> # It installs the Capsule Architectural Protocol defined in PI1.0a to signify
> # the capsule runtime services are ready.
> #
> -# Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.<BR>
> +# Copyright (c) 2006 - 2020, Intel Corporation. All rights reserved.<BR>
> # SPDX-License-Identifier: BSD-2-Clause-Patent
> #
> ##
> @@ -82,7 +82,8 @@
> gEdkiiVariableLockProtocolGuid
>
> [FeaturePcd]
> - gEfiMdeModulePkgTokenSpaceGuid.PcdSupportUpdateCapsuleReset ## CONSUMES
> + gEfiMdeModulePkgTokenSpaceGuid.PcdSupportUpdateCapsuleReset ## CONSUMES
> + gEfiMdeModulePkgTokenSpaceGuid.PcdSupportProcessCapsuleAtRuntime ## CONSUMES
>
> [FeaturePcd.X64]
> gEfiMdeModulePkgTokenSpaceGuid.PcdDxeIplSwitchToLongMode ## CONSUMES
> diff --git a/MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleService.c
> b/MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleService.c
> index 77b8f00062..2fba22dec2 100644
> --- a/MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleService.c
> +++ b/MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleService.c
> @@ -4,7 +4,7 @@
> It installs the Capsule Architectural Protocol defined in PI1.0a to signify
> the capsule runtime services are ready.
>
> -Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.<BR>
> +Copyright (c) 2006 - 2020, Intel Corporation. All rights reserved.<BR>
> SPDX-License-Identifier: BSD-2-Clause-Patent
>
> **/
> @@ -138,7 +138,7 @@ UpdateCapsule (
> // Platform specific update for the non-reset capsule image.
> //
> if ((CapsuleHeader->Flags & CAPSULE_FLAGS_PERSIST_ACROSS_RESET) == 0) {
> - if (EfiAtRuntime ()) {
> + if (EfiAtRuntime () && !FeaturePcdGet (PcdSupportProcessCapsuleAtRuntime)) {
> Status = EFI_OUT_OF_RESOURCES;
> } else {
> Status = ProcessCapsuleImage(CapsuleHeader);
> --
> 2.19.1.windows.1
>
>
>
prev parent reply other threads:[~2020-02-07 6:42 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-02-07 6:38 [PATCH v2] MdeModulePkg/Capsule: Remove RT restriction in UpdateCapsule service Siyuan, Fu
2020-02-07 6:42 ` Liming Gao [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=cfc09f4c10bd46e9ac2e0a2f7f1cb397@intel.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