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=-5.2 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, 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 BBE75C2D0DB for ; Fri, 31 Jan 2020 16:44:34 +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 86C8A206F0 for ; Fri, 31 Jan 2020 16:44:34 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 86C8A206F0 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=suse.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 1ixZP5-0008Sw-6Q; Fri, 31 Jan 2020 16:44:23 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1ixZP4-0008Sj-K5 for xen-devel@lists.xenproject.org; Fri, 31 Jan 2020 16:44:22 +0000 X-Inumbo-ID: eddf2364-4448-11ea-8396-bc764e2007e4 Received: from mx2.suse.de (unknown [195.135.220.15]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id eddf2364-4448-11ea-8396-bc764e2007e4; Fri, 31 Jan 2020 16:44:21 +0000 (UTC) X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id 71CA8AD3C; Fri, 31 Jan 2020 16:44:20 +0000 (UTC) From: Jan Beulich To: "xen-devel@lists.xenproject.org" References: Message-ID: Date: Fri, 31 Jan 2020 17:44:23 +0100 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:68.0) Gecko/20100101 Thunderbird/68.4.2 MIME-Version: 1.0 In-Reply-To: Content-Language: en-US Subject: [Xen-devel] [PATCH v4 4/7] x86/HVM: implement memory read caching for insn emulation 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: Kevin Tian , Wei Liu , Paul Durrant , George Dunlap , Andrew Cooper , Jun Nakajima , =?UTF-8?Q?Roger_Pau_Monn=c3=a9?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" RW11bGF0aW9uIHJlcXVpcmluZyBkZXZpY2UgbW9kZWwgYXNzaXN0YW5jZSB1c2VzIGEgZm9ybSBv ZiBpbnN0cnVjdGlvbgpyZS1leGVjdXRpb24sIGFzc3VtaW5nIHRoYXQgdGhlIHNlY29uZCAoYW5k IGFueSBmdXJ0aGVyKSBwYXNzIHRha2VzCmV4YWN0bHkgdGhlIHNhbWUgcGF0aC4gVGhpcyBpcyBh IHZhbGlkIGFzc3VtcHRpb24gYXMgZmFyIGFzIHVzZSBvZiBDUFUKcmVnaXN0ZXJzIGdvZXMgKGFz IHRob3NlIGNhbid0IGNoYW5nZSB3aXRob3V0IGFueSBvdGhlciBpbnN0cnVjdGlvbgpleGVjdXRp bmcgaW4gYmV0d2VlbiksIGJ1dCBpcyB3cm9uZyBmb3IgbWVtb3J5IGFjY2Vzc2VzLiBJbiBwYXJ0 aWN1bGFyCml0IGhhcyBiZWVuIG9ic2VydmVkIHRoYXQgV2luZG93cyBtaWdodCBwYWdlIG91dCBi dWZmZXJzIHVuZGVybmVhdGggYW4KaW5zdHJ1Y3Rpb24gY3VycmVudGx5IHVuZGVyIGVtdWxhdGlv biAoaGl0dGluZyBiZXR3ZWVuIHR3byBwYXNzZXMpLiBJZgp0aGUgZmlyc3QgcGFzcyByZWFkIGEg bWVtb3J5IG9wZXJhbmQgc3VjY2Vzc2Z1bGx5LCBhbnkgc3Vic2VxdWVudCBwYXNzCm5lZWRzIHRv IGdldCB0byBzZWUgdGhlIGV4YWN0IHNhbWUgdmFsdWUuCgpJbnRyb2R1Y2UgYSBjYWNoZSB0byBt YWtlIHN1cmUgYWJvdmUgZGVzY3JpYmVkIGFzc3VtcHRpb24gaG9sZHMuIFRoaXMKaXMgYSB2ZXJ5 IHNpbXBsaXN0aWMgaW1wbGVtZW50YXRpb24gZm9yIG5vdzogT25seSBleGFjdCBtYXRjaGVzIGFy ZQpzYXRpc2ZpZWQgKG5vIG92ZXJsYXBzIG9yIHBhcnRpYWwgcmVhZHMgb3IgYW55dGhpbmcpOyB0 aGlzIGlzIHN1ZmZpY2llbnQKZm9yIHRoZSBpbW1lZGlhdGUgcHVycG9zZSBvZiBtYWtpbmcgcmUt ZXhlY3V0aW9uIGFuIGV4YWN0IHJlcGxheS4gVGhlCmNhY2hlIGFsc28gd29uJ3QgYmUgdXNlZCBq dXN0IHlldCBmb3IgZ3Vlc3QgcGFnZSB3YWxrczsgdGhhdCdsbCBiZSB0aGUKc3ViamVjdCBvZiBh IHN1YnNlcXVlbnQgY2hhbmdlLgoKV2l0aCB0aGUgY2FjaGUgYmVpbmcgZ2VuZXJhbGx5IHRyYW5z cGFyZW50IHRvIHVwcGVyIGxheWVycywgYnV0IHdpdGggaXQKaGF2aW5nIGxpbWl0ZWQgY2FwYWNp dHkgeWV0IGJlaW5nIHJlcXVpcmVkIGZvciBjb3JyZWN0bmVzcywgY2VydGFpbgp1c2VycyBvZiBo dm1fY29weV9mcm9tX2d1ZXN0XyooKSBuZWVkIHRvIGRpc2FibGUgY2FjaGluZyB0ZW1wb3Jhcmls eSwKd2l0aG91dCBpbnZhbGlkYXRpbmcgdGhlIGNhY2hlLiBOb3RlIHRoYXQgdGhlIGFkanVzdG1l bnRzIGhlcmUgdG8KaHZtX2h5cGVyY2FsbCgpIGFuZCBodm1fdGFza19zd2l0Y2goKSBhcmUgYmVu aWduIGF0IHRoaXMgcG9pbnQ7IHRoZXknbGwKYmVjb21lIHJlbGV2YW50IG9uY2Ugd2Ugc3RhcnQg dG8gYmUgYWJsZSB0byBlbXVsYXRlIHJlc3BlY3RpdmUgaW5zbnMKdGhyb3VnaCB0aGUgbWFpbiBl bXVsYXRvciAoYW5kIG1vcmUgY2hhbmdlcyB3aWxsIHRoZW4gbGlrZWx5IGJlIG5lZWRlZAp0byBu ZXN0ZWQgY29kZSkuCgpBcyB0byB0aGUgYWN0dWFsIGRhdGEgcGFnZSBpbiB0aGlzIHNjZW5hcmlv LCB0aGVyZSBhcmUgYSBjb3VwbGUgb2YKYXNwZWN0cyB0byB0YWtlIGludG8gY29uc2lkZXJhdGlv bjoKLSBXZSBtdXN0IGJlIHRhbGtpbmcgYWJvdXQgYW4gaW5zbiBhY2Nlc3NpbmcgdHdvIGxvY2F0 aW9ucyAodHdvIG1lbW9yeQogIG9uZXMsIG9uZSBvZiB3aGljaCBpcyBNTUlPLCBvciBhIG1lbW9y eSBhbmQgYW4gSS9PIG9uZSkuCi0gSWYgdGhlIG5vbiBJL08gLyBNTUlPIHNpZGUgaXMgYmVpbmcg cmVhZCwgdGhlIHJlLXJlYWQgKGlmIGl0IG9jY3VycyBhdAogIGFsbCkgaXMgaGF2aW5nIGl0cyBy ZXN1bHQgZGlzY2FyZGVkLCBieSB0YWtpbmcgdGhlIHNob3J0Y3V0IHRocm91Z2gKICB0aGUgZmly c3Qgc3dpdGNoKCkncyBTVEFURV9JT1JFU1BfUkVBRFkgY2FzZSBpbiBodm1lbXVsX2RvX2lvKCku IE5vdGUKICBob3csIGFtb25nIGFsbCB0aGUgcmUtaXNzdWUgc2FuaXR5IGNoZWNrcyB0aGVyZSwg d2UgYXZvaWQgY29tcGFyaW5nCiAgdGhlIGFjdHVhbCBkYXRhLgotIElmIHRoZSBub24gSS9PIC8g TU1JTyBzaWRlIGlzIGJlaW5nIHdyaXR0ZW4sIGl0IGlzIHRoZSBPU2VzCiAgcmVzcG9uc2liaWxp dHkgdG8gYXZvaWQgYWN0dWFsbHkgbW92aW5nIHBhZ2UgY29udGVudHMgdG8gZGlzayB3aGlsZQog IHRoZXJlIG1pZ2h0IHN0aWxsIGJlIGEgd3JpdGUgYWNjZXNzIGluIGZsaWdodCAtIHRoaXMgaXMg bm8gZGlmZmVyZW50CiAgaW4gYmVoYXZpb3IgZnJvbSBiYXJlIGhhcmR3YXJlLgotIFJlYWQtbW9k aWZ5LXdyaXRlIGFjY2Vzc2VzIGFyZSwgYXMgYWx3YXlzLCBjb21wbGljYXRlZCwgYW5kIHdoaWxl IHdlCiAgZGVhbCB3aXRoIHRoZW0gYmV0dGVyIG5vd2FkYXlzIHRoYW4gd2UgZGlkIGluIHRoZSBw YXN0LCB3ZSdyZSBzdGlsbAogIG5vdCBxdWl0ZSB0aGVyZSB0byBndWFyYW50ZWUgaGFyZHdhcmUg bGlrZSBiZWhhdmlvciBpbiBhbGwgY2FzZXMKICBhbnl3YXkuIE5vdGhpbmcgaXMgZ2V0dGluZyB3 b3JzZSBieSB0aGUgY2hhbmdlcyBtYWRlIGhlcmUsIGFmYWljdC4KCkluIF9faHZtX2NvcHkoKSBh bHNvIHJlZHVjZSBwJ3Mgc2NvcGUgYW5kIGNoYW5nZSBpdHMgdHlwZSB0byB2b2lkICouCgpTaWdu ZWQtb2ZmLWJ5OiBKYW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+Ci0tLQpUQkQ6IEluIHBy aW5jaXBsZSB0aGUgY2FjaGluZyBoZXJlIHlpZWxkcyB1bm5lY2Vzc2FyeSB0aGUgb25lIHVzZWQg Zm9yCiAgICAgaW5zbiBieXRlcyAodmlvLT5tbWlvX2luc257LF9ieXRlc30uIEhvd2V2ZXIsIHRv IHNlZWQgdGhlIGNhY2hlCiAgICAgd2l0aCB0aGUgZGF0YSBTVk0gbWF5IGhhdmUgbWFkZSBhdmFp bGFibGUsIHdlJ2QgaGF2ZSB0byBhbHNvIGtub3cKICAgICB0aGUgY29ycmVzcG9uZGluZyBHUEEu IEl0J3Mgbm90IHNhZmUsIGhvd2V2ZXIsIHRvIHJlLXdhbGsgdGhlIHBhZ2UKICAgICB0YWJsZXMg dG8gZmluZCBvdXQsIGFzIHRoZSBwYWdlIHRhYmxlcyBtYXkgaGF2ZSBjaGFuZ2VkIGluIHRoZQog ICAgIG1lYW50aW1lLiBUaGVyZWZvcmUgSSBndWVzcyB3ZSBuZWVkIHRvIGtlZXAgdGhlIGR1cGxp Y2F0ZQogICAgIGZ1bmN0aW9uYWxpdHkgZm9yIG5vdy4gQSBwb3NzaWJsZSBzb2x1dGlvbiB0byB0 aGlzIGNvdWxkIGJlIHRvIHVzZQogICAgIGEgcGh5c2ljYWwtYWRkcmVzcy1iYXNlZCBjYWNoZSBm b3IgcGFnZSB0YWJsZSBhY2Nlc3NlcyAoYW5kIGxvb2tpbmcKICAgICBmb3J3YXJkIGFsc28gZS5n LiBTVk0vVk1YIGluc24gZW11bGF0aW9uKSwgYW5kIGEgbGluZWFyLWFkZHJlc3MtCiAgICAgYmFz ZWQgb25lIGZvciBhbGwgb3RoZXIgcmVhZHMuCi0tLQp2NDogUmUtd3JpdGUgZm9yIGNhY2hlIHRv IGJlY29tZSB0cmFuc3BhcmVudCB0byBjYWxsZXJzLgp2MzogQWRkIHRleHQgYWJvdXQgdGhlIGFj dHVhbCBkYXRhIHBhZ2UgdG8gdGhlIGRlc2NyaXB0aW9uLgp2MjogUmUtYmFzZS4KCi0tLSBhL3hl bi9hcmNoL3g4Ni9odm0vZW11bGF0ZS5jCisrKyBiL3hlbi9hcmNoL3g4Ni9odm0vZW11bGF0ZS5j CkBAIC0yOCw2ICsyOCwxNyBAQAogI2luY2x1ZGUgPGFzbS9pb2NhcC5oPgogI2luY2x1ZGUgPGFz bS92bV9ldmVudC5oPgogCitzdHJ1Y3QgaHZtZW11bF9jYWNoZQoreworICAgIHVuc2lnbmVkIGlu dCBudW1fZW50czsKKyAgICB1bnNpZ25lZCBpbnQgbWF4X2VudHM7CisgICAgc3RydWN0IHsKKyAg ICAgICAgcGFkZHJfdCBncGE6UEFERFJfQklUUzsKKyAgICAgICAgdW5zaWduZWQgaW50IHNpemU6 QklUU19QRVJfTE9ORyAtIFBBRERSX0JJVFM7CisgICAgICAgIHVuc2lnbmVkIGxvbmcgZGF0YTsK KyAgICB9IGVudHNbXTsKK307CisKIHN0YXRpYyB2b2lkIGh2bXRyYWNlX2lvX2Fzc2lzdChjb25z dCBpb3JlcV90ICpwKQogewogICAgIHVuc2lnbmVkIGludCBzaXplLCBldmVudDsKQEAgLTE4NjYs MTIgKzE4NzcsMTcgQEAgc3RhdGljIGludCBodm1lbXVsX3JlcF9tb3ZzKAogICAgICAgICByYyA9 IEhWTVRSQU5TX29rYXk7CiAgICAgfQogICAgIGVsc2UKKyAgICB7CisgICAgICAgIHVuc2lnbmVk IGludCB0b2tlbiA9IGh2bWVtdWxfY2FjaGVfZGlzYWJsZShjdXJyKTsKKwogICAgICAgICAvKgog ICAgICAgICAgKiBXZSBkbyBhIG1vZGljdW0gb2YgY2hlY2tpbmcgaGVyZSwganVzdCBmb3IgcGFy YW5vaWEncyBzYWtlIGFuZCB0bwogICAgICAgICAgKiBkZWZpbml0ZWx5IGF2b2lkIGNvcHlpbmcg YW4gdW5pdGlhbGlzZWQgYnVmZmVyIGludG8gZ3Vlc3QgYWRkcmVzcwogICAgICAgICAgKiBzcGFj ZS4KICAgICAgICAgICovCiAgICAgICAgIHJjID0gaHZtX2NvcHlfZnJvbV9ndWVzdF9waHlzKGJ1 Ziwgc2dwYSwgYnl0ZXMpOworICAgICAgICBodm1lbXVsX2NhY2hlX3Jlc3RvcmUoY3VyciwgdG9r ZW4pOworICAgIH0KIAogICAgIGlmICggcmMgPT0gSFZNVFJBTlNfb2theSApCiAgICAgICAgIHJj ID0gaHZtX2NvcHlfdG9fZ3Vlc3RfcGh5cyhkZ3BhLCBidWYsIGJ5dGVzLCBjdXJyKTsKQEAgLTI1 MzQsNiArMjU1MCwxOSBAQCBzdGF0aWMgaW50IF9odm1fZW11bGF0ZV9vbmUoc3RydWN0IGh2bV9l CiAgICAgc3RydWN0IGh2bV92Y3B1X2lvICp2aW8gPSAmY3Vyci0+YXJjaC5odm0uaHZtX2lvOwog ICAgIGludCByYzsKIAorICAgIC8qCisgICAgICogRW5hYmxlIGNhY2hpbmcgaWYgaXQncyBjdXJy ZW50bHkgZGlzYWJsZWQsIGJ1dCBsZWF2ZSB0aGUgY2FjaGUKKyAgICAgKiB1bnRvdWNoZWQgaWYg aXQncyBhbHJlYWR5IGVuYWJsZWQsIGZvciByZS1leGVjdXRpb24gdG8gY29uc3VtZQorICAgICAq IGVudHJpZXMgcG9wdWxhdGVkIGJ5IGFuIGVhcmxpZXIgcGFzcy4KKyAgICAgKi8KKyAgICBpZiAo IHZpby0+Y2FjaGUtPm51bV9lbnRzID4gdmlvLT5jYWNoZS0+bWF4X2VudHMgKQorICAgIHsKKyAg ICAgICAgQVNTRVJUKHZpby0+aW9fcmVxLnN0YXRlID09IFNUQVRFX0lPUkVRX05PTkUpOworICAg ICAgICB2aW8tPmNhY2hlLT5udW1fZW50cyA9IDA7CisgICAgfQorICAgIGVsc2UKKyAgICAgICAg QVNTRVJUKHZpby0+aW9fcmVxLnN0YXRlID09IFNUQVRFX0lPUkVTUF9SRUFEWSk7CisKICAgICBo dm1fZW11bGF0ZV9pbml0X3Blcl9pbnNuKGh2bWVtdWxfY3R4dCwgdmlvLT5tbWlvX2luc24sCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aW8tPm1taW9faW5zbl9ieXRlcyk7CiAKQEAg LTI1NDcsNiArMjU3Niw3IEBAIHN0YXRpYyBpbnQgX2h2bV9lbXVsYXRlX29uZShzdHJ1Y3QgaHZt X2UKICAgICB7CiAgICAgICAgIHZpby0+bW1pb19jYWNoZV9jb3VudCA9IDA7CiAgICAgICAgIHZp by0+bW1pb19pbnNuX2J5dGVzID0gMDsKKyAgICAgICAgaHZtZW11bF9jYWNoZV9kaXNhYmxlKGN1 cnIpOwogICAgIH0KICAgICBlbHNlCiAgICAgewpAQCAtMjgzOCw2ICsyODY4LDEyMyBAQCB2b2lk IGh2bV9kdW1wX2VtdWxhdGlvbl9zdGF0ZShjb25zdCBjaGFyCiAgICAgICAgICAgIGh2bWVtdWxf Y3R4dC0+aW5zbl9idWYpOwogfQogCitpbnQgaHZtZW11bF9jYWNoZV9pbml0KHN0cnVjdCB2Y3B1 ICp2KQoreworICAgIC8qCisgICAgICogTm8gaW5zbiBjYW4gYWNjZXNzIG1vcmUgdGhhbiAxNiBp bmRlcGVuZGVudCBsaW5lYXIgYWRkcmVzc2VzIChBVlg1MTJGCisgICAgICogc2NhdHRlcnMvZ2F0 aGVycyBiZWluZyB0aGUgd29yc3QpLiBFYWNoIHN1Y2ggbGluZWFyIHJhbmdlIGNhbiBzcGFuIGEK KyAgICAgKiBwYWdlIGJvdW5kYXJ5LCBpLmUuIG1heSByZXF1aXJlIHR3byBwYWdlIHdhbGtzLiBB Y2NvdW50IGZvciBlYWNoIGluc24KKyAgICAgKiBieXRlIGluZGl2aWR1YWxseS4KKyAgICAgKi8K KyAgICBjb25zdCB1bnNpZ25lZCBpbnQgbmVudHMgPSAoQ09ORklHX1BBR0lOR19MRVZFTFMgKyAx KSAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKE1BWF9JTlNUX0xFTiArIDE2ICog Mik7CisgICAgc3RydWN0IGh2bWVtdWxfY2FjaGUgKmNhY2hlID0geG1hbGxvY19mbGV4X3N0cnVj dChzdHJ1Y3QgaHZtZW11bF9jYWNoZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGVudHMsIG5lbnRzKTsKKworICAgIGlmICggIWNhY2hlICkK KyAgICAgICAgcmV0dXJuIC1FTk9NRU07CisKKyAgICAvKiBDYWNoZSBpcyBkaXNhYmxlZCBpbml0 aWFsbHkuICovCisgICAgY2FjaGUtPm51bV9lbnRzID0gbmVudHMgKyAxOworICAgIGNhY2hlLT5t YXhfZW50cyA9IG5lbnRzOworCisgICAgdi0+YXJjaC5odm0uaHZtX2lvLmNhY2hlID0gY2FjaGU7 CisKKyAgICByZXR1cm4gMDsKK30KKwordW5zaWduZWQgaW50IGh2bWVtdWxfY2FjaGVfZGlzYWJs ZShzdHJ1Y3QgdmNwdSAqdikKK3sKKyAgICBzdHJ1Y3QgaHZtZW11bF9jYWNoZSAqY2FjaGUgPSB2 LT5hcmNoLmh2bS5odm1faW8uY2FjaGU7CisgICAgdW5zaWduZWQgaW50IHRva2VuID0gY2FjaGUt Pm51bV9lbnRzOworCisgICAgY2FjaGUtPm51bV9lbnRzID0gY2FjaGUtPm1heF9lbnRzICsgMTsK KworICAgIHJldHVybiB0b2tlbjsKK30KKwordm9pZCBodm1lbXVsX2NhY2hlX3Jlc3RvcmUoc3Ry dWN0IHZjcHUgKnYsIHVuc2lnbmVkIGludCB0b2tlbikKK3sKKyAgICBzdHJ1Y3QgaHZtZW11bF9j YWNoZSAqY2FjaGUgPSB2LT5hcmNoLmh2bS5odm1faW8uY2FjaGU7CisKKyAgICBBU1NFUlQoY2Fj aGUtPm51bV9lbnRzID4gY2FjaGUtPm1heF9lbnRzKTsKKyAgICBjYWNoZS0+bnVtX2VudHMgPSB0 b2tlbjsKK30KKworYm9vbCBodm1lbXVsX3JlYWRfY2FjaGUoY29uc3Qgc3RydWN0IHZjcHUgKnYs IHBhZGRyX3QgZ3BhLAorICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqYnVmZmVyLCB1bnNp Z25lZCBpbnQgc2l6ZSkKK3sKKyAgICBjb25zdCBzdHJ1Y3QgaHZtZW11bF9jYWNoZSAqY2FjaGUg PSB2LT5hcmNoLmh2bS5odm1faW8uY2FjaGU7CisgICAgdW5zaWduZWQgaW50IGk7CisKKyAgICAv KiBDYWNoZSB1bmF2YWlsYWJsZT8gKi8KKyAgICBpZiAoIGNhY2hlLT5udW1fZW50cyA+IGNhY2hl LT5tYXhfZW50cyApCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHdoaWxlICggc2l6ZSA+ IHNpemVvZihjYWNoZS0+ZW50cy0+ZGF0YSkgKQorICAgIHsKKyAgICAgICAgaSA9IGdwYSAmIChz aXplb2YoY2FjaGUtPmVudHMtPmRhdGEpIC0gMSkKKyAgICAgICAgICAgID8gLWdwYSAmIChzaXpl b2YoY2FjaGUtPmVudHMtPmRhdGEpIC0gMSkKKyAgICAgICAgICAgIDogc2l6ZW9mKGNhY2hlLT5l bnRzLT5kYXRhKTsKKyAgICAgICAgaWYgKCAhaHZtZW11bF9yZWFkX2NhY2hlKHYsIGdwYSwgYnVm ZmVyLCBpKSApCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGdwYSArPSBpOwor ICAgICAgICBidWZmZXIgKz0gaTsKKyAgICAgICAgc2l6ZSAtPSBpOworICAgIH0KKworICAgIGZv ciAoIGkgPSAwOyBpIDwgY2FjaGUtPm51bV9lbnRzOyArK2kgKQorICAgICAgICBpZiAoIGNhY2hl LT5lbnRzW2ldLmdwYSA9PSBncGEgJiYgY2FjaGUtPmVudHNbaV0uc2l6ZSA9PSBzaXplICkKKyAg ICAgICAgeworICAgICAgICAgICAgbWVtY3B5KGJ1ZmZlciwgJmNhY2hlLT5lbnRzW2ldLmRhdGEs IHNpemUpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgIHJldHVy biBmYWxzZTsKK30KKwordm9pZCBodm1lbXVsX3dyaXRlX2NhY2hlKGNvbnN0IHN0cnVjdCB2Y3B1 ICp2LCBwYWRkcl90IGdwYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpi dWZmZXIsIHVuc2lnbmVkIGludCBzaXplKQoreworICAgIHN0cnVjdCBodm1lbXVsX2NhY2hlICpj YWNoZSA9IHYtPmFyY2guaHZtLmh2bV9pby5jYWNoZTsKKyAgICB1bnNpZ25lZCBpbnQgaTsKKwor ICAgIC8qIENhY2hlIHVuYXZhaWxhYmxlPyAqLworICAgIGlmICggY2FjaGUtPm51bV9lbnRzID4g Y2FjaGUtPm1heF9lbnRzICkKKyAgICAgICAgcmV0dXJuOworCisgICAgd2hpbGUgKCBzaXplID4g c2l6ZW9mKGNhY2hlLT5lbnRzLT5kYXRhKSApCisgICAgeworICAgICAgICBpID0gZ3BhICYgKHNp emVvZihjYWNoZS0+ZW50cy0+ZGF0YSkgLSAxKQorICAgICAgICAgICAgPyAtZ3BhICYgKHNpemVv ZihjYWNoZS0+ZW50cy0+ZGF0YSkgLSAxKQorICAgICAgICAgICAgOiBzaXplb2YoY2FjaGUtPmVu dHMtPmRhdGEpOworICAgICAgICBodm1lbXVsX3dyaXRlX2NhY2hlKHYsIGdwYSwgYnVmZmVyLCBp KTsKKyAgICAgICAgZ3BhICs9IGk7CisgICAgICAgIGJ1ZmZlciArPSBpOworICAgICAgICBzaXpl IC09IGk7CisgICAgfQorCisgICAgZm9yICggaSA9IDA7IGkgPCBjYWNoZS0+bnVtX2VudHM7ICsr aSApCisgICAgICAgIGlmICggY2FjaGUtPmVudHNbaV0uZ3BhID09IGdwYSAmJiBjYWNoZS0+ZW50 c1tpXS5zaXplID09IHNpemUgKQorICAgICAgICB7CisgICAgICAgICAgICBtZW1jcHkoJmNhY2hl LT5lbnRzW2ldLmRhdGEsIGJ1ZmZlciwgc2l6ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAg ICAgIH0KKworICAgIGlmICggdW5saWtlbHkoaSA+PSBjYWNoZS0+bWF4X2VudHMpICkKKyAgICB7 CisgICAgICAgIEFTU0VSVF9VTlJFQUNIQUJMRSgpOworICAgICAgICByZXR1cm47CisgICAgfQor CisgICAgY2FjaGUtPmVudHNbaV0uZ3BhICA9IGdwYTsKKyAgICBjYWNoZS0+ZW50c1tpXS5zaXpl ID0gc2l6ZTsKKworICAgIG1lbWNweSgmY2FjaGUtPmVudHNbaV0uZGF0YSwgYnVmZmVyLCBzaXpl KTsKKworICAgIGNhY2hlLT5udW1fZW50cyA9IGkgKyAxOworfQorCiAvKgogICogTG9jYWwgdmFy aWFibGVzOgogICogbW9kZTogQwotLS0gYS94ZW4vYXJjaC94ODYvaHZtL2h2bS5jCisrKyBiL3hl bi9hcmNoL3g4Ni9odm0vaHZtLmMKQEAgLTcxNyw2ICs3MTcsOCBAQCBpbnQgaHZtX2RvbWFpbl9p bml0aWFsaXNlKHN0cnVjdCBkb21haW4KIC8qIFRoaXMgZnVuY3Rpb24gYW5kIGFsbCBpdHMgZGVz Y2VuZGFudHMgbmVlZCB0byBiZSB0byBiZSBpZGVtcG90ZW50LiAqLwogdm9pZCBodm1fZG9tYWlu X3JlbGlucXVpc2hfcmVzb3VyY2VzKHN0cnVjdCBkb21haW4gKmQpCiB7CisgICAgc3RydWN0IHZj cHUgKnY7CisKICAgICBpZiAoIGh2bV9mdW5jcy5kb21haW5fcmVsaW5xdWlzaF9yZXNvdXJjZXMg KQogICAgICAgICBhbHRlcm5hdGl2ZV92Y2FsbChodm1fZnVuY3MuZG9tYWluX3JlbGlucXVpc2hf cmVzb3VyY2VzLCBkKTsKIApAQCAtNzMzLDYgKzczNSw5IEBAIHZvaWQgaHZtX2RvbWFpbl9yZWxp bnF1aXNoX3Jlc291cmNlcyhzdHIKICAgICBydGNfZGVpbml0KGQpOwogICAgIHBtdGltZXJfZGVp bml0KGQpOwogICAgIGhwZXRfZGVpbml0KGQpOworCisgICAgZm9yX2VhY2hfdmNwdSAoIGQsIHYg KQorICAgICAgICBodm1lbXVsX2NhY2hlX2Rlc3Ryb3kodik7CiB9CiAKIHZvaWQgaHZtX2RvbWFp bl9kZXN0cm95KHN0cnVjdCBkb21haW4gKmQpCkBAIC0xNTM4LDYgKzE1NDMsMTAgQEAgaW50IGh2 bV92Y3B1X2luaXRpYWxpc2Uoc3RydWN0IHZjcHUgKnYpCiAKICAgICB2LT5hcmNoLmh2bS5pbmpl Y3RfZXZlbnQudmVjdG9yID0gSFZNX0VWRU5UX1ZFQ1RPUl9VTlNFVDsKIAorICAgIHJjID0gaHZt ZW11bF9jYWNoZV9pbml0KHYpOworICAgIGlmICggcmMgKQorICAgICAgICBnb3RvIGZhaWw0Owor CiAgICAgcmMgPSBzZXR1cF9jb21wYXRfYXJnX3hsYXQodik7IC8qIHRlYXJkb3duOiBmcmVlX2Nv bXBhdF9hcmdfeGxhdCgpICovCiAgICAgaWYgKCByYyAhPSAwICkKICAgICAgICAgZ290byBmYWls NDsKQEAgLTE1NzMsNiArMTU4Miw3IEBAIGludCBodm1fdmNwdV9pbml0aWFsaXNlKHN0cnVjdCB2 Y3B1ICp2KQogIGZhaWw1OgogICAgIGZyZWVfY29tcGF0X2FyZ194bGF0KHYpOwogIGZhaWw0Ogor ICAgIGh2bWVtdWxfY2FjaGVfZGVzdHJveSh2KTsKICAgICBodm1fZnVuY3MudmNwdV9kZXN0cm95 KHYpOwogIGZhaWwzOgogICAgIHZsYXBpY19kZXN0cm95KHYpOwpAQCAtMjkzNCw2ICsyOTQ0LDcg QEAgdm9pZCBodm1fdGFza19zd2l0Y2goCiAgICAgdW5zaWduZWQgaW50IGVmbGFncywgbmV3X2Nw bDsKICAgICBwYWdlZmF1bHRfaW5mb190IHBmaW5mbzsKICAgICBpbnQgZXhuX3JhaXNlZCwgcmM7 CisgICAgdW5zaWduZWQgaW50IHRva2VuID0gaHZtZW11bF9jYWNoZV9kaXNhYmxlKHYpOwogICAg IHN0cnVjdCB0c3MzMiB0c3M7CiAKICAgICBodm1fZ2V0X3NlZ21lbnRfcmVnaXN0ZXIodiwgeDg2 X3NlZ19nZHRyLCAmZ2R0KTsKQEAgLTMxNDEsNiArMzE1Miw4IEBAIHZvaWQgaHZtX3Rhc2tfc3dp dGNoKAogIG91dDoKICAgICBodm1fdW5tYXBfZW50cnkob3B0c3NfZGVzYyk7CiAgICAgaHZtX3Vu bWFwX2VudHJ5KG5wdHNzX2Rlc2MpOworCisgICAgaHZtZW11bF9jYWNoZV9yZXN0b3JlKHYsIHRv a2VuKTsKIH0KIAogZW51bSBodm1fdHJhbnNsYXRpb25fcmVzdWx0IGh2bV90cmFuc2xhdGVfZ2V0 X3BhZ2UoCkBAIC0zMjMxLDcgKzMyNDQsNiBAQCBzdGF0aWMgZW51bSBodm1fdHJhbnNsYXRpb25f cmVzdWx0IF9faHZtCiAgICAgZ2ZuX3QgZ2ZuOwogICAgIHN0cnVjdCBwYWdlX2luZm8gKnBhZ2U7 CiAgICAgcDJtX3R5cGVfdCBwMm10OwotICAgIGNoYXIgKnA7CiAgICAgaW50IGNvdW50LCB0b2Rv ID0gc2l6ZTsKIAogICAgIEFTU0VSVChpc19odm1fdmNwdSh2KSk7CkBAIC0zMjc5LDExICszMjkx LDE3IEBAIHN0YXRpYyBlbnVtIGh2bV90cmFuc2xhdGlvbl9yZXN1bHQgX19odm0KICAgICAgICAg ICAgIHJldHVybiBIVk1UUkFOU19uZWVkX3JldHJ5OwogICAgICAgICB9CiAKLSAgICAgICAgcCA9 IF9fbWFwX2RvbWFpbl9wYWdlKHBhZ2UpICsgcGdvZmY7Ci0KLSAgICAgICAgaWYgKCBmbGFncyAm IEhWTUNPUFlfdG9fZ3Vlc3QgKQorICAgICAgICBpZiAoIChmbGFncyAmIEhWTUNPUFlfdG9fZ3Vl c3QpIHx8CisgICAgICAgICAgICAgIWh2bWVtdWxfcmVhZF9jYWNoZSh2LCBnZm5fdG9fZ2FkZHIo Z2ZuKSB8IHBnb2ZmLCBidWYsIGNvdW50KSApCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmICgg cDJtX2lzX2Rpc2NhcmRfd3JpdGUocDJtdCkgKQorICAgICAgICAgICAgdm9pZCAqcCA9IF9fbWFw X2RvbWFpbl9wYWdlKHBhZ2UpICsgcGdvZmY7CisKKyAgICAgICAgICAgIGlmICggIShmbGFncyAm IEhWTUNPUFlfdG9fZ3Vlc3QpICkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBtZW1j cHkoYnVmLCBwLCBjb3VudCk7CisgICAgICAgICAgICAgICAgaHZtZW11bF93cml0ZV9jYWNoZSh2 LCBnZm5fdG9fZ2FkZHIoZ2ZuKSB8IHBnb2ZmLCBidWYsIGNvdW50KTsKKyAgICAgICAgICAgIH0K KyAgICAgICAgICAgIGVsc2UgaWYgKCBwMm1faXNfZGlzY2FyZF93cml0ZShwMm10KSApCiAgICAg ICAgICAgICB7CiAgICAgICAgICAgICAgICAgc3RhdGljIHVuc2lnbmVkIGxvbmcgbGFzdHBhZ2U7 CiAKQEAgLTMzMDAsMTMgKzMzMTgsOSBAQCBzdGF0aWMgZW51bSBodm1fdHJhbnNsYXRpb25fcmVz dWx0IF9faHZtCiAgICAgICAgICAgICAgICAgICAgIG1lbXNldChwLCAwLCBjb3VudCk7CiAgICAg ICAgICAgICAgICAgcGFnaW5nX21hcmtfcGZuX2RpcnR5KHYtPmRvbWFpbiwgX3BmbihnZm5feChn Zm4pKSk7CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7 Ci0gICAgICAgICAgICBtZW1jcHkoYnVmLCBwLCBjb3VudCk7Ci0gICAgICAgIH0KIAotICAgICAg ICB1bm1hcF9kb21haW5fcGFnZShwKTsKKyAgICAgICAgICAgIHVubWFwX2RvbWFpbl9wYWdlKHAp OworICAgICAgICB9CiAKICAgICAgICAgYWRkciArPSBjb3VudDsKICAgICAgICAgaWYgKCBidWYg KQotLS0gYS94ZW4vYXJjaC94ODYvaHZtL2h5cGVyY2FsbC5jCisrKyBiL3hlbi9hcmNoL3g4Ni9o dm0vaHlwZXJjYWxsLmMKQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlIDx4ZW4vaHlwZXJjYWxs Lmg+CiAjaW5jbHVkZSA8eGVuL25vc3BlYy5oPgogCisjaW5jbHVkZSA8YXNtL2h2bS9lbXVsYXRl Lmg+CiAjaW5jbHVkZSA8YXNtL2h2bS9zdXBwb3J0Lmg+CiAKIHN0YXRpYyBsb25nIGh2bV9tZW1v cnlfb3AoaW50IGNtZCwgWEVOX0dVRVNUX0hBTkRMRV9QQVJBTSh2b2lkKSBhcmcpCkBAIC0xNTks NiArMTYwLDcgQEAgaW50IGh2bV9oeXBlcmNhbGwoc3RydWN0IGNwdV91c2VyX3JlZ3MgKgogICAg IHN0cnVjdCBkb21haW4gKmN1cnJkID0gY3Vyci0+ZG9tYWluOwogICAgIGludCBtb2RlID0gaHZt X2d1ZXN0X3g4Nl9tb2RlKGN1cnIpOwogICAgIHVuc2lnbmVkIGxvbmcgZWF4ID0gcmVncy0+ZWF4 OworICAgIHVuc2lnbmVkIGludCB0b2tlbjsKIAogICAgIHN3aXRjaCAoIG1vZGUgKQogICAgIHsK QEAgLTE4Myw3ICsxODUsMTggQEAgaW50IGh2bV9oeXBlcmNhbGwoc3RydWN0IGNwdV91c2VyX3Jl Z3MgKgogICAgIH0KIAogICAgIGlmICggKGVheCAmIDB4ODAwMDAwMDApICYmIGlzX3ZpcmlkaWFu X2RvbWFpbihjdXJyZCkgKQotICAgICAgICByZXR1cm4gdmlyaWRpYW5faHlwZXJjYWxsKHJlZ3Mp OworICAgIHsKKyAgICAgICAgaW50IHJldDsKKworICAgICAgICAvKiBTZWUgY29tbWVudCBiZWxv dy4gKi8KKyAgICAgICAgdG9rZW4gPSBodm1lbXVsX2NhY2hlX2Rpc2FibGUoY3Vycik7CisKKyAg ICAgICAgcmV0ID0gdmlyaWRpYW5faHlwZXJjYWxsKHJlZ3MpOworCisgICAgICAgIGh2bWVtdWxf Y2FjaGVfcmVzdG9yZShjdXJyLCB0b2tlbik7CisKKyAgICAgICAgcmV0dXJuIHJldDsKKyAgICB9 CiAKICAgICBCVUlMRF9CVUdfT04oQVJSQVlfU0laRShodm1faHlwZXJjYWxsX3RhYmxlKSA+CiAg ICAgICAgICAgICAgICAgIEFSUkFZX1NJWkUoaHlwZXJjYWxsX2FyZ3NfdGFibGUpKTsKQEAgLTIw Miw2ICsyMTUsMTIgQEAgaW50IGh2bV9oeXBlcmNhbGwoc3RydWN0IGNwdV91c2VyX3JlZ3MgKgog ICAgICAgICByZXR1cm4gSFZNX0hDQUxMX2NvbXBsZXRlZDsKICAgICB9CiAKKyAgICAvKgorICAg ICAqIENhY2hpbmcgaXMgaW50ZW5kZWQgZm9yIGluc3RydWN0aW9uIGVtdWxhdGlvbiBvbmx5LiBE aXNhYmxlIGl0CisgICAgICogZm9yIGFueSBhY2Nlc3NlcyBieSBoeXBlcmNhbGwgYXJndW1lbnQg Y29weS1pbiAvIGNvcHktb3V0LgorICAgICAqLworICAgIHRva2VuID0gaHZtZW11bF9jYWNoZV9k aXNhYmxlKGN1cnIpOworCiAgICAgY3Vyci0+aGNhbGxfcHJlZW1wdGVkID0gZmFsc2U7CiAKICAg ICBpZiAoIG1vZGUgPT0gOCApCkBAIC0yOTUsNiArMzE0LDggQEAgaW50IGh2bV9oeXBlcmNhbGwo c3RydWN0IGNwdV91c2VyX3JlZ3MgKgogI2VuZGlmCiAgICAgfQogCisgICAgaHZtZW11bF9jYWNo ZV9yZXN0b3JlKGN1cnIsIHRva2VuKTsKKwogICAgIEhWTV9EQkdfTE9HKERCR19MRVZFTF9IQ0FM TCwgImhjYWxsJWx1IC0+ICVseCIsIGVheCwgcmVncy0+cmF4KTsKIAogICAgIGlmICggY3Vyci0+ aGNhbGxfcHJlZW1wdGVkICkKLS0tIGEveGVuL2FyY2gveDg2L2h2bS9pbnRlcmNlcHQuYworKysg Yi94ZW4vYXJjaC94ODYvaHZtL2ludGVyY2VwdC5jCkBAIC0yMCw2ICsyMCw3IEBACiAjaW5jbHVk ZSA8eGVuL3R5cGVzLmg+CiAjaW5jbHVkZSA8eGVuL3NjaGVkLmg+CiAjaW5jbHVkZSA8YXNtL3Jl Z3MuaD4KKyNpbmNsdWRlIDxhc20vaHZtL2VtdWxhdGUuaD4KICNpbmNsdWRlIDxhc20vaHZtL2h2 bS5oPgogI2luY2x1ZGUgPGFzbS9odm0vc3VwcG9ydC5oPgogI2luY2x1ZGUgPGFzbS9odm0vZG9t YWluLmg+CkBAIC0xNjMsNiArMTY0LDkgQEAgaW50IGh2bV9wcm9jZXNzX2lvX2ludGVyY2VwdChj b25zdCBzdHJ1YwogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIHAtPmRhdGFfaXNfcHRyICkK ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBzdHJ1Y3QgdmNwdSAqY3VyciA9IGN1cnJl bnQ7CisgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHRva2VuID0gaHZtZW11bF9jYWNoZV9k aXNhYmxlKGN1cnIpOworCiAgICAgICAgICAgICAgICAgZGF0YSA9IDA7CiAgICAgICAgICAgICAg ICAgc3dpdGNoICggaHZtX2NvcHlfZnJvbV9ndWVzdF9waHlzKCZkYXRhLCBwLT5kYXRhICsgc3Rl cCAqIGksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHAtPnNpemUpICkKQEAgLTE3OSw5ICsxODMsMTEgQEAgaW50IGh2bV9wcm9jZXNzX2lvX2ludGVy Y2VwdChjb25zdCBzdHJ1YwogICAgICAgICAgICAgICAgICAgICBBU1NFUlRfVU5SRUFDSEFCTEUo KTsKICAgICAgICAgICAgICAgICAgICAgLyogZmFsbCB0aHJvdWdoICovCiAgICAgICAgICAgICAg ICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgZG9tYWluX2NyYXNoKGN1cnJlbnQtPmRv bWFpbik7CisgICAgICAgICAgICAgICAgICAgIGRvbWFpbl9jcmFzaChjdXJyLT5kb21haW4pOwog ICAgICAgICAgICAgICAgICAgICByZXR1cm4gWDg2RU1VTF9VTkhBTkRMRUFCTEU7CiAgICAgICAg ICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaHZtZW11bF9jYWNoZV9yZXN0b3JlKGN1cnIs IHRva2VuKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAg ICBkYXRhID0gcC0+ZGF0YTsKLS0tIGEveGVuL2FyY2gveDg2L2h2bS9zdm0vc3ZtLmMKKysrIGIv eGVuL2FyY2gveDg2L2h2bS9zdm0vc3ZtLmMKQEAgLTEwNDAsNiArMTA0MCw4IEBAIHZvaWQgc3Zt X3ZtZW50ZXJfaGVscGVyKGNvbnN0IHN0cnVjdCBjcHUKICAgICBzdHJ1Y3QgdmNwdSAqY3VyciA9 IGN1cnJlbnQ7CiAgICAgc3RydWN0IHZtY2Jfc3RydWN0ICp2bWNiID0gY3Vyci0+YXJjaC5odm0u c3ZtLnZtY2I7CiAKKyAgICBBU1NFUlQoaHZtZW11bF9jYWNoZV9kaXNhYmxlZChjdXJyKSk7CisK ICAgICBzdm1fYXNpZF9oYW5kbGVfdm1ydW4oKTsKIAogICAgIGlmICggdW5saWtlbHkodGJfaW5p dF9kb25lKSApCi0tLSBhL3hlbi9hcmNoL3g4Ni9odm0vdm1zaS5jCisrKyBiL3hlbi9hcmNoL3g4 Ni9odm0vdm1zaS5jCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSA8eGVuL2lycS5oPgogI2lu Y2x1ZGUgPHhlbi92cGNpLmg+CiAjaW5jbHVkZSA8cHVibGljL2h2bS9pb3JlcS5oPgorI2luY2x1 ZGUgPGFzbS9odm0vZW11bGF0ZS5oPgogI2luY2x1ZGUgPGFzbS9odm0vaW8uaD4KICNpbmNsdWRl IDxhc20vaHZtL3ZwaWMuaD4KICNpbmNsdWRlIDxhc20vaHZtL3ZsYXBpYy5oPgpAQCAtNjA3LDYg KzYwOCw3IEBAIHZvaWQgbXNpeF93cml0ZV9jb21wbGV0aW9uKHN0cnVjdCB2Y3B1ICoKICAgICBp ZiAoICFjdHJsX2FkZHJlc3MgJiYgc25vb3BfYWRkciAmJgogICAgICAgICAgdi0+YXJjaC5odm0u aHZtX2lvLm1zaXhfc25vb3BfZ3BhICkKICAgICB7CisgICAgICAgIHVuc2lnbmVkIGludCB0b2tl biA9IGh2bWVtdWxfY2FjaGVfZGlzYWJsZSh2KTsKICAgICAgICAgY29uc3Qgc3RydWN0IG1zaV9k ZXNjICpkZXNjOwogICAgICAgICB1aW50MzJfdCBkYXRhOwogCkBAIC02MjEsNiArNjIzLDggQEAg dm9pZCBtc2l4X3dyaXRlX2NvbXBsZXRpb24oc3RydWN0IHZjcHUgKgogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoZGF0YSkpID09IEhWTVRSQU5TX29rYXkgJiYK ICAgICAgICAgICAgICAhKGRhdGEgJiBQQ0lfTVNJWF9WRUNUT1JfQklUTUFTSykgKQogICAgICAg ICAgICAgY3RybF9hZGRyZXNzID0gc25vb3BfYWRkcjsKKworICAgICAgICBodm1lbXVsX2NhY2hl X3Jlc3RvcmUodiwgdG9rZW4pOwogICAgIH0KIAogICAgIGlmICggIWN0cmxfYWRkcmVzcyApCi0t LSBhL3hlbi9hcmNoL3g4Ni9odm0vdm14L3ZteC5jCisrKyBiL3hlbi9hcmNoL3g4Ni9odm0vdm14 L3ZteC5jCkBAIC00MzQ3LDYgKzQzNDcsOCBAQCBib29sIHZteF92bWVudGVyX2hlbHBlcihjb25z dCBzdHJ1Y3QgY3B1CiAgICAgc3RydWN0IGh2bV92Y3B1X2FzaWQgKnBfYXNpZDsKICAgICBib29s X3QgbmVlZF9mbHVzaDsKIAorICAgIEFTU0VSVChodm1lbXVsX2NhY2hlX2Rpc2FibGVkKGN1cnIp KTsKKwogICAgIC8qIFNoYWRvdyBFUFRQIGNhbid0IGJlIHVwZGF0ZWQgaGVyZSBiZWNhdXNlIGly cXMgYXJlIGRpc2FibGVkICovCiAgICAgIGlmICggbmVzdGVkaHZtX3ZjcHVfaW5fZ3Vlc3Rtb2Rl KGN1cnIpICYmIHZjcHVfbmVzdGVkaHZtKGN1cnIpLnN0YWxlX25wMm0gKQogICAgICAgICAgcmV0 dXJuIGZhbHNlOwotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L2h2bS9lbXVsYXRlLmgKKysrIGIv eGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vZW11bGF0ZS5oCkBAIC0xMyw2ICsxMyw3IEBACiAjZGVm aW5lIF9fQVNNX1g4Nl9IVk1fRU1VTEFURV9IX18KIAogI2luY2x1ZGUgPHhlbi9lcnIuaD4KKyNp bmNsdWRlIDx4ZW4vc2NoZWQuaD4KICNpbmNsdWRlIDxhc20vaHZtL2h2bS5oPgogI2luY2x1ZGUg PGFzbS94ODZfZW11bGF0ZS5oPgogCkBAIC05Niw2ICs5NywzMSBAQCBpbnQgaHZtZW11bF9kb19w aW9fYnVmZmVyKHVpbnQxNl90IHBvcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4 X3QgZGlyLAogICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpidWZmZXIpOwogCisjaWZk ZWYgQ09ORklHX0hWTQoraW50IF9fbXVzdF9jaGVjayBodm1lbXVsX2NhY2hlX2luaXQoc3RydWN0 IHZjcHUgKnYpOworc3RhdGljIGlubGluZSB2b2lkIGh2bWVtdWxfY2FjaGVfZGVzdHJveShzdHJ1 Y3QgdmNwdSAqdikKK3sKKyAgICBYRlJFRSh2LT5hcmNoLmh2bS5odm1faW8uY2FjaGUpOworfQor Ym9vbCBodm1lbXVsX3JlYWRfY2FjaGUoY29uc3Qgc3RydWN0IHZjcHUgKiwgcGFkZHJfdCBncGEs CisgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpidWZmZXIsIHVuc2lnbmVkIGludCBzaXpl KTsKK3ZvaWQgaHZtZW11bF93cml0ZV9jYWNoZShjb25zdCBzdHJ1Y3QgdmNwdSAqLCBwYWRkcl90 IGdwYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpidWZmZXIsIHVuc2ln bmVkIGludCBzaXplKTsKK3Vuc2lnbmVkIGludCBodm1lbXVsX2NhY2hlX2Rpc2FibGUoc3RydWN0 IHZjcHUgKik7Cit2b2lkIGh2bWVtdWxfY2FjaGVfcmVzdG9yZShzdHJ1Y3QgdmNwdSAqLCB1bnNp Z25lZCBpbnQgdG9rZW4pOworLyogRm9yIHVzZSBpbiBBU1NFUlQoKXMgb25seTogKi8KK3N0YXRp YyBpbmxpbmUgYm9vbCBodm1lbXVsX2NhY2hlX2Rpc2FibGVkKHN0cnVjdCB2Y3B1ICp2KQorewor ICAgIHJldHVybiBodm1lbXVsX2NhY2hlX2Rpc2FibGUodikgPT0gaHZtZW11bF9jYWNoZV9kaXNh YmxlKHYpOworfQorI2Vsc2UKK3N0YXRpYyBpbmxpbmUgYm9vbCBodm1lbXVsX3JlYWRfY2FjaGUo Y29uc3Qgc3RydWN0IHZjcHUgKnYsIHBhZGRyX3QgZ3BhLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB2b2lkICpidWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHVuc2lnbmVkIGludCBzaXplKSB7IHJldHVybiBmYWxzZTsgfQorc3RhdGljIGlu bGluZSB2b2lkIGh2bWVtdWxfd3JpdGVfY2FjaGUoY29uc3Qgc3RydWN0IHZjcHUgKnYsIHBhZGRy X3QgZ3BhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9p ZCAqYnVmLCB1bnNpZ25lZCBpbnQgc2l6ZSkge30KKyNlbmRpZgorCiB2b2lkIGh2bV9kdW1wX2Vt dWxhdGlvbl9zdGF0ZShjb25zdCBjaGFyICpsb2dsdmwsIGNvbnN0IGNoYXIgKnByZWZpeCwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBodm1fZW11bGF0ZV9jdHh0ICpodm1l bXVsX2N0eHQsIGludCByYyk7CiAKLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni9odm0vdmNwdS5o CisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYvaHZtL3ZjcHUuaApAQCAtNzcsNiArNzcsOCBAQCBz dHJ1Y3QgaHZtX3ZjcHVfaW8gewogICAgIC8qIEZvciByZXRyaWVzIHdlIHNob3VsZG4ndCByZS1m ZXRjaCB0aGUgaW5zdHJ1Y3Rpb24uICovCiAgICAgdW5zaWduZWQgaW50IG1taW9faW5zbl9ieXRl czsKICAgICB1bnNpZ25lZCBjaGFyIG1taW9faW5zblsxNl07CisgICAgc3RydWN0IGh2bWVtdWxf Y2FjaGUgKmNhY2hlOworCiAgICAgLyoKICAgICAgKiBGb3Igc3RyaW5nIGluc3RydWN0aW9uIGVt dWxhdGlvbiB3ZSBuZWVkIHRvIGJlIGFibGUgdG8gc2lnbmFsIGEKICAgICAgKiBuZWNlc3Nhcnkg cmV0cnkgdGhyb3VnaCBvdGhlciB0aGFuIGZ1bmN0aW9uIHJldHVybiBjb2Rlcy4KCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5n IGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJv amVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=