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=-13.0 required=3.0 tests=BAYES_00, 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 97942C433E0 for ; Fri, 7 Aug 2020 17:45:26 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (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 7356A2086A for ; Fri, 7 Aug 2020 17:45:26 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 7356A2086A Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=Intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id DE8ED897EE; Fri, 7 Aug 2020 17:45:23 +0000 (UTC) Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by gabe.freedesktop.org (Postfix) with ESMTPS id 75844898A3 for ; Fri, 7 Aug 2020 17:45:22 +0000 (UTC) IronPort-SDR: BUF+XonQLdin/Bj4gQmwncG4zcGbAOXGIaC8xj3fYlj7KyXr9toi8keCckMITcyXZBqQguUexu e8ZZfmU0cJeQ== X-IronPort-AV: E=McAfee;i="6000,8403,9706"; a="132712923" X-IronPort-AV: E=Sophos;i="5.75,446,1589266800"; d="scan'208";a="132712923" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 07 Aug 2020 10:45:21 -0700 IronPort-SDR: gqSb08gBSN0uZum5E+Jo2VeoHbOoQtWu3XOo5rlLSbP0cXSh630wsJ21Y873wSJ3qFGin/HsPv va+J16g+tsNw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.75,446,1589266800"; d="scan'208";a="307447333" Received: from relo-linux-5.jf.intel.com ([10.165.21.134]) by orsmga002.jf.intel.com with ESMTP; 07 Aug 2020 10:45:21 -0700 From: John.C.Harrison@Intel.com To: Intel-GFX@Lists.FreeDesktop.Org Date: Fri, 7 Aug 2020 10:46:36 -0700 Message-Id: <20200807174637.375324-2-John.C.Harrison@Intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200807174637.375324-1-John.C.Harrison@Intel.com> References: <20200807174637.375324-1-John.C.Harrison@Intel.com> MIME-Version: 1.0 Organization: Intel Corporation (UK) Ltd. - Co. Reg. #1134945 - Pipers Way, Swindon SN3 1RJ Subject: [Intel-gfx] [PATCH 1/2] drm/i915/guc: Update to GuC v45.0.0 X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" RnJvbTogSm9obiBIYXJyaXNvbiA8Sm9obi5DLkhhcnJpc29uQEludGVsLmNvbT4KClVwZGF0ZSB0 byB0aGUgbGF0ZXN0IEd1QyBmaXJtd2FyZS4gVGhpcyBpbmNsdWRlcyBzb21lIHNpZ25pZmljYW50 CmNoYW5nZXMgdG8gdGhlIGludGVyZmFjZS4KClNpZ25lZC1vZmYtYnk6IEpvaG4gSGFycmlzb24g PEpvaG4uQy5IYXJyaXNvbkBJbnRlbC5jb20+CkF1dGhvcjogRGFuaWVsZSBDZXJhb2xvIFNwdXJp byA8ZGFuaWVsZS5jZXJhb2xvc3B1cmlvQGludGVsLmNvbT4KQXV0aG9yOiBKb2huIEhhcnJpc29u IDxKb2huLkMuSGFycmlzb25ASW50ZWwuY29tPgpBdXRob3I6IE1hdHRoZXcgQnJvc3QgPG1hdHRo ZXcuYnJvc3RAaW50ZWwuY29tPgpBdXRob3I6IE1pY2hhbCBXYWpkZWN6a28gPG1pY2hhbC53YWpk ZWN6a29AaW50ZWwuY29tPgpBdXRob3I6IE1pY2hlbCBUaGllcnJ5IDxtaWNoZWwudGhpZXJyeUBp bnRlbC5jb20+CkF1dGhvcjogT3NjYXIgTWF0ZW8gPG9zY2FyLm1hdGVvQGludGVsLmNvbT4KQXV0 aG9yOiBSb2RyaWdvIFZpdmkgPHJvZHJpZ28udml2aUBpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2NzLmMgICAgfCAgIDMgKy0KIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Yy5jICAgICAgIHwgMTI1ICsrKysrKystLS0tCiBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfYWJpLmggICB8IDIxNSArKysrKysrKysr KysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfYWRzLmMgICB8 IDExNiArKysrKysrKy0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfZncu YyAgICB8ICAyMSArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX2Z3aWYu aCAgfCAxMTAgKysrKy0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3Vj X3JlZy5oICAgfCAgIDUgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfdWNfZncu YyAgICAgfCAgMjcgKystCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF91Y19mdy5o ICAgICB8ICAgMiArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF91Y19md19hYmku aCB8ICAgNiArLQogMTAgZmlsZXMgY2hhbmdlZCwgNDg1IGluc2VydGlvbnMoKyksIDE0NSBkZWxl dGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9p bnRlbF9ndWNfYWJpLmgKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRl bF9lbmdpbmVfY3MuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9jcy5j CmluZGV4IGVhNGJhMmFmZTlmOS4uOWNkNjJkNjhhYmM2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC9pbnRlbF9lbmdpbmVfY3MuYwpAQCAtMzA1LDggKzMwNSw5IEBAIHN0YXRpYyBpbnQgaW50 ZWxfZW5naW5lX3NldHVwKHN0cnVjdCBpbnRlbF9ndCAqZ3QsIGVudW0gaW50ZWxfZW5naW5lX2lk IGlkKQogCWVuZ2luZS0+aTkxNSA9IGk5MTU7CiAJZW5naW5lLT5ndCA9IGd0OwogCWVuZ2luZS0+ dW5jb3JlID0gZ3QtPnVuY29yZTsKLQllbmdpbmUtPmh3X2lkID0gZW5naW5lLT5ndWNfaWQgPSBp bmZvLT5od19pZDsKIAllbmdpbmUtPm1taW9fYmFzZSA9IF9fZW5naW5lX21taW9fYmFzZShpOTE1 LCBpbmZvLT5tbWlvX2Jhc2VzKTsKKwllbmdpbmUtPmh3X2lkID0gaW5mby0+aHdfaWQ7CisJZW5n aW5lLT5ndWNfaWQgPSBNQUtFX0dVQ19JRChpbmZvLT5jbGFzcywgaW5mby0+aW5zdGFuY2UpOwog CiAJZW5naW5lLT5jbGFzcyA9IGluZm8tPmNsYXNzOwogCWVuZ2luZS0+aW5zdGFuY2UgPSBpbmZv LT5pbnN0YW5jZTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVs X2d1Yy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjLmMKaW5kZXggODYx NjU3ODk3YzBmLi44ZDMwZTFkN2Q4YTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L3VjL2ludGVsX2d1Yy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVs X2d1Yy5jCkBAIC03LDYgKzcsNyBAQAogI2luY2x1ZGUgImd0L2ludGVsX2d0X2lycS5oIgogI2lu Y2x1ZGUgImd0L2ludGVsX2d0X3BtX2lycS5oIgogI2luY2x1ZGUgImludGVsX2d1Yy5oIgorI2lu Y2x1ZGUgImludGVsX2d1Y19hYmkuaCIKICNpbmNsdWRlICJpbnRlbF9ndWNfYWRzLmgiCiAjaW5j bHVkZSAiaW50ZWxfZ3VjX3N1Ym1pc3Npb24uaCIKICNpbmNsdWRlICJpOTE1X2Rydi5oIgpAQCAt MjEzLDIzICsyMTQsNiBAQCBzdGF0aWMgdTMyIGd1Y19jdGxfZmVhdHVyZV9mbGFncyhzdHJ1Y3Qg aW50ZWxfZ3VjICpndWMpCiAJcmV0dXJuIGZsYWdzOwogfQogCi1zdGF0aWMgdTMyIGd1Y19jdGxf Y3R4aW5mb19mbGFncyhzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCi17Ci0JdTMyIGZsYWdzID0gMDsK LQotCWlmIChpbnRlbF9ndWNfc3VibWlzc2lvbl9pc191c2VkKGd1YykpIHsKLQkJdTMyIGN0eG51 bSwgYmFzZTsKLQotCQliYXNlID0gaW50ZWxfZ3VjX2dndHRfb2Zmc2V0KGd1YywgZ3VjLT5zdGFn ZV9kZXNjX3Bvb2wpOwotCQljdHhudW0gPSBHVUNfTUFYX1NUQUdFX0RFU0NSSVBUT1JTIC8gMTY7 Ci0KLQkJYmFzZSA+Pj0gUEFHRV9TSElGVDsKLQkJZmxhZ3MgfD0gKGJhc2UgPDwgR1VDX0NUTF9C QVNFX0FERFJfU0hJRlQpIHwKLQkJCShjdHhudW0gPDwgR1VDX0NUTF9DVFhOVU1fSU4xNl9TSElG VCk7Ci0JfQotCXJldHVybiBmbGFnczsKLX0KLQogc3RhdGljIHUzMiBndWNfY3RsX2xvZ19wYXJh bXNfZmxhZ3Moc3RydWN0IGludGVsX2d1YyAqZ3VjKQogewogCXUzMiBvZmZzZXQgPSBpbnRlbF9n dWNfZ2d0dF9vZmZzZXQoZ3VjLCBndWMtPmxvZy52bWEpID4+IFBBR0VfU0hJRlQ7CkBAIC0yOTEs NyArMjc1LDYgQEAgc3RhdGljIHZvaWQgZ3VjX2luaXRfcGFyYW1zKHN0cnVjdCBpbnRlbF9ndWMg Kmd1YykKIAogCUJVSUxEX0JVR19PTihzaXplb2YoZ3VjLT5wYXJhbXMpICE9IEdVQ19DVExfTUFY X0RXT1JEUyAqIHNpemVvZih1MzIpKTsKIAotCXBhcmFtc1tHVUNfQ1RMX0NUWElORk9dID0gZ3Vj X2N0bF9jdHhpbmZvX2ZsYWdzKGd1Yyk7CiAJcGFyYW1zW0dVQ19DVExfTE9HX1BBUkFNU10gPSBn dWNfY3RsX2xvZ19wYXJhbXNfZmxhZ3MoZ3VjKTsKIAlwYXJhbXNbR1VDX0NUTF9GRUFUVVJFXSA9 IGd1Y19jdGxfZmVhdHVyZV9mbGFncyhndWMpOwogCXBhcmFtc1tHVUNfQ1RMX0RFQlVHXSA9IGd1 Y19jdGxfZGVidWdfZmxhZ3MoZ3VjKTsKQEAgLTQwMCwzMiArMzgzLDY1IEBAIHZvaWQgaW50ZWxf Z3VjX2Zpbmkoc3RydWN0IGludGVsX2d1YyAqZ3VjKQogCWludGVsX3VjX2Z3X2ZpbmkoJmd1Yy0+ ZncpOwogfQogCitzdGF0aWMgYm9vbCBpc192YWxpZF9tbWlvX2FjdGlvbih1MzIgYWN0aW9uKQor eworCXJldHVybiBhY3Rpb24gPT0gR1VDX0FDVElPTl9SRUdJU1RFUl9DVEIgfHwKKwkgICAgICAg YWN0aW9uID09IEdVQ19BQ1RJT05fREVSRUdJU1RFUl9DVEI7Cit9CisKK3N0YXRpYyBpbnQgZ3Vj X3N0YXR1c190b19lcnJubyh1MzIgc3RhdHVzKQoreworCXN3aXRjaCAoc3RhdHVzKSB7CisJY2Fz ZSBHVUNfU1RBVFVTX1VOS05PV05fQUNUSU9OOgorCQlyZXR1cm4gLUVPUE5PVFNVUFA7CisJY2Fz ZSBHVUNfU1RBVFVTX0lOVkFMSURfUEFSQU1TOgorCQlyZXR1cm4gLUVJTlZBTDsKKwljYXNlIEdV Q19TVEFUVVNfSU5WQUxJRF9BRERSOgorCQlyZXR1cm4gLUVGQVVMVDsKKwljYXNlIEdVQ19TVEFU VVNfQ1RYX05PVF9SRUdJU1RFUkVEOgorCQlyZXR1cm4gLUVTUkNIOworCWNhc2UgR1VDX1NUQVRV U19DVEJfRlVMTDoKKwkJcmV0dXJuIC1FTk9TUEM7CisJY2FzZSBHVUNfU1RBVFVTX1VOQVVUSE9S SVpFRF9SRVFVRVNUOgorCQlyZXR1cm4gLUVBQ0NFUzsKKwljYXNlIEdVQ19TVEFUVVNfR0VORVJJ Q19GQUlMOgorCWRlZmF1bHQ6CisJCXJldHVybiAtRU5YSU87CisJfQorfQorCiAvKgogICogVGhp cyBmdW5jdGlvbiBpbXBsZW1lbnRzIHRoZSBNTUlPIGJhc2VkIGhvc3QgdG8gR3VDIGludGVyZmFj ZS4KICAqLwotaW50IGludGVsX2d1Y19zZW5kX21taW8oc3RydWN0IGludGVsX2d1YyAqZ3VjLCBj b25zdCB1MzIgKmFjdGlvbiwgdTMyIGxlbiwKK2ludCBpbnRlbF9ndWNfc2VuZF9tbWlvKHN0cnVj dCBpbnRlbF9ndWMgKmd1YywgY29uc3QgdTMyICpyZXF1ZXN0LCB1MzIgbGVuLAogCQkJdTMyICpy ZXNwb25zZV9idWYsIHUzMiByZXNwb25zZV9idWZfc2l6ZSkKIHsKKwlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqaTkxNSA9IGd1Y190b19ndChndWMpLT5pOTE1OwogCXN0cnVjdCBpbnRlbF91bmNv cmUgKnVuY29yZSA9IGd1Y190b19ndChndWMpLT51bmNvcmU7Ci0JdTMyIHN0YXR1czsKKwl1MzIg YWN0aW9uID0gRklFTERfR0VUKEdVQ19NTUlPX1JFUVVFU1RfQUNUSU9OLCAqcmVxdWVzdCk7CisJ dTMyIHN1YmNvZGUgPSBGSUVMRF9HRVQoR1VDX01NSU9fUkVRVUVTVF9TVUJDT0RFLCAqcmVxdWVz dCk7CisJdTMyIG1hZ2ljID0gR1VDX01NSU9fTVNHX01BR0lDX0RFRkFVTFQ7CisJdTMyIGhlYWRl cjsKIAlpbnQgaTsKIAlpbnQgcmV0OwogCiAJR0VNX0JVR19PTighbGVuKTsKIAlHRU1fQlVHX09O KGxlbiA+IGd1Yy0+c2VuZF9yZWdzLmNvdW50KTsKIAotCS8qIFdlIGV4cGVjdCBvbmx5IGFjdGlv biBjb2RlICovCi0JR0VNX0JVR19PTigqYWN0aW9uICYgfklOVEVMX0dVQ19NU0dfQ09ERV9NQVNL KTsKKwkvKiBXZSBleHBlY3QgdG8gdXNlIE1NSU8gb25seSBmb3Igc3BlY2lhbCBhY3Rpb25zICov CisJR0VNX0JVR19PTighaXNfdmFsaWRfbW1pb19hY3Rpb24oYWN0aW9uKSk7CiAKLQkvKiBJZiBD VCBpcyBhdmFpbGFibGUsIHdlIGV4cGVjdCB0byB1c2UgTU1JTyBvbmx5IGR1cmluZyBpbml0L2Zp bmkgKi8KLQlHRU1fQlVHX09OKCphY3Rpb24gIT0gSU5URUxfR1VDX0FDVElPTl9SRUdJU1RFUl9D T01NQU5EX1RSQU5TUE9SVF9CVUZGRVIgJiYKLQkJICAgKmFjdGlvbiAhPSBJTlRFTF9HVUNfQUNU SU9OX0RFUkVHSVNURVJfQ09NTUFORF9UUkFOU1BPUlRfQlVGRkVSKTsKKwloZWFkZXIgPSBGSUVM RF9QUkVQKEdVQ19NTUlPX01TR19UWVBFLCBHVUNfTU1JT19NU0dfVFlQRV9SRVFVRVNUKSB8CisJ CUZJRUxEX1BSRVAoR1VDX01NSU9fTVNHX01BR0lDLCBtYWdpYykgfAorCQlGSUVMRF9QUkVQKEdV Q19NTUlPX1JFUVVFU1RfU1VCQ09ERSwgc3ViY29kZSkgfAorCQlGSUVMRF9QUkVQKEdVQ19NTUlP X1JFUVVFU1RfQUNUSU9OLCBhY3Rpb24pOwogCiAJbXV0ZXhfbG9jaygmZ3VjLT5zZW5kX211dGV4 KTsKIAlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2dldCh1bmNvcmUsIGd1Yy0+c2VuZF9yZWdzLmZ3 X2RvbWFpbnMpOwogCi0JZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKQotCQlpbnRlbF91bmNvcmVf d3JpdGUodW5jb3JlLCBndWNfc2VuZF9yZWcoZ3VjLCBpKSwgYWN0aW9uW2ldKTsKKwlpbnRlbF91 bmNvcmVfd3JpdGUodW5jb3JlLCBndWNfc2VuZF9yZWcoZ3VjLCAwKSwgaGVhZGVyKTsKKwlmb3Ig KGkgPSAxOyBpIDwgbGVuOyBpKyspCisJCWludGVsX3VuY29yZV93cml0ZSh1bmNvcmUsIGd1Y19z ZW5kX3JlZyhndWMsIGkpLCByZXF1ZXN0W2ldKTsKIAogCWludGVsX3VuY29yZV9wb3N0aW5nX3Jl YWQodW5jb3JlLCBndWNfc2VuZF9yZWcoZ3VjLCBpIC0gMSkpOwogCkBAIC00MzcsMTcgKzQ1Myw0 NSBAQCBpbnQgaW50ZWxfZ3VjX3NlbmRfbW1pbyhzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsIGNvbnN0 IHUzMiAqYWN0aW9uLCB1MzIgbGVuLAogCSAqLwogCXJldCA9IF9faW50ZWxfd2FpdF9mb3JfcmVn aXN0ZXJfZncodW5jb3JlLAogCQkJCQkgICBndWNfc2VuZF9yZWcoZ3VjLCAwKSwKLQkJCQkJICAg SU5URUxfR1VDX01TR19UWVBFX01BU0ssCi0JCQkJCSAgIElOVEVMX0dVQ19NU0dfVFlQRV9SRVNQ T05TRSA8PAotCQkJCQkgICBJTlRFTF9HVUNfTVNHX1RZUEVfU0hJRlQsCi0JCQkJCSAgIDEwLCAx MCwgJnN0YXR1cyk7Ci0JLyogSWYgR3VDIGV4cGxpY2l0bHkgcmV0dXJuZWQgYW4gZXJyb3IsIGNv bnZlcnQgaXQgdG8gLUVJTyAqLwotCWlmICghcmV0ICYmICFJTlRFTF9HVUNfTVNHX0lTX1JFU1BP TlNFX1NVQ0NFU1Moc3RhdHVzKSkKLQkJcmV0ID0gLUVJTzsKKwkJCQkJICAgR1VDX01NSU9fTVNH X09SSUdJTiwKKwkJCQkJICAgRklFTERfUFJFUChHVUNfTU1JT19NU0dfT1JJR0lOLAorCQkJCQkJ ICAgICAgR1VDX01NSU9fTVNHX09SSUdJTl9HVUMpLAorCQkJCQkgICAxMCwgMTAsICZoZWFkZXIp OworCWlmICh1bmxpa2VseShyZXQpKQorCQlnb3RvIG91dDsKIAotCWlmIChyZXQpIHsKLQkJRFJN X0VSUk9SKCJNTUlPOiBHdUMgYWN0aW9uICUjeCBmYWlsZWQgd2l0aCBlcnJvciAlZCAlI3hcbiIs Ci0JCQkgIGFjdGlvblswXSwgcmV0LCBzdGF0dXMpOworCWlmICh1bmxpa2VseShGSUVMRF9HRVQo R1VDX01NSU9fTVNHX01BR0lDLCBoZWFkZXIpICE9IG1hZ2ljKSkgeworCQlyZXQgPSAtRVNUQUxF OworCQlnb3RvIG91dDsKKwl9CisKKwlpZiAoRklFTERfR0VUKEdVQ19NTUlPX01TR19UWVBFLCBo ZWFkZXIpID09IEdVQ19NTUlPX01TR19UWVBFX0JVU1kpIHsKKyNkZWZpbmUgZG9uZSAoeyBoZWFk ZXIgPSBpbnRlbF91bmNvcmVfcmVhZCh1bmNvcmUsIGd1Y19zZW5kX3JlZyhndWMsIDApKTsgXAor CQlGSUVMRF9HRVQoR1VDX01NSU9fTVNHX1RZUEUsIGhlYWRlcikgIT0gR1VDX01NSU9fTVNHX1RZ UEVfQlVTWTsgfSkKKwkJcmV0ID0gd2FpdF9mb3IoZG9uZSwgMTAwMCk7CisJCWlmICh1bmxpa2Vs eShyZXQpKQorCQkJZ290byBvdXQ7CisJCWlmICh1bmxpa2VseShGSUVMRF9HRVQoR1VDX01NSU9f TVNHX09SSUdJTiwgaGVhZGVyKSAhPQorCQkJCSAgICAgICBHVUNfTU1JT19NU0dfT1JJR0lOX0dV QykpIHsKKwkJCXJldCA9IC1FUFJPVE87CisJCQlnb3RvIG91dDsKKwkJfQorCQlpZiAodW5saWtl bHkoRklFTERfR0VUKEdVQ19NTUlPX01TR19NQUdJQywgaGVhZGVyKSAhPSBtYWdpYykpIHsKKwkJ CXJldCA9IC1FU1RBTEU7CisJCQlnb3RvIG91dDsKKwkJfQorI3VuZGVmIGRvbmUKKwl9CisKKwlp ZiAoRklFTERfR0VUKEdVQ19NTUlPX01TR19UWVBFLCBoZWFkZXIpID09IEdVQ19NTUlPX01TR19U WVBFX0VSUk9SKSB7CisJCXUzMiBzdGF0dXMgPSBGSUVMRF9HRVQoR1VDX01NSU9fRVJST1JfU1RB VFVTLCBoZWFkZXIpOworCisJCXJldCA9IGd1Y19zdGF0dXNfdG9fZXJybm8oc3RhdHVzKTsKKwkJ Z290byBvdXQ7CisJfQorCisJaWYgKEZJRUxEX0dFVChHVUNfTU1JT19NU0dfVFlQRSwgaGVhZGVy KSAhPSBHVUNfTU1JT19NU0dfVFlQRV9SRVNQT05TRSkgeworCQlyZXQgPSAtRVBST1RPOwogCQln b3RvIG91dDsKIAl9CiAKQEAgLTQ2MCwxMiArNTA0LDE3IEBAIGludCBpbnRlbF9ndWNfc2VuZF9t bWlvKHN0cnVjdCBpbnRlbF9ndWMgKmd1YywgY29uc3QgdTMyICphY3Rpb24sIHUzMiBsZW4sCiAJ fQogCiAJLyogVXNlIGRhdGEgZnJvbSB0aGUgR3VDIHJlc3BvbnNlIGFzIG91ciByZXR1cm4gdmFs dWUgKi8KLQlyZXQgPSBJTlRFTF9HVUNfTVNHX1RPX0RBVEEoc3RhdHVzKTsKKwlyZXQgPSBGSUVM RF9HRVQoR1VDX01NSU9fUkVTUE9OU0VfREFUQTAsIGhlYWRlcik7CiAKIG91dDoKIAlpbnRlbF91 bmNvcmVfZm9yY2V3YWtlX3B1dCh1bmNvcmUsIGd1Yy0+c2VuZF9yZWdzLmZ3X2RvbWFpbnMpOwog CW11dGV4X3VubG9jaygmZ3VjLT5zZW5kX211dGV4KTsKIAorCWlmICh1bmxpa2VseShyZXQgPCAw KSkKKwkJZHJtX2VycigmaTkxNS0+ZHJtLAorCQkJIkd1QyBNTUlPIGFjdGlvbiAlIzA2eCBmYWls ZWQgd2l0aCBlcnJvciAlZCAlI3hcbiIsCisJCQkqcmVxdWVzdCwgcmV0LCBoZWFkZXIpOworCiAJ cmV0dXJuIHJldDsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMv aW50ZWxfZ3VjX2FiaS5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX2Fi aS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOTUwNDM3ODhlMGFk Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3Vj X2FiaS5oCkBAIC0wLDAgKzEsMjE1IEBACisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlU ICovCisvKgorICogQ29weXJpZ2h0IMKpIDIwMjAgSW50ZWwgQ29ycG9yYXRpb24KKyAqLworCisj aWZuZGVmIF9fSU5URUxfR1VDX0FCSV9IX18KKyNkZWZpbmUgX19JTlRFTF9HVUNfQUJJX0hfXwor CisvKioKKyAqIERPQzogR3VDIE1NSU8gYmFzZWQgY29tbXVuaWNhdGlvbgorICoKKyAqIFRoZSBN TUlPIGJhc2VkIGNvbW11bmljYXRpb24gYmV0d2VlbiBIb3N0IGFuZCBHdUMgcmVsaWVzIG9uIHNw ZWNpYWwKKyAqIGhhcmR3YXJlIHJlZ2lzdGVycyB3aGljaCBmb3JtYXQgY291bGQgYmUgZGVmaW5l ZCBieSB0aGUgc29mdHdhcmUKKyAqIChzbyBjYWxsZWQgc2NyYXRjaCByZWdpc3RlcnMpLgorICoK KyAqIEVhY2ggTU1JTyBiYXNlZCBtZXNzYWdlLCBib3RoIEhvc3QgdG8gR3VDIChIMkcpIGFuZCBH dUMgdG8gSG9zdCAoRzJIKQorICogbWVzc2FnZXMsIHdoaWNoIG1heGltdW0gbGVuZ3RoIGRlcGVu ZHMgb24gbnVtYmVyIG9mIGF2YWlsYWJsZSBzY3JhdGNoCisgKiByZWdpc3RlcnMsIGlzIGRpcmVj dGx5IHdyaXR0ZW4gaW50byB0aG9zZSBzY3JhdGNoIHJlZ2lzdGVycy4KKyAqCisgKiBGb3IgR2Vu OSssIHRoZXJlIGFyZSAxNiBzb2Z0d2FyZSBzY3JhdGNoIHJlZ2lzdGVycyAweEMxODAtMHhDMUI4 LAorICogYnV0IG5vIEgyRyBjb21tYW5kIHRha2VzIG1vcmUgdGhhbiA4IHBhcmFtZXRlcnMgYW5k IHRoZSBHdUMgZmlybXdhcmUKKyAqIGl0c2VsZiB1c2VzIGFuIDgtZWxlbWVudCBhcnJheSB0byBz dG9yZSB0aGUgSDJHIG1lc3NhZ2UuCisgKgorICogRm9yIEdlbjExKywgdGhlcmUgYXJlIGFkZGl0 aW9uYWwgNCByZWdpc3RlcnMgMHgxOTAyNDAtMHgxOTAyNEMsIHdoaWNoCisgKiBhcmUsIHJlZ2Fy ZGxlc3Mgb24gbG93ZXIgY291bnQsIHByZWZmZXJlZCBvdmVyIGxlZ2FjeSBvbmVzLgorICoKKyAq IFRoZSBNTUlPIGJhc2VkIGNvbW11bmljYXRpb24gaXMgbWFpbmx5IHVzZWQgZHVyaW5nIGRyaXZl ciBpbml0aWFsaXphdGlvbgorICogcGhhc2UgdG8gc2V0dXAgdGhlIENUQiBiYXNlZCBjb21tdW5p Y2F0aW9uIHRoYXQgd2lsbCBiZSB1c2VkIGFmdGVyd2FyZHMuCisgKgorICogRGV0YWlscyBvZiB0 aGUgbWVzc2FnZXMgZm9ybWF0cyBkZXBlbmQgb24gR3VDIGZpcm13YXJlIHZlcnNpb24gYmVpbmcg dXNlZAorICogYnkgdGhlIGhvc3QgZHJpdmVyLiBEb2N1bWVudGVkIGhlcmUgbWVzc2FnZXMgYXJl IGZvciBHdUMgNDUuMCBhbmQgbmV3ZXIuCisgKi8KKworI2RlZmluZSBHVUNfTUFYX01NSU9fTVNH X0xFTgkJCTgKKworLyoqCisgKiBET0M6IEd1QyBNTUlPIG1lc3NhZ2UgZm9ybWF0CisgKgorICog Qml0cyBvZiB0aGUgZmlyc3Qgc2NyYXRjaCByZWdpc3RlciBhcmUgdHJlYXRlZCBhcyBhIG1lc3Nh Z2UgaGVhZGVyLAorICogYW5kIG90aGVyIHJlZ2lzdGVycyB2YWx1ZXMgYXJlIHVzZWQgdG8gaG9s ZCBtZXNzYWdlIHBheWxvYWQgKGRhdGEpOjoKKyAqCisgKiAgICAgICs9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09KworICogICAgICB8ICBTQ1JB VENIICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAqICAg ICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rCisgKiAgICAgIHwgMCB8IDMxOjI4IHwgbWVzc2FnZSBPUklHSU4vVFlQRSAgICAgICAgICAg ICAgICAgICAgICAgfAorICogICAgICB8ICAgfCAyNzoyNCB8IG1lc3NhZ2UgTUFHSUMgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwKKyAqICAgICAgfCAgIHwgIDIzOjAgfCBtZXNzYWdlIERB VEEwIChkZXBlbmRzIG9uIFRZUEUpICAgICAgICAgICB8CisgKiAgICAgICstLS0rLS0tLS0tLSst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICogICAgICB8IDEg fCAgMzE6MCB8IG1lc3NhZ2UgREFUQTEgKGRlcGVuZHMgb24gVFlQRSkgICAgICAgICAgIHwKKyAq ICAgICAgfC4uLnwgICAgICAgfCBtZXNzYWdlIERBVEEyIChkZXBlbmRzIG9uIFRZUEUpICAgICAg ICAgICB8CisgKiAgICAgIHwgbiB8ICAgICAgIHwgbWVzc2FnZSBEQVRBMyAoZGVwZW5kcyBvbiBU WVBFKSAgICAgICAgICAgfAorICogICAgICArPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PSsKKyAqCisgKiBXaGVyZToKKyAqICAtICoqVFlQRSoq IGlzIGEgNGIgbWVzc2FnZSB0eXBlIGlkZW50aWZpZXIuCisgKiAgLSAqKk1BR0lDKiogaXMgYSA0 YiBtZXNzYWdlIHNlcXVlbmNlIG51bWJlci4KKyAqICAgIFRoZSBzYW1lIHNlcXVlbmNlIG51bWJl ciBtdXN0IGJlIGluY2x1ZGVkIGluIGFsbCByZWxhdGVkIG1lc3NhZ2VzLgorICogICAgVGhpcyBm aWVsZCBpcyB1c2VkIGZvciB0cmFja2luZyBhbmQgZGVidWcgcHVycG9zZXMuCisgKiAgLSAqKkRB VEEwLi4zKiogYml0cyByZXByZXNlbnRzIG1lc3NhZ2UgcGF5bG9hZC4KKyAqICAgIERlZmluaXRp b25zIG9mIHRoZXNlIGJpdHMgZGVwZW5kcyBvbiBtZXNzYWdlICoqVFlQRSoqLgorICoKKyAqIFRo ZSBNU0Igb2YgdGhlIGhlYWRlciBhbmQgKipUWVBFKiogaW5kaWNhdGVzIG9yaWdpbiBvZiB0aGUg bWVzc2FnZToKKyAqICAtIDAgLSBtZXNzYWdlIGZyb20gdGhlIEhvc3QKKyAqICAtIDEgLSBtZXNz YWdlIGZyb20gdGhlIEd1QworICoKKyAqIEN1cnJlbnRseSBzdXBwb3J0ZWQgbWVzc2FnZSB0eXBl cyBhcmU6CisgKiAgLSAweDAgLSAqKlJFUVVFU1QqKiAtIHJlcHJlc2VudHMgSG9zdCByZXF1ZXN0 IG1lc3NhZ2UgdG8gdGhlIEd1QworICogIC0gMHhGIC0gKipTVUNDRVNTIFJFU1BPTlNFKiogLSBH dUMgcmVwbHkgZm9yIHRoZSBlYXJsaWVyIHJlcXVlc3QKKyAqICAtIDB4RSAtICoqRVJST1IgUkVT UE9OU0UqKiAtIEd1QyBmYWlsdXJlIHJlcGx5IGZvciB0aGUgZWFybGllciByZXF1ZXN0CisgKiAg LSAweEIgLSAqKkJVU1kqKiAtIEd1QyB3aWxsIGJlIHByb2Nlc3NpbmcgcmVxdWVzdCBmb3IgdGhl IGxvbmdlciB0aW1lCisgKi8KKworI2RlZmluZSBHVUNfTU1JT19NU0dfT1JJR0lOCQkJKDB4MSA8 PCAzMSkKKyNkZWZpbmUgICBHVUNfTU1JT19NU0dfT1JJR0lOX0hPU1QJCTB1CisjZGVmaW5lICAg R1VDX01NSU9fTVNHX09SSUdJTl9HVUMJCTF1CisKKyNkZWZpbmUgR1VDX01NSU9fTVNHX1RZUEUJ CQkoMHhGIDw8IDI4KQorI2RlZmluZSAgIEdVQ19NTUlPX01TR19UWVBFX1JFUVVFU1QJCTB4MAor I2RlZmluZSAgIEdVQ19NTUlPX01TR19UWVBFX1JFU1BPTlNFCQkweEYKKyNkZWZpbmUgICBHVUNf TU1JT19NU0dfVFlQRV9FUlJPUgkJMHhFCisjZGVmaW5lICAgR1VDX01NSU9fTVNHX1RZUEVfQlVT WQkJMHhCCisKKyNkZWZpbmUgR1VDX01NSU9fTVNHX01BR0lDCQkJKDB4RiA8PCAyNCkKKyNkZWZp bmUgICBHVUNfTU1JT19NU0dfTUFHSUNfREVGQVVMVAkJMHUKKworLyoqCisgKiBET0M6IEd1QyBN TUlPIEgyRyBSRVFVRVNUCisgKgorICogVGhlIE1NSU8gSDJHIFJFUVVFU1QgbWVzc2FnZSBpcyB1 c2VkIGJ5IHRoZSBIb3N0IHRvIHJlcXVlc3Qgc29tZSBhY3Rpb24KKyAqIHRvIGJlIHBlcmZvcm1l ZCBieSB0aGUgR3VDOjoKKyAqCisgKiAgICAgICs9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09KworICogICAgICB8ICBTQ1JBVENIICB8ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAqICAgICAgKz09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rCisgKiAgICAg IHwgMCB8IDMxOjI4IHwgbWVzc2FnZSBUWVBFID0gMHgwID0gUkVRVUVTVCAgICAgICAgICAgICAg fAorICogICAgICB8ICAgfCAyNzoyNCB8IG1lc3NhZ2UgTUFHSUMgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwKKyAqICAgICAgfCAgIHwgMjM6MTYgfCByZXF1ZXN0IFNVQkNPREUgKGRlcGVu ZHMgb24gQUNUSU9OKSAgICAgICB8CisgKiAgICAgIHwgICB8ICAxNTowIHwgcmVxdWVzdCBBQ1RJ T04gY29kZSAgICAgICAgICAgICAgICAgICAgICAgfAorICogICAgICArLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAqICAgICAgfCAxIHwg IDMxOjAgfCByZXF1ZXN0IERBVEExIChkZXBlbmRzIG9uIEFDVElPTi9TVUJDT0RFKSB8CisgKiAg ICAgIHwuLi58ICAgICAgIHwgcmVxdWVzdCBEQVRBMiAoZGVwZW5kcyBvbiBBQ1RJT04vU1VCQ09E RSkgfAorICogICAgICB8IG4gfCAgMzE6MCB8IHJlcXVlc3QgREFUQTMgKGRlcGVuZHMgb24gQUNU SU9OL1NVQkNPREUpIHwKKyAqICAgICAgKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0rCisgKgorICogV2hlcmU6CisgKiAgLSAqKlRZUEUqKiBt dXN0IGJlIHNldCB0byB2YWx1ZSAweDAuCisgKiAgLSAqKk1BR0lDKiogbWVzc2FnZSBzZXF1ZW5j ZSBudW1iZXIgaXMgZ2VuZXJhdGVkIGJ5IHRoZSBob3N0LgorICogIC0gKipBQ1RJT04qKiByZXBy ZXNlbnRzIDE2YiByZXF1ZXN0IGFjdGlvbiBjb2RlIHRoYXQgZGVmaW5lcyBib3RoCisgKiAgICBw dXJwb3NlIG9mIHRoZSByZXF1ZXN0IGFuZCBmb3JtYXQgb2YgdGhlIHBhc3NlZCBwYXlsb2FkIGRh dGEuCisgKiAgICBMaXN0IG9mIHN1cHBvcnRlZCBjb2RlcyBkZXBlbmRzIG9uIEd1QyB2ZXJzaW9u IGFuZCBwbGFmb3JtLgorICogICAgQWN0aW9uIGNvZGUgY2FuJ3QgYmUgemVyby4KKyAqICAtICoq U1VCQ09ERSoqIGlzIG9wdGlvbmFsIDhiIGRhdGEgcmVsYXRlZCB0byB0aGUgKipBQ1RJT04qKi4K KyAqICAgIE1CWiBpZiBub3QgZXhwbGljaXRseSBkZWZpbmVkIGJ5IGdpdmVuICoqQUNUSU9OKiou CisgKiAgLSAqKkRBVEExLi4zKiogYXJlIG9wdGlvbmFsIDMyYiBwYXlsb2FkIGR3b3JkcyByZWxh dGVkIHRvICoqQUNUSU9OKiouCisgKiAgICBGb3JtYXQgb2YgZWFjaCBkd29yZCBpcyBkZWZpbmVk IGJ5IHNwZWNpZmljICoqQUNUSU9OKiouCisgKi8KKworI2RlZmluZSBHVUNfTU1JT19SRVFVRVNU X1NVQkNPREUJCSgweEZGIDw8IDE2KQorI2RlZmluZSBHVUNfTU1JT19SRVFVRVNUX0FDVElPTgkJ CSgweEZGRkYgPDwgMCkKKyNkZWZpbmUgICBHVUNfQUNUSU9OX0lOVkFMSUQJCQkweDAwMDAKKyNk ZWZpbmUgICBHVUNfQUNUSU9OX1JFR0lTVEVSX0NUQgkJMHg0NTA1CisjZGVmaW5lICAgR1VDX0FD VElPTl9ERVJFR0lTVEVSX0NUQgkJMHg0NTA2CisKKy8qKgorICogRE9DOiBHdUMgTU1JTyBHMkgg U1VDQ0VTUyBSRVNQT05TRQorICoKKyAqIFRoZSBNTUlPIEcySCBTVUNDRVNTIFJFU1BPTlNFIG1l c3NhZ2UgaXMgdXNlZCBieSB0aGUgR3VDIHRvIHJlcGx5IHRvCisgKiB0aGUgZWFybGllciBIMkcg cmVxdWVzdCBtZXNzYWdlLiBUaGlzIG1lc3NhZ2UgaXMgdXNlZCBpZiBubyBlcnJvcnMKKyAqIHdl cmUgZW5jb3VudGVyZWQgYnkgdGhlIEd1QyBkdXJpbmcgcHJvY2Vzc2luZyBvZiB0aGUgcmVxdWVz dDo6CisgKgorICogICAgICArPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PSsKKyAqICAgICAgfCAgU0NSQVRDSCAgfCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgKiAgICAgICs9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09KworICogICAgICB8IDAgfCAzMToy OCB8IG1lc3NhZ2UgVFlQRSA9IDB4RiA9IFNVQ0NFU1MgUkVTUE9OU0UgICAgIHwKKyAqICAgICAg fCAgIHwgMjc6MjQgfCBtZXNzYWdlIE1BR0lDICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 CisgKiAgICAgIHwgICB8ICAyMzowIHwgcmVzcG9uc2UgREFUQTAgKGRlcGVuZHMgb24gQUNUSU9O L1NVQkNPREUpfAorICogICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAqICAgICAgfCAxIHwgIDMxOjAgfCByZXNwb25zZSBEQVRB MSAoZGVwZW5kcyBvbiBBQ1RJT04vU1VCQ09ERSl8CisgKiAgICAgIHwuLi58ICAgICAgIHwgcmVz cG9uc2UgREFUQTIgKGRlcGVuZHMgb24gQUNUSU9OL1NVQkNPREUpfAorICogICAgICB8IG4gfCAg MzE6MCB8IHJlc3BvbnNlIERBVEEzIChkZXBlbmRzIG9uIEFDVElPTi9TVUJDT0RFKXwKKyAqICAg ICAgKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0rCisgKgorICogV2hlcmU6CisgKiAgLSAqKlRZUEUqKiBtdXN0IGJlIHNldCB0byB2YWx1ZSAw eEYuCisgKiAgLSAqKk1BR0lDKiogbXVzdCBtYXRjaCB2YWx1ZSB1c2VkIGJ5IHRoZSBob3N0IGlu ICoqUkVRVUVTVCoqIG1lc3NhZ2UuCisgKiAgLSAqKkRBVEEqKiBpcyBvcHRpb25hbCBwYXlsb2Fk IGRhdGEgcmVsYXRlZCB0byAqKkFDVElPTioqLgorICogICAgRm9ybWF0IGlzIGRlZmluZWQgYnkg ZWFjaCAqKkFDVElPTioqIHNlcGFyYXRlbHkuCisgKi8KKworI2RlZmluZSBHVUNfTU1JT19SRVNQ T05TRV9EQVRBMAkJCSgweEZGRkZGRiA8PCAwKQorCisvKioKKyAqIERPQzogR3VDIE1NSU8gRzJI IEVSUk9SIFJFU1BPTlNFCisgKgorICogVGhlIE1NSU8gRzJIIEVSUk9SIFJFU1BPTlNFIG1lc3Nh Z2UgaXMgdXNlZCBieSB0aGUgR3VDIHRvIHJlcGx5IHRvCisgKiB0aGUgZWFybGllciBIMkcgcmVx dWVzdCBtZXNzYWdlLiBUaGlzIG1lc3NhZ2UgaXMgdXNlZCBpZiBzb21lIGVycm9ycworICogd2Vy ZSBlbmNvdW50ZXJlZCBieSB0aGUgR3VDIGR1cmluZyBwcm9jZXNzaW5nIG9mIHRoZSByZXF1ZXN0 OjoKKyAqCisgKiAgICAgICs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09KworICogICAgICB8ICBTQ1JBVENIICB8ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAqICAgICAgKz09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rCisgKiAgICAgIHwgMCB8IDMxOjI4 IHwgbWVzc2FnZSBUWVBFID0gMHhFID0gRVJST1IgUkVTUE9OU0UgICAgICAgfAorICogICAgICB8 ICAgfCAyNzoyNCB8IG1lc3NhZ2UgTUFHSUMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwK KyAqICAgICAgfCAgIHwgMjM6MTYgfCByZXNlcnZlZCBNQlogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8CisgKiAgICAgIHwgICB8ICAxNTowIHwgcmVzcG9uc2UgU1RBVFVTIGZhaWx1cmUg Y29kZSAgICAgICAgICAgICAgfAorICogICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAqICAgICAgfCAxIHwgIDMxOjAgfCByZXNl cnZlZCBNQlogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgKiAgICAgIHwuLi58ICAg ICAgIHwgcmVzZXJ2ZWQgTUJaICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICogICAg ICB8IG4gfCAgMzE6MCB8IHJlc2VydmVkIE1CWiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwKKyAqICAgICAgKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0rCisgKgorICogV2hlcmU6CisgKiAgLSAqKlRZUEUqKiBtdXN0IGJlIHNldCB0 byB2YWx1ZSAweEUuCisgKiAgLSAqKk1BR0lDKiogbXVzdCBtYXRjaCB2YWx1ZSB1c2VkIGJ5IHRo ZSBob3N0IGluICoqUkVRVUVTVCoqIG1lc3NhZ2UuCisgKiAgLSAqKlNUQVRVUyoqIHJlcHJlc2Vu dHMgbm9uLXplcm8gZmFpbHVyZSBjb2RlLgorICovCisKKyNkZWZpbmUgR1VDX01NSU9fRVJST1Jf U1RBVFVTCQkJKDB4RkZGRiA8PCAwKQorI2RlZmluZSAgIEdVQ19TVEFUVVNfVU5LTk9XTl9BQ1RJ T04JCTB4MzAKKyNkZWZpbmUgICBHVUNfU1RBVFVTX0lOVkFMSURfUEFSQU1TCQkweDYwCisjZGVm aW5lICAgR1VDX1NUQVRVU19JTlZBTElEX0FERFIJCTB4ODAKKyNkZWZpbmUgICBHVUNfU1RBVFVT X0NUWF9OT1RfUkVHSVNURVJFRAkJMHgxMDAKKyNkZWZpbmUgICBHVUNfU1RBVFVTX05PX0xPQ0FM X01FTU9SWQkJMHgyMDAKKyNkZWZpbmUgICBHVUNfU1RBVFVTX05PX1ZJUlRVQUxJWkFUSU9OCQkw eDMwMAorI2RlZmluZSAgIEdVQ19TVEFUVVNfQ1RCX0ZVTEwJCQkweDMwMQorI2RlZmluZSAgIEdV Q19TVEFUVVNfVU5BVVRIT1JJWkVEX1JFUVVFU1QJMHgzMDIKKyNkZWZpbmUgICBHVUNfU1RBVFVT X0dFTkVSSUNfRkFJTAkJMHhGMDAwCisKKy8qKgorICogRE9DOiBNTUlPIEcySCBCVVNZIFJFU1BP TlNFCisgKgorICogVGhlIE1NSU8gRzJIIEJVU1kgUkVTUE9OU0UgbWVzc2FnZSBpcyB1c2VkIGJ5 IHRoZSBHdUMgdG8gcmVwbHkgdG8KKyAqIHRoZSBlYXJsaWVyIEgyRyByZXF1ZXN0IG1lc3NhZ2Uu IFRoaXMgbWVzc2FnZSBpcyB1c2VkIGlmIHByb2Nlc3NpbmcKKyAqIG9mIHRoZSByZXF1ZXN0IHdp bGwgdGFrZSBsb25nZXIgdGltZSBhbmQgZmluYWwgU1VDQ0VTUy9FUlJPUiByZXNwb25zZQorICog bWVzc2FnZSB3aWxsIGJlIGRlbGl2ZXJlZCBsYXRlcjo6CisgKgorICogICAgICArPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSsKKyAqICAgICAg fCAgU0NSQVRDSCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 CisgKiAgICAgICs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09KworICogICAgICB8IDAgfCAzMToyOCB8IG1lc3NhZ2UgVFlQRSA9IDB4QiA9IEJV U1kgUkVTUE9OU0UgICAgICAgIHwKKyAqICAgICAgfCAgIHwgMjc6MjQgfCBtZXNzYWdlIE1BR0lD ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgKiAgICAgIHwgICB8ICAyMzowIHwgcmVz ZXJ2ZWQgTUJaICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICogICAgICArLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAqICAg ICAgfCAxIHwgIDMxOjAgfCByZXNlcnZlZCBNQlogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8CisgKiAgICAgIHwuLi58ICAgICAgIHwgcmVzZXJ2ZWQgTUJaICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfAorICogICAgICB8IG4gfCAgMzE6MCB8IHJlc2VydmVkIE1CWiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwKKyAqICAgICAgKz09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rCisgKgorICogV2hlcmU6CisgKiAgLSAq KlRZUEUqKiBtdXN0IGJlIHNldCB0byB2YWx1ZSAweEIuCisgKiAgLSAqKk1BR0lDKiogbXVzdCBt YXRjaCB2YWx1ZSB1c2VkIGJ5IHRoZSBob3N0IGluICoqUkVRVUVTVCoqIG1lc3NhZ2UuCisgKiAg LSBhbGwgb3RoZXIgYml0cyBhcmUgcmVzZXJ2ZWQgYXMgTUJaLgorICovCisKKyNlbmRpZiAvKiBf X0lOVEVMX0dVQ19BQklfSF9fICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n dC91Yy9pbnRlbF9ndWNfYWRzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9n dWNfYWRzLmMKaW5kZXggZDQ0MDYxMDMzZjIzLi5lNjZjYmYxYmUzMjAgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19hZHMuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfYWRzLmMKQEAgLTEwLDExICsxMCw1MiBAQAogCiAv KgogICogVGhlIEFkZGl0aW9uYWwgRGF0YSBTdHJ1Y3QgKEFEUykgaGFzIHBvaW50ZXJzIGZvciBk aWZmZXJlbnQgYnVmZmVycyB1c2VkIGJ5Ci0gKiB0aGUgR3VDLiBPbmUgc2luZ2xlIGdlbSBvYmpl Y3QgY29udGFpbnMgdGhlIEFEUyBzdHJ1Y3QgaXRzZWxmIChndWNfYWRzKSwgdGhlCi0gKiBzY2hl ZHVsaW5nIHBvbGljaWVzIChndWNfcG9saWNpZXMpLCBhIHN0cnVjdHVyZSBkZXNjcmliaW5nIGEg Y29sbGVjdGlvbiBvZgotICogcmVnaXN0ZXIgc2V0cyAoZ3VjX21taW9fcmVnX3N0YXRlKSBhbmQg c29tZSBleHRyYSBwYWdlcyBmb3IgdGhlIEd1QyB0byBzYXZlCi0gKiBpdHMgaW50ZXJuYWwgc3Rh dGUgZm9yIHNsZWVwLgorICogdGhlIEd1Qy4gT25lIHNpbmdsZSBnZW0gb2JqZWN0IGNvbnRhaW5z IHRoZSBBRFMgc3RydWN0IGl0c2VsZiAoZ3VjX2FkcykgYW5kCisgKiBhbGwgdGhlIGV4dHJhIGJ1 ZmZlcnMgaW5kaXJlY3RseSBsaW5rZWQgdmlhIHRoZSBBRFMgc3RydWN0J3MgZW50aXJlcy4KKyAq CisgKiBMYXlvdXQgb2YgdGhlIEFEUyBibG9iIGFsbG9jYXRlZCBmb3IgdGhlIEd1QzoKKyAqCisg KiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rIDw9PSBiYXNl CisgKiAgICAgIHwgZ3VjX2FkcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgKiAg ICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgKiAgICAgIHwg Z3VjX3BvbGljaWVzICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgKiAgICAgICstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgKiAgICAgIHwgZ3VjX2d0X3N5c3Rl bV9pbmZvICAgICAgICAgICAgICAgICAgICB8CisgKiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgKiAgICAgIHwgZ3VjX2NsaWVudHNfaW5mbyAgICAgICAg ICAgICAgICAgICAgICB8CisgKiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0rCisgKiAgICAgIHwgZ3VjX2N0X3Bvb2xfZW50cnlbc2l6ZV0gICAgICAgICAgICAg ICB8CisgKiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisg KiAgICAgIHwgcGFkZGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgKiAgICAg ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rIDw9PSA0SyBhbGlnbmVk CisgKiAgICAgIHwgcHJpdmF0ZSBkYXRhICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgKiAg ICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgKiAgICAgIHwg cGFkZGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgKiAgICAgICstLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rIDw9PSA0SyBhbGlnbmVkCiAgKi8KK3N0 cnVjdCBfX2d1Y19hZHNfYmxvYiB7CisJc3RydWN0IGd1Y19hZHMgYWRzOworCXN0cnVjdCBndWNf cG9saWNpZXMgcG9saWNpZXM7CisJc3RydWN0IGd1Y19ndF9zeXN0ZW1faW5mbyBzeXN0ZW1faW5m bzsKKwlzdHJ1Y3QgZ3VjX2NsaWVudHNfaW5mbyBjbGllbnRzX2luZm87CisJc3RydWN0IGd1Y19j dF9wb29sX2VudHJ5IGN0X3Bvb2xbR1VDX0NUX1BPT0xfU0laRV07Cit9IF9fcGFja2VkOworCitz dGF0aWMgdTMyIGd1Y19hZHNfcHJpdmF0ZV9kYXRhX3NpemUoc3RydWN0IGludGVsX2d1YyAqZ3Vj KQoreworCXJldHVybiBQQUdFX0FMSUdOKGd1Yy0+ZncucHJpdmF0ZV9kYXRhX3NpemUpOworfQor CitzdGF0aWMgdTMyIGd1Y19hZHNfcHJpdmF0ZV9kYXRhX29mZnNldChzdHJ1Y3QgaW50ZWxfZ3Vj ICpndWMpCit7CisJcmV0dXJuIFBBR0VfQUxJR04oc2l6ZW9mKHN0cnVjdCBfX2d1Y19hZHNfYmxv YikpOworfQorCitzdGF0aWMgdTMyIGd1Y19hZHNfYmxvYl9zaXplKHN0cnVjdCBpbnRlbF9ndWMg Kmd1YykKK3sKKwlyZXR1cm4gZ3VjX2Fkc19wcml2YXRlX2RhdGFfb2Zmc2V0KGd1YykgKworCSAg ICAgICBndWNfYWRzX3ByaXZhdGVfZGF0YV9zaXplKGd1Yyk7Cit9CiAKIHN0YXRpYyB2b2lkIGd1 Y19wb2xpY3lfaW5pdChzdHJ1Y3QgZ3VjX3BvbGljeSAqcG9saWN5KQogewpAQCAtNDgsMjMgKzg5 LDMzIEBAIHN0YXRpYyB2b2lkIGd1Y19jdF9wb29sX2VudHJpZXNfaW5pdChzdHJ1Y3QgZ3VjX2N0 X3Bvb2xfZW50cnkgKnBvb2wsIHUzMiBudW0pCiAJbWVtc2V0KHBvb2wsIDAsIG51bSAqIHNpemVv ZigqcG9vbCkpOwogfQogCitzdGF0aWMgdm9pZCBndWNfbWFwcGluZ190YWJsZV9pbml0KHN0cnVj dCBpbnRlbF9ndCAqZ3QsCisJCQkJICAgc3RydWN0IGd1Y19ndF9zeXN0ZW1faW5mbyAqc3lzdGVt X2luZm8pCit7CisJdW5zaWduZWQgaW50IGksIGo7CisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lOworCWVudW0gaW50ZWxfZW5naW5lX2lkIGlkOworCisJLyogVGFibGUgbXVzdCBiZSBz ZXQgdG8gaW52YWxpZCB2YWx1ZXMgZm9yIGVudHJpZXMgbm90IHVzZWQgKi8KKwlmb3IgKGkgPSAw OyBpIDwgR1VDX01BWF9FTkdJTkVfQ0xBU1NFUzsgKytpKQorCQlmb3IgKGogPSAwOyBqIDwgR1VD X01BWF9JTlNUQU5DRVNfUEVSX0NMQVNTOyArK2opCisJCQlzeXN0ZW1faW5mby0+bWFwcGluZ190 YWJsZVtpXVtqXSA9CisJCQkJR1VDX01BWF9JTlNUQU5DRVNfUEVSX0NMQVNTOworCisJZm9yX2Vh Y2hfZW5naW5lKGVuZ2luZSwgZ3QsIGlkKSB7CisJCXU4IGd1Y19jbGFzcyA9IGVuZ2luZS0+Y2xh c3M7CisKKwkJc3lzdGVtX2luZm8tPm1hcHBpbmdfdGFibGVbZ3VjX2NsYXNzXVtlbmdpbmUtPmlu c3RhbmNlXQorCQkJPSBlbmdpbmUtPmluc3RhbmNlOworCX0KK30KKwogLyoKICAqIFRoZSBmaXJz dCA4MCBkd29yZHMgb2YgdGhlIHJlZ2lzdGVyIHN0YXRlIGNvbnRleHQsIGNvbnRhaW5pbmcgdGhl CiAgKiBleGVjbGlzdHMgYW5kIHBwZ3R0IHJlZ2lzdGVycy4KICAqLwogI2RlZmluZSBMUl9IV19D T05URVhUX1NJWkUJKDgwICogc2l6ZW9mKHUzMikpCiAKLS8qIFRoZSBhZHMgb2JqIGluY2x1ZGVz IHRoZSBzdHJ1Y3QgaXRzZWxmIGFuZCBidWZmZXJzIHBhc3NlZCB0byBHdUMgKi8KLXN0cnVjdCBf X2d1Y19hZHNfYmxvYiB7Ci0Jc3RydWN0IGd1Y19hZHMgYWRzOwotCXN0cnVjdCBndWNfcG9saWNp ZXMgcG9saWNpZXM7Ci0Jc3RydWN0IGd1Y19tbWlvX3JlZ19zdGF0ZSByZWdfc3RhdGU7Ci0Jc3Ry dWN0IGd1Y19ndF9zeXN0ZW1faW5mbyBzeXN0ZW1faW5mbzsKLQlzdHJ1Y3QgZ3VjX2NsaWVudHNf aW5mbyBjbGllbnRzX2luZm87Ci0Jc3RydWN0IGd1Y19jdF9wb29sX2VudHJ5IGN0X3Bvb2xbR1VD X0NUX1BPT0xfU0laRV07Ci0JdTggcmVnX3N0YXRlX2J1ZmZlcltHVUNfUzNfU0FWRV9TUEFDRV9Q QUdFUyAqIFBBR0VfU0laRV07Ci19IF9fcGFja2VkOwotCiBzdGF0aWMgdm9pZCBfX2d1Y19hZHNf aW5pdChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCiB7CiAJc3RydWN0IGludGVsX2d0ICpndCA9IGd1 Y190b19ndChndWMpOwpAQCAtMTA3LDYgKzE1OCwxNiBAQCBzdGF0aWMgdm9pZCBfX2d1Y19hZHNf aW5pdChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCiAJYmxvYi0+c3lzdGVtX2luZm8udmVib3hfZW5h YmxlX21hc2sgPSBWRUJPWF9NQVNLKGd0KTsKIAlibG9iLT5zeXN0ZW1faW5mby52ZGJveF9zZmNf c3VwcG9ydF9tYXNrID0gZ3QtPmluZm8udmRib3hfc2ZjX2FjY2VzczsKIAorCWlmIChJTlRFTF9H RU4oZ3QtPmk5MTUpID49IDEyICYmICFJU19ER0ZYKGd0LT5pOTE1KSkgeworCQl1MzIgZGlzdGRi cmVnID0gaW50ZWxfdW5jb3JlX3JlYWQoZ3QtPnVuY29yZSwKKwkJCQkJCSAgR0VOMTJfRElTVF9E QlNfUE9QVUxBVEVEKTsKKwkJYmxvYi0+c3lzdGVtX2luZm8ubnVtX29mX2Rvb3JiZWxsc19wZXJf c3FpZGkgPQorCQkJKChkaXN0ZGJyZWcgPj4gR0VOMTJfRE9PUkJFTExTX1BFUl9TUUlESV9TSElG VCkgJgorCQkJIEdFTjEyX0RPT1JCRUxMU19QRVJfU1FJREkpICsgMTsKKwl9CisKKwlndWNfbWFw cGluZ190YWJsZV9pbml0KGd1Y190b19ndChndWMpLCAmYmxvYi0+c3lzdGVtX2luZm8pOworCiAJ YmFzZSA9IGludGVsX2d1Y19nZ3R0X29mZnNldChndWMsIGd1Yy0+YWRzX3ZtYSk7CiAKIAkvKiBD bGllbnRzIGluZm8gICovCkBAIC0xMTgsMTEgKzE3OSwxMiBAQCBzdGF0aWMgdm9pZCBfX2d1Y19h ZHNfaW5pdChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCiAKIAkvKiBBRFMgKi8KIAlibG9iLT5hZHMu c2NoZWR1bGVyX3BvbGljaWVzID0gYmFzZSArIHB0cl9vZmZzZXQoYmxvYiwgcG9saWNpZXMpOwot CWJsb2ItPmFkcy5yZWdfc3RhdGVfYnVmZmVyID0gYmFzZSArIHB0cl9vZmZzZXQoYmxvYiwgcmVn X3N0YXRlX2J1ZmZlcik7Ci0JYmxvYi0+YWRzLnJlZ19zdGF0ZV9hZGRyID0gYmFzZSArIHB0cl9v ZmZzZXQoYmxvYiwgcmVnX3N0YXRlKTsKIAlibG9iLT5hZHMuZ3Rfc3lzdGVtX2luZm8gPSBiYXNl ICsgcHRyX29mZnNldChibG9iLCBzeXN0ZW1faW5mbyk7CiAJYmxvYi0+YWRzLmNsaWVudHNfaW5m byA9IGJhc2UgKyBwdHJfb2Zmc2V0KGJsb2IsIGNsaWVudHNfaW5mbyk7CiAKKwkvKiBQcml2YXRl IERhdGEgKi8KKwlibG9iLT5hZHMucHJpdmF0ZV9kYXRhID0gYmFzZSArIGd1Y19hZHNfcHJpdmF0 ZV9kYXRhX29mZnNldChndWMpOworCiAJaTkxNV9nZW1fb2JqZWN0X2ZsdXNoX21hcChndWMtPmFk c192bWEtPm9iaik7CiB9CiAKQEAgLTEzNSwxNCArMTk3LDE1IEBAIHN0YXRpYyB2b2lkIF9fZ3Vj X2Fkc19pbml0KHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKICAqLwogaW50IGludGVsX2d1Y19hZHNf Y3JlYXRlKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKIHsKLQljb25zdCB1MzIgc2l6ZSA9IFBBR0Vf QUxJR04oc2l6ZW9mKHN0cnVjdCBfX2d1Y19hZHNfYmxvYikpOworCXUzMiBzaXplOwogCWludCBy ZXQ7CiAKIAlHRU1fQlVHX09OKGd1Yy0+YWRzX3ZtYSk7CiAKKwlzaXplID0gZ3VjX2Fkc19ibG9i X3NpemUoZ3VjKTsKKwogCXJldCA9IGludGVsX2d1Y19hbGxvY2F0ZV9hbmRfbWFwX3ZtYShndWMs IHNpemUsICZndWMtPmFkc192bWEsCiAJCQkJCSAgICAgKHZvaWQgKiopJmd1Yy0+YWRzX2Jsb2Ip OwotCiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIApAQCAtMTU2LDYgKzIxOSwxOCBAQCB2b2lk IGludGVsX2d1Y19hZHNfZGVzdHJveShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCiAJaTkxNV92bWFf dW5waW5fYW5kX3JlbGVhc2UoJmd1Yy0+YWRzX3ZtYSwgSTkxNV9WTUFfUkVMRUFTRV9NQVApOwog fQogCit2b2lkIGd1Y19hZHNfcHJpdmF0ZV9kYXRhX3Jlc2V0KHN0cnVjdCBpbnRlbF9ndWMgKmd1 YykKK3sKKwl1MzIgc2l6ZTsKKworCXNpemUgPSBndWNfYWRzX3ByaXZhdGVfZGF0YV9zaXplKGd1 Yyk7CisJaWYgKCFzaXplKQorCQlyZXR1cm47CisKKwltZW1zZXQoKHZvaWQgKilndWMtPmFkc19i bG9iICsgZ3VjX2Fkc19wcml2YXRlX2RhdGFfb2Zmc2V0KGd1YyksIDAsCisJICAgICAgIHNpemUp OworfQorCiAvKioKICAqIGludGVsX2d1Y19hZHNfcmVzZXQoKSAtIHByZXBhcmVzIEd1QyBBZGRp dGlvbmFsIERhdGEgU3RydWN0IGZvciByZXVzZQogICogQGd1YzogaW50ZWxfZ3VjIHN0cnVjdApA QCAtMTY4LDUgKzI0Myw4IEBAIHZvaWQgaW50ZWxfZ3VjX2Fkc19yZXNldChzdHJ1Y3QgaW50ZWxf Z3VjICpndWMpCiB7CiAJaWYgKCFndWMtPmFkc192bWEpCiAJCXJldHVybjsKKwogCV9fZ3VjX2Fk c19pbml0KGd1Yyk7CisKKwlndWNfYWRzX3ByaXZhdGVfZGF0YV9yZXNldChndWMpOwogfQpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX2Z3LmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfZncuYwppbmRleCBkNGE4N2Y0Yzk0MjEu LjIxMmRlMGE5MzliZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50 ZWxfZ3VjX2Z3LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX2Z3 LmMKQEAgLTc0LDggKzc0LDkgQEAgc3RhdGljIGlubGluZSBib29sIGd1Y19yZWFkeShzdHJ1Y3Qg aW50ZWxfdW5jb3JlICp1bmNvcmUsIHUzMiAqc3RhdHVzKQogCQkoKHZhbCAmIEdTX01JQV9DT1JF X1NUQVRFKSAmJiAodWtfdmFsID09IEdTX1VLRVJORUxfTEFQSUNfRE9ORSkpOwogfQogCi1zdGF0 aWMgaW50IGd1Y193YWl0X3Vjb2RlKHN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSkKK3N0YXRp YyBpbnQgZ3VjX3dhaXRfdWNvZGUoc3RydWN0IGludGVsX2d0ICpndCkKIHsKKwlzdHJ1Y3QgaW50 ZWxfdW5jb3JlICp1bmNvcmUgPSBndC0+dW5jb3JlOwogCXUzMiBzdGF0dXM7CiAJaW50IHJldDsK IApAQCAtOTMsMTIgKzk0LDI0IEBAIHN0YXRpYyBpbnQgZ3VjX3dhaXRfdWNvZGUoc3RydWN0IGlu dGVsX3VuY29yZSAqdW5jb3JlKQogCWlmICgoc3RhdHVzICYgR1NfQk9PVFJPTV9NQVNLKSA9PSBH U19CT09UUk9NX1JTQV9GQUlMRUQpIHsKIAkJRFJNX0VSUk9SKCJHdUMgZmlybXdhcmUgc2lnbmF0 dXJlIHZlcmlmaWNhdGlvbiBmYWlsZWRcbiIpOwogCQlyZXQgPSAtRU5PRVhFQzsKLQl9Ci0KKwl9 IGVsc2UKIAlpZiAoKHN0YXR1cyAmIEdTX1VLRVJORUxfTUFTSykgPT0gR1NfVUtFUk5FTF9FWENF UFRJT04pIHsKIAkJRFJNX0VSUk9SKCJHdUMgZmlybXdhcmUgZXhjZXB0aW9uLiBFSVA6ICUjeFxu IiwKIAkJCSAgaW50ZWxfdW5jb3JlX3JlYWQodW5jb3JlLCBTT0ZUX1NDUkFUQ0goMTMpKSk7CiAJ CXJldCA9IC1FTlhJTzsKKwl9IGVsc2UKKwlpZiAocmV0KSB7CisJCWk5MTVfcHJvYmVfZXJyb3Io Z3QtPmk5MTUsICJHdUMgbG9hZCBmYWlsZWQ6IHN0YXR1cyA9IDB4JTA4WFxuIiwKKwkJCQkgc3Rh dHVzKTsKKwkJaTkxNV9wcm9iZV9lcnJvcihndC0+aTkxNSwgIkd1QyBzdGF0dXM6IFJlc2V0ID0g JWQsICIKKwkJCQkgIkJvb3RST00gPSAweCUwMlgsIFVLZXJuZWwgPSAweCUwMlgsICIKKwkJCQkg Ik1JQSA9IDB4JTAyWCwgQXV0aCA9IDB4JTAyWFxuIiwKKwkJCQkgKHN0YXR1cyA+PiBHU19SRVNF VF9TSElGVCkgJiAxLAorCQkJCSAoc3RhdHVzICYgR1NfQk9PVFJPTV9NQVNLKSA+PiBHU19CT09U Uk9NX1NISUZULAorCQkJCSAoc3RhdHVzICYgR1NfVUtFUk5FTF9NQVNLKSA+PiBHU19VS0VSTkVM X1NISUZULAorCQkJCSAoc3RhdHVzICYgR1NfTUlBX01BU0spID4+IEdTX01JQV9TSElGVCwKKwkJ CQkgKHN0YXR1cyAmIEdTX0FVVEhfU1RBVFVTX01BU0spID4+CisJCQkJCQkJICBHU19BVVRIX1NU QVRVU19TSElGVCk7CiAJfQogCiAJcmV0dXJuIHJldDsKQEAgLTEzOSw3ICsxNTIsNyBAQCBpbnQg aW50ZWxfZ3VjX2Z3X3VwbG9hZChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCiAJaWYgKHJldCkKIAkJ Z290byBvdXQ7CiAKLQlyZXQgPSBndWNfd2FpdF91Y29kZSh1bmNvcmUpOworCXJldCA9IGd1Y193 YWl0X3Vjb2RlKGd0KTsKIAlpZiAocmV0KQogCQlnb3RvIG91dDsKIApkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX2Z3aWYuaCBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d0L3VjL2ludGVsX2d1Y19md2lmLmgKaW5kZXggYTZiNzMzYzE0NmM5Li43N2U0OWQ1 M2JiNWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19m d2lmLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfZ3VjX2Z3aWYuaApA QCAtMjcsNyArMjcsNyBAQAogI2RlZmluZSBHVUNfTUFYX0VOR0lORVNfTlVNCQkoR1VDX1ZJREVP X0VOR0lORTIgKyAxKQogCiAjZGVmaW5lIEdVQ19NQVhfRU5HSU5FX0NMQVNTRVMJCTUKLSNkZWZp bmUgR1VDX01BWF9JTlNUQU5DRVNfUEVSX0NMQVNTCTE2CisjZGVmaW5lIEdVQ19NQVhfSU5TVEFO Q0VTX1BFUl9DTEFTUwkzMgogCiAjZGVmaW5lIEdVQ19ET09SQkVMTF9JTlZBTElECQkyNTYKIApA QCAtNjIsMTIgKzYyLDcgQEAKICNkZWZpbmUgR1VDX1NUQUdFX0RFU0NfQVRUUl9QQ0gJCUJJVCg2 KQogI2RlZmluZSBHVUNfU1RBR0VfREVTQ19BVFRSX1RFUk1JTkFURUQJQklUKDcpCiAKLS8qIE5l dyBHdUMgY29udHJvbCBkYXRhICovCi0jZGVmaW5lIEdVQ19DVExfQ1RYSU5GTwkJCTAKLSNkZWZp bmUgICBHVUNfQ1RMX0NUWE5VTV9JTjE2X1NISUZUCTAKLSNkZWZpbmUgICBHVUNfQ1RMX0JBU0Vf QUREUl9TSElGVAkxMgotCi0jZGVmaW5lIEdVQ19DVExfTE9HX1BBUkFNUwkJMQorI2RlZmluZSBH VUNfQ1RMX0xPR19QQVJBTVMJCTAKICNkZWZpbmUgICBHVUNfTE9HX1ZBTElECQkJKDEgPDwgMCkK ICNkZWZpbmUgICBHVUNfTE9HX05PVElGWV9PTl9IQUxGX0ZVTEwJKDEgPDwgMSkKICNkZWZpbmUg ICBHVUNfTE9HX0FMTE9DX0lOX01FR0FCWVRFCSgxIDw8IDMpCkBAIC03OSwxMSArNzQsMTEgQEAK ICNkZWZpbmUgICBHVUNfTE9HX0lTUl9NQVNLCSAgICAgICAgKDB4NyA8PCBHVUNfTE9HX0lTUl9T SElGVCkKICNkZWZpbmUgICBHVUNfTE9HX0JVRl9BRERSX1NISUZUCTEyCiAKLSNkZWZpbmUgR1VD X0NUTF9XQQkJCTIKLSNkZWZpbmUgR1VDX0NUTF9GRUFUVVJFCQkJMworI2RlZmluZSBHVUNfQ1RM X1dBCQkJMQorI2RlZmluZSBHVUNfQ1RMX0ZFQVRVUkUJCQkyCiAjZGVmaW5lICAgR1VDX0NUTF9E SVNBQkxFX1NDSEVEVUxFUgkoMSA8PCAxNCkKIAotI2RlZmluZSBHVUNfQ1RMX0RFQlVHCQkJNAor I2RlZmluZSBHVUNfQ1RMX0RFQlVHCQkJMwogI2RlZmluZSAgIEdVQ19MT0dfVkVSQk9TSVRZX1NI SUZUCTAKICNkZWZpbmUgICBHVUNfTE9HX1ZFUkJPU0lUWV9MT1cJCSgwIDw8IEdVQ19MT0dfVkVS Qk9TSVRZX1NISUZUKQogI2RlZmluZSAgIEdVQ19MT0dfVkVSQk9TSVRZX01FRAkJKDEgPDwgR1VD X0xPR19WRVJCT1NJVFlfU0hJRlQpCkBAIC05NywxMiArOTIsMzEgQEAKICNkZWZpbmUgICBHVUNf TE9HX0RJU0FCTEVECQkoMSA8PCA2KQogI2RlZmluZSAgIEdVQ19QUk9GSUxFX0VOQUJMRUQJCSgx IDw8IDcpCiAKLSNkZWZpbmUgR1VDX0NUTF9BRFMJCQk1CisjZGVmaW5lIEdVQ19DVExfQURTCQkJ NAogI2RlZmluZSAgIEdVQ19BRFNfQUREUl9TSElGVAkJMQogI2RlZmluZSAgIEdVQ19BRFNfQURE Ul9NQVNLCQkoMHhGRkZGRiA8PCBHVUNfQURTX0FERFJfU0hJRlQpCiAKICNkZWZpbmUgR1VDX0NU TF9NQVhfRFdPUkRTCQkoU09GVF9TQ1JBVENIX0NPVU5UIC0gMikgLyogWzEuLjE0XSAqLwogCisv KgorICogVGhlIGNsYXNzIGdvZXMgaW4gYml0cyBbMC4uMl0gb2YgdGhlIEd1QyBJRCwgdGhlIGlu c3RhbmNlIGluIGJpdHMgWzMuLjZdLgorICogQml0IDcgY2FuIGJlIHVzZWQgZm9yIG9wZXJhdGlv bnMgdGhhdCBhcHBseSB0byBhbGwgZW5naW5lIGNsYXNzZXMmaW5zdGFuY2VzLgorICovCisjZGVm aW5lIEdVQ19FTkdJTkVfQ0xBU1NfU0hJRlQJCTAKKyNkZWZpbmUgR1VDX0VOR0lORV9DTEFTU19N QVNLCQkoMHg3IDw8IEdVQ19FTkdJTkVfQ0xBU1NfU0hJRlQpCisjZGVmaW5lIEdVQ19FTkdJTkVf SU5TVEFOQ0VfU0hJRlQJMworI2RlZmluZSBHVUNfRU5HSU5FX0lOU1RBTkNFX01BU0sJKDB4ZiA8 PCBHVUNfRU5HSU5FX0lOU1RBTkNFX1NISUZUKQorI2RlZmluZSBHVUNfRU5HSU5FX0FMTF9JTlNU QU5DRVMJKDEgPDwgNykKKworI2RlZmluZSBNQUtFX0dVQ19JRChjbGFzcywgaW5zdGFuY2UpIFwK KwkoKChjbGFzcykgPDwgR1VDX0VOR0lORV9DTEFTU19TSElGVCkgfCBcCisJICgoaW5zdGFuY2Up IDw8IEdVQ19FTkdJTkVfSU5TVEFOQ0VfU0hJRlQpKQorCisjZGVmaW5lIEdVQ19JRF9UT19FTkdJ TkVfQ0xBU1MoZ3VjX2lkKSBcCisJKCgoZ3VjX2lkKSAmIEdVQ19FTkdJTkVfQ0xBU1NfTUFTSykg Pj4gR1VDX0VOR0lORV9DTEFTU19TSElGVCkKKyNkZWZpbmUgR1VDX0lEX1RPX0VOR0lORV9JTlNU QU5DRShndWNfaWQpIFwKKwkoKChndWNfaWQpICYgR1VDX0VOR0lORV9JTlNUQU5DRV9NQVNLKSA+ PiBHVUNfRU5HSU5FX0lOU1RBTkNFX1NISUZUKQorCiAvKiBXb3JrIGl0ZW0gZm9yIHN1Ym1pdHRp bmcgd29ya2xvYWRzIGludG8gd29yayBxdWV1ZSBvZiBHdUMuICovCiBzdHJ1Y3QgZ3VjX3dxX2l0 ZW0gewogCXUzMiBoZWFkZXI7CkBAIC0zMzgsNyArMzUyLDYgQEAgc3RydWN0IGd1Y19wb2xpY2ll cyB7CiAvKiBHdUMgTU1JTyByZWcgc3RhdGUgc3RydWN0ICovCiAKIAotI2RlZmluZSBHVUNfUkVH U0VUX01BWF9SRUdJU1RFUlMJNjQKICNkZWZpbmUgR1VDX1MzX1NBVkVfU1BBQ0VfUEFHRVMJCTEw CiAKIHN0cnVjdCBndWNfbW1pb19yZWcgewpAQCAtMzQ4LDE2ICszNjEsMTcgQEAgc3RydWN0IGd1 Y19tbWlvX3JlZyB7CiAjZGVmaW5lIEdVQ19SRUdTRVRfTUFTS0VECQkoMSA8PCAwKQogfSBfX3Bh Y2tlZDsKIAotc3RydWN0IGd1Y19tbWlvX3JlZ3NldCB7Ci0Jc3RydWN0IGd1Y19tbWlvX3JlZyBy ZWdpc3RlcnNbR1VDX1JFR1NFVF9NQVhfUkVHSVNURVJTXTsKLQl1MzIgdmFsdWVzX3ZhbGlkOwot CXUzMiBudW1iZXJfb2ZfcmVnaXN0ZXJzOwotfSBfX3BhY2tlZDsKLQogLyogR3VDIHJlZ2lzdGVy IHNldHMgKi8KLXN0cnVjdCBndWNfbW1pb19yZWdfc3RhdGUgewotCXN0cnVjdCBndWNfbW1pb19y ZWdzZXQgZW5naW5lX3JlZ1tHVUNfTUFYX0VOR0lORV9DTEFTU0VTXVtHVUNfTUFYX0lOU1RBTkNF U19QRVJfQ0xBU1NdOwotCXUzMiByZXNlcnZlZFs5OF07CitzdHJ1Y3QgZ3VjX21taW9fcmVnX3Nl dCB7CisJdTMyIGFkZHJlc3M7CisJdW5pb24geworCQlzdHJ1Y3QgeworCQkJdTMyIGNvdW50OjE2 OworCQkJdTMyIHJlc2VydmVkMToxMjsKKwkJCXUzMiByZXNlcnZlZDI6NDsKKwkJfTsKKwkJdTMy IGNvdW50X3UzMjsKKwl9OwogfSBfX3BhY2tlZDsKIAogLyogSFcgaW5mbyAqLwpAQCAtMzY5LDcg KzM4Myw5IEBAIHN0cnVjdCBndWNfZ3Rfc3lzdGVtX2luZm8gewogCXUzMiB2ZGJveF9lbmFibGVf bWFzazsKIAl1MzIgdmRib3hfc2ZjX3N1cHBvcnRfbWFzazsKIAl1MzIgdmVib3hfZW5hYmxlX21h c2s7Ci0JdTMyIHJlc2VydmVkWzldOworCXUzMiBudW1fb2ZfZG9vcmJlbGxzX3Blcl9zcWlkaTsK Kwl1OCBtYXBwaW5nX3RhYmxlW0dVQ19NQVhfRU5HSU5FX0NMQVNTRVNdW0dVQ19NQVhfSU5TVEFO Q0VTX1BFUl9DTEFTU107CisJdTMyIHJlc2VydmVkMls4XTsKIH0gX19wYWNrZWQ7CiAKIC8qIENs aWVudHMgaW5mbyAqLwpAQCAtMzkwLDE1ICs0MDYsMTYgQEAgc3RydWN0IGd1Y19jbGllbnRzX2lu Zm8gewogCiAvKiBHdUMgQWRkaXRpb25hbCBEYXRhIFN0cnVjdCAqLwogc3RydWN0IGd1Y19hZHMg ewotCXUzMiByZWdfc3RhdGVfYWRkcjsKLQl1MzIgcmVnX3N0YXRlX2J1ZmZlcjsKKwlzdHJ1Y3Qg Z3VjX21taW9fcmVnX3NldCByZWdfc3RhdGVfbGlzdFtHVUNfTUFYX0VOR0lORV9DTEFTU0VTXVtH VUNfTUFYX0lOU1RBTkNFU19QRVJfQ0xBU1NdOworCXUzMiByZXNlcnZlZDA7CiAJdTMyIHNjaGVk dWxlcl9wb2xpY2llczsKIAl1MzIgZ3Rfc3lzdGVtX2luZm87CiAJdTMyIGNsaWVudHNfaW5mbzsK IAl1MzIgY29udHJvbF9kYXRhOwogCXUzMiBnb2xkZW5fY29udGV4dF9scmNhW0dVQ19NQVhfRU5H SU5FX0NMQVNTRVNdOwogCXUzMiBlbmdfc3RhdGVfc2l6ZVtHVUNfTUFYX0VOR0lORV9DTEFTU0VT XTsKLQl1MzIgcmVzZXJ2ZWRbMTZdOworCXUzMiBwcml2YXRlX2RhdGE7CisJdTMyIHJlc2VydmVk WzE1XTsKIH0gX19wYWNrZWQ7CiAKIC8qIEd1QyBsb2dnaW5nIHN0cnVjdHVyZXMgKi8KQEAgLTQ3 NCw0OSArNDkxLDYgQEAgc3RydWN0IGd1Y19zaGFyZWRfY3R4X2RhdGEgewogCXN0cnVjdCBndWNf Y3R4X3JlcG9ydCBwcmVlbXB0X2N0eF9yZXBvcnRbR1VDX01BWF9FTkdJTkVTX05VTV07CiB9IF9f cGFja2VkOwogCi0vKioKLSAqIERPQzogTU1JTyBiYXNlZCBjb21tdW5pY2F0aW9uCi0gKgotICog VGhlIE1NSU8gYmFzZWQgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIEhvc3QgYW5kIEd1QyB1c2VzIHNv ZnR3YXJlIHNjcmF0Y2gKLSAqIHJlZ2lzdGVycywgd2hlcmUgZmlyc3QgcmVnaXN0ZXIgaG9sZHMg ZGF0YSB0cmVhdGVkIGFzIG1lc3NhZ2UgaGVhZGVyLAotICogYW5kIG90aGVyIHJlZ2lzdGVycyBh cmUgdXNlZCB0byBob2xkIG1lc3NhZ2UgcGF5bG9hZC4KLSAqCi0gKiBGb3IgR2VuOSssIEd1QyB1 c2VzIHNvZnR3YXJlIHNjcmF0Y2ggcmVnaXN0ZXJzIDB4QzE4MC0weEMxQjgsCi0gKiBidXQgbm8g SDJHIGNvbW1hbmQgdGFrZXMgbW9yZSB0aGFuIDggcGFyYW1ldGVycyBhbmQgdGhlIEd1QyBGVwot ICogaXRzZWxmIHVzZXMgYW4gOC1lbGVtZW50IGFycmF5IHRvIHN0b3JlIHRoZSBIMkcgbWVzc2Fn ZS4KLSAqCi0gKiAgICAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0t LSsKLSAqICAgICAgfCAgTU1JT1swXSAgfCBNTUlPWzFdIHwgICAuLi4gICB8IE1NSU9bbl0gfAot ICogICAgICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rCi0gKiAg ICAgIHwgaGVhZGVyICAgIHwgICAgICBvcHRpb25hbCBwYXlsb2FkICAgICAgIHwKLSAqICAgICAg Kz09PT09PSs9PT09Kz09PT09PT09PSs9PT09PT09PT0rPT09PT09PT09KwotICogICAgICB8IDMx OjI4fHR5cGV8ICAgICAgICAgfCAgICAgICAgIHwgICAgICAgICB8Ci0gKiAgICAgICstLS0tLS0r LS0tLSsgICAgICAgICB8ICAgICAgICAgfCAgICAgICAgIHwKLSAqICAgICAgfCAyNzoxNnxkYXRh fCAgICAgICAgIHwgICAgICAgICB8ICAgICAgICAgfAotICogICAgICArLS0tLS0tKy0tLS0rICAg ICAgICAgfCAgICAgICAgIHwgICAgICAgICB8Ci0gKiAgICAgIHwgIDE1OjB8Y29kZXwgICAgICAg ICB8ICAgICAgICAgfCAgICAgICAgIHwKLSAqICAgICAgKy0tLS0tLSstLS0tKy0tLS0tLS0tLSst LS0tLS0tLS0rLS0tLS0tLS0tKwotICoKLSAqIFRoZSBtZXNzYWdlIGhlYWRlciBjb25zaXN0cyBv ZjoKLSAqCi0gKiAtICoqdHlwZSoqLCBpbmRpY2F0ZXMgbWVzc2FnZSB0eXBlCi0gKiAtICoqY29k ZSoqLCBpbmRpY2F0ZXMgbWVzc2FnZSBjb2RlLCBpcyBzcGVjaWZpYyBmb3IgKip0eXBlKioKLSAq IC0gKipkYXRhKiosIGluZGljYXRlcyBtZXNzYWdlIGRhdGEsIG9wdGlvbmFsLCBkZXBlbmRzIG9u ICoqY29kZSoqCi0gKgotICogVGhlIGZvbGxvd2luZyBtZXNzYWdlICoqdHlwZXMqKiBhcmUgc3Vw cG9ydGVkOgotICoKLSAqIC0gKipSRVFVRVNUKiosIGluZGljYXRlcyBIb3N0LXRvLUd1QyByZXF1 ZXN0LCByZXF1ZXN0ZWQgR3VDIGFjdGlvbiBjb2RlCi0gKiAgIG11c3QgYmUgcHJpb3ZpZGVkIGlu ICoqY29kZSoqIGZpZWxkLiBPcHRpb25hbCBhY3Rpb24gc3BlY2lmaWMgcGFyYW1ldGVycwotICog ICBjYW4gYmUgcHJvdmlkZWQgaW4gcmVtYWluaW5nIHBheWxvYWQgcmVnaXN0ZXJzIG9yICoqZGF0 YSoqIGZpZWxkLgotICoKLSAqIC0gKipSRVNQT05TRSoqLCBpbmRpY2F0ZXMgR3VDLXRvLUhvc3Qg cmVzcG9uc2UgZnJvbSBlYXJsaWVyIEd1QyByZXF1ZXN0LAotICogICBhY3Rpb24gcmVzcG9uc2Ug c3RhdHVzIHdpbGwgYmUgcHJvdmlkZWQgaW4gKipjb2RlKiogZmllbGQuIE9wdGlvbmFsCi0gKiAg IHJlc3BvbnNlIGRhdGEgY2FuIGJlIHJldHVybmVkIGluIHJlbWFpbmluZyBwYXlsb2FkIHJlZ2lz dGVycyBvciAqKmRhdGEqKgotICogICBmaWVsZC4KLSAqLwotCi0jZGVmaW5lIEdVQ19NQVhfTU1J T19NU0dfTEVOCQk4Ci0KICNkZWZpbmUgSU5URUxfR1VDX01TR19UWVBFX1NISUZUCTI4CiAjZGVm aW5lIElOVEVMX0dVQ19NU0dfVFlQRV9NQVNLCQkoMHhGIDw8IElOVEVMX0dVQ19NU0dfVFlQRV9T SElGVCkKICNkZWZpbmUgSU5URUxfR1VDX01TR19EQVRBX1NISUZUCTE2CmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfcmVnLmggYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfcmVnLmgKaW5kZXggMTk0OTM0NmU3MTRlLi5iMzdmYzJm ZmFlZjIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX2d1Y19y ZWcuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC91Yy9pbnRlbF9ndWNfcmVnLmgKQEAg LTExOCw2ICsxMTgsMTEgQEAgc3RydWN0IGd1Y19kb29yYmVsbF9pbmZvIHsKICNkZWZpbmUgICBH RU44X0RSQl9WQUxJRAkJICAoMTw8MCkKICNkZWZpbmUgR0VOOF9EUkJSRUdVKHgpCQkJX01NSU8o MHgxMDAwICsgKHgpICogOCArIDQpCiAKKyNkZWZpbmUgR0VOMTJfRElTVF9EQlNfUE9QVUxBVEVE CQlfTU1JTygweGQwOCkKKyNkZWZpbmUgICBHRU4xMl9ET09SQkVMTFNfUEVSX1NRSURJX1NISUZU CTE2CisjZGVmaW5lICAgR0VOMTJfRE9PUkJFTExTX1BFUl9TUUlESQkJKDB4ZmYpCisjZGVmaW5l ICAgR0VOMTJfU1FJRElTX0RPT1JCRUxMX0VYSVNUCQkoMHhmZmZmKQorCiAjZGVmaW5lIERFX0dV Q1JNUgkJCV9NTUlPKDB4NDQwNTQpCiAKICNkZWZpbmUgR1VDX0JDU19SQ1NfSUVSCQkJX01NSU8o MHhDNTUwKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfdWNf ZncuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX3VjX2Z3LmMKaW5kZXggNTli MjdhYmExNWM2Li5mN2NiMGIxZjFiYTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L3VjL2ludGVsX3VjX2Z3LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50 ZWxfdWNfZncuYwpAQCAtNDQsMjMgKzQ0LDE5IEBAIHZvaWQgaW50ZWxfdWNfZndfY2hhbmdlX3N0 YXR1cyhzdHJ1Y3QgaW50ZWxfdWNfZncgKnVjX2Z3LAogICogTGlzdCBvZiByZXF1aXJlZCBHdUMg YW5kIEh1QyBiaW5hcmllcyBwZXItcGxhdGZvcm0uCiAgKiBNdXN0IGJlIG9yZGVyZWQgYmFzZWQg b24gcGxhdGZvcm0gKyByZXZpZCwgZnJvbSBuZXdlciB0byBvbGRlci4KICAqCi0gKiBUR0wgMzUu MiBpcyBpbnRlcmZhY2UtY29tcGF0aWJsZSB3aXRoIDMzLjAgZm9yIHByZXZpb3VzIEdlbnMuIFRo ZSBkZWx0YXMKLSAqIGJldHdlZW4gMzMuMCBhbmQgMzUuMiBhcmUgb25seSByZWxhdGVkIHRvIG5l dyBhZGRpdGlvbnMgdG8gc3VwcG9ydCBuZXcgR2VuMTIKLSAqIGZlYXR1cmVzLgotICoKICAqIE5v dGUgdGhhdCBSS0wgdXNlcyB0aGUgc2FtZSBmaXJtd2FyZSBhcyBUR0wuCiAgKi8KICNkZWZpbmUg SU5URUxfVUNfRklSTVdBUkVfREVGUyhmd19kZWYsIGd1Y19kZWYsIGh1Y19kZWYpIFwKLQlmd19k ZWYoUk9DS0VUTEFLRSwgIDAsIGd1Y19kZWYodGdsLCAzNSwgMiwgMCksIGh1Y19kZWYodGdsLCAg NywgMCwgMTIpKSBcCi0JZndfZGVmKFRJR0VSTEFLRSwgICAwLCBndWNfZGVmKHRnbCwgMzUsIDIs IDApLCBodWNfZGVmKHRnbCwgIDcsIDAsIDEyKSkgXAotCWZ3X2RlZihFTEtIQVJUTEFLRSwgMCwg Z3VjX2RlZihlaGwsIDMzLCAwLCA0KSwgaHVjX2RlZihlaGwsICA5LCAwLCAwKSkgXAotCWZ3X2Rl ZihJQ0VMQUtFLCAgICAgMCwgZ3VjX2RlZihpY2wsIDMzLCAwLCAwKSwgaHVjX2RlZihpY2wsICA5 LCAwLCAwKSkgXAotCWZ3X2RlZihDT01FVExBS0UsICAgNSwgZ3VjX2RlZihjbWwsIDMzLCAwLCAw KSwgaHVjX2RlZihjbWwsICA0LCAwLCAwKSkgXAotCWZ3X2RlZihDT0ZGRUVMQUtFLCAgMCwgZ3Vj X2RlZihrYmwsIDMzLCAwLCAwKSwgaHVjX2RlZihrYmwsICA0LCAwLCAwKSkgXAotCWZ3X2RlZihH RU1JTklMQUtFLCAgMCwgZ3VjX2RlZihnbGssIDMzLCAwLCAwKSwgaHVjX2RlZihnbGssICA0LCAw LCAwKSkgXAotCWZ3X2RlZihLQUJZTEFLRSwgICAgMCwgZ3VjX2RlZihrYmwsIDMzLCAwLCAwKSwg aHVjX2RlZihrYmwsICA0LCAwLCAwKSkgXAotCWZ3X2RlZihCUk9YVE9OLCAgICAgMCwgZ3VjX2Rl ZihieHQsIDMzLCAwLCAwKSwgaHVjX2RlZihieHQsICAyLCAwLCAwKSkgXAotCWZ3X2RlZihTS1lM QUtFLCAgICAgMCwgZ3VjX2RlZihza2wsIDMzLCAwLCAwKSwgaHVjX2RlZihza2wsICAyLCAwLCAw KSkKKwlmd19kZWYoUk9DS0VUTEFLRSwgIDAsIGd1Y19kZWYodGdsLCA0NSwgMCwgMCksIGh1Y19k ZWYodGdsLCAgNywgMCwgMTIpKSBcCisJZndfZGVmKFRJR0VSTEFLRSwgICAwLCBndWNfZGVmKHRn bCwgNDUsIDAsIDApLCBodWNfZGVmKHRnbCwgIDcsIDAsIDEyKSkgXAorCWZ3X2RlZihFTEtIQVJU TEFLRSwgMCwgZ3VjX2RlZihlaGwsIDQ1LCAwLCAwKSwgaHVjX2RlZihlaGwsICA5LCAwLCAwKSkg XAorCWZ3X2RlZihJQ0VMQUtFLCAgICAgMCwgZ3VjX2RlZihpY2wsIDQ1LCAwLCAwKSwgaHVjX2Rl ZihpY2wsICA5LCAwLCAwKSkgXAorCWZ3X2RlZihDT01FVExBS0UsICAgNSwgZ3VjX2RlZihjbWws IDQ1LCAwLCAwKSwgaHVjX2RlZihjbWwsICA0LCAwLCAwKSkgXAorCWZ3X2RlZihDT0ZGRUVMQUtF LCAgMCwgZ3VjX2RlZihrYmwsIDQ1LCAwLCAwKSwgaHVjX2RlZihrYmwsICA0LCAwLCAwKSkgXAor CWZ3X2RlZihHRU1JTklMQUtFLCAgMCwgZ3VjX2RlZihnbGssIDQ1LCAwLCAwKSwgaHVjX2RlZihn bGssICA0LCAwLCAwKSkgXAorCWZ3X2RlZihLQUJZTEFLRSwgICAgMCwgZ3VjX2RlZihrYmwsIDQ1 LCAwLCAwKSwgaHVjX2RlZihrYmwsICA0LCAwLCAwKSkgXAorCWZ3X2RlZihCUk9YVE9OLCAgICAg MCwgZ3VjX2RlZihieHQsIDQ1LCAwLCAwKSwgaHVjX2RlZihieHQsICAyLCAwLCAwKSkgXAorCWZ3 X2RlZihTS1lMQUtFLCAgICAgMCwgZ3VjX2RlZihza2wsIDQ1LCAwLCAwKSwgaHVjX2RlZihza2ws ICAyLCAwLCAwKSkKIAogI2RlZmluZSBfX01BS0VfVUNfRldfUEFUSChwcmVmaXhfLCBuYW1lXywg bWFqb3JfLCBtaW5vcl8sIHBhdGNoXykgXAogCSJpOTE1LyIgXApAQCAtMzcxLDYgKzM2Nyw5IEBA IGludCBpbnRlbF91Y19md19mZXRjaChzdHJ1Y3QgaW50ZWxfdWNfZncgKnVjX2Z3KQogCQl9CiAJ fQogCisJaWYgKHVjX2Z3LT50eXBlID09IElOVEVMX1VDX0ZXX1RZUEVfR1VDKQorCQl1Y19mdy0+ cHJpdmF0ZV9kYXRhX3NpemUgPSBjc3MtPnByaXZhdGVfZGF0YV9zaXplOworCiAJb2JqID0gaTkx NV9nZW1fb2JqZWN0X2NyZWF0ZV9zaG1lbV9mcm9tX2RhdGEoaTkxNSwgZnctPmRhdGEsIGZ3LT5z aXplKTsKIAlpZiAoSVNfRVJSKG9iaikpIHsKIAkJZXJyID0gUFRSX0VSUihvYmopOwpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfdWNfZncuaCBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX3VjX2Z3LmgKaW5kZXggMjNkM2E0MjNhYzBmLi45OWJi MWZlMWFmNjYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX3Vj X2Z3LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50ZWxfdWNfZncuaApAQCAt ODgsNiArODgsOCBAQCBzdHJ1Y3QgaW50ZWxfdWNfZncgewogCiAJdTMyIHJzYV9zaXplOwogCXUz MiB1Y29kZV9zaXplOworCisJdTMyIHByaXZhdGVfZGF0YV9zaXplOwogfTsKIAogI2lmZGVmIENP TkZJR19EUk1fSTkxNV9ERUJVR19HVUMKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L3VjL2ludGVsX3VjX2Z3X2FiaS5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvdWMvaW50 ZWxfdWNfZndfYWJpLmgKaW5kZXggMDI5MjE0Y2RlZGQ1Li5lNDFmZmM3YTdmYmMgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX3VjX2Z3X2FiaS5oCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L3VjL2ludGVsX3VjX2Z3X2FiaS5oCkBAIC02OSw3ICs2OSwx MSBAQCBzdHJ1Y3QgdWNfY3NzX2hlYWRlciB7CiAjZGVmaW5lIENTU19TV19WRVJTSU9OX1VDX01B Sk9SCQkoMHhGRiA8PCAxNikKICNkZWZpbmUgQ1NTX1NXX1ZFUlNJT05fVUNfTUlOT1IJCSgweEZG IDw8IDgpCiAjZGVmaW5lIENTU19TV19WRVJTSU9OX1VDX1BBVENICQkoMHhGRiA8PCAwKQotCXUz MiByZXNlcnZlZFsxNF07CisJdTMyIHJlc2VydmVkMFsxM107CisJdW5pb24geworCQl1MzIgcHJp dmF0ZV9kYXRhX3NpemU7IC8qIG9ubHkgYXBwbGllcyB0byBHdUMgKi8KKwkJdTMyIHJlc2VydmVk MTsKKwl9OwogCXUzMiBoZWFkZXJfaW5mbzsKIH0gX19wYWNrZWQ7CiBzdGF0aWNfYXNzZXJ0KHNp emVvZihzdHJ1Y3QgdWNfY3NzX2hlYWRlcikgPT0gMTI4KTsKLS0gCjIuMjUuMQoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcg bGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==