From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from NAM12-BN8-obe.outbound.protection.outlook.com (NAM12-BN8-obe.outbound.protection.outlook.com [40.92.21.65]) by mx.groups.io with SMTP id smtpd.web12.25224.1602877556387932933 for ; Fri, 16 Oct 2020 12:46:02 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="body hash did not verify" header.i=@outlook.com header.s=selector1 header.b=aJziZ21s; spf=pass (domain: outlook.com, ip: 40.92.21.65, mailfrom: michael.kubacki@outlook.com) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=QVlU5rqqqcB/Xm9X9h1k/aGye4R7iXCyLv32xe7lkT6952HRWzatufrLtGzFjsqyQSEnJjpqnqASWTALOARVSmC89coCKNIxk2XgNmeDVN1sZ1once6katX4gQgtnSWg9coFpBhj6aIZXIZv4NgjSFxVu7QtOFUBV55YKyzgwIkt0qo3SeZ/AjNBjyTnF69QTVaxrKJVyv/IJYMsL410zI8TOLigzdt9BCEXneSrh5QTCG3knceQl42PFzWWKCUTyRYNAe0VRrX9CuUpXwU7w8pskxVUq6URCoqhCJp0o6v6TVpmdn8BSyXtOIVnCIdUXPYe2QDW6vGYbnYxKHfdzQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=yz771m9fYcekilsYj42BgHipitaQ/LRpYNHZzQH0imE=; b=lb6c/CPaWgSTTgref/rUX4Yss3is6kHfD0/gPxeKLoljlGMWqD5uefHxTir/1TvBXZB2PMOadex5y+y3TsunZyP3Q4Dc2gyl/wYSdHoFXV13ouTAX/r+1GFCbpyhPlea1mR00wbZbdOygpQAaHRVCAy8uFFrv4tRDWCio+QGr2Mis9R0FI4x2JkASV7WwoLuLhB6aW+pmocUC59obpcmd92O1ktF4+5ntFNwZdZsNrO/J8b/GOSQyfVQigiWaARAyCnUKN4ddwHd5Ukz5V3jbUgwyw8vL7KwQLQpX5ak3de5Q4KF7CM7tAPGLRwDw0cnlyYhNS/VTKNyZrnHGDWssg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=yz771m9fYcekilsYj42BgHipitaQ/LRpYNHZzQH0imE=; b=aJziZ21s8jYyldRU4mVw7sJf7JlKQviwhrahkozMuArIma13nFonxD309st+IMBjhl1gp58cSMJurD3xyb/yF34Oi0C8SttOdSqmJt5r5iALftB27XSNFPtPVu2/PysHHkFBJ2jGSDopTDdI15EfLkfuVt9SR55teYLNbeLxv6Wpe72PuVyHyreswO1dtLvo9HesZxZzkTIloDZ44kVVxW5Cewk8zUczxFqu+csWWrQL2XpNt7D8Qpcc4WUM1d8ljD/+GNQuvw/jq14bk29jPPbMMWyL9+QXvfRMB5MKSAzORLRc7uY03bwgW1Mn+D7FRIQebjdq31jbGlNxuKzF6w== Received: from BN8NAM12FT008.eop-nam12.prod.protection.outlook.com (2a01:111:e400:fc66::4a) by BN8NAM12HT129.eop-nam12.prod.protection.outlook.com (2a01:111:e400:fc66::212) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3499.7; Fri, 16 Oct 2020 19:45:55 +0000 Received: from MWHPR07MB3440.namprd07.prod.outlook.com (2a01:111:e400:fc66::46) by BN8NAM12FT008.mail.protection.outlook.com (2a01:111:e400:fc66::411) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3499.7 via Frontend Transport; Fri, 16 Oct 2020 19:45:55 +0000 X-IncomingTopHeaderMarker: OriginalChecksum:3C856708A10E6951E8E4115360AFE81E02F59E1CC2C160931483F3A32AB7D5E2;UpperCasedChecksum:C50C195D006548641105C447168A73121EE18E1FABB0029DE63C5D7968DC3345;SizeAsReceived:9322;Count:48 Received: from MWHPR07MB3440.namprd07.prod.outlook.com ([fe80::858f:bd50:1b65:e803]) by MWHPR07MB3440.namprd07.prod.outlook.com ([fe80::858f:bd50:1b65:e803%7]) with mapi id 15.20.3455.031; Fri, 16 Oct 2020 19:45:54 +0000 Subject: Re: [PATCH v4 0/6] Extend Last Attempt Status Usage To: "Kinney, Michael D" , "devel@edk2.groups.io" CC: Liming Gao , "Jiang, Guomin" , "Xu, Wei6" , "Liu, Zhiguang" References: From: "Michael Kubacki" Message-ID: Date: Fri, 16 Oct 2020 12:45:51 -0700 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:68.0) Gecko/20100101 Thunderbird/68.12.1 In-Reply-To: X-TMN: [jscp7l3EdyJq/loKL8+b34g7hFItm0HHNUGZLCgnF2/EP1IwluH/MHQd746hQoY4] X-ClientProxiedBy: CO2PR06CA0067.namprd06.prod.outlook.com (2603:10b6:104:3::25) To MWHPR07MB3440.namprd07.prod.outlook.com (2603:10b6:301:69::28) Return-Path: michael.kubacki@outlook.com X-Microsoft-Original-Message-ID: <37437a03-033e-a11d-06d3-b344e3345dd5@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from [IPv6:2001:4898:d8:39:ed38:9a1b:5c35:df84] (2001:4898:80e8:7:6d5a:9a1b:5c35:df84) by CO2PR06CA0067.namprd06.prod.outlook.com (2603:10b6:104:3::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3477.21 via Frontend Transport; Fri, 16 Oct 2020 19:45:52 +0000 X-MS-PublicTrafficType: Email X-IncomingHeaderCount: 48 X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-Correlation-Id: 60ca7db4-609f-4501-0f2b-08d8720c1758 X-MS-TrafficTypeDiagnostic: BN8NAM12HT129: X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Zah9EkyaUWD2PPe1ftwJE685xzi7O8U+8mHuMR1neBzORgZ9qIHhCeCTLIy4pJ96L4JbOSikO1yH5DY5ZqwS3ruTs1Wz5DPc5triJNr3NVMtahbDXVJ1Zs4Uaa8ARO4jthmzCoqTKcdtSrrdK+KwMtMdcPVDonVcslH0X6M3uGKlLJK7w4ZbexAyr4PxUzI6fRiSMSEGC6c3qJI1CQ5s66HMA9WjwESViy4/cYwJLOyw2cyz3tibmyJgdZYvSvU8 X-MS-Exchange-AntiSpam-MessageData: 0mVFDZ3I8DBY/fFaENCwr0FcEmXEyyuEn33XNzYNK5TCIn6BzKmMdDWqo2Eum6bAzYfQsYzdykefmlf42vDgFWeMzg6m6Bb/Qqv5jVL76PSyKi2J9uXjpr5szprjPMzJDzvIXTWCAPFC+n3yt48NekI38taLYjM9gL3IFh+beCmnfcSaPx6+Nna/WLSog9yfPdt+5kjsh4vWjKrBJmkZjQ== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 60ca7db4-609f-4501-0f2b-08d8720c1758 X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Oct 2020 19:45:54.3108 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-AuthSource: BN8NAM12FT008.eop-nam12.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: Internet X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN8NAM12HT129 Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: quoted-printable I can definitely make those changes. I haven't heard much from others (Liming, Wei, Zhiguang). If you could=20 please indicate your status on the patch series (use v5) with a reply of=20 either acceptance or suggestions that would be great before I send out=20 v6 with these updates. Thanks, Michael On 10/16/2020 8:33 AM, Kinney, Michael D wrote: > Hi Michael, >=20 > Thank you for the updates. A couple minor comments: >=20 > 1) FmpDevicePkg/Library/FmpDeviceLibNull >=20 > In order to demonstrate the preferred implementation I think we shoul= d > have FmpDeviceCheckImage() call FmpDeviceCheckImageWithStatus() and > FmpDeviceSetImage() call FmpDeviceSetImageWithStatus(). This way, it > will be clear to FmpDeviceLib developers that they only need to > implement the *WithStatus() version. >=20 > 2) FmpDevicePkg/PrivateInclude/FmpLastAttemptStatus.h >=20 > FmpDependencyCheckLib comment block should use /// instead of // to b= e > consistent with the rest of the include file. >=20 > Thanks, >=20 > Mike >=20 >=20 >> -----Original Message----- >> From: Michael Kubacki >> Sent: Thursday, October 15, 2020 2:20 PM >> To: devel@edk2.groups.io >> Cc: Liming Gao ; Kinney, Michael D ; Jiang, Guomin ; >> Xu, Wei6 ; Liu, Zhiguang >> Subject: Re: [PATCH v4 0/6] Extend Last Attempt Status Usage >> >> Hi all, >> >> It's been about two weeks since this email and I still haven't seen any >> feedback on v4. >> >> I made a very small update that resulted in a v5 series today: >> https://edk2.groups.io/g/devel/message/66287 >> >> If you could please provide timely feedback on v5 it would be appreciate= d. >> >> Also, there's an issue building FmpDevicePkg at the moment that you'll >> need this patch to fix: >> https://edk2.groups.io/g/devel/message/66286 >> >> That patch needs review as well. >> >> Thanks, >> Michael >> >> On 10/2/2020 9:26 AM, Michael Kubacki wrote: >>> It is going on a week now and I haven't seen a response to this patch >>> series yet. Please review it when possible. >>> >>> On a somewhat related note, I made the changes that should be necessary >>> in edk2-platforms for backward compatibility in this patch: >>> https://edk2.groups.io/g/devel/message/65821 >>> >>> Thanks, >>> Michael >>> >>> On 9/25/2020 7:19 PM, michael.kubacki@outlook.com wrote: >>>> From: Michael Kubacki >>>> >>>> REF:https://bugzilla.tianocore.org/show_bug.cgi?id=3D2802 >>>> >>>> This patch series adds more granularity to Last Attempt Status >>>> codes reported during FMP check image and set image operations >>>> that greatly improve precision of the status codes. >>>> >>>> The unsuccessful vendor range (0x1000 - 0x4000) was introduced >>>> in UEFI Specification 2.8. At a high-level, two subranges are >>>> defined within that range in this patch series: >>>> =C2=A0=C2=A0 1. The FMP Reserved range - reserved for components impl= emented >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 in FmpDevicePkg. >>>> =C2=A0=C2=A0 2. The FMP Device Library Reserved range - reserved for >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 FmpDeviceLib instance-specific usage. >>>> >>>> The ranges are described in a public header file LastAttemptStatus.h >>>> while the specific codes used within FmpDevicePkg implementation >>>> are defined in a private header file FmpLastAttemptStatus.h. >>>> >>>> FmpDeviceLib instances should use the range definition from the >>>> public header file to define Last Attempt Status codes local to >>>> their library instance. >>>> >>>> Of note, there's multiple approaches to assigning private status >>>> codes in the FMP Reserved range. For example, individual components >>>> could define their last attempt status codes locally with the >>>> range allocated to the component defined in a package-wide private >>>> header file. However, one goal of the granularity being introduced >>>> is to provide straightforward traceability to an error source. >>>> >>>> For that reason, it was chosen to define a constant set of codes at >>>> the package level in FmpLastAttemptStatus.h. For example, if a new >>>> FmpDependencyLib instance is added, it would not be able to reassign >>>> status code values in the pre-existing FMP Dependency range; it >>>> would reuse codes for the same error source and be able to add new >>>> codes onto the range for its usage. >>>> >>>> V4 changes: >>>> =C2=A0=C2=A0 1. Simplified range value definitions in LastAttemptStat= us.h. >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 Directly assign the values in the macr= o definition instead >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 of using calculations. >>>> =C2=A0=C2=A0 2. Adjusted range sizes to leave more room for future ex= pansion. >>>> >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 OLD: >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 START=C2=A0=C2=A0=C2=A0=C2=A0 | END=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 | Usage >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 --------------------------------------= ----------| >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 0x1000=C2=A0=C2=A0=C2=A0 | 0x1FFF=C2= =A0=C2=A0=C2=A0 | FmpDevicePkg=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0 | >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 0x1000 |=C2=A0=C2=A0= =C2=A0 0x107F | FmpDxe driver=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0 | >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 0x1080 |=C2=A0=C2=A0= =C2=A0 0x109F | FMP dependency Libs=C2=A0=C2=A0=C2=A0=C2=A0 | >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 0x2000=C2=A0=C2=A0=C2=A0 | 0x3FFF=C2= =A0=C2=A0=C2=A0 | FmpDeviceLib instances=C2=A0 | >>>> >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 NEW: >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 START=C2=A0=C2=A0=C2=A0=C2=A0 | END=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 | Usage >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 --------------------------------------= --------------------------| >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 0x1000=C2=A0=C2=A0=C2=A0 | 0x17FF=C2= =A0=C2=A0=C2=A0 | FmpDevicePkg=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 | >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 0x1000 |=C2=A0=C2=A0= =C2=A0 0x107F | FmpDxe driver=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 | >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 0x1080 |=C2=A0=C2=A0= =C2=A0 0x109F | FmpDependencyLib=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2= =A0=C2=A0=C2=A0=C2=A0 | >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 0x10A0 |=C2=A0=C2=A0= =C2=A0 0x10BF | FmpDependencyCheckLib=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 | >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 0x10C0 |=C2=A0=C2=A0= =C2=A0 0x17FF | Unused. Available for future expansion. | >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 0x1800=C2=A0=C2=A0=C2=A0 | 0x1FFF=C2= =A0=C2=A0=C2=A0 | FmpDeviceLib instances implementation=C2=A0=C2=A0 | >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 0x2000=C2=A0=C2=A0=C2=A0 | 0x3FFF=C2= =A0=C2=A0=C2=A0 | Unused. Available for future expansion. | >>>> >>>> =C2=A0=C2=A0 3. Broke the single range in v3 for FMP Dependency libra= ries into >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 separate ranges. >>>> =C2=A0=C2=A0 4. Clarified LastAttemptStatus return values in each fun= ction >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 description. >>>> =C2=A0=C2=A0 5. Returned an expected LastAttemptStatus value for some= functions >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 that previously did not return a value= . >>>> =C2=A0=C2=A0 6. Reverted changes in FmpDxe to call the new FmpDeviceL= ib APIs >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 for FmpDeviceCheckImage () and FmpDevi= ceSetImage (). These will >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 be added in a future series after impa= cted platforms in >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 edk2-platforms are updated to use the = new APIs. >>>> =C2=A0=C2=A0 7. Instead of directly changing the pre-existing APIs in >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 FmpDeviceLib to add a LastAttemptStatu= s parameter, the new >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 functions were added to the library in= terface: >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 * FmpDeviceCheckImageWithS= tatus () >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 * FmpDeviceSetImageWithSta= tus () >>>> >>>> V3 changes: >>>> =C2=A0=C2=A0 1. Enhanced range definitions in LastAttemptStatus.h wit= h more >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 completeness providing length, min, an= d max values. >>>> =C2=A0=C2=A0 2. Moved the actual Last Attempt Status code assignments= to a >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 private header file PrivateInclude/Fmp= LastAttemptStatus.h. >>>> =C2=A0=C2=A0 3. Changed the value of >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 LAST_ATTEMPT_STATUS_ERROR_UNSUCCESSFUL= _VENDOR_RANGE_MAX >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 to 0x3FFF instead of 0x4000 even thoug= h 0x4000 is defined in >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 the UEFI specification. The length is = 0x4000 but the max >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 allowed value should be 0x3FFF. This c= hange was made now to >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 prevent implementation compatibility i= ssues in the future. >>>> =C2=A0=C2=A0 4. Included "DEVICE" in the following macro name to clea= rly >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 associate it with the FmpDeviceLib lib= rary class: >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 LAST_ATTEMPT_STATUS_DEVICE_LIBRARY_ERR= OR_xxx >>>> =C2=A0=C2=A0 5. Included a map to help the reader better visualize th= e range >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 definitions in LastAttemptStatus.h. >>>> =C2=A0=C2=A0 6. Included additional documentation describing the enum= in >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 FmpLastAttemptStatus.h. An explicit st= atement stating that new >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 codes should be added onto the end of = ranges to preserve the >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 values was added. >>>> =C2=A0=C2=A0 7. Simplified error handling logic in FmpDxe for FmpDevi= ceLib >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 calls that return Last Attempt Status. >>>> =C2=A0=C2=A0 8. V2 had a single memory allocation failure code used f= or >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 different memory allocations in CheckF= mpDependency () in >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 FmpDependencyLib. Each potential alloc= ation failure was >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 assigned a unique code. >>>> >>>> V2 changes: >>>> =C2=A0=C2=A0 1. Consolidate all previous incremental updates to >>>> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 LastAttemptStatus.h into one patch (pa= tch 2) >>>> =C2=A0=C2=A0 2. Move LastAttemptStatus.h from Include to PrivateInclu= de >>>> =C2=A0=C2=A0 3. Correct patch 1 subject from "FmpDevicePkg" to "MdePk= g" >>>> >>>> Cc: Liming Gao >>>> Cc: Michael D Kinney >>>> Cc: Guomin Jiang >>>> Cc: Wei6 Xu >>>> Cc: Zhiguang Liu >>>> Signed-off-by: Michael Kubacki >>>> >>>> Michael Kubacki (6): >>>> =C2=A0=C2=A0 MdePkg/SystemResourceTable.h: Add vendor range values >>>> =C2=A0=C2=A0 FmpDevicePkg: Add Last Attempt Status header files >>>> =C2=A0=C2=A0 FmpDevicePkg/FmpDxe: Add check image path Last Attempt S= tatus >>>> =C2=A0=C2=A0=C2=A0=C2=A0 capability >>>> =C2=A0=C2=A0 FmpDevicePkg/FmpDxe: Improve set image path Last Attempt= Status >>>> =C2=A0=C2=A0=C2=A0=C2=A0 granularity >>>> =C2=A0=C2=A0 FmpDevicePkg: Add Last Attempt Status support to depende= ncy libs >>>> =C2=A0=C2=A0 FmpDevicePkg/FmpDeviceLib: Add Last Attempt Status to Ch= eck/Set API >>>> >>>> >>>> FmpDevicePkg/FmpDxe/FmpDxe.c >>>> | 146 +++++++++++++++++--- >>>> >>>> FmpDevicePkg/Library/FmpDependencyCheckLib/FmpDependencyCheckLib.c >>>> |=C2=A0 39 ++++-- >>>> >>>> FmpDevicePkg/Library/FmpDependencyCheckLibNull/FmpDependencyCheckLibNu= ll.c >>>> |=C2=A0 14 +- >>>> >>>> FmpDevicePkg/Library/FmpDependencyLib/FmpDependencyLib.c >>>> |=C2=A0 93 +++++++++++-- >>>> >>>> FmpDevicePkg/Library/FmpDeviceLibNull/FmpDeviceLib.c >>>> | 132 +++++++++++++++++- >>>> >>>> FmpDevicePkg/Test/UnitTest/Library/FmpDependencyLib/EvaluateDependency= UnitTest.c >>>> |=C2=A0=C2=A0 7 +- >>>> >>>> FmpDevicePkg/FmpDxe/FmpDxe.h >>>> |=C2=A0=C2=A0 4 +- >>>> >>>> FmpDevicePkg/Include/LastAttemptStatus.h >>>> |=C2=A0 81 +++++++++++ >>>> >>>> FmpDevicePkg/Include/Library/FmpDependencyCheckLib.h >>>> |=C2=A0=C2=A0 8 +- >>>> >>>> FmpDevicePkg/Include/Library/FmpDependencyLib.h >>>> |=C2=A0 44 ++++-- >>>> >>>> FmpDevicePkg/Include/Library/FmpDeviceLib.h >>>> | 121 +++++++++++++++- >>>> >>>> FmpDevicePkg/PrivateInclude/FmpLastAttemptStatus.h >>>> |=C2=A0 81 +++++++++++ >>>> >>>> MdePkg/Include/Guid/SystemResourceTable.h >>>> |=C2=A0 13 ++ >>>> =C2=A0 13 files changed, 718 insertions(+), 65 deletions(-) >>>> =C2=A0 create mode 100644 FmpDevicePkg/Include/LastAttemptStatus.h >>>> =C2=A0 create mode 100644 FmpDevicePkg/PrivateInclude/FmpLastAttemptS= tatus.h >>>>