From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.3 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id C8CA8C76188 for ; Mon, 22 Jul 2019 14:53:55 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 9AE112190F for ; Mon, 22 Jul 2019 14:53:55 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 9AE112190F Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=citrix.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hpZgz-0006M1-MZ; Mon, 22 Jul 2019 14:53:33 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hpZgy-0006Lw-Sx for xen-devel@lists.xenproject.org; Mon, 22 Jul 2019 14:53:32 +0000 X-Inumbo-ID: 76babbfe-ac90-11e9-80f6-3bd5a4b37707 Received: from esa1.hc3370-68.iphmx.com (unknown [216.71.145.142]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id 76babbfe-ac90-11e9-80f6-3bd5a4b37707; Mon, 22 Jul 2019 14:53:28 +0000 (UTC) Authentication-Results: esa1.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none; spf=None smtp.pra=anthony.perard@citrix.com; spf=Pass smtp.mailfrom=anthony.perard@citrix.com; spf=None smtp.helo=postmaster@mail.citrix.com Received-SPF: None (esa1.hc3370-68.iphmx.com: no sender authenticity information available from domain of anthony.perard@citrix.com) identity=pra; client-ip=162.221.158.21; receiver=esa1.hc3370-68.iphmx.com; envelope-from="anthony.perard@citrix.com"; x-sender="anthony.perard@citrix.com"; x-conformance=sidf_compatible Received-SPF: Pass (esa1.hc3370-68.iphmx.com: domain of anthony.perard@citrix.com designates 162.221.158.21 as permitted sender) identity=mailfrom; client-ip=162.221.158.21; receiver=esa1.hc3370-68.iphmx.com; envelope-from="anthony.perard@citrix.com"; x-sender="anthony.perard@citrix.com"; x-conformance=sidf_compatible; x-record-type="v=spf1"; x-record-text="v=spf1 ip4:209.167.231.154 ip4:178.63.86.133 ip4:195.66.111.40/30 ip4:85.115.9.32/28 ip4:199.102.83.4 ip4:192.28.146.160 ip4:192.28.146.107 ip4:216.52.6.88 ip4:216.52.6.188 ip4:162.221.158.21 ip4:162.221.156.83 ~all" Received-SPF: None (esa1.hc3370-68.iphmx.com: no sender authenticity information available from domain of postmaster@mail.citrix.com) identity=helo; client-ip=162.221.158.21; receiver=esa1.hc3370-68.iphmx.com; envelope-from="anthony.perard@citrix.com"; x-sender="postmaster@mail.citrix.com"; x-conformance=sidf_compatible IronPort-SDR: +lGxR5T4TcMLCWTQ0bB96rbn8rHwsTbjm/LDBypJUwh+wO4Agb57ESqe+RHx7nwuC84UPjpn/T dW1/JrRHJ/kWTTYfZrlmrIN35REg29jVY4DkEqD3jE3zam6cGCfYyQSCZyMfkPaz1hQHKaE4/E 9BE/y5p+Zo3tyuNB4lH9nnYho6oFLtROZbmhwlChNBp/JHqWzrJ+01fAxhBQs/TKWcZ/eSzrqV ymSJxkl3s6WK4n4g5vYxQBMC998uJaicBzrY6iOitg2LzUppi5SmuP5SGs/g4mDEgq7uimxL7+ Io4= X-SBRS: 2.7 X-MesageID: 3303477 X-Ironport-Server: esa1.hc3370-68.iphmx.com X-Remote-IP: 162.221.158.21 X-Policy: $RELAYED X-IronPort-AV: E=Sophos;i="5.64,295,1559534400"; d="scan'208";a="3303477" Date: Mon, 22 Jul 2019 15:53:19 +0100 From: Anthony PERARD To: Roger Pau =?iso-8859-1?Q?Monn=E9?= Message-ID: <20190722145319.GG1208@perard.uk.xensource.com> References: <20190704144233.27968-1-anthony.perard@citrix.com> <20190704144233.27968-25-anthony.perard@citrix.com> <20190715141521.aqmpchgzyleoergc@MacBook-Air-de-Roger.local> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20190715141521.aqmpchgzyleoergc@MacBook-Air-de-Roger.local> User-Agent: Mutt/1.12.1 (2019-06-15) Subject: Re: [Xen-devel] [PATCH v3 24/35] OvmfPkg/XenPlatformPei: Rework memory detection X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Ard Biesheuvel , Jordan Justen , devel@edk2.groups.io, Julien Grall , Andrew Cooper , xen-devel@lists.xenproject.org, Laszlo Ersek Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" T24gTW9uLCBKdWwgMTUsIDIwMTkgYXQgMDQ6MTU6MjFQTSArMDIwMCwgUm9nZXIgUGF1IE1vbm7D qSB3cm90ZToKPiBPbiBUaHUsIEp1bCAwNCwgMjAxOSBhdCAwMzo0MjoyMlBNICswMTAwLCBBbnRo b255IFBFUkFSRCB3cm90ZToKPiA+IFdoZW4gcnVubmluZyBhcyBhIFhlbiBQVkggZ3Vlc3QsIHRo ZXJlIGlzIG5vIENNT1MgdG8gcmVhZCB0aGUgbWVtb3J5Cj4gPiBzaXplIGZyb20uICBSZXdvcmsg R2V0U3lzdGVtTWVtb3J5U2l6ZShCZWxvd3xBYm92ZSk0Z2IoKSBzbyB0aGV5IGNhbgo+ID4gd29y a3Mgd2l0aG91dCBDTU9TIGJ5IHJlYWRpbmcgdGhlIGU4MjAgdGFibGUuCj4gPiAKPiA+IFJld29y ayBYZW5QdWJsaXNoUmFtUmVnaW9ucyBmb3IgUFZILCBoYW5kbGUgdGhlIFJlc2VydmUgdHlwZSBh bmQgZXhwbGFpbgo+ID4gYWJvdXQgdGhlIEFDUEkgdHlwZS4gTVRSUiBzZXR0aW5ncyBhcmVuJ3Qg bW9kaWZpZWQgYW55bW9yZSwgb24gSFZNLCBpdCdzCj4gPiBhbHJlYWR5IGRvbmUgYnkgaHZtbG9h ZGVyLCBvbiBQVkggaXQgaXMgc3VwcG9zZWQgdG8gaGF2ZSBzYW5lIGRlZmF1bHQuCj4gPiAKPiA+ IFJlZjogaHR0cHM6Ly9idWd6aWxsYS50aWFub2NvcmUub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjg5 Cj4gPiBTaWduZWQtb2ZmLWJ5OiBBbnRob255IFBFUkFSRCA8YW50aG9ueS5wZXJhcmRAY2l0cml4 LmNvbT4KPiA+IEFja2VkLWJ5OiBMYXN6bG8gRXJzZWsgPGxlcnNla0ByZWRoYXQuY29tPgo+ID4g LS0tCj4gPiAKPiA+IE5vdGVzOgo+ID4gICAgIENvbW1lbnQgZm9yIFhlbiBwZW9wbGU6Cj4gPiAg ICAgQWJvdXQgTVRSUiwgc2hvdWxkIHdlIHJlZG8gdGhlIHNldHRpbmcgaW4gT1ZNRj8gRXZlbiBp ZiBpbiBib3RoIGNhc2Ugb2YKPiA+ICAgICBQVkggYW5kIEhWTSwgc29tZXRoaW5nIHdvdWxkIGhh dmUgc2V0dXAgdGhlIGRlZmF1bHQgdHlwZSB0byB3cml0ZSBiYWNrCj4gPiAgICAgYW5kIGhhbmRs ZSBhIGZldyBvdGhlciByYW5nZXMgbGlrZSBQQ0kgaG9sZSwgaHZtbG9hZGVyIGZvciBIVk0gb3Ig YW5kCj4gPiAgICAgbGlieGMgSSB0aGluayBmb3IgUFZILgo+IAo+IFRoYXQncyBhIHRyaWNreSBx dWVzdGlvbi4gSWRlYWxseSB3ZSB3b3VsZCBsaWtlIHRoZSBmaXJtd2FyZSAoT1ZNRikgdG8KPiB0 YWtlIGNhcmUgb2YgdGhhdCwgYmVjYXVzZSBpdCBhbHJlYWR5IGhhcyBjb2RlIHRvIGRvIHNvLiBQ cm9ibGVtIGhlcmUKPiBpcyB0aGF0IFBWSCBjYW4gYWxzbyBiZSBib290ZWQgd2l0aG91dCBmaXJt d2FyZSwgaW4gd2hpY2ggY2FzZSBpdAo+IG5lZWRzIHRoZSBoeXBlcnZpc29yIHRvIGhhdmUgc2V0 dXAgc29tZSBzYW5lIGluaXRpYWwgTVRSUiBzdGF0ZS4KPiAKPiBUaGUgc3RhdGVtZW50IGluIHRo ZSBQVkggZG9jdW1lbnQgYWJvdXQgaW5pdGlhbCBNVFJSIHN0YXRlIGlzIHZhZ3VlCj4gZW5vdWdo IHRoYXQgYWxsb3dzIFhlbiB0byBib290IGludG8gdGhlIGd1ZXN0IHdpdGggYSBtaW5pbWFsIE1U UlIKPiBzdGF0ZSwgdGhhdCBjYW4gZm9yIGV4YW1wbGUgbm90IGNvbnRhaW4gVUMgcmVnaW9ucyBm b3IgdGhlIE1NSU8KPiByZWdpb25zIG9mIHBhc3NlZCB0aHJvdWdoIGRldmljZXMsIGhlbmNlIEkg dGhpbmsgT1ZNRiBzaG91bGQgYmUgaW4KPiBjaGFyZ2Ugb2YgY3JlYXRpbmcgYSBtb3JlIGNvbXBs ZXRlIE1UUlIgc3RhdGUgaWYgcG9zc2libGUuCj4gCj4gSXMgdGhpcyBzb21ldGhpbmcgT1ZNRiBh bHJlYWR5IGhhcyBsb2dpYyBmb3I/CgpXZWxsLCB0aGVyZSBhcmUgc29tZSBsb2dpYyBidXQgaXQn cyBmb3IgUUVNVSAoYW5kIHVzZXMgYW4gaW50ZXJmYWNlIHRoYXQKaXNuJ3QgYXZhaWxhYmxlIHdo ZW4gcnVubmluZyBvbiBYZW4sIGZ3Y2ZnKS4KClRoZSBsb2dpYyB0aGF0IHdhcyB0aGVyZSBmb3Ig WGVuIEhWTSB3YXMgdmVyeSBzaW1wbGUsIGEgc2luZ2xlIHNldApjYWNoZS13cml0ZS1iYWNrIGZv ciB0aGUgUkFNLCB0aGF0J3Mgd2h5IEkgcmVtb3ZlIGl0IChhbmQgYmVjYXVzZSBJJ20Kbm90IHN1 cmUgeWV0IEkgZmlndXJlZCBvdXQgaG93IHRvIHJ1biB0aGUgbXRyciBmdW5jdGlvbnMgY29ycmVj dGx5IGluCk9WTUYpLgoKSSBwcm9iYWJseSBnb2luZyB0byBoYXZlIHRvIHdyaXRlIGEgbmV3IGxv Z2ljIHdoaWNoIHdvdWxkIHJld3JpdGUgdGhlCk1UUlIgZnJvbSBzY3JhdGNoIGluc3RlYWQgb2Yg cmVseWluZyBvbiB0aGUgZXhpc3Rpbmcgc2V0dXAuCgo+IEFsc28gYWNjb3VudGluZyBmb3IgdGhl IE1NSU8gcmVnaW9ucyBvZiBkZXZpY2VzPwoKSSdsbCBoYXZlIHRvIGRpZyBkZWVwZXIgaW50byBP Vk1GIGNvZGVzLCBhbmQgUENJIGRldmljZSBoYW5kbGluZy4gT24KSFZNLCB3ZSBoYXZlIGEgZGlm ZmVyZW50IGxvZ2ljIHRoYW4gdGhlIG9uZSBmb3IgUUVNVSwgT1ZNRiBvbmx5IHNjYW4Kd2hhdCBo dm1sb2FkZXIgaGF2ZSBkb25lIGluc3RlYWQgb2YgcmUtc2V0dXAgdGhlIHBjaSBkZXZpY2VzLiBJ J20KcHJvYmFibHkgbWlzc2luZyBvdGhlciBzdHVmZi4KCj4gPiBkaWZmIC0tZ2l0IGEvT3ZtZlBr Zy9YZW5QbGF0Zm9ybVBlaS9NZW1EZXRlY3QuYyBiL092bWZQa2cvWGVuUGxhdGZvcm1QZWkvTWVt RGV0ZWN0LmMKPiA+IGluZGV4IGNiN2RkOTNhZDYuLjNlMzNlN2Y0MTQgMTAwNjQ0Cj4gPiAtLS0g YS9Pdm1mUGtnL1hlblBsYXRmb3JtUGVpL01lbURldGVjdC5jCj4gPiArKysgYi9Pdm1mUGtnL1hl blBsYXRmb3JtUGVpL01lbURldGVjdC5jCj4gPiBAQCAtOTYsNiArOTYsNDcgQEAgUTM1VHNlZ01i eXRlc0luaXRpYWxpemF0aW9uICgKPiA+ICAgIG1RMzVUc2VnTWJ5dGVzID0gRXh0ZW5kZWRUc2Vn TWJ5dGVzOwo+ID4gIH0KPiA+ICAKPiA+ICtTVEFUSUMKPiA+ICtVSU5UNjQKPiA+ICtHZXRIaWdo ZXN0U3lzdGVtTWVtb3J5QWRkcmVzcyAoCj4gPiArICBCT09MRUFOICAgICAgIEJlbG93NGdiCj4g PiArICApCj4gPiArewo+ID4gKyAgRUZJX0U4MjBfRU5UUlk2NCAgICAqRTgyME1hcDsKPiA+ICsg IFVJTlQzMiAgICAgICAgICAgICAgRTgyMEVudHJpZXNDb3VudDsKPiA+ICsgIEVGSV9FODIwX0VO VFJZNjQgICAgKkVudHJ5Owo+ID4gKyAgRUZJX1NUQVRVUyAgICAgICAgICBTdGF0dXM7Cj4gPiAr ICBVSU5UMzIgICAgICAgICAgICAgIExvb3A7Cj4gPiArICBVSU5UNjQgICAgICAgICAgICAgIEhp Z2hlc3RBZGRyZXNzOwo+ID4gKyAgVUlOVDY0ICAgICAgICAgICAgICBFbnRyeUVuZDsKPiA+ICsK PiA+ICsgIEhpZ2hlc3RBZGRyZXNzID0gMDsKPiA+ICsKPiA+ICsgIFN0YXR1cyA9IFhlbkdldEU4 MjBNYXAgKCZFODIwTWFwLCAmRTgyMEVudHJpZXNDb3VudCk7Cj4gCj4gWW91IGNvdWxkIG1heWJl IGluaXRpYWxpemUgdGhpcyBhcyBhIGdsb2JhbCB0byBhdm9pZCBoYXZpbmcgdG8gaXNzdWUKPiBh IGh5cGVyY2FsbCBlYWNoIHRpbWUgeW91IG5lZWQgdG8gZ2V0IHNvbWV0aGluZyBmcm9tIHRoZSBt ZW1vcnkgbWFwLgoKVGhhdCBmdW5jdGlvbiBkb2VzIHRoYXQsIGl0IG9ubHkgbWFrZSB0aGUgaHlw ZXJjYWxsIG9uY2UuIChUaGUgaHlwZXJjYWxsCmNhbiBvbmx5IGJlIG1hZGUgb25jZSBhbnl3YXks IHRoZSBzZWNvbmQgdGltZSBYZW4gZG9lc24ndCByZXR1cm4gdGhlCm1hcC4pCgo+ID4gKyAgQVNT RVJUX0VGSV9FUlJPUiAoU3RhdHVzKTsKPiA+ICsKPiA+ICsgIGZvciAoTG9vcCA9IDA7IExvb3Ag PCBFODIwRW50cmllc0NvdW50OyBMb29wKyspIHsKPiA+ICsgICAgRW50cnkgPSBFODIwTWFwICsg TG9vcDsKPiA+ICsgICAgRW50cnlFbmQgPSBFbnRyeS0+QmFzZUFkZHIgKyBFbnRyeS0+TGVuZ3Ro Owo+ID4gKwo+ID4gKyAgICBpZiAoRW50cnktPlR5cGUgPT0gRWZpQWNwaUFkZHJlc3NSYW5nZU1l bW9yeSAmJgo+ID4gKyAgICAgICAgRW50cnlFbmQgPiBIaWdoZXN0QWRkcmVzcykgewo+ID4gKwo+ ID4gKyAgICAgIGlmIChCZWxvdzRnYiAmJiAoRW50cnlFbmQgPD0gQkFTRV80R0IpKSB7Cj4gPiAr ICAgICAgICBIaWdoZXN0QWRkcmVzcyA9IEVudHJ5RW5kOwo+ID4gKyAgICAgIH0gZWxzZSBpZiAo IUJlbG93NGdiICYmIChFbnRyeUVuZCA+PSBCQVNFXzRHQikpIHsKPiA+ICsgICAgICAgIEhpZ2hl c3RBZGRyZXNzID0gRW50cnlFbmQ7Cj4gPiArICAgICAgfQo+ID4gKyAgICB9Cj4gPiArICB9Cj4g PiArCj4gPiArICAvLwo+ID4gKyAgLy8gUm91bmQgZG93biB0aGUgZW5kIGFkZHJlc3MuCj4gPiAr ICAvLwo+ID4gKyAgSGlnaGVzdEFkZHJlc3MgJj0gfihVSU5UNjQpRUZJX1BBR0VfTUFTSzsKPiA+ ICsKPiA+ICsgIHJldHVybiBIaWdoZXN0QWRkcmVzczsKPiAKPiBZb3UgY291bGQgZG8gdGhlIHJv dW5kaW5nIG9uIHRoZSByZXR1cm4gc3RhdGVtZW50LgoKWWVzLCBJIHRoaW5rIHRoYXQgY2FuIGJl IGRvbmUuCgo+ID4gK30KPiA+ICAKPiA+ICBVSU5UMzIKPiA+ICBHZXRTeXN0ZW1NZW1vcnlTaXpl QmVsb3c0Z2IgKAo+ID4gQEAgLTEwNSw2ICsxNDYsMTkgQEAgR2V0U3lzdGVtTWVtb3J5U2l6ZUJl bG93NGdiICgKPiA+ICAgIFVJTlQ4IENtb3MweDM0Owo+ID4gICAgVUlOVDggQ21vczB4MzU7Cj4g PiAgCj4gPiArICAvLwo+ID4gKyAgLy8gSW4gUFZIIGNhc2UsIHRoZXJlIGlzIG5vIENNT1MsIHdl IGhhdmUgdG8gY2FsY3VsYXRlIHRoZSBtZW1vcnkgc2l6ZQo+ID4gKyAgLy8gZnJvbSBwYXJzaW5n IHRoZSBFODIwCj4gPiArICAvLwo+ID4gKyAgaWYgKFhlblB2aERldGVjdGVkICgpKSB7Cj4gCj4g SUlSQyBvbiBIVk0geW91IGNhbiBhbHNvIGdldCB0aGUgbWVtb3J5IG1hcCBmcm9tIHRoZSBoeXBl cmNhbGwsIGluCj4gd2hpY2ggY2FzZSB5b3UgY291bGQgdXNlIHRoZSBzYW1lIGNvZGUgcGF0aCBm b3IgYm90aCBIVk0gYW5kIFBWSC4KCkkgdGhpbmsgdGhhdCB3b3VsZG4ndCB3b3JrIGJlY2F1c2Ug aW4gbXkgZXhwZXJpbWVudCwgdGhlIGh5cGVyY2FsbCB3b3VsZApvbmx5IHJldHVybiB0aGUgbWFw IHRoZSBmaXJzdCB0aW1lIChhdCBsZWFzdCBvbiBQVkgpLiBodm1sb2FkZXIgYWxyZWFkeQptYWtl IHRoZSBoeXBlcmNhbGwgc28gT1ZNRiBjYW4ndC4KCk9uIHRoZSBvdGhlciBoYW5kLCBYZW5HZXRF ODIwTWFwKCkgcmV0dXJuIGFuIEU4MjAgbWFwLCBpdCBkb2Vzbid0IG1hdHRlcgppZiBpdCdzIHRo ZSBvbmUgcGFzc2VkIGJ5IGh2bWxvYWRlciwgb3IgdGhlIG9uZSB3ZSd2ZSBnb3QgZGlyZWN0bHkg ZnJvbQpYZW4uIFNvIEkgZ3Vlc3Mgd2UgY291bGQgaWdub3JlIHdoYXQgaHZtbG9hZGVyIGhhdmUg d3JpdHRlbiBpbiB0aGUgQ01PUwphbmQgdXNlIHRoZSBpbmZvcm1hdGlvbiBpbiB0aGUgZTgyMCBk aXJlY3RseS4gQnV0IEkgdGhpbmsgSSBsZXQgdGhpcwpjaGFuZ2UgZm9yIGZ1dHVyZSBwYXRjaC4K Cj4gPiArICAgIFVJTlQ2NCAgSGlnaGVzdEFkZHJlc3M7Cj4gPiArCj4gPiArICAgIEhpZ2hlc3RB ZGRyZXNzID0gR2V0SGlnaGVzdFN5c3RlbU1lbW9yeUFkZHJlc3MgKFRSVUUpOwo+ID4gKyAgICBB U1NFUlQgKEhpZ2hlc3RBZGRyZXNzID4gMCAmJiBIaWdoZXN0QWRkcmVzcyA8PSBCQVNFXzRHQik7 Cj4gPiArCj4gPiArICAgIHJldHVybiBIaWdoZXN0QWRkcmVzczsKPiAKPiBUaGUgbmFtZSBvZiB0 aGUgZnVuY3Rpb24gaGVyZSBpcyBHZXRTeXN0ZW1NZW1vcnlTaXplQmVsb3c0Z2IsIGJ1dCB5b3UK PiBhcmUgcmV0dXJuaW5nIHRoZSBoaWdoZXN0IG1lbW9yeSBhZGRyZXNzIGluIHRoZSByYW5nZSwg aXMgdGhpcwo+IGV4cGVjdGVkPwo+IAo+IGllOiBoaWdoZXN0IGFkZHJlc3MgIT0gbWVtb3J5IHNp emUKPiAKPiBPbiBIVk0gdGhlcmUgYXJlIHF1aXRlIHNvbWUgaG9sZXMgaW4gdGhlIG1lbW9yeSBt YXAsIGFuZCBub3RoaW5nCj4gZ3VhcmFudGVlcyB0aGVyZSBhcmUgbm8gbWVtb3J5IHJlZ2lvbnMg YWZ0ZXIgdGhlIGhvbGVzIG9yIG5vbi1SQU0KPiByZWdpb25zLgoKSSB0aGluayB0aGF0J3Mgd2hh dCBpcyBleHBlY3RlZCBieSBjYWxsZXIgb2YgdGhlIGZ1bmN0aW9uLgoKPiA+ICsgIH0KPiA+ICsK PiA+ICAgIC8vCj4gPiAgICAvLyBDTU9TIDB4MzQvMHgzNSBzcGVjaWZpZXMgdGhlIHN5c3RlbSBt ZW1vcnkgYWJvdmUgMTYgTUIuCj4gPiAgICAvLyAqIENNT1MoMHgzNSkgaXMgdGhlIGhpZ2ggYnl0 ZQo+ID4gZGlmZiAtLWdpdCBhL092bWZQa2cvWGVuUGxhdGZvcm1QZWkvWGVuLmMgYi9Pdm1mUGtn L1hlblBsYXRmb3JtUGVpL1hlbi5jCj4gPiBpbmRleCBjYmZkODA1OGZjLi42MmEyYzNlZDkzIDEw MDY0NAo+ID4gLS0tIGEvT3ZtZlBrZy9YZW5QbGF0Zm9ybVBlaS9YZW4uYwo+ID4gKysrIGIvT3Zt ZlBrZy9YZW5QbGF0Zm9ybVBlaS9YZW4uYwo+ID4gQEAgLTI3OSw2ICsyNzksOCBAQCBYZW5QdWJs aXNoUmFtUmVnaW9ucyAoCj4gPiAgICBFRklfRTgyMF9FTlRSWTY0ICAqRTgyME1hcDsKPiA+ICAg IFVJTlQzMiAgICAgICAgICAgIEU4MjBFbnRyaWVzQ291bnQ7Cj4gPiAgICBFRklfU1RBVFVTICAg ICAgICBTdGF0dXM7Cj4gPiArICBFRklfRTgyMF9FTlRSWTY0ICpFbnRyeTsKPiA+ICsgIFVJTlRO IEluZGV4Owo+ID4gIAo+ID4gICAgREVCVUcgKChFRklfRF9JTkZPLCAiVXNpbmcgbWVtb3J5IG1h cCBwcm92aWRlZCBieSBYZW5cbiIpKTsKPiA+ICAKPiA+IEBAIC0yODcsMjYgKzI4OSw0NSBAQCBY ZW5QdWJsaXNoUmFtUmVnaW9ucyAoCj4gPiAgICAvLwo+ID4gICAgRTgyMEVudHJpZXNDb3VudCA9 IDA7Cj4gPiAgICBTdGF0dXMgPSBYZW5HZXRFODIwTWFwICgmRTgyME1hcCwgJkU4MjBFbnRyaWVz Q291bnQpOwo+ID4gLQo+ID4gICAgQVNTRVJUX0VGSV9FUlJPUiAoU3RhdHVzKTsKPiA+ICAKPiA+ IC0gIGlmIChFODIwRW50cmllc0NvdW50ID4gMCkgewo+ID4gLSAgICBFRklfRTgyMF9FTlRSWTY0 ICpFbnRyeTsKPiA+IC0gICAgVUlOVDMyIExvb3A7Cj4gPiArICBmb3IgKEluZGV4ID0gMDsgSW5k ZXggPCBFODIwRW50cmllc0NvdW50OyBJbmRleCsrKSB7Cj4gPiArICAgIFVJTlQ2NCBCYXNlOwo+ ID4gKyAgICBVSU5UNjQgRW5kOwo+ID4gIAo+ID4gLSAgICBmb3IgKExvb3AgPSAwOyBMb29wIDwg RTgyMEVudHJpZXNDb3VudDsgTG9vcCsrKSB7Cj4gPiAtICAgICAgRW50cnkgPSBFODIwTWFwICsg TG9vcDsKPiA+ICsgICAgRW50cnkgPSAmRTgyME1hcFtJbmRleF07Cj4gPiAgCj4gPiArCj4gPiAr ICAgIC8vCj4gPiArICAgIC8vIFJvdW5kIHVwIHRoZSBzdGFydCBhZGRyZXNzLCBhbmQgcm91bmQg ZG93biB0aGUgZW5kIGFkZHJlc3MuCj4gPiArICAgIC8vCj4gPiArICAgIEJhc2UgPSBBTElHTl9W QUxVRSAoRW50cnktPkJhc2VBZGRyLCAoVUlOVDY0KUVGSV9QQUdFX1NJWkUpOwo+ID4gKyAgICBF bmQgPSAoRW50cnktPkJhc2VBZGRyICsgRW50cnktPkxlbmd0aCkgJiB+KFVJTlQ2NClFRklfUEFH RV9NQVNLOwo+ID4gKwo+ID4gKyAgICBzd2l0Y2ggKEVudHJ5LT5UeXBlKSB7Cj4gPiArICAgIGNh c2UgRWZpQWNwaUFkZHJlc3NSYW5nZU1lbW9yeToKPiA+ICsgICAgICBBZGRNZW1vcnlSYW5nZUhv YiAoQmFzZSwgRW5kKTsKPiA+ICsgICAgICBicmVhazsKPiA+ICsgICAgY2FzZSBFZmlBY3BpQWRk cmVzc1JhbmdlQUNQSToKPiA+ICsgICAgICAvLwo+ID4gKyAgICAgIC8vIElnbm9yZSwgT1ZNRiBz aG91bGQgcmVhZCB0aGUgQUNQSSB0YWJsZXMgYW5kIHByb3ZpZGUgdGhlbSB0byBsaW51eAo+ID4g KyAgICAgIC8vIGZyb20gYSBkaWZmZXJlbnQgbG9jYXRpb24uCj4gCj4gV2lsbCBPVk1GIGFsc28g cGFyc2UgZHluYW1pYyB0YWJsZXMgdG8gY2hlY2sgZm9yIHJlZmVyZW5jZXMgdGhlcmU/CgpJIGhh dmVuJ3QgbG9va2VkIGF0IHdoYXQgT1ZNRiBkb2VzIHdpdGggdGhlIEFDUEkgdGFibGVzLCBidXQg TGludXggc2VlbXMKZmluZS4gSSd2ZSBjb21wYXJlZCB0aGUgYm9vdCBvdXRwdXQgb2YgbGludXgg cnVubmluZyBhcyBQVkggdnMgYm9vdGVkCnZpYSBPVk1GLiBCZXNpZGUgdGhlIGxvY2F0aW9uIG9m IHRoZSB0YWJsZSBiZWVuIGRpZmZlcmVudCwgdGhlIG51bWJlciBvZgp0YWJsZSB3aGVyZSB0aGUg c2FtZSwgSSBkb24ndCByZW1lbWJlciBvdGhlciBkaWZmZXJlbmNlLgoKPiA+ICsgICAgICAvLwo+ ID4gKyAgICAgIGJyZWFrOwo+ID4gKyAgICBjYXNlIEVmaUFjcGlBZGRyZXNzUmFuZ2VSZXNlcnZl ZDoKPiA+ICAgICAgICAvLwo+ID4gLSAgICAgIC8vIE9ubHkgY2FyZSBhYm91dCBSQU0KPiA+ICsg ICAgICAvLyBBdm9pZCByYW5nZXMgbWFya2VkIGFzIHJlc2VydmVkIGluIHRoZSBlODIwIHRhYmxl IHByb3ZpZGVkIGJ5Cj4gPiArICAgICAgLy8gaHZtbG9hZGVyIGFzIGl0IGNvbmZsaWN0cyB3aXRo IGFuIG90aGVyIGFwZXJ0dXJlLgo+IAo+IEkgdGhpbmsgeW91IHdhbnQgdGhlIGxhc3QgcGFydCBv ZiB0aGUgc2VudGVuY2UgdG8gYmU6ICcuLi4gYXMgaXQKPiBjb25mbGljdHMgd2l0aCBvdGhlciBh cGVydHVyZXMuJwo+IAo+IEkgdGhpbmsgaG93ZXZlciB0aGF0IHlvdSBzaG91bGQgbWFrZSBzdXJl IHJhbmdlcyBtYXJrZWQgYXMgcmVzZXJ2ZWQgaW4KPiB0aGUgb3JpZ2luYWwgbWVtb3J5IG1hcCBh bHNvIGVuZCB1cCBpbiB0aGUgZmluYWwgb25lLCBoZW5jZQo+IG92ZXJsYXBwaW5nIHJhbmdlcyBz aG91bGQgYmUgbWVyZ2VkLCBpbnN0ZWFkIG9mIGRpc2NhcmRlZC4KCkknbGwgbG9vayBpbnRvIHRo YXQuCgo+ID4gKyAgICAgIC8vIGVycm9yIG1lc3NhZ2U6IENwdUR4ZTogSW50ZXJzZWN0TWVtb3J5 RGVzY3JpcHRvcjoKPiA+ICsgICAgICAvLyAgICAgICAgZGVzYyBbRkMwMDAwMDAsIDEwMDAwMDAw MCkgdHlwZSAxIGNhcCA4NzAwMDAwMDAwMDI2MDAxCj4gPiArICAgICAgLy8gICAgICAgIGNvbmZs aWN0cyB3aXRoIGFwZXJ0dXJlIFtGRUUwMDAwMCwgRkVFMDEwMDApIGNhcCAxCj4gPiAgICAgICAg Ly8KPiA+IC0gICAgICBpZiAoRW50cnktPlR5cGUgIT0gRWZpQWNwaUFkZHJlc3NSYW5nZU1lbW9y eSkgewo+ID4gLSAgICAgICAgY29udGludWU7Cj4gPiArICAgICAgaWYgKCFYZW5Idm1sb2FkZXJE ZXRlY3RlZCAoKSkgewo+ID4gKyAgICAgICAgQWRkUmVzZXJ2ZWRNZW1vcnlCYXNlU2l6ZUhvYiAo QmFzZSwgRW5kIC0gQmFzZSwgRkFMU0UpOwo+IAo+IFRoaXMgc3BlY2lhbCBjYXNpbmcgZm9yIFBW SCBsb29rcyB3ZWlyZCwgaWRlYWxseSB3ZSB3b3VsZCBsaWtlIHRvIHVzZQo+IHRoZSBzYW1lIGNv ZGUgcGF0aCwgb3IgZWxzZSBpdCBzaG91bGQgYmUgZXhwbGljaXRseSBtZW50aW9uZWQgd2h5IFBW SAo+IGhhcyBkaXZlcmdpbmcgYmVoYXZpb3VyLgoKSSB0aGluayBodm1sb2FkZXIgaXMgdGhlIGlz c3VlIHJhdGhlciB0aGFuIFBWSC4gSGVyZSBpcyBwYXJ0IG9mIHRoZQoibWVtb3J5IG1hcCIgYXMg Zm91bmQgaW4gaHZtbG9hZGVyL2NvbmZpZy5oOgoKICAvKiBTcGVjaWFsIEJJT1MgbWFwcGluZ3Ms IGV0Yy4gYXJlIGFsbG9jYXRlZCBmcm9tIGhlcmUgdXB3YXJkcy4uLiAqLwogICNkZWZpbmUgUkVT RVJWRURfTUVNQkFTRSAgICAgICAgICAgICAgMHhGQzAwMDAwMAogIC8qIE5CLiBBQ1BJX0lORk9f UEhZU0lDQUxfQUREUkVTUyAqTVVTVCogbWF0Y2ggZGVmaW5pdGlvbiBpbiBhY3BpL2RzZHQuYXNs ISAqLwogICNkZWZpbmUgQUNQSV9JTkZPX1BIWVNJQ0FMX0FERFJFU1MgICAgMHhGQzAwMDAwMAog ICNkZWZpbmUgUkVTRVJWRURfTUVNT1JZX0RZTkFNSUNfU1RBUlQgMHhGQzAwMTAwMAogICNkZWZp bmUgUkVTRVJWRURfTUVNT1JZX0RZTkFNSUNfRU5EICAgMHhGRTAwMDAwMAoKYW5kIGh2bWxvYWRl ciBzaW1wbHkgY3JlYXRlcyBhIHNpbmdsZSBlODIwIHJlc2VydmVkIGVudHJ5LCBmcm9tClJFU0VS VkVEX01FTUJBU0UgdG8gdGhlIHRvcCBvZiA0R0IuIEl0J3MgcHJvYmFibHkgdG9vIG11Y2guCklm IGh2bWxvYWRlciBvbmx5IHJlc2VydmVkCkFDUElfSU5GT19QSFlTSUNBTF9BRERSRVNTLVJFU0VS VkVEX01FTU9SWV9EWU5BTUlDX0VORCwgSSBtaWdodCBub3QgaGF2ZQp0byBzcGVjaWFsIGNhc2Ug aHZtbG9hZGVyLiBBcyBmYXIgYXMgSSBrbm93IDB4ZmVlMDAwMDAgaXNuJ3QgYSBzcGVjaWFsCmJp b3MgbWFwcGluZywgYnV0IHNvbWV0aGluZyB0aGUgaGFyZHdhcmUgcHJvdmlkZXMuCgoKQW55d2F5 LCB0aGFua3MgZm9yIHRoZSBmZWVkYmFjaywgdGhlcmUncyBwcm9iYWJseSBxdWl0ZSBhIGJpdCB0 byBkbyB0bwpjbGVhbnVwIHRoZSBtZW1vcnkgc3R1ZmYuIEkgZG8gdGhpbmsgYWJvdXQgb25lIGRh eSBydW5uaW5nIE9WTUYgd2l0aG91dApydW5uaW5nIGh2bWxvYWRlciBmaXJzdCA6LSksIGJ1dCB0 aGVyZSdzIGEgYml0IG1vcmUgdG8gZG8uCgotLSAKQW50aG9ueSBQRVJBUkQKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxp c3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVj dC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=