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.8 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, 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 6D788C00454 for ; Thu, 12 Dec 2019 12:50:19 +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 49F6720663 for ; Thu, 12 Dec 2019 12:50:19 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 49F6720663 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 D9A4F6ED3A; Thu, 12 Dec 2019 12:50:16 +0000 (UTC) Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id 60FFA6ED35 for ; Thu, 12 Dec 2019 12:50:15 +0000 (UTC) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by orsmga104.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 12 Dec 2019 04:43:09 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.69,305,1571727600"; d="scan'208";a="265205337" Received: from slisovsk-lenovo-ideapad-720s-13ikb.fi.intel.com ([10.237.72.89]) by FMSMGA003.fm.intel.com with ESMTP; 12 Dec 2019 04:43:07 -0800 From: Stanislav Lisovskiy To: intel-gfx@lists.freedesktop.org Date: Thu, 12 Dec 2019 14:40:13 +0200 Message-Id: <20191212124015.24077-2-stanislav.lisovskiy@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20191212124015.24077-1-stanislav.lisovskiy@intel.com> References: <20191212124015.24077-1-stanislav.lisovskiy@intel.com> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH v12 1/3] drm/i915: Refactor intel_can_enable_sagv 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" Q3VycmVudGx5IGludGVsX2Nhbl9lbmFibGVfc2FndiBmdW5jdGlvbiBjb250YWlucwphIG1peCBv ZiB3b3JrYXJvdW5kcyBmb3IgZGlmZmVyZW50IHBsYXRmb3Jtcwpzb21lIG9mIHRoZW0gYXJlIG5v dCB2YWxpZCBmb3IgZ2VucyA+PSAxMSBhbHJlYWR5LApzbyBsZXRzIHNwbGl0IGl0IGludG8gc2Vw YXJhdGUgZnVuY3Rpb25zLgoKdjI6CiAgICAtIFJld29yayB3YXRlcm1hcmsgY2FsY3VsYXRpb24g YWxnb3JpdGhtIHRvCiAgICAgIGF0dGVtcHQgdG8gY2FsY3VsYXRlIExldmVsIDAgd2F0ZXJtYXJr CiAgICAgIHdpdGggYWRkZWQgc2FndiBibG9jayB0aW1lIGxhdGVuY3kgYW5kCiAgICAgIGNoZWNr IGlmIGl0IGZpdHMgaW4gREJ1ZiBpbiBvcmRlciB0bwogICAgICBkZXRlcm1pbmUgaWYgU0FHViBj YW4gYmUgZW5hYmxlZCBhbHJlYWR5CiAgICAgIGF0IHRoaXMgc3RhZ2UsIGp1c3QgYXMgQlNwZWMg NDkzMjUgc3RhdGVzLgogICAgICBpZiB0aGF0IGZhaWxzIHJvbGxiYWNrIHRvIHVzdWFsIExldmVs IDAKICAgICAgbGF0ZW5jeSBhbmQgZGlzYWJsZSBTQUdWLgogICAgLSBSZW1vdmUgdW5uZWVkZWQg dGFicyhKYW1lcyBBdXNtdXMpCgp2MzogUmViYXNlZCB0aGUgcGF0Y2gKCnY0OiAtIEFkZGVkIGJh Y2sgaW50ZXJsYWNlZCBjaGVjayBmb3IgR2VuMTIgYW5kCiAgICAgIGFkZGVkIHNlcGFyYXRlIGZ1 bmN0aW9uIGZvciBUR0wgU0FHViBjaGVjawogICAgICAodGhhbmtzIHRvIEphbWVzIEF1c211cyBm b3Igc3BvdHRpbmcpCiAgICAtIFJlbW92ZWQgdW5uZWVkZWQgZ2VuIGNoZWNrCiAgICAtIEV4dHJh Y3RlZCBHZW4xMiBTQUdWIGRlY2lzaW9uIG1ha2luZyBjb2RlCiAgICAgIHRvIGEgc2VwYXJhdGUg ZnVuY3Rpb24gZnJvbSBza2xfY29tcHV0ZV93bQoKdjU6IC0gQWRkZWQgU0FHViBnbG9iYWwgc3Rh dGUgdG8gZGV2X3ByaXYsIGJlY2F1c2UKICAgICAgd2UgbmVlZCB0byB0cmFjayBhbGwgcGlwZXMs IG5vdCBvbmx5IHRob3NlCiAgICAgIGluIGF0b21pYyBzdGF0ZS4gRWFjaCBwaXBlIGhhcyBub3cg Y29ycmVzcG9uZGVudAogICAgICBiaXQgbWFzayByZWZsZWN0aW5nLCB3aGV0aGVyIGl0IGNhbiB0 b2xlcmF0ZQogICAgICBTQUdWIG9yIG5vdCh0aGFua3MgdG8gVmlsbGUgU3lyamFsYSBmb3Igc3Vn Z2VzdGlvbnMpLgogICAgLSBOb3cgdXNpbmcgYWN0aXZlIGZsYWcgaW5zdGVhZCBvZiBlbmFibGUg aW4gY3JjCiAgICAgIHVzYWdlIGNoZWNrLgoKdjY6IC0gRml4ZWQgcmViYXNlIGNvbmZsaWN0cwoK djc6IC0ga21zX2N1cnNvcl9sZWdhY3kgc2VlbXMgdG8gZ2V0IGJyb2tlbiBiZWNhdXNlIG9mIG11 bHRpcGxlIG1lbWNweQogICAgICBjYWxscyB3aGVuIGNvcHlpbmcgbGV2ZWwgMCB3YXRlciBtYXJr cyBmb3IgZW5hYmxlZCBTQUdWLCB0bwogICAgICBmaXggdGhpcyBub3cgc2ltcGx5IHVzaW5nIHRo YXQgZmllbGQgcmlnaHQgYXdheSwgd2l0aG91dCBjb3B5aW5nLAogICAgICBmb3IgdGhhdCBpbnRy b2R1Y2VkIGEgbmV3IHdtX2xldmVsIGFjY2Vzc29yIHdoaWNoIGRlY2lkZXMgd2hpY2gKICAgICAg d21fbGV2ZWwgdG8gcmV0dXJuIGJhc2VkIG9uIFNBR1Ygc3RhdGUuCgp2ODogLSBQcm90ZWN0IGNy dGNfc2Fndl9tYXNrIHNhbWUgd2F5IGFzIHdlIGRvIGZvciBvdGhlciBnbG9iYWwgc3RhdGUKICAg ICAgY2hhbmdlczogaS5lIGNoZWNrIGlmIGNoYW5nZXMgYXJlIG5lZWRlZCwgdGhlbiBncmFiIGFs bCBjcnRjIGxvY2tzCiAgICAgIHRvIHNlcmlhbGl6ZSB0aGUgY2hhbmdlcyhWaWxsZSBTeXJqw6Rs w6QpCiAgICAtIEFkZCBjcnRjX3NhZ3ZfbWFzayBjYWNoaW5nIGluIG9yZGVyIHRvIGF2b2lkIG5l ZWRsZXNzIHJlY2FsY3VsYXRpb25zCiAgICAgIChNYXR0aGV3IFJvcGVyKQogICAgLSBQdXQgYmFj ayBHZW4xMiBTQUdWIHN3aXRjaCBpbiBvcmRlciB0byBnZXQgaXQgZW5hYmxlZCBpbiBzZXBhcmF0 ZQogICAgICBwYXRjaChNYXR0aGV3IFJvcGVyKQogICAgLSBSZW5hbWUgKl9zZXRfc2Fndl9tYXNr IHRvICpfY29tcHV0ZV9zYWd2X21hc2soTWF0dGhldyBSb3BlcikKICAgIC0gQ2hlY2sgaWYgdGhl cmUgYXJlIG5vIGFjdGl2ZSBwaXBlcyBpbiBpbnRlbF9jYW5fZW5hYmxlX3NhZ3YKICAgICAgaW5z dGVhZCBvZiBwbGF0Zm9ybSBzcGVjaWZpYyBmdW5jdGlvbnMoTWF0dGhldyBSb3BlciksIHNhbWUK ICAgICAgZm9yIGludGVsX2hhc19zYWd2IGNoZWNrLgoKU2lnbmVkLW9mZi1ieTogU3RhbmlzbGF2 IExpc292c2tpeSA8c3RhbmlzbGF2Lmxpc292c2tpeUBpbnRlbC5jb20+CkNjOiBWaWxsZSBTeXJq w6Rsw6QgPHZpbGxlLnN5cmphbGFAaW50ZWwuY29tPgpDYzogSmFtZXMgQXVzbXVzIDxqYW1lcy5h dXNtdXNAaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxf ZGlzcGxheS5jICB8ICAxMiArLQogLi4uL2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV90 eXBlcy5oICAgIHwgICA5ICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAg ICAgICAgICB8ICAgNiArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jICAgICAgICAg ICAgICAgfCA0MTggKysrKysrKysrKysrKysrLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9wbS5oICAgICAgICAgICAgICAgfCAgIDEgKwogNSBmaWxlcyBjaGFuZ2VkLCAzOTQgaW5zZXJ0 aW9ucygrKSwgNTIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5 L2ludGVsX2Rpc3BsYXkuYwppbmRleCAxZjFjZDc1Nzg3MDYuLjU3NTg5MzJmMzMxMiAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMKQEAgLTEzNDMzLDcg KzEzNDMzLDEwIEBAIHN0YXRpYyB2b2lkIHZlcmlmeV93bV9zdGF0ZShzdHJ1Y3QgaW50ZWxfY3J0 YyAqY3J0YywKIAkJLyogV2F0ZXJtYXJrcyAqLwogCQlmb3IgKGxldmVsID0gMDsgbGV2ZWwgPD0g bWF4X2xldmVsOyBsZXZlbCsrKSB7CiAJCQlpZiAoc2tsX3dtX2xldmVsX2VxdWFscygmaHdfcGxh bmVfd20tPndtW2xldmVsXSwKLQkJCQkJCSZzd19wbGFuZV93bS0+d21bbGV2ZWxdKSkKKwkJCQkJ CSZzd19wbGFuZV93bS0+d21bbGV2ZWxdKSB8fAorCQkJICAgKHNrbF93bV9sZXZlbF9lcXVhbHMo Jmh3X3BsYW5lX3dtLT53bVtsZXZlbF0sCisJCQkJCQkmc3dfcGxhbmVfd20tPnNhZ3Zfd20wKSAm JgorCQkJICAgKGxldmVsID09IDApKSkKIAkJCQljb250aW51ZTsKIAogCQkJRFJNX0VSUk9SKCJt aXNtYXRjaCBpbiBXTSBwaXBlICVjIHBsYW5lICVkIGxldmVsICVkIChleHBlY3RlZCBlPSVkIGI9 JXUgbD0ldSwgZ290IGU9JWQgYj0ldSBsPSV1KVxuIiwKQEAgLTEzNDg1LDcgKzEzNDg4LDEwIEBA IHN0YXRpYyB2b2lkIHZlcmlmeV93bV9zdGF0ZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKIAkJ LyogV2F0ZXJtYXJrcyAqLwogCQlmb3IgKGxldmVsID0gMDsgbGV2ZWwgPD0gbWF4X2xldmVsOyBs ZXZlbCsrKSB7CiAJCQlpZiAoc2tsX3dtX2xldmVsX2VxdWFscygmaHdfcGxhbmVfd20tPndtW2xl dmVsXSwKLQkJCQkJCSZzd19wbGFuZV93bS0+d21bbGV2ZWxdKSkKKwkJCQkJCSZzd19wbGFuZV93 bS0+d21bbGV2ZWxdKSB8fAorCQkJICAgKHNrbF93bV9sZXZlbF9lcXVhbHMoJmh3X3BsYW5lX3dt LT53bVtsZXZlbF0sCisJCQkJCQkmc3dfcGxhbmVfd20tPnNhZ3Zfd20wKSAmJgorCQkJICAgKGxl dmVsID09IDApKSkKIAkJCQljb250aW51ZTsKIAogCQkJRFJNX0VSUk9SKCJtaXNtYXRjaCBpbiBX TSBwaXBlICVjIGN1cnNvciBsZXZlbCAlZCAoZXhwZWN0ZWQgZT0lZCBiPSV1IGw9JXUsIGdvdCBl PSVkIGI9JXUgbD0ldSlcbiIsCkBAIC0xNDg5Myw2ICsxNDg5OSw4IEBAIHN0YXRpYyB2b2lkIGlu dGVsX2F0b21pY19jb21taXRfdGFpbChzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSkK IAkJCWRldl9wcml2LT5kaXNwbGF5Lm9wdGltaXplX3dhdGVybWFya3Moc3RhdGUsIGNydGMpOwog CX0KIAorCWRldl9wcml2LT5jcnRjX3NhZ3ZfbWFzayA9IHN0YXRlLT5jcnRjX3NhZ3ZfbWFzazsK KwogCWZvcl9lYWNoX29sZG5ld19pbnRlbF9jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBvbGRf Y3J0Y19zdGF0ZSwgbmV3X2NydGNfc3RhdGUsIGkpIHsKIAkJaW50ZWxfcG9zdF9wbGFuZV91cGRh dGUob2xkX2NydGNfc3RhdGUpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9k aXNwbGF5L2ludGVsX2Rpc3BsYXlfdHlwZXMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3Bs YXkvaW50ZWxfZGlzcGxheV90eXBlcy5oCmluZGV4IDgzZWEwNDE0OWI3Ny4uNTMwMWUxMDQyYjQw IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlf dHlwZXMuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlf dHlwZXMuaApAQCAtNDkwLDYgKzQ5MCwxNCBAQCBzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlIHsK IAkgKi8KIAl1OCBhY3RpdmVfcGlwZV9jaGFuZ2VzOwogCisJLyoKKwkgKiBDb250YWlucyBhIG1h c2sgd2hpY2ggcmVmbGVjdHMgd2hldGhlciBjb3JyZXNwb25kZW50IHBpcGUKKwkgKiBjYW4gdG9s ZXJhdGUgU0FHViBvciBub3QsIHNvIHRoYXQgd2UgY2FuIG1ha2UgYSBkZWNpc2lvbgorCSAqIGF0 IGF0b21pY19jb21taXRfdGFpbCBzdGFnZSwgd2hldGhlciB3ZSBlbmFibGUgaXQgb3Igbm90CisJ ICogYmFzZWQgb24gZ2xvYmFsIHN0YXRlIGluIGRldl9wcml2LgorCSAqLworCXUzMiBjcnRjX3Nh Z3ZfbWFzazsKKwogCXU4IGFjdGl2ZV9waXBlczsKIAkvKiBtaW5pbXVtIGFjY2VwdGFibGUgY2Rj bGsgZm9yIGVhY2ggcGlwZSAqLwogCWludCBtaW5fY2RjbGtbSTkxNV9NQVhfUElQRVNdOwpAQCAt NjcwLDYgKzY3OCw3IEBAIHN0cnVjdCBza2xfcGxhbmVfd20gewogCXN0cnVjdCBza2xfd21fbGV2 ZWwgd21bOF07CiAJc3RydWN0IHNrbF93bV9sZXZlbCB1dl93bVs4XTsKIAlzdHJ1Y3Qgc2tsX3dt X2xldmVsIHRyYW5zX3dtOworCXN0cnVjdCBza2xfd21fbGV2ZWwgc2Fndl93bTA7CiAJYm9vbCBp c19wbGFuYXI7CiB9OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAppbmRleCAxNDc0NGMxMTQ0NzUu LmQyYzE2ZTFhOTZmMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu aAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCkBAIC0xMTc0LDYgKzExNzQs MTIgQEAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgewogCiAJdTMyIHNhZ3ZfYmxvY2tfdGltZV91 czsKIAorCS8qCisJICogQ29udGFpbnMgYSBiaXQgbWFzaywgd2hldGhlciBjb3JyZXNwb25kZW50 CisJICogcGlwZSBhbGxvd3MgU0FHViBvciBub3QuCisJICovCisJdTMyIGNydGNfc2Fndl9tYXNr OworCiAJc3RydWN0IHsKIAkJLyoKIAkJICogUmF3IHdhdGVybWFyayBsYXRlbmN5IHZhbHVlczoK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9wbS5jCmluZGV4IGRmZDBiOGNhYWJkZS4uYzNhOGIzYThhZmIwIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3BtLmMKQEAgLTM2MzAsNyArMzYzMCw3IEBAIHN0YXRpYyBib29s IHNrbF9uZWVkc19tZW1vcnlfYndfd2Eoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQogCXJldHVybiBJU19HRU45X0JDKGRldl9wcml2KSB8fCBJU19CUk9YVE9OKGRldl9wcml2KTsK IH0KIAotc3RhdGljIGJvb2wKK2Jvb2wKIGludGVsX2hhc19zYWd2KHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdikKIHsKIAkvKiBIQUNLISAqLwpAQCAtMzc1Myw3ICszNzUzLDcgQEAg aW50ZWxfZGlzYWJsZV9zYWd2KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAly ZXR1cm4gMDsKIH0KIAotYm9vbCBpbnRlbF9jYW5fZW5hYmxlX3NhZ3Yoc3RydWN0IGludGVsX2F0 b21pY19zdGF0ZSAqc3RhdGUpCitzdGF0aWMgdm9pZCBza2xfY29tcHV0ZV9zYWd2X21hc2soc3Ry dWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUpCiB7CiAJc3RydWN0IGRybV9kZXZpY2UgKmRl diA9IHN0YXRlLT5iYXNlLmRldjsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSB0b19pOTE1KGRldik7CkBAIC0zNzYzLDI5ICszNzYzLDE1IEBAIGJvb2wgaW50ZWxfY2FuX2Vu YWJsZV9zYWd2KHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlKQogCWVudW0gcGlwZSBw aXBlOwogCWludCBsZXZlbCwgbGF0ZW5jeTsKIAotCWlmICghaW50ZWxfaGFzX3NhZ3YoZGV2X3By aXYpKQotCQlyZXR1cm4gZmFsc2U7Ci0KLQkvKgotCSAqIElmIHRoZXJlIGFyZSBubyBhY3RpdmUg Q1JUQ3MsIG5vIGFkZGl0aW9uYWwgY2hlY2tzIG5lZWQgYmUgcGVyZm9ybWVkCi0JICovCi0JaWYg KGh3ZWlnaHQ4KHN0YXRlLT5hY3RpdmVfcGlwZXMpID09IDApCi0JCXJldHVybiB0cnVlOwotCi0J LyoKLQkgKiBTS0wrIHdvcmthcm91bmQ6IGJzcGVjIHJlY29tbWVuZHMgd2UgZGlzYWJsZSBTQUdW IHdoZW4gd2UgaGF2ZQotCSAqIG1vcmUgdGhlbiBvbmUgcGlwZSBlbmFibGVkCi0JICovCi0JaWYg KGh3ZWlnaHQ4KHN0YXRlLT5hY3RpdmVfcGlwZXMpID4gMSkKLQkJcmV0dXJuIGZhbHNlOwotCiAJ LyogU2luY2Ugd2UncmUgbm93IGd1YXJhbnRlZWQgdG8gb25seSBoYXZlIG9uZSBhY3RpdmUgQ1JU Qy4uLiAqLwogCXBpcGUgPSBmZnMoc3RhdGUtPmFjdGl2ZV9waXBlcykgLSAxOwogCWNydGMgPSBp bnRlbF9nZXRfY3J0Y19mb3JfcGlwZShkZXZfcHJpdiwgcGlwZSk7CiAJY3J0Y19zdGF0ZSA9IHRv X2ludGVsX2NydGNfc3RhdGUoY3J0Yy0+YmFzZS5zdGF0ZSk7CisJc3RhdGUtPmNydGNfc2Fndl9t YXNrICY9IH5CSVQoY3J0Yy0+cGlwZSk7CiAKLQlpZiAoY3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRf bW9kZS5mbGFncyAmIERSTV9NT0RFX0ZMQUdfSU5URVJMQUNFKQotCQlyZXR1cm4gZmFsc2U7CisJ aWYgKGNydGNfc3RhdGUtPmh3LmFkanVzdGVkX21vZGUuZmxhZ3MgJiBEUk1fTU9ERV9GTEFHX0lO VEVSTEFDRSkgeworCQlyZXR1cm47CisJfQogCiAJZm9yX2VhY2hfaW50ZWxfcGxhbmVfb25fY3J0 YyhkZXYsIGNydGMsIHBsYW5lKSB7CiAJCXN0cnVjdCBza2xfcGxhbmVfd20gKndtID0KQEAgLTM4 MTIsNyArMzc5OCwxMzggQEAgYm9vbCBpbnRlbF9jYW5fZW5hYmxlX3NhZ3Yoc3RydWN0IGludGVs X2F0b21pY19zdGF0ZSAqc3RhdGUpCiAJCSAqIGluY3VyIG1lbW9yeSBsYXRlbmNpZXMgaGlnaGVy IHRoYW4gc2Fndl9ibG9ja190aW1lX3VzIHdlCiAJCSAqIGNhbid0IGVuYWJsZSBTQUdWLgogCQkg Ki8KLQkJaWYgKGxhdGVuY3kgPCBkZXZfcHJpdi0+c2Fndl9ibG9ja190aW1lX3VzKQorCQlpZiAo bGF0ZW5jeSA8IGRldl9wcml2LT5zYWd2X2Jsb2NrX3RpbWVfdXMpIHsKKwkJCXJldHVybjsKKwkJ fQorCX0KKworCXN0YXRlLT5jcnRjX3NhZ3ZfbWFzayB8PSBCSVQoY3J0Yy0+cGlwZSk7Cit9CisK K3N0YXRpYyB2b2lkIHRnbF9jb21wdXRlX3NhZ3ZfbWFzayhzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0 YXRlICpzdGF0ZSk7CisKK3N0YXRpYyB2b2lkIGljbF9jb21wdXRlX3NhZ3ZfbWFzayhzdHJ1Y3Qg aW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSkKK3sKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0g c3RhdGUtPmJhc2UuZGV2OworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRv X2k5MTUoZGV2KTsKKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YzsKKwlzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqbmV3X2NydGNfc3RhdGU7CisJaW50IGxldmVsLCBsYXRlbmN5OworCWludCBpOwor CWludCBwbGFuZV9pZDsKKworCWZvcl9lYWNoX25ld19pbnRlbF9jcnRjX2luX3N0YXRlKHN0YXRl LCBjcnRjLAorCQkJCQkgICAgIG5ld19jcnRjX3N0YXRlLCBpKSB7CisJCXVuc2lnbmVkIGludCBm bGFncyA9IGNydGMtPmJhc2Uuc3RhdGUtPmFkanVzdGVkX21vZGUuZmxhZ3M7CisJCWJvb2wgY2Fu X3NhZ3Y7CisKKwkJaWYgKGZsYWdzICYgRFJNX01PREVfRkxBR19JTlRFUkxBQ0UpCisJCQljb250 aW51ZTsKKworCQlpZiAoIW5ld19jcnRjX3N0YXRlLT5ody5hY3RpdmUpCisJCQljb250aW51ZTsK KworCQljYW5fc2FndiA9IHRydWU7CisJCWZvcl9lYWNoX3BsYW5lX2lkX29uX2NydGMoY3J0Yywg cGxhbmVfaWQpIHsKKwkJCXN0cnVjdCBza2xfcGxhbmVfd20gKndtID0KKwkJCQkmbmV3X2NydGNf c3RhdGUtPndtLnNrbC5vcHRpbWFsLnBsYW5lc1twbGFuZV9pZF07CisKKwkJCS8qIFNraXAgdGhp cyBwbGFuZSBpZiBpdCdzIG5vdCBlbmFibGVkICovCisJCQlpZiAoIXdtLT53bVswXS5wbGFuZV9l bikKKwkJCQljb250aW51ZTsKKworCQkJLyogRmluZCB0aGUgaGlnaGVzdCBlbmFibGVkIHdtIGxl dmVsIGZvciB0aGlzIHBsYW5lICovCisJCQlmb3IgKGxldmVsID0gaWxrX3dtX21heF9sZXZlbChk ZXZfcHJpdik7CisJCQkgICAgICF3bS0+d21bbGV2ZWxdLnBsYW5lX2VuOyAtLWxldmVsKSB7CisJ CQl9CisKKwkJCWxhdGVuY3kgPSBkZXZfcHJpdi0+d20uc2tsX2xhdGVuY3lbbGV2ZWxdOworCisJ CQkvKgorCQkJICogSWYgYW55IG9mIHRoZSBwbGFuZXMgb24gdGhpcyBwaXBlIGRvbid0IGVuYWJs ZQorCQkJICogd20gbGV2ZWxzIHRoYXQgaW5jdXIgbWVtb3J5IGxhdGVuY2llcyBoaWdoZXIgdGhh bgorCQkJICogc2Fndl9ibG9ja190aW1lX3VzIHdlIGNhbid0IGVuYWJsZSBTQUdWLgorCQkJICov CisJCQlpZiAobGF0ZW5jeSA8IGRldl9wcml2LT5zYWd2X2Jsb2NrX3RpbWVfdXMpIHsKKwkJCQlj YW5fc2FndiA9IGZhbHNlOworCQkJCWJyZWFrOworCQkJfQorCQl9CisJCWlmIChjYW5fc2FndikK KwkJCXN0YXRlLT5jcnRjX3NhZ3ZfbWFzayB8PSBCSVQoY3J0Yy0+cGlwZSk7CisJCWVsc2UKKwkJ CXN0YXRlLT5jcnRjX3NhZ3ZfbWFzayAmPSB+QklUKGNydGMtPnBpcGUpOworCX0KK30KKworYm9v bCBpbnRlbF9jYW5fZW5hYmxlX3NhZ3Yoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUp Cit7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHN0YXRlLT5iYXNlLmRldjsKKwlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7CisJaW50IHJldCwgaTsK KwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YzsKKwlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqbmV3 X2NydGNfc3RhdGU7CisKKwlpZiAoIWludGVsX2hhc19zYWd2KGRldl9wcml2KSkKKwkJcmV0dXJu IGZhbHNlOworCisJLyoKKwkgKiBDaGVjayBpZiB3ZSBoYWQgYWxyZWFkeSBjYWxjdWxhdGVkIHRo ZSBtYXNrLgorCSAqIGlmIHdlIGhhZCAtIHRoZW4gd2UgYWxyZWFkeSBoYXZlIGdsb2JhbCBzdGF0 ZSwKKwkgKiBzZXJpYWxpemVkIGFuZCB0aHVzIHByb3RlY3RlZCBmcm9tIGNoYW5nZXMgZnJvbQor CSAqIG90aGVyIGNvbW1pdHMgYW5kIGFibGUgdG8gdXNlIGNhY2hlZCB2ZXJzaW9uIGhlcmUuCisJ ICovCisJaWYgKCFzdGF0ZS0+Y3J0Y19zYWd2X21hc2spIHsKKwkJLyoKKwkJICogSWYgdGhlcmUg YXJlIG5vIGFjdGl2ZSBDUlRDcywgbm8gYWRkaXRpb25hbAorCQkgKiBjaGVja3MgbmVlZCBiZSBw ZXJmb3JtZWQKKwkJICovCisJCWlmIChod2VpZ2h0OChzdGF0ZS0+YWN0aXZlX3BpcGVzKSA9PSAw KQorCQkJcmV0dXJuIGZhbHNlOworCisJCS8qCisJCSAqIE1ha2Ugc3VyZSB3ZSBhbHdheXMgcGlj ayBnbG9iYWwgc3RhdGUgZmlyc3QsCisJCSAqIHRoZXJlIHNob3VsZG4ndCBiZSBhbnkgaXNzdWUg YXMgd2UgaG9sZCBvbmx5IGxvY2tzCisJCSAqIHRvIGNvcnJlc3BvbmRlbnQgY3J0Y3MgaW4gc3Rh dGUsIGhvd2V2ZXIgb25jZQorCQkgKiB3ZSBkZXRlY3QgdGhhdCB3ZSBuZWVkIHRvIGNoYW5nZSBT QUdWIG1hc2sKKwkJICogaW4gZ2xvYmFsIHN0YXRlLCB3ZSB3aWxsIGdyYWIgYWxsIHRoZSBjcnRj IGxvY2tzCisJCSAqIGluIG9yZGVyIHRvIGdldCB0aGlzIHNlcmlhbGl6ZWQsIHRodXMgb3RoZXIK KwkJICogcmFjaW5nIGNvbW1pdHMgaGF2aW5nIG90aGVyIGNydGMgbG9ja3MsIHdpbGwgaGF2ZQor CQkgKiB0byBzdGFydCBvdmVyIGFnYWluLCBhcyBzdGF0ZWQgYnkgV291bmQtV2FpdAorCQkgKiBh bGdvcml0aG0uCisJCSAqLworCQlzdGF0ZS0+Y3J0Y19zYWd2X21hc2sgPSBkZXZfcHJpdi0+Y3J0 Y19zYWd2X21hc2s7CisKKwkJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTIpCisJCQl0Z2xf Y29tcHV0ZV9zYWd2X21hc2soc3RhdGUpOworCQllbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYp ID09IDExKQorCQkJaWNsX2NvbXB1dGVfc2Fndl9tYXNrKHN0YXRlKTsKKwkJZWxzZQorCQkJc2ts X2NvbXB1dGVfc2Fndl9tYXNrKHN0YXRlKTsKKworCQkvKgorCQkgKiBGb3IgU0FHViB3ZSBuZWVk IHRvIGFjY291bnQgYWxsIHRoZSBwaXBlcywKKwkJICogbm90IG9ubHkgdGhlIG9uZXMgd2hpY2gg YXJlIGluIHN0YXRlIGN1cnJlbnRseS4KKwkJICogR3JhYiBhbGwgbG9ja3MgaWYgd2UgZGV0ZWN0 IHRoYXQgd2UgYXJlIGFjdHVhbGx5CisJCSAqIGdvaW5nIHRvIGRvIHNvbWV0aGluZy4KKwkJICov CisJCWlmIChzdGF0ZS0+Y3J0Y19zYWd2X21hc2sgIT0gZGV2X3ByaXYtPmNydGNfc2Fndl9tYXNr KSB7CisJCQlyZXQgPSBpbnRlbF9hdG9taWNfc2VyaWFsaXplX2dsb2JhbF9zdGF0ZShzdGF0ZSk7 CisJCQlpZiAocmV0KSB7CisJCQkJRFJNX0RFQlVHX0tNUygiQ291bGQgbm90IHNlcmlhbGl6ZSBn bG9iYWwgc3RhdGVcbiIpOworCQkJCXJldHVybiBmYWxzZTsKKwkJCX0KKwkJfQorCX0KKworCWZv cl9lYWNoX25ld19pbnRlbF9jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBuZXdfY3J0Y19zdGF0 ZSwgaSkgeworCQl1MzIgbWFzayA9IEJJVChjcnRjLT5waXBlKTsKKwkJYm9vbCBzdGF0ZV9zYWd2 X21hc2tlZCA9IChtYXNrICYgc3RhdGUtPmNydGNfc2Fndl9tYXNrKSA9PSAwOworCisJCWlmICgh bmV3X2NydGNfc3RhdGUtPmh3LmFjdGl2ZSkKKwkJCWNvbnRpbnVlOworCisJCWlmIChzdGF0ZV9z YWd2X21hc2tlZCkKIAkJCXJldHVybiBmYWxzZTsKIAl9CiAKQEAgLTM5MzgsNiArNDA1NSw3IEBA IHN0YXRpYyBpbnQgc2tsX2NvbXB1dGVfd21fcGFyYW1zKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpjcnRjX3N0YXRlLAogCQkJCSBpbnQgY29sb3JfcGxhbmUpOwogc3RhdGljIHZvaWQg c2tsX2NvbXB1dGVfcGxhbmVfd20oY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNf c3RhdGUsCiAJCQkJIGludCBsZXZlbCwKKwkJCQkgdTMyIGxhdGVuY3ksCiAJCQkJIGNvbnN0IHN0 cnVjdCBza2xfd21fcGFyYW1zICp3cCwKIAkJCQkgY29uc3Qgc3RydWN0IHNrbF93bV9sZXZlbCAq cmVzdWx0X3ByZXYsCiAJCQkJIHN0cnVjdCBza2xfd21fbGV2ZWwgKnJlc3VsdCAvKiBvdXQgKi8p OwpAQCAtMzk2MCw3ICs0MDc4LDEwIEBAIHNrbF9jdXJzb3JfYWxsb2NhdGlvbihjb25zdCBzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAlXQVJOX09OKHJldCk7CiAKIAlmb3Ig KGxldmVsID0gMDsgbGV2ZWwgPD0gbWF4X2xldmVsOyBsZXZlbCsrKSB7Ci0JCXNrbF9jb21wdXRl X3BsYW5lX3dtKGNydGNfc3RhdGUsIGxldmVsLCAmd3AsICZ3bSwgJndtKTsKKwkJdTMyIGxhdGVu Y3kgPSBkZXZfcHJpdi0+d20uc2tsX2xhdGVuY3lbbGV2ZWxdOworCisJCXNrbF9jb21wdXRlX3Bs YW5lX3dtKGNydGNfc3RhdGUsIGxldmVsLCBsYXRlbmN5LCAmd3AsICZ3bSwgJndtKTsKKwogCQlp ZiAod20ubWluX2RkYl9hbGxvYyA9PSBVMTZfTUFYKQogCQkJYnJlYWs7CiAKQEAgLTQyMjUsNiAr NDM0Niw5OCBAQCBpY2xfZ2V0X3RvdGFsX3JlbGF0aXZlX2RhdGFfcmF0ZShzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAlyZXR1cm4gdG90YWxfZGF0YV9yYXRlOwogfQogCitz dGF0aWMgaW50Cit0Z2xfY2hlY2tfcGlwZV9maXRzX3NhZ3Zfd20oc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNydGNfc3RhdGUsCisJCQkgICAgc3RydWN0IHNrbF9kZGJfYWxsb2NhdGlvbiAqZGRi IC8qIG91dCAqLykKK3sKKwlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBjcnRjX3N0YXRlLT51YXBp LmNydGM7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRj LT5kZXYpOworCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0Yyhj cnRjKTsKKwlzdHJ1Y3Qgc2tsX2RkYl9lbnRyeSAqYWxsb2MgPSAmY3J0Y19zdGF0ZS0+d20uc2ts LmRkYjsKKwl1MTYgYWxsb2Nfc2l6ZTsKKwl1MTYgdG90YWxbSTkxNV9NQVhfUExBTkVTXSA9IHt9 OworCXU2NCB0b3RhbF9kYXRhX3JhdGU7CisJZW51bSBwbGFuZV9pZCBwbGFuZV9pZDsKKwlpbnQg bnVtX2FjdGl2ZTsKKwl1NjQgcGxhbmVfZGF0YV9yYXRlW0k5MTVfTUFYX1BMQU5FU10gPSB7fTsK Kwl1MzIgYmxvY2tzOworCisJLyoKKwkgKiBObyBuZWVkIHRvIGNoZWNrIGdlbiBoZXJlLCB3ZSBj YWxsIHRoaXMgb25seSBmb3IgZ2VuMTIKKwkgKi8KKwl0b3RhbF9kYXRhX3JhdGUgPQorCQlpY2xf Z2V0X3RvdGFsX3JlbGF0aXZlX2RhdGFfcmF0ZShjcnRjX3N0YXRlLAorCQkJCQkJIHBsYW5lX2Rh dGFfcmF0ZSk7CisKKwlza2xfZGRiX2dldF9waXBlX2FsbG9jYXRpb25fbGltaXRzKGRldl9wcml2 LCBjcnRjX3N0YXRlLAorCQkJCQkgICB0b3RhbF9kYXRhX3JhdGUsCisJCQkJCSAgIGRkYiwgYWxs b2MsICZudW1fYWN0aXZlKTsKKwlhbGxvY19zaXplID0gc2tsX2RkYl9lbnRyeV9zaXplKGFsbG9j KTsKKwlpZiAoYWxsb2Nfc2l6ZSA9PSAwKQorCQlyZXR1cm4gLUVOT1NQQzsKKworCS8qIEFsbG9j YXRlIGZpeGVkIG51bWJlciBvZiBibG9ja3MgZm9yIGN1cnNvci4gKi8KKwl0b3RhbFtQTEFORV9D VVJTT1JdID0gc2tsX2N1cnNvcl9hbGxvY2F0aW9uKGNydGNfc3RhdGUsIG51bV9hY3RpdmUpOwor CWFsbG9jX3NpemUgLT0gdG90YWxbUExBTkVfQ1VSU09SXTsKKwljcnRjX3N0YXRlLT53bS5za2wu cGxhbmVfZGRiX3lbUExBTkVfQ1VSU09SXS5zdGFydCA9CisJCWFsbG9jLT5lbmQgLSB0b3RhbFtQ TEFORV9DVVJTT1JdOworCWNydGNfc3RhdGUtPndtLnNrbC5wbGFuZV9kZGJfeVtQTEFORV9DVVJT T1JdLmVuZCA9IGFsbG9jLT5lbmQ7CisKKwkvKgorCSAqIERvIGNoZWNrIGlmIHdlIGNhbiBmaXQg TDAgKyBzYWd2X2Jsb2NrX3RpbWUgYW5kCisJICogZGlzYWJsZSBTQUdWIGlmIHdlIGNhbid0Lgor CSAqLworCWJsb2NrcyA9IDA7CisJZm9yX2VhY2hfcGxhbmVfaWRfb25fY3J0YyhpbnRlbF9jcnRj LCBwbGFuZV9pZCkgeworCQljb25zdCBzdHJ1Y3Qgc2tsX3BsYW5lX3dtICp3bSA9CisJCQkmY3J0 Y19zdGF0ZS0+d20uc2tsLm9wdGltYWwucGxhbmVzW3BsYW5lX2lkXTsKKworCQlpZiAocGxhbmVf aWQgPT0gUExBTkVfQ1VSU09SKSB7CisJCQlpZiAoV0FSTl9PTih3bS0+c2Fndl93bTAubWluX2Rk Yl9hbGxvYyA+CisJCQkJICAgIHRvdGFsW1BMQU5FX0NVUlNPUl0pKSB7CisJCQkJYmxvY2tzID0g VTMyX01BWDsKKwkJCQlicmVhazsKKwkJCX0KKwkJCWNvbnRpbnVlOworCQl9CisKKwkJYmxvY2tz ICs9IHdtLT5zYWd2X3dtMC5taW5fZGRiX2FsbG9jOworCQlpZiAoYmxvY2tzID4gYWxsb2Nfc2l6 ZSkKKwkJCXJldHVybiAtRU5PU1BDOworCX0KKwlyZXR1cm4gMDsKK30KKworY29uc3Qgc3RydWN0 IHNrbF93bV9sZXZlbCAqCitza2xfcGxhbmVfd21fbGV2ZWwoc3RydWN0IGludGVsX3BsYW5lICpw bGFuZSwKKwkJY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCisJCWlu dCBsZXZlbCwKKwkJYm9vbCB5dXYpCit7CisJc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRl ID0gY3J0Y19zdGF0ZS0+dWFwaS5zdGF0ZTsKKwllbnVtIHBsYW5lX2lkIHBsYW5lX2lkID0gcGxh bmUtPmlkOworCWNvbnN0IHN0cnVjdCBza2xfcGxhbmVfd20gKndtID0KKwkJJmNydGNfc3RhdGUt PndtLnNrbC5vcHRpbWFsLnBsYW5lc1twbGFuZV9pZF07CisKKwkvKgorCSAqIExvb2tzIHJpZGlj aWxvdXMgYnV0IG5lZWQgdG8gY2hlY2sgaWYgc3RhdGUgaXMgbm90CisJICogTlVMTCBoZXJlIGFz IGl0IG1pZ2h0IGJlIGFzIHNvbWUgY3Vyc29yIHBsYW5lIG1hbmlwdWxhdGlvbnMKKwkgKiBzZWVt IHRvIGhhcHBlbiB3aGVuIG5vIGF0b21pYyBzdGF0ZSBpcyBhY3R1YWxseSBwcmVzZW50LAorCSAq IGRlc3BpdGUgY3J0Y19zdGF0ZSBpcyBhbGxvY2F0ZWQuIFJlbW92aW5nIHN0YXRlIGNoZWNrCisJ ICogZnJvbSBoZXJlIHdpbGwgcmVzdWx0IGluIGtlcm5lbCBwYW5pYyBvbiBib290LgorCSAqIEhv d2V2ZXIgd2Ugbm93IG5lZWQgdG8gY2hlY2sgd2hldGhlciBzaG91bGQgYmUgdXNlIFNBR1YKKwkg KiB3bSBsZXZlbHMgaGVyZS4KKwkgKi8KKwlpZiAoc3RhdGUpIHsKKwkJc3RydWN0IGludGVsX2F0 b21pY19zdGF0ZSAqaW50ZWxfc3RhdGUgPQorCQkJdG9faW50ZWxfYXRvbWljX3N0YXRlKHN0YXRl KTsKKwkJaWYgKGludGVsX2Nhbl9lbmFibGVfc2FndihpbnRlbF9zdGF0ZSkgJiYgIWxldmVsKQor CQkJcmV0dXJuICZ3bS0+c2Fndl93bTA7CisJfQorCisJcmV0dXJuIHl1diA/ICZ3bS0+dXZfd21b bGV2ZWxdIDogJndtLT53bVtsZXZlbF07Cit9CisKIHN0YXRpYyBpbnQKIHNrbF9hbGxvY2F0ZV9w aXBlX2RkYihzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAkJICAgICAgc3Ry dWN0IHNrbF9kZGJfYWxsb2NhdGlvbiAqZGRiIC8qIG91dCAqLykKQEAgLTQyMzksNiArNDQ1Miw5 IEBAIHNrbF9hbGxvY2F0ZV9waXBlX2RkYihzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19z dGF0ZSwKIAl1MTYgdXZfdG90YWxbSTkxNV9NQVhfUExBTkVTXSA9IHt9OwogCXU2NCB0b3RhbF9k YXRhX3JhdGU7CiAJZW51bSBwbGFuZV9pZCBwbGFuZV9pZDsKKwlzdHJ1Y3QgaW50ZWxfcGxhbmUg KnBsYW5lOworCWNvbnN0IHN0cnVjdCBza2xfd21fbGV2ZWwgKndtX2xldmVsOworCWNvbnN0IHN0 cnVjdCBza2xfd21fbGV2ZWwgKndtX3V2X2xldmVsOwogCWludCBudW1fYWN0aXZlOwogCXU2NCBw bGFuZV9kYXRhX3JhdGVbSTkxNV9NQVhfUExBTkVTXSA9IHt9OwogCXU2NCB1dl9wbGFuZV9kYXRh X3JhdGVbSTkxNV9NQVhfUExBTkVTXSA9IHt9OwpAQCAtNDI5MCwxMiArNDUwNiwxNSBAQCBza2xf YWxsb2NhdGVfcGlwZV9kZGIoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJ ICovCiAJZm9yIChsZXZlbCA9IGlsa193bV9tYXhfbGV2ZWwoZGV2X3ByaXYpOyBsZXZlbCA+PSAw OyBsZXZlbC0tKSB7CiAJCWJsb2NrcyA9IDA7Ci0JCWZvcl9lYWNoX3BsYW5lX2lkX29uX2NydGMo aW50ZWxfY3J0YywgcGxhbmVfaWQpIHsKLQkJCWNvbnN0IHN0cnVjdCBza2xfcGxhbmVfd20gKndt ID0KLQkJCQkmY3J0Y19zdGF0ZS0+d20uc2tsLm9wdGltYWwucGxhbmVzW3BsYW5lX2lkXTsKKwkJ Zm9yX2VhY2hfaW50ZWxfcGxhbmVfb25fY3J0YygmZGV2X3ByaXYtPmRybSwgaW50ZWxfY3J0Yywg cGxhbmUpIHsKKwkJCXBsYW5lX2lkID0gcGxhbmUtPmlkOworCQkJd21fbGV2ZWwgPSBza2xfcGxh bmVfd21fbGV2ZWwocGxhbmUsIGNydGNfc3RhdGUsCisJCQkJCQkgICAgICBsZXZlbCwgZmFsc2Up OworCQkJd21fdXZfbGV2ZWwgPSBza2xfcGxhbmVfd21fbGV2ZWwocGxhbmUsIGNydGNfc3RhdGUs CisJCQkJCQkJIGxldmVsLCB0cnVlKTsKIAogCQkJaWYgKHBsYW5lX2lkID09IFBMQU5FX0NVUlNP UikgewotCQkJCWlmIChXQVJOX09OKHdtLT53bVtsZXZlbF0ubWluX2RkYl9hbGxvYyA+CisJCQkJ aWYgKFdBUk5fT04od21fbGV2ZWwtPm1pbl9kZGJfYWxsb2MgPgogCQkJCQkgICAgdG90YWxbUExB TkVfQ1VSU09SXSkpIHsKIAkJCQkJYmxvY2tzID0gVTMyX01BWDsKIAkJCQkJYnJlYWs7CkBAIC00 MzAzLDggKzQ1MjIsOCBAQCBza2xfYWxsb2NhdGVfcGlwZV9kZGIoc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNydGNfc3RhdGUsCiAJCQkJY29udGludWU7CiAJCQl9CiAKLQkJCWJsb2NrcyArPSB3 bS0+d21bbGV2ZWxdLm1pbl9kZGJfYWxsb2M7Ci0JCQlibG9ja3MgKz0gd20tPnV2X3dtW2xldmVs XS5taW5fZGRiX2FsbG9jOworCQkJYmxvY2tzICs9IHdtX2xldmVsLT5taW5fZGRiX2FsbG9jOwor CQkJYmxvY2tzICs9IHdtX3V2X2xldmVsLT5taW5fZGRiX2FsbG9jOwogCQl9CiAKIAkJaWYgKGJs b2NrcyA8PSBhbGxvY19zaXplKSB7CkBAIC00MzI1LDEyICs0NTQ0LDE2IEBAIHNrbF9hbGxvY2F0 ZV9waXBlX2RkYihzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAkgKiB3YXRl cm1hcmsgbGV2ZWwsIHBsdXMgYW4gZXh0cmEgc2hhcmUgb2YgdGhlIGxlZnRvdmVyIGJsb2Nrcwog CSAqIHByb3BvcnRpb25hbCB0byBpdHMgcmVsYXRpdmUgZGF0YSByYXRlLgogCSAqLwotCWZvcl9l YWNoX3BsYW5lX2lkX29uX2NydGMoaW50ZWxfY3J0YywgcGxhbmVfaWQpIHsKLQkJY29uc3Qgc3Ry dWN0IHNrbF9wbGFuZV93bSAqd20gPQotCQkJJmNydGNfc3RhdGUtPndtLnNrbC5vcHRpbWFsLnBs YW5lc1twbGFuZV9pZF07CisJZm9yX2VhY2hfaW50ZWxfcGxhbmVfb25fY3J0YygmZGV2X3ByaXYt PmRybSwgaW50ZWxfY3J0YywgcGxhbmUpIHsKIAkJdTY0IHJhdGU7CiAJCXUxNiBleHRyYTsKIAor CQlwbGFuZV9pZCA9IHBsYW5lLT5pZDsKKwkJd21fbGV2ZWwgPSBza2xfcGxhbmVfd21fbGV2ZWwo cGxhbmUsIGNydGNfc3RhdGUsCisJCQkJCSAgICAgIGxldmVsLCBmYWxzZSk7CisJCXdtX3V2X2xl dmVsID0gc2tsX3BsYW5lX3dtX2xldmVsKHBsYW5lLCBjcnRjX3N0YXRlLAorCQkJCQkJIGxldmVs LCB0cnVlKTsKKwogCQlpZiAocGxhbmVfaWQgPT0gUExBTkVfQ1VSU09SKQogCQkJY29udGludWU7 CiAKQEAgLTQzNDUsNyArNDU2OCw3IEBAIHNrbF9hbGxvY2F0ZV9waXBlX2RkYihzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAkJZXh0cmEgPSBtaW5fdCh1MTYsIGFsbG9jX3Np emUsCiAJCQkgICAgICBESVY2NF9VNjRfUk9VTkRfVVAoYWxsb2Nfc2l6ZSAqIHJhdGUsCiAJCQkJ CQkgdG90YWxfZGF0YV9yYXRlKSk7Ci0JCXRvdGFsW3BsYW5lX2lkXSA9IHdtLT53bVtsZXZlbF0u bWluX2RkYl9hbGxvYyArIGV4dHJhOworCQl0b3RhbFtwbGFuZV9pZF0gPSB3bV9sZXZlbC0+bWlu X2RkYl9hbGxvYyArIGV4dHJhOwogCQlhbGxvY19zaXplIC09IGV4dHJhOwogCQl0b3RhbF9kYXRh X3JhdGUgLT0gcmF0ZTsKIApAQCAtNDM1Niw3ICs0NTc5LDcgQEAgc2tsX2FsbG9jYXRlX3BpcGVf ZGRiKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCQlleHRyYSA9IG1pbl90 KHUxNiwgYWxsb2Nfc2l6ZSwKIAkJCSAgICAgIERJVjY0X1U2NF9ST1VORF9VUChhbGxvY19zaXpl ICogcmF0ZSwKIAkJCQkJCSB0b3RhbF9kYXRhX3JhdGUpKTsKLQkJdXZfdG90YWxbcGxhbmVfaWRd ID0gd20tPnV2X3dtW2xldmVsXS5taW5fZGRiX2FsbG9jICsgZXh0cmE7CisJCXV2X3RvdGFsW3Bs YW5lX2lkXSA9IHdtX3V2X2xldmVsLT5taW5fZGRiX2FsbG9jICsgZXh0cmE7CiAJCWFsbG9jX3Np emUgLT0gZXh0cmE7CiAJCXRvdGFsX2RhdGFfcmF0ZSAtPSByYXRlOwogCX0KQEAgLTQzOTcsOSAr NDYyMCwxNCBAQCBza2xfYWxsb2NhdGVfcGlwZV9kZGIoc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNydGNfc3RhdGUsCiAJICogdGhhdCBhcmVuJ3QgYWN0dWFsbHkgcG9zc2libGUuCiAJICovCiAJ Zm9yIChsZXZlbCsrOyBsZXZlbCA8PSBpbGtfd21fbWF4X2xldmVsKGRldl9wcml2KTsgbGV2ZWwr KykgewotCQlmb3JfZWFjaF9wbGFuZV9pZF9vbl9jcnRjKGludGVsX2NydGMsIHBsYW5lX2lkKSB7 CisJCWZvcl9lYWNoX2ludGVsX3BsYW5lX29uX2NydGMoJmRldl9wcml2LT5kcm0sIGludGVsX2Ny dGMsIHBsYW5lKSB7CiAJCQlzdHJ1Y3Qgc2tsX3BsYW5lX3dtICp3bSA9Ci0JCQkJJmNydGNfc3Rh dGUtPndtLnNrbC5vcHRpbWFsLnBsYW5lc1twbGFuZV9pZF07CisJCQkJJmNydGNfc3RhdGUtPndt LnNrbC5vcHRpbWFsLnBsYW5lc1twbGFuZS0+aWRdOworCisJCQl3bV9sZXZlbCA9IHNrbF9wbGFu ZV93bV9sZXZlbChwbGFuZSwgY3J0Y19zdGF0ZSwKKwkJCQkJCSAgICAgIGxldmVsLCBmYWxzZSk7 CisJCQl3bV91dl9sZXZlbCA9IHNrbF9wbGFuZV93bV9sZXZlbChwbGFuZSwgY3J0Y19zdGF0ZSwK KwkJCQkJCSAgICAgIGxldmVsLCB0cnVlKTsKIAogCQkJLyoKIAkJCSAqIFdlIG9ubHkgZGlzYWJs ZSB0aGUgd2F0ZXJtYXJrcyBmb3IgZWFjaCBwbGFuZSBpZgpAQCAtNDQxMyw5ICs0NjQxLDEwIEBA IHNrbF9hbGxvY2F0ZV9waXBlX2RkYihzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0 ZSwKIAkJCSAqICBwbGFuZXMgbXVzdCBiZSBlbmFibGVkIGJlZm9yZSB0aGUgbGV2ZWwgd2lsbCBi ZSB1c2VkLiIKIAkJCSAqIFNvIHRoaXMgaXMgYWN0dWFsbHkgc2FmZSB0byBkby4KIAkJCSAqLwot CQkJaWYgKHdtLT53bVtsZXZlbF0ubWluX2RkYl9hbGxvYyA+IHRvdGFsW3BsYW5lX2lkXSB8fAot CQkJICAgIHdtLT51dl93bVtsZXZlbF0ubWluX2RkYl9hbGxvYyA+IHV2X3RvdGFsW3BsYW5lX2lk XSkKLQkJCQltZW1zZXQoJndtLT53bVtsZXZlbF0sIDAsIHNpemVvZih3bS0+d21bbGV2ZWxdKSk7 CisJCQlpZiAod21fbGV2ZWwtPm1pbl9kZGJfYWxsb2MgPiB0b3RhbFtwbGFuZS0+aWRdIHx8CisJ CQkgICAgd21fdXZfbGV2ZWwtPm1pbl9kZGJfYWxsb2MgPiB1dl90b3RhbFtwbGFuZS0+aWRdKQor CQkJCW1lbXNldCgmd20tPndtW2xldmVsXSwgMCwKKwkJCQkgICAgICAgc2l6ZW9mKHN0cnVjdCBz a2xfd21fbGV2ZWwpKTsKIAogCQkJLyoKIAkJCSAqIFdhXzE0MDg5NjEwMDg6aWNsLCBlaGwKQEAg LTQ0MjMsOSArNDY1MiwxNCBAQCBza2xfYWxsb2NhdGVfcGlwZV9kZGIoc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJCQkgKi8KIAkJCWlmIChJU19HRU4oZGV2X3ByaXYsIDEx KSAmJgogCQkJICAgIGxldmVsID09IDEgJiYgd20tPndtWzBdLnBsYW5lX2VuKSB7Ci0JCQkJd20t PndtW2xldmVsXS5wbGFuZV9yZXNfYiA9IHdtLT53bVswXS5wbGFuZV9yZXNfYjsKLQkJCQl3bS0+ d21bbGV2ZWxdLnBsYW5lX3Jlc19sID0gd20tPndtWzBdLnBsYW5lX3Jlc19sOwotCQkJCXdtLT53 bVtsZXZlbF0uaWdub3JlX2xpbmVzID0gd20tPndtWzBdLmlnbm9yZV9saW5lczsKKwkJCQl3bV9s ZXZlbCA9IHNrbF9wbGFuZV93bV9sZXZlbChwbGFuZSwgY3J0Y19zdGF0ZSwKKwkJCQkJCQkgICAg ICAwLCBmYWxzZSk7CisJCQkJd20tPndtW2xldmVsXS5wbGFuZV9yZXNfYiA9CisJCQkJCXdtX2xl dmVsLT5wbGFuZV9yZXNfYjsKKwkJCQl3bS0+d21bbGV2ZWxdLnBsYW5lX3Jlc19sID0KKwkJCQkJ d21fbGV2ZWwtPnBsYW5lX3Jlc19sOworCQkJCXdtLT53bVtsZXZlbF0uaWdub3JlX2xpbmVzID0K KwkJCQkJd21fbGV2ZWwtPmlnbm9yZV9saW5lczsKIAkJCX0KIAkJfQogCX0KQEAgLTQ2NTQsMTIg KzQ4ODgsMTIgQEAgc3RhdGljIGJvb2wgc2tsX3dtX2hhc19saW5lcyhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsIGludCBsZXZlbCkKIAogc3RhdGljIHZvaWQgc2tsX2NvbXB1dGVf cGxhbmVfd20oY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJCQkJ IGludCBsZXZlbCwKKwkJCQkgdTMyIGxhdGVuY3ksCiAJCQkJIGNvbnN0IHN0cnVjdCBza2xfd21f cGFyYW1zICp3cCwKIAkJCQkgY29uc3Qgc3RydWN0IHNrbF93bV9sZXZlbCAqcmVzdWx0X3ByZXYs CiAJCQkJIHN0cnVjdCBza2xfd21fbGV2ZWwgKnJlc3VsdCAvKiBvdXQgKi8pCiB7CiAJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjX3N0YXRlLT51YXBpLmNy dGMtPmRldik7Ci0JdTMyIGxhdGVuY3kgPSBkZXZfcHJpdi0+d20uc2tsX2xhdGVuY3lbbGV2ZWxd OwogCXVpbnRfZml4ZWRfMTZfMTZfdCBtZXRob2QxLCBtZXRob2QyOwogCXVpbnRfZml4ZWRfMTZf MTZfdCBzZWxlY3RlZF9yZXN1bHQ7CiAJdTMyIHJlc19ibG9ja3MsIHJlc19saW5lcywgbWluX2Rk Yl9hbGxvYyA9IDA7CkBAIC00NzgwLDIwICs1MDE0LDQ1IEBAIHN0YXRpYyB2b2lkIHNrbF9jb21w dXRlX3BsYW5lX3dtKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAog c3RhdGljIHZvaWQKIHNrbF9jb21wdXRlX3dtX2xldmVscyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAkJICAgICAgY29uc3Qgc3RydWN0IHNrbF93bV9wYXJhbXMg KndtX3BhcmFtcywKLQkJICAgICAgc3RydWN0IHNrbF93bV9sZXZlbCAqbGV2ZWxzKQorCQkgICAg ICBzdHJ1Y3Qgc2tsX3BsYW5lX3dtICpwbGFuZV93bSwKKwkJICAgICAgYm9vbCB5dXYpCiB7CiAJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjX3N0YXRlLT51 YXBpLmNydGMtPmRldik7CiAJaW50IGxldmVsLCBtYXhfbGV2ZWwgPSBpbGtfd21fbWF4X2xldmVs KGRldl9wcml2KTsKKwkvKgorCSAqIENoZWNrIHdoaWNoIGtpbmQgb2YgcGxhbmUgaXMgaXQgYW5k IGJhc2VkIG9uIHRoYXQgY2FsY3VsYXRlCisJICogY29ycmVzcG9uZGVudCBXTSBsZXZlbHMuCisJ ICovCisJc3RydWN0IHNrbF93bV9sZXZlbCAqbGV2ZWxzID0geXV2ID8gcGxhbmVfd20tPnV2X3dt IDogcGxhbmVfd20tPndtOwogCXN0cnVjdCBza2xfd21fbGV2ZWwgKnJlc3VsdF9wcmV2ID0gJmxl dmVsc1swXTsKIAogCWZvciAobGV2ZWwgPSAwOyBsZXZlbCA8PSBtYXhfbGV2ZWw7IGxldmVsKysp IHsKIAkJc3RydWN0IHNrbF93bV9sZXZlbCAqcmVzdWx0ID0gJmxldmVsc1tsZXZlbF07CisJCXUz MiBsYXRlbmN5ID0gZGV2X3ByaXYtPndtLnNrbF9sYXRlbmN5W2xldmVsXTsKIAotCQlza2xfY29t cHV0ZV9wbGFuZV93bShjcnRjX3N0YXRlLCBsZXZlbCwgd21fcGFyYW1zLAotCQkJCSAgICAgcmVz dWx0X3ByZXYsIHJlc3VsdCk7CisJCXNrbF9jb21wdXRlX3BsYW5lX3dtKGNydGNfc3RhdGUsIGxl dmVsLCBsYXRlbmN5LAorCQkJCSAgICAgd21fcGFyYW1zLCByZXN1bHRfcHJldiwgcmVzdWx0KTsK IAogCQlyZXN1bHRfcHJldiA9IHJlc3VsdDsKIAl9CisJLyoKKwkgKiBGb3IgR2VuMTIgaWYgaXQg aXMgYW4gTDAgd2UgbmVlZCB0byBhbHNvCisJICogY29uc2lkZXIgc2Fndl9ibG9ja190aW1lIHdo ZW4gY2FsY3VsYXRpbmcKKwkgKiBMMCB3YXRlcm1hcmsgLSB3ZSB3aWxsIG5lZWQgdGhhdCB3aGVu IG1ha2luZworCSAqIGEgZGVjaXNpb24gd2hldGhlciBlbmFibGUgU0FHViBvciBub3QuCisJICog Rm9yIG9sZGVyIGdlbnMgd2UgYWdyZWVkIHRvIGNvcHkgTDAgdmFsdWUgZm9yCisJICogY29tcGF0 aWJpbGl0eS4KKwkgKi8KKwlpZiAoKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTIpKSB7CisJCXUz MiBsYXRlbmN5ID0gZGV2X3ByaXYtPndtLnNrbF9sYXRlbmN5WzBdOworCisJCWxhdGVuY3kgKz0g ZGV2X3ByaXYtPnNhZ3ZfYmxvY2tfdGltZV91czsKKwkJc2tsX2NvbXB1dGVfcGxhbmVfd20oY3J0 Y19zdGF0ZSwgMCwgbGF0ZW5jeSwKKwkJICAgICB3bV9wYXJhbXMsICZsZXZlbHNbMF0sCisJCSAg ICAmcGxhbmVfd20tPnNhZ3Zfd20wKTsKKwl9IGVsc2UKKwkJbWVtY3B5KCZwbGFuZV93bS0+c2Fn dl93bTAsICZsZXZlbHNbMF0sCisJCQlzaXplb2Yoc3RydWN0IHNrbF93bV9sZXZlbCkpOwogfQog CiBzdGF0aWMgdTMyCkBAIC00ODg2LDcgKzUxNDUsNyBAQCBzdGF0aWMgaW50IHNrbF9idWlsZF9w bGFuZV93bV9zaW5nbGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiAJaWYg KHJldCkKIAkJcmV0dXJuIHJldDsKIAotCXNrbF9jb21wdXRlX3dtX2xldmVscyhjcnRjX3N0YXRl LCAmd21fcGFyYW1zLCB3bS0+d20pOworCXNrbF9jb21wdXRlX3dtX2xldmVscyhjcnRjX3N0YXRl LCAmd21fcGFyYW1zLCB3bSwgZmFsc2UpOwogCXNrbF9jb21wdXRlX3RyYW5zaXRpb25fd20oY3J0 Y19zdGF0ZSwgJndtX3BhcmFtcywgd20pOwogCiAJcmV0dXJuIDA7CkBAIC00OTA4LDcgKzUxNjcs NyBAQCBzdGF0aWMgaW50IHNrbF9idWlsZF9wbGFuZV93bV91dihzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqY3J0Y19zdGF0ZSwKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0Jc2tsX2NvbXB1 dGVfd21fbGV2ZWxzKGNydGNfc3RhdGUsICZ3bV9wYXJhbXMsIHdtLT51dl93bSk7CisJc2tsX2Nv bXB1dGVfd21fbGV2ZWxzKGNydGNfc3RhdGUsICZ3bV9wYXJhbXMsIHdtLCB0cnVlKTsKIAogCXJl dHVybiAwOwogfQpAQCAtNTA0NSwxMCArNTMwNCwxMyBAQCB2b2lkIHNrbF93cml0ZV9wbGFuZV93 bShzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lLAogCQkmY3J0Y19zdGF0ZS0+d20uc2tsLnBsYW5l X2RkYl95W3BsYW5lX2lkXTsKIAljb25zdCBzdHJ1Y3Qgc2tsX2RkYl9lbnRyeSAqZGRiX3V2ID0K IAkJJmNydGNfc3RhdGUtPndtLnNrbC5wbGFuZV9kZGJfdXZbcGxhbmVfaWRdOworCWNvbnN0IHN0 cnVjdCBza2xfd21fbGV2ZWwgKndtX2xldmVsOwogCiAJZm9yIChsZXZlbCA9IDA7IGxldmVsIDw9 IG1heF9sZXZlbDsgbGV2ZWwrKykgeworCQl3bV9sZXZlbCA9IHNrbF9wbGFuZV93bV9sZXZlbChw bGFuZSwgY3J0Y19zdGF0ZSwgbGV2ZWwsIGZhbHNlKTsKKwogCQlza2xfd3JpdGVfd21fbGV2ZWwo ZGV2X3ByaXYsIFBMQU5FX1dNKHBpcGUsIHBsYW5lX2lkLCBsZXZlbCksCi0JCQkJICAgJndtLT53 bVtsZXZlbF0pOworCQkJCSAgIHdtX2xldmVsKTsKIAl9CiAJc2tsX3dyaXRlX3dtX2xldmVsKGRl dl9wcml2LCBQTEFORV9XTV9UUkFOUyhwaXBlLCBwbGFuZV9pZCksCiAJCQkgICAmd20tPnRyYW5z X3dtKTsKQEAgLTUwNzksMTAgKzUzNDEsMTMgQEAgdm9pZCBza2xfd3JpdGVfY3Vyc29yX3dtKHN0 cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUsCiAJCSZjcnRjX3N0YXRlLT53bS5za2wub3B0aW1hbC5w bGFuZXNbcGxhbmVfaWRdOwogCWNvbnN0IHN0cnVjdCBza2xfZGRiX2VudHJ5ICpkZGIgPQogCQkm Y3J0Y19zdGF0ZS0+d20uc2tsLnBsYW5lX2RkYl95W3BsYW5lX2lkXTsKKwljb25zdCBzdHJ1Y3Qg c2tsX3dtX2xldmVsICp3bV9sZXZlbDsKIAogCWZvciAobGV2ZWwgPSAwOyBsZXZlbCA8PSBtYXhf bGV2ZWw7IGxldmVsKyspIHsKKwkJd21fbGV2ZWwgPSBza2xfcGxhbmVfd21fbGV2ZWwocGxhbmUs IGNydGNfc3RhdGUsIGxldmVsLCBmYWxzZSk7CisKIAkJc2tsX3dyaXRlX3dtX2xldmVsKGRldl9w cml2LCBDVVJfV00ocGlwZSwgbGV2ZWwpLAotCQkJCSAgICZ3bS0+d21bbGV2ZWxdKTsKKwkJCQkg ICB3bV9sZXZlbCk7CiAJfQogCXNrbF93cml0ZV93bV9sZXZlbChkZXZfcHJpdiwgQ1VSX1dNX1RS QU5TKHBpcGUpLCAmd20tPnRyYW5zX3dtKTsKIApAQCAtNTQ1NiwxOCArNTcyMSw2OCBAQCBzdGF0 aWMgaW50IHNrbF93bV9hZGRfYWZmZWN0ZWRfcGxhbmVzKHN0cnVjdCBpbnRlbF9hdG9taWNfc3Rh dGUgKnN0YXRlLAogCXJldHVybiAwOwogfQogCitzdGF0aWMgdm9pZCB0Z2xfY29tcHV0ZV9zYWd2 X21hc2soc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUpCit7CisJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShzdGF0ZS0+YmFzZS5kZXYpOworCXN0cnVj dCBpbnRlbF9jcnRjICpjcnRjOworCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpuZXdfY3J0Y19z dGF0ZTsKKwlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGU7CisJc3RydWN0 IHNrbF9kZGJfYWxsb2NhdGlvbiAqZGRiID0gJnN0YXRlLT53bV9yZXN1bHRzLmRkYjsKKwlpbnQg cmV0OworCWludCBpOworCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmU7CisKKwlmb3JfZWFjaF9v bGRuZXdfaW50ZWxfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0Yywgb2xkX2NydGNfc3RhdGUsCisJ CQkJCSAgICBuZXdfY3J0Y19zdGF0ZSwgaSkgeworCQlpbnQgcGlwZV9iaXQgPSBCSVQoY3J0Yy0+ cGlwZSk7CisJCWJvb2wgc2tpcCA9IHRydWU7CisKKwkJLyoKKwkJICogSWYgd2UgaGFkIHNldCB0 aGlzIG1hc3QgYWxyZWFkeSBvbmNlIGZvciB0aGlzIHN0YXRlLAorCQkgKiBubyBuZWVkIHRvIHdh c3RlIENQVSBjeWNsZXMgZm9yIGRvaW5nIHRoaXMgYWdhaW4uCisJCSAqLworCQlmb3JfZWFjaF9p bnRlbF9wbGFuZV9vbl9jcnRjKCZkZXZfcHJpdi0+ZHJtLCBjcnRjLCBwbGFuZSkgeworCQkJZW51 bSBwbGFuZV9pZCBwbGFuZV9pZCA9IHBsYW5lLT5pZDsKKworCQkJaWYgKCFza2xfcGxhbmVfd21f ZXF1YWxzKGRldl9wcml2LAorCQkJCSZvbGRfY3J0Y19zdGF0ZS0+d20uc2tsLm9wdGltYWwucGxh bmVzW3BsYW5lX2lkXSwKKwkJCQkmbmV3X2NydGNfc3RhdGUtPndtLnNrbC5vcHRpbWFsLnBsYW5l c1twbGFuZV9pZF0pKSB7CisJCQkJc2tpcCA9IGZhbHNlOworCQkJCWJyZWFrOworCQkJfQorCQl9 CisKKwkJLyoKKwkJICogQ2hlY2sgaWYgd20gbGV2ZWxzIGFyZSBhY3R1YWxseSB0aGUgc2FtZSBh cyBmb3IgcHJldmlvdXMKKwkJICogc3RhdGUsIHdoaWNoIG1lYW5zIHdlIGNhbiBqdXN0IHNraXAg ZG9pbmcgdGhpcyBsb25nIGNoZWNrCisJCSAqIGFuZCBqdXN0ICBjb3B5IGNvcnJlc3BvbmRlbnQg Yml0IGZyb20gcHJldmlvdXMgc3RhdGUuCisJCSAqLworCQlpZiAoc2tpcCkKKwkJCWNvbnRpbnVl OworCisJCXJldCA9IHRnbF9jaGVja19waXBlX2ZpdHNfc2Fndl93bShuZXdfY3J0Y19zdGF0ZSwg ZGRiKTsKKwkJaWYgKCFyZXQpCisJCQlzdGF0ZS0+Y3J0Y19zYWd2X21hc2sgfD0gcGlwZV9iaXQ7 CisJCWVsc2UKKwkJCXN0YXRlLT5jcnRjX3NhZ3ZfbWFzayAmPSB+cGlwZV9iaXQ7CisJfQorfQor CiBzdGF0aWMgaW50CiBza2xfY29tcHV0ZV93bShzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpz dGF0ZSkKIHsKIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YzsKIAlzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqbmV3X2NydGNfc3RhdGU7CiAJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRj X3N0YXRlOwotCXN0cnVjdCBza2xfZGRiX3ZhbHVlcyAqcmVzdWx0cyA9ICZzdGF0ZS0+d21fcmVz dWx0czsKIAlpbnQgcmV0LCBpOworCXN0cnVjdCBza2xfZGRiX3ZhbHVlcyAqcmVzdWx0cyA9ICZz dGF0ZS0+d21fcmVzdWx0czsKIAogCS8qIENsZWFyIGFsbCBkaXJ0eSBmbGFncyAqLwogCXJlc3Vs dHMtPmRpcnR5X3BpcGVzID0gMDsKIAorCS8qIE5vIFNBR1YgdW50aWwgd2UgY2hlY2sgaWYgaXQn cyBwb3NzaWJsZSAqLworCXN0YXRlLT5jcnRjX3NhZ3ZfbWFzayA9IDA7CisKIAlyZXQgPSBza2xf ZGRiX2FkZF9hZmZlY3RlZF9waXBlcyhzdGF0ZSk7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsK QEAgLTU2NDcsNiArNTk2Miw5IEBAIHZvaWQgc2tsX3BpcGVfd21fZ2V0X2h3X3N0YXRlKHN0cnVj dCBpbnRlbF9jcnRjICpjcnRjLAogCQkJCXZhbCA9IEk5MTVfUkVBRChDVVJfV00ocGlwZSwgbGV2 ZWwpKTsKIAogCQkJc2tsX3dtX2xldmVsX2Zyb21fcmVnX3ZhbCh2YWwsICZ3bS0+d21bbGV2ZWxd KTsKKwkJCWlmIChsZXZlbCA9PSAwKQorCQkJCW1lbWNweSgmd20tPnNhZ3Zfd20wLCAmd20tPndt W2xldmVsXSwKKwkJCQkJc2l6ZW9mKHN0cnVjdCBza2xfd21fbGV2ZWwpKTsKIAkJfQogCiAJCWlm IChwbGFuZV9pZCAhPSBQTEFORV9DVVJTT1IpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9wbS5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uaAppbmRleCBi NTc5YzcyNGI5MTUuLjUzMjc1ODYwNzMxYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcG0uaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5oCkBAIC00 Myw2ICs0Myw3IEBAIHZvaWQgc2tsX3BpcGVfd21fZ2V0X2h3X3N0YXRlKHN0cnVjdCBpbnRlbF9j cnRjICpjcnRjLAogdm9pZCBnNHhfd21fc2FuaXRpemUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KTsKIHZvaWQgdmx2X3dtX3Nhbml0aXplKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdik7CiBib29sIGludGVsX2Nhbl9lbmFibGVfc2FndihzdHJ1Y3QgaW50ZWxfYXRv bWljX3N0YXRlICpzdGF0ZSk7Citib29sIGludGVsX2hhc19zYWd2KHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdik7CiBpbnQgaW50ZWxfZW5hYmxlX3NhZ3Yoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KTsKIGludCBpbnRlbF9kaXNhYmxlX3NhZ3Yoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KTsKIGJvb2wgc2tsX3dtX2xldmVsX2VxdWFscyhjb25zdCBz dHJ1Y3Qgc2tsX3dtX2xldmVsICpsMSwKLS0gCjIuMTcuMQoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1n ZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==