From nobody Fri Apr 19 13:12:22 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+59653+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+59653+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1589528336; cv=none; d=zohomail.com; s=zohoarc; b=H7A1H4iXj2roDPYiNeZDBnC5E7dQWorIlHcLRA0GL74AvjIAbFg9txQ6Up7d9kgU5mGOiTDJ+GOHUFIf4m5weQ/fKhxNdF1mUL6omf2ZuGHqLlYcdPYlWsMTlCjiIJvrmr+hcfy6UZ3lnuQrE5mGlHAUgsgt3CPpuOO+6nlY+cU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1589528336; h=Cc:Date:From:In-Reply-To:List-Id:List-Unsubscribe:Message-ID:Reply-To:References:Sender:Subject:To; bh=fW0PEDvF60x/RrKWV9nm06aWSjyQjxAMaMxX3EJ3dkk=; b=WbAObdBuS0J4CE9iC3m7ZPV06eLb40bT6vpj8G40a0cBMgWDtIJmDIc4h6SrSe91QnUNkQeuMnqOZD4iZpLUVawgpa2gQkPK796Z6n6gLnbyXRTNmqBCsNpNM/KSdzMLqkp2xDQQYurqWWO2Dvk1xFlkSoQPgQGcDW5TcHC7ReY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+59653+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) header.from= Received: from web01.groups.io (web01.groups.io [66.175.222.12]) by mx.zohomail.com with SMTPS id 1589528336798254.25346134273877; Fri, 15 May 2020 00:38:56 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id 2FW2YY1788612xxQ8tX4Y5LW; Fri, 15 May 2020 00:38:56 -0700 X-Received: from mga07.intel.com (mga07.intel.com []) by mx.groups.io with SMTP id smtpd.web12.8912.1589528334338023248 for ; Fri, 15 May 2020 00:38:56 -0700 IronPort-SDR: D1dbyLfu2UR3LenUPg6nPeOyxcyJeQ0RXmj1xdp0IDxDv6dnh2Sq7oACknu7Dv/u3+qDUL2W/5 cVPbdPGnS4tg== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False X-Received: from orsmga004.jf.intel.com ([10.7.209.38]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 May 2020 00:38:55 -0700 IronPort-SDR: aSioRdg91jGQIWIOIngneHitCVrYe5cVFMrWSs8TTtbnFIr02RXWw3c+evvnPWur1w92ofp5Iy CRIWRhv1+EfQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.73,394,1583222400"; d="scan'208";a="410389849" X-Received: from shwdeopenpsi174.ccr.corp.intel.com ([10.239.157.39]) by orsmga004.jf.intel.com with ESMTP; 15 May 2020 00:38:54 -0700 From: "Xu, Wei6" To: devel@edk2.groups.io Cc: Oleksiy Yakovlev Subject: [edk2-devel] [PATCH 1/2] MdeModulePkg: Add FMP Capsule Image Header extension Date: Fri, 15 May 2020 15:38:47 +0800 Message-Id: <20200515073848.13920-2-wei6.xu@intel.com> In-Reply-To: <20200515073848.13920-1-wei6.xu@intel.com> References: <20200515073848.13920-1-wei6.xu@intel.com> Precedence: Bulk List-Unsubscribe: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,wei6.xu@intel.com X-Gm-Message-State: 5wBM552JQDRoxJNfTENrdUV2x1787277AA= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1589528336; bh=ssUugeWoctbpYYh2cnExafiBdrDXiIcw4od8aV5ThVQ=; h=Cc:Date:From:Reply-To:Subject:To; b=nU3HvW2TN8SgWPvfh2Hf/VQU9UyfsaRMK33NirWi9FG5bSiaod61kwrFVr4gofykjLd mO9urUpReoNgjDiQJV1mWCB+XDqB1IE7uPCs3GxQKIp2mrU4YcAkcNU7kpSzLYYpu3jXP bececHz/AQEWFxWrF738Z4hPZSflpsgLVCw= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: Oleksiy Yakovlev Add bitmask to structure which gives a binary-inspectable mechanism to determine if a capsule contains an authentication section or depex section. (UEFI 2.8 errata a, mantis 2026) Signed-off-by: Oleksiy Yakovlev Signed-off-by: Wei6 Xu Reviewed-by: Liming Gao Reviewed-by: Oleksiy Yakovlev --- MdeModulePkg/Application/CapsuleApp/CapsuleDump.c | 5 +++- .../Library/DxeCapsuleLibFmp/DxeCapsuleLib.c | 28 +++++++++++++++++-= ---- 2 files changed, 26 insertions(+), 7 deletions(-) diff --git a/MdeModulePkg/Application/CapsuleApp/CapsuleDump.c b/MdeModuleP= kg/Application/CapsuleApp/CapsuleDump.c index 7e3e072385..5725e2f6dd 100644 --- a/MdeModulePkg/Application/CapsuleApp/CapsuleDump.c +++ b/MdeModulePkg/Application/CapsuleApp/CapsuleDump.c @@ -94,12 +94,15 @@ DumpFmpCapsule ( Print(L" Version - 0x%x\n", FmpImageHeader->Version); Print(L" UpdateImageTypeId - %g\n", &FmpImageHeader->UpdateImage= TypeId); Print(L" UpdateImageIndex - 0x%x\n", FmpImageHeader->UpdateImag= eIndex); Print(L" UpdateImageSize - 0x%x\n", FmpImageHeader->UpdateImag= eSize); Print(L" UpdateVendorCodeSize - 0x%x\n", FmpImageHeader->UpdateVend= orCodeSize); - if (FmpImageHeader->Version >=3D EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE= _HEADER_INIT_VERSION) { + if (FmpImageHeader->Version >=3D 2) { Print(L" UpdateHardwareInstance - 0x%lx\n", FmpImageHeader->UpdateH= ardwareInstance); + if (FmpImageHeader->Version >=3D EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMA= GE_HEADER_INIT_VERSION) { + Print(L" ImageCapsuleSupport - 0x%lx\n", FmpImageHeader->Image= CapsuleSupport); + } } } } =20 /** diff --git a/MdeModulePkg/Library/DxeCapsuleLibFmp/DxeCapsuleLib.c b/MdeMod= ulePkg/Library/DxeCapsuleLibFmp/DxeCapsuleLib.c index 5dda561a04..90942135d7 100644 --- a/MdeModulePkg/Library/DxeCapsuleLibFmp/DxeCapsuleLib.c +++ b/MdeModulePkg/Library/DxeCapsuleLibFmp/DxeCapsuleLib.c @@ -283,12 +283,14 @@ ValidateFmpCapsule ( if ((ImageHeader->Version > EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEAD= ER_INIT_VERSION) || (ImageHeader->Version < 1)) { DEBUG((DEBUG_ERROR, "ImageHeader->Version(0x%x) Unknown\n", ImageHea= der->Version)); return EFI_INVALID_PARAMETER; } - if (ImageHeader->Version < EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEADE= R_INIT_VERSION) { + if (ImageHeader->Version =3D=3D 1) { FmpImageHeaderSize =3D OFFSET_OF(EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMA= GE_HEADER, UpdateHardwareInstance); + } else if (ImageHeader->Version =3D=3D 2) { + FmpImageHeaderSize =3D OFFSET_OF(EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMA= GE_HEADER, ImageCapsuleSupport); } if (FmpImageSize < FmpImageHeaderSize) { DEBUG((DEBUG_ERROR, "FmpImageSize(0x%lx) < FmpImageHeaderSize(0x%x)\= n", FmpImageSize, FmpImageHeaderSize)); return EFI_INVALID_PARAMETER; } @@ -517,12 +519,15 @@ DumpFmpCapsule ( DEBUG((DEBUG_VERBOSE, " Version - 0x%x\n", ImageHead= er->Version)); DEBUG((DEBUG_VERBOSE, " UpdateImageTypeId - %g\n", &ImageHeade= r->UpdateImageTypeId)); DEBUG((DEBUG_VERBOSE, " UpdateImageIndex - 0x%x\n", ImageHead= er->UpdateImageIndex)); DEBUG((DEBUG_VERBOSE, " UpdateImageSize - 0x%x\n", ImageHead= er->UpdateImageSize)); DEBUG((DEBUG_VERBOSE, " UpdateVendorCodeSize - 0x%x\n", ImageHead= er->UpdateVendorCodeSize)); - if (ImageHeader->Version >=3D EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HE= ADER_INIT_VERSION) { + if (ImageHeader->Version >=3D 2) { DEBUG((DEBUG_VERBOSE, " UpdateHardwareInstance - 0x%lx\n", ImageH= eader->UpdateHardwareInstance)); + if (ImageHeader->Version >=3D EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_= HEADER_INIT_VERSION) { + DEBUG((DEBUG_VERBOSE, " ImageCapsuleSupport - 0x%lx\n", Ima= geHeader->ImageCapsuleSupport)); + } } } } =20 /** @@ -926,13 +931,18 @@ SetFmpImageData ( if (ImageHeader->Version >=3D EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEAD= ER_INIT_VERSION) { Image =3D (UINT8 *)(ImageHeader + 1); } else { // // If the EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEADER is version 1, - // Header should exclude UpdateHardwareInstance field + // Header should exclude UpdateHardwareInstance field, and + // ImageCapsuleSupport field if version is 2. // - Image =3D (UINT8 *)ImageHeader + OFFSET_OF(EFI_FIRMWARE_MANAGEMENT_CAP= SULE_IMAGE_HEADER, UpdateHardwareInstance); + if (ImageHeader->Version =3D=3D 1) { + Image =3D (UINT8 *)ImageHeader + OFFSET_OF(EFI_FIRMWARE_MANAGEMENT_C= APSULE_IMAGE_HEADER, UpdateHardwareInstance); + } else { + Image =3D (UINT8 *)ImageHeader + OFFSET_OF(EFI_FIRMWARE_MANAGEMENT_C= APSULE_IMAGE_HEADER, ImageCapsuleSupport); + } } =20 if (ImageHeader->UpdateVendorCodeSize =3D=3D 0) { VendorCode =3D NULL; } else { @@ -941,12 +951,15 @@ SetFmpImageData ( AbortReason =3D NULL; DEBUG((DEBUG_INFO, "Fmp->SetImage ...\n")); DEBUG((DEBUG_INFO, "ImageTypeId - %g, ", &ImageHeader->UpdateImageTypeId= )); DEBUG((DEBUG_INFO, "PayloadIndex - 0x%x, ", PayloadIndex)); DEBUG((DEBUG_INFO, "ImageIndex - 0x%x ", ImageHeader->UpdateImageIndex)); - if (ImageHeader->Version >=3D EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEAD= ER_INIT_VERSION) { + if (ImageHeader->Version >=3D 2) { DEBUG((DEBUG_INFO, "(UpdateHardwareInstance - 0x%x)", ImageHeader->Upd= ateHardwareInstance)); + if (ImageHeader->Version >=3D EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HE= ADER_INIT_VERSION) { + DEBUG((DEBUG_INFO, "(ImageCapsuleSupport - 0x%x)", ImageHeader->Imag= eCapsuleSupport)); + } } DEBUG((DEBUG_INFO, "\n")); =20 // // Before calling SetImage(), reset the progress bar to 0% @@ -1237,11 +1250,14 @@ ProcessFmpCapsuleImage ( // for (Index =3D FmpCapsuleHeader->EmbeddedDriverCount; Index < ItemNum; I= ndex++) { ImageHeader =3D (EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEADER *)((UIN= T8 *)FmpCapsuleHeader + ItemOffsetList[Index]); =20 UpdateHardwareInstance =3D 0; - if (ImageHeader->Version >=3D EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HE= ADER_INIT_VERSION) { + /// + /// UpdateHardwareInstance field was added in Version 2 + /// + if (ImageHeader->Version >=3D 2) { UpdateHardwareInstance =3D ImageHeader->UpdateHardwareInstance; } =20 Status =3D GetFmpHandleBufferByType ( &ImageHeader->UpdateImageTypeId, --=20 2.16.2.windows.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#59653): https://edk2.groups.io/g/devel/message/59653 Mute This Topic: https://groups.io/mt/74222868/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-