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=-9.6 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT 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 B6250C32750 for ; Tue, 13 Aug 2019 11:59:01 +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 7E66320679 for ; Tue, 13 Aug 2019 11:59:01 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=citrix.com header.i=@citrix.com header.b="L8VTlm6z" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 7E66320679 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 1hxVRv-00022K-NC; Tue, 13 Aug 2019 11:58:47 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hxVRu-00020O-DJ for xen-devel@lists.xenproject.org; Tue, 13 Aug 2019 11:58:46 +0000 X-Inumbo-ID: b36b873a-bdc1-11e9-a88d-1f9cc3d11dae Received: from esa6.hc3370-68.iphmx.com (unknown [216.71.155.175]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id b36b873a-bdc1-11e9-a88d-1f9cc3d11dae; Tue, 13 Aug 2019 11:58:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1565697525; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=LxIWAL2otNxzMxkwpzbh1CtLvNL30mSsL6IS4d0CuVk=; b=L8VTlm6zCHNnnoZvs4erBKoLmSjFJqN0NORkJM6+jd5ISwYBN9Ypll81 I0WwoUACVXSaccmAND3o+cYeQ4Sm0VWChfrcn8BjAhIl5TclQ4ixTFcll HA6hgQfK3cg1Q+pZVw9KuRHRi+jOSetc9Oi0NdDMbds3xPSGbRlO/uFd6 I=; Authentication-Results: esa6.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 (esa6.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=esa6.hc3370-68.iphmx.com; envelope-from="anthony.perard@citrix.com"; x-sender="anthony.perard@citrix.com"; x-conformance=sidf_compatible Received-SPF: Pass (esa6.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=esa6.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 (esa6.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=esa6.hc3370-68.iphmx.com; envelope-from="anthony.perard@citrix.com"; x-sender="postmaster@mail.citrix.com"; x-conformance=sidf_compatible IronPort-SDR: JWz3jpstM9ApbuaHtI5wmMENGY14NAASH7i3+0Usdt4qhIxzCn+hPEU36eNaSNV+gkZwxgOgNr qeWOLd822YhtN+e8aLfXLY45bitGuMqJV5sPhUwoS+cbV82wQfv71PADC2ZFRh1n4Zdqg4hFUm 5U6/2E5NqwcXAeufn5zXXGcgCYu4eePzouTGhcL2VyL1YOZT4hUoMFdnJnO0TC3tWLw2qlCt1Q 1spFFD9J2bmX8wPmQ8AwDViPiohLeSPvkP7ls+rEvRpa8R8qAEgpLoI+LgjbcdOkICsCtjYhxO 6bo= X-SBRS: 2.7 X-MesageID: 4374849 X-Ironport-Server: esa6.hc3370-68.iphmx.com X-Remote-IP: 162.221.158.21 X-Policy: $RELAYED X-IronPort-AV: E=Sophos;i="5.64,381,1559534400"; d="scan'208";a="4374849" From: Anthony PERARD To: Date: Tue, 13 Aug 2019 12:31:07 +0100 Message-ID: <20190813113119.14804-24-anthony.perard@citrix.com> X-Mailer: git-send-email 2.22.0 In-Reply-To: <20190813113119.14804-1-anthony.perard@citrix.com> References: <20190813113119.14804-1-anthony.perard@citrix.com> MIME-Version: 1.0 Subject: [Xen-devel] [PATCH v5 23/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 , Julien Grall , Anthony PERARD , 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" V2hlbiBydW5uaW5nIGFzIGEgWGVuIFBWSCBndWVzdCwgdGhlcmUgaXMgbm8gQ01PUyB0byByZWFk IHRoZSBtZW1vcnkKc2l6ZSBmcm9tLiAgUmV3b3JrIEdldFN5c3RlbU1lbW9yeVNpemUoQmVsb3d8 QWJvdmUpNGdiKCkgc28gdGhleSBjYW4Kd29yayB3aXRob3V0IENNT1MgYnkgcmVhZGluZyB0aGUg ZTgyMCB0YWJsZS4KClJld29yayBYZW5QdWJsaXNoUmFtUmVnaW9ucyB0byBhbHNvIGNhcmUgZm9y IHRoZSByZXNlcnZlZCBhbmQgQUNQSQplbnRyeSBpbiB0aGUgZTgyMCB0YWJsZS4gVGhlIHJlZ2lv biB0aGF0IHdhcyBhZGRlZCBieSBJbml0aWFsaXplWGVuKCkKaXNuJ3QgbmVlZGVkIGFzIHRoYXQg c2FtZSBlbnRyeSBpcyBpbiB0aGUgZTgyMCB0YWJsZSBwcm92aWRlZCBieQpodm1sb2FkZXIuCgpN VFJSIHNldHRpbmdzIGFyZW4ndCBtb2RpZmllZCBhbnltb3JlLCBvbiBIVk0gaXQncyBhbHJlYWR5 IGRvbmUgYnkKaHZtbG9hZGVyLCBvbiBQVkggaXQgaXMgc3VwcG9zZWQgdG8gaGF2ZSBzYW5lIGRl ZmF1bHQuIE1UUlIgd2lsbCBuZWVkCnRvIGJlIGRvbmUgcHJvcGVybHkgYnV0IGtlZXBpbmcgd2hh dCdzIGFscmVhZHkgYmVlbiBkb25lIGJ5IHByb2dyYW1zCnRoYXQgaGF2ZSBydW4gYmVmb3JlIE9W TUYgd2lsbCBkbyBmb3Igbm93LgoKUmVmOiBodHRwczovL2J1Z3ppbGxhLnRpYW5vY29yZS5vcmcv c2hvd19idWcuY2dpP2lkPTE2ODkKU2lnbmVkLW9mZi1ieTogQW50aG9ueSBQRVJBUkQgPGFudGhv bnkucGVyYXJkQGNpdHJpeC5jb20+CkFja2VkLWJ5OiBMYXN6bG8gRXJzZWsgPGxlcnNla0ByZWRo YXQuY29tPgotLS0KCk5vdGVzOgogICAgdjU6CiAgICAtIGZpeCBjb2Rpbmcgc3R5bGUKICAgIC0g Zml4IHR5cG8gaW4gY29tbWl0IG1lc3NhZ2UKICAgIC0gSGFuZGxlIGFsbCBwb3NzaWJsZSBjYXNl cyBvZiBhIEU4MjAgcmVzZXJ2ZWQgcmFuZ2Ugb3ZlcmxhcHBpbmcgd2l0aCB0aGUKICAgICAgTEFQ SUMgcmFuZ2UuCiAgICAKICAgIHY0OgogICAgLSBzb21lIGNvZGluZyBzdHlsZQogICAgLSBBZGRl ZCBBZGRSZXNlcnZlZE1lbW9yeVJhbmdlSG9iLCBhbmQgdXNpbmcgaXQuCiAgICAtIHRoaXMgcGF0 Y2ggbm93IHJlcGxhY2UgIk92bWZQa2cvWGVuUGxhdGZvcm1QZWk6IFJlc2VydmUgaHZtbG9hZGVy J3MgbWVtb3J5IG9ubHkgd2hlbiBpdCBoYXMgcnVuIgogICAgICBmcm9tIHYzLiAgaHZtbG9hZGVy IGhhdmUgYWRkZWQgYW4gZW50cnkgaW4gdGhlIGU4MjAgdGFibGUsIHRoZXJlIGlzIG5vCiAgICAg IG5lZWQgZm9yIGEgc3BlY2lhbCBjYXNlLgogICAgLSBub3csIGV2ZXJ5dGhpbmcgdGhhdCBpcyBp biB0aGUgZTgyMCB0YWJsZSBpcyBhZGRlZCB0byBPVk1GJ3MgbWVtb3J5CiAgICAgIG1hcCwgbm8g bW9yZSBza2lwcGluZyBBQ1BJIGVudHJpZXMgb3IgaHZtbG9hZGVyJ3MgcmVzZXJ2ZWQgZW50cmll cy4KICAgICAgSW5zdGVhZCwgd2UgbG9vayBmb3IgdGhlIGxvY2FsIEFQSUMgcmVnaW9uIGFuZCBh dm9pZCBpdCBpZiBpdCBpcwogICAgICBwcmVzZW50IGluIHRoZSBlODIwLgogICAgLSByZXdvcmsg Y29tbWl0IG1lc3NhZ2UKCiBPdm1mUGtnL1hlblBsYXRmb3JtUGVpL1BsYXRmb3JtLmggIHwgMTMg KysrKysrCiBPdm1mUGtnL1hlblBsYXRmb3JtUGVpL01lbURldGVjdC5jIHwgNjkgKysrKysrKysr KysrKysrKysrKysrKysrKysrCiBPdm1mUGtnL1hlblBsYXRmb3JtUGVpL1BsYXRmb3JtLmMgIHwg MTEgKysrKysKIE92bWZQa2cvWGVuUGxhdGZvcm1QZWkvWGVuLmMgICAgICAgfCA3NSArKysrKysr KysrKysrKysrKysrKystLS0tLS0tLS0KIDQgZmlsZXMgY2hhbmdlZCwgMTQ3IGluc2VydGlvbnMo KyksIDIxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL092bWZQa2cvWGVuUGxhdGZvcm1QZWkv UGxhdGZvcm0uaCBiL092bWZQa2cvWGVuUGxhdGZvcm1QZWkvUGxhdGZvcm0uaAppbmRleCBkYjlh NjI1NzJmLi43NjYxZjRhOGRlIDEwMDY0NAotLS0gYS9Pdm1mUGtnL1hlblBsYXRmb3JtUGVpL1Bs YXRmb3JtLmgKKysrIGIvT3ZtZlBrZy9YZW5QbGF0Zm9ybVBlaS9QbGF0Zm9ybS5oCkBAIC00NCw2 ICs0NCwxMyBAQCBBZGRSZXNlcnZlZE1lbW9yeUJhc2VTaXplSG9iICgKICAgQk9PTEVBTiAgICAg ICAgICAgICAgICAgICAgIENhY2hlYWJsZQ0KICAgKTsNCiANCitWT0lEDQorQWRkUmVzZXJ2ZWRN ZW1vcnlSYW5nZUhvYiAoDQorICBFRklfUEhZU0lDQUxfQUREUkVTUyAgICAgICAgTWVtb3J5QmFz ZSwNCisgIEVGSV9QSFlTSUNBTF9BRERSRVNTICAgICAgICBNZW1vcnlMaW1pdCwNCisgIEJPT0xF QU4gICAgICAgICAgICAgICAgICAgICBDYWNoZWFibGUNCisgICk7DQorDQogVk9JRA0KIEFkZHJl c3NXaWR0aEluaXRpYWxpemF0aW9uICgNCiAgIFZPSUQNCkBAIC0xMTQsNiArMTIxLDEyIEBAIFhl blB1Ymxpc2hSYW1SZWdpb25zICgKICAgVk9JRA0KICAgKTsNCiANCitFRklfU1RBVFVTDQorWGVu R2V0RTgyME1hcCAoDQorICBFRklfRTgyMF9FTlRSWTY0ICoqRW50cmllcywNCisgIFVJTlQzMiAq Q291bnQNCisgICk7DQorDQogZXh0ZXJuIEVGSV9CT09UX01PREUgbUJvb3RNb2RlOw0KIA0KIGV4 dGVybiBVSU5UOCBtUGh5c01lbUFkZHJlc3NXaWR0aDsNCmRpZmYgLS1naXQgYS9Pdm1mUGtnL1hl blBsYXRmb3JtUGVpL01lbURldGVjdC5jIGIvT3ZtZlBrZy9YZW5QbGF0Zm9ybVBlaS9NZW1EZXRl Y3QuYwppbmRleCBjZjk1ZjljNDc0Li4xZjgxZWVlNDA3IDEwMDY0NAotLS0gYS9Pdm1mUGtnL1hl blBsYXRmb3JtUGVpL01lbURldGVjdC5jCisrKyBiL092bWZQa2cvWGVuUGxhdGZvcm1QZWkvTWVt RGV0ZWN0LmMKQEAgLTk2LDYgKzk2LDQ1IEBAIFEzNVRzZWdNYnl0ZXNJbml0aWFsaXphdGlvbiAo CiAgIG1RMzVUc2VnTWJ5dGVzID0gRXh0ZW5kZWRUc2VnTWJ5dGVzOw0KIH0NCiANCitTVEFUSUMN CitVSU5UNjQNCitHZXRIaWdoZXN0U3lzdGVtTWVtb3J5QWRkcmVzcyAoDQorICBCT09MRUFOICAg ICAgIEJlbG93NGdiDQorICApDQorew0KKyAgRUZJX0U4MjBfRU5UUlk2NCAgICAqRTgyME1hcDsN CisgIFVJTlQzMiAgICAgICAgICAgICAgRTgyMEVudHJpZXNDb3VudDsNCisgIEVGSV9FODIwX0VO VFJZNjQgICAgKkVudHJ5Ow0KKyAgRUZJX1NUQVRVUyAgICAgICAgICBTdGF0dXM7DQorICBVSU5U MzIgICAgICAgICAgICAgIExvb3A7DQorICBVSU5UNjQgICAgICAgICAgICAgIEhpZ2hlc3RBZGRy ZXNzOw0KKyAgVUlOVDY0ICAgICAgICAgICAgICBFbnRyeUVuZDsNCisNCisgIEhpZ2hlc3RBZGRy ZXNzID0gMDsNCisNCisgIFN0YXR1cyA9IFhlbkdldEU4MjBNYXAgKCZFODIwTWFwLCAmRTgyMEVu dHJpZXNDb3VudCk7DQorICBBU1NFUlRfRUZJX0VSUk9SIChTdGF0dXMpOw0KKw0KKyAgZm9yIChM b29wID0gMDsgTG9vcCA8IEU4MjBFbnRyaWVzQ291bnQ7IExvb3ArKykgew0KKyAgICBFbnRyeSA9 IEU4MjBNYXAgKyBMb29wOw0KKyAgICBFbnRyeUVuZCA9IEVudHJ5LT5CYXNlQWRkciArIEVudHJ5 LT5MZW5ndGg7DQorDQorICAgIGlmIChFbnRyeS0+VHlwZSA9PSBFZmlBY3BpQWRkcmVzc1Jhbmdl TWVtb3J5ICYmDQorICAgICAgICBFbnRyeUVuZCA+IEhpZ2hlc3RBZGRyZXNzKSB7DQorDQorICAg ICAgaWYgKEJlbG93NGdiICYmIChFbnRyeUVuZCA8PSBCQVNFXzRHQikpIHsNCisgICAgICAgIEhp Z2hlc3RBZGRyZXNzID0gRW50cnlFbmQ7DQorICAgICAgfSBlbHNlIGlmICghQmVsb3c0Z2IgJiYg KEVudHJ5RW5kID49IEJBU0VfNEdCKSkgew0KKyAgICAgICAgSGlnaGVzdEFkZHJlc3MgPSBFbnRy eUVuZDsNCisgICAgICB9DQorICAgIH0NCisgIH0NCisNCisgIC8vDQorICAvLyBSb3VuZCBkb3du IHRoZSBlbmQgYWRkcmVzcy4NCisgIC8vDQorICByZXR1cm4gSGlnaGVzdEFkZHJlc3MgJiB+KFVJ TlQ2NClFRklfUEFHRV9NQVNLOw0KK30NCiANCiBVSU5UMzINCiBHZXRTeXN0ZW1NZW1vcnlTaXpl QmVsb3c0Z2IgKA0KQEAgLTEwNSw2ICsxNDQsMTkgQEAgR2V0U3lzdGVtTWVtb3J5U2l6ZUJlbG93 NGdiICgKICAgVUlOVDggQ21vczB4MzQ7DQogICBVSU5UOCBDbW9zMHgzNTsNCiANCisgIC8vDQor ICAvLyBJbiBQVkggY2FzZSwgdGhlcmUgaXMgbm8gQ01PUywgd2UgaGF2ZSB0byBjYWxjdWxhdGUg dGhlIG1lbW9yeSBzaXplDQorICAvLyBmcm9tIHBhcnNpbmcgdGhlIEU4MjANCisgIC8vDQorICBp ZiAoWGVuUHZoRGV0ZWN0ZWQgKCkpIHsNCisgICAgVUlOVDY0ICBIaWdoZXN0QWRkcmVzczsNCisN CisgICAgSGlnaGVzdEFkZHJlc3MgPSBHZXRIaWdoZXN0U3lzdGVtTWVtb3J5QWRkcmVzcyAoVFJV RSk7DQorICAgIEFTU0VSVCAoSGlnaGVzdEFkZHJlc3MgPiAwICYmIEhpZ2hlc3RBZGRyZXNzIDw9 IEJBU0VfNEdCKTsNCisNCisgICAgcmV0dXJuIEhpZ2hlc3RBZGRyZXNzOw0KKyAgfQ0KKw0KICAg Ly8NCiAgIC8vIENNT1MgMHgzNC8weDM1IHNwZWNpZmllcyB0aGUgc3lzdGVtIG1lbW9yeSBhYm92 ZSAxNiBNQi4NCiAgIC8vICogQ01PUygweDM1KSBpcyB0aGUgaGlnaCBieXRlDQpAQCAtMTI5LDYg KzE4MSwyMyBAQCBHZXRTeXN0ZW1NZW1vcnlTaXplQWJvdmU0Z2IgKAogICBVSU5UMzIgU2l6ZTsN CiAgIFVJTlROICBDbW9zSW5kZXg7DQogDQorICAvLw0KKyAgLy8gSW4gUFZIIGNhc2UsIHRoZXJl IGlzIG5vIENNT1MsIHdlIGhhdmUgdG8gY2FsY3VsYXRlIHRoZSBtZW1vcnkgc2l6ZQ0KKyAgLy8g ZnJvbSBwYXJzaW5nIHRoZSBFODIwDQorICAvLw0KKyAgaWYgKFhlblB2aERldGVjdGVkICgpKSB7 DQorICAgIFVJTlQ2NCAgSGlnaGVzdEFkZHJlc3M7DQorDQorICAgIEhpZ2hlc3RBZGRyZXNzID0g R2V0SGlnaGVzdFN5c3RlbU1lbW9yeUFkZHJlc3MgKEZBTFNFKTsNCisgICAgQVNTRVJUIChIaWdo ZXN0QWRkcmVzcyA9PSAwIHx8IEhpZ2hlc3RBZGRyZXNzID49IEJBU0VfNEdCKTsNCisNCisgICAg aWYgKEhpZ2hlc3RBZGRyZXNzID49IEJBU0VfNEdCKSB7DQorICAgICAgSGlnaGVzdEFkZHJlc3Mg LT0gQkFTRV80R0I7DQorICAgIH0NCisNCisgICAgcmV0dXJuIEhpZ2hlc3RBZGRyZXNzOw0KKyAg fQ0KKw0KICAgLy8NCiAgIC8vIENNT1MgMHg1Yi0weDVkIHNwZWNpZmllcyB0aGUgc3lzdGVtIG1l bW9yeSBhYm92ZSA0R0IgTUIuDQogICAvLyAqIENNT1MoMHg1ZCkgaXMgdGhlIG1vc3Qgc2lnbmlm aWNhbnQgc2l6ZSBieXRlDQpkaWZmIC0tZ2l0IGEvT3ZtZlBrZy9YZW5QbGF0Zm9ybVBlaS9QbGF0 Zm9ybS5jIGIvT3ZtZlBrZy9YZW5QbGF0Zm9ybVBlaS9QbGF0Zm9ybS5jCmluZGV4IDZhYWFmYzNl ZTkuLjJmNDJjYTZjY2QgMTAwNjQ0Ci0tLSBhL092bWZQa2cvWGVuUGxhdGZvcm1QZWkvUGxhdGZv cm0uYworKysgYi9Pdm1mUGtnL1hlblBsYXRmb3JtUGVpL1BsYXRmb3JtLmMKQEAgLTEwMiw2ICsx MDIsMTcgQEAgQWRkUmVzZXJ2ZWRNZW1vcnlCYXNlU2l6ZUhvYiAoCiAgICAgKTsNCiB9DQogDQor Vk9JRA0KK0FkZFJlc2VydmVkTWVtb3J5UmFuZ2VIb2IgKA0KKyAgRUZJX1BIWVNJQ0FMX0FERFJF U1MgICAgICAgIE1lbW9yeUJhc2UsDQorICBFRklfUEhZU0lDQUxfQUREUkVTUyAgICAgICAgTWVt b3J5TGltaXQsDQorICBCT09MRUFOICAgICAgICAgICAgICAgICAgICAgQ2FjaGVhYmxlDQorICAp DQorew0KKyAgQWRkUmVzZXJ2ZWRNZW1vcnlCYXNlU2l6ZUhvYiAoTWVtb3J5QmFzZSwNCisgICAg KFVJTlQ2NCkoTWVtb3J5TGltaXQgLSBNZW1vcnlCYXNlKSwgQ2FjaGVhYmxlKTsNCit9DQorDQog Vk9JRA0KIEFkZElvTWVtb3J5UmFuZ2VIb2IgKA0KICAgRUZJX1BIWVNJQ0FMX0FERFJFU1MgICAg ICAgIE1lbW9yeUJhc2UsDQpkaWZmIC0tZ2l0IGEvT3ZtZlBrZy9YZW5QbGF0Zm9ybVBlaS9YZW4u YyBiL092bWZQa2cvWGVuUGxhdGZvcm1QZWkvWGVuLmMKaW5kZXggNzJmNmYzN2I0Ni4uYzQ1MDZk ZWY5YSAxMDA2NDQKLS0tIGEvT3ZtZlBrZy9YZW5QbGF0Zm9ybVBlaS9YZW4uYworKysgYi9Pdm1m UGtnL1hlblBsYXRmb3JtUGVpL1hlbi5jCkBAIC0yNzYsOSArMjc2LDE0IEBAIFhlblB1Ymxpc2hS YW1SZWdpb25zICgKICAgVk9JRA0KICAgKQ0KIHsNCi0gIEVGSV9FODIwX0VOVFJZNjQgICpFODIw TWFwOw0KLSAgVUlOVDMyICAgICAgICAgICAgRTgyMEVudHJpZXNDb3VudDsNCi0gIEVGSV9TVEFU VVMgICAgICAgIFN0YXR1czsNCisgIEVGSV9FODIwX0VOVFJZNjQgICAgICAqRTgyME1hcDsNCisg IFVJTlQzMiAgICAgICAgICAgICAgICBFODIwRW50cmllc0NvdW50Ow0KKyAgRUZJX1NUQVRVUyAg ICAgICAgICAgIFN0YXR1czsNCisgIEVGSV9FODIwX0VOVFJZNjQgICAgICAqRW50cnk7DQorICBV SU5UTiAgICAgICAgICAgICAgICAgSW5kZXg7DQorICBVSU5UNjQgICAgICAgICAgICAgICAgTGFw aWNCYXNlOw0KKyAgVUlOVDY0ICAgICAgICAgICAgICAgIExhcGljRW5kOw0KKw0KIA0KICAgREVC VUcgKChERUJVR19JTkZPLCAiVXNpbmcgbWVtb3J5IG1hcCBwcm92aWRlZCBieSBYZW5cbiIpKTsN CiANCkBAIC0yODcsMjYgKzI5Miw2MCBAQCBYZW5QdWJsaXNoUmFtUmVnaW9ucyAoCiAgIC8vDQog ICBFODIwRW50cmllc0NvdW50ID0gMDsNCiAgIFN0YXR1cyA9IFhlbkdldEU4MjBNYXAgKCZFODIw TWFwLCAmRTgyMEVudHJpZXNDb3VudCk7DQotDQogICBBU1NFUlRfRUZJX0VSUk9SIChTdGF0dXMp Ow0KIA0KLSAgaWYgKEU4MjBFbnRyaWVzQ291bnQgPiAwKSB7DQotICAgIEVGSV9FODIwX0VOVFJZ NjQgKkVudHJ5Ow0KLSAgICBVSU5UMzIgTG9vcDsNCisgIExhcGljQmFzZSA9IFBjZEdldDMyIChQ Y2RDcHVMb2NhbEFwaWNCYXNlQWRkcmVzcyk7DQorICBMYXBpY0VuZCA9IExhcGljQmFzZSArIFNJ WkVfMU1COw0KKyAgQWRkSW9NZW1vcnlSYW5nZUhvYiAoTGFwaWNCYXNlLCBMYXBpY0VuZCk7DQog DQotICAgIGZvciAoTG9vcCA9IDA7IExvb3AgPCBFODIwRW50cmllc0NvdW50OyBMb29wKyspIHsN Ci0gICAgICBFbnRyeSA9IEU4MjBNYXAgKyBMb29wOw0KKyAgZm9yIChJbmRleCA9IDA7IEluZGV4 IDwgRTgyMEVudHJpZXNDb3VudDsgSW5kZXgrKykgew0KKyAgICBVSU5UNjQgQmFzZTsNCisgICAg VUlOVDY0IEVuZDsNCisgICAgVUlOVDY0IFJlc2VydmVkQmFzZTsNCisgICAgVUlOVDY0IFJlc2Vy dmVkRW5kOw0KIA0KKyAgICBFbnRyeSA9ICZFODIwTWFwW0luZGV4XTsNCisNCisgICAgLy8NCisg ICAgLy8gUm91bmQgdXAgdGhlIHN0YXJ0IGFkZHJlc3MsIGFuZCByb3VuZCBkb3duIHRoZSBlbmQg YWRkcmVzcy4NCisgICAgLy8NCisgICAgQmFzZSA9IEFMSUdOX1ZBTFVFIChFbnRyeS0+QmFzZUFk ZHIsIChVSU5UNjQpRUZJX1BBR0VfU0laRSk7DQorICAgIEVuZCA9IChFbnRyeS0+QmFzZUFkZHIg KyBFbnRyeS0+TGVuZ3RoKSAmIH4oVUlOVDY0KUVGSV9QQUdFX01BU0s7DQorDQorICAgIHN3aXRj aCAoRW50cnktPlR5cGUpIHsNCisgICAgY2FzZSBFZmlBY3BpQWRkcmVzc1JhbmdlTWVtb3J5Og0K KyAgICAgIEFkZE1lbW9yeVJhbmdlSG9iIChCYXNlLCBFbmQpOw0KKyAgICAgIGJyZWFrOw0KKyAg ICBjYXNlIEVmaUFjcGlBZGRyZXNzUmFuZ2VBQ1BJOg0KKyAgICAgIEFkZFJlc2VydmVkTWVtb3J5 UmFuZ2VIb2IgKEJhc2UsIEVuZCwgRkFMU0UpOw0KKyAgICAgIGJyZWFrOw0KKyAgICBjYXNlIEVm aUFjcGlBZGRyZXNzUmFuZ2VSZXNlcnZlZDoNCiAgICAgICAvLw0KLSAgICAgIC8vIE9ubHkgY2Fy ZSBhYm91dCBSQU0NCisgICAgICAvLyBodm1sb2FkZXIgbWFya3MgYSByYW5nZSB0aGF0IG92ZXJs YXBzIHdpdGggdGhlIGxvY2FsIEFQSUMgbWVtb3J5DQorICAgICAgLy8gbWFwcGVkIHJlZ2lvbiBh cyByZXNlcnZlZCwgYnV0IENwdUR4ZSB3YW50cyBpdCBhcyBtYXBwZWQgSU8uIFdlDQorICAgICAg Ly8gaGF2ZSBhbHJlYWR5IGFkZGVkIGl0IGFzIG1hcHBlZCBJTywgc28gc2tpcCBpdCBoZXJlLg0K ICAgICAgIC8vDQotICAgICAgaWYgKEVudHJ5LT5UeXBlICE9IEVmaUFjcGlBZGRyZXNzUmFuZ2VN ZW1vcnkpIHsNCi0gICAgICAgIGNvbnRpbnVlOw0KLSAgICAgIH0NCiANCi0gICAgICBBZGRNZW1v cnlCYXNlU2l6ZUhvYiAoRW50cnktPkJhc2VBZGRyLCBFbnRyeS0+TGVuZ3RoKTsNCisgICAgICAv Lw0KKyAgICAgIC8vIGFkZCBMQVBJQyBwcmVkZWNlc3NvciByYW5nZSwgaWYgYW55DQorICAgICAg Ly8NCisgICAgICBSZXNlcnZlZEJhc2UgPSBCYXNlOw0KKyAgICAgIFJlc2VydmVkRW5kID0gTUlO IChFbmQsIExhcGljQmFzZSk7DQorICAgICAgaWYgKFJlc2VydmVkQmFzZSA8IFJlc2VydmVkRW5k KSB7DQorICAgICAgICBBZGRSZXNlcnZlZE1lbW9yeVJhbmdlSG9iIChSZXNlcnZlZEJhc2UsIFJl c2VydmVkRW5kLCBGQUxTRSk7DQorICAgICAgfQ0KIA0KLSAgICAgIE10cnJTZXRNZW1vcnlBdHRy aWJ1dGUgKEVudHJ5LT5CYXNlQWRkciwgRW50cnktPkxlbmd0aCwgQ2FjaGVXcml0ZUJhY2spOw0K KyAgICAgIC8vDQorICAgICAgLy8gYWRkIExBUElDIHN1Y2Nlc3NvciByYW5nZSwgaWYgYW55DQor ICAgICAgLy8NCisgICAgICBSZXNlcnZlZEJhc2UgPSBNQVggKEJhc2UsIExhcGljRW5kKTsNCisg ICAgICBSZXNlcnZlZEVuZCA9IEVuZDsNCisgICAgICBpZiAoUmVzZXJ2ZWRCYXNlIDwgUmVzZXJ2 ZWRFbmQpIHsNCisgICAgICAgIEFkZFJlc2VydmVkTWVtb3J5UmFuZ2VIb2IgKFJlc2VydmVkQmFz ZSwgUmVzZXJ2ZWRFbmQsIEZBTFNFKTsNCisgICAgICB9DQorICAgICAgYnJlYWs7DQorICAgIGRl ZmF1bHQ6DQorICAgICAgYnJlYWs7DQogICAgIH0NCiAgIH0NCiB9DQpAQCAtMzI2LDEyICszNjUs NiBAQCBJbml0aWFsaXplWGVuICgKIHsNCiAgIFJFVFVSTl9TVEFUVVMgUGNkU3RhdHVzOw0KIA0K LSAgLy8NCi0gIC8vIFJlc2VydmUgYXdheSBIVk1MT0FERVIgcmVzZXJ2ZWQgbWVtb3J5IFsweEZD MDAwMDAwLDB4RkQwMDAwMDApLg0KLSAgLy8gVGhpcyBuZWVkcyB0byBtYXRjaCBIVk1MT0FERVIg UkVTRVJWRURfTUVNQkFTRS9SRVNFUlZFRF9NRU1TSVpFLg0KLSAgLy8NCi0gIEFkZFJlc2VydmVk TWVtb3J5QmFzZVNpemVIb2IgKDB4RkMwMDAwMDAsIDB4MTAwMDAwMCwgRkFMU0UpOw0KLQ0KICAg UGNkU3RhdHVzID0gUGNkU2V0Qm9vbFMgKFBjZFBjaURpc2FibGVCdXNFbnVtZXJhdGlvbiwgVFJV RSk7DQogICBBU1NFUlRfUkVUVVJOX0VSUk9SIChQY2RTdGF0dXMpOw0KIA0KLS0gCkFudGhvbnkg UEVSQVJECgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpY ZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZwpodHRw czovL2xpc3RzLnhlbnByb2plY3Qub3JnL21haWxtYW4vbGlzdGluZm8veGVuLWRldmVs