From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=2a00:1450:4864:20::344; helo=mail-wm1-x344.google.com; envelope-from=marcandre.lureau@gmail.com; receiver=edk2-devel@lists.01.org Received: from mail-wm1-x344.google.com (mail-wm1-x344.google.com [IPv6:2a00:1450:4864:20::344]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 85AB3211616A2 for ; Tue, 2 Oct 2018 04:37:53 -0700 (PDT) Received: by mail-wm1-x344.google.com with SMTP id 206-v6so1885380wmb.5 for ; Tue, 02 Oct 2018 04:37:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=B7kT2yCoNR9UPINEAtpC5X5prL8EA9WL7YDGQJNTuhE=; b=AveQwzzrVU4W2m6/i40y8d1ww277m4gSrX0As9/N+4EUJKWv140MXNiOZSMnmBeKs5 AQkwrC05cXiteehmaZ0UTTfPtZa6BJxevla2vnCEtfVgmLi5VGV3upNRmW96eGUKDGTn WufcanpU371Cc/rrw88Rn8SXDgnYbp1sN3bnlmM8qWZpvePuJPkFIbm5VQq1p9vi1DC9 NHP0NeOWPxs4EIz6XqLkT4tVIVvMmGRt0W+AxgRw/rcM/ww7BAmVHLmmty0gMAYnfYZY QyFxKl522hwRlotA4cj7gwQjiOoZrsbeBa7ICBgeC+nF1oBtrhBhlnRVOVk8yr1oDiEF sqZA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=B7kT2yCoNR9UPINEAtpC5X5prL8EA9WL7YDGQJNTuhE=; b=pcE9WDhERLVAv/iF2jVzCgbWlJoftGCdSU9IlP6zPpbnnNhFKMru9Xx0mZI01kAJzL /hIpe1o4EFGVyFfiqcG3trqiVekE1PI6u+hKoGpUvD7JXmELFk2Xkev+j4JEYte7tgim z/sXN2n3LwjunWqVQscm0/ZCpiFBYX8XyGGdwusF3bmww4315V6LFiLCg47c1s9ygpa2 e7GopXDtJycux2G2WHBRivWFOWQpZRk3dWRAf9bXbKp+DDq90ZdztZUE/3EaU/yiMKdw ddiLrBdahNtg/4J0ztMi35LLECdqNqfWFsLxHvtv8XsaBjZJo4DimZkcjiohBRKi8iwJ nFRg== X-Gm-Message-State: ABuFfogVBgUhz3qMKy5ysQUktQkUcw4E9gfriRJTvEXJ9e1ckoFtkNAY yG/SZVU6A+dBN2Ij2H8PkZISPyyP8MKeOe3eGPI= X-Google-Smtp-Source: ACcGV60BNkeYYC5eeU0m4s5Gx6Xl/dm9bqJNb2Ro+wMMwmc6AMslw6y2XTOi8HlcacwQp3ZJphAtY/JLzKJ/36zUhvM= X-Received: by 2002:a1c:9f41:: with SMTP id i62-v6mr1670791wme.53.1538480271507; Tue, 02 Oct 2018 04:37:51 -0700 (PDT) MIME-Version: 1.0 References: <20181002083602.581-1-marcandre.lureau@redhat.com> In-Reply-To: From: =?UTF-8?B?TWFyYy1BbmRyw6kgTHVyZWF1?= Date: Tue, 2 Oct 2018 15:37:39 +0400 Message-ID: To: Laszlo Ersek Cc: michael.d.kinney@intel.com, jordan.l.justen@intel.com, edk2-devel@lists.01.org, Anthony Perard Subject: Re: [PATCH v2 1/1] OvmfPkg/PlatformPei: clear CPU caches X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 02 Oct 2018 11:37:54 -0000 X-Groupsio-MsgNum: 30365 Content-Type: multipart/mixed; boundary="00000000000013eb9405773d5a5d" --00000000000013eb9405773d5a5d Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi On Tue, Oct 2, 2018 at 2:55 PM Laszlo Ersek wrote: > > Hi Marc-Andr=C3=A9, > > On 10/02/18 10:36, marcandre.lureau@redhat.com wrote: > > From: Marc-Andr=C3=A9 Lureau > > > > This is for conformance with the TCG "Platform Reset Attack Mitigation > > Specification". Because clearing the CPU caches at boot doesn't impact > > performance significantly, do it unconditionally, for simplicity's > > sake. > > > > Flush the cache on all logical processors, thanks to > > EFI_PEI_MP_SERVICES_PPI and CacheMaintenanceLib. > > > > Cc: Anthony Perard > > Cc: Ard Biesheuvel > > Cc: Jordan Justen > > Cc: Julien Grall > > Cc: Kinney Michael D > > Cc: Laszlo Ersek > > Contributed-under: TianoCore Contribution Agreement 1.1 > > Signed-off-by: Marc-Andr=C3=A9 Lureau > > --- > > > > v2: > > - use CacheMaintenanceLib, instead of WBINVD usage > > - rename OnMpServicesAvailable->ClearCacheOnMpServicesAvailable > > - commit message & comments update > > > > OvmfPkg/PlatformPei/PlatformPei.inf | 2 + > > OvmfPkg/PlatformPei/Platform.h | 5 + > > OvmfPkg/PlatformPei/ClearCache.c | 113 ++++++++++++++++++++ > > OvmfPkg/PlatformPei/Platform.c | 1 + > > 4 files changed, 121 insertions(+) > > Please fix your git settings for your local edk2 clone. Your patch > contains context lines with LF (not CRLF) line endings, and that's not > correct for edk2. Shouldn't it be catched by: python BaseTools/Scripts/PatchCheck.py -1 ? > > I decoded your base64-encoded patch email manually, hence my statement > about the line endings. Here's a snippet from > "OvmfPkg/PlatformPei/PlatformPei.inf": > > 00000d90 64 69 66 66 20 2d 2d 67 69 74 20 61 2f 4f 76 6d |diff --git a= /Ovm| > 00000da0 66 50 6b 67 2f 50 6c 61 74 66 6f 72 6d 50 65 69 |fPkg/Platfor= mPei| > 00000db0 2f 50 6c 61 74 66 6f 72 6d 50 65 69 2e 69 6e 66 |/PlatformPei= .inf| > 00000dc0 20 62 2f 4f 76 6d 66 50 6b 67 2f 50 6c 61 74 66 | b/OvmfPkg/P= latf| > 00000dd0 6f 72 6d 50 65 69 2f 50 6c 61 74 66 6f 72 6d 50 |ormPei/Platf= ormP| > 00000de0 65 69 2e 69 6e 66 0a 69 6e 64 65 78 20 39 63 35 |ei.inf.index= 9c5| > 00000df0 61 64 39 39 36 31 63 34 61 2e 2e 35 63 38 64 64 |ad9961c4a..5= c8dd| > 00000e00 30 66 65 36 64 37 32 20 31 30 30 36 34 34 0a 2d |0fe6d72 1006= 44.-| > 00000e10 2d 2d 20 61 2f 4f 76 6d 66 50 6b 67 2f 50 6c 61 |-- a/OvmfPkg= /Pla| > 00000e20 74 66 6f 72 6d 50 65 69 2f 50 6c 61 74 66 6f 72 |tformPei/Pla= tfor| > 00000e30 6d 50 65 69 2e 69 6e 66 0a 2b 2b 2b 20 62 2f 4f |mPei.inf.+++= b/O| > 00000e40 76 6d 66 50 6b 67 2f 50 6c 61 74 66 6f 72 6d 50 |vmfPkg/Platf= ormP| > 00000e50 65 69 2f 50 6c 61 74 66 6f 72 6d 50 65 69 2e 69 |ei/PlatformP= ei.i| > 00000e60 6e 66 0a 40 40 20 2d 33 30 2c 36 20 2b 33 30 2c |nf.@@ -30,6 = +30,| > 00000e70 37 20 40 40 0a 20 0a 20 5b 53 6f 75 72 63 65 73 |7 @@. . [Sou= rces| > 00000e80 5d 0a 20 20 20 41 6d 64 53 65 76 2e 63 0a 2b 20 |]. AmdSev.= c.+ | > 00000e90 20 43 6c 65 61 72 43 61 63 68 65 2e 63 0a 20 20 | ClearCache.= c. | > 00000ea0 20 43 6d 6f 73 2e 63 0a 20 20 20 43 6d 6f 73 2e | Cmos.c. C= mos.| > 00000eb0 68 0a 20 20 20 46 65 61 74 75 72 65 43 6f 6e 74 |h. Feature= Cont| > 00000ec0 72 6f 6c 2e 63 0a 40 40 20 2d 35 34 2c 36 20 2b |rol.c.@@ -54= ,6 +| > 00000ed0 35 35 2c 37 20 40 40 0a 20 0a 20 5b 4c 69 62 72 |55,7 @@. . [= Libr| > 00000ee0 61 72 79 43 6c 61 73 73 65 73 5d 0a 20 20 20 42 |aryClasses].= B| > 00000ef0 61 73 65 4c 69 62 0a 2b 20 20 43 61 63 68 65 4d |aseLib.+ Ca= cheM| > 00000f00 61 69 6e 74 65 6e 61 6e 63 65 4c 69 62 0a 20 20 |aintenanceLi= b. | > > Due to this issue, git-am fails to apply the patch. > > I mentioned this earlier (including a request to push your patches being > submitted to a personal repo/branch as well): > > http://mid.mail-archive.com/f5c15a1e-25c2-c2e4-e6db-374107e3b488@redhat= .com > > The wiki article at > > https://github.com/tianocore/tianocore.github.io/wiki/Laszlo's-unkempt-= git-guide-for-edk2-contributors-and-maintainers > > explains the git settings in order for git not to hide the CRLFs in the > working tree. In particular, the git concept for (a) representing the > source code internally with LFs, and (b) converting to/from CRLF on > checkout/commit, is *not* to be used. > > Is this edk2 peculiarity broken, considering git standards and other > open source repositories? It sure is. > > Can we change it? No, we can't. Hmm, this is weird, the original patch has crlf (see attach file). send-email or the mail server somehow stripped it? I use your recommend git settings, I don't know what I am missing here. > > Thanks, > Laszlo > _______________________________________________ > edk2-devel mailing list > edk2-devel@lists.01.org > https://lists.01.org/mailman/listinfo/edk2-devel --=20 Marc-Andr=C3=A9 Lureau --00000000000013eb9405773d5a5d Content-Type: text/x-patch; charset="UTF-8"; name="v2-0001-OvmfPkg-PlatformPei-clear-CPU-caches.patch" Content-Disposition: attachment; filename="v2-0001-OvmfPkg-PlatformPei-clear-CPU-caches.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_jmrnf7dz0 RnJvbSBlYzcyY2E5Nzc0Y2VmOWY4OWZiZTcyMWZjNzdkNzUwMTA3YjMzMmMyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQ0KRnJvbTogPT9VVEYtOD9xP01hcmMtQW5kcj1DMz1BOT0yMEx1cmVhdT89 IDxtYXJjYW5kcmUubHVyZWF1QHJlZGhhdC5jb20+DQpEYXRlOiBNb24sIDEgT2N0IDIwMTggMTU6 MjY6NDAgKzA0MDANClN1YmplY3Q6IFtQQVRDSCB2MiAxLzFdIE92bWZQa2cvUGxhdGZvcm1QZWk6 IGNsZWFyIENQVSBjYWNoZXMNCk1JTUUtVmVyc2lvbjogMS4wDQpDb250ZW50LVR5cGU6IHRleHQv cGxhaW47IGNoYXJzZXQ9VVRGLTgNCkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQNCg0K VGhpcyBpcyBmb3IgY29uZm9ybWFuY2Ugd2l0aCB0aGUgVENHICJQbGF0Zm9ybSBSZXNldCBBdHRh Y2sgTWl0aWdhdGlvbg0KU3BlY2lmaWNhdGlvbiIuIEJlY2F1c2UgY2xlYXJpbmcgdGhlIENQVSBj YWNoZXMgYXQgYm9vdCBkb2Vzbid0IGltcGFjdA0KcGVyZm9ybWFuY2Ugc2lnbmlmaWNhbnRseSwg ZG8gaXQgdW5jb25kaXRpb25hbGx5LCBmb3Igc2ltcGxpY2l0eSdzDQpzYWtlLg0KDQpGbHVzaCB0 aGUgY2FjaGUgb24gYWxsIGxvZ2ljYWwgcHJvY2Vzc29ycywgdGhhbmtzIHRvDQpFRklfUEVJX01Q X1NFUlZJQ0VTX1BQSSBhbmQgQ2FjaGVNYWludGVuYW5jZUxpYi4NCg0KQ2M6IEFudGhvbnkgUGVy YXJkIDxhbnRob255LnBlcmFyZEBjaXRyaXguY29tPg0KQ2M6IEFyZCBCaWVzaGV1dmVsIDxhcmQu Ymllc2hldXZlbEBsaW5hcm8ub3JnPg0KQ2M6IEpvcmRhbiBKdXN0ZW4gPGpvcmRhbi5sLmp1c3Rl bkBpbnRlbC5jb20+DQpDYzogSnVsaWVuIEdyYWxsIDxqdWxpZW4uZ3JhbGxAbGluYXJvLm9yZz4N CkNjOiBLaW5uZXkgTWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4NCkNjOiBM YXN6bG8gRXJzZWsgPGxlcnNla0ByZWRoYXQuY29tPg0KQ29udHJpYnV0ZWQtdW5kZXI6IFRpYW5v Q29yZSBDb250cmlidXRpb24gQWdyZWVtZW50IDEuMQ0KU2lnbmVkLW9mZi1ieTogTWFyYy1BbmRy w6kgTHVyZWF1IDxtYXJjYW5kcmUubHVyZWF1QHJlZGhhdC5jb20+DQotLS0NCg0KdjI6DQogIC0g dXNlIENhY2hlTWFpbnRlbmFuY2VMaWIsIGluc3RlYWQgb2YgV0JJTlZEIHVzYWdlDQogIC0gcmVu YW1lIE9uTXBTZXJ2aWNlc0F2YWlsYWJsZS0+Q2xlYXJDYWNoZU9uTXBTZXJ2aWNlc0F2YWlsYWJs ZQ0KICAtIGNvbW1pdCBtZXNzYWdlICYgY29tbWVudHMgdXBkYXRlDQoNCiBPdm1mUGtnL1BsYXRm b3JtUGVpL1BsYXRmb3JtUGVpLmluZiB8ICAgMiArDQogT3ZtZlBrZy9QbGF0Zm9ybVBlaS9QbGF0 Zm9ybS5oICAgICAgfCAgIDUgKw0KIE92bWZQa2cvUGxhdGZvcm1QZWkvQ2xlYXJDYWNoZS5jICAg IHwgMTEzICsrKysrKysrKysrKysrKysrKysrDQogT3ZtZlBrZy9QbGF0Zm9ybVBlaS9QbGF0Zm9y bS5jICAgICAgfCAgIDEgKw0KIDQgZmlsZXMgY2hhbmdlZCwgMTIxIGluc2VydGlvbnMoKykNCg0K ZGlmZiAtLWdpdCBhL092bWZQa2cvUGxhdGZvcm1QZWkvUGxhdGZvcm1QZWkuaW5mIGIvT3ZtZlBr Zy9QbGF0Zm9ybVBlaS9QbGF0Zm9ybVBlaS5pbmYNCmluZGV4IDljNWFkOTk2MWM0YS4uNWM4ZGQw ZmU2ZDcyIDEwMDY0NA0KLS0tIGEvT3ZtZlBrZy9QbGF0Zm9ybVBlaS9QbGF0Zm9ybVBlaS5pbmYN CisrKyBiL092bWZQa2cvUGxhdGZvcm1QZWkvUGxhdGZvcm1QZWkuaW5mDQpAQCAtMzAsNiArMzAs NyBAQA0KIA0NCiBbU291cmNlc10NDQogICBBbWRTZXYuYw0NCisgIENsZWFyQ2FjaGUuYw0NCiAg IENtb3MuYw0NCiAgIENtb3MuaA0NCiAgIEZlYXR1cmVDb250cm9sLmMNDQpAQCAtNTQsNiArNTUs NyBAQA0KIA0NCiBbTGlicmFyeUNsYXNzZXNdDQ0KICAgQmFzZUxpYg0NCisgIENhY2hlTWFpbnRl bmFuY2VMaWINDQogICBEZWJ1Z0xpYg0NCiAgIEhvYkxpYg0NCiAgIElvTGliDQ0KZGlmZiAtLWdp dCBhL092bWZQa2cvUGxhdGZvcm1QZWkvUGxhdGZvcm0uaCBiL092bWZQa2cvUGxhdGZvcm1QZWkv UGxhdGZvcm0uaA0KaW5kZXggZjk0MmU2MWJiNGY5Li5iMTJhNWMxZjVmNzggMTAwNjQ0DQotLS0g YS9Pdm1mUGtnL1BsYXRmb3JtUGVpL1BsYXRmb3JtLmgNCisrKyBiL092bWZQa2cvUGxhdGZvcm1Q ZWkvUGxhdGZvcm0uaA0KQEAgLTgzLDYgKzgzLDExIEBAIEluc3RhbGxGZWF0dXJlQ29udHJvbENh bGxiYWNrICgNCiAgIFZPSUQNDQogICApOw0NCiANDQorVk9JRA0NCitJbnN0YWxsQ2xlYXJDYWNo ZUNhbGxiYWNrICgNDQorICBWT0lEDQ0KKyAgKTsNDQorDQ0KIEVGSV9TVEFUVVMNDQogSW5pdGlh bGl6ZVhlbiAoDQ0KICAgVk9JRA0NCmRpZmYgLS1naXQgYS9Pdm1mUGtnL1BsYXRmb3JtUGVpL0Ns ZWFyQ2FjaGUuYyBiL092bWZQa2cvUGxhdGZvcm1QZWkvQ2xlYXJDYWNoZS5jDQpuZXcgZmlsZSBt b2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMDAwLi5kMzMzYjdkY2RkODgNCi0tLSAvZGV2L251 bGwNCisrKyBiL092bWZQa2cvUGxhdGZvcm1QZWkvQ2xlYXJDYWNoZS5jDQpAQCAtMCwwICsxLDEx MyBAQA0KKy8qKkBmaWxlDQ0KKyAgSW5zdGFsbCBhIGNhbGxiYWNrIHRvIGNsZWFyIGNhY2hlIG9u IGFsbCBwcm9jZXNzb3JzLg0NCisNDQorICBDb3B5cmlnaHQgKEMpIDIwMTgsIFJlZCBIYXQsIElu Yy4NDQorDQ0KKyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBh cmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlDQ0KKyAgdW5kZXIgdGhlIHRlcm1zIGFuZCBj b25kaXRpb25zIG9mIHRoZSBCU0QgTGljZW5zZSB3aGljaCBhY2NvbXBhbmllcyB0aGlzDQ0KKyAg ZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUgZm91bmQg YXQNDQorICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQ0K Kw0NCisgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBP TiBBTiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUDQ0KKyAgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRB VElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNTIE9SIElNUExJRUQuDQ0KKyoqLw0NCisN DQorI2luY2x1ZGUgPExpYnJhcnkvRGVidWdMaWIuaD4NDQorI2luY2x1ZGUgPExpYnJhcnkvUGVp U2VydmljZXNMaWIuaD4NDQorI2luY2x1ZGUgPExpYnJhcnkvQ2FjaGVNYWludGVuYW5jZUxpYi5o Pg0NCisjaW5jbHVkZSA8UHBpL01wU2VydmljZXMuaD4NDQorDQ0KKyNpbmNsdWRlICJQbGF0Zm9y bS5oIg0NCisNDQorLyoqDQ0KKyAgSW52YWxpZGF0ZSBkYXRhICYgaW5zdHJ1Y3Rpb24gY2FjaGVz Lg0NCisgIEFsbCBBUHMgZXhlY3V0ZSB0aGlzIGZ1bmN0aW9uIGluIHBhcmFsbGVsLiBUaGUgQlNQ IGV4ZWN1dGVzIHRoZSBmdW5jdGlvbg0NCisgIHNlcGFyYXRlbHkuDQ0KKw0NCisgIEBwYXJhbVtp bixvdXRdIFdvcmtTcGFjZSAgUG9pbnRlciB0byB0aGUgaW5wdXQvb3V0cHV0IGFyZ3VtZW50IHdv cmtzcGFjZQ0NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmVkIGJ5IGFsbCBwcm9j ZXNzb3JzLg0NCisqKi8NDQorU1RBVElDDQ0KK1ZPSUQNDQorRUZJQVBJDQ0KK0NsZWFyQ2FjaGUg KA0NCisgIElOIE9VVCBWT0lEICpXb3JrU3BhY2UNDQorICApDQ0KK3sNDQorICBXcml0ZUJhY2tJ bnZhbGlkYXRlRGF0YUNhY2hlICgpOw0NCisgIEludmFsaWRhdGVJbnN0cnVjdGlvbkNhY2hlICgp Ow0NCit9DQ0KKw0NCisvKioNDQorICBOb3RpZmljYXRpb24gZnVuY3Rpb24gY2FsbGVkIHdoZW4g RUZJX1BFSV9NUF9TRVJWSUNFU19QUEkgYmVjb21lcyBhdmFpbGFibGUuDQ0KKw0NCisgIEBwYXJh bVtpbl0gUGVpU2VydmljZXMgICAgICBJbmRpcmVjdCByZWZlcmVuY2UgdG8gdGhlIFBFSSBTZXJ2 aWNlcyBUYWJsZS4NDQorICBAcGFyYW1baW5dIE5vdGlmeURlc2NyaXB0b3IgQWRkcmVzcyBvZiB0 aGUgbm90aWZpY2F0aW9uIGRlc2NyaXB0b3IgZGF0YQ0NCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzdHJ1Y3R1cmUuDQ0KKyAgQHBhcmFtW2luXSBQcGkgICAgICAgICAgICAgIEFkZHJl c3Mgb2YgdGhlIFBQSSB0aGF0IHdhcyBpbnN0YWxsZWQuDQ0KKw0NCisgIEByZXR1cm4gIFN0YXR1 cyBvZiB0aGUgbm90aWZpY2F0aW9uLiBUaGUgc3RhdHVzIGNvZGUgcmV0dXJuZWQgZnJvbSB0aGlz DQ0KKyAgICAgICAgICAgZnVuY3Rpb24gaXMgaWdub3JlZC4NDQorKiovDQ0KK1NUQVRJQw0NCitF RklfU1RBVFVTDQ0KK0VGSUFQSQ0NCitDbGVhckNhY2hlT25NcFNlcnZpY2VzQXZhaWxhYmxlICgN DQorICBJTiBFRklfUEVJX1NFUlZJQ0VTICAgICAgICAgICAqKlBlaVNlcnZpY2VzLA0NCisgIElO IEVGSV9QRUlfTk9USUZZX0RFU0NSSVBUT1IgICpOb3RpZnlEZXNjcmlwdG9yLA0NCisgIElOIFZP SUQgICAgICAgICAgICAgICAgICAgICAgICpQcGkNDQorICApDQ0KK3sNDQorICBFRklfUEVJX01Q X1NFUlZJQ0VTX1BQSSAqTXBTZXJ2aWNlczsNDQorICBFRklfU1RBVFVTICAgICAgICAgICAgICBT dGF0dXM7DQ0KKw0NCisgIERFQlVHICgoREVCVUdfSU5GTywgIiVhOiAlYVxuIiwgZ0VmaUNhbGxl ckJhc2VOYW1lLCBfX0ZVTkNUSU9OX18pKTsNDQorDQ0KKyAgLy8NDQorICAvLyBDbGVhciBjYWNo ZSBvbiBhbGwgdGhlIEFQcyBpbiBwYXJhbGxlbC4NDQorICAvLw0NCisgIE1wU2VydmljZXMgPSBQ cGk7DQ0KKyAgU3RhdHVzID0gTXBTZXJ2aWNlcy0+U3RhcnR1cEFsbEFQcyAoDQ0KKyAgICAgICAg ICAgICAgICAgICAgICAgICAoQ09OU1QgRUZJX1BFSV9TRVJWSUNFUyAqKilQZWlTZXJ2aWNlcywN DQorICAgICAgICAgICAgICAgICAgICAgICAgIE1wU2VydmljZXMsDQ0KKyAgICAgICAgICAgICAg ICAgICAgICAgICBDbGVhckNhY2hlLCAgICAgICAgICAvLyBQcm9jZWR1cmUNDQorICAgICAgICAg ICAgICAgICAgICAgICAgIEZBTFNFLCAgICAgICAgICAgICAgIC8vIFNpbmdsZVRocmVhZA0NCisg ICAgICAgICAgICAgICAgICAgICAgICAgMCwgICAgICAgICAgICAgICAgICAgLy8gVGltZW91dElu TWljcm9TZWNvbmRzOiBpbmYuDQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMICAgICAg ICAgICAgICAgICAvLyBQcm9jZWR1cmVBcmd1bWVudA0NCisgICAgICAgICAgICAgICAgICAgICAg ICAgKTsNDQorICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpICYmIFN0YXR1cyAhPSBFRklfTk9UX1NU QVJURUQpIHsNDQorICAgIERFQlVHICgoREVCVUdfRVJST1IsICIlYTogU3RhcnR1cEFsbEFwcygp OiAlclxuIiwgX19GVU5DVElPTl9fLCBTdGF0dXMpKTsNDQorICAgIHJldHVybiBTdGF0dXM7DQ0K KyAgfQ0NCisNDQorICAvLw0NCisgIC8vIE5vdyBjbGVhciBjYWNoZSBvbiB0aGUgQlNQIHRvby4N DQorICAvLw0NCisgIENsZWFyQ2FjaGUgKE5VTEwpOw0NCisgIHJldHVybiBFRklfU1VDQ0VTUzsN DQorfQ0NCisNDQorLy8NDQorLy8gTm90aWZpY2F0aW9uIG9iamVjdCBmb3IgcmVnaXN0ZXJpbmcg dGhlIGNhbGxiYWNrLCBmb3Igd2hlbg0NCisvLyBFRklfUEVJX01QX1NFUlZJQ0VTX1BQSSBiZWNv bWVzIGF2YWlsYWJsZS4NDQorLy8NDQorU1RBVElDIENPTlNUIEVGSV9QRUlfTk9USUZZX0RFU0NS SVBUT1IgbU1wU2VydmljZXNOb3RpZnkgPSB7DQ0KKyAgRUZJX1BFSV9QUElfREVTQ1JJUFRPUl9O T1RJRllfQ0FMTEJBQ0sgfCAvLyBGbGFncw0NCisgIEVGSV9QRUlfUFBJX0RFU0NSSVBUT1JfVEVS TUlOQVRFX0xJU1QsDQ0KKyAgJmdFZmlQZWlNcFNlcnZpY2VzUHBpR3VpZCwgICAgICAgICAgICAg ICAvLyBHdWlkDQ0KKyAgQ2xlYXJDYWNoZU9uTXBTZXJ2aWNlc0F2YWlsYWJsZSAgICAgICAgICAv LyBOb3RpZnkNDQorfTsNDQorDQ0KK1ZPSUQNDQorSW5zdGFsbENsZWFyQ2FjaGVDYWxsYmFjayAo DQ0KKyAgVk9JRA0NCisgICkNDQorew0NCisgIEVGSV9TVEFUVVMgICAgICAgICAgIFN0YXR1czsN DQorDQ0KKyAgU3RhdHVzID0gUGVpU2VydmljZXNOb3RpZnlQcGkgKCZtTXBTZXJ2aWNlc05vdGlm eSk7DQ0KKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0NCisgICAgREVCVUcgKChERUJVR19F UlJPUiwgIiVhOiBmYWlsZWQgdG8gc2V0IHVwIE1QIFNlcnZpY2VzIGNhbGxiYWNrOiAlclxuIiwN DQorICAgICAgX19GVU5DVElPTl9fLCBTdGF0dXMpKTsNDQorICB9DQ0KK30NDQpkaWZmIC0tZ2l0 IGEvT3ZtZlBrZy9QbGF0Zm9ybVBlaS9QbGF0Zm9ybS5jIGIvT3ZtZlBrZy9QbGF0Zm9ybVBlaS9Q bGF0Zm9ybS5jDQppbmRleCA1YTc4NjY4MTI2YjQuLjIyMTM5YTY0Y2JmNCAxMDA2NDQNCi0tLSBh L092bWZQa2cvUGxhdGZvcm1QZWkvUGxhdGZvcm0uYw0KKysrIGIvT3ZtZlBrZy9QbGF0Zm9ybVBl aS9QbGF0Zm9ybS5jDQpAQCAtNjcyLDYgKzY3Miw3IEBAIEluaXRpYWxpemVQbGF0Zm9ybSAoDQog ICAgIE5vZXhlY0R4ZUluaXRpYWxpemF0aW9uICgpOw0NCiAgIH0NDQogDQ0KKyAgSW5zdGFsbENs ZWFyQ2FjaGVDYWxsYmFjayAoKTsNDQogICBBbWRTZXZJbml0aWFsaXplICgpOw0NCiAgIE1pc2NJ bml0aWFsaXphdGlvbiAoKTsNDQogICBJbnN0YWxsRmVhdHVyZUNvbnRyb2xDYWxsYmFjayAoKTsN DQotLSANCjIuMTkuMC4yNzEuZ2ZlODMyMWVjMDUNCg0K --00000000000013eb9405773d5a5d--