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 1D122C10F27 for ; Mon, 9 Mar 2020 16:16:17 +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 EF2C821655 for ; Mon, 9 Mar 2020 16:16:16 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org EF2C821655 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 99BE38997A; Mon, 9 Mar 2020 16:16:16 +0000 (UTC) Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0857889949 for ; Mon, 9 Mar 2020 16:16:14 +0000 (UTC) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by orsmga101.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 09 Mar 2020 09:16:14 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.70,533,1574150400"; d="scan'208";a="234049298" Received: from unknown (HELO slisovsk-Lenovo-ideapad-720S-13IKB.fi.intel.com) ([10.237.72.89]) by fmsmga007.fm.intel.com with ESMTP; 09 Mar 2020 09:16:12 -0700 From: Stanislav Lisovskiy To: intel-gfx@lists.freedesktop.org Date: Mon, 9 Mar 2020 18:12:00 +0200 Message-Id: <20200309161204.17792-5-stanislav.lisovskiy@intel.com> X-Mailer: git-send-email 2.24.1.485.gad05a3d8e5 In-Reply-To: <20200309161204.17792-1-stanislav.lisovskiy@intel.com> References: <20200309161204.17792-1-stanislav.lisovskiy@intel.com> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH v19 4/8] 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 ICAgICAgZm9yIGludGVsX2hhc19zYWd2IGNoZWNrLgoKdjkgIC0gU3dpdGNoZWQgdG8gdTggZm9y IGNydGNfc2Fndl9tYXNrKFZpbGxlIFN5cmrDpGzDpCkKICAgIC0gY3J0Y19zYWd2X21hc2sgbm93 IGlzIHBpcGVfc2Fndl9tYXNrKFZpbGxlIFN5cmrDpGzDpCkKICAgIC0gRXh0cmFjdGVkIHNhZ3Yg Y2hlY2tpbmcgbG9naWMgZnJvbSBza2wvaWNsL3RnbF9jb21wdXRlX3NhZ3ZfbWFzawogICAgLSBF eHRyYWN0ZWQgc2tsX3BsYW5lX3dtX2xldmVsIGZ1bmN0aW9uIGFuZCBwYXNzaW5nIGxhdGVuY3kg dG8KICAgICAgc2VwYXJhdGUgcGF0Y2hlcyhWaWxsZSBTeXJqw6Rsw6QpCiAgICAtIFJlbW92ZWQg cGFydCBvZiB1bm5lZWRlZCBjb3B5LXBhc3RlIGZyb20gdGdsX2NoZWNrX3BpcGVfZml0c19zYWd2 X3dtCiAgICAgIChWaWxsZSBTeXJqw6Rsw6QpCiAgICAtIE5vdyB1c2luZyBzaW1wbGUgYXNzaWdu bWVudCBmb3Igc2Fndl93bTAgYXMgaXQgY29udGFpbnMgb25seQogICAgICBwb2QgdHlwZXMgYW5k IG5vIHBvaW50ZXJzKFZpbGxlIFN5cmrDpGzDpCkKICAgIC0gRml4ZWQgaW50ZWxfY2FuX2VuYWJs ZV9zYWd2IG5vdCB0byBkbyBkb3VibGUgZHV0eSwgbm93IGl0IG9ubHkKICAgICAgY2hlY2sgU0FH ViBiaXRzIGJ5IEFORGluZyB0aG9zZSBiZXR3ZWVuIGxvY2FsIGFuZCBnbG9iYWwgc3RhdGUuCiAg ICAgIFRoZSBTQUdWIG1hc2tzIGFyZSBub3cgY29tcHV0ZWQgYWZ0ZXIgd2F0ZXJtYXJrcyBhcmUg YXZhaWxhYmxlLAogICAgICBpbiBvcmRlciB0byBiZSBhYmxlIHRvIGZpZ3VyZSBvdXQgaWYgZGRi IHJhbmdlcyBhcmUgZml0dGluZyBuaWNlbHkuCiAgICAgIChWaWxsZSBTeXJqw6Rsw6QpCiAgICAt IE5vdyBoYXZpbmcgdXZfc2Fndl93bTAgYW5kIHNhZ3Zfd20wLCBvdGhlcndpc2Ugd2UgaGF2ZSB3 cm9uZyBsb2dpYwogICAgICB3aGVuIHVzaW5nIHNrbF9wbGFuZV93bV9sZXZlbCBhY2Nlc3Nvciwg YXMgd2UgaGFkIHByZXZpb3VzbHkgZm9yCiAgICAgIEdlbjExKyBjb2xvciBwbGFuZSBhbmQgcmVn dWxhciB3bSBsZXZlbHMsIHNvIHByb2JhYmx5IGJvdGgKICAgICAgaGFzIHRvIGJlIHJlY2FsY3Vs YXRlZCB3aXRoIGFkZGl0aW9uYWwgU0FHViBibG9jayB0aW1lIGZvciBMZXZlbCAwLgoKdjEwOiAt IFN0YXJ0aW5nIHRvIHVzZSBuZXcgZ2xvYmFsIHN0YXRlIGZvciBzdG9yaW5nIHBpcGVfc2Fndl9t YXNrCgp2MTE6IC0gRml4ZWQgcmViYXNlIGNvbmZsaWN0IHdpdGggcmVjZW50IGRybS10aXAKICAg ICAtIENoZWNrIGlmIHdlIHJlYWxseSBuZWVkIHRvIHJlY2FsY3VsYXRlIFNBR1YgbWFzaywgb3Ro ZXJ3aXNlCiAgICAgICBiYWlsIG91dCB3aXRob3V0IG1ha2luZyBhbnkgY2hhbmdlcy4KICAgICAt IFVzZSBjYWNoZWQgU0FHViByZXN1bHQsIGluc3RlYWQgb2YgcmVjYWxjdWxhdGluZyBpdCBldmVy eXRpbWUsCiAgICAgICBpZiBid19zdGF0ZSBoYXNuJ3QgY2hhbmdlZC4KCnYxMjogLSBSZW1vdmVk IFdBUk4gZnJvbSBpbnRlbF9jYW5fZW5hYmxlX3NhZ3YsIGluIHNvbWUgb2YgdGhlIGNvbW1pdHMK ICAgICAgIGlmIHdlIGRvbid0IHJlY2FsY3VsYXRlZCB3YXRlcm1hcmtzLCBid19zdGF0ZSBpcyBu b3QgcmVjYWxjdWxhdGVkLAogICAgICAgdGh1cyBsZWFkaW5nIHRvIFNBR1Ygc3RhdGUgbm90IHJl Y2FsY3VsYXRlZCBieSB0aGUgY29tbWl0IHN0YXRlLAogICAgICAgd2hpY2ggaXMgc3RpbGwgY2Fs bGluZyBpbnRlbF9jYW5fZW5hYmxlX3NhZ3YgZnVuY3Rpb24uIEZpeCB0aGF0CiAgICAgICBieSBq dXN0IGFuYWx5emluZyB0aGUgY3VycmVudCBnbG9iYWwgYndfc3RhdGUgb2JqZWN0IC0gYmVjYXVz ZQogICAgICAgd2Ugc2ltcGx5IGhhdmUgbm8gb3RoZXIgb2JqZWN0cyByZWxhdGVkIHRvIHRoYXQu Cgp2MTM6IC0gUmViYXNlZCwgZml4ZWQgd2FybmluZ3MgcmVnYXJkaW5nIGxvbmcgbGluZXMKICAg ICAtIENoYW5nZWQgZnVuY3Rpb24gY2FsbCBzaXRlcyBmcm9tIGludGVsX2F0b21pY19idyogdG8K ICAgICAgIGludGVsX3diXyogYXMgd2FzIHN1Z2dlc3RlZC4oSmFuaSBOaWt1bGEpCiAgICAgLSBU YWtlbiBkZGJfc3RhdGVfY2hhbmdlZCBhbmQgYndfc3RhdGVfY2hhbmdlZCBpbnRvIHVzZS4KCnYx NDogLSB0b3RhbF9hZmZlY3RlZF9wbGFuZXMgaXMgbm8gbG9uZ2VyIG5lZWRlZCB0byBjaGVjayBm b3IgZGRiIGNoYW5nZXMsCiAgICAgICBqdXN0IGFzIGFjdGl2ZV9waXBlX2NoYW5nZXMuCgp2MTU6 IC0gRml4ZWQgc3R1cGlkIG1pc3Rha2Ugd2l0aCB1bmluaXRpYWxpemVkIGNydGMgaW4KICAgICAg IHNrbF9jb21wdXRlX3NhZ3ZfbWFzay4KCnYxNjogLSBDb252ZXJ0IHBpcGVfc2Fndl9tYXNrIHRv IHBpcGVfc2Fndl9yZWplY3QgYW5kIG5vdyB1c2luZyBpbnZlcnRlZAogICAgICAgZmxhZyB0byBp bmRpY2F0ZSBTQUdWIHJlYWRpbmVzcyBmb3IgdGhlIHBpcGUoVmlsbGUgU3lyasOkbMOkKQogICAg IC0gQWRkZWQgcmV0dXJuIHZhbHVlIHRvIGludGVsX2NvbXB1dGVfc2Fndl9tYXNrIHdoaWNoIGNh bGwKICAgICAgIGludGVsX2F0b21pY19zZXJpYWxpemVfZ2xvYmFsX3N0YXRlIGluIG9yZGVyIHRv IHByb3Blcmx5CiAgICAgICBwcm9wYWdhdGUgRURFQURMQ0sgdG8gZHJtLgogICAgIC0gQmFzZWQg b24gdGhlIGRpc2N1c3Npb24gd2l0aCBWaWxsZSwgcmVtb3ZlZCBhY3RpdmVfcGlwZV9jaGFuZ2Vz CiAgICAgICBjaGVjayBhbmQgYWxzbyB0aGVyZSBzZWVtcyB0byBiZSBubyBuZWVkIGZvciBjaGVj a2luZyBkZGJfc3RhdGVfY2hhbmdlcwogICAgICAgYXMgd2VsbC4gSW5zdGVhZCB3ZSBqdXN0IGl0 ZXJhdGUgdGhyb3VnaCBjcnRjcyBpbiBzdGF0ZSAtIGhhdmluZwogICAgICAgY3J0YyBpbiBhIHN0 YXRlIGFscmVhZHkgZ3VhcmFudGVlcyB0aGF0IGl0IGlzIGF0IGxlYXN0IHJlYWQtbG9ja2VkCiAg ICAgICBIYXZpbmcgYWRkaXRpb25hbCBmbGFnIHRvIGNoZWNrIGlmIHRoZXJlIGFjdHVhbGx5IHdl cmUgc29tZSBwbGFuZQogICAgICAgd20vZGRiIGNoYW5nZXMgd291bGQgYmUgcHJvYmFibHkgYWRk ZWQgbGF0ZXIgYXMgYW4gb3B0aW1pemF0aW9uLgogICAgIC0gV2UgY2FuJ3QgZ2V0IHBhcmVudCBh dG9taWMgc3RhdGUgZnJvbSBjcnRjX3N0YXRlIGF0IGNvbW1pdCBzdGFnZQogICAgICAgKG5pY2Ug ZHJtIGZlYXR1cmUpLCBhbHNvIHByb3BhZ2F0aW5nIHN0YXRlIHRocm91Z2ggZnVuY3Rpb24gY2Fs bAogICAgICAgY2hhaW4gc2VlbXMgdG8gYmUgb3ZlcmtpbGwgYW5kIG5vdCBwb3NzaWJsZShjdXJz b3IgbGVnYWN5IHVwZGF0ZXMpCiAgICAgICBRdWVyeWluZyBmb3IgYndfc3RhdGUgb2JqZWN0IGZy b20gZ2xvYmFsIHN0YXRlIGlzIG5vdCBwb3NzaWJsZSBhcwogICAgICAgaXQgbWlnaHQgZ2V0IHN3 YXBwZWQgd2l0aCBvdGhlciBnbG9iYWwgc3RhdGUuCiAgICAgICBTby4uLiBqdXN0IHN0aWNrZWQg Y2FuX3NhZ3YgYm9vbGVhbiBpbnRvIHdtIGNydGMgc3RhdGUuCgpTaWduZWQtb2ZmLWJ5OiBTdGFu aXNsYXYgTGlzb3Zza2l5IDxzdGFuaXNsYXYubGlzb3Zza2l5QGludGVsLmNvbT4KQ2M6IFZpbGxl IFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBpbnRlbC5jb20+CkNjOiBKYW1lcyBBdXNtdXMgPGph bWVzLmF1c211c0BpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9p bnRlbF9idy5oICAgICAgIHwgIDE4ICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50 ZWxfZGlzcGxheS5jICB8ICAyMyArLQogLi4uL2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxh eV90eXBlcy5oICAgIHwgICAzICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgICAg ICAgICAgICAgICB8IDMxNCArKysrKysrKysrKysrKysrLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3BtLmggICAgICAgICAgICAgICB8ICAgMSArCiA1IGZpbGVzIGNoYW5nZWQsIDMxOCBp bnNlcnRpb25zKCspLCA0MSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9kaXNwbGF5L2ludGVsX2J3LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5 L2ludGVsX2J3LmgKaW5kZXggYjVmNjE0NjM5MjJmLi40MDgzYWRmNGI0MzIgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfYncuaAorKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2J3LmgKQEAgLTE4LDYgKzE4LDI0IEBAIHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlOwogc3RydWN0IGludGVsX2J3X3N0YXRlIHsKIAlzdHJ1Y3QgaW50ZWxf Z2xvYmFsX3N0YXRlIGJhc2U7CiAKKwkvKgorCSAqIENvbnRhaW5zIGEgYml0IG1hc2ssIHVzZWQg dG8gZGV0ZXJtaW5lLCB3aGV0aGVyIGNvcnJlc3BvbmRlbnQKKwkgKiBwaXBlIGFsbG93cyBTQUdW IG9yIG5vdC4KKwkgKi8KKwl1OCBwaXBlX3NhZ3ZfcmVqZWN0OworCisJLyoKKwkgKiBVc2VkIHRv IGRldGVybWluZSBpZiB3ZSBhbHJlYWR5IGhhZCBjYWxjdWxhdGVkCisJICogU0FHViBtYXNrIGZv ciB0aGlzIHN0YXRlIG9uY2UuCisJICovCisJYm9vbCBzYWd2X2NhbGN1bGF0ZWQ7CisKKwkvKgor CSAqIENvbnRhaW5zIGZpbmFsIFNBR1YgZGVjaXNpb24gYmFzZWQgb24gY3VycmVudCBtYXNrLAor CSAqIHRvIHByZXZlbnQgZG9pbmcgdGhlIHNhbWUgam9iIG92ZXIgYW5kIG92ZXIgYWdhaW4uCisJ ICovCisJYm9vbCBjYW5fc2FndjsKKwogCXVuc2lnbmVkIGludCBkYXRhX3JhdGVbSTkxNV9NQVhf UElQRVNdOwogCXU4IG51bV9hY3RpdmVfcGxhbmVzW0k5MTVfTUFYX1BJUEVTXTsKIH07CmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jCmluZGV4IDhmMjNjNGQ1 MWMzMy4uOWUwMDU4YTc4ZWE2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNw bGF5L2ludGVsX2Rpc3BsYXkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2lu dGVsX2Rpc3BsYXkuYwpAQCAtMTQwMTAsNyArMTQwMTAsMTAgQEAgc3RhdGljIHZvaWQgdmVyaWZ5 X3dtX3N0YXRlKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAogCQkvKiBXYXRlcm1hcmtzICovCiAJ CWZvciAobGV2ZWwgPSAwOyBsZXZlbCA8PSBtYXhfbGV2ZWw7IGxldmVsKyspIHsKIAkJCWlmIChz a2xfd21fbGV2ZWxfZXF1YWxzKCZod19wbGFuZV93bS0+d21bbGV2ZWxdLAotCQkJCQkJJnN3X3Bs YW5lX3dtLT53bVtsZXZlbF0pKQorCQkJCQkJJnN3X3BsYW5lX3dtLT53bVtsZXZlbF0pIHx8CisJ CQkgICAoc2tsX3dtX2xldmVsX2VxdWFscygmaHdfcGxhbmVfd20tPndtW2xldmVsXSwKKwkJCQkJ CSZzd19wbGFuZV93bS0+c2Fndl93bTApICYmCisJCQkgICAobGV2ZWwgPT0gMCkpKQogCQkJCWNv bnRpbnVlOwogCiAJCQlkcm1fZXJyKCZkZXZfcHJpdi0+ZHJtLApAQCAtMTQwNjUsNyArMTQwNjgs MTAgQEAgc3RhdGljIHZvaWQgdmVyaWZ5X3dtX3N0YXRlKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRj LAogCQkvKiBXYXRlcm1hcmtzICovCiAJCWZvciAobGV2ZWwgPSAwOyBsZXZlbCA8PSBtYXhfbGV2 ZWw7IGxldmVsKyspIHsKIAkJCWlmIChza2xfd21fbGV2ZWxfZXF1YWxzKCZod19wbGFuZV93bS0+ d21bbGV2ZWxdLAotCQkJCQkJJnN3X3BsYW5lX3dtLT53bVtsZXZlbF0pKQorCQkJCQkJJnN3X3Bs YW5lX3dtLT53bVtsZXZlbF0pIHx8CisJCQkgICAoc2tsX3dtX2xldmVsX2VxdWFscygmaHdfcGxh bmVfd20tPndtW2xldmVsXSwKKwkJCQkJCSZzd19wbGFuZV93bS0+c2Fndl93bTApICYmCisJCQkg ICAobGV2ZWwgPT0gMCkpKQogCQkJCWNvbnRpbnVlOwogCiAJCQlkcm1fZXJyKCZkZXZfcHJpdi0+ ZHJtLApAQCAtMTU1NDQsOCArMTU1NTAsMTAgQEAgc3RhdGljIHZvaWQgaW50ZWxfYXRvbWljX2Nv bW1pdF90YWlsKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlKQogCQkgKiBTS0wgd29y a2Fyb3VuZDogYnNwZWMgcmVjb21tZW5kcyB3ZSBkaXNhYmxlIHRoZSBTQUdWIHdoZW4gd2UKIAkJ ICogaGF2ZSBtb3JlIHRoZW4gb25lIHBpcGUgZW5hYmxlZAogCQkgKi8KLQkJaWYgKCFpbnRlbF9j YW5fZW5hYmxlX3NhZ3Yoc3RhdGUpKQotCQkJaW50ZWxfZGlzYWJsZV9zYWd2KGRldl9wcml2KTsK KwkJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCAxMSkgeworCQkJaWYgKCFpbnRlbF9jYW5fZW5h YmxlX3NhZ3Yoc3RhdGUpKQorCQkJCWludGVsX2Rpc2FibGVfc2FndihkZXZfcHJpdik7CisJCX0K IAogCQlpbnRlbF9tb2Rlc2V0X3ZlcmlmeV9kaXNhYmxlZChkZXZfcHJpdiwgc3RhdGUpOwogCX0K QEAgLTE1NjQ1LDggKzE1NjUzLDEwIEBAIHN0YXRpYyB2b2lkIGludGVsX2F0b21pY19jb21taXRf dGFpbChzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSkKIAlpZiAoc3RhdGUtPm1vZGVz ZXQpCiAJCWludGVsX3ZlcmlmeV9wbGFuZXMoc3RhdGUpOwogCi0JaWYgKHN0YXRlLT5tb2Rlc2V0 ICYmIGludGVsX2Nhbl9lbmFibGVfc2FndihzdGF0ZSkpCi0JCWludGVsX2VuYWJsZV9zYWd2KGRl dl9wcml2KTsKKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDExKSB7CisJCWlmIChzdGF0ZS0+ bW9kZXNldCAmJiBpbnRlbF9jYW5fZW5hYmxlX3NhZ3Yoc3RhdGUpKQorCQkJaW50ZWxfZW5hYmxl X3NhZ3YoZGV2X3ByaXYpOworCX0KIAogCWRybV9hdG9taWNfaGVscGVyX2NvbW1pdF9od19kb25l KCZzdGF0ZS0+YmFzZSk7CiAKQEAgLTE1Nzk4LDcgKzE1ODA4LDYgQEAgc3RhdGljIGludCBpbnRl bF9hdG9taWNfY29tbWl0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAKIAlpZiAoc3RhdGUtPmds b2JhbF9zdGF0ZV9jaGFuZ2VkKSB7CiAJCWFzc2VydF9nbG9iYWxfc3RhdGVfbG9ja2VkKGRldl9w cml2KTsKLQogCQlkZXZfcHJpdi0+YWN0aXZlX3BpcGVzID0gc3RhdGUtPmFjdGl2ZV9waXBlczsK IAl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlz cGxheV90eXBlcy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5 X3R5cGVzLmgKaW5kZXggNWUwMGU2MTFmMDc3Li5kYTAzMDhiODdkYWQgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV90eXBlcy5oCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV90eXBlcy5oCkBAIC02Njks MTEgKzY2OSwxNCBAQCBzdHJ1Y3Qgc2tsX3BsYW5lX3dtIHsKIAlzdHJ1Y3Qgc2tsX3dtX2xldmVs IHdtWzhdOwogCXN0cnVjdCBza2xfd21fbGV2ZWwgdXZfd21bOF07CiAJc3RydWN0IHNrbF93bV9s ZXZlbCB0cmFuc193bTsKKwlzdHJ1Y3Qgc2tsX3dtX2xldmVsIHNhZ3Zfd20wOworCXN0cnVjdCBz a2xfd21fbGV2ZWwgdXZfc2Fndl93bTA7CiAJYm9vbCBpc19wbGFuYXI7CiB9OwogCiBzdHJ1Y3Qg c2tsX3BpcGVfd20gewogCXN0cnVjdCBza2xfcGxhbmVfd20gcGxhbmVzW0k5MTVfTUFYX1BMQU5F U107CisJYm9vbCBjYW5fc2FndjsKIH07CiAKIGVudW0gdmx2X3dtX2xldmVsIHsKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9wbS5jCmluZGV4IGM3MmZhNTlhODMwMi4uZjU5OGI1NWY0YWJjIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3BtLmMKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJpOTE1X2ZpeGVkLmgi CiAjaW5jbHVkZSAiaTkxNV9pcnEuaCIKICNpbmNsdWRlICJpOTE1X3RyYWNlLmgiCisjaW5jbHVk ZSAiZGlzcGxheS9pbnRlbF9idy5oIgogI2luY2x1ZGUgImludGVsX3BtLmgiCiAjaW5jbHVkZSAi aW50ZWxfc2lkZWJhbmQuaCIKICNpbmNsdWRlICIuLi8uLi8uLi9wbGF0Zm9ybS94ODYvaW50ZWxf aXBzLmgiCkBAIC0zNjM0LDcgKzM2MzUsNyBAQCBzdGF0aWMgYm9vbCBza2xfbmVlZHNfbWVtb3J5 X2J3X3dhKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAlyZXR1cm4gSVNfR0VO OV9CQyhkZXZfcHJpdikgfHwgSVNfQlJPWFRPTihkZXZfcHJpdik7CiB9CiAKLXN0YXRpYyBib29s Citib29sCiBpbnRlbF9oYXNfc2FndihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp CiB7CiAJLyogSEFDSyEgKi8KQEAgLTM3NTcsMzkgKzM3NTgsMjUgQEAgaW50ZWxfZGlzYWJsZV9z YWd2KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAlyZXR1cm4gMDsKIH0KIAot Ym9vbCBpbnRlbF9jYW5fZW5hYmxlX3NhZ3Yoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3Rh dGUpCitzdGF0aWMgYm9vbCBza2xfY2FuX2VuYWJsZV9zYWd2X29uX3BpcGUoc3RydWN0IGludGVs X2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCiB7Ci0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHN0 YXRlLT5iYXNlLmRldjsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Y19zdGF0ZS0+dWFw aS5jcnRjLT5kZXY7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkx NShkZXYpOworCXN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlID0gdG9faW50ZWxfYXRv bWljX3N0YXRlKGNydGNfc3RhdGUtPnVhcGkuc3RhdGUpOwogCXN0cnVjdCBpbnRlbF9jcnRjICpj cnRjOwogCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmU7Ci0Jc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKmNydGNfc3RhdGU7Ci0JZW51bSBwaXBlIHBpcGU7CiAJaW50IGxldmVsLCBsYXRlbmN5Owog Ci0JaWYgKCFpbnRlbF9oYXNfc2FndihkZXZfcHJpdikpCi0JCXJldHVybiBmYWxzZTsKLQotCS8q Ci0JICogSWYgdGhlcmUgYXJlIG5vIGFjdGl2ZSBDUlRDcywgbm8gYWRkaXRpb25hbCBjaGVja3Mg bmVlZCBiZSBwZXJmb3JtZWQKLQkgKi8KLQlpZiAoaHdlaWdodDgoc3RhdGUtPmFjdGl2ZV9waXBl cykgPT0gMCkKLQkJcmV0dXJuIHRydWU7CisJY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0 ZS0+dWFwaS5jcnRjKTsKIAotCS8qCi0JICogU0tMKyB3b3JrYXJvdW5kOiBic3BlYyByZWNvbW1l bmRzIHdlIGRpc2FibGUgU0FHViB3aGVuIHdlIGhhdmUKLQkgKiBtb3JlIHRoZW4gb25lIHBpcGUg ZW5hYmxlZAotCSAqLwotCWlmIChod2VpZ2h0OChzdGF0ZS0+YWN0aXZlX3BpcGVzKSA+IDEpCisJ aWYgKChJTlRFTF9HRU4oZGV2X3ByaXYpIDw9IDkpICYmIChod2VpZ2h0OChzdGF0ZS0+YWN0aXZl X3BpcGVzKSA+IDEpKQogCQlyZXR1cm4gZmFsc2U7CiAKLQkvKiBTaW5jZSB3ZSdyZSBub3cgZ3Vh cmFudGVlZCB0byBvbmx5IGhhdmUgb25lIGFjdGl2ZSBDUlRDLi4uICovCi0JcGlwZSA9IGZmcyhz dGF0ZS0+YWN0aXZlX3BpcGVzKSAtIDE7Ci0JY3J0YyA9IGludGVsX2dldF9jcnRjX2Zvcl9waXBl KGRldl9wcml2LCBwaXBlKTsKLQljcnRjX3N0YXRlID0gdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRj LT5iYXNlLnN0YXRlKTsKLQotCWlmIChjcnRjX3N0YXRlLT5ody5hZGp1c3RlZF9tb2RlLmZsYWdz ICYgRFJNX01PREVfRkxBR19JTlRFUkxBQ0UpCisJaWYgKGNydGNfc3RhdGUtPmh3LmFkanVzdGVk X21vZGUuZmxhZ3MgJiBEUk1fTU9ERV9GTEFHX0lOVEVSTEFDRSkgeworCQlEUk1fREVCVUdfS01T KCJObyBTQUdWIGZvciBpbnRlcmxhY2VkIG1vZGUgb24gcGlwZSAlY1xuIiwKKwkJCSAgICAgIHBp cGVfbmFtZShjcnRjLT5waXBlKSk7CiAJCXJldHVybiBmYWxzZTsKKwl9CiAKIAlmb3JfZWFjaF9p bnRlbF9wbGFuZV9vbl9jcnRjKGRldiwgY3J0YywgcGxhbmUpIHsKIAkJc3RydWN0IHNrbF9wbGFu ZV93bSAqd20gPQpAQCAtMzgxNiwxMyArMzgwMywxNDUgQEAgYm9vbCBpbnRlbF9jYW5fZW5hYmxl X3NhZ3Yoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUpCiAJCSAqIGluY3VyIG1lbW9y eSBsYXRlbmNpZXMgaGlnaGVyIHRoYW4gc2Fndl9ibG9ja190aW1lX3VzIHdlCiAJCSAqIGNhbid0 IGVuYWJsZSBTQUdWLgogCQkgKi8KLQkJaWYgKGxhdGVuY3kgPCBkZXZfcHJpdi0+c2Fndl9ibG9j a190aW1lX3VzKQorCQlpZiAobGF0ZW5jeSA8IGRldl9wcml2LT5zYWd2X2Jsb2NrX3RpbWVfdXMp IHsKKwkJCURSTV9ERUJVR19LTVMoIkxhdGVuY3kgJWQgPCBzYWd2IGJsb2NrIHRpbWUgJWQsIG5v IFNBR1YgZm9yIHBpcGUgJWNcbiIsCisJCQkJICAgICAgbGF0ZW5jeSwgZGV2X3ByaXYtPnNhZ3Zf YmxvY2tfdGltZV91cywgcGlwZV9uYW1lKGNydGMtPnBpcGUpKTsKIAkJCXJldHVybiBmYWxzZTsK KwkJfQogCX0KIAogCXJldHVybiB0cnVlOwogfQogCitzdGF0aWMgYm9vbAordGdsX2Nhbl9lbmFi bGVfc2Fndl9vbl9waXBlKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKTsKKwor c3RhdGljIGJvb2wgaW50ZWxfY2FsY3VsYXRlX3NhZ3ZfcmVzdWx0KHN0cnVjdCBpbnRlbF9id19z dGF0ZSAqYndfc3RhdGUpCit7CisJcmV0dXJuIGJ3X3N0YXRlLT5waXBlX3NhZ3ZfcmVqZWN0ID09 IDA7Cit9CisKK3N0YXRpYyBpbnQgaW50ZWxfY29tcHV0ZV9zYWd2X21hc2soc3RydWN0IGludGVs X2F0b21pY19zdGF0ZSAqc3RhdGUpCit7CisJaW50IHJldDsKKwlzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2ID0gc3RhdGUtPmJhc2UuZGV2OworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IHRvX2k5MTUoZGV2KTsKKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YzsKKwlzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqbmV3X2NydGNfc3RhdGU7CisJc3RydWN0IGludGVsX2J3X3N0YXRlICpu ZXdfYndfc3RhdGUgPSBOVUxMOworCXN0cnVjdCBpbnRlbF9id19zdGF0ZSAqb2xkX2J3X3N0YXRl ID0gTlVMTDsKKwlpbnQgaTsKKworCS8qCisJICogSWYgU0FHViBpcyBub3Qgc3VwcG9ydGVkIHdl IGp1c3QgY2FuJ3QgZG8gYW55dGhpbmcKKwkgKiBub3QgZXZlbiBzZXQgb3IgcmVqZWN0IFNBR1Yg cG9pbnRzIC0ganVzdCBiYWlsIG91dC4KKwkgKiBUaHVzIGF2b2lkIG5lZWRsZXNzIGNhbGN1bGF0 aW9ucy4KKwkgKi8KKwlpZiAoIWludGVsX2hhc19zYWd2KGRldl9wcml2KSkKKwkJcmV0dXJuIDA7 CisKKwlmb3JfZWFjaF9uZXdfaW50ZWxfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0YywKKwkJCQkJ IG5ld19jcnRjX3N0YXRlLCBpKSB7CisJCWJvb2wgcGlwZV9zYWd2X2VuYWJsZTsKKworCQluZXdf Yndfc3RhdGUgPSBpbnRlbF9id19nZXRfc3RhdGUoc3RhdGUpOworCQlvbGRfYndfc3RhdGUgPSBp bnRlbF9id19nZXRfb2xkX3N0YXRlKHN0YXRlKTsKKworCQlpZiAoSVNfRVJSX09SX05VTEwobmV3 X2J3X3N0YXRlKSB8fCBJU19FUlJfT1JfTlVMTChvbGRfYndfc3RhdGUpKSB7CisJCQlXQVJOKDEs ICJDb3VsZCBub3QgZ2V0IGJ3X3N0YXRlXG4iKTsKKwkJCXJldHVybiAtRUlOVkFMOworCQl9CisK KwkJbmV3X2J3X3N0YXRlLT5zYWd2X2NhbGN1bGF0ZWQgPSBmYWxzZTsKKworCQlpZiAoSU5URUxf R0VOKGRldl9wcml2KSA+PSAxMikKKwkJCXBpcGVfc2Fndl9lbmFibGUgPSB0Z2xfY2FuX2VuYWJs ZV9zYWd2X29uX3BpcGUobmV3X2NydGNfc3RhdGUpOworCQllbHNlCisJCQlwaXBlX3NhZ3ZfZW5h YmxlID0gc2tsX2Nhbl9lbmFibGVfc2Fndl9vbl9waXBlKG5ld19jcnRjX3N0YXRlKTsKKworCQlp ZiAocGlwZV9zYWd2X2VuYWJsZSkKKwkJCW5ld19id19zdGF0ZS0+cGlwZV9zYWd2X3JlamVjdCAm PSB+QklUKGNydGMtPnBpcGUpOworCQllbHNlCisJCQluZXdfYndfc3RhdGUtPnBpcGVfc2Fndl9y ZWplY3QgfD0gQklUKGNydGMtPnBpcGUpOworCX0KKworCWlmICghbmV3X2J3X3N0YXRlIHx8ICFv bGRfYndfc3RhdGUpCisJCXJldHVybiAwOworCisJbmV3X2J3X3N0YXRlLT5jYW5fc2FndiA9IGlu dGVsX2NhbGN1bGF0ZV9zYWd2X3Jlc3VsdChuZXdfYndfc3RhdGUpOworCW5ld19id19zdGF0ZS0+ c2Fndl9jYWxjdWxhdGVkID0gdHJ1ZTsKKworCWZvcl9lYWNoX25ld19pbnRlbF9jcnRjX2luX3N0 YXRlKHN0YXRlLCBjcnRjLAorCQkJCQkgbmV3X2NydGNfc3RhdGUsIGkpIHsKKwkJc3RydWN0IHNr bF9waXBlX3dtICpwaXBlX3dtID0gJm5ld19jcnRjX3N0YXRlLT53bS5za2wub3B0aW1hbDsKKwor CQkvKgorCQkgKiBEdWUgdG8gZHJtIGxpbWl0YXRpb24gYXQgY29tbWl0IHN0YXRlLCB3aGVuCisJ CSAqIGNoYW5nZXMgYXJlIHdyaXR0ZW4gdGhlIHdob2xlIGF0b21pYyBzdGF0ZSBpcworCQkgKiB6 ZXJvZWQgYXdheSA9PiB3aGljaCBwcmV2ZW50cyBmcm9tIHVzaW5nIGl0LAorCQkgKiBzbyBqdXN0 IHN0aWNraW5nIGl0IGludG8gcGlwZSB3bSBzdGF0ZSBmb3IKKwkJICoga2VlcGluZyBpdCBzaW1w bGUgLSBhbnl3YXkgdGhpcyBpcyByZWxhdGVkIHRvIHdtLgorCQkgKiBQcm9wZXIgd2F5IGluIGlk ZWFsIHVuaXZlcnNlIHdvdWxkIGJlIG9mIGNvdXJzZSBub3QKKwkJICogdG8gbG9zZSBwYXJlbnQg YXRvbWljIHN0YXRlIG9iamVjdCBmcm9tIGNoaWxkIGNydGNfc3RhdGUsCisJCSAqIGFuZCBzdGlj ayB0byBPT1AgcHJvZ3JhbW1pbmcgcHJpbmNpcGxlcywgd2hpY2ggaGFkIGJlZW4KKwkJICogc2Np ZW50aWZpY2FsbHkgcHJvdmVuIHRvIHdvcmsuCisJCSAqLworCQlwaXBlX3dtLT5jYW5fc2FndiA9 IG5ld19id19zdGF0ZS0+Y2FuX3NhZ3Y7CisJfQorCisJLyoKKwkgKiBGb3IgU0FHViB3ZSBuZWVk IHRvIGFjY291bnQgYWxsIHRoZSBwaXBlcywKKwkgKiBub3Qgb25seSB0aGUgb25lcyB3aGljaCBh cmUgaW4gc3RhdGUgY3VycmVudGx5LgorCSAqIEdyYWIgYWxsIGxvY2tzIGlmIHdlIGRldGVjdCB0 aGF0IHdlIGFyZSBhY3R1YWxseQorCSAqIGdvaW5nIHRvIGRvIHNvbWV0aGluZy4KKwkgKi8KKwlp ZiAobmV3X2J3X3N0YXRlLT5waXBlX3NhZ3ZfcmVqZWN0ICE9IG9sZF9id19zdGF0ZS0+cGlwZV9z YWd2X3JlamVjdCkgeworCQlEUk1fREVCVUdfS01TKCJTdGF0ZSAlcDogb2xkIHNhZ3YgbWFzayAw eCV4LCBuZXcgc2FndiBtYXNrIDB4JXhcbiIsCisJCQkgICAgICBzdGF0ZSwKKwkJCSAgICAgIG9s ZF9id19zdGF0ZS0+cGlwZV9zYWd2X3JlamVjdCwKKwkJCSAgICAgIG5ld19id19zdGF0ZS0+cGlw ZV9zYWd2X3JlamVjdCk7CisKKwkJcmV0ID0gaW50ZWxfYXRvbWljX3NlcmlhbGl6ZV9nbG9iYWxf c3RhdGUoJm5ld19id19zdGF0ZS0+YmFzZSk7CisJCWlmIChyZXQpIHsKKwkJCURSTV9ERUJVR19L TVMoIkNvdWxkIG5vdCBzZXJpYWxpemUgZ2xvYmFsIHN0YXRlXG4iKTsKKwkJCXJldHVybiByZXQ7 CisJCX0KKwl9CisKKwlyZXR1cm4gMDsKK30KKworLyoKKyAqIFRoaXMgZnVuY3Rpb24gdG8gYmUg dXNlZCBiZWZvcmUgc3dhcCBzdGF0ZQorICovCitib29sIGludGVsX2Nhbl9lbmFibGVfc2Fndihz dHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSkKK3sKKwlzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2ID0gc3RhdGUtPmJhc2UuZGV2OworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IHRvX2k5MTUoZGV2KTsKKwlzdHJ1Y3QgaW50ZWxfYndfc3RhdGUgKmJ3X3N0YXRlOworCisJ aWYgKCFpbnRlbF9oYXNfc2FndihkZXZfcHJpdikpIHsKKwkJRFJNX0RFQlVHX0tNUygiTm8gU0FH ViBzdXBwb3J0IGRldGVjdGVkXG4iKTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKworCWJ3X3N0YXRl ID0gaW50ZWxfYndfZ2V0X3N0YXRlKHN0YXRlKTsKKworCWlmIChJU19FUlJfT1JfTlVMTChid19z dGF0ZSkpIHsKKwkJV0FSTigxLCAiQ291bGQgbm90IGdldCBid19zdGF0ZVxuIik7CisJCXJldHVy biBmYWxzZTsKKwl9CisKKwlpZiAoYndfc3RhdGUtPnNhZ3ZfY2FsY3VsYXRlZCkKKwkJZ290byBv dXQ7CisKKwlid19zdGF0ZS0+Y2FuX3NhZ3YgPSBpbnRlbF9jYWxjdWxhdGVfc2Fndl9yZXN1bHQo Yndfc3RhdGUpOworCWJ3X3N0YXRlLT5zYWd2X2NhbGN1bGF0ZWQgPSB0cnVlOworCitvdXQ6CisJ cmV0dXJuIGJ3X3N0YXRlLT5jYW5fc2FndjsKK30KKwogLyoKICAqIENhbGN1bGF0ZSBpbml0aWFs IERCdWYgc2xpY2Ugb2Zmc2V0LCBiYXNlZCBvbiBzbGljZSBzaXplCiAgKiBhbmQgbWFzayhpLmUg aWYgc2xpY2Ugc2l6ZSBpcyAxMDI0IGFuZCBzZWNvbmQgc2xpY2UgaXMgZW5hYmxlZApAQCAtNDA0 Miw2ICs0MTYxLDcgQEAgc2tsX2N1cnNvcl9hbGxvY2F0aW9uKGNvbnN0IHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCQl1MzIgbGF0ZW5jeSA9IGRldl9wcml2LT53bS5za2xf bGF0ZW5jeVtsZXZlbF07CiAKIAkJc2tsX2NvbXB1dGVfcGxhbmVfd20oY3J0Y19zdGF0ZSwgbGV2 ZWwsIGxhdGVuY3ksICZ3cCwgJndtLCAmd20pOworCiAJCWlmICh3bS5taW5fZGRiX2FsbG9jID09 IFUxNl9NQVgpCiAJCQlicmVhazsKIApAQCAtNDU1Niw5ICs0Njc2LDgzIEBAIHNrbF9wbGFuZV93 bV9sZXZlbChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAljb25z dCBzdHJ1Y3Qgc2tsX3BsYW5lX3dtICp3bSA9CiAJCSZjcnRjX3N0YXRlLT53bS5za2wub3B0aW1h bC5wbGFuZXNbcGxhbmVfaWRdOwogCisJaWYgKCFsZXZlbCkgeworCQljb25zdCBzdHJ1Y3Qgc2ts X3BpcGVfd20gKnBpcGVfd20gPSAmY3J0Y19zdGF0ZS0+d20uc2tsLm9wdGltYWw7CisKKwkJaWYg KHBpcGVfd20tPmNhbl9zYWd2KQorCQkJcmV0dXJuIGNvbG9yX3BsYW5lID09IDAgPyAmd20tPnNh Z3Zfd20wIDogJndtLT51dl9zYWd2X3dtMDsKKwl9CisKIAlyZXR1cm4gY29sb3JfcGxhbmUgPT0g MCA/ICZ3bS0+d21bbGV2ZWxdIDogJndtLT51dl93bVtsZXZlbF07CiB9CiAKK3N0YXRpYyBib29s Cit0Z2xfY2FuX2VuYWJsZV9zYWd2X29uX3BpcGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNy dGNfc3RhdGUpCit7CisJc3RydWN0IGRybV9jcnRjICpjcnRjID0gY3J0Y19zdGF0ZS0+dWFwaS5j cnRjOworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+ ZGV2KTsKKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0 Yyk7CisJc3RydWN0IHNrbF9kZGJfZW50cnkgKmFsbG9jID0gJmNydGNfc3RhdGUtPndtLnNrbC5k ZGI7CisJdTE2IGFsbG9jX3NpemU7CisJdTY0IHRvdGFsX2RhdGFfcmF0ZTsKKwllbnVtIHBsYW5l X2lkIHBsYW5lX2lkOworCWludCBudW1fYWN0aXZlOworCXU2NCBwbGFuZV9kYXRhX3JhdGVbSTkx NV9NQVhfUExBTkVTXSA9IHt9OworCXUzMiBibG9ja3M7CisKKwkvKgorCSAqIElmIHBpcGUgaXMg bm90IGFjdGl2ZSBpdCBjYW4ndCBhZmZlY3QgU0FHViByZWplY3Rpb24KKwkgKiBDaGVja2luZyBp dCBoZXJlIGlzIG5lZWRlZCB0byBsZWF2ZSBvbmx5IGNhc2VzIHdoZW4KKwkgKiBhbGxvY19zaXpl IGlzIDAgZm9yIGFueSBvdGhlciByZWFzb25zLCBleGNlcHQgaW5hY3RpdmUKKwkgKiBwaXBlLiBB cyBpbmFjdGl2ZSBwaXBlIGlzIGZpbmUsIGhvd2V2ZXIgaGF2aW5nIG5vIGRkYgorCSAqIHNwYWNl IGF2YWlsYWJsZSBpcyBhbHJlYWR5IHByb2JsZW1hdGljIC0gc28gbmVlZCB0bworCSAqIHRvIHNl cGFyYXRlIHRob3NlLgorCSAqLworCWlmICghY3J0Y19zdGF0ZS0+aHcuYWN0aXZlKQorCQlyZXR1 cm4gdHJ1ZTsKKworCS8qCisJICogTm8gbmVlZCB0byBjaGVjayBnZW4gaGVyZSwgd2UgY2FsbCB0 aGlzIG9ubHkgZm9yIGdlbjEyCisJICovCisJdG90YWxfZGF0YV9yYXRlID0KKwkJaWNsX2dldF90 b3RhbF9yZWxhdGl2ZV9kYXRhX3JhdGUoY3J0Y19zdGF0ZSwKKwkJCQkJCSBwbGFuZV9kYXRhX3Jh dGUpOworCisJc2tsX2RkYl9nZXRfcGlwZV9hbGxvY2F0aW9uX2xpbWl0cyhkZXZfcHJpdiwgY3J0 Y19zdGF0ZSwKKwkJCQkJICAgdG90YWxfZGF0YV9yYXRlLAorCQkJCQkgICBhbGxvYywgJm51bV9h Y3RpdmUpOworCWFsbG9jX3NpemUgPSBza2xfZGRiX2VudHJ5X3NpemUoYWxsb2MpOworCWlmIChh bGxvY19zaXplID09IDApCisJCXJldHVybiBmYWxzZTsKKworCS8qCisJICogRG8gY2hlY2sgaWYg d2UgY2FuIGZpdCBMMCArIHNhZ3ZfYmxvY2tfdGltZSBhbmQKKwkgKiBkaXNhYmxlIFNBR1YgaWYg d2UgY2FuJ3QuCisJICovCisJYmxvY2tzID0gMDsKKwlmb3JfZWFjaF9wbGFuZV9pZF9vbl9jcnRj KGludGVsX2NydGMsIHBsYW5lX2lkKSB7CisJCS8qCisJCSAqIFRoZSBvbmx5IHBsYWNlLCB3aGVy ZSB3ZSBjYW4ndCB1c2Ugc2tsX3BsYW5lX3dtX2xldmVsCisJCSAqIGFjY2Vzc29yLCBiZWNhdXNl IGlmIGFjdHVhbGx5IGNhbGxzIGludGVsX2Nhbl9lbmFibGVfc2FndgorCQkgKiB3aGljaCBkZXBl bmRzIG9uIHRoYXQgZnVuY3Rpb24uCisJCSAqLworCQljb25zdCBzdHJ1Y3Qgc2tsX3BsYW5lX3dt ICp3bSA9CisJCQkmY3J0Y19zdGF0ZS0+d20uc2tsLm9wdGltYWwucGxhbmVzW3BsYW5lX2lkXTsK KworCQlibG9ja3MgKz0gd20tPnNhZ3Zfd20wLm1pbl9kZGJfYWxsb2M7CisJCWJsb2NrcyArPSB3 bS0+dXZfc2Fndl93bTAubWluX2RkYl9hbGxvYzsKKworCQlpZiAoYmxvY2tzID4gYWxsb2Nfc2l6 ZSkgeworCQkJRFJNX0RFQlVHX0tNUygiTm90IGVub3VnaCBkZGIgYmxvY2tzKCVkPCVkKSBmb3Ig U0FHViBvbiBwaXBlICVjXG4iLAorCQkJCSAgICAgIGFsbG9jX3NpemUsIGJsb2NrcywgcGlwZV9u YW1lKGludGVsX2NydGMtPnBpcGUpKTsKKwkJCXJldHVybiBmYWxzZTsKKwkJfQorCX0KKwlEUk1f REVCVUdfS01TKCIlZCB0b3RhbCBibG9ja3MgcmVxdWlyZWQgZm9yIFNBR1YsIGRkYiBlbnRyeSBz aXplICVkXG4iLAorCQkgICAgICBibG9ja3MsIGFsbG9jX3NpemUpOworCXJldHVybiB0cnVlOwor fQorCiBzdGF0aWMgaW50CiBza2xfYWxsb2NhdGVfcGlwZV9kZGIoc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNydGNfc3RhdGUpCiB7CkBAIC01MTQwLDExICs1MzM0LDE5IEBAIHN0YXRpYyB2b2lk IHNrbF9jb21wdXRlX3BsYW5lX3dtKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRj X3N0YXRlLAogc3RhdGljIHZvaWQKIHNrbF9jb21wdXRlX3dtX2xldmVscyhjb25zdCBzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAkJICAgICAgY29uc3Qgc3RydWN0IHNrbF93 bV9wYXJhbXMgKndtX3BhcmFtcywKLQkJICAgICAgc3RydWN0IHNrbF93bV9sZXZlbCAqbGV2ZWxz KQorCQkgICAgICBzdHJ1Y3Qgc2tsX3BsYW5lX3dtICpwbGFuZV93bSwKKwkJICAgICAgYm9vbCB5 dXYpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRj X3N0YXRlLT51YXBpLmNydGMtPmRldik7CiAJaW50IGxldmVsLCBtYXhfbGV2ZWwgPSBpbGtfd21f bWF4X2xldmVsKGRldl9wcml2KTsKKwkvKgorCSAqIENoZWNrIHdoaWNoIGtpbmQgb2YgcGxhbmUg aXMgaXQgYW5kIGJhc2VkIG9uIHRoYXQgY2FsY3VsYXRlCisJICogY29ycmVzcG9uZGVudCBXTSBs ZXZlbHMuCisJICovCisJc3RydWN0IHNrbF93bV9sZXZlbCAqbGV2ZWxzID0geXV2ID8gcGxhbmVf d20tPnV2X3dtIDogcGxhbmVfd20tPndtOwogCXN0cnVjdCBza2xfd21fbGV2ZWwgKnJlc3VsdF9w cmV2ID0gJmxldmVsc1swXTsKKwlzdHJ1Y3Qgc2tsX3dtX2xldmVsICpzYWd2X3dtID0geXV2ID8K KwkJCQkmcGxhbmVfd20tPnV2X3NhZ3Zfd20wIDogJnBsYW5lX3dtLT5zYWd2X3dtMDsKIAogCWZv ciAobGV2ZWwgPSAwOyBsZXZlbCA8PSBtYXhfbGV2ZWw7IGxldmVsKyspIHsKIAkJc3RydWN0IHNr bF93bV9sZXZlbCAqcmVzdWx0ID0gJmxldmVsc1tsZXZlbF07CkBAIC01MTU1LDYgKzUzNTcsMjcg QEAgc2tsX2NvbXB1dGVfd21fbGV2ZWxzKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj cnRjX3N0YXRlLAogCiAJCXJlc3VsdF9wcmV2ID0gcmVzdWx0OwogCX0KKwkvKgorCSAqIEZvciBH ZW4xMiBpZiBpdCBpcyBhbiBMMCB3ZSBuZWVkIHRvIGFsc28KKwkgKiBjb25zaWRlciBzYWd2X2Js b2NrX3RpbWUgd2hlbiBjYWxjdWxhdGluZworCSAqIEwwIHdhdGVybWFyayAtIHdlIHdpbGwgbmVl ZCB0aGF0IHdoZW4gbWFraW5nCisJICogYSBkZWNpc2lvbiB3aGV0aGVyIGVuYWJsZSBTQUdWIG9y IG5vdC4KKwkgKiBGb3Igb2xkZXIgZ2VucyB3ZSBhZ3JlZWQgdG8gY29weSBMMCB2YWx1ZSBmb3IK KwkgKiBjb21wYXRpYmlsaXR5LgorCSAqLworCWlmICgoSU5URUxfR0VOKGRldl9wcml2KSA+PSAx MikpIHsKKwkJdTMyIGxhdGVuY3kgPSBkZXZfcHJpdi0+d20uc2tsX2xhdGVuY3lbMF07CisKKwkJ bGF0ZW5jeSArPSBkZXZfcHJpdi0+c2Fndl9ibG9ja190aW1lX3VzOworCQlza2xfY29tcHV0ZV9w bGFuZV93bShjcnRjX3N0YXRlLCAwLCBsYXRlbmN5LAorCQkJCSAgICAgd21fcGFyYW1zLCAmbGV2 ZWxzWzBdLAorCQkJCSAgICAgc2Fndl93bSk7CisJCURSTV9ERUJVR19LTVMoIiVkIEwwIGJsb2Nr cyByZXF1aXJlZCBmb3IgU0FHViB2cyAlZCBmb3Igbm9uLVNBR1ZcbiIsCisJCQkgICAgICBzYWd2 X3dtLT5taW5fZGRiX2FsbG9jLCBsZXZlbHNbMF0ubWluX2RkYl9hbGxvYyk7CisJfSBlbHNlIHsK KwkJLyogU2luY2UgYWxsIG1lbWJlcnMgYXJlIFBPRCAqLworCQkqc2Fndl93bSA9IGxldmVsc1sw XTsKKwl9CiB9CiAKIHN0YXRpYyB2b2lkIHNrbF9jb21wdXRlX3RyYW5zaXRpb25fd20oY29uc3Qg c3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCkBAIC01MjM3LDcgKzU0NjAsNyBA QCBzdGF0aWMgaW50IHNrbF9idWlsZF9wbGFuZV93bV9zaW5nbGUoc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNydGNfc3RhdGUsCiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCXNrbF9jb21w dXRlX3dtX2xldmVscyhjcnRjX3N0YXRlLCAmd21fcGFyYW1zLCB3bS0+d20pOworCXNrbF9jb21w dXRlX3dtX2xldmVscyhjcnRjX3N0YXRlLCAmd21fcGFyYW1zLCB3bSwgZmFsc2UpOwogCXNrbF9j b21wdXRlX3RyYW5zaXRpb25fd20oY3J0Y19zdGF0ZSwgJndtX3BhcmFtcywgd20pOwogCiAJcmV0 dXJuIDA7CkBAIC01MjU5LDcgKzU0ODIsNyBAQCBzdGF0aWMgaW50IHNrbF9idWlsZF9wbGFuZV93 bV91dihzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAlpZiAocmV0KQogCQly ZXR1cm4gcmV0OwogCi0Jc2tsX2NvbXB1dGVfd21fbGV2ZWxzKGNydGNfc3RhdGUsICZ3bV9wYXJh bXMsIHdtLT51dl93bSk7CisJc2tsX2NvbXB1dGVfd21fbGV2ZWxzKGNydGNfc3RhdGUsICZ3bV9w YXJhbXMsIHdtLCB0cnVlKTsKIAogCXJldHVybiAwOwogfQpAQCAtNTU5OCw5ICs1ODIxLDI1IEBA IHNrbF9wcmludF93bV9jaGFuZ2VzKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlKQog CQlmb3JfZWFjaF9pbnRlbF9wbGFuZV9vbl9jcnRjKCZkZXZfcHJpdi0+ZHJtLCBjcnRjLCBwbGFu ZSkgewogCQkJZW51bSBwbGFuZV9pZCBwbGFuZV9pZCA9IHBsYW5lLT5pZDsKIAkJCWNvbnN0IHN0 cnVjdCBza2xfcGxhbmVfd20gKm9sZF93bSwgKm5ld193bTsKKwkJCWNvbnN0IHN0cnVjdCBza2xf d21fbGV2ZWwgKm9sZF93bV9sZXZlbCwgKm5ld193bV9sZXZlbDsKKwkJCXUxNiBvbGRfcGxhbmVf cmVzX2wsIG5ld19wbGFuZV9yZXNfbDsKKwkJCXU4ICBvbGRfcGxhbmVfcmVzX2IsIG5ld19wbGFu ZV9yZXNfYjsKKwkJCXUxNiBvbGRfbWluX2RkYl9hbGxvYywgbmV3X21pbl9kZGJfYWxsb2M7CisJ CQlpbnQgY29sb3JfcGxhbmUgPSAwOwogCiAJCQlvbGRfd20gPSAmb2xkX3BpcGVfd20tPnBsYW5l c1twbGFuZV9pZF07CiAJCQluZXdfd20gPSAmbmV3X3BpcGVfd20tPnBsYW5lc1twbGFuZV9pZF07 CisJCQlvbGRfd21fbGV2ZWwgPSBza2xfcGxhbmVfd21fbGV2ZWwob2xkX2NydGNfc3RhdGUsIHBs YW5lX2lkLCAwLCBjb2xvcl9wbGFuZSk7CisJCQluZXdfd21fbGV2ZWwgPSBza2xfcGxhbmVfd21f bGV2ZWwobmV3X2NydGNfc3RhdGUsIHBsYW5lX2lkLCAwLCBjb2xvcl9wbGFuZSk7CisKKwkJCW9s ZF9wbGFuZV9yZXNfbCA9IG9sZF93bV9sZXZlbC0+cGxhbmVfcmVzX2w7CisJCQlvbGRfcGxhbmVf cmVzX2IgPSBvbGRfd21fbGV2ZWwtPnBsYW5lX3Jlc19iOworCisJCQluZXdfcGxhbmVfcmVzX2wg PSBuZXdfd21fbGV2ZWwtPnBsYW5lX3Jlc19sOworCQkJbmV3X3BsYW5lX3Jlc19iID0gbmV3X3dt X2xldmVsLT5wbGFuZV9yZXNfYjsKKworCQkJb2xkX21pbl9kZGJfYWxsb2MgPSBvbGRfd21fbGV2 ZWwtPm1pbl9kZGJfYWxsb2M7CisJCQluZXdfbWluX2RkYl9hbGxvYyA9IG5ld193bV9sZXZlbC0+ bWluX2RkYl9hbGxvYzsKIAogCQkJaWYgKHNrbF9wbGFuZV93bV9lcXVhbHMoZGV2X3ByaXYsIG9s ZF93bSwgbmV3X3dtKSkKIAkJCQljb250aW51ZTsKQEAgLTU2MjQsNyArNTg2Myw3IEBAIHNrbF9w cmludF93bV9jaGFuZ2VzKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlKQogCQkJCSAg ICAiW1BMQU5FOiVkOiVzXSAgIGxpbmVzICVjJTNkLCVjJTNkLCVjJTNkLCVjJTNkLCVjJTNkLCVj JTNkLCVjJTNkLCVjJTNkLCVjJTNkIgogCQkJCSAgICAgICIgLT4gJWMlM2QsJWMlM2QsJWMlM2Qs JWMlM2QsJWMlM2QsJWMlM2QsJWMlM2QsJWMlM2QsJWMlM2RcbiIsCiAJCQkJICAgIHBsYW5lLT5i YXNlLmJhc2UuaWQsIHBsYW5lLT5iYXNlLm5hbWUsCi0JCQkJICAgIGVuYXN0KG9sZF93bS0+d21b MF0uaWdub3JlX2xpbmVzKSwgb2xkX3dtLT53bVswXS5wbGFuZV9yZXNfbCwKKwkJCQkgICAgZW5h c3Qob2xkX3dtLT53bVswXS5pZ25vcmVfbGluZXMpLCBvbGRfcGxhbmVfcmVzX2wsCiAJCQkJICAg IGVuYXN0KG9sZF93bS0+d21bMV0uaWdub3JlX2xpbmVzKSwgb2xkX3dtLT53bVsxXS5wbGFuZV9y ZXNfbCwKIAkJCQkgICAgZW5hc3Qob2xkX3dtLT53bVsyXS5pZ25vcmVfbGluZXMpLCBvbGRfd20t PndtWzJdLnBsYW5lX3Jlc19sLAogCQkJCSAgICBlbmFzdChvbGRfd20tPndtWzNdLmlnbm9yZV9s aW5lcyksIG9sZF93bS0+d21bM10ucGxhbmVfcmVzX2wsCkBAIC01NjM0LDcgKzU4NzMsNyBAQCBz a2xfcHJpbnRfd21fY2hhbmdlcyhzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSkKIAkJ CQkgICAgZW5hc3Qob2xkX3dtLT53bVs3XS5pZ25vcmVfbGluZXMpLCBvbGRfd20tPndtWzddLnBs YW5lX3Jlc19sLAogCQkJCSAgICBlbmFzdChvbGRfd20tPnRyYW5zX3dtLmlnbm9yZV9saW5lcyks IG9sZF93bS0+dHJhbnNfd20ucGxhbmVfcmVzX2wsCiAKLQkJCQkgICAgZW5hc3QobmV3X3dtLT53 bVswXS5pZ25vcmVfbGluZXMpLCBuZXdfd20tPndtWzBdLnBsYW5lX3Jlc19sLAorCQkJCSAgICBl bmFzdChuZXdfd20tPndtWzBdLmlnbm9yZV9saW5lcyksIG5ld19wbGFuZV9yZXNfbCwKIAkJCQkg ICAgZW5hc3QobmV3X3dtLT53bVsxXS5pZ25vcmVfbGluZXMpLCBuZXdfd20tPndtWzFdLnBsYW5l X3Jlc19sLAogCQkJCSAgICBlbmFzdChuZXdfd20tPndtWzJdLmlnbm9yZV9saW5lcyksIG5ld193 bS0+d21bMl0ucGxhbmVfcmVzX2wsCiAJCQkJICAgIGVuYXN0KG5ld193bS0+d21bM10uaWdub3Jl X2xpbmVzKSwgbmV3X3dtLT53bVszXS5wbGFuZV9yZXNfbCwKQEAgLTU2NDgsMTIgKzU4ODcsMTIg QEAgc2tsX3ByaW50X3dtX2NoYW5nZXMoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUp CiAJCQkJICAgICJbUExBTkU6JWQ6JXNdICBibG9ja3MgJTRkLCU0ZCwlNGQsJTRkLCU0ZCwlNGQs JTRkLCU0ZCwlNGQiCiAJCQkJICAgICIgLT4gJTRkLCU0ZCwlNGQsJTRkLCU0ZCwlNGQsJTRkLCU0 ZCwlNGRcbiIsCiAJCQkJICAgIHBsYW5lLT5iYXNlLmJhc2UuaWQsIHBsYW5lLT5iYXNlLm5hbWUs Ci0JCQkJICAgIG9sZF93bS0+d21bMF0ucGxhbmVfcmVzX2IsIG9sZF93bS0+d21bMV0ucGxhbmVf cmVzX2IsCisJCQkJICAgIG9sZF9wbGFuZV9yZXNfYiwgb2xkX3dtLT53bVsxXS5wbGFuZV9yZXNf YiwKIAkJCQkgICAgb2xkX3dtLT53bVsyXS5wbGFuZV9yZXNfYiwgb2xkX3dtLT53bVszXS5wbGFu ZV9yZXNfYiwKIAkJCQkgICAgb2xkX3dtLT53bVs0XS5wbGFuZV9yZXNfYiwgb2xkX3dtLT53bVs1 XS5wbGFuZV9yZXNfYiwKIAkJCQkgICAgb2xkX3dtLT53bVs2XS5wbGFuZV9yZXNfYiwgb2xkX3dt LT53bVs3XS5wbGFuZV9yZXNfYiwKIAkJCQkgICAgb2xkX3dtLT50cmFuc193bS5wbGFuZV9yZXNf YiwKLQkJCQkgICAgbmV3X3dtLT53bVswXS5wbGFuZV9yZXNfYiwgbmV3X3dtLT53bVsxXS5wbGFu ZV9yZXNfYiwKKwkJCQkgICAgbmV3X3BsYW5lX3Jlc19iLCBuZXdfd20tPndtWzFdLnBsYW5lX3Jl c19iLAogCQkJCSAgICBuZXdfd20tPndtWzJdLnBsYW5lX3Jlc19iLCBuZXdfd20tPndtWzNdLnBs YW5lX3Jlc19iLAogCQkJCSAgICBuZXdfd20tPndtWzRdLnBsYW5lX3Jlc19iLCBuZXdfd20tPndt WzVdLnBsYW5lX3Jlc19iLAogCQkJCSAgICBuZXdfd20tPndtWzZdLnBsYW5lX3Jlc19iLCBuZXdf d20tPndtWzddLnBsYW5lX3Jlc19iLApAQCAtNTY2MywxMiArNTkwMiwxMiBAQCBza2xfcHJpbnRf d21fY2hhbmdlcyhzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSkKIAkJCQkgICAgIltQ TEFORTolZDolc10gbWluX2RkYiAlNGQsJTRkLCU0ZCwlNGQsJTRkLCU0ZCwlNGQsJTRkLCU0ZCIK IAkJCQkgICAgIiAtPiAlNGQsJTRkLCU0ZCwlNGQsJTRkLCU0ZCwlNGQsJTRkLCU0ZFxuIiwKIAkJ CQkgICAgcGxhbmUtPmJhc2UuYmFzZS5pZCwgcGxhbmUtPmJhc2UubmFtZSwKLQkJCQkgICAgb2xk X3dtLT53bVswXS5taW5fZGRiX2FsbG9jLCBvbGRfd20tPndtWzFdLm1pbl9kZGJfYWxsb2MsCisJ CQkJICAgIG9sZF9taW5fZGRiX2FsbG9jLCBvbGRfd20tPndtWzFdLm1pbl9kZGJfYWxsb2MsCiAJ CQkJICAgIG9sZF93bS0+d21bMl0ubWluX2RkYl9hbGxvYywgb2xkX3dtLT53bVszXS5taW5fZGRi X2FsbG9jLAogCQkJCSAgICBvbGRfd20tPndtWzRdLm1pbl9kZGJfYWxsb2MsIG9sZF93bS0+d21b NV0ubWluX2RkYl9hbGxvYywKIAkJCQkgICAgb2xkX3dtLT53bVs2XS5taW5fZGRiX2FsbG9jLCBv bGRfd20tPndtWzddLm1pbl9kZGJfYWxsb2MsCiAJCQkJICAgIG9sZF93bS0+dHJhbnNfd20ubWlu X2RkYl9hbGxvYywKLQkJCQkgICAgbmV3X3dtLT53bVswXS5taW5fZGRiX2FsbG9jLCBuZXdfd20t PndtWzFdLm1pbl9kZGJfYWxsb2MsCisJCQkJICAgIG5ld19taW5fZGRiX2FsbG9jLCBuZXdfd20t PndtWzFdLm1pbl9kZGJfYWxsb2MsCiAJCQkJICAgIG5ld193bS0+d21bMl0ubWluX2RkYl9hbGxv YywgbmV3X3dtLT53bVszXS5taW5fZGRiX2FsbG9jLAogCQkJCSAgICBuZXdfd20tPndtWzRdLm1p bl9kZGJfYWxsb2MsIG5ld193bS0+d21bNV0ubWluX2RkYl9hbGxvYywKIAkJCQkgICAgbmV3X3dt LT53bVs2XS5taW5fZGRiX2FsbG9jLCBuZXdfd20tPndtWzddLm1pbl9kZGJfYWxsb2MsCkBAIC01 ODI5LDYgKzYwNjgsMTAgQEAgc2tsX2NvbXB1dGVfd20oc3RydWN0IGludGVsX2F0b21pY19zdGF0 ZSAqc3RhdGUpCiAJCQlyZXR1cm4gcmV0OwogCX0KIAorCXJldCA9IGludGVsX2NvbXB1dGVfc2Fn dl9tYXNrKHN0YXRlKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCiAJcmV0ID0gc2tsX2Nv bXB1dGVfZGRiKHN0YXRlKTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwpAQCAtNTk2MCw2ICs2 MjAzLDkgQEAgdm9pZCBza2xfcGlwZV93bV9nZXRfaHdfc3RhdGUoc3RydWN0IGludGVsX2NydGMg KmNydGMsCiAJCQkJdmFsID0gSTkxNV9SRUFEKENVUl9XTShwaXBlLCBsZXZlbCkpOwogCiAJCQlz a2xfd21fbGV2ZWxfZnJvbV9yZWdfdmFsKHZhbCwgJndtLT53bVtsZXZlbF0pOworCQkJaWYgKGxl dmVsID09IDApCisJCQkJbWVtY3B5KCZ3bS0+c2Fndl93bTAsICZ3bS0+d21bbGV2ZWxdLAorCQkJ CSAgICAgICBzaXplb2Yoc3RydWN0IHNrbF93bV9sZXZlbCkpOwogCQl9CiAKIAkJaWYgKHBsYW5l X2lkICE9IFBMQU5FX0NVUlNPUikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3BtLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5oCmluZGV4IGQ2MGE4NTQy MWM1YS4uNjU3NDNhNGNiY2Y2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9wbS5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmgKQEAgLTQyLDYgKzQy LDcgQEAgdm9pZCBza2xfcGlwZV93bV9nZXRfaHdfc3RhdGUoc3RydWN0IGludGVsX2NydGMgKmNy dGMsCiB2b2lkIGc0eF93bV9zYW5pdGl6ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpOwogdm9pZCB2bHZfd21fc2FuaXRpemUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KTsKIGJvb2wgaW50ZWxfY2FuX2VuYWJsZV9zYWd2KHN0cnVjdCBpbnRlbF9hdG9taWNfc3Rh dGUgKnN0YXRlKTsKK2Jvb2wgaW50ZWxfaGFzX3NhZ3Yoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KTsKIGludCBpbnRlbF9lbmFibGVfc2FndihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpOwogaW50IGludGVsX2Rpc2FibGVfc2FndihzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpOwogYm9vbCBza2xfd21fbGV2ZWxfZXF1YWxzKGNvbnN0IHN0cnVjdCBz a2xfd21fbGV2ZWwgKmwxLAotLSAKMi4yNC4xLjQ4NS5nYWQwNWEzZDhlNQoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlz dApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==