Reviewed-by: Liming Gao <liming....@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...@intel.com>; Gao, Liming <liming....@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...@intel.com>
> Cc: Liming Gao <liming....@intel.com>
> Signed-off-by: Siyuan Fu <siyuan...@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
> 
> 
> 


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#54002): https://edk2.groups.io/g/devel/message/54002
Mute This Topic: https://groups.io/mt/71045750/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to