From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) (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 C91811A1E53 for ; Tue, 20 Sep 2016 23:46:02 -0700 (PDT) Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by orsmga105.jf.intel.com with ESMTP; 20 Sep 2016 23:46:02 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.30,372,1470726000"; d="scan'208";a="1059858705" Received: from jyao1-mobl.ccr.corp.intel.com ([10.239.192.109]) by fmsmga002.fm.intel.com with ESMTP; 20 Sep 2016 23:46:00 -0700 From: Jiewen Yao To: edk2-devel@lists.01.org Cc: Feng Tian , Star Zeng , Michael D Kinney , Liming Gao , Chao Zhang Date: Wed, 21 Sep 2016 14:44:48 +0800 Message-Id: <1474440326-9292-8-git-send-email-jiewen.yao@intel.com> X-Mailer: git-send-email 2.7.4.windows.1 In-Reply-To: <1474440326-9292-1-git-send-email-jiewen.yao@intel.com> References: <1474440326-9292-1-git-send-email-jiewen.yao@intel.com> Subject: [PATCH 07/45] 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: Wed, 21 Sep 2016 06:46:03 -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 BIOS. The update driver MUST use the PCD info produced system BIOS. 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 --- 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.

+ # 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 + # 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