1) Add capsule related GUID.
   EdkiiSystemFmpCapsule
2) Add capsule related library.
   EdkiiSystemCapsuleLib
   FmpAuthenticationLib
   IniParsingLib
   PlatformFlashAccessLib.c
3) Add capsule related status code PCD.
   PcdStatusCodeSubClassCapsule
   PcdCapsuleStatusCodeProcessCapsulesBegin
   PcdCapsuleStatusCodeProcessCapsulesEnd
   PcdCapsuleStatusCodeUpdatingFirmware
   PcdCapsuleStatusCodeUpdateFirmwareSuccess
   PcdCapsuleStatusCodeUpdateFirmwareFailed
   PcdCapsuleStatusCodeResettingSystem
4) Add capsule status variable PCD - CapsuleMax value.
   PcdCapsuleMax
5) Add EDKII system capsule related DynamicEx PCD
   PcdEdkiiSystemFmpCapsuleMonotonicCount
   PcdEdkiiSystemFirmwareImageDescriptor
   PcdEdkiiSystemFirmwareFileGuid
   PcdEdkiiSystemFmpCapsuleImageTypeIdGuid
   NOTE: We use DynamicEx here because the update driver may be in
   the capsule FMP, instead of system BIOS.
   The update driver MUST use the PCD info produced system BIOS.

Cc: Feng Tian <feng.t...@intel.com>
Cc: Star Zeng <star.z...@intel.com>
Cc: Michael D Kinney <michael.d.kin...@intel.com>
Cc: Liming Gao <liming....@intel.com>
Cc: Chao Zhang <chao.b.zh...@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jiewen Yao <jiewen....@intel.com>
---
 MdeModulePkg/MdeModulePkg.dec | 106 ++++++++++++++++++++
 1 file changed, 106 insertions(+)

diff --git a/MdeModulePkg/MdeModulePkg.dec b/MdeModulePkg/MdeModulePkg.dec
index 8d90f16..113abf7 100644
--- a/MdeModulePkg/MdeModulePkg.dec
+++ b/MdeModulePkg/MdeModulePkg.dec
@@ -157,6 +157,22 @@
   #
   MemoryProfileLib|Include/Library/MemoryProfileLib.h
 
+  ## @libraryclass  Provides services to authenticate a UEFI defined FMP 
Capsule.
+  #
+  FmpAuthenticationLib|Include/Library/FmpAuthenticationLib.h
+
+  ## @libraryclass  Provides services for EDKII system FMP capsule.
+  #
+  EdkiiSystemCapsuleLib|Include/Library/EdkiiSystemCapsuleLib.h
+
+  ## @libraryclass  Provides services to parse the INI configuration file.
+  #
+  IniParsingLib|Include/Library/IniParsingLib.h
+
+  ## @libraryclass  Provides services to access flash device.
+  #
+  PlatformFlashAccessLib|Include/Library/PlatformFlashAccessLib.h
+
 [Guids]
   ## MdeModule package token space guid
   # Include/Guid/MdeModulePkgTokenSpace.h
@@ -355,6 +371,11 @@
   ## Include/Guid/PiSmmCommunicationRegionTable.h
   gEdkiiPiSmmCommunicationRegionTableGuid = { 0x4e28ca50, 0xd582, 0x44ac, 
{0xa1, 0x1f, 0xe3, 0xd5, 0x65, 0x26, 0xdb, 0x34}}
 
+  ## Include/Guid/EdkiiSystemFmpCapsule.h
+  gEdkiiSystemFirmwareImageDescriptorFileGuid = {0x90b2b846, 0xca6d, 0x4d6e, 
{0xa8, 0xd3, 0xc1, 0x40, 0xa8, 0xe1, 0x10, 0xac}}
+  gEdkiiSystemFmpCapsuleConfigFileGuid        = {0x812136d3, 0x4d3a, 0x433a, 
{0x94, 0x18, 0x29, 0xbb, 0x9b, 0xf7, 0x8f, 0x6e}}
+  gEdkiiSystemFmpCapsuleDriverFvFileGuid      = {0xce57b167, 0xb0e4, 0x41e8, 
{0xa8, 0x97, 0x5f, 0x4f, 0xeb, 0x78, 0x1d, 0x40}}
+
 [Ppis]
   ## Include/Ppi/AtaController.h
   gPeiAtaControllerPpiGuid       = { 0xa45e60d1, 0xc719, 0x44aa, { 0xb0, 0x7a, 
0xaa, 0x77, 0x7f, 0x85, 0x90, 0x6d }}
@@ -1130,6 +1151,52 @@
   # @Prompt MAX repair count
   gEfiMdeModulePkgTokenSpaceGuid.PcdMaxRepairCount|0x00|UINT32|0x00010076
 
+  ## Status Code for Capsule subclass definitions.<BR><BR>
+  #  EFI_SOFTWARE_CAPSULE  = (EFI_SOFTWARE | 0x00150000) = 0x03150000<BR>
+  # @Prompt Status Code for Capsule subclass definitions
+  # @ValidList  0x80000003 | 0x03150000
+  
gEfiMdeModulePkgTokenSpaceGuid.PcdStatusCodeSubClassCapsule|0x03150000|UINT32|0x00000100
+
+  ## Status Code for Capsule definitions.<BR><BR>
+  #  EFI_CAPSULE_PROCESS_CAPSULES_BEGIN  = (EFI_SUBCLASS_SPECIFIC | 
0x00000001) = 0x00010001<BR>
+  # @Prompt Status Code for Capsule definitions
+  # @ValidList  0x80000003 | 0x00010001
+  
gEfiMdeModulePkgTokenSpaceGuid.PcdCapsuleStatusCodeProcessCapsulesBegin|0x00010001|UINT32|0x00000101
+
+  ## Status Code for Capsule definitions.<BR><BR>
+  #  EFI_CAPSULE_PROCESS_CAPSULES_END    = (EFI_SUBCLASS_SPECIFIC | 
0x00000002) = 0x00010002<BR>
+  # @Prompt Status Code for Capsule definitions
+  # @ValidList  0x80000003 | 0x00010002
+  
gEfiMdeModulePkgTokenSpaceGuid.PcdCapsuleStatusCodeProcessCapsulesEnd|0x00010002|UINT32|0x00000102
+
+  ## Status Code for Capsule definitions.<BR><BR>
+  #  EFI_CAPSULE_UPDATING_FIRMWARE       = (EFI_SUBCLASS_SPECIFIC | 
0x00000003) = 0x00010003<BR>
+  # @Prompt Status Code for Capsule definitions
+  # @ValidList  0x80000003 | 0x00010003
+  
gEfiMdeModulePkgTokenSpaceGuid.PcdCapsuleStatusCodeUpdatingFirmware|0x00010003|UINT32|0x00000103
+
+  ## Status Code for Capsule definitions.<BR><BR>
+  #  EFI_CAPSULE_UPDATE_FIRMWARE_SUCCESS = (EFI_SUBCLASS_SPECIFIC | 
0x00000004) = 0x00010004<BR>
+  # @Prompt Status Code for Capsule definitions
+  # @ValidList  0x80000003 | 0x00010004
+  
gEfiMdeModulePkgTokenSpaceGuid.PcdCapsuleStatusCodeUpdateFirmwareSuccess|0x00010004|UINT32|0x00000104
+
+  ## Status Code for Capsule definitions.<BR><BR>
+  #  EFI_CAPSULE_UPDATE_FIRMWARE_FAILED  = (EFI_SUBCLASS_SPECIFIC | 
0x00000005) = 0x00010005<BR>
+  # @Prompt Status Code for Capsule definitions
+  # @ValidList  0x80000003 | 0x00010005
+  
gEfiMdeModulePkgTokenSpaceGuid.PcdCapsuleStatusCodeUpdateFirmwareFailed|0x00010005|UINT32|0x00000105
+
+  ## Status Code for Capsule definitions.<BR><BR>
+  #  EFI_CAPSULE_RESETTING_SYSTEM        = (EFI_SUBCLASS_SPECIFIC | 
0x00000006) = 0x00010006<BR>
+  # @Prompt Status Code for Capsule definitions
+  # @ValidList  0x80000003 | 0x00010001
+  
gEfiMdeModulePkgTokenSpaceGuid.PcdCapsuleStatusCodeResettingSystem|0x00010006|UINT32|0x00000106
+
+  ## CapsuleMax value in capsule report variable.
+  # @Prompt CapsuleMax value in capsule report variable.
+  gEfiMdeModulePkgTokenSpaceGuid.PcdCapsuleMax|0xFFFF|UINT16|0x00000107
+
 [PcdsPatchableInModule, PcdsDynamic, PcdsDynamicEx]
   ## This PCD defines the Console output row. The default value is 25 
according to UEFI spec.
   #  This PCD could be set to 0 then console output would be at max column and 
max row.
@@ -1621,5 +1688,44 @@
   # @ValidList  0x80000001 | 0x0
   
gEfiMdeModulePkgTokenSpaceGuid.PcdIdentifyMappingPageTablePtr|0x0|UINT64|0x00030002
 
+[PcdsDynamicEx]
+  ## This dynamic PCD hold the FMP capsule monotonic count value for current
+  #  BIOS. It is used to ensure freshness/no replay on firmware update.
+  #  Only if the new system FmpCapsule 
EFI_FIRMWARE_IMAGE_AUTHENTICATION.MonotonicCount
+  #  is no less than this PcdFmpCapsuleMonotonicCount, the EDKII system
+  #  FmpCapsule will be processed.
+  #  It must be dynamicEx, because the EDKII system firmware update module may
+  #  consume the PCD produced in current BIOS.
+  # @Prompt EDKII system FMP capsule monotonic count.
+  
gEfiMdeModulePkgTokenSpaceGuid.PcdEdkiiSystemFmpCapsuleMonotonicCount|1|UINT64|0x000035
+
+  ## This dynamic PCD hold the EDKII system firmware image descriptor.
+  #  This information can be used for version check in EDKII system FMP 
capsule.
+  #  Only if the new EdkiiSystemFrimwareImageDescriptor.Version is no less than
+  #  the current PcdEdkiiSystemFirmwareImageDescriptor.LowestSupportedVersion,
+  #  the EDKII system FmpCapsule will be processed.
+  #  It must be dynamicEx, because the EDKII system firmware update module may
+  #  consume the PCD produced in current BIOS.
+  # @Prompt EDKII system firwmare image descriptor.
+  
gEfiMdeModulePkgTokenSpaceGuid.PcdEdkiiSystemFirmwareImageDescriptor|{0}|VOID*|0x00000037
+
+  ## This dynamic PCD hold the GUID of a firmware FFS which includes EDKII
+  #  system firmware image.
+  #  An EDKII system firmware udpate module need consume this PCD to extract
+  #  the EDKII system firmware from the capsule image.
+  #  It must be dynamicEx, because the EDKII system firmware update module may
+  #  consume the PCD produced in current BIOS.
+  # @Prompt EDKII system firmware image FFS GUID.
+  gEfiMdeModulePkgTokenSpaceGuid.PcdEdkiiSystemFirmwareFileGuid|{0xb2, 0x9e, 
0x9c, 0xaf, 0xad, 0x12, 0x3e, 0x4d, 0xa4, 0xd4, 0x96, 0xf6, 0xc9, 0x96, 0x62, 
0x15}|VOID*|0x00001010
+
+  ## This dynamic PCD hold a list GUIDs for the ImageTypeId to indicate the
+  #  FMP capsule is EDKII system FMP.
+  #  An EDKII system firmware udpate module need consume this PCD to know if
+  #  This FMP capsule is a system FMP or device FMP.
+  #  It must be dynamicEx, because the EDKII system firmware update module may
+  #  consume the PCD produced in current BIOS.
+  # @Prompt A list of EDKII system FMP ImageTypeId GUIDs
+  
gEfiMdeModulePkgTokenSpaceGuid.PcdEdkiiSystemFmpCapsuleImageTypeIdGuid|{0xd3, 
0xee, 0x7e, 0x3f, 0x91, 0xf4, 0x1e, 0x40, 0x9e, 0xce, 0x74, 0x31, 0x32, 0x2e, 
0xad, 0xf6}|VOID*|0x00001011
+
 [UserExtensions.TianoCore."ExtraFiles"]
   MdeModulePkgExtra.uni
-- 
2.7.4.windows.1

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to