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 B768FC4CEC4 for ; Wed, 18 Sep 2019 10:41:56 +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 716C5214AF for ; Wed, 18 Sep 2019 10:41:56 +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="D/eNnmVO" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 716C5214AF 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 1iAXOx-0002l9-D6; Wed, 18 Sep 2019 10:41:35 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1iAXOw-0002kU-Ej for xen-devel@lists.xenproject.org; Wed, 18 Sep 2019 10:41:34 +0000 X-Inumbo-ID: e0a61b9c-da00-11e9-978d-bc764e2007e4 Received: from esa2.hc3370-68.iphmx.com (unknown [216.71.145.153]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id e0a61b9c-da00-11e9-978d-bc764e2007e4; Wed, 18 Sep 2019 10:41:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=citrix.com; s=securemail; t=1568803292; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=bchqXSX8RRJ4e1r2GvL6y7SH+GaGybpCY+SwEP3DimE=; b=D/eNnmVOXW9a+RBpbj3BcNlHXfi6MJFX8iNER+heKfUdLdSphLK75nns TbpiLNm72XmyIykk2U7UeuZBcfxsmEQCMaoqfryldgxgm8Co1RGlOy9o+ TUQDmgzH1uLFchanTM5Ky8hEnZJMsBM1rvwTnrdTY/oongZvE3h4k4h1+ M=; Authentication-Results: esa2.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none; spf=None smtp.pra=paul.durrant@citrix.com; spf=Pass smtp.mailfrom=Paul.Durrant@citrix.com; spf=None smtp.helo=postmaster@mail.citrix.com Received-SPF: None (esa2.hc3370-68.iphmx.com: no sender authenticity information available from domain of paul.durrant@citrix.com) identity=pra; client-ip=162.221.158.21; receiver=esa2.hc3370-68.iphmx.com; envelope-from="Paul.Durrant@citrix.com"; x-sender="paul.durrant@citrix.com"; x-conformance=sidf_compatible Received-SPF: Pass (esa2.hc3370-68.iphmx.com: domain of Paul.Durrant@citrix.com designates 162.221.158.21 as permitted sender) identity=mailfrom; client-ip=162.221.158.21; receiver=esa2.hc3370-68.iphmx.com; envelope-from="Paul.Durrant@citrix.com"; x-sender="Paul.Durrant@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 (esa2.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=esa2.hc3370-68.iphmx.com; envelope-from="Paul.Durrant@citrix.com"; x-sender="postmaster@mail.citrix.com"; x-conformance=sidf_compatible IronPort-SDR: omJymZALtUTczSq+soknfxriKpcPqQ7iM37W2aqz7ovqil3lC6CDh2syHRiqdrre8rFABsG338 JUztFyZLwsDnjQ0cc1/+X/zXCSremKckVvaa68/gEAfTORFIf9hQJBO1GQUMqHHauRmRCwYosW CWmFFY1tMvs2ykUa6RGFNC8NatQwGbQJhVTIGyL4BlJUrrgi6Qun9if2vqXJQ8AEpLtdTJVFea R9JarmrFvUAn7Vw0EI1/o6nnbDSQOquLJqtTbw2w17y28lwPsPEQkukDHYmrxNU7OitydSes76 pmY= X-SBRS: 2.7 X-MesageID: 5717432 X-Ironport-Server: esa2.hc3370-68.iphmx.com X-Remote-IP: 162.221.158.21 X-Policy: $RELAYED X-IronPort-AV: E=Sophos;i="5.64,520,1559534400"; d="scan'208";a="5717432" From: Paul Durrant To: Date: Wed, 18 Sep 2019 11:41:10 +0100 Message-ID: <20190918104113.3294-2-paul.durrant@citrix.com> X-Mailer: git-send-email 2.20.1.2.gb21ebb671 In-Reply-To: <20190918104113.3294-1-paul.durrant@citrix.com> References: <20190918104113.3294-1-paul.durrant@citrix.com> MIME-Version: 1.0 Subject: [Xen-devel] [PATCH v13 1/4] remove late (on-demand) construction of IOMMU page tables 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: Petre Pircalabu , Stefano Stabellini , Wei Liu , Razvan Cojocaru , Konrad Rzeszutek Wilk , George Dunlap , Andrew Cooper , Ian Jackson , Tim Deegan , Julien Grall , Paul Durrant , Tamas K Lengyel , Jan Beulich , Alexandru Isaila , Volodymyr Babchuk , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" Tm93IHRoYXQgdGhlcmUgaXMgYSBwZXItZG9tYWluIElPTU1VLWVuYWJsZSBmbGFnLCB3aGljaCBz aG91bGQgYmUgc2V0IGlmCmFueSBkZXZpY2UgaXMgZ29pbmcgdG8gYmUgcGFzc2VkIHRocm91Z2gs IHN0b3AgZGVmZXJyaW5nIHBhZ2UgdGFibGUKY29uc3RydWN0aW9uIHVudGlsIHRoZSBhc3NpZ25t ZW50IGlzIGRvbmUuIEFsc28gZG9uJ3QgdGVhciBkb3duIHRoZSB0YWJsZXMKYWdhaW4gd2hlbiB0 aGUgbGFzdCBkZXZpY2UgaXMgZGUtYXNzaWduZWQ7IGRlZmVyIHRoYXQgdGFzayB1bnRpbCBkb21h aW4KZGVzdHJ1Y3Rpb24uCgpUaGlzIGFsbG93cyB0aGUgaGFzX2lvbW11X3B0KCkgaGVscGVyIGFu ZCBpb21tdV9zdGF0dXMgZW51bWVyYXRpb24gdG8gYmUKcmVtb3ZlZC4gQ2FsbHMgdG8gaGFzX2lv bW11X3B0KCkgYXJlIHNpbXBseSByZXBsYWNlZCBieSBjYWxscyB0bwppc19pb21tdV9lbmFibGVk KCkuIFJlbWFpbmluZyBvcGVuLWNvZGVkIHRlc3RzIG9mIGlvbW11X2hhcF9wdF9zaGFyZSBjYW4K YWxzbyBiZSByZXBsYWNlZCBieSBjYWxscyB0byBpb21tdV91c2VfaGFwX3B0KCkuClRoZSBhcmNo X2lvbW11X3BvcHVsYXRlX3BhZ2VfdGFibGUoKSBhbmQgaW9tbXVfY29uc3RydWN0KCkgZnVuY3Rp b25zIGJlY29tZQpyZWR1bmRhbnQsIGFzIGRvZXMgdGhlICdzdHJpY3QgbW9kZScgZG9tMCBwYWdl X2xpc3QgbWFwcGluZyBjb2RlIGluCmlvbW11X2h3ZG9tX2luaXQoKSwgYW5kIGlvbW11X3RlYXJk b3duKCkgY2FuIGJlIG1hZGUgc3RhdGljIGlzIGl0cyBvbmx5CnJlbWFpbmluZyBjYWxsZXIsIGlv bW11X2RvbWFpbl9kZXN0cm95KCksIGlzIHdpdGhpbiB0aGUgc2FtZSBzb3VyY2UKbW9kdWxlLgoK QWxsIGluIGFsbCwgYWJvdXQgMjIwIGxpbmVzIG9mIGNvZGUgYXJlIHJlbW92ZWQgZnJvbSB0aGUg aHlwZXJ2aXNvciAoYXQKdGhlIGV4cGVuc2Ugb2Ygc29tZSBhZGRpdGlvbnMgaW4gdGhlIHRvb2xz dGFjaykuCgpOT1RFOiBUaGlzIHBhdGNoIHdpbGwgY2F1c2UgYSBzbWFsbCBhbW91bnQgb2YgZXh0 cmEgcmVzb3VyY2UgdG8gYmUgdXNlZAogICAgICB0byBhY2NvbW1vZGF0ZSBJT01NVSBwYWdlIHRh YmxlcyB0aGF0IG1heSBuZXZlciBiZSB1c2VkLCBzaW5jZSB0aGUKICAgICAgcGVyLWRvbWFpbiBJ T01NVS1lbmFibGUgZmxhZyBpcyBjdXJyZW50bHkgc2V0IHRvIHRoZSB2YWx1ZSBvZiB0aGUKICAg ICAgZ2xvYmFsIGlvbW11X2VuYWJsZSBmbGFnLiBBIHN1YnNlcXVlbnQgcGF0Y2ggd2lsbCBhZGQg YW4gb3B0aW9uIHRvCiAgICAgIHRoZSB0b29sc3RhY2sgdG8gYWxsb3cgaXQgdG8gYmUgdHVybmVk IG9mZiBpZiB0aGVyZSBpcyBubyBpbnRlbnRpb24KICAgICAgdG8gYXNzaWduIHBhc3N0aHJvdWdo IGhhcmR3YXJlIHRvIHRoZSBkb21haW4uCiAgICAgIFRvIGFjY291bnQgZm9yIHRoZSBleHRyYSBy ZXNvdXJjZSwgJ2lvbW11X21lbWtiJyBoYXMgYmVlbiBhZGRlZCB0bwogICAgICBkb21haW5fYnVp bGRfaW5mby4gVGhpcyBwYXRjaCBzZXRzIGl0IHRvIGEgdmFsdWUgY2FsY3VsYXRlZCBiYXNlZAog ICAgICBvbiB0aGUgZG9tYWluJ3MgbWF4aW11bSBtZW1vcnkgd2hlbiB0aGUgUDJNIHNoYXJpbmcg aXMgZWl0aGVyIG5vdAogICAgICBzdXBwb3J0ZWQgb3IgZ2xvYmFsbHkgZGlzYWJsZWQsIG9yIHpl cm8gb3RoZXJ3aXNlLiBIb3dldmVyLCB3aGVuCiAgICAgIHRoZSB0b29sc3RhY2sgb3B0aW9uIG1l bnRpb25lZCBhYm92ZSBpcyBhZGRlZCwgaXQgd2lsbCBhbHNvIGJlIHplcm8KICAgICAgaWYgdGhl IHBlci1kb21haW4gSU9NTVUtZW5hYmxlIGZsYWcgaXMgdHVybmVkIG9mZi4KClNpZ25lZC1vZmYt Ynk6IFBhdWwgRHVycmFudCA8cGF1bC5kdXJyYW50QGNpdHJpeC5jb20+ClJldmlld2VkLWJ5OiBB bGV4YW5kcnUgSXNhaWxhIDxhaXNhaWxhQGJpdGRlZmVuZGVyLmNvbT4KQWNrZWQtYnk6IFJhenZh biBDb2pvY2FydSA8cmNvam9jYXJ1QGJpdGRlZmVuZGVyLmNvbT4KUmV2aWV3ZWQtYnk6IEphbiBC ZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KQWNrZWQtYnk6IEp1bGllbiBHcmFsbCA8anVsaWVu LmdyYWxsQGFybS5jb20+Ci0tLQpDYzogU3RlZmFubyBTdGFiZWxsaW5pIDxzc3RhYmVsbGluaUBr ZXJuZWwub3JnPgpDYzogVm9sb2R5bXlyIEJhYmNodWsgPFZvbG9keW15cl9CYWJjaHVrQGVwYW0u Y29tPgpDYzogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3BlcjNAY2l0cml4LmNvbT4KQ2M6IEdl b3JnZSBEdW5sYXAgPEdlb3JnZS5EdW5sYXBAZXUuY2l0cml4LmNvbT4KQ2M6IElhbiBKYWNrc29u IDxpYW4uamFja3NvbkBldS5jaXRyaXguY29tPgpDYzogS29ucmFkIFJ6ZXN6dXRlayBXaWxrIDxr b25yYWQud2lsa0BvcmFjbGUuY29tPgpDYzogVGltIERlZWdhbiA8dGltQHhlbi5vcmc+CkNjOiBX ZWkgTGl1IDx3bEB4ZW4ub3JnPgpDYzogIlJvZ2VyIFBhdSBNb25uw6kiIDxyb2dlci5wYXVAY2l0 cml4LmNvbT4KQ2M6IFRhbWFzIEsgTGVuZ3llbCA8dGFtYXNAdGtsZW5neWVsLmNvbT4KQ2M6IEdl b3JnZSBEdW5sYXAgPGdlb3JnZS5kdW5sYXBAZXUuY2l0cml4LmNvbT4KQ2M6IFBldHJlIFBpcmNh bGFidSA8cHBpcmNhbGFidUBiaXRkZWZlbmRlci5jb20+CgpQcmV2aW91c2x5IHBhcnQgb2Ygc2Vy aWVzIGh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvYXJjaGl2ZXMvaHRtbC94ZW4tZGV2ZWwv MjAxOS0wNy9tc2cwMjI2Ny5odG1sCgp2OToKIC0gQXZvaWQgdGhlIGlvbW11X21lbWtiIG92ZXJo ZWFkIGlmIHRoZSBJT01NVSBpcyBkaXNhYmxlIG9yIHBhZ2UgdGFibGVzCiAgIGFyZSBzaGFyZWQK CnY3OgogLSBBZGQgdG9vbHN0YWNrIG1lbW9yeSByZXNlcnZhdGlvbiBmb3IgSU9NTVUgcGFnZSB0 YWJsZXMuLi4gUmUtdXNlIG9mCiAgIHNoYWRvdyBjYWxjdWxhdGlvbiBkaWRuJ3Qgc2VlbSBhcHBy b3ByaWF0ZSBzbyBhIG5ldyBoZWxwZXIgZnVuY3Rpb24gaXMKICAgYWRkZWQKCnY1OgogLSBNaW5v ciBzdHlsZSBmaXhlcwotLS0KIHRvb2xzL2xpYnhsL2xpYnhsLmggICAgICAgICAgICAgICAgICAg fCAgIDcgKysKIHRvb2xzL2xpYnhsL2xpYnhsX21lbS5jICAgICAgICAgICAgICAgfCAgIDYgKy0K IHRvb2xzL2xpYnhsL2xpYnhsX3R5cGVzLmlkbCAgICAgICAgICAgfCAgIDEgKwogdG9vbHMvbGli eGwvbGlieGxfdXRpbHMuYyAgICAgICAgICAgICB8ICAxNSArKysKIHRvb2xzL2xpYnhsL2xpYnhs X3V0aWxzLmggICAgICAgICAgICAgfCAgIDEgKwogdG9vbHMveGwveGxfcGFyc2UuYyAgICAgICAg ICAgICAgICAgICB8ICAyNCArKysrLQogeGVuL2FyY2gvYXJtL3AybS5jICAgICAgICAgICAgICAg ICAgICB8ICAgMiArLQogeGVuL2FyY2gveDg2L2RvbTBfYnVpbGQuYyAgICAgICAgICAgICB8ICAg MiArLQogeGVuL2FyY2gveDg2L2h2bS9tdHJyLmMgICAgICAgICAgICAgICB8ICAgNSArLQogeGVu L2FyY2gveDg2L21tL21lbV9zaGFyaW5nLmMgICAgICAgICB8ICAgMiArLQogeGVuL2FyY2gveDg2 L21tL3AybS5jICAgICAgICAgICAgICAgICB8ICAgNCArLQogeGVuL2FyY2gveDg2L21tL3BhZ2lu Zy5jICAgICAgICAgICAgICB8ICAgMiArLQogeGVuL2FyY2gveDg2L3g4Nl82NC9tbS5jICAgICAg ICAgICAgICB8ICAgMiArLQogeGVuL2NvbW1vbi9tZW1vcnkuYyAgICAgICAgICAgICAgICAgICB8 ICAgNCArLQogeGVuL2NvbW1vbi92bV9ldmVudC5jICAgICAgICAgICAgICAgICB8ICAgMiArLQog eGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvZGV2aWNlX3RyZWUuYyB8ICAxMSAtLS0KIHhlbi9kcml2 ZXJzL3Bhc3N0aHJvdWdoL2lvbW11LmMgICAgICAgfCAxMzQgKysrKysrLS0tLS0tLS0tLS0tLS0t LS0tLS0KIHhlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3BjaS5jICAgICAgICAgfCAgMTIgLS0tCiB4 ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC92dGQvaW9tbXUuYyAgIHwgIDEwICstCiB4ZW4vZHJpdmVy cy9wYXNzdGhyb3VnaC94ODYvaW9tbXUuYyAgIHwgIDk3IC0tLS0tLS0tLS0tLS0tLS0tLS0KIHhl bi9pbmNsdWRlL2FzbS1hcm0vaW9tbXUuaCAgICAgICAgICAgfCAgIDIgKy0KIHhlbi9pbmNsdWRl L2FzbS14ODYvaW9tbXUuaCAgICAgICAgICAgfCAgIDIgKy0KIHhlbi9pbmNsdWRlL3hlbi9pb21t dS5oICAgICAgICAgICAgICAgfCAgMTYgLS0tCiB4ZW4vaW5jbHVkZS94ZW4vc2NoZWQuaCAgICAg ICAgICAgICAgIHwgICAyIC0KIDI0IGZpbGVzIGNoYW5nZWQsIDk0IGluc2VydGlvbnMoKyksIDI3 MSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS90b29scy9saWJ4bC9saWJ4bC5oIGIvdG9vbHMv bGlieGwvbGlieGwuaAppbmRleCA4MTY5ZDQ0YmRhLi4xMjU0NTEzMGRmIDEwMDY0NAotLS0gYS90 b29scy9saWJ4bC9saWJ4bC5oCisrKyBiL3Rvb2xzL2xpYnhsL2xpYnhsLmgKQEAgLTQwOCw2ICs0 MDgsMTMgQEAKICAqLwogI2RlZmluZSBMSUJYTF9IQVZFX1BIWVNJTkZPX0NBUF9JT01NVV9IQVBf UFRfU0hBUkUgMQogCisvKgorICogTElCWExfSEFWRV9CVUlMRElORk9fSU9NTVVfTUVNS0IgaW5k aWNhdGVzIHRoYXRlIGxpYnhsX2RvbWFpbl9idWlsZF9pbmZvCisgKiBoYXMgYW4gaW9tbXVfbWVt a2IgZmllbGQgd2hpY2ggc2hvdWxkIGJlIHNldCB3aXRoIHRoZSBhbW91bnQgb2YgbWVtb3J5Cisg KiBvdmVyaGVhZCBuZWVkZWQgYnkgdGhlIGRvbWFpbiBmb3IgcG9wdWxhdGluZyBJT01NVSBwYWdl IHRhYmxlcy4KKyAqLworI2RlZmluZSBMSUJYTF9IQVZFX0JVSUxESU5GT19JT01NVV9NRU1LQiAx CisKIC8qCiAgKiBsaWJ4bCBBQkkgY29tcGF0aWJpbGl0eQogICoKZGlmZiAtLWdpdCBhL3Rvb2xz L2xpYnhsL2xpYnhsX21lbS5jIGIvdG9vbHMvbGlieGwvbGlieGxfbWVtLmMKaW5kZXggNDQ4YTJh ZjhmZC4uZmQ2ZjMzMzEyZSAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGwvbGlieGxfbWVtLmMKKysr IGIvdG9vbHMvbGlieGwvbGlieGxfbWVtLmMKQEAgLTQ2MSwxNSArNDYxLDE3IEBAIGludCBsaWJ4 bF9kb21haW5fbmVlZF9tZW1vcnkobGlieGxfY3R4ICpjdHgsCiAgICAgaWYgKHJjKSBnb3RvIG91 dDsKIAogICAgICpuZWVkX21lbWtiID0gYl9pbmZvLT50YXJnZXRfbWVta2I7CisgICAgKm5lZWRf bWVta2IgKz0gYl9pbmZvLT5zaGFkb3dfbWVta2IgKyBiX2luZm8tPmlvbW11X21lbWtiOworCiAg ICAgc3dpdGNoIChiX2luZm8tPnR5cGUpIHsKICAgICBjYXNlIExJQlhMX0RPTUFJTl9UWVBFX1BW SDoKICAgICBjYXNlIExJQlhMX0RPTUFJTl9UWVBFX0hWTToKLSAgICAgICAgKm5lZWRfbWVta2Ig Kz0gYl9pbmZvLT5zaGFkb3dfbWVta2IgKyBMSUJYTF9IVk1fRVhUUkFfTUVNT1JZOworICAgICAg ICAqbmVlZF9tZW1rYiArPSBMSUJYTF9IVk1fRVhUUkFfTUVNT1JZOwogICAgICAgICBpZiAobGli eGxfZGVmYm9vbF92YWwoYl9pbmZvLT5kZXZpY2VfbW9kZWxfc3R1YmRvbWFpbikpCiAgICAgICAg ICAgICAqbmVlZF9tZW1rYiArPSAzMiAqIDEwMjQ7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug TElCWExfRE9NQUlOX1RZUEVfUFY6Ci0gICAgICAgICpuZWVkX21lbWtiICs9IGJfaW5mby0+c2hh ZG93X21lbWtiICsgTElCWExfUFZfRVhUUkFfTUVNT1JZOworICAgICAgICAqbmVlZF9tZW1rYiAr PSBMSUJYTF9QVl9FWFRSQV9NRU1PUlk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAg ICAgICAgIHJjID0gRVJST1JfSU5WQUw7CmRpZmYgLS1naXQgYS90b29scy9saWJ4bC9saWJ4bF90 eXBlcy5pZGwgYi90b29scy9saWJ4bC9saWJ4bF90eXBlcy5pZGwKaW5kZXggNzI1M2Q2ZTBmYi4u ZDUyYzYzYjZiMCAxMDA2NDQKLS0tIGEvdG9vbHMvbGlieGwvbGlieGxfdHlwZXMuaWRsCisrKyBi L3Rvb2xzL2xpYnhsL2xpYnhsX3R5cGVzLmlkbApAQCAtNDg2LDYgKzQ4Niw3IEBAIGxpYnhsX2Rv bWFpbl9idWlsZF9pbmZvID0gU3RydWN0KCJkb21haW5fYnVpbGRfaW5mbyIsWwogICAgICgidGFy Z2V0X21lbWtiIiwgICAgTWVtS0IpLAogICAgICgidmlkZW9fbWVta2IiLCAgICAgTWVtS0IpLAog ICAgICgic2hhZG93X21lbWtiIiwgICAgTWVtS0IpLAorICAgICgiaW9tbXVfbWVta2IiLCAgICAg TWVtS0IpLAogICAgICgicnRjX3RpbWVvZmZzZXQiLCAgdWludDMyKSwKICAgICAoImV4ZWNfc3Np ZHJlZiIsICAgIHVpbnQzMiksCiAgICAgKCJleGVjX3NzaWRfbGFiZWwiLCBzdHJpbmcpLApkaWZm IC0tZ2l0IGEvdG9vbHMvbGlieGwvbGlieGxfdXRpbHMuYyBiL3Rvb2xzL2xpYnhsL2xpYnhsX3V0 aWxzLmMKaW5kZXggZjM2MGY1ZTIyOC4uNDA1NzMzYjdlMSAxMDA2NDQKLS0tIGEvdG9vbHMvbGli eGwvbGlieGxfdXRpbHMuYworKysgYi90b29scy9saWJ4bC9saWJ4bF91dGlscy5jCkBAIC00OCw2 ICs0OCwyMSBAQCB1bnNpZ25lZCBsb25nIGxpYnhsX2dldF9yZXF1aXJlZF9zaGFkb3dfbWVtb3J5 KHVuc2lnbmVkIGxvbmcgbWF4bWVtX2tiLCB1bnNpZ25lZAogICAgIHJldHVybiA0ICogKDI1NiAq IHNtcF9jcHVzICsgMiAqIChtYXhtZW1fa2IgLyAxMDI0KSk7CiB9CiAKK3Vuc2lnbmVkIGxvbmcg bGlieGxfZ2V0X3JlcXVpcmVkX2lvbW11X21lbW9yeSh1bnNpZ25lZCBsb25nIG1heG1lbV9rYikK K3sKKyAgICB1bnNpZ25lZCBsb25nIGlvbW11X3BhZ2VzID0gMCwgbWVtX3BhZ2VzID0gbWF4bWVt X2tiIC8gNDsKKyAgICB1bnNpZ25lZCBpbnQgbGV2ZWw7CisKKyAgICAvKiBBc3N1bWUgYSA0IGxl dmVsIHBhZ2UgdGFibGUgd2l0aCA1MTIgZW50cmllcyBwZXIgbGV2ZWwgKi8KKyAgICBmb3IgKGxl dmVsID0gMDsgbGV2ZWwgPCA0OyBsZXZlbCsrKQorICAgIHsKKyAgICAgICAgbWVtX3BhZ2VzID0g RElWX1JPVU5EVVAobWVtX3BhZ2VzLCA1MTIpOworICAgICAgICBpb21tdV9wYWdlcyArPSBtZW1f cGFnZXM7CisgICAgfQorCisgICAgcmV0dXJuIGlvbW11X3BhZ2VzICogNDsKK30KKwogY2hhciAq bGlieGxfZG9taWRfdG9fbmFtZShsaWJ4bF9jdHggKmN0eCwgdWludDMyX3QgZG9taWQpCiB7CiAg ICAgdW5zaWduZWQgaW50IGxlbjsKZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnhsL2xpYnhsX3V0aWxz LmggYi90b29scy9saWJ4bC9saWJ4bF91dGlscy5oCmluZGV4IDQ0NDA5YWZkYzQuLjYzMGNjYmUy OGEgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhsL2xpYnhsX3V0aWxzLmgKKysrIGIvdG9vbHMvbGli eGwvbGlieGxfdXRpbHMuaApAQCAtMjQsNiArMjQsNyBAQCBjb25zdAogY2hhciAqbGlieGxfYmFz ZW5hbWUoY29uc3QgY2hhciAqbmFtZSk7IC8qIHJldHVybnMgc3RyaW5nIGZyb20gc3RyZHVwICov CiAKIHVuc2lnbmVkIGxvbmcgbGlieGxfZ2V0X3JlcXVpcmVkX3NoYWRvd19tZW1vcnkodW5zaWdu ZWQgbG9uZyBtYXhtZW1fa2IsIHVuc2lnbmVkIGludCBzbXBfY3B1cyk7Cit1bnNpZ25lZCBsb25n IGxpYnhsX2dldF9yZXF1aXJlZF9pb21tdV9tZW1vcnkodW5zaWduZWQgbG9uZyBtYXhtZW1fa2Ip OwogaW50IGxpYnhsX25hbWVfdG9fZG9taWQobGlieGxfY3R4ICpjdHgsIGNvbnN0IGNoYXIgKm5h bWUsIHVpbnQzMl90ICpkb21pZCk7CiBpbnQgbGlieGxfZG9tYWluX3F1YWxpZmllcl90b19kb21p ZChsaWJ4bF9jdHggKmN0eCwgY29uc3QgY2hhciAqbmFtZSwgdWludDMyX3QgKmRvbWlkKTsKIGNo YXIgKmxpYnhsX2RvbWlkX3RvX25hbWUobGlieGxfY3R4ICpjdHgsIHVpbnQzMl90IGRvbWlkKTsK ZGlmZiAtLWdpdCBhL3Rvb2xzL3hsL3hsX3BhcnNlLmMgYi90b29scy94bC94bF9wYXJzZS5jCmlu ZGV4IGUxMDViZGEyYmIuLjI5M2Y1ZjczMGUgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3hsL3hsX3BhcnNl LmMKKysrIGIvdG9vbHMveGwveGxfcGFyc2UuYwpAQCAtMTIwNyw2ICsxMjA3LDcgQEAgdm9pZCBw YXJzZV9jb25maWdfZGF0YShjb25zdCBjaGFyICpjb25maWdfc291cmNlLAogICAgICAgICAgICAg ICAgICAgICAgICBpbnQgY29uZmlnX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxf ZG9tYWluX2NvbmZpZyAqZF9jb25maWcpCiB7CisgICAgbGlieGxfcGh5c2luZm8gcGh5c2luZm87 CiAgICAgY29uc3QgY2hhciAqYnVmOwogICAgIGxvbmcgbCwgdmNwdXMgPSAwOwogICAgIFhMVV9D b25maWcgKmNvbmZpZzsKQEAgLTEyMjEsMTAgKzEyMjIsMjIgQEAgdm9pZCBwYXJzZV9jb25maWdf ZGF0YShjb25zdCBjaGFyICpjb25maWdfc291cmNlLAogICAgIGludCBwY2lfc2VpemUgPSAwOwog ICAgIGludCBpLCBlOwogICAgIGNoYXIgKmtlcm5lbF9iYXNlbmFtZTsKKyAgICBib29sIGlvbW11 X2VuYWJsZWQsIGlvbW11X2hhcF9wdF9zaGFyZTsKIAogICAgIGxpYnhsX2RvbWFpbl9jcmVhdGVf aW5mbyAqY19pbmZvID0gJmRfY29uZmlnLT5jX2luZm87CiAgICAgbGlieGxfZG9tYWluX2J1aWxk X2luZm8gKmJfaW5mbyA9ICZkX2NvbmZpZy0+Yl9pbmZvOwogCisgICAgbGlieGxfcGh5c2luZm9f aW5pdCgmcGh5c2luZm8pOworICAgIGlmIChsaWJ4bF9nZXRfcGh5c2luZm8oY3R4LCAmcGh5c2lu Zm8pICE9IDApIHsKKyAgICAgICAgbGlieGxfcGh5c2luZm9fZGlzcG9zZSgmcGh5c2luZm8pOwor ICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImxpYnhsX2dldF9waHlzaW5mbyBmYWlsZWRcbiIpOwor ICAgICAgICBleGl0KEVYSVRfRkFJTFVSRSk7CisgICAgfQorCisgICAgaW9tbXVfZW5hYmxlZCA9 IHBoeXNpbmZvLmNhcF9odm1fZGlyZWN0aW87CisgICAgaW9tbXVfaGFwX3B0X3NoYXJlID0gcGh5 c2luZm8uY2FwX2lvbW11X2hhcF9wdF9zaGFyZTsKKyAgICBsaWJ4bF9waHlzaW5mb19kaXNwb3Nl KCZwaHlzaW5mbyk7CisKICAgICBjb25maWc9IHhsdV9jZmdfaW5pdChzdGRlcnIsIGNvbmZpZ19z b3VyY2UpOwogICAgIGlmICghY29uZmlnKSB7CiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiRmFp bGVkIHRvIGFsbG9jYXRlIGZvciBjb25maWd1cmF0aW9uXG4iKTsKQEAgLTE0NDgsMTQgKzE0NjEs MjEgQEAgdm9pZCBwYXJzZV9jb25maWdfZGF0YShjb25zdCBjaGFyICpjb25maWdfc291cmNlLAog ICAgICAgICBleGl0KDEpOwogICAgIH0KIAotICAgIC8qIGxpYnhsX2dldF9yZXF1aXJlZF9zaGFk b3dfbWVtb3J5KCkgbXVzdCBiZSBjYWxsZWQgYWZ0ZXIgZmluYWwgdmFsdWVzCisgICAgLyogbGli eGxfZ2V0X3JlcXVpcmVkX3NoYWRvd19tZW1vcnkoKSBhbmQKKyAgICAgKiBsaWJ4bF9nZXRfcmVx dWlyZWRfaW9tbXVfbWVtb3J5KCkgbXVzdCBiZSBjYWxsZWQgYWZ0ZXIgZmluYWwgdmFsdWVzCiAg ICAgICogKGRlZmF1bHQgb3Igc3BlY2lmaWVkKSBmb3IgdmNwdXMgYW5kIG1lbW9yeSBhcmUgc2V0 LCBiZWNhdXNlIHRoZQotICAgICAqIGNhbGN1bGF0aW9uIGRlcGVuZHMgb24gdGhvc2UgdmFsdWVz LiAqLworICAgICAqIGNhbGN1bGF0aW9ucyBkZXBlbmQgb24gdGhvc2UgdmFsdWVzLiAqLwogICAg IGJfaW5mby0+c2hhZG93X21lbWtiID0gIXhsdV9jZmdfZ2V0X2xvbmcoY29uZmlnLCAic2hhZG93 X21lbW9yeSIsICZsLCAwKQogICAgICAgICA/IGwgKiAxMDI0CiAgICAgICAgIDogbGlieGxfZ2V0 X3JlcXVpcmVkX3NoYWRvd19tZW1vcnkoYl9pbmZvLT5tYXhfbWVta2IsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYl9pbmZvLT5tYXhfdmNwdXMpOwogCisgICAg LyogTm8gSU9NTVUgcmVzZXJ2YXRpb24gaXMgbmVlZGVkIGlmIGVpdGhlciB0aGUgSU9NTVUgaXMg ZGlzYWJsZWQgb3IgaXQKKyAgICAgKiBjYW4gc2hhcmUgdGhlIFAyTS4gKi8KKyAgICBiX2luZm8t PmlvbW11X21lbWtiID0gKCFpb21tdV9lbmFibGVkIHx8IGlvbW11X2hhcF9wdF9zaGFyZSkKKyAg ICAgICAgPyAwCisgICAgICAgIDogbGlieGxfZ2V0X3JlcXVpcmVkX2lvbW11X21lbW9yeShiX2lu Zm8tPm1heF9tZW1rYik7CisKICAgICB4bHVfY2ZnX2dldF9kZWZib29sKGNvbmZpZywgIm5vbWln cmF0ZSIsICZiX2luZm8tPmRpc2FibGVfbWlncmF0ZSwgMCk7CiAKICAgICBpZiAoIXhsdV9jZmdf Z2V0X2xvbmcoY29uZmlnLCAidHNjX21vZGUiLCAmbCwgMSkpIHsKZGlmZiAtLWdpdCBhL3hlbi9h cmNoL2FybS9wMm0uYyBiL3hlbi9hcmNoL2FybS9wMm0uYwppbmRleCA3ZjE0NDI5MzJhLi42OTI1 NjU3NTdlIDEwMDY0NAotLS0gYS94ZW4vYXJjaC9hcm0vcDJtLmMKKysrIGIveGVuL2FyY2gvYXJt L3AybS5jCkBAIC0xMDU2LDcgKzEwNTYsNyBAQCBzdGF0aWMgaW50IF9fcDJtX3NldF9lbnRyeShz dHJ1Y3QgcDJtX2RvbWFpbiAqcDJtLAogICAgICAgICAgIW1mbl9lcShscGFlX2dldF9tZm4oKmVu dHJ5KSwgbHBhZV9nZXRfbWZuKG9yaWdfcHRlKSkgKQogICAgICAgICBwMm1fZnJlZV9lbnRyeShw Mm0sIG9yaWdfcHRlLCBsZXZlbCk7CiAKLSAgICBpZiAoIGhhc19pb21tdV9wdChwMm0tPmRvbWFp bikgJiYKKyAgICBpZiAoIGlzX2lvbW11X2VuYWJsZWQocDJtLT5kb21haW4pICYmCiAgICAgICAg ICAobHBhZV9pc192YWxpZChvcmlnX3B0ZSkgfHwgbHBhZV9pc192YWxpZCgqZW50cnkpKSApCiAg ICAgewogICAgICAgICB1bnNpZ25lZCBpbnQgZmx1c2hfZmxhZ3MgPSAwOwpkaWZmIC0tZ2l0IGEv eGVuL2FyY2gveDg2L2RvbTBfYnVpbGQuYyBiL3hlbi9hcmNoL3g4Ni9kb20wX2J1aWxkLmMKaW5k ZXggZDM4MTc4NGVkZC4uN2NmYWIyZGMyNSAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2RvbTBf YnVpbGQuYworKysgYi94ZW4vYXJjaC94ODYvZG9tMF9idWlsZC5jCkBAIC0zNjUsNyArMzY1LDcg QEAgdW5zaWduZWQgbG9uZyBfX2luaXQgZG9tMF9jb21wdXRlX25yX3BhZ2VzKAogICAgIH0KIAog ICAgIG5lZWRfcGFnaW5nID0gaXNfaHZtX2RvbWFpbihkKSAmJgotICAgICAgICAoIWlvbW11X2hh cF9wdF9zaGFyZSB8fCAhcGFnaW5nX21vZGVfaGFwKGQpKTsKKyAgICAgICAgKCFpb21tdV91c2Vf aGFwX3B0KGQpIHx8ICFwYWdpbmdfbW9kZV9oYXAoZCkpOwogICAgIGZvciAoIDsgOyBuZWVkX3Bh Z2luZyA9IGZhbHNlICkKICAgICB7CiAgICAgICAgIG5yX3BhZ2VzID0gZ2V0X21lbXNpemUoJmRv bTBfc2l6ZSwgYXZhaWwpOwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2h2bS9tdHJyLmMgYi94 ZW4vYXJjaC94ODYvaHZtL210cnIuYwppbmRleCA3Y2NkODViY2VhLi41YWQxNWVhZmUwIDEwMDY0 NAotLS0gYS94ZW4vYXJjaC94ODYvaHZtL210cnIuYworKysgYi94ZW4vYXJjaC94ODYvaHZtL210 cnIuYwpAQCAtNzgzLDcgKzc4Myw4IEBAIEhWTV9SRUdJU1RFUl9TQVZFX1JFU1RPUkUoTVRSUiwg aHZtX3NhdmVfbXRycl9tc3IsIGh2bV9sb2FkX210cnJfbXNyLCAxLAogCiB2b2lkIG1lbW9yeV90 eXBlX2NoYW5nZWQoc3RydWN0IGRvbWFpbiAqZCkKIHsKLSAgICBpZiAoIChoYXNfaW9tbXVfcHQo ZCkgfHwgY2FjaGVfZmx1c2hfcGVybWl0dGVkKGQpKSAmJiBkLT52Y3B1ICYmIGQtPnZjcHVbMF0g KQorICAgIGlmICggKGlzX2lvbW11X2VuYWJsZWQoZCkgfHwgY2FjaGVfZmx1c2hfcGVybWl0dGVk KGQpKSAmJgorICAgICAgICAgZC0+dmNwdSAmJiBkLT52Y3B1WzBdICkKICAgICB7CiAgICAgICAg IHAybV9tZW1vcnlfdHlwZV9jaGFuZ2VkKGQpOwogICAgICAgICBmbHVzaF9hbGwoRkxVU0hfQ0FD SEUpOwpAQCAtODMxLDcgKzgzMiw3IEBAIGludCBlcHRlX2dldF9lbnRyeV9lbXQoc3RydWN0IGRv bWFpbiAqZCwgdW5zaWduZWQgbG9uZyBnZm4sIG1mbl90IG1mbiwKICAgICAgICAgcmV0dXJuIE1U UlJfVFlQRV9VTkNBQ0hBQkxFOwogICAgIH0KIAotICAgIGlmICggIWhhc19pb21tdV9wdChkKSAm JiAhY2FjaGVfZmx1c2hfcGVybWl0dGVkKGQpICkKKyAgICBpZiAoICFpc19pb21tdV9lbmFibGVk KGQpICYmICFjYWNoZV9mbHVzaF9wZXJtaXR0ZWQoZCkgKQogICAgIHsKICAgICAgICAgKmlwYXQg PSAxOwogICAgICAgICByZXR1cm4gTVRSUl9UWVBFX1dSQkFDSzsKZGlmZiAtLWdpdCBhL3hlbi9h cmNoL3g4Ni9tbS9tZW1fc2hhcmluZy5jIGIveGVuL2FyY2gveDg2L21tL21lbV9zaGFyaW5nLmMK aW5kZXggYTVmZTg5ZTMzOS4uZWZiODgyMTc2OCAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L21t L21lbV9zaGFyaW5nLmMKKysrIGIveGVuL2FyY2gveDg2L21tL21lbV9zaGFyaW5nLmMKQEAgLTE2 NjQsNyArMTY2NCw3IEBAIGludCBtZW1fc2hhcmluZ19kb21jdGwoc3RydWN0IGRvbWFpbiAqZCwg c3RydWN0IHhlbl9kb21jdGxfbWVtX3NoYXJpbmdfb3AgKm1lYykKICAgICAgICAgY2FzZSBYRU5f RE9NQ1RMX01FTV9TSEFSSU5HX0NPTlRST0w6CiAgICAgICAgIHsKICAgICAgICAgICAgIHJjID0g MDsKLSAgICAgICAgICAgIGlmICggdW5saWtlbHkoaGFzX2lvbW11X3B0KGQpICYmIG1lYy0+dS5l bmFibGUpICkKKyAgICAgICAgICAgIGlmICggdW5saWtlbHkoaXNfaW9tbXVfZW5hYmxlZChkKSAm JiBtZWMtPnUuZW5hYmxlKSApCiAgICAgICAgICAgICAgICAgcmMgPSAtRVhERVY7CiAgICAgICAg ICAgICBlbHNlCiAgICAgICAgICAgICAgICAgZC0+YXJjaC5odm0ubWVtX3NoYXJpbmdfZW5hYmxl ZCA9IG1lYy0+dS5lbmFibGU7CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvbW0vcDJtLmMgYi94 ZW4vYXJjaC94ODYvbW0vcDJtLmMKaW5kZXggOGE1MjI5ZWUyMS4uZTVlNDM0OWRlYSAxMDA2NDQK LS0tIGEveGVuL2FyY2gveDg2L21tL3AybS5jCisrKyBiL3hlbi9hcmNoL3g4Ni9tbS9wMm0uYwpA QCAtMTM0MSw3ICsxMzQxLDcgQEAgaW50IHNldF9pZGVudGl0eV9wMm1fZW50cnkoc3RydWN0IGRv bWFpbiAqZCwgdW5zaWduZWQgbG9uZyBnZm5fbCwKIAogICAgIGlmICggIXBhZ2luZ19tb2RlX3Ry YW5zbGF0ZShwMm0tPmRvbWFpbikgKQogICAgIHsKLSAgICAgICAgaWYgKCAhaGFzX2lvbW11X3B0 KGQpICkKKyAgICAgICAgaWYgKCAhaXNfaW9tbXVfZW5hYmxlZChkKSApCiAgICAgICAgICAgICBy ZXR1cm4gMDsKICAgICAgICAgcmV0dXJuIGlvbW11X2xlZ2FjeV9tYXAoZCwgX2RmbihnZm5fbCks IF9tZm4oZ2ZuX2wpLCBQQUdFX09SREVSXzRLLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBJT01NVUZfcmVhZGFibGUgfCBJT01NVUZfd3JpdGFibGUpOwpAQCAtMTQzMiw3ICsxNDMy LDcgQEAgaW50IGNsZWFyX2lkZW50aXR5X3AybV9lbnRyeShzdHJ1Y3QgZG9tYWluICpkLCB1bnNp Z25lZCBsb25nIGdmbl9sKQogCiAgICAgaWYgKCAhcGFnaW5nX21vZGVfdHJhbnNsYXRlKGQpICkK ICAgICB7Ci0gICAgICAgIGlmICggIWhhc19pb21tdV9wdChkKSApCisgICAgICAgIGlmICggIWlz X2lvbW11X2VuYWJsZWQoZCkgKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIHJldHVy biBpb21tdV9sZWdhY3lfdW5tYXAoZCwgX2RmbihnZm5fbCksIFBBR0VfT1JERVJfNEspOwogICAg IH0KZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9tbS9wYWdpbmcuYyBiL3hlbi9hcmNoL3g4Ni9t bS9wYWdpbmcuYwppbmRleCA2OWFhMjI4ZTQ2Li5kOWE1MmM0ZGI0IDEwMDY0NAotLS0gYS94ZW4v YXJjaC94ODYvbW0vcGFnaW5nLmMKKysrIGIveGVuL2FyY2gveDg2L21tL3BhZ2luZy5jCkBAIC0y MTMsNyArMjEzLDcgQEAgaW50IHBhZ2luZ19sb2dfZGlydHlfZW5hYmxlKHN0cnVjdCBkb21haW4g KmQsIGJvb2xfdCBsb2dfZ2xvYmFsKQogewogICAgIGludCByZXQ7CiAKLSAgICBpZiAoIGhhc19p b21tdV9wdChkKSAmJiBsb2dfZ2xvYmFsICkKKyAgICBpZiAoIGlzX2lvbW11X2VuYWJsZWQoZCkg JiYgbG9nX2dsb2JhbCApCiAgICAgewogICAgICAgICAvKgogICAgICAgICAgKiBSZWZ1c2UgdG8g dHVybiBvbiBnbG9iYWwgbG9nLWRpcnR5IG1vZGUKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni94 ODZfNjQvbW0uYyBiL3hlbi9hcmNoL3g4Ni94ODZfNjQvbW0uYwppbmRleCA3OTVhNDY3NDYyLi5m YTU1ZjM0NzRlIDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYveDg2XzY0L21tLmMKKysrIGIveGVu L2FyY2gveDg2L3g4Nl82NC9tbS5jCkBAIC0xNDM0LDcgKzE0MzQsNyBAQCBpbnQgbWVtb3J5X2Fk ZCh1bnNpZ25lZCBsb25nIHNwZm4sIHVuc2lnbmVkIGxvbmcgZXBmbiwgdW5zaWduZWQgaW50IHB4 bSkKICAgICAgKiBzaGFyZWQgb3IgYmVpbmcga2VwdCBpbiBzeW5jIHRoZW4gbmV3bHkgYWRkZWQg bWVtb3J5IG5lZWRzIHRvIGJlCiAgICAgICogbWFwcGVkIGhlcmUuCiAgICAgICovCi0gICAgaWYg KCBoYXNfaW9tbXVfcHQoaGFyZHdhcmVfZG9tYWluKSAmJgorICAgIGlmICggaXNfaW9tbXVfZW5h YmxlZChoYXJkd2FyZV9kb21haW4pICYmCiAgICAgICAgICAhaW9tbXVfdXNlX2hhcF9wdChoYXJk d2FyZV9kb21haW4pICYmCiAgICAgICAgICAhbmVlZF9pb21tdV9wdF9zeW5jKGhhcmR3YXJlX2Rv bWFpbikgKQogICAgIHsKZGlmZiAtLWdpdCBhL3hlbi9jb21tb24vbWVtb3J5LmMgYi94ZW4vY29t bW9uL21lbW9yeS5jCmluZGV4IGQ1YWZmODNmMmQuLjczNjRmZDJjMzMgMTAwNjQ0Ci0tLSBhL3hl bi9jb21tb24vbWVtb3J5LmMKKysrIGIveGVuL2NvbW1vbi9tZW1vcnkuYwpAQCAtODIzLDcgKzgy Myw3IEBAIGludCB4ZW5tZW1fYWRkX3RvX3BoeXNtYXAoc3RydWN0IGRvbWFpbiAqZCwgc3RydWN0 IHhlbl9hZGRfdG9fcGh5c21hcCAqeGF0cCwKICAgICB4YXRwLT5ncGZuICs9IHN0YXJ0OwogICAg IHhhdHAtPnNpemUgLT0gc3RhcnQ7CiAKLSAgICBpZiAoIGhhc19pb21tdV9wdChkKSApCisgICAg aWYgKCBpc19pb21tdV9lbmFibGVkKGQpICkKICAgICAgICB0aGlzX2NwdShpb21tdV9kb250X2Zs dXNoX2lvdGxiKSA9IDE7CiAKICAgICB3aGlsZSAoIHhhdHAtPnNpemUgPiBkb25lICkKQEAgLTg0 NCw3ICs4NDQsNyBAQCBpbnQgeGVubWVtX2FkZF90b19waHlzbWFwKHN0cnVjdCBkb21haW4gKmQs IHN0cnVjdCB4ZW5fYWRkX3RvX3BoeXNtYXAgKnhhdHAsCiAgICAgICAgIH0KICAgICB9CiAKLSAg ICBpZiAoIGhhc19pb21tdV9wdChkKSApCisgICAgaWYgKCBpc19pb21tdV9lbmFibGVkKGQpICkK ICAgICB7CiAgICAgICAgIGludCByZXQ7CiAKZGlmZiAtLWdpdCBhL3hlbi9jb21tb24vdm1fZXZl bnQuYyBiL3hlbi9jb21tb24vdm1fZXZlbnQuYwppbmRleCAyYTFjODdlNDRiLi4zYjE4MTk1ZWJm IDEwMDY0NAotLS0gYS94ZW4vY29tbW9uL3ZtX2V2ZW50LmMKKysrIGIveGVuL2NvbW1vbi92bV9l dmVudC5jCkBAIC02MzAsNyArNjMwLDcgQEAgaW50IHZtX2V2ZW50X2RvbWN0bChzdHJ1Y3QgZG9t YWluICpkLCBzdHJ1Y3QgeGVuX2RvbWN0bF92bV9ldmVudF9vcCAqdmVjKQogCiAgICAgICAgICAg ICAvKiBObyBwYWdpbmcgaWYgaW9tbXUgaXMgdXNlZCAqLwogICAgICAgICAgICAgcmMgPSAtRU1M SU5LOwotICAgICAgICAgICAgaWYgKCB1bmxpa2VseShoYXNfaW9tbXVfcHQoZCkpICkKKyAgICAg ICAgICAgIGlmICggdW5saWtlbHkoaXNfaW9tbXVfZW5hYmxlZChkKSkgKQogICAgICAgICAgICAg ICAgIGJyZWFrOwogCiAgICAgICAgICAgICByYyA9IC1FWERFVjsKZGlmZiAtLWdpdCBhL3hlbi9k cml2ZXJzL3Bhc3N0aHJvdWdoL2RldmljZV90cmVlLmMgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3Vn aC9kZXZpY2VfdHJlZS5jCmluZGV4IDEyZjJjNGMzZjIuLmVhOWZkNTRlM2IgMTAwNjQ0Ci0tLSBh L3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2RldmljZV90cmVlLmMKKysrIGIveGVuL2RyaXZlcnMv cGFzc3Rocm91Z2gvZGV2aWNlX3RyZWUuYwpAQCAtNDAsMTcgKzQwLDYgQEAgaW50IGlvbW11X2Fz c2lnbl9kdF9kZXZpY2Uoc3RydWN0IGRvbWFpbiAqZCwgc3RydWN0IGR0X2RldmljZV9ub2RlICpk ZXYpCiAgICAgaWYgKCAhbGlzdF9lbXB0eSgmZGV2LT5kb21haW5fbGlzdCkgKQogICAgICAgICBn b3RvIGZhaWw7CiAKLSAgICAvKgotICAgICAqIFRoZSBod2RvbSBpcyBmb3JjZWQgdG8gdXNlIElP TU1VIGZvciBwcm90ZWN0aW5nIGFzc2lnbmVkCi0gICAgICogZGV2aWNlLiBUaGVyZWZvcmUgdGhl IElPTU1VIGRhdGEgaXMgYWxyZWFkeSBzZXQgdXAuCi0gICAgICovCi0gICAgQVNTRVJUKCFpc19o YXJkd2FyZV9kb21haW4oZCkgfHwKLSAgICAgICAgICAgaGQtPnN0YXR1cyA9PSBJT01NVV9TVEFU VVNfaW5pdGlhbGl6ZWQpOwotCi0gICAgcmMgPSBpb21tdV9jb25zdHJ1Y3QoZCk7Ci0gICAgaWYg KCByYyApCi0gICAgICAgIGdvdG8gZmFpbDsKLQogICAgIC8qIFRoZSBmbGFnIGZpZWxkIGRvZXNu J3QgbWF0dGVyIHRvIERUIGRldmljZS4gKi8KICAgICByYyA9IGhkLT5wbGF0Zm9ybV9vcHMtPmFz c2lnbl9kZXZpY2UoZCwgMCwgZHRfdG9fZGV2KGRldiksIDApOwogCmRpZmYgLS1naXQgYS94ZW4v ZHJpdmVycy9wYXNzdGhyb3VnaC9pb21tdS5jIGIveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvaW9t bXUuYwppbmRleCAxMWVjZTRkMWYzLi43MWYxN2U3ZWRjIDEwMDY0NAotLS0gYS94ZW4vZHJpdmVy cy9wYXNzdGhyb3VnaC9pb21tdS5jCisrKyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL2lvbW11 LmMKQEAgLTE1Miw2ICsxNTIsMTcgQEAgc3RhdGljIGludCBfX2luaXQgcGFyc2VfZG9tMF9pb21t dV9wYXJhbShjb25zdCBjaGFyICpzKQogfQogY3VzdG9tX3BhcmFtKCJkb20wLWlvbW11IiwgcGFy c2VfZG9tMF9pb21tdV9wYXJhbSk7CiAKK3N0YXRpYyB2b2lkIF9faHdkb21faW5pdCBjaGVja19o d2RvbV9yZXFzKHN0cnVjdCBkb21haW4gKmQpCit7CisgICAgaWYgKCBpb21tdV9od2RvbV9ub25l IHx8ICFwYWdpbmdfbW9kZV90cmFuc2xhdGUoZCkgKQorICAgICAgICByZXR1cm47CisKKyAgICBh cmNoX2lvbW11X2NoZWNrX2F1dG90cmFuc2xhdGVkX2h3ZG9tKGQpOworCisgICAgaW9tbXVfaHdk b21fcGFzc3Rocm91Z2ggPSBmYWxzZTsKKyAgICBpb21tdV9od2RvbV9zdHJpY3QgPSB0cnVlOwor fQorCiBpbnQgaW9tbXVfZG9tYWluX2luaXQoc3RydWN0IGRvbWFpbiAqZCkKIHsKICAgICBzdHJ1 Y3QgZG9tYWluX2lvbW11ICpoZCA9IGRvbV9pb21tdShkKTsKQEAgLTE2OSwxMjkgKzE4MCw0NCBA QCBpbnQgaW9tbXVfZG9tYWluX2luaXQoc3RydWN0IGRvbWFpbiAqZCkKICAgICAgICAgcmV0dXJu IHJldDsKIAogICAgIGhkLT5wbGF0Zm9ybV9vcHMgPSBpb21tdV9nZXRfb3BzKCk7Ci0gICAgcmV0 dXJuIGhkLT5wbGF0Zm9ybV9vcHMtPmluaXQoZCk7Ci19CisgICAgcmV0ID0gaGQtPnBsYXRmb3Jt X29wcy0+aW5pdChkKTsKKyAgICBpZiAoIHJldCApCisgICAgICAgIHJldHVybiByZXQ7CiAKLXN0 YXRpYyB2b2lkIF9faHdkb21faW5pdCBjaGVja19od2RvbV9yZXFzKHN0cnVjdCBkb21haW4gKmQp Ci17Ci0gICAgaWYgKCBpb21tdV9od2RvbV9ub25lIHx8ICFwYWdpbmdfbW9kZV90cmFuc2xhdGUo ZCkgKQotICAgICAgICByZXR1cm47CisgICAgaWYgKCBpc19oYXJkd2FyZV9kb21haW4oZCkgKQor ICAgICAgICBjaGVja19od2RvbV9yZXFzKGQpOyAvKiBtYXkgbW9kaWZ5IGlvbW11X2h3ZG9tX3N0 cmljdCAqLwogCi0gICAgYXJjaF9pb21tdV9jaGVja19hdXRvdHJhbnNsYXRlZF9od2RvbShkKTsK KyAgICAvKgorICAgICAqIE5COiAncmVsYXhlZCcgaC93IGRvbWFpbnMgZG9uJ3QgbmVlZCB0aGUg SU9NTVUgbWFwcGluZ3MgdG8gYmUga2VwdAorICAgICAqICAgICBpbi1zeW5jIHdpdGggdGhlaXIg YXNzaWduZWQgcGFnZXMgYmVjYXVzZSBhbGwgaG9zdCBSQU0gd2lsbCBiZQorICAgICAqICAgICBt YXBwZWQgZHVyaW5nIGh3ZG9tX2luaXQoKS4KKyAgICAgKi8KKyAgICBpZiAoICFpc19oYXJkd2Fy ZV9kb21haW4oZCkgfHwgaW9tbXVfaHdkb21fc3RyaWN0ICkKKyAgICAgICAgaGQtPm5lZWRfc3lu YyA9ICFpb21tdV91c2VfaGFwX3B0KGQpOwogCi0gICAgaW9tbXVfaHdkb21fcGFzc3Rocm91Z2gg PSBmYWxzZTsKLSAgICBpb21tdV9od2RvbV9zdHJpY3QgPSB0cnVlOworICAgIHJldHVybiAwOwog fQogCiB2b2lkIF9faHdkb21faW5pdCBpb21tdV9od2RvbV9pbml0KHN0cnVjdCBkb21haW4gKmQp CiB7CiAgICAgc3RydWN0IGRvbWFpbl9pb21tdSAqaGQgPSBkb21faW9tbXUoZCk7CiAKLSAgICBj aGVja19od2RvbV9yZXFzKGQpOwotCiAgICAgaWYgKCAhaXNfaW9tbXVfZW5hYmxlZChkKSApCiAg ICAgICAgIHJldHVybjsKIAogICAgIHJlZ2lzdGVyX2tleWhhbmRsZXIoJ28nLCAmaW9tbXVfZHVt cF9wMm1fdGFibGUsICJkdW1wIGlvbW11IHAybSB0YWJsZSIsIDApOwogCi0gICAgaGQtPnN0YXR1 cyA9IElPTU1VX1NUQVRVU19pbml0aWFsaXppbmc7Ci0gICAgLyoKLSAgICAgKiBOQjogcmVsYXhl ZCBodyBkb21haW5zIGRvbid0IG5lZWQgc3luYyBiZWNhdXNlIGFsbCByYW0gaXMgYWxyZWFkeQot ICAgICAqIG1hcHBlZCBpbiB0aGUgaW9tbXUgcGFnZSB0YWJsZXMuCi0gICAgICovCi0gICAgaGQt Pm5lZWRfc3luYyA9IGlvbW11X2h3ZG9tX3N0cmljdCAmJiAhaW9tbXVfdXNlX2hhcF9wdChkKTsK LSAgICBpZiAoIG5lZWRfaW9tbXVfcHRfc3luYyhkKSApCi0gICAgewotICAgICAgICBzdHJ1Y3Qg cGFnZV9pbmZvICpwYWdlOwotICAgICAgICB1bnNpZ25lZCBpbnQgaSA9IDAsIGZsdXNoX2ZsYWdz ID0gMDsKLSAgICAgICAgaW50IHJjID0gMDsKLQotICAgICAgICBwYWdlX2xpc3RfZm9yX2VhY2gg KCBwYWdlLCAmZC0+cGFnZV9saXN0ICkKLSAgICAgICAgewotICAgICAgICAgICAgdW5zaWduZWQg bG9uZyBtZm4gPSBtZm5feChwYWdlX3RvX21mbihwYWdlKSk7Ci0gICAgICAgICAgICB1bnNpZ25l ZCBsb25nIGRmbiA9IG1mbl90b19nbWZuKGQsIG1mbik7Ci0gICAgICAgICAgICB1bnNpZ25lZCBp bnQgbWFwcGluZyA9IElPTU1VRl9yZWFkYWJsZTsKLSAgICAgICAgICAgIGludCByZXQ7Ci0KLSAg ICAgICAgICAgIGlmICggKChwYWdlLT51LmludXNlLnR5cGVfaW5mbyAmIFBHVF9jb3VudF9tYXNr KSA9PSAwKSB8fAotICAgICAgICAgICAgICAgICAoKHBhZ2UtPnUuaW51c2UudHlwZV9pbmZvICYg UEdUX3R5cGVfbWFzaykKLSAgICAgICAgICAgICAgICAgID09IFBHVF93cml0YWJsZV9wYWdlKSAp Ci0gICAgICAgICAgICAgICAgbWFwcGluZyB8PSBJT01NVUZfd3JpdGFibGU7Ci0KLSAgICAgICAg ICAgIHJldCA9IGlvbW11X21hcChkLCBfZGZuKGRmbiksIF9tZm4obWZuKSwgMCwgbWFwcGluZywK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZmx1c2hfZmxhZ3MpOwotCi0gICAgICAgICAg ICBpZiAoICFyYyApCi0gICAgICAgICAgICAgICAgcmMgPSByZXQ7Ci0KLSAgICAgICAgICAgIGlm ICggIShpKysgJiAweGZmZmZmKSApCi0gICAgICAgICAgICAgICAgcHJvY2Vzc19wZW5kaW5nX3Nv ZnRpcnFzKCk7Ci0gICAgICAgIH0KLQotICAgICAgICAvKiBVc2Ugd2hpbGUtYnJlYWsgdG8gYXZv aWQgY29tcGlsZXIgd2FybmluZyAqLwotICAgICAgICB3aGlsZSAoIGlvbW11X2lvdGxiX2ZsdXNo X2FsbChkLCBmbHVzaF9mbGFncykgKQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgaWYg KCByYyApCi0gICAgICAgICAgICBwcmludGsoWEVOTE9HX1dBUk5JTkcgImQlZDogSU9NTVUgbWFw cGluZyBmYWlsZWQ6ICVkXG4iLAotICAgICAgICAgICAgICAgICAgIGQtPmRvbWFpbl9pZCwgcmMp OwotICAgIH0KLQogICAgIGhkLT5wbGF0Zm9ybV9vcHMtPmh3ZG9tX2luaXQoZCk7Ci0KLSAgICBo ZC0+c3RhdHVzID0gSU9NTVVfU1RBVFVTX2luaXRpYWxpemVkOwogfQogCi12b2lkIGlvbW11X3Rl YXJkb3duKHN0cnVjdCBkb21haW4gKmQpCitzdGF0aWMgdm9pZCBpb21tdV90ZWFyZG93bihzdHJ1 Y3QgZG9tYWluICpkKQogewogICAgIHN0cnVjdCBkb21haW5faW9tbXUgKmhkID0gZG9tX2lvbW11 KGQpOwogCi0gICAgaGQtPnN0YXR1cyA9IElPTU1VX1NUQVRVU19kaXNhYmxlZDsKICAgICBoZC0+ cGxhdGZvcm1fb3BzLT50ZWFyZG93bihkKTsKICAgICB0YXNrbGV0X3NjaGVkdWxlKCZpb21tdV9w dF9jbGVhbnVwX3Rhc2tsZXQpOwogfQogCi1pbnQgaW9tbXVfY29uc3RydWN0KHN0cnVjdCBkb21h aW4gKmQpCi17Ci0gICAgc3RydWN0IGRvbWFpbl9pb21tdSAqaGQgPSBkb21faW9tbXUoZCk7Ci0K LSAgICBpZiAoIGhkLT5zdGF0dXMgPT0gSU9NTVVfU1RBVFVTX2luaXRpYWxpemVkICkKLSAgICAg ICAgcmV0dXJuIDA7Ci0KLSAgICBoZC0+c3RhdHVzID0gSU9NTVVfU1RBVFVTX2luaXRpYWxpemlu ZzsKLQotICAgIGlmICggIWlvbW11X3VzZV9oYXBfcHQoZCkgKQotICAgIHsKLSAgICAgICAgaW50 IHJjOwotCi0gICAgICAgIGhkLT5uZWVkX3N5bmMgPSB0cnVlOwotCi0gICAgICAgIHJjID0gYXJj aF9pb21tdV9wb3B1bGF0ZV9wYWdlX3RhYmxlKGQpOwotICAgICAgICBpZiAoIHJjICkKLSAgICAg ICAgewotICAgICAgICAgICAgaWYgKCByYyAhPSAtRVJFU1RBUlQgKQotICAgICAgICAgICAgewot ICAgICAgICAgICAgICAgIGhkLT5uZWVkX3N5bmMgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICBo ZC0+c3RhdHVzID0gSU9NTVVfU1RBVFVTX2Rpc2FibGVkOwotICAgICAgICAgICAgfQotCi0gICAg ICAgICAgICByZXR1cm4gcmM7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBoZC0+c3RhdHVzID0g SU9NTVVfU1RBVFVTX2luaXRpYWxpemVkOwotCi0gICAgLyoKLSAgICAgKiBUaGVyZSBtYXkgYmUg ZGlydHkgY2FjaGUgbGluZXMgd2hlbiBhIGRldmljZSBpcyBhc3NpZ25lZAotICAgICAqIGFuZCBi ZWZvcmUgaGFzX2lvbW11X3B0KGQpIGJlY29taW5nIHRydWUsIHRoaXMgd2lsbCBjYXVzZQotICAg ICAqIG1lbW9yeV90eXBlX2NoYW5nZWQgbG9zZSBlZmZlY3QgaWYgbWVtb3J5IHR5cGUgY2hhbmdl cy4KLSAgICAgKiBDYWxsIG1lbW9yeV90eXBlX2NoYW5nZWQgaGVyZSB0byBhbWVuZCB0aGlzLgot ICAgICAqLwotICAgIG1lbW9yeV90eXBlX2NoYW5nZWQoZCk7Ci0KLSAgICByZXR1cm4gMDsKLX0K LQogdm9pZCBpb21tdV9kb21haW5fZGVzdHJveShzdHJ1Y3QgZG9tYWluICpkKQogewogICAgIGlm ICggIWlzX2lvbW11X2VuYWJsZWQoZCkgKQpAQCAtNTg3LDExICs1MTMsOCBAQCBpbnQgaW9tbXVf ZG9fZG9tY3RsKAogdm9pZCBpb21tdV9zaGFyZV9wMm1fdGFibGUoc3RydWN0IGRvbWFpbiogZCkK IHsKICAgICBBU1NFUlQoaGFwX2VuYWJsZWQoZCkpOwotICAgIC8qCi0gICAgICogaW9tbXVfdXNl X2hhcF9wdChkKSBjYW5ub3QgYmUgdXNlZCBoZXJlIGJlY2F1c2UgZHVyaW5nIGRvbWFpbgotICAg ICAqIGNvbnN0cnVjdGlvbiBoYXNfaW9tbXVfcHQoZCkgd2lsbCBhbHdheXMgcmV0dXJuIGZhbHNl IGhlcmUuCi0gICAgICovCi0gICAgaWYgKCBpc19pb21tdV9lbmFibGVkKGQpICYmIGlvbW11X2hh cF9wdF9zaGFyZSApCisKKyAgICBpZiAoIGlvbW11X3VzZV9oYXBfcHQoZCkgKQogICAgICAgICBp b21tdV9nZXRfb3BzKCktPnNoYXJlX3AybShkKTsKIH0KIApAQCAtNjM4LDggKzU2MSw3IEBAIHN0 YXRpYyB2b2lkIGlvbW11X2R1bXBfcDJtX3RhYmxlKHVuc2lnbmVkIGNoYXIga2V5KQogICAgIG9w cyA9IGlvbW11X2dldF9vcHMoKTsKICAgICBmb3JfZWFjaF9kb21haW4oZCkKICAgICB7Ci0gICAg ICAgIGlmICggaXNfaGFyZHdhcmVfZG9tYWluKGQpIHx8Ci0gICAgICAgICAgICAgZG9tX2lvbW11 KGQpLT5zdGF0dXMgPCBJT01NVV9TVEFUVVNfaW5pdGlhbGl6ZWQgKQorICAgICAgICBpZiAoIGlz X2hhcmR3YXJlX2RvbWFpbihkKSB8fCAhaXNfaW9tbXVfZW5hYmxlZChkKSApCiAgICAgICAgICAg ICBjb250aW51ZTsKIAogICAgICAgICBpZiAoIGlvbW11X3VzZV9oYXBfcHQoZCkgKQpkaWZmIC0t Z2l0IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gvcGNpLmMgYi94ZW4vZHJpdmVycy9wYXNzdGhy b3VnaC9wY2kuYwppbmRleCBkMjhmMTdhZjc1Li4xZmFkMGFmNTM0IDEwMDY0NAotLS0gYS94ZW4v ZHJpdmVycy9wYXNzdGhyb3VnaC9wY2kuYworKysgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC9w Y2kuYwpAQCAtOTM5LDkgKzkzOSw2IEBAIHN0YXRpYyBpbnQgZGVhc3NpZ25fZGV2aWNlKHN0cnVj dCBkb21haW4gKmQsIHVpbnQxNl90IHNlZywgdWludDhfdCBidXMsCiAKICAgICBwZGV2LT5mYXVs dC5jb3VudCA9IDA7CiAKLSAgICBpZiAoICFoYXNfYXJjaF9wZGV2cyhkKSAmJiBoYXNfaW9tbXVf cHQoZCkgKQotICAgICAgICBpb21tdV90ZWFyZG93bihkKTsKLQogICAgIHJldHVybiByZXQ7CiB9 CiAKQEAgLTE0OTAsMTMgKzE0ODcsNiBAQCBzdGF0aWMgaW50IGFzc2lnbl9kZXZpY2Uoc3RydWN0 IGRvbWFpbiAqZCwgdTE2IHNlZywgdTggYnVzLCB1OCBkZXZmbiwgdTMyIGZsYWcpCiAgICAgaWYg KCAhcGNpZGV2c190cnlsb2NrKCkgKQogICAgICAgICByZXR1cm4gLUVSRVNUQVJUOwogCi0gICAg cmMgPSBpb21tdV9jb25zdHJ1Y3QoZCk7Ci0gICAgaWYgKCByYyApCi0gICAgewotICAgICAgICBw Y2lkZXZzX3VubG9jaygpOwotICAgICAgICByZXR1cm4gcmM7Ci0gICAgfQotCiAgICAgcGRldiA9 IHBjaV9nZXRfcGRldl9ieV9kb21haW4oaGFyZHdhcmVfZG9tYWluLCBzZWcsIGJ1cywgZGV2Zm4p OwogICAgIGlmICggIXBkZXYgKQogICAgIHsKQEAgLTE1MjUsOCArMTUxNSw2IEBAIHN0YXRpYyBp bnQgYXNzaWduX2RldmljZShzdHJ1Y3QgZG9tYWluICpkLCB1MTYgc2VnLCB1OCBidXMsIHU4IGRl dmZuLCB1MzIgZmxhZykKICAgICB9CiAKICBkb25lOgotICAgIGlmICggIWhhc19hcmNoX3BkZXZz KGQpICYmIGhhc19pb21tdV9wdChkKSApCi0gICAgICAgIGlvbW11X3RlYXJkb3duKGQpOwogICAg IHBjaWRldnNfdW5sb2NrKCk7CiAKICAgICByZXR1cm4gcmM7CmRpZmYgLS1naXQgYS94ZW4vZHJp dmVycy9wYXNzdGhyb3VnaC92dGQvaW9tbXUuYyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJvdWdoL3Z0 ZC9pb21tdS5jCmluZGV4IGYxMjM3NjBlZTIuLjNjMTdmMTEzODYgMTAwNjQ0Ci0tLSBhL3hlbi9k cml2ZXJzL3Bhc3N0aHJvdWdoL3Z0ZC9pb21tdS5jCisrKyBiL3hlbi9kcml2ZXJzL3Bhc3N0aHJv dWdoL3Z0ZC9pb21tdS5jCkBAIC0xNzIxLDE1ICsxNzIxLDcgQEAgc3RhdGljIHZvaWQgaW9tbXVf ZG9tYWluX3RlYXJkb3duKHN0cnVjdCBkb21haW4gKmQpCiAKICAgICBBU1NFUlQoaXNfaW9tbXVf ZW5hYmxlZChkKSk7CiAKLSAgICAvKgotICAgICAqIFdlIGNhbid0IHVzZSBpb21tdV91c2VfaGFw X3B0IGhlcmUgYmVjYXVzZSBlaXRoZXIgSU9NTVUgc3RhdGUKLSAgICAgKiBpcyBhbHJlYWR5IGNo YW5nZWQgdG8gSU9NTVVfU1RBVFVTX2Rpc2FibGVkIGF0IHRoaXMgcG9pbnQgb3IKLSAgICAgKiBo YXMgYWx3YXlzIGJlZW4gSU9NTVVfU1RBVFVTX2Rpc2FibGVkLgotICAgICAqCi0gICAgICogV2Ug YWxzbyBuZWVkIHRvIHRlc3QgaWYgSEFQIGlzIGVuYWJsZWQgYmVjYXVzZSBQViBndWVzdHMgY2Fu Ci0gICAgICogZW50ZXIgdGhpcyBwYXRoIHRvby4KLSAgICAgKi8KLSAgICBpZiAoIGhhcF9lbmFi bGVkKGQpICYmIGlvbW11X2hhcF9wdF9zaGFyZSApCisgICAgaWYgKCBpb21tdV91c2VfaGFwX3B0 KGQpICkKICAgICAgICAgcmV0dXJuOwogCiAgICAgc3Bpbl9sb2NrKCZoZC0+YXJjaC5tYXBwaW5n X2xvY2spOwpkaWZmIC0tZ2l0IGEveGVuL2RyaXZlcnMvcGFzc3Rocm91Z2gveDg2L2lvbW11LmMg Yi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC94ODYvaW9tbXUuYwppbmRleCA4MzE5ZmUwYTY5Li40 N2EzZTU1MjEzIDEwMDY0NAotLS0gYS94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC94ODYvaW9tbXUu YworKysgYi94ZW4vZHJpdmVycy9wYXNzdGhyb3VnaC94ODYvaW9tbXUuYwpAQCAtODEsMTAzICs4 MSw2IEBAIGludCBfX2luaXQgaW9tbXVfc2V0dXBfaHBldF9tc2koc3RydWN0IG1zaV9kZXNjICpt c2kpCiAgICAgcmV0dXJuIG9wcy0+c2V0dXBfaHBldF9tc2kgPyBvcHMtPnNldHVwX2hwZXRfbXNp KG1zaSkgOiAtRU5PREVWOwogfQogCi1pbnQgYXJjaF9pb21tdV9wb3B1bGF0ZV9wYWdlX3RhYmxl KHN0cnVjdCBkb21haW4gKmQpCi17Ci0gICAgc3RydWN0IHBhZ2VfaW5mbyAqcGFnZTsKLSAgICBp bnQgcmMgPSAwLCBuID0gMDsKLQotICAgIHNwaW5fbG9jaygmZC0+cGFnZV9hbGxvY19sb2NrKTsK LQotICAgIGlmICggdW5saWtlbHkoZC0+aXNfZHlpbmcpICkKLSAgICAgICAgcmMgPSAtRVNSQ0g7 Ci0KLSAgICB3aGlsZSAoICFyYyAmJiAocGFnZSA9IHBhZ2VfbGlzdF9yZW1vdmVfaGVhZCgmZC0+ cGFnZV9saXN0KSkgKQotICAgIHsKLSAgICAgICAgaWYgKCBpc19odm1fZG9tYWluKGQpIHx8Ci0g ICAgICAgICAgICAocGFnZS0+dS5pbnVzZS50eXBlX2luZm8gJiBQR1RfdHlwZV9tYXNrKSA9PSBQ R1Rfd3JpdGFibGVfcGFnZSApCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1mbl90IG1mbiA9IHBh Z2VfdG9fbWZuKHBhZ2UpOwotICAgICAgICAgICAgZ2ZuX3QgZ2ZuID0gbWZuX3RvX2dmbihkLCBt Zm4pOwotICAgICAgICAgICAgdW5zaWduZWQgaW50IGZsdXNoX2ZsYWdzID0gMDsKLQotICAgICAg ICAgICAgaWYgKCAhZ2ZuX2VxKGdmbiwgSU5WQUxJRF9HRk4pICkKLSAgICAgICAgICAgIHsKLSAg ICAgICAgICAgICAgICBkZm5fdCBkZm4gPSBfZGZuKGdmbl94KGdmbikpOwotCi0gICAgICAgICAg ICAgICAgQVNTRVJUKCEoZ2ZuX3goZ2ZuKSA+PiBERUZBVUxUX0RPTUFJTl9BRERSRVNTX1dJRFRI KSk7Ci0gICAgICAgICAgICAgICAgQlVHX09OKFNIQVJFRF9NMlAoZ2ZuX3goZ2ZuKSkpOwotICAg ICAgICAgICAgICAgIHJjID0gaW9tbXVfbWFwKGQsIGRmbiwgbWZuLCBQQUdFX09SREVSXzRLLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElPTU1VRl9yZWFkYWJsZSB8IElPTU1VRl93 cml0YWJsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZmx1c2hfZmxhZ3MpOwot Ci0gICAgICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAgICAgKiBXZSBtYXkgYmUgd29ya2lu ZyBiZWhpbmQgdGhlIGJhY2sgb2YgYSBydW5uaW5nIGd1ZXN0LCB3aGljaAotICAgICAgICAgICAg ICAgICAqIG1heSBjaGFuZ2UgdGhlIHR5cGUgb2YgYSBwYWdlIGF0IGFueSB0aW1lLiAgV2UgY2Fu J3QgcHJldmVudAotICAgICAgICAgICAgICAgICAqIHRoaXMgKGZvciBpbnN0YW5jZSwgYnkgYnVt cGluZyB0aGUgdHlwZSBjb3VudCB3aGlsZSBtYXBwaW5nCi0gICAgICAgICAgICAgICAgICogdGhl IHBhZ2UpIHdpdGhvdXQgY2F1c2luZyBsZWdpdGltYXRlIGd1ZXN0IHR5cGUtY2hhbmdlCi0gICAg ICAgICAgICAgICAgICogb3BlcmF0aW9ucyB0byBmYWlsLiAgU28gYWZ0ZXIgYWRkaW5nIHRoZSBw YWdlIHRvIHRoZSBJT01NVSwKLSAgICAgICAgICAgICAgICAgKiBjaGVjayBhZ2FpbiB0byBtYWtl IHN1cmUgdGhpcyBpcyBzdGlsbCB2YWxpZC4gIE5CIHRoYXQgdGhlCi0gICAgICAgICAgICAgICAg ICogd3JpdGFibGUgZW50cnkgaW4gdGhlIGlvbW11IGlzIGhhcm1sZXNzIHVudGlsIGxhdGVyLCB3 aGVuCi0gICAgICAgICAgICAgICAgICogdGhlIGFjdHVhbCBkZXZpY2UgZ2V0cyBhc3NpZ25lZC4K LSAgICAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgICAgICBpZiAoICFyYyAmJiAhaXNfaHZt X2RvbWFpbihkKSAmJgotICAgICAgICAgICAgICAgICAgICAgKChwYWdlLT51LmludXNlLnR5cGVf aW5mbyAmIFBHVF90eXBlX21hc2spICE9Ci0gICAgICAgICAgICAgICAgICAgICAgUEdUX3dyaXRh YmxlX3BhZ2UpICkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJjID0g aW9tbXVfdW5tYXAoZCwgZGZuLCBQQUdFX09SREVSXzRLLCAmZmx1c2hfZmxhZ3MpOwotICAgICAg ICAgICAgICAgICAgICAvKiBJZiB0aGUgdHlwZSBjaGFuZ2VkIHlldCBhZ2Fpbiwgc2ltcGx5IGZv cmNlIGEgcmV0cnkuICovCi0gICAgICAgICAgICAgICAgICAgIGlmICggIXJjICYmICgocGFnZS0+ dS5pbnVzZS50eXBlX2luZm8gJiBQR1RfdHlwZV9tYXNrKSA9PQotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUEdUX3dyaXRhYmxlX3BhZ2UpICkKLSAgICAgICAgICAgICAgICAgICAg ICAgIHJjID0gLUVSRVNUQVJUOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAg ICAgICAgICAgIGlmICggcmMgKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHBhZ2Vf bGlzdF9hZGQocGFnZSwgJmQtPnBhZ2VfbGlzdCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0g ICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgcGFnZV9saXN0X2FkZF90YWlsKHBhZ2Us ICZkLT5hcmNoLnJlbG1lbV9saXN0KTsKLSAgICAgICAgaWYgKCAhKCsrbiAmIDB4ZmYpICYmICFw YWdlX2xpc3RfZW1wdHkoJmQtPnBhZ2VfbGlzdCkgJiYKLSAgICAgICAgICAgICBoeXBlcmNhbGxf cHJlZW1wdF9jaGVjaygpICkKLSAgICAgICAgICAgIHJjID0gLUVSRVNUQVJUOwotICAgIH0KLQot ICAgIGlmICggIXJjICkKLSAgICB7Ci0gICAgICAgIC8qCi0gICAgICAgICAqIFRoZSBleHBlY3Rh dGlvbiBoZXJlIGlzIHRoYXQgZ2VuZXJhbGx5IHRoZXJlIGFyZSBtYW55IG5vcm1hbCBwYWdlcwot ICAgICAgICAgKiBvbiByZWxtZW1fbGlzdCAodGhlIG9uZXMgd2UgcHV0IHRoZXJlKSBhbmQgb25s eSBmZXcgYmVpbmcgaW4gYW4KLSAgICAgICAgICogb2ZmbGluZS9icm9rZW4gc3RhdGUuIFRoZSBs YXR0ZXIgb25lcyBhcmUgYWx3YXlzIGF0IHRoZSBoZWFkIG9mIHRoZQotICAgICAgICAgKiBsaXN0 LiBIZW5jZSB3ZSBmaXJzdCBtb3ZlIHRoZSB3aG9sZSBsaXN0LCBhbmQgdGhlbiBtb3ZlIGJhY2sg dGhlCi0gICAgICAgICAqIGZpcnN0IGZldyBlbnRyaWVzLgotICAgICAgICAgKi8KLSAgICAgICAg cGFnZV9saXN0X21vdmUoJmQtPnBhZ2VfbGlzdCwgJmQtPmFyY2gucmVsbWVtX2xpc3QpOwotICAg ICAgICB3aGlsZSAoICFwYWdlX2xpc3RfZW1wdHkoJmQtPnBhZ2VfbGlzdCkgJiYKLSAgICAgICAg ICAgICAgICAocGFnZSA9IHBhZ2VfbGlzdF9maXJzdCgmZC0+cGFnZV9saXN0KSwKLSAgICAgICAg ICAgICAgICAgKHBhZ2UtPmNvdW50X2luZm8gJiAoUEdDX3N0YXRlfFBHQ19icm9rZW4pKSkgKQot ICAgICAgICB7Ci0gICAgICAgICAgICBwYWdlX2xpc3RfZGVsKHBhZ2UsICZkLT5wYWdlX2xpc3Qp OwotICAgICAgICAgICAgcGFnZV9saXN0X2FkZF90YWlsKHBhZ2UsICZkLT5hcmNoLnJlbG1lbV9s aXN0KTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHNwaW5fdW5sb2NrKCZkLT5wYWdlX2FsbG9j X2xvY2spOwotCi0gICAgaWYgKCAhcmMgKQotICAgICAgICAvKgotICAgICAgICAgKiBmbHVzaF9m bGFncyBhcmUgbm90IHRyYWNrZWQgYWNyb3NzIGh5cGVyY2FsbCBwcmUtZW1wdGlvbiBzbwotICAg ICAgICAgKiBhc3N1bWUgYSBmdWxsIGZsdXNoIGlzIG5lY2Vzc2FyeS4KLSAgICAgICAgICovCi0g ICAgICAgIHJjID0gaW9tbXVfaW90bGJfZmx1c2hfYWxsKAotICAgICAgICAgICAgZCwgSU9NTVVf RkxVU0hGX2FkZGVkIHwgSU9NTVVfRkxVU0hGX21vZGlmaWVkKTsKLQotICAgIGlmICggcmMgJiYg cmMgIT0gLUVSRVNUQVJUICkKLSAgICAgICAgaW9tbXVfdGVhcmRvd24oZCk7Ci0KLSAgICByZXR1 cm4gcmM7Ci19Ci0KIHZvaWQgX19od2RvbV9pbml0IGFyY2hfaW9tbXVfY2hlY2tfYXV0b3RyYW5z bGF0ZWRfaHdkb20oc3RydWN0IGRvbWFpbiAqZCkKIHsKICAgICBpZiAoICFpc19pb21tdV9lbmFi bGVkKGQpICkKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS1hcm0vaW9tbXUuaCBiL3hlbi9p bmNsdWRlL2FzbS1hcm0vaW9tbXUuaAppbmRleCA5MDRjOWFlYzExLi4xNTc3ZTgzZDJiIDEwMDY0 NAotLS0gYS94ZW4vaW5jbHVkZS9hc20tYXJtL2lvbW11LmgKKysrIGIveGVuL2luY2x1ZGUvYXNt LWFybS9pb21tdS5oCkBAIC0yMSw3ICsyMSw3IEBAIHN0cnVjdCBhcmNoX2lvbW11CiB9OwogCiAv KiBBbHdheXMgc2hhcmUgUDJNIFRhYmxlIGJldHdlZW4gdGhlIENQVSBhbmQgdGhlIElPTU1VICov Ci0jZGVmaW5lIGlvbW11X3VzZV9oYXBfcHQoZCkgKGhhc19pb21tdV9wdChkKSkKKyNkZWZpbmUg aW9tbXVfdXNlX2hhcF9wdChkKSBpc19pb21tdV9lbmFibGVkKGQpCiAKIGNvbnN0IHN0cnVjdCBp b21tdV9vcHMgKmlvbW11X2dldF9vcHModm9pZCk7CiB2b2lkIGlvbW11X3NldF9vcHMoY29uc3Qg c3RydWN0IGlvbW11X29wcyAqb3BzKTsKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL2FzbS14ODYv aW9tbXUuaCBiL3hlbi9pbmNsdWRlL2FzbS14ODYvaW9tbXUuaAppbmRleCAzMWZkYTRiMGNmLi41 MDcxYWZkNmE1IDEwMDY0NAotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L2lvbW11LmgKKysrIGIv eGVuL2luY2x1ZGUvYXNtLXg4Ni9pb21tdS5oCkBAIC04OCw3ICs4OCw3IEBAIGV4dGVybiBjb25z dCBzdHJ1Y3QgaW9tbXVfaW5pdF9vcHMgKmlvbW11X2luaXRfb3BzOwogCiAvKiBBcmUgd2UgdXNp bmcgdGhlIGRvbWFpbiBQMk0gdGFibGUgYXMgaXRzIElPTU1VIHBhZ2V0YWJsZT8gKi8KICNkZWZp bmUgaW9tbXVfdXNlX2hhcF9wdChkKSBcCi0gICAgKGhhcF9lbmFibGVkKGQpICYmIGhhc19pb21t dV9wdChkKSAmJiBpb21tdV9oYXBfcHRfc2hhcmUpCisgICAgKGhhcF9lbmFibGVkKGQpICYmIGlz X2lvbW11X2VuYWJsZWQoZCkgJiYgaW9tbXVfaGFwX3B0X3NoYXJlKQogCiB2b2lkIGlvbW11X3Vw ZGF0ZV9pcmVfZnJvbV9hcGljKHVuc2lnbmVkIGludCBhcGljLCB1bnNpZ25lZCBpbnQgcmVnLCB1 bnNpZ25lZCBpbnQgdmFsdWUpOwogdW5zaWduZWQgaW50IGlvbW11X3JlYWRfYXBpY19mcm9tX2ly ZSh1bnNpZ25lZCBpbnQgYXBpYywgdW5zaWduZWQgaW50IHJlZyk7CmRpZmYgLS1naXQgYS94ZW4v aW5jbHVkZS94ZW4vaW9tbXUuaCBiL3hlbi9pbmNsdWRlL3hlbi9pb21tdS5oCmluZGV4IGM1ZWQ3 ZWZlOTguLmRmZWMwY2EzZmMgMTAwNjQ0Ci0tLSBhL3hlbi9pbmNsdWRlL3hlbi9pb21tdS5oCisr KyBiL3hlbi9pbmNsdWRlL3hlbi9pb21tdS5oCkBAIC04OCwxNSArODgsOSBAQCB2b2lkIGlvbW11 X2RvbWFpbl9kZXN0cm95KHN0cnVjdCBkb21haW4gKmQpOwogCiB2b2lkIGFyY2hfaW9tbXVfZG9t YWluX2Rlc3Ryb3koc3RydWN0IGRvbWFpbiAqZCk7CiBpbnQgYXJjaF9pb21tdV9kb21haW5faW5p dChzdHJ1Y3QgZG9tYWluICpkKTsKLWludCBhcmNoX2lvbW11X3BvcHVsYXRlX3BhZ2VfdGFibGUo c3RydWN0IGRvbWFpbiAqZCk7CiB2b2lkIGFyY2hfaW9tbXVfY2hlY2tfYXV0b3RyYW5zbGF0ZWRf aHdkb20oc3RydWN0IGRvbWFpbiAqZCk7CiB2b2lkIGFyY2hfaW9tbXVfaHdkb21faW5pdChzdHJ1 Y3QgZG9tYWluICpkKTsKIAotaW50IGlvbW11X2NvbnN0cnVjdChzdHJ1Y3QgZG9tYWluICpkKTsK LQotLyogRnVuY3Rpb24gdXNlZCBpbnRlcm5hbGx5LCB1c2UgaW9tbXVfZG9tYWluX2Rlc3Ryb3kg Ki8KLXZvaWQgaW9tbXVfdGVhcmRvd24oc3RydWN0IGRvbWFpbiAqZCk7Ci0KIC8qCiAgKiBUaGUg Zm9sbG93aW5nIGZsYWdzIGFyZSBwYXNzZWQgdG8gbWFwIG9wZXJhdGlvbnMgYW5kIHBhc3NlZCBi eSBsb29rdXAKICAqIG9wZXJhdGlvbnMuCkBAIC0yNjMsMTMgKzI1Nyw2IEBAIHN0cnVjdCBpb21t dV9vcHMgewogIyBkZWZpbmUgaW9tbXVfdmNhbGwgaW9tbXVfY2FsbAogI2VuZGlmCiAKLWVudW0g aW9tbXVfc3RhdHVzCi17Ci0gICAgSU9NTVVfU1RBVFVTX2Rpc2FibGVkLAotICAgIElPTU1VX1NU QVRVU19pbml0aWFsaXppbmcsCi0gICAgSU9NTVVfU1RBVFVTX2luaXRpYWxpemVkCi19OwotCiBz dHJ1Y3QgZG9tYWluX2lvbW11IHsKICAgICBzdHJ1Y3QgYXJjaF9pb21tdSBhcmNoOwogCkBAIC0y ODksOSArMjc2LDYgQEAgc3RydWN0IGRvbWFpbl9pb21tdSB7CiAgICAgLyogRmVhdHVyZXMgc3Vw cG9ydGVkIGJ5IHRoZSBJT01NVSAqLwogICAgIERFQ0xBUkVfQklUTUFQKGZlYXR1cmVzLCBJT01N VV9GRUFUX2NvdW50KTsKIAotICAgIC8qIFN0YXR1cyBvZiBndWVzdCBJT01NVSBtYXBwaW5ncyAq LwotICAgIGVudW0gaW9tbXVfc3RhdHVzIHN0YXR1czsKLQogICAgIC8qCiAgICAgICogRG9lcyB0 aGUgZ3Vlc3QgcmVxaXJlIG1hcHBpbmdzIHRvIGJlIHN5bmNob25pemVkLCB0byBtYWludGFpbgog ICAgICAqIHRoZSBkZWZhdWx0IGRmbiA9PSBwZm4gbWFwLiAoU2VlIGNvbW1lbnQgb24gZGZuIGF0 IHRoZSB0b3Agb2YKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3hlbi9zY2hlZC5oIGIveGVuL2lu Y2x1ZGUveGVuL3NjaGVkLmgKaW5kZXggMmQxN2M4NDkxNS4uYWUxZmFmNzBkMyAxMDA2NDQKLS0t IGEveGVuL2luY2x1ZGUveGVuL3NjaGVkLmgKKysrIGIveGVuL2luY2x1ZGUveGVuL3NjaGVkLmgK QEAgLTk2NiwxMCArOTY2LDggQEAgc3RhdGljIGlubGluZSBib29sIGlzX2h3ZG9tX3Bpbm5lZF92 Y3B1KGNvbnN0IHN0cnVjdCB2Y3B1ICp2KQogfQogCiAjaWZkZWYgQ09ORklHX0hBU19QQVNTVEhS T1VHSAotI2RlZmluZSBoYXNfaW9tbXVfcHQoZCkgKGRvbV9pb21tdShkKS0+c3RhdHVzICE9IElP TU1VX1NUQVRVU19kaXNhYmxlZCkKICNkZWZpbmUgbmVlZF9pb21tdV9wdF9zeW5jKGQpIChkb21f aW9tbXUoZCktPm5lZWRfc3luYykKICNlbHNlCi0jZGVmaW5lIGhhc19pb21tdV9wdChkKSBmYWxz ZQogI2RlZmluZSBuZWVkX2lvbW11X3B0X3N5bmMoZCkgZmFsc2UKICNlbmRpZgogCi0tIAoyLjIw LjEuMi5nYjIxZWJiNjcxCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVucHJvamVj dC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3hlbi1k ZXZlbA==