From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) (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 A57AF21A00AFB for ; Mon, 26 Jun 2017 17:45:43 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id DE0BB4E4D0; Tue, 27 Jun 2017 00:47:12 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com DE0BB4E4D0 Authentication-Results: ext-mx09.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx09.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=lersek@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com DE0BB4E4D0 Received: from lacos-laptop-7.usersys.redhat.com (ovpn-116-99.phx2.redhat.com [10.3.116.99]) by smtp.corp.redhat.com (Postfix) with ESMTP id 96317795A4; Tue, 27 Jun 2017 00:47:09 +0000 (UTC) To: Amit Kumar , edk2-devel@lists.01.org Cc: feng.tian@intel.com, liming.gao@intel.com, michael.d.kinney@intel.com, star.zeng@intel.com, "Gabriel L. Somlo (GMail)" , Jeff Fan References: From: Laszlo Ersek Message-ID: Date: Tue, 27 Jun 2017 02:47:08 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.2.0 MIME-Version: 1.0 In-Reply-To: X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.38]); Tue, 27 Jun 2017 00:47:13 +0000 (UTC) Subject: Re: [PATCH V4] MdeModulePkg/DxeCore: Fixed Interface returned by CoreOpenProtocol X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 27 Jun 2017 00:45:43 -0000 X-Groupsio-MsgNum: 11941 Content-Type: multipart/mixed; boundary="------------3C75114196446C4E254A305F" Content-Language: en-US --------------3C75114196446C4E254A305F Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit On 06/23/17 12:09, Amit Kumar wrote: > Change since v3: > 1) Fixed issue when Attributes = EFI_OPEN_PROTOCOL_TEST_PROTOCOL > and Inteface = NULL case. [Reported by:star.zeng at intel.com] > > Change Since v2: > 1) Modified to use EFI_ERROR to get status code > > Change since v1: > 1) Fixed typo protocal to protocol > 2) Fixed coding style > > Modified source code to update Interface as per spec. > 1) In case of Protocol is un-supported, interface should be returned NULL. > 2) In case of any error, interface should not be modified. > 3) In case of Test Protocol, interface is optional. > > Contributed-under: TianoCore Contribution Agreement 1.0 > Signed-off-by: Amit Kumar > --- > MdeModulePkg/Core/Dxe/Hand/Handle.c | 26 ++++++++++++++------------ > 1 file changed, 14 insertions(+), 12 deletions(-) This patch breaks *at least* the following drivers: - IntelFrameworkModulePkg/.../IsaBusDxe - IntelFrameworkModulePkg/.../IsaSerialDxe - MdeModulePkg/.../TerminalDxe - MdeModulePkg/.../ScsiBusDxe I have patches for the first three. I'm too tired to complete the patch for the fourth module (and any modules that might still be affected, but I'd only see those in the OVMF boot process if I got past the ScsiBusDxe problem.) The issue was reported by Gabriel here: https://lists.01.org/pipermail/edk2-devel/2017-June/011886.html although he didn't get past of the first driver, of course. Now, what this patch does is valid, as far as the UEFI spec is concerned. And the above (now broken) drivers are all incorrect to assume that EFI_ALREADY_STARTED guarantees that OpenProtocol() has filled in Interface on output. However, such an intrusive fix must be accompanied by extensive testing; preferably using one of the in-tree emulation platforms, such as OvmfPkg running on QEMU. And, when testing uncovers the failures in those drivers, patches should be submitted to fix those drivers *first*, and then the patch for OpenProtocol() should be presented *last*. I'm attaching the first three patches I have now. As I said I'm too tired to work on ScsiBusDxe (the SCSIBusDriverBindingStart() function has the same bug around EFI_ALREADY_STARTED). Which is why I'm not posting the first three patches normally, with git-send-email; the work is incomplete. Honestly, I'm thinking that commit 45cfcd8dccf8 should be reverted now, then all the drivers used by OvmfPkg should be fixed up (not by me, obviously!), and once OVMF boots again, we can re-commit (= cherry-pick) commit 45cfcd8dccf8. Thanks Laszlo --------------3C75114196446C4E254A305F Content-Type: text/x-patch; name="0001-IntelFrameworkModulePkg-IsaBusDxe-fix-OpenProtocol-usage.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*0="0001-IntelFrameworkModulePkg-IsaBusDxe-fix-OpenProtocol-usag"; filename*1="e.patch" RnJvbSAwNzI2ZDY5ZmExNzM5NmNmZGY3N2RiMjYyZGNmY2FjMjdhYThjODQ4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMYXN6bG8gRXJzZWsgPGxlcnNla0ByZWRoYXQuY29tPgpEYXRl OiBUdWUsIDI3IEp1biAyMDE3IDAxOjM0OjI1ICswMjAwClN1YmplY3Q6IFtQQVRDSCAxLzNdIElu dGVsRnJhbWV3b3JrTW9kdWxlUGtnL0lzYUJ1c0R4ZTogZml4IE9wZW5Qcm90b2NvbCgpCiB1c2Fn ZQoKVGhlIElzYUJ1c0NvbnRyb2xsZXJEcml2ZXJTdGFydCgpIGZ1bmN0aW9uIGV4cGxvaXRzIHRo ZSBwcmV2aW91cywKbm9uLXN0YW5kYXJkIGJlaGF2aW9yIG9mIGVkazIgdGhhdCBPcGVuUHJvdG9j b2woKSBvdXRwdXRzIHRoZSB2YWxpZApwcm90b2NvbCBJbnRlcmZhY2UgZXZlbiB3aGVuIE9wZW5Q cm90b2NvbCgpIHJldHVybnMgRUZJX0FMUkVBRFlfU1RBUlRFRC4KClRoaXMgYmVoYXZpb3IgaGFz IGJlZW4gZGVsZXRlZCB3aXRoIGNvbW1pdCA0NWNmY2Q4ZGNjZjgKKCJNZGVNb2R1bGVQa2cvRHhl Q29yZTogRml4ZWQgSW50ZXJmYWNlIHJldHVybmVkIGJ5IENvcmVPcGVuUHJvdG9jb2wiLAoyMDE3 LTA2LTIzKTsgSW50ZXJmYWNlIGlzIG5vIGxvbmdlciBzZXQgb24gZXJyb3IgKHdoaWNoIGNvbmZv cm1zIHRvIHRoZQpVRUZJIHNwZWMpLiBBcyBhIHJlc3VsdCwgd2hlbiB0aGUgT3BlblByb3RvY29s KCkgY2FsbHMgaW4KSXNhQnVzQ29udHJvbGxlckRyaXZlclN0YXJ0KCkgZmFpbCB3aXRoIEVGSV9B TFJFQURZX1NUQVJURUQsClBhcmVudERldmljZVBhdGggYW5kIElzYUFjcGkgaGF2ZSB1bmluaXRp YWxpemVkIChpbmRldGVybWluYXRlKSB2YWx1ZXMsCmxlYWRpbmcgdG8gY3Jhc2hlcy4KClJlc3Rv cmUgdGhlIHByZXZpb3VzIGJlaGF2aW9yIG9mIElzYUJ1c0NvbnRyb2xsZXJEcml2ZXJTdGFydCgp IGJ5CmV4cGxpY2l0bHkgZ2V0dGluZyB0aGUgcHJvdG9jb2wgaW50ZXJmYWNlcyB3aXRoCkVGSV9P UEVOX1BST1RPQ09MX0dFVF9QUk9UT0NPTC4KCkNjOiAiR2FicmllbCBMLiBTb21sbyIgPGdzb21s b0BnbWFpbC5jb20+CkNjOiBBbWl0IEt1bWFyIDxhbWl0LmFrQHNhbXN1bmcuY29tPgpDYzogSmVm ZiBGYW4gPGplZmYuZmFuQGludGVsLmNvbT4KQ2M6IExpbWluZyBHYW8gPGxpbWluZy5nYW9AaW50 ZWwuY29tPgpDYzogU3RhciBaZW5nIDxzdGFyLnplbmdAaW50ZWwuY29tPgpSZXBvcnRlZC1ieTog IkdhYnJpZWwgTC4gU29tbG8iIDxnc29tbG9AZ21haWwuY29tPgpDb250cmlidXRlZC11bmRlcjog VGlhbm9Db3JlIENvbnRyaWJ1dGlvbiBBZ3JlZW1lbnQgMS4wClNpZ25lZC1vZmYtYnk6IExhc3ps byBFcnNlayA8bGVyc2VrQHJlZGhhdC5jb20+Ci0tLQogSW50ZWxGcmFtZXdvcmtNb2R1bGVQa2cv QnVzL0lzYS9Jc2FCdXNEeGUvSXNhQnVzLmMgfCA1MSArKysrKysrKysrKysrKysrKy0tLS0tCiAx IGZpbGUgY2hhbmdlZCwgNDAgaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvSW50ZWxGcmFtZXdvcmtNb2R1bGVQa2cvQnVzL0lzYS9Jc2FCdXNEeGUvSXNhQnVzLmMg Yi9JbnRlbEZyYW1ld29ya01vZHVsZVBrZy9CdXMvSXNhL0lzYUJ1c0R4ZS9Jc2FCdXMuYwppbmRl eCAxMzEyZjI2MGY5YWUuLjdkOTk2Y2Y4NmViMSAxMDA2NDQKLS0tIGEvSW50ZWxGcmFtZXdvcmtN b2R1bGVQa2cvQnVzL0lzYS9Jc2FCdXNEeGUvSXNhQnVzLmMKKysrIGIvSW50ZWxGcmFtZXdvcmtN b2R1bGVQa2cvQnVzL0lzYS9Jc2FCdXNEeGUvSXNhQnVzLmMKQEAgLTI1Miw2MiArMjUyLDkxIEBA IElzYUJ1c0NvbnRyb2xsZXJEcml2ZXJTdGFydCAoCiAgICAgICAgICAgICAgICAgICBDb250cm9s bGVyLA0KICAgICAgICAgICAgICAgICAgIEVGSV9PUEVOX1BST1RPQ09MX0dFVF9QUk9UT0NPTA0K ICAgICAgICAgICAgICAgICAgICk7DQogICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQogICAg IHJldHVybiBTdGF0dXM7DQogICB9DQogDQogICAvLw0KICAgLy8gT3BlbiBEZXZpY2UgUGF0aCBQ cm90b2NvbA0KICAgLy8NCiAgIFN0YXR1cyA9IGdCUy0+T3BlblByb3RvY29sICgNCiAgICAgICAg ICAgICAgICAgICBDb250cm9sbGVyLA0KICAgICAgICAgICAgICAgICAgICZnRWZpRGV2aWNlUGF0 aFByb3RvY29sR3VpZCwNCiAgICAgICAgICAgICAgICAgICAoVk9JRCAqKikgJlBhcmVudERldmlj ZVBhdGgsDQogICAgICAgICAgICAgICAgICAgVGhpcy0+RHJpdmVyQmluZGluZ0hhbmRsZSwNCiAg ICAgICAgICAgICAgICAgICBDb250cm9sbGVyLA0KICAgICAgICAgICAgICAgICAgIEVGSV9PUEVO X1BST1RPQ09MX0JZX0RSSVZFUg0KICAgICAgICAgICAgICAgICAgICk7DQotICBpZiAoRUZJX0VS Uk9SIChTdGF0dXMpICYmIFN0YXR1cyAhPSBFRklfQUxSRUFEWV9TVEFSVEVEKSB7DQotICAgIHJl dHVybiBTdGF0dXM7DQorICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQorICAgIGlmICAoU3Rh dHVzICE9IEVGSV9BTFJFQURZX1NUQVJURUQpIHsNCisgICAgICByZXR1cm4gU3RhdHVzOw0KKyAg ICB9DQorICAgIC8vDQorICAgIC8vIFJlcGVhdCB0aGUgYWJvdmUgT3BlblByb3RvY29sKCkgY2Fs bCB3aXRoIEdFVF9QUk9UT0NPTC4NCisgICAgLy8NCisgICAgU3RhdHVzID0gZ0JTLT5PcGVuUHJv dG9jb2wgKA0KKyAgICAgICAgICAgICAgICAgICAgQ29udHJvbGxlciwNCisgICAgICAgICAgICAg ICAgICAgICZnRWZpRGV2aWNlUGF0aFByb3RvY29sR3VpZCwNCisgICAgICAgICAgICAgICAgICAg IChWT0lEICoqKSAmUGFyZW50RGV2aWNlUGF0aCwNCisgICAgICAgICAgICAgICAgICAgIFRoaXMt PkRyaXZlckJpbmRpbmdIYW5kbGUsDQorICAgICAgICAgICAgICAgICAgICBDb250cm9sbGVyLA0K KyAgICAgICAgICAgICAgICAgICAgRUZJX09QRU5fUFJPVE9DT0xfR0VUX1BST1RPQ09MDQorICAg ICAgICAgICAgICAgICAgICApOw0KKyAgICBBU1NFUlRfRUZJX0VSUk9SIChTdGF0dXMpOw0KICAg fQ0KIA0KICAgLy8NCiAgIC8vIE9wZW4gSVNBIEFjcGkgUHJvdG9jb2wNCiAgIC8vDQogICBTdGF0 dXMgPSBnQlMtPk9wZW5Qcm90b2NvbCAoDQogICAgICAgICAgICAgICAgICAgQ29udHJvbGxlciwN CiAgICAgICAgICAgICAgICAgICAmZ0VmaUlzYUFjcGlQcm90b2NvbEd1aWQsDQogICAgICAgICAg ICAgICAgICAgKFZPSUQgKiopICZJc2FBY3BpLA0KICAgICAgICAgICAgICAgICAgIFRoaXMtPkRy aXZlckJpbmRpbmdIYW5kbGUsDQogICAgICAgICAgICAgICAgICAgQ29udHJvbGxlciwNCiAgICAg ICAgICAgICAgICAgICBFRklfT1BFTl9QUk9UT0NPTF9CWV9EUklWRVINCiAgICAgICAgICAgICAg ICAgICApOw0KLSAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSAmJiBTdGF0dXMgIT0gRUZJX0FMUkVB RFlfU1RBUlRFRCkgew0KKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KKyAgICBpZiAoU3Rh dHVzICE9IEVGSV9BTFJFQURZX1NUQVJURUQpIHsNCisgICAgICAvLw0KKyAgICAgIC8vIENsb3Nl IG9wZW5lZCBwcm90b2NvbC4gKFRoaXMgaXMgcmVxdWlyZWQgYWZ0ZXIgQllfRFJJVkVSLCBhbmQg bm90DQorICAgICAgLy8gcmVxdWlyZWQgYnV0IHBlcm1pdHRlZCBhZnRlciBHRVRfUFJPVE9DT0wu KQ0KKyAgICAgIC8vDQorICAgICAgZ0JTLT5DbG9zZVByb3RvY29sICgNCisgICAgICAgICAgICAg Q29udHJvbGxlciwNCisgICAgICAgICAgICAgJmdFZmlEZXZpY2VQYXRoUHJvdG9jb2xHdWlkLA0K KyAgICAgICAgICAgICBUaGlzLT5Ecml2ZXJCaW5kaW5nSGFuZGxlLA0KKyAgICAgICAgICAgICBD b250cm9sbGVyDQorICAgICAgICAgICAgICk7DQorICAgICAgcmV0dXJuIFN0YXR1czsNCisgICAg fQ0KICAgICAvLw0KLSAgICAvLyBDbG9zZSBvcGVuZWQgcHJvdG9jb2wNCisgICAgLy8gUmVwZWF0 IHRoZSBhYm92ZSBPcGVuUHJvdG9jb2woKSBjYWxsIHdpdGggR0VUX1BST1RPQ09MLg0KICAgICAv Lw0KLSAgICBnQlMtPkNsb3NlUHJvdG9jb2wgKA0KLSAgICAgICAgICAgQ29udHJvbGxlciwNCi0g ICAgICAgICAgICZnRWZpRGV2aWNlUGF0aFByb3RvY29sR3VpZCwNCi0gICAgICAgICAgIFRoaXMt PkRyaXZlckJpbmRpbmdIYW5kbGUsDQotICAgICAgICAgICBDb250cm9sbGVyDQotICAgICAgICAg ICApOw0KLSAgICByZXR1cm4gU3RhdHVzOw0KKyAgICBTdGF0dXMgPSBnQlMtPk9wZW5Qcm90b2Nv bCAoDQorICAgICAgICAgICAgICAgICAgICBDb250cm9sbGVyLA0KKyAgICAgICAgICAgICAgICAg ICAgJmdFZmlJc2FBY3BpUHJvdG9jb2xHdWlkLA0KKyAgICAgICAgICAgICAgICAgICAgKFZPSUQg KiopICZJc2FBY3BpLA0KKyAgICAgICAgICAgICAgICAgICAgVGhpcy0+RHJpdmVyQmluZGluZ0hh bmRsZSwNCisgICAgICAgICAgICAgICAgICAgIENvbnRyb2xsZXIsDQorICAgICAgICAgICAgICAg ICAgICBFRklfT1BFTl9QUk9UT0NPTF9HRVRfUFJPVE9DT0wNCisgICAgICAgICAgICAgICAgICAg ICk7DQorICAgIEFTU0VSVF9FRklfRVJST1IgKFN0YXR1cyk7DQogICB9DQogICAvLw0KICAgLy8g VGhlIElzYUJ1cyBkcml2ZXIgd2lsbCB1c2UgbWVtb3J5IGJlbG93IDE2TSwgd2hpY2ggaXMgbm90 IHRlc3RlZCB5ZXQsDQogICAvLyBzbyBjYWxsIENvbXBhdGlibGVSYW5nZVRlc3QgdG8gdGVzdCB0 aGVtLiBTaW5jZSBtZW1vcnkgYmVsb3cgMU0gc2hvdWxkDQogICAvLyBiZSByZXNlcnZlZCB0byBD U00sIGFuZCAxNU1+MTZNIG1pZ2h0IGJlIHJlc2VydmVkIGZvciBJc2EgaG9sZSwgdGVzdCAxTQ0K ICAgLy8gfjE1TSBoZXJlDQogICAvLw0KICAgU3RhdHVzID0gZ0JTLT5Mb2NhdGVQcm90b2NvbCAo DQogICAgICAgICAgICAgICAgICAgJmdFZmlHZW5lcmljTWVtVGVzdFByb3RvY29sR3VpZCwNCiAg ICAgICAgICAgICAgICAgICBOVUxMLA0KICAgICAgICAgICAgICAgICAgIChWT0lEICoqKSAmR2Vu TWVtb3J5VGVzdA0KICAgICAgICAgICAgICAgICAgICk7DQogDQogICBpZiAoIUVGSV9FUlJPUiAo U3RhdHVzKSkgew0KICAgICBTdGF0dXMgPSBHZW5NZW1vcnlUZXN0LT5Db21wYXRpYmxlUmFuZ2VU ZXN0ICgNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5NZW1vcnlUZXN0LA0KICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTAwMDAwLA0KICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDB4RTAwMDAwDQotLSAKMi4xMy4xLjMuZzhiZTVhNzU3ZmE2NwoK --------------3C75114196446C4E254A305F Content-Type: text/x-patch; name="0002-IntelFrameworkModulePkg-IsaSerialDxe-fix-OpenProtocol-usage.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*0="0002-IntelFrameworkModulePkg-IsaSerialDxe-fix-OpenProtocol-u"; filename*1="sage.patch" RnJvbSBjZjgyYmQwMGU2MjUzZWJlNjFiODQ2ZTI2M2ZkYzIyYjExZDEyZGMzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMYXN6bG8gRXJzZWsgPGxlcnNla0ByZWRoYXQuY29tPgpEYXRl OiBUdWUsIDI3IEp1biAyMDE3IDAxOjM0OjI1ICswMjAwClN1YmplY3Q6IFtQQVRDSCAyLzNdIElu dGVsRnJhbWV3b3JrTW9kdWxlUGtnL0lzYVNlcmlhbER4ZTogZml4IE9wZW5Qcm90b2NvbCgpCiB1 c2FnZQoKVGhlIFNlcmlhbENvbnRyb2xsZXJEcml2ZXJTdGFydCgpIGZ1bmN0aW9uIGV4cGxvaXRz IHRoZSBwcmV2aW91cywKbm9uLXN0YW5kYXJkIGJlaGF2aW9yIG9mIGVkazIgdGhhdCBPcGVuUHJv dG9jb2woKSBvdXRwdXRzIHRoZSB2YWxpZApwcm90b2NvbCBJbnRlcmZhY2UgZXZlbiB3aGVuIE9w ZW5Qcm90b2NvbCgpIHJldHVybnMgRUZJX0FMUkVBRFlfU1RBUlRFRC4KClRoaXMgYmVoYXZpb3Ig aGFzIGJlZW4gZGVsZXRlZCB3aXRoIGNvbW1pdCA0NWNmY2Q4ZGNjZjgKKCJNZGVNb2R1bGVQa2cv RHhlQ29yZTogRml4ZWQgSW50ZXJmYWNlIHJldHVybmVkIGJ5IENvcmVPcGVuUHJvdG9jb2wiLAoy MDE3LTA2LTIzKTsgSW50ZXJmYWNlIGlzIG5vIGxvbmdlciBzZXQgb24gZXJyb3IgKHdoaWNoIGNv bmZvcm1zIHRvIHRoZQpVRUZJIHNwZWMpLiBBcyBhIHJlc3VsdCwgd2hlbiB0aGUgT3BlblByb3Rv Y29sKCkgY2FsbHMgaW4KU2VyaWFsQ29udHJvbGxlckRyaXZlclN0YXJ0KCkgZmFpbCB3aXRoIEVG SV9BTFJFQURZX1NUQVJURUQsClBhcmVudERldmljZVBhdGggYW5kIElzYUlvIGhhdmUgdW5pbml0 aWFsaXplZCAoaW5kZXRlcm1pbmF0ZSkgdmFsdWVzLApsZWFkaW5nIHRvIGEgZmFpbGVkIGFzc2Vy dGlvbiBsYXRlci4KClJlc3RvcmUgdGhlIHByZXZpb3VzIGJlaGF2aW9yIG9mIFNlcmlhbENvbnRy b2xsZXJEcml2ZXJTdGFydCgpIGJ5CmV4cGxpY2l0bHkgZ2V0dGluZyB0aGUgcHJvdG9jb2wgaW50 ZXJmYWNlcyB3aXRoCkVGSV9PUEVOX1BST1RPQ09MX0dFVF9QUk9UT0NPTC4KCkNjOiAiR2Ficmll bCBMLiBTb21sbyIgPGdzb21sb0BnbWFpbC5jb20+CkNjOiBBbWl0IEt1bWFyIDxhbWl0LmFrQHNh bXN1bmcuY29tPgpDYzogSmVmZiBGYW4gPGplZmYuZmFuQGludGVsLmNvbT4KQ2M6IExpbWluZyBH YW8gPGxpbWluZy5nYW9AaW50ZWwuY29tPgpDYzogU3RhciBaZW5nIDxzdGFyLnplbmdAaW50ZWwu Y29tPgpDb250cmlidXRlZC11bmRlcjogVGlhbm9Db3JlIENvbnRyaWJ1dGlvbiBBZ3JlZW1lbnQg MS4wClNpZ25lZC1vZmYtYnk6IExhc3psbyBFcnNlayA8bGVyc2VrQHJlZGhhdC5jb20+Ci0tLQog Li4uL0J1cy9Jc2EvSXNhU2VyaWFsRHhlL1NlcmlhbC5jICAgICAgICAgICAgICAgICAgfCAzNiAr KysrKysrKysrKysrKysrKysrKy0tCiAxIGZpbGUgY2hhbmdlZCwgMzQgaW5zZXJ0aW9ucygrKSwg MiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9JbnRlbEZyYW1ld29ya01vZHVsZVBrZy9CdXMv SXNhL0lzYVNlcmlhbER4ZS9TZXJpYWwuYyBiL0ludGVsRnJhbWV3b3JrTW9kdWxlUGtnL0J1cy9J c2EvSXNhU2VyaWFsRHhlL1NlcmlhbC5jCmluZGV4IDU3ZWU2NjlkMTQwNi4uNDg4MzZmNmZlZTky IDEwMDY0NAotLS0gYS9JbnRlbEZyYW1ld29ya01vZHVsZVBrZy9CdXMvSXNhL0lzYVNlcmlhbER4 ZS9TZXJpYWwuYworKysgYi9JbnRlbEZyYW1ld29ya01vZHVsZVBrZy9CdXMvSXNhL0lzYVNlcmlh bER4ZS9TZXJpYWwuYwpAQCAtNDA5LDczICs0MDksMTAwIEBAIFNlcmlhbENvbnRyb2xsZXJEcml2 ZXJTdGFydCAoCiAgIFVBUlRfREVWSUNFX1BBVEggICAgICAgICAgICAgICAgICAgICpVYXJ0Ow0K ICAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmxvd0NvbnRyb2xNYXA7DQog ICBVQVJUX0ZMT1dfQ09OVFJPTF9ERVZJQ0VfUEFUSCAgICAgICAqRmxvd0NvbnRyb2w7DQogICBF RklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICAgICAgICAgICAqVGVtcERldmljZVBhdGg7DQogICBV SU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250cm9sOw0KIA0KICAgU2VyaWFs RGV2aWNlID0gTlVMTDsNCiAgIC8vDQogICAvLyBHZXQgdGhlIFBhcmVudCBEZXZpY2UgUGF0aA0K ICAgLy8NCiAgIFN0YXR1cyA9IGdCUy0+T3BlblByb3RvY29sICgNCiAgICAgICAgICAgICAgICAg ICBDb250cm9sbGVyLA0KICAgICAgICAgICAgICAgICAgICZnRWZpRGV2aWNlUGF0aFByb3RvY29s R3VpZCwNCiAgICAgICAgICAgICAgICAgICAoVk9JRCAqKikgJlBhcmVudERldmljZVBhdGgsDQog ICAgICAgICAgICAgICAgICAgVGhpcy0+RHJpdmVyQmluZGluZ0hhbmRsZSwNCiAgICAgICAgICAg ICAgICAgICBDb250cm9sbGVyLA0KICAgICAgICAgICAgICAgICAgIEVGSV9PUEVOX1BST1RPQ09M X0JZX0RSSVZFUg0KICAgICAgICAgICAgICAgICAgICk7DQotICBpZiAoRUZJX0VSUk9SIChTdGF0 dXMpICYmIFN0YXR1cyAhPSBFRklfQUxSRUFEWV9TVEFSVEVEKSB7DQotICAgIHJldHVybiBTdGF0 dXM7DQorICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQorICAgIGlmIChTdGF0dXMgIT0gRUZJ X0FMUkVBRFlfU1RBUlRFRCkgew0KKyAgICAgIHJldHVybiBTdGF0dXM7DQorICAgIH0NCisgICAg Ly8NCisgICAgLy8gUmVwZWF0IHRoZSBhYm92ZSBPcGVuUHJvdG9jb2woKSBjYWxsIHdpdGggR0VU X1BST1RPQ09MLg0KKyAgICAvLw0KKyAgICBTdGF0dXMgPSBnQlMtPk9wZW5Qcm90b2NvbCAoDQor ICAgICAgICAgICAgICAgICAgICBDb250cm9sbGVyLA0KKyAgICAgICAgICAgICAgICAgICAgJmdF ZmlEZXZpY2VQYXRoUHJvdG9jb2xHdWlkLA0KKyAgICAgICAgICAgICAgICAgICAgKFZPSUQgKiop ICZQYXJlbnREZXZpY2VQYXRoLA0KKyAgICAgICAgICAgICAgICAgICAgVGhpcy0+RHJpdmVyQmlu ZGluZ0hhbmRsZSwNCisgICAgICAgICAgICAgICAgICAgIENvbnRyb2xsZXIsDQorICAgICAgICAg ICAgICAgICAgICBFRklfT1BFTl9QUk9UT0NPTF9HRVRfUFJPVE9DT0wNCisgICAgICAgICAgICAg ICAgICAgICk7DQorICAgIEFTU0VSVF9FRklfRVJST1IgKFN0YXR1cyk7DQogICB9DQogICAvLw0K ICAgLy8gUmVwb3J0IHN0YXR1cyBjb2RlIGVuYWJsZSB0aGUgc2VyaWFsDQogICAvLw0KICAgUkVQ T1JUX1NUQVRVU19DT0RFX1dJVEhfREVWSUNFX1BBVEggKA0KICAgICBFRklfUFJPR1JFU1NfQ09E RSwNCiAgICAgRUZJX1BfUENfRU5BQkxFIHwgRUZJX1BFUklQSEVSQUxfU0VSSUFMX1BPUlQsDQog ICAgIFBhcmVudERldmljZVBhdGgNCiAgICAgKTsNCiANCiAgIC8vDQogICAvLyBHcmFiIHRoZSBJ TyBhYnN0cmFjdGlvbiB3ZSBuZWVkIHRvIGdldCBhbnkgd29yayBkb25lDQogICAvLw0KICAgU3Rh dHVzID0gZ0JTLT5PcGVuUHJvdG9jb2wgKA0KICAgICAgICAgICAgICAgICAgIENvbnRyb2xsZXIs DQogICAgICAgICAgICAgICAgICAgJmdFZmlJc2FJb1Byb3RvY29sR3VpZCwNCiAgICAgICAgICAg ICAgICAgICAoVk9JRCAqKikgJklzYUlvLA0KICAgICAgICAgICAgICAgICAgIFRoaXMtPkRyaXZl ckJpbmRpbmdIYW5kbGUsDQogICAgICAgICAgICAgICAgICAgQ29udHJvbGxlciwNCiAgICAgICAg ICAgICAgICAgICBFRklfT1BFTl9QUk9UT0NPTF9CWV9EUklWRVINCiAgICAgICAgICAgICAgICAg ICApOw0KICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSAmJiBTdGF0dXMgIT0gRUZJX0FMUkVBRFlf U1RBUlRFRCkgew0KICAgICBnb3RvIEVycm9yOw0KICAgfQ0KIA0KICAgaWYgKFN0YXR1cyA9PSBF RklfQUxSRUFEWV9TVEFSVEVEKSB7DQogDQogICAgIGlmIChSZW1haW5pbmdEZXZpY2VQYXRoID09 IE5VTEwgfHwgSXNEZXZpY2VQYXRoRW5kIChSZW1haW5pbmdEZXZpY2VQYXRoKSkgew0KICAgICAg IC8vDQogICAgICAgLy8gSWYgUmVtYWluaW5nRGV2aWNlUGF0aCBpcyBOVUxMIG9yIGlzIHRoZSBF bmQgb2YgRGV2aWNlIFBhdGggTm9kZQ0KICAgICAgIC8vDQogICAgICAgcmV0dXJuIEVGSV9TVUND RVNTOw0KICAgICB9DQogDQogICAgIC8vDQorICAgIC8vIFJlcGVhdCB0aGUgYWJvdmUgT3BlblBy b3RvY29sKCkgY2FsbCB3aXRoIEdFVF9QUk9UT0NPTC4NCisgICAgLy8NCisgICAgU3RhdHVzID0g Z0JTLT5PcGVuUHJvdG9jb2wgKA0KKyAgICAgICAgICAgICAgICAgICAgQ29udHJvbGxlciwNCisg ICAgICAgICAgICAgICAgICAgICZnRWZpSXNhSW9Qcm90b2NvbEd1aWQsDQorICAgICAgICAgICAg ICAgICAgICAoVk9JRCAqKikgJklzYUlvLA0KKyAgICAgICAgICAgICAgICAgICAgVGhpcy0+RHJp dmVyQmluZGluZ0hhbmRsZSwNCisgICAgICAgICAgICAgICAgICAgIENvbnRyb2xsZXIsDQorICAg ICAgICAgICAgICAgICAgICBFRklfT1BFTl9QUk9UT0NPTF9HRVRfUFJPVE9DT0wNCisgICAgICAg ICAgICAgICAgICAgICk7DQorICAgIEFTU0VSVF9FRklfRVJST1IgKFN0YXR1cyk7DQorDQorICAg IC8vDQogICAgIC8vIE1ha2Ugc3VyZSBhIGNoaWxkIGhhbmRsZSBkb2VzIG5vdCBhbHJlYWR5IGV4 aXN0LiAgVGhpcyBkcml2ZXIgY2FuIG9ubHkNCiAgICAgLy8gcHJvZHVjZSBvbmUgY2hpbGQgcGVy IHNlcmlhbCBwb3J0Lg0KICAgICAvLw0KICAgICBTdGF0dXMgPSBnQlMtPk9wZW5Qcm90b2NvbElu Zm9ybWF0aW9uICgNCiAgICAgICAgICAgICAgICAgICAgIENvbnRyb2xsZXIsDQogICAgICAgICAg ICAgICAgICAgICAmZ0VmaUlzYUlvUHJvdG9jb2xHdWlkLA0KICAgICAgICAgICAgICAgICAgICAg Jk9wZW5JbmZvQnVmZmVyLA0KICAgICAgICAgICAgICAgICAgICAgJkVudHJ5Q291bnQNCiAgICAg ICAgICAgICAgICAgICAgICk7DQogICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCiAgICAg ICByZXR1cm4gU3RhdHVzOw0KICAgICB9DQogDQogICAgIFN0YXR1cyA9IEVGSV9BTFJFQURZX1NU QVJURUQ7DQogICAgIGZvciAoSW5kZXggPSAwOyBJbmRleCA8IEVudHJ5Q291bnQ7IEluZGV4Kysp IHsNCiAgICAgICBpZiAoKE9wZW5JbmZvQnVmZmVyW0luZGV4XS5BdHRyaWJ1dGVzICYgRUZJX09Q RU5fUFJPVE9DT0xfQllfQ0hJTERfQ09OVFJPTExFUikgIT0gMCkgew0KICAgICAgICAgU3RhdHVz ID0gZ0JTLT5PcGVuUHJvdG9jb2wgKA0KICAgICAgICAgICAgICAgICAgICAgICAgIE9wZW5JbmZv QnVmZmVyW0luZGV4XS5Db250cm9sbGVySGFuZGxlLA0KQEAgLTY1OSwzNiArNjg2LDQxIEBAIFNl cmlhbENvbnRyb2xsZXJEcml2ZXJTdGFydCAoCiAgICAgICAgICAgICAgICAgICApOw0KICAgaWYg KEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KICAgICBnb3RvIEVycm9yOw0KICAgfQ0KICAgLy8NCiAg IC8vIE9wZW4gRm9yIENoaWxkIERldmljZQ0KICAgLy8NCiAgIFN0YXR1cyA9IGdCUy0+T3BlblBy b3RvY29sICgNCiAgICAgICAgICAgICAgICAgICBDb250cm9sbGVyLA0KICAgICAgICAgICAgICAg ICAgICZnRWZpSXNhSW9Qcm90b2NvbEd1aWQsDQogICAgICAgICAgICAgICAgICAgKFZPSUQgKiop ICZJc2FJbywNCiAgICAgICAgICAgICAgICAgICBUaGlzLT5Ecml2ZXJCaW5kaW5nSGFuZGxlLA0K ICAgICAgICAgICAgICAgICAgIFNlcmlhbERldmljZS0+SGFuZGxlLA0KICAgICAgICAgICAgICAg ICAgIEVGSV9PUEVOX1BST1RPQ09MX0JZX0NISUxEX0NPTlRST0xMRVINCiAgICAgICAgICAgICAg ICAgICApOw0KIA0KIEVycm9yOg0KICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KKyAgICAv Lw0KKyAgICAvLyBDbG9zaW5nIHRoZSBwcm90b2NvbCBpbnRlcmZhY2VzIG9wZW5lZCB3aXRoIEJZ X0RSSVZFUiBpcyByZXF1aXJlZC4NCisgICAgLy8gQ2xvc2luZyB0aGUgcHJvdG9jb2wgaW50ZXJm YWNlcyBvcGVuZWQgd2l0aCBHRVRfUFJPVE9DT0wgaXMgbm90IHJlcXVpcmVkDQorICAgIC8vIGJ1 dCBwZXJtaXR0ZWQuDQorICAgIC8vDQogICAgIGdCUy0+Q2xvc2VQcm90b2NvbCAoDQogICAgICAg ICAgICBDb250cm9sbGVyLA0KICAgICAgICAgICAgJmdFZmlEZXZpY2VQYXRoUHJvdG9jb2xHdWlk LA0KICAgICAgICAgICAgVGhpcy0+RHJpdmVyQmluZGluZ0hhbmRsZSwNCiAgICAgICAgICAgIENv bnRyb2xsZXINCiAgICAgICAgICAgICk7DQogICAgIGdCUy0+Q2xvc2VQcm90b2NvbCAoDQogICAg ICAgICAgICBDb250cm9sbGVyLA0KICAgICAgICAgICAgJmdFZmlJc2FJb1Byb3RvY29sR3VpZCwN CiAgICAgICAgICAgIFRoaXMtPkRyaXZlckJpbmRpbmdIYW5kbGUsDQogICAgICAgICAgICBDb250 cm9sbGVyDQogICAgICAgICAgICApOw0KICAgICBpZiAoU2VyaWFsRGV2aWNlICE9IE5VTEwpIHsN CiAgICAgICBpZiAoU2VyaWFsRGV2aWNlLT5EZXZpY2VQYXRoICE9IE5VTEwpIHsNCiAgICAgICAg IGdCUy0+RnJlZVBvb2wgKFNlcmlhbERldmljZS0+RGV2aWNlUGF0aCk7DQogICAgICAgfQ0KIA0K ICAgICAgIEZyZWVVbmljb2RlU3RyaW5nVGFibGUgKFNlcmlhbERldmljZS0+Q29udHJvbGxlck5h bWVUYWJsZSk7DQotLSAKMi4xMy4xLjMuZzhiZTVhNzU3ZmE2NwoK --------------3C75114196446C4E254A305F Content-Type: text/x-patch; name="0003-MdeModulePkg-TerminalDxe-fix-OpenProtocol-usage.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*0="0003-MdeModulePkg-TerminalDxe-fix-OpenProtocol-usage.patch" RnJvbSA4OTljMTAyMGRlN2QxMjM5ODkxZDYxZTE1YTAzNGFhMWIxM2E4MzgxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMYXN6bG8gRXJzZWsgPGxlcnNla0ByZWRoYXQuY29tPgpEYXRl OiBUdWUsIDI3IEp1biAyMDE3IDAxOjM0OjI1ICswMjAwClN1YmplY3Q6IFtQQVRDSCAzLzNdIE1k ZU1vZHVsZVBrZy9UZXJtaW5hbER4ZTogZml4IE9wZW5Qcm90b2NvbCgpIHVzYWdlCgpUaGUgVGVy bWluYWxEcml2ZXJCaW5kaW5nU3RhcnQoKSBmdW5jdGlvbiBleHBsb2l0cyB0aGUgcHJldmlvdXMs Cm5vbi1zdGFuZGFyZCBiZWhhdmlvciBvZiBlZGsyIHRoYXQgT3BlblByb3RvY29sKCkgb3V0cHV0 cyB0aGUgdmFsaWQKcHJvdG9jb2wgSW50ZXJmYWNlIGV2ZW4gd2hlbiBPcGVuUHJvdG9jb2woKSBy ZXR1cm5zIEVGSV9BTFJFQURZX1NUQVJURUQuCgpUaGlzIGJlaGF2aW9yIGhhcyBiZWVuIGRlbGV0 ZWQgd2l0aCBjb21taXQgNDVjZmNkOGRjY2Y4CigiTWRlTW9kdWxlUGtnL0R4ZUNvcmU6IEZpeGVk IEludGVyZmFjZSByZXR1cm5lZCBieSBDb3JlT3BlblByb3RvY29sIiwKMjAxNy0wNi0yMyk7IElu dGVyZmFjZSBpcyBubyBsb25nZXIgc2V0IG9uIGVycm9yICh3aGljaCBjb25mb3JtcyB0byB0aGUK VUVGSSBzcGVjKS4gQXMgYSByZXN1bHQsIHdoZW4gdGhlIE9wZW5Qcm90b2NvbCgpIGNhbGxzIGlu ClRlcm1pbmFsRHJpdmVyQmluZGluZ1N0YXJ0KCkgZmFpbCB3aXRoIEVGSV9BTFJFQURZX1NUQVJU RUQsClBhcmVudERldmljZVBhdGggYW5kIFNlcmlhbElvIGhhdmUgdW5pbml0aWFsaXplZCAoaW5k ZXRlcm1pbmF0ZSkgdmFsdWVzLApsZWFkaW5nIHRvIGEgZmFpbGVkIGFzc2VydGlvbiBsYXRlci4K ClJlc3RvcmUgdGhlIHByZXZpb3VzIGJlaGF2aW9yIG9mIFRlcm1pbmFsRHJpdmVyQmluZGluZ1N0 YXJ0KCkgYnkKZXhwbGljaXRseSBnZXR0aW5nIHRoZSBwcm90b2NvbCBpbnRlcmZhY2VzIHdpdGgK RUZJX09QRU5fUFJPVE9DT0xfR0VUX1BST1RPQ09MLgoKQ2M6ICJHYWJyaWVsIEwuIFNvbWxvIiA8 Z3NvbWxvQGdtYWlsLmNvbT4KQ2M6IEFtaXQgS3VtYXIgPGFtaXQuYWtAc2Ftc3VuZy5jb20+CkNj OiBFcmljIERvbmcgPGVyaWMuZG9uZ0BpbnRlbC5jb20+CkNjOiBMaW1pbmcgR2FvIDxsaW1pbmcu Z2FvQGludGVsLmNvbT4KQ2M6IFN0YXIgWmVuZyA8c3Rhci56ZW5nQGludGVsLmNvbT4KQ29udHJp YnV0ZWQtdW5kZXI6IFRpYW5vQ29yZSBDb250cmlidXRpb24gQWdyZWVtZW50IDEuMApTaWduZWQt b2ZmLWJ5OiBMYXN6bG8gRXJzZWsgPGxlcnNla0ByZWRoYXQuY29tPgotLS0KIC4uLi9Vbml2ZXJz YWwvQ29uc29sZS9UZXJtaW5hbER4ZS9UZXJtaW5hbC5jICAgICAgIHwgMzIgKysrKysrKysrKysr KysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDMyIGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQg YS9NZGVNb2R1bGVQa2cvVW5pdmVyc2FsL0NvbnNvbGUvVGVybWluYWxEeGUvVGVybWluYWwuYyBi L01kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvQ29uc29sZS9UZXJtaW5hbER4ZS9UZXJtaW5hbC5jCmlu ZGV4IGM5MDg3OWIwZGQ4Ny4uMTZmZTZkZTIxZjFlIDEwMDY0NAotLS0gYS9NZGVNb2R1bGVQa2cv VW5pdmVyc2FsL0NvbnNvbGUvVGVybWluYWxEeGUvVGVybWluYWwuYworKysgYi9NZGVNb2R1bGVQ a2cvVW5pdmVyc2FsL0NvbnNvbGUvVGVybWluYWxEeGUvVGVybWluYWwuYwpAQCAtNTA4LDM2ICs1 MDgsNTAgQEAgVGVybWluYWxEcml2ZXJCaW5kaW5nU3RhcnQgKAogICBVSU5UTiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBFbnRyeUNvdW50Ow0KICAgVUlOVE4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgSW5kZXg7DQogICBFRklfU0lNUExFX1RFWFRfT1VUUFVUX1BST1RPQ09M ICAgICAqU2ltcGxlVGV4dE91dHB1dDsNCiAgIEVGSV9TSU1QTEVfVEVYVF9JTlBVVF9QUk9UT0NP TCAgICAgICpTaW1wbGVUZXh0SW5wdXQ7DQogICBFRklfVU5JQ09ERV9TVFJJTkdfVEFCTEUgICAg ICAgICAgICAqQ29udHJvbGxlck5hbWVUYWJsZTsNCiANCiAgIC8vDQogICAvLyBHZXQgdGhlIERl dmljZSBQYXRoIFByb3RvY29sIHRvIGJ1aWxkIHRoZSBkZXZpY2UgcGF0aCBvZiB0aGUgY2hpbGQg ZGV2aWNlDQogICAvLw0KICAgU3RhdHVzID0gZ0JTLT5PcGVuUHJvdG9jb2wgKA0KICAgICAgICAg ICAgICAgICAgIENvbnRyb2xsZXIsDQogICAgICAgICAgICAgICAgICAgJmdFZmlEZXZpY2VQYXRo UHJvdG9jb2xHdWlkLA0KICAgICAgICAgICAgICAgICAgIChWT0lEICoqKSAmUGFyZW50RGV2aWNl UGF0aCwNCiAgICAgICAgICAgICAgICAgICBUaGlzLT5Ecml2ZXJCaW5kaW5nSGFuZGxlLA0KICAg ICAgICAgICAgICAgICAgIENvbnRyb2xsZXIsDQogICAgICAgICAgICAgICAgICAgRUZJX09QRU5f UFJPVE9DT0xfQllfRFJJVkVSDQogICAgICAgICAgICAgICAgICAgKTsNCiAgIEFTU0VSVCAoKFN0 YXR1cyA9PSBFRklfU1VDQ0VTUykgfHwgKFN0YXR1cyA9PSBFRklfQUxSRUFEWV9TVEFSVEVEKSk7 DQorICBpZiAoU3RhdHVzID09IEVGSV9BTFJFQURZX1NUQVJURUQpIHsNCisgICAgLy8NCisgICAg Ly8gUmVwZWF0IHRoZSBhYm92ZSBPcGVuUHJvdG9jb2woKSBjYWxsIHdpdGggR0VUX1BST1RPQ09M Lg0KKyAgICAvLw0KKyAgICBTdGF0dXMgPSBnQlMtPk9wZW5Qcm90b2NvbCAoDQorICAgICAgICAg ICAgICAgICAgICBDb250cm9sbGVyLA0KKyAgICAgICAgICAgICAgICAgICAgJmdFZmlEZXZpY2VQ YXRoUHJvdG9jb2xHdWlkLA0KKyAgICAgICAgICAgICAgICAgICAgKFZPSUQgKiopICZQYXJlbnRE ZXZpY2VQYXRoLA0KKyAgICAgICAgICAgICAgICAgICAgVGhpcy0+RHJpdmVyQmluZGluZ0hhbmRs ZSwNCisgICAgICAgICAgICAgICAgICAgIENvbnRyb2xsZXIsDQorICAgICAgICAgICAgICAgICAg ICBFRklfT1BFTl9QUk9UT0NPTF9HRVRfUFJPVE9DT0wNCisgICAgICAgICAgICAgICAgICAgICk7 DQorICAgIEFTU0VSVF9FRklfRVJST1IgKFN0YXR1cyk7DQorICB9DQogDQogICAvLw0KICAgLy8g T3BlbiB0aGUgU2VyaWFsIEkvTyBQcm90b2NvbCBCWV9EUklWRVIuICBJdCBtaWdodCBhbHJlYWR5 IGJlIHN0YXJ0ZWQuDQogICAvLw0KICAgU3RhdHVzID0gZ0JTLT5PcGVuUHJvdG9jb2wgKA0KICAg ICAgICAgICAgICAgICAgIENvbnRyb2xsZXIsDQogICAgICAgICAgICAgICAgICAgJmdFZmlTZXJp YWxJb1Byb3RvY29sR3VpZCwNCiAgICAgICAgICAgICAgICAgICAoVk9JRCAqKikgJlNlcmlhbElv LA0KICAgICAgICAgICAgICAgICAgIFRoaXMtPkRyaXZlckJpbmRpbmdIYW5kbGUsDQogICAgICAg ICAgICAgICAgICAgQ29udHJvbGxlciwNCiAgICAgICAgICAgICAgICAgICBFRklfT1BFTl9QUk9U T0NPTF9CWV9EUklWRVINCiAgICAgICAgICAgICAgICAgICApOw0KICAgQVNTRVJUICgoU3RhdHVz ID09IEVGSV9TVUNDRVNTKSB8fCAoU3RhdHVzID09IEVGSV9BTFJFQURZX1NUQVJURUQpKTsNCiAN CiAgIGlmICghSXNIb3RQbHVnRGV2aWNlIChQYXJlbnREZXZpY2VQYXRoKSkgew0KICAgICAvLw0K ICAgICAvLyBpZiB0aGUgc2VyaWFsIGRldmljZSBpcyBhIGhvdCBwbHVnIGRldmljZSwgZG8gbm90 IHVwZGF0ZSB0aGUNCiAgICAgLy8gQ29uSW5EZXYsIENvbk91dERldiwgYW5kIFN0ZEVyckRldiB2 YXJpYWJsZXMuDQpAQCAtNTQ5LDM2ICs1NjMsNDkgQEAgVGVybWluYWxEcml2ZXJCaW5kaW5nU3Rh cnQgKAogDQogICAvLw0KICAgLy8gRG8gbm90IGNyZWF0ZSBhbnkgY2hpbGQgZm9yIEVORCByZW1h aW5pbmcgZGV2aWNlIHBhdGguDQogICAvLw0KICAgaWYgKChSZW1haW5pbmdEZXZpY2VQYXRoICE9 IE5VTEwpICYmIElzRGV2aWNlUGF0aEVuZCAoUmVtYWluaW5nRGV2aWNlUGF0aCkpIHsNCiAgICAg cmV0dXJuIEVGSV9TVUNDRVNTOw0KICAgfQ0KIA0KICAgaWYgKFN0YXR1cyA9PSBFRklfQUxSRUFE WV9TVEFSVEVEKSB7DQogDQogICAgIGlmIChSZW1haW5pbmdEZXZpY2VQYXRoID09IE5VTEwpIHsN CiAgICAgICAvLw0KICAgICAgIC8vIElmIFJlbWFpbmluZ0RldmljZVBhdGggaXMgTlVMTCBvciBp cyB0aGUgRW5kIG9mIERldmljZSBQYXRoIE5vZGUNCiAgICAgICAvLw0KICAgICAgIHJldHVybiBF RklfU1VDQ0VTUzsNCiAgICAgfQ0KIA0KICAgICAvLw0KKyAgICAvLyBSZXBlYXQgdGhlIGFib3Zl IE9wZW5Qcm90b2NvbCgpIGNhbGwgd2l0aCBHRVRfUFJPVE9DT0wuDQorICAgIC8vDQorICAgIFN0 YXR1cyA9IGdCUy0+T3BlblByb3RvY29sICgNCisgICAgICAgICAgICAgICAgICAgIENvbnRyb2xs ZXIsDQorICAgICAgICAgICAgICAgICAgICAmZ0VmaVNlcmlhbElvUHJvdG9jb2xHdWlkLA0KKyAg ICAgICAgICAgICAgICAgICAgKFZPSUQgKiopICZTZXJpYWxJbywNCisgICAgICAgICAgICAgICAg ICAgIFRoaXMtPkRyaXZlckJpbmRpbmdIYW5kbGUsDQorICAgICAgICAgICAgICAgICAgICBDb250 cm9sbGVyLA0KKyAgICAgICAgICAgICAgICAgICAgRUZJX09QRU5fUFJPVE9DT0xfR0VUX1BST1RP Q09MDQorICAgICAgICAgICAgICAgICAgICApOw0KKyAgICBBU1NFUlRfRUZJX0VSUk9SIChTdGF0 dXMpOw0KKw0KKyAgICAvLw0KICAgICAvLyBUaGlzIGRyaXZlciBjYW4gb25seSBwcm9kdWNlIG9u ZSBjaGlsZCBwZXIgc2VyaWFsIHBvcnQuDQogICAgIC8vIENoYW5nZSBpdHMgdGVybWluYWwgdHlw ZSBhcyByZW1haW5pbmcgZGV2aWNlIHBhdGggcmVxdWVzdHMuDQogICAgIC8vDQogICAgIFN0YXR1 cyA9IGdCUy0+T3BlblByb3RvY29sSW5mb3JtYXRpb24gKA0KICAgICAgICAgICAgICAgICAgICAg Q29udHJvbGxlciwNCiAgICAgICAgICAgICAgICAgICAgICZnRWZpU2VyaWFsSW9Qcm90b2NvbEd1 aWQsDQogICAgICAgICAgICAgICAgICAgICAmT3BlbkluZm9CdWZmZXIsDQogICAgICAgICAgICAg ICAgICAgICAmRW50cnlDb3VudA0KICAgICAgICAgICAgICAgICAgICAgKTsNCiAgICAgaWYgKCFF RklfRVJST1IgKFN0YXR1cykpIHsNCiAgICAgICBTdGF0dXMgPSBFRklfTk9UX0ZPVU5EOw0KICAg ICAgIGZvciAoSW5kZXggPSAwOyBJbmRleCA8IEVudHJ5Q291bnQ7IEluZGV4KyspIHsNCiAgICAg ICAgIGlmICgoT3BlbkluZm9CdWZmZXJbSW5kZXhdLkF0dHJpYnV0ZXMgJiBFRklfT1BFTl9QUk9U T0NPTF9CWV9DSElMRF9DT05UUk9MTEVSKSAhPSAwKSB7DQogICAgICAgICAgIFN0YXR1cyA9IGdC Uy0+T3BlblByb3RvY29sICgNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wZW5JbmZvQnVm ZmVyW0luZGV4XS5Db250cm9sbGVySGFuZGxlLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAg JmdFZmlTaW1wbGVUZXh0SW5Qcm90b2NvbEd1aWQsDQogICAgICAgICAgICAgICAgICAgICAgICAg ICAoVk9JRCAqKikgJlNpbXBsZVRleHRJbnB1dCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAg IFRoaXMtPkRyaXZlckJpbmRpbmdIYW5kbGUsDQpAQCAtODUwLDM2ICs4NzcsNDEgQEAgRnJlZVJl c291cmNlczoKICAgfQ0KIA0KICAgaWYgKFRlcm1pbmFsRGV2aWNlLT5UZXJtaW5hbENvbnNvbGVN b2RlRGF0YSAhPSBOVUxMKSB7DQogICAgIEZyZWVQb29sIChUZXJtaW5hbERldmljZS0+VGVybWlu YWxDb25zb2xlTW9kZURhdGEpOw0KICAgfQ0KIA0KICAgRnJlZVBvb2wgKFRlcm1pbmFsRGV2aWNl KTsNCiANCiBDbG9zZVByb3RvY29sczoNCiANCiAgIC8vDQogICAvLyBSZW1vdmUgUGFyZW50IERl dmljZSBQYXRoIGZyb20NCiAgIC8vIHRoZSBDb25zb2xlIERldmljZSBFbnZpcm9ubWVudCBWYXJp YWJsZXMNCiAgIC8vDQogICBUZXJtaW5hbFJlbW92ZUNvbnNvbGVEZXZWYXJpYWJsZSAoRUZJX0NP Tl9JTl9ERVZfVkFSSUFCTEVfTkFNRSwgUGFyZW50RGV2aWNlUGF0aCk7DQogICBUZXJtaW5hbFJl bW92ZUNvbnNvbGVEZXZWYXJpYWJsZSAoRUZJX0NPTl9PVVRfREVWX1ZBUklBQkxFX05BTUUsIFBh cmVudERldmljZVBhdGgpOw0KICAgVGVybWluYWxSZW1vdmVDb25zb2xlRGV2VmFyaWFibGUgKEVG SV9FUlJfT1VUX0RFVl9WQVJJQUJMRV9OQU1FLCBQYXJlbnREZXZpY2VQYXRoKTsNCiANCisgIC8v DQorICAvLyBDbG9zaW5nIHRoZSBwcm90b2NvbCBpbnRlcmZhY2VzIG9wZW5lZCB3aXRoIEJZX0RS SVZFUiBpcyByZXF1aXJlZC4gQ2xvc2luZw0KKyAgLy8gdGhlIHByb3RvY29sIGludGVyZmFjZXMg b3BlbmVkIHdpdGggR0VUX1BST1RPQ09MIGlzIG5vdCByZXF1aXJlZCBidXQNCisgIC8vIHBlcm1p dHRlZC4NCisgIC8vDQogICBTdGF0dXMgPSBnQlMtPkNsb3NlUHJvdG9jb2wgKA0KICAgICAgICAg ICAgICAgICAgIENvbnRyb2xsZXIsDQogICAgICAgICAgICAgICAgICAgJmdFZmlTZXJpYWxJb1By b3RvY29sR3VpZCwNCiAgICAgICAgICAgICAgICAgICBUaGlzLT5Ecml2ZXJCaW5kaW5nSGFuZGxl LA0KICAgICAgICAgICAgICAgICAgIENvbnRyb2xsZXINCiAgICAgICAgICAgICAgICAgICApOw0K ICAgQVNTRVJUX0VGSV9FUlJPUiAoU3RhdHVzKTsNCiANCiAgIFN0YXR1cyA9IGdCUy0+Q2xvc2VQ cm90b2NvbCAoDQogICAgICAgICAgICAgICAgICAgQ29udHJvbGxlciwNCiAgICAgICAgICAgICAg ICAgICAmZ0VmaURldmljZVBhdGhQcm90b2NvbEd1aWQsDQogICAgICAgICAgICAgICAgICAgVGhp cy0+RHJpdmVyQmluZGluZ0hhbmRsZSwNCiAgICAgICAgICAgICAgICAgICBDb250cm9sbGVyDQog ICAgICAgICAgICAgICAgICAgKTsNCiAgIEFTU0VSVF9FRklfRVJST1IgKFN0YXR1cyk7DQogICBy ZXR1cm4gU3RhdHVzOw0KIH0NCiANCi0tIAoyLjEzLjEuMy5nOGJlNWE3NTdmYTY3Cgo= --------------3C75114196446C4E254A305F--