From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) (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 CFF101A1E53 for ; Tue, 20 Sep 2016 23:54:13 -0700 (PDT) Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga105.fm.intel.com with ESMTP; 20 Sep 2016 23:54:13 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.30,372,1470726000"; d="scan'208";a="11689732" Received: from fmsmsx108.amr.corp.intel.com ([10.18.124.206]) by orsmga005.jf.intel.com with ESMTP; 20 Sep 2016 23:54:13 -0700 Received: from fmsmsx152.amr.corp.intel.com (10.18.125.5) by FMSMSX108.amr.corp.intel.com (10.18.124.206) with Microsoft SMTP Server (TLS) id 14.3.248.2; Tue, 20 Sep 2016 23:54:12 -0700 Received: from shsmsx104.ccr.corp.intel.com (10.239.4.70) by FMSMSX152.amr.corp.intel.com (10.18.125.5) with Microsoft SMTP Server (TLS) id 14.3.248.2; Tue, 20 Sep 2016 23:54:12 -0700 Received: from shsmsx101.ccr.corp.intel.com ([169.254.1.118]) by SHSMSX104.ccr.corp.intel.com ([169.254.5.101]) with mapi id 14.03.0248.002; Wed, 21 Sep 2016 14:54:09 +0800 From: "Wei, David" To: "Yao, Jiewen" , "edk2-devel@lists.01.org" CC: "Tian, Feng" , "Zeng, Star" , "Kinney, Michael D" , "Gao, Liming" , "Zhang, Chao B" , "Yao, Jiewen" Thread-Topic: [PATCH 39/45] Vlv2TbltDevicePkg/SystemBiosDescriptor: Add Descriptor for capsule update. Thread-Index: AQHSE9QZa2HdV8DoE0Ska8My31222aCDgghg Date: Wed, 21 Sep 2016 06:54:09 +0000 Message-ID: <89954A0B46707A448411A627AD4EEE3466379980@SHSMSX101.ccr.corp.intel.com> References: <1474440326-9292-1-git-send-email-jiewen.yao@intel.com> <1474440326-9292-40-git-send-email-jiewen.yao@intel.com> In-Reply-To: <1474440326-9292-40-git-send-email-jiewen.yao@intel.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiMjEwYTMyODQtN2RjZi00ZTM1LTk3ZTctYTdiZjYwN2U4NzE2IiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX0lDIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE1LjkuNi42IiwiVHJ1c3RlZExhYmVsSGFzaCI6Iis4blJnK25SdGxpTlwvNmFnQUhHTERDR1IxKzlSeitVODZzdzRWRHNEQ0JvPSJ9 x-ctpclassification: CTP_IC x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Subject: Re: [PATCH 39/45] Vlv2TbltDevicePkg/SystemBiosDescriptor: Add Descriptor for capsule update. 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:54:14 -0000 Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Reviewed-by: David Wei Thanks, David Wei =20 -----Original Message----- From: Yao, Jiewen=20 Sent: Wednesday, September 21, 2016 2:45 PM To: edk2-devel@lists.01.org Cc: Wei, David ; Tian, Feng ; Zen= g, Star ; Kinney, Michael D ; Gao, Liming ; Zhang, Chao B Subject: [PATCH 39/45] Vlv2TbltDevicePkg/SystemBiosDescriptor: Add Descript= or for capsule update. Add SystemBiosDescriptor for capsule update. The PEIM extracts SystemBiosDescriptor info from FFS and reports it via PCD= . Cc: David Wei 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 --- Vlv2TbltDevicePkg/Feature/Capsule/SystemBiosDescriptor/SystemBiosDescripto= r.aslc | 86 ++++++++++++++++++++ Vlv2TbltDevicePkg/Feature/Capsule/SystemBiosDescriptor/SystemBiosDescripto= r.inf | 45 ++++++++++ Vlv2TbltDevicePkg/Feature/Capsule/SystemBiosDescriptor/SystemBiosDescripto= rPei.c | 66 +++++++++++++++ 3 files changed, 197 insertions(+) diff --git a/Vlv2TbltDevicePkg/Feature/Capsule/SystemBiosDescriptor/SystemB= iosDescriptor.aslc b/Vlv2TbltDevicePkg/Feature/Capsule/SystemBiosDescriptor= /SystemBiosDescriptor.aslc new file mode 100644 index 0000000..a989a7c --- /dev/null +++ b/Vlv2TbltDevicePkg/Feature/Capsule/SystemBiosDescriptor/SystemBiosDesc= riptor.aslc @@ -0,0 +1,86 @@ +/** @file + System BIOS descriptor. + + Copyright (c) 2016, Intel Corporation. All rights reserved.
+ This program and the accompanying materials + are licensed and made available under the terms and conditions of the BS= D License + which accompanies this distribution. The full text of the license may b= e found at + http://opensource.org/licenses/bsd-license.php + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMP= LIED. + +**/ + +#include +#include +#include + +#define PACKAGE_VERSION 0xFFFFFFFF +#define PACKAGE_VERSION_STRING L"Unknown" + +#define CURRENT_FIRMWARE_VERSION 0x00000002 +#define CURRENT_FIRMWARE_VERSION_STRING L"0x00000002" +#define LOWEST_SUPPORTED_FIRMWARE_VERSION 0x00000001 + +#define IMAGE_ID SIGNATURE_64('V', 'L', 'V', '2= ', '_', '_', 'F', 'd') +#define IMAGE_ID_STRING L"Vlv2Fd" + +#define IMAGE_TYPE_ID_GUID { 0x4096267b, 0xda0a, 0x42eb, = { 0xb5, 0xeb, 0xfe, 0xf3, 0x1d, 0x20, 0x7c, 0xb4 } } + +typedef struct { + EDKII_SYSTEM_FIRMWARE_IMAGE_DESCRIPTOR Descriptor; + // real string data + CHAR16 ImageIdNameStr[16]; + CHAR16 VersionNameStr[16]; + CHAR16 PackageVersionNameStr[16]; +} IMAGE_DESCRIPTOR; + +IMAGE_DESCRIPTOR mImageDescriptor =3D +{ + { + EDKII_SYSTEM_FIRMWARE_IMAGE_DESCRIPTOR_SIGNATURE, + sizeof(EDKII_SYSTEM_FIRMWARE_IMAGE_DESCRIPTOR), + sizeof(IMAGE_DESCRIPTOR), + PACKAGE_VERSION, // PackageVersi= on + OFFSET_OF (IMAGE_DESCRIPTOR, PackageVersionNameStr), // PackageVersi= onName + 1, // ImageIndex; + {0x0}, // Reserved + IMAGE_TYPE_ID_GUID, // ImageTypeId; + IMAGE_ID, // ImageId; + OFFSET_OF (IMAGE_DESCRIPTOR, ImageIdNameStr), // ImageIdName; + CURRENT_FIRMWARE_VERSION, // Version; + OFFSET_OF (IMAGE_DESCRIPTOR, VersionNameStr), // VersionName; + {0x0}, // Reserved2 + FixedPcdGet32(PcdFlashAreaSize), // Size; + IMAGE_ATTRIBUTE_IMAGE_UPDATABLE | + IMAGE_ATTRIBUTE_RESET_REQUIRED | + IMAGE_ATTRIBUTE_IN_USE, // AttributesSu= pported; + IMAGE_ATTRIBUTE_IMAGE_UPDATABLE | + IMAGE_ATTRIBUTE_RESET_REQUIRED | + IMAGE_ATTRIBUTE_IN_USE, // AttributesSe= tting; + 0x0, // Compatibilit= ies; + LOWEST_SUPPORTED_FIRMWARE_VERSION, // LowestSuppor= tedImageVersion; + 0x00000000, // LastAttemptV= ersion; + 0, // LastAttemptS= tatus; + {0x0}, // Reserved3 + 0, // HardwareInst= ance; + }, + // real string data + {IMAGE_ID_STRING}, + {CURRENT_FIRMWARE_VERSION_STRING}, + {PACKAGE_VERSION_STRING}, +}; + + +VOID* +ReferenceAcpiTable ( + VOID + ) +{ + // + // Reference the table being generated to prevent the optimizer from + // removing the data structure from the executable + // + return (VOID*)&mImageDescriptor; +} diff --git a/Vlv2TbltDevicePkg/Feature/Capsule/SystemBiosDescriptor/SystemB= iosDescriptor.inf b/Vlv2TbltDevicePkg/Feature/Capsule/SystemBiosDescriptor/= SystemBiosDescriptor.inf new file mode 100644 index 0000000..812d272 --- /dev/null +++ b/Vlv2TbltDevicePkg/Feature/Capsule/SystemBiosDescriptor/SystemBiosDesc= riptor.inf @@ -0,0 +1,45 @@ +## @file +# System BIOS descriptor. +# +# Copyright (c) 2016, Intel Corporation. All rights reserved.
+# This program and the accompanying materials +# are licensed and made available under the terms and conditions of the B= SD License +# which accompanies this distribution. The full text of the license may = be found at +# http://opensource.org/licenses/bsd-license.php +# +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IM= PLIED. +# +## + +[Defines] + INF_VERSION =3D 0x00010005 + BASE_NAME =3D SystemBiosDescriptor + FILE_GUID =3D 90B2B846-CA6D-4D6E-A8D3-C140A8E110AC + MODULE_TYPE =3D PEIM + VERSION_STRING =3D 1.0 + ENTRY_POINT =3D SystemBiosDescriptorPeimEntry + +[Sources] + SystemBiosDescriptorPei.c + SystemBiosDescriptor.aslc + +[Packages] + MdePkg/MdePkg.dec + MdeModulePkg/MdeModulePkg.dec + Vlv2TbltDevicePkg/PlatformPkg.dec + +[LibraryClasses] + PcdLib + PeiServicesLib + DebugLib + PeimEntryPoint + +[FixedPcd] + gPlatformModuleTokenSpaceGuid.PcdFlashAreaSize + +[Pcd] + gEfiMdeModulePkgTokenSpaceGuid.PcdEdkiiSystemFirmwareImageDescriptor + +[Depex] + TRUE diff --git a/Vlv2TbltDevicePkg/Feature/Capsule/SystemBiosDescriptor/SystemB= iosDescriptorPei.c b/Vlv2TbltDevicePkg/Feature/Capsule/SystemBiosDescriptor= /SystemBiosDescriptorPei.c new file mode 100644 index 0000000..6272138 --- /dev/null +++ b/Vlv2TbltDevicePkg/Feature/Capsule/SystemBiosDescriptor/SystemBiosDesc= riptorPei.c @@ -0,0 +1,66 @@ +/** @file + System BIOS descriptor producer. + + Copyright (c) 2016, Intel Corporation. All rights reserved.
+ This program and the accompanying materials + are licensed and made available under the terms and conditions of the BS= D License + which accompanies this distribution. The full text of the license may b= e found at + http://opensource.org/licenses/bsd-license.php + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMP= LIED. + +**/ + +#include +#include +#include +#include +#include +#include + +/** + Entrypoint for SystemBiosDescriptor PEIM. + + @param FileHandle Handle of the file being invoked. + @param PeiServices Describes the list of possible PEI Services. + + @retval EFI_SUCCESS PPI successfully installed. +**/ +EFI_STATUS +EFIAPI +SystemBiosDescriptorPeimEntry( + IN EFI_PEI_FILE_HANDLE FileHandle, + IN CONST EFI_PEI_SERVICES **PeiServices + ) +{ + EFI_STATUS Status; + EDKII_SYSTEM_FIRMWARE_IMAGE_DESCRIPTOR *Descriptor; + UINTN Size; + UINTN Index; + UINT32 AuthenticationStatus; + + // + // Search RAW section. + // + Index =3D 0; + while (TRUE) { + Status =3D PeiServicesFfsFindSectionData3(EFI_SECTION_RAW, Index, File= Handle, &Descriptor, &AuthenticationStatus); + if (EFI_ERROR(Status)) { + // Should not happen, must something wrong in FDF. + ASSERT(FALSE); + return EFI_NOT_FOUND; + } + if (Descriptor->Signature =3D=3D EDKII_SYSTEM_FIRMWARE_IMAGE_DESCRIPTO= R_SIGNATURE) { + break; + } + Index++; + } + + DEBUG((EFI_D_INFO, "EDKII_SYSTEM_FIRMWARE_IMAGE_DESCRIPTOR size - 0x%x\n= ", Descriptor->Length)); + + Size =3D Descriptor->Length; + PcdSetPtrS (PcdEdkiiSystemFirmwareImageDescriptor, &Size, Descriptor); + + return EFI_SUCCESS; +} --=20 2.7.4.windows.1