From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 082B81A1E56 for ; Fri, 30 Sep 2016 05:22:34 -0700 (PDT) Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by orsmga104.jf.intel.com with ESMTP; 30 Sep 2016 05:22:33 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.31,272,1473145200"; d="scan'208";a="1064437641" Received: from gchen32-mobl.ccr.corp.intel.com (HELO jyao1-MOBL.ccr.corp.intel.com) ([10.254.214.75]) by fmsmga002.fm.intel.com with ESMTP; 30 Sep 2016 05:22:32 -0700 From: Jiewen Yao To: edk2-devel@lists.01.org Cc: Feng Tian , Star Zeng , Michael D Kinney , Liming Gao , Chao Zhang Date: Fri, 30 Sep 2016 20:21:25 +0800 Message-Id: <1475238128-22448-8-git-send-email-jiewen.yao@intel.com> X-Mailer: git-send-email 2.7.4.windows.1 In-Reply-To: <1475238128-22448-1-git-send-email-jiewen.yao@intel.com> References: <1475238128-22448-1-git-send-email-jiewen.yao@intel.com> Subject: [PATCH V2 07/50] MdeModulePkg/MdeModulePkg.dec: Add capsule related definition. X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 30 Sep 2016 12:22:34 -0000 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 firmware. The update driver MUST use the PCD info produced system firmware. Cc: Feng Tian Cc: Star Zeng Cc: Michael D Kinney Cc: Liming Gao Cc: Chao Zhang Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Jiewen Yao Reviewed-by: Liming Gao --- MdeModulePkg/MdeModulePkg.dec | 106 ++++++++++++++++++++ 1 file changed, 106 insertions(+) diff --git a/MdeModulePkg/MdeModulePkg.dec b/MdeModulePkg/MdeModulePkg.dec index 8d90f16..ab23af7 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.

+ # EFI_SOFTWARE_CAPSULE = (EFI_SOFTWARE | 0x00150000) = 0x03150000
+ # @Prompt Status Code for Capsule subclass definitions + # @ValidList 0x80000003 | 0x03150000 + gEfiMdeModulePkgTokenSpaceGuid.PcdStatusCodeSubClassCapsule|0x03150000|UINT32|0x00000100 + + ## Status Code for Capsule definitions.

+ # EFI_CAPSULE_PROCESS_CAPSULES_BEGIN = (EFI_SUBCLASS_SPECIFIC | 0x00000001) = 0x00010001
+ # @Prompt Status Code for Capsule definitions + # @ValidList 0x80000003 | 0x00010001 + gEfiMdeModulePkgTokenSpaceGuid.PcdCapsuleStatusCodeProcessCapsulesBegin|0x00010001|UINT32|0x00000101 + + ## Status Code for Capsule definitions.

+ # EFI_CAPSULE_PROCESS_CAPSULES_END = (EFI_SUBCLASS_SPECIFIC | 0x00000002) = 0x00010002
+ # @Prompt Status Code for Capsule definitions + # @ValidList 0x80000003 | 0x00010002 + gEfiMdeModulePkgTokenSpaceGuid.PcdCapsuleStatusCodeProcessCapsulesEnd|0x00010002|UINT32|0x00000102 + + ## Status Code for Capsule definitions.

+ # EFI_CAPSULE_UPDATING_FIRMWARE = (EFI_SUBCLASS_SPECIFIC | 0x00000003) = 0x00010003
+ # @Prompt Status Code for Capsule definitions + # @ValidList 0x80000003 | 0x00010003 + gEfiMdeModulePkgTokenSpaceGuid.PcdCapsuleStatusCodeUpdatingFirmware|0x00010003|UINT32|0x00000103 + + ## Status Code for Capsule definitions.

+ # EFI_CAPSULE_UPDATE_FIRMWARE_SUCCESS = (EFI_SUBCLASS_SPECIFIC | 0x00000004) = 0x00010004
+ # @Prompt Status Code for Capsule definitions + # @ValidList 0x80000003 | 0x00010004 + gEfiMdeModulePkgTokenSpaceGuid.PcdCapsuleStatusCodeUpdateFirmwareSuccess|0x00010004|UINT32|0x00000104 + + ## Status Code for Capsule definitions.

+ # EFI_CAPSULE_UPDATE_FIRMWARE_FAILED = (EFI_SUBCLASS_SPECIFIC | 0x00000005) = 0x00010005
+ # @Prompt Status Code for Capsule definitions + # @ValidList 0x80000003 | 0x00010005 + gEfiMdeModulePkgTokenSpaceGuid.PcdCapsuleStatusCodeUpdateFirmwareFailed|0x00010005|UINT32|0x00000105 + + ## Status Code for Capsule definitions.

+ # EFI_CAPSULE_RESETTING_SYSTEM = (EFI_SUBCLASS_SPECIFIC | 0x00000006) = 0x00010006
+ # @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 + # system firmware. 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 system firmware. + # @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 system firmware. + # @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 system firmware. + # @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 system firmware. + # @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