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=-12.8 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 BE19EC4363A for ; Tue, 27 Oct 2020 20:40:22 +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 760D320725 for ; Tue, 27 Oct 2020 20:40:22 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 760D320725 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linux.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 1C72C6EC4A; Tue, 27 Oct 2020 20:40:22 +0000 (UTC) Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id 65AE66EC4A for ; Tue, 27 Oct 2020 20:40:20 +0000 (UTC) IronPort-SDR: jzw4N79dwN6GwotmAGkHATu0qXPG8tCQq9O7glXTEKXSIe6V/ybQnAyWLwAOKhT7oYyq4h3KMs AQkiru6Koc8w== X-IronPort-AV: E=McAfee;i="6000,8403,9787"; a="232343819" X-IronPort-AV: E=Sophos;i="5.77,424,1596524400"; d="scan'208";a="232343819" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Oct 2020 13:40:19 -0700 IronPort-SDR: zSW0am3Cx5bhi9zfc5zFXqxSyZgJaPFJAMtF71zYvz87Ltk/zm4p/1neVYQ/XOzONxYl83O2IS W9bf+4SC0Q1g== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.77,424,1596524400"; d="scan'208";a="304017834" Received: from stinkbox.fi.intel.com (HELO stinkbox) ([10.237.72.174]) by fmsmga007.fm.intel.com with SMTP; 27 Oct 2020 13:40:17 -0700 Received: by stinkbox (sSMTP sendmail emulation); Tue, 27 Oct 2020 22:40:16 +0200 From: Ville Syrjala To: intel-gfx@lists.freedesktop.org Date: Tue, 27 Oct 2020 22:39:54 +0200 Message-Id: <20201027203955.28032-8-ville.syrjala@linux.intel.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20201027203955.28032-1-ville.syrjala@linux.intel.com> References: <20201027203955.28032-1-ville.syrjala@linux.intel.com> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH 7/8] drm/i915: Encapsulate dbuf state handling harder 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" RnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KCklu IG9yZGVyIHRvIG1ha2UgdGhlIGRidWYgc3RhdGUgY29tcHV0YXRpb24gbGVzcyBmcmFnaWxlCmxl dCdzIG1ha2UgaXQgc3RhbmQgb24gaXRzIG93biBmZWV0IGJ5IG5vdyByZXF1aXJpbmcgc29tZW9u ZQp0byBwZWVrIGludG8gYSBjcnlzdGFsbCBiYWxsIGFoZWFkIG9mIHRpbWUgdG8gZmlndXJlIG91 dAp3aGljaCBwaXBlcyBuZWVkIHRvIGJlIGFkZGVkIHRvIHRoZSBzdGF0ZSB1bmRlciB3aGljaCBw b3RlbnRpYWwKZnV0dXJlIGNvbmRpdGlvbnMuIEluc3RlYWQgd2UgY29tcHV0ZSBlYWNoIHBpZWNl IG9mIHRoZSBzdGF0ZQphcyB3ZSBnbyBhbG9uZywgYW5kIGlmIGFueSBmYWxsb3V0IG9jY3VycyB0 aGF0IGFmZmVjdHMgbW9yZSB0aGFuCnRoZSBjdXJyZW50IHNldCBvZiBwaXBlcyB3ZSBhZGQgdGhl IGFmZmVjdGVkIHBpcGVzIHRvIHRoZSBzdGF0ZQpuYXR1cmFsbHkuCgpUaGF0IHJlcXVpcmVzIHRo YXQgd2UgdHJhY2sgYSBmZXcgZXh0cmEgdGhpZ25zIGluIHRoZSBnbG9iYWwKZGJ1ZiBzdGF0ZTog ZGJ1ZiBzbGljZXMgZm9yIGVhY2ggcGlwZSwgYW5kIHRoZSB3ZWlnaHQgZWFjaApwaXBlIGhhcyB3 aGVuIGRpc3RyaWJ1dGluZyB0aGUgc2FtZSBzZXQgb2Ygc2xpY2UocykgYmV0d2VlbgptdWx0aXBs ZSBwaXBlcy4gRWFzeSBlbm91Z2guCgpXZSBkbyBuZWVkIHRvIGZvbGxvdyBhIHNvbWV3aGF0IGNh cmVmdWwgc2VxdWVuY2Ugb2YgY29tcHV0YXRpb25zCnRob3VnaCBhcyB0aGVyZSBhcmUgc2V2ZXJh bCBzdGVwcyBpbnZvbHZlZCBpbiBjb29raW5nIHVwIHRoZSBkYnVmCnN0YXRlLiBUaG9ndWggd2Ug Y291bGQgYXZvaWQgc29tZSBvZiB0aGF0IGJ5IGNvbXB1dGluZyBtb3JlIHRoaW5ncwpvbiBkZW1h bmQgaW5zdGVhZCBvZiByZWx5aW5nIG9uIGVhcmxpZXIgc3RlcCBvZiB0aGUgYWxnb3JpdGhtIHRv CmhhdmUgZmlsbGVkIGl0IG91dC4gSSB0aGluayB0aGUgZW5kIHJlc3VsdCBpcyBzdGlsbCByZWFz b25hYmxlCmFzIHRoZSBlbnRpcmUgc2VxdWVuY2UgaXMgcHJldHR5IG11Y2ggY29uc29saWRhdGVk IGludG8gYSBzaW5nbGUKZnVuY3Rpb24gaW5zdGVhZCBvZiBiZWluZyBzcHJlYWQgYXJvdW5kIGFs bCBvdmVyLgoKVGhlIHJvdWdoIHNlcXVlbmNlIGlzIHRoaXM6CjEuIGNhbGN1bGF0ZSBhY3RpdmVf cGlwZXMKMi4gY2FsY3VsYXRlIGRidWYgc2xpY2VzIGZvciBldmVyeSBwaXBlCjMuIGNhbGN1bGF0 ZSB0b3RhbCBlbmFibGVkIHNsaWNlcwo0LiBjYWxjdWxhdGUgbmV3IGRidWYgd2VpZ2h0cyBmb3Ig YW55IGNydGMgaW4gdGhlIHN0YXRlCjUuIGNhbGN1bGF0ZSBuZXcgZGRiIGVudHJ5IGZvciBldmVy eSBwaXBlIGJhc2VkIG9uIHRoZSBzZXRzIG9mCiAgIHNsaWNlcyBhbmQgd2VpZ2h0cywgYW5kIGFk ZCBhbnkgYWZmZWN0ZWQgY3J0YyB0byB0aGUgc3RhdGUKNi4gY2FsY3VsYXRlIG5ldyBwbGFuZSBk ZGIgZW50cmllcyBmb3IgYWxsIGNydGNzIGluIHRoZSBzdGF0ZSwKICAgYW5kIGFkZCBhbnkgYWZm ZWN0ZWQgcGxhbmUgdG8gdGhlIHN0YXRlIHNvIHRoYXQgd2UnbGwgcGVyZm9ybQogICB0aGUgcmVx dWlzaXRlIGh3IHJlcHJvZ3JhbW1pbmcKCkFuZCBhcyBhIG5pY2UgYm9udXMgd2UgZ2V0IHRvIHRo cm93IGRldl9wcml2LT53bS5kaXN0cnVzdF9iaW9zX3dtCm91dCB0aGUgd2luZG93LgoKQ2M6IFN0 YW5pc2xhdiBMaXNvdnNraXkgPHN0YW5pc2xhdi5saXNvdnNraXlAaW50ZWwuY29tPgpTaWduZWQt b2ZmLWJ5OiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgot LS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jICB8ICAxNSAt CiAuLi4vZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X2RlYnVnZnMuYyAgfCAgIDEgLQog ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgICAgICAgIHwgICA5IC0KIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgICAgICAgICAgICAgICB8IDM3OSArKysrKysr LS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmggICAgICAgICAgICAg ICB8ICAgMiArCiA1IGZpbGVzIGNoYW5nZWQsIDEzOCBpbnNlcnRpb25zKCspLCAyNjggZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9k aXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYwpp bmRleCBjYjJmMDZmYzExMjMuLjQ4ZDc5Y2FhN2E1NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMKQEAgLTE1MzA4LDIwICsxNTMwOCw2IEBAIHN0YXRp YyBpbnQgaW50ZWxfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJaWYgKHJl dCkKIAkJZ290byBmYWlsOwogCi0JLyoKLQkgKiBkaXN0cnVzdF9iaW9zX3dtIHdpbGwgZm9yY2Ug YSBmdWxsIGRidWYgcmVjb21wdXRhdGlvbgotCSAqIGJ1dCB0aGUgaGFyZHdhcmUgc3RhdGUgd2ls bCBvbmx5IGdldCB1cGRhdGVkIGFjY29yZGluZ2x5Ci0JICogaWYgc3RhdGUtPm1vZGVzZXQ9PXRy dWUuIEhlbmNlIGRpc3RydXN0X2Jpb3Nfd209PXRydWUgJiYKLQkgKiBzdGF0ZS0+bW9kZXNldD09 ZmFsc2UgaXMgYW4gaW52YWxpZCBjb21iaW5hdGlvbiB3aGljaAotCSAqIHdvdWxkIGNhdXNlIHRo ZSBoYXJkd2FyZSBhbmQgc29mdHdhcmUgZGJ1ZiBzdGF0ZSB0byBnZXQKLQkgKiBvdXQgb2Ygc3lu Yy4gV2UgbXVzdCBwcmV2ZW50IHRoYXQuCi0JICoKLQkgKiBGSVhNRSBjbGVhbiB1cCB0aGlzIG1l c3MgYW5kIGludHJvZHVjZSBiZXR0ZXIKLQkgKiBzdGF0ZSB0cmFja2luZyBmb3IgZGJ1Zi4KLQkg Ki8KLQlpZiAoZGV2X3ByaXYtPndtLmRpc3RydXN0X2Jpb3Nfd20pCi0JCWFueV9tcyA9IHRydWU7 Ci0KIAlpbnRlbF9mYmNfY2hvb3NlX2NydGMoZGV2X3ByaXYsIHN0YXRlKTsKIAlyZXQgPSBjYWxj X3dhdGVybWFya19kYXRhKHN0YXRlKTsKIAlpZiAocmV0KQpAQCAtMTYxNjAsNyArMTYxNDYsNiBA QCBzdGF0aWMgaW50IGludGVsX2F0b21pY19jb21taXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwK IAkJaW50ZWxfcnVudGltZV9wbV9wdXQoJmRldl9wcml2LT5ydW50aW1lX3BtLCBzdGF0ZS0+d2Fr ZXJlZik7CiAJCXJldHVybiByZXQ7CiAJfQotCWRldl9wcml2LT53bS5kaXN0cnVzdF9iaW9zX3dt ID0gZmFsc2U7CiAJaW50ZWxfc2hhcmVkX2RwbGxfc3dhcF9zdGF0ZShzdGF0ZSk7CiAJaW50ZWxf YXRvbWljX3RyYWNrX2ZicyhzdGF0ZSk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfZGVidWdmcy5jCmluZGV4IGNmYjRjMTQ3NDk4Mi4uNzFl Y2QzMmE5ZGY5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVs X2Rpc3BsYXlfZGVidWdmcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50 ZWxfZGlzcGxheV9kZWJ1Z2ZzLmMKQEAgLTEwMDgsNyArMTAwOCw2IEBAIHN0YXRpYyBzc2l6ZV90 IGk5MTVfaXBjX3N0YXR1c193cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3Vz ZXIgKnVidWYsCiAJCWlmICghZGV2X3ByaXYtPmlwY19lbmFibGVkICYmIGVuYWJsZSkKIAkJCWRy bV9pbmZvKCZkZXZfcHJpdi0+ZHJtLAogCQkJCSAiRW5hYmxpbmcgSVBDOiBXTSB3aWxsIGJlIHBy b3BlciBvbmx5IGFmdGVyIG5leHQgY29tbWl0XG4iKTsKLQkJZGV2X3ByaXYtPndtLmRpc3RydXN0 X2Jpb3Nfd20gPSB0cnVlOwogCQlkZXZfcHJpdi0+aXBjX2VuYWJsZWQgPSBlbmFibGU7CiAJCWlu dGVsX2VuYWJsZV9pcGMoZGV2X3ByaXYpOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCmluZGV4 IGJjZDg2NTA2MDNkOC4uY2E1ZmQ2MDBjZmZkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKQEAg LTExMjYsMTUgKzExMjYsNiBAQCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7CiAJCSAqIGNydGNf c3RhdGUtPndtLm5lZWRfcG9zdHZibF91cGRhdGUuCiAJCSAqLwogCQlzdHJ1Y3QgbXV0ZXggd21f bXV0ZXg7Ci0KLQkJLyoKLQkJICogU2V0IGR1cmluZyBIVyByZWFkb3V0IG9mIHdhdGVybWFya3Mv RERCLiAgU29tZSBwbGF0Zm9ybXMKLQkJICogbmVlZCB0byBrbm93IHdoZW4gd2UncmUgc3RpbGwg dXNpbmcgQklPUy1wcm92aWRlZCB2YWx1ZXMKLQkJICogKHdoaWNoIHdlIGRvbid0IGZ1bGx5IHRy dXN0KS4KLQkJICoKLQkJICogRklYTUUgZ2V0IHJpZCBvZiB0aGlzLgotCQkgKi8KLQkJYm9vbCBk aXN0cnVzdF9iaW9zX3dtOwogCX0gd207CiAKIAlzdHJ1Y3QgZHJhbV9pbmZvIHsKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9wbS5jCmluZGV4IGJjNGQ3Y2U1ZmQ3Yy4uOWExOTllYjJkMDEzIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3BtLmMKQEAgLTQxMDgsNTYgKzQxMDgsMjIgQEAgc3RhdGljIHVuc2lnbmVkIGlu dCBpbnRlbF9jcnRjX2RkYl93ZWlnaHQoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNy dGNfc3QKIAlyZXR1cm4gaGRpc3BsYXk7CiB9CiAKLXN0YXRpYyB1OCBza2xfY29tcHV0ZV9kYnVm X3NsaWNlcyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKLQkJCQkgIHU4IGFjdGl2ZV9waXBlcyk7 Ci0KLXN0YXRpYyBpbnQgaW50ZWxfY3J0Y19kYnVmX3dlaWdodHMoc3RydWN0IGludGVsX2F0b21p Y19zdGF0ZSAqc3RhdGUsCi0JCQkJICAgc3RydWN0IGludGVsX2NydGMgKmZvcl9jcnRjLAotCQkJ CSAgIHVuc2lnbmVkIGludCAqd2VpZ2h0X3N0YXJ0LAotCQkJCSAgIHVuc2lnbmVkIGludCAqd2Vp Z2h0X2VuZCwKLQkJCQkgICB1bnNpZ25lZCBpbnQgKndlaWdodF90b3RhbCkKK3N0YXRpYyB2b2lk IGludGVsX2NydGNfZGJ1Zl93ZWlnaHRzKGNvbnN0IHN0cnVjdCBpbnRlbF9kYnVmX3N0YXRlICpk YnVmX3N0YXRlLAorCQkJCSAgICBlbnVtIHBpcGUgZm9yX3BpcGUsCisJCQkJICAgIHVuc2lnbmVk IGludCAqd2VpZ2h0X3N0YXJ0LAorCQkJCSAgICB1bnNpZ25lZCBpbnQgKndlaWdodF9lbmQsCisJ CQkJICAgIHVuc2lnbmVkIGludCAqd2VpZ2h0X3RvdGFsKQogewotCWNvbnN0IHN0cnVjdCBpbnRl bF9kYnVmX3N0YXRlICpvbGRfZGJ1Zl9zdGF0ZSA9Ci0JCWludGVsX2F0b21pY19nZXRfb2xkX2Ri dWZfc3RhdGUoc3RhdGUpOwotCXN0cnVjdCBpbnRlbF9kYnVmX3N0YXRlICpuZXdfZGJ1Zl9zdGF0 ZSA9Ci0JCWludGVsX2F0b21pY19nZXRfbmV3X2RidWZfc3RhdGUoc3RhdGUpOwotCXU4IGFjdGl2 ZV9waXBlcyA9IG5ld19kYnVmX3N0YXRlLT5hY3RpdmVfcGlwZXM7Ci0JZW51bSBwaXBlIGZvcl9w aXBlID0gZm9yX2NydGMtPnBpcGU7Ci0JY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNy dGNfc3RhdGU7Ci0Jc3RydWN0IGludGVsX2NydGMgKmNydGM7Ci0JdTggZGJ1Zl9zbGljZV9tYXNr OwotCXU4IHRvdGFsX3NsaWNlX21hc2s7Ci0JaW50IGksIHJldDsKLQotCS8qCi0JICogR2V0IGFs bG93ZWQgREJ1ZiBzbGljZXMgZm9yIGNvcnJlc3BvbmRlbnQgcGlwZSBhbmQgcGxhdGZvcm0uCi0J ICovCi0JZGJ1Zl9zbGljZV9tYXNrID0gc2tsX2NvbXB1dGVfZGJ1Zl9zbGljZXMoZm9yX2NydGMs IGFjdGl2ZV9waXBlcyk7Ci0JdG90YWxfc2xpY2VfbWFzayA9IGRidWZfc2xpY2VfbWFzazsKKwlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPQorCQl0b19pOTE1KGRidWZfc3RhdGUt PmJhc2Uuc3RhdGUtPmJhc2UuZGV2KTsKKwllbnVtIHBpcGUgcGlwZTsKIAogCSp3ZWlnaHRfc3Rh cnQgPSAwOwogCSp3ZWlnaHRfZW5kID0gMDsKIAkqd2VpZ2h0X3RvdGFsID0gMDsKIAotCWZvcl9l YWNoX25ld19pbnRlbF9jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBjcnRjX3N0YXRlLCBpKSB7 Ci0JCWVudW0gcGlwZSBwaXBlID0gY3J0Yy0+cGlwZTsKLQkJdW5zaWduZWQgaW50IHdlaWdodDsK LQkJdTggcGlwZV9kYnVmX3NsaWNlX21hc2s7Ci0KLQkJaWYgKCFjcnRjX3N0YXRlLT5ody5hY3Rp dmUpCi0JCQljb250aW51ZTsKLQotCQlwaXBlX2RidWZfc2xpY2VfbWFzayA9Ci0JCQlza2xfY29t cHV0ZV9kYnVmX3NsaWNlcyhjcnRjLCBhY3RpdmVfcGlwZXMpOwotCi0JCS8qCi0JCSAqIEFjY29y ZGluZyB0byBCU3BlYyBwaXBlIGNhbiBzaGFyZSBvbmUgZGJ1ZiBzbGljZSB3aXRoIGFub3RoZXIK LQkJICogcGlwZXMgb3IgcGlwZSBjYW4gdXNlIG11bHRpcGxlIGRidWZzLCBpbiBib3RoIGNhc2Vz IHdlCi0JCSAqIGFjY291bnQgZm9yIG90aGVyIHBpcGVzIG9ubHkgaWYgdGhleSBoYXZlIGV4YWN0 bHkgc2FtZSBtYXNrLgotCQkgKiBIb3dldmVyIHdlIG5lZWQgdG8gYWNjb3VudCBob3cgbWFueSBz bGljZXMgd2Ugc2hvdWxkIGVuYWJsZQotCQkgKiBpbiB0b3RhbC4KLQkJICovCi0JCXRvdGFsX3Ns aWNlX21hc2sgfD0gcGlwZV9kYnVmX3NsaWNlX21hc2s7CisJZm9yX2VhY2hfcGlwZShkZXZfcHJp diwgcGlwZSkgeworCQlpbnQgd2VpZ2h0ID0gZGJ1Zl9zdGF0ZS0+d2VpZ2h0W3BpcGVdOwogCiAJ CS8qCiAJCSAqIERvIG5vdCBhY2NvdW50IHBpcGVzIHVzaW5nIG90aGVyIHNsaWNlIHNldHMKQEAg LTQxNjYsMTIgKzQxMzIsMTAgQEAgc3RhdGljIGludCBpbnRlbF9jcnRjX2RidWZfd2VpZ2h0cyhz dHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwKIAkJICogaS5lIG5vIHBhcnRpYWwgaW50 ZXJzZWN0aW9uKSwgc28gaXQgaXMgZW5vdWdoIHRvIGNoZWNrIGZvcgogCQkgKiBlcXVhbGl0eSBm b3Igbm93LgogCQkgKi8KLQkJaWYgKGRidWZfc2xpY2VfbWFzayAhPSBwaXBlX2RidWZfc2xpY2Vf bWFzaykKKwkJaWYgKGRidWZfc3RhdGUtPnNsaWNlc1twaXBlXSAhPSBkYnVmX3N0YXRlLT5zbGlj ZXNbZm9yX3BpcGVdKQogCQkJY29udGludWU7CiAKLQkJd2VpZ2h0ID0gaW50ZWxfY3J0Y19kZGJf d2VpZ2h0KGNydGNfc3RhdGUpOwogCQkqd2VpZ2h0X3RvdGFsICs9IHdlaWdodDsKLQogCQlpZiAo cGlwZSA8IGZvcl9waXBlKSB7CiAJCQkqd2VpZ2h0X3N0YXJ0ICs9IHdlaWdodDsKIAkJCSp3ZWln aHRfZW5kICs9IHdlaWdodDsKQEAgLTQxNzksODcgKzQxNDMsNjUgQEAgc3RhdGljIGludCBpbnRl bF9jcnRjX2RidWZfd2VpZ2h0cyhzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwKIAkJ CSp3ZWlnaHRfZW5kICs9IHdlaWdodDsKIAkJfQogCX0KLQotCS8qCi0JICogRklYTUU6IEZvciBu b3cgd2UgYWx3YXlzIGVuYWJsZSBzbGljZSBTMSBhcyBwZXIKLQkgKiB0aGUgQnNwZWMgZGlzcGxh eSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS4KLQkgKi8KLQluZXdfZGJ1Zl9zdGF0ZS0+ZW5hYmxl ZF9zbGljZXMgPSB0b3RhbF9zbGljZV9tYXNrIHwgQklUKERCVUZfUzEpOwotCi0JaWYgKG9sZF9k YnVmX3N0YXRlLT5lbmFibGVkX3NsaWNlcyAhPSBuZXdfZGJ1Zl9zdGF0ZS0+ZW5hYmxlZF9zbGlj ZXMpIHsKLQkJcmV0ID0gaW50ZWxfYXRvbWljX3NlcmlhbGl6ZV9nbG9iYWxfc3RhdGUoJm5ld19k YnVmX3N0YXRlLT5iYXNlKTsKLQkJaWYgKHJldCkKLQkJCXJldHVybiByZXQ7Ci0JfQotCi0JcmV0 dXJuIDA7CiB9CiAKIHN0YXRpYyBpbnQKLXNrbF9kZGJfZ2V0X3BpcGVfYWxsb2NhdGlvbl9saW1p dHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAotCQkJCSAgIGNvbnN0IHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAotCQkJCSAgIGNvbnN0IHU2NCB0b3RhbF9k YXRhX3JhdGUsCi0JCQkJICAgc3RydWN0IHNrbF9kZGJfZW50cnkgKmFsbG9jLCAvKiBvdXQgKi8K LQkJCQkgICBpbnQgKm51bV9hY3RpdmUgLyogb3V0ICovKQorc2tsX2NydGNfYWxsb2NhdGVfZGRi KHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlLCBzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0 YykKIHsKLQlzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSA9Ci0JCXRvX2ludGVsX2F0 b21pY19zdGF0ZShjcnRjX3N0YXRlLT51YXBpLnN0YXRlKTsKLQlzdHJ1Y3QgaW50ZWxfY3J0YyAq Y3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+dWFwaS5jcnRjKTsKLQl1bnNpZ25lZCBp bnQgd2VpZ2h0X3N0YXJ0LCB3ZWlnaHRfZW5kLCB3ZWlnaHRfdG90YWw7CisJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5iYXNlLmRldik7CisJdW5zaWdu ZWQgaW50IHdlaWdodF90b3RhbCwgd2VpZ2h0X3N0YXJ0LCB3ZWlnaHRfZW5kOwogCWNvbnN0IHN0 cnVjdCBpbnRlbF9kYnVmX3N0YXRlICpvbGRfZGJ1Zl9zdGF0ZSA9CiAJCWludGVsX2F0b21pY19n ZXRfb2xkX2RidWZfc3RhdGUoc3RhdGUpOwogCXN0cnVjdCBpbnRlbF9kYnVmX3N0YXRlICpuZXdf ZGJ1Zl9zdGF0ZSA9CiAJCWludGVsX2F0b21pY19nZXRfbmV3X2RidWZfc3RhdGUoc3RhdGUpOwot CXU4IGFjdGl2ZV9waXBlcyA9IG5ld19kYnVmX3N0YXRlLT5hY3RpdmVfcGlwZXM7CisJc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGU7CiAJc3RydWN0IHNrbF9kZGJfZW50cnkgZGRi X3NsaWNlczsKKwllbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7CiAJdTMyIGRkYl9yYW5nZV9z aXplOwogCXUzMiBkYnVmX3NsaWNlX21hc2s7CiAJdTMyIHN0YXJ0LCBlbmQ7CiAJaW50IHJldDsK IAotCSpudW1fYWN0aXZlID0gaHdlaWdodDgoYWN0aXZlX3BpcGVzKTsKLQotCWlmICghY3J0Y19z dGF0ZS0+aHcuYWN0aXZlKSB7Ci0JCWFsbG9jLT5zdGFydCA9IDA7Ci0JCWFsbG9jLT5lbmQgPSAw OwotCQlyZXR1cm4gMDsKKwlpZiAobmV3X2RidWZfc3RhdGUtPndlaWdodFtwaXBlXSA9PSAwKSB7 CisJCW5ld19kYnVmX3N0YXRlLT5kZGJbcGlwZV0uc3RhcnQgPSAwOworCQluZXdfZGJ1Zl9zdGF0 ZS0+ZGRiW3BpcGVdLmVuZCA9IDA7CisJCWdvdG8gb3V0OwogCX0KIAotCS8qCi0JICogSWYgdGhl IHN0YXRlIGRvZXNuJ3QgY2hhbmdlIHRoZSBhY3RpdmUgQ1JUQydzIG9yIHRoZXJlIGlzIG5vCi0J ICogbW9kZXNldCByZXF1ZXN0LCB0aGVuIHRoZXJlJ3Mgbm8gbmVlZCB0byByZWNhbGN1bGF0ZTsK LQkgKiB0aGUgZXhpc3RpbmcgcGlwZSBhbGxvY2F0aW9uIGxpbWl0cyBzaG91bGQgcmVtYWluIHVu Y2hhbmdlZC4KLQkgKiBOb3RlIHRoYXQgd2UncmUgc2FmZSBmcm9tIHJhY2luZyBjb21taXRzIHNp bmNlIGFueSByYWNpbmcgY29tbWl0Ci0JICogdGhhdCBjaGFuZ2VzIHRoZSBhY3RpdmUgQ1JUQyBs aXN0IG9yIGRvIG1vZGVzZXQgd291bGQgbmVlZCB0bwotCSAqIGdyYWIgX2FsbF8gY3J0YyBsb2Nr cywgaW5jbHVkaW5nIHRoZSBvbmUgd2UgY3VycmVudGx5IGhvbGQuCi0JICovCi0JaWYgKG9sZF9k YnVmX3N0YXRlLT5hY3RpdmVfcGlwZXMgPT0gbmV3X2RidWZfc3RhdGUtPmFjdGl2ZV9waXBlcyAm JgotCSAgICAhZGV2X3ByaXYtPndtLmRpc3RydXN0X2Jpb3Nfd20pCi0JCXJldHVybiAwOwotCi0J LyoKLQkgKiBHZXQgYWxsb3dlZCBEQnVmIHNsaWNlcyBmb3IgY29ycmVzcG9uZGVudCBwaXBlIGFu ZCBwbGF0Zm9ybS4KLQkgKi8KLQlkYnVmX3NsaWNlX21hc2sgPSBza2xfY29tcHV0ZV9kYnVmX3Ns aWNlcyhjcnRjLCBhY3RpdmVfcGlwZXMpOworCWRidWZfc2xpY2VfbWFzayA9IG5ld19kYnVmX3N0 YXRlLT5zbGljZXNbcGlwZV07CiAKIAlza2xfZGRiX2VudHJ5X2Zvcl9zbGljZXMoZGV2X3ByaXYs IGRidWZfc2xpY2VfbWFzaywgJmRkYl9zbGljZXMpOwogCWRkYl9yYW5nZV9zaXplID0gc2tsX2Rk Yl9lbnRyeV9zaXplKCZkZGJfc2xpY2VzKTsKIAotCXJldCA9IGludGVsX2NydGNfZGJ1Zl93ZWln aHRzKHN0YXRlLCBjcnRjLAotCQkJCSAgICAgICZ3ZWlnaHRfc3RhcnQsICZ3ZWlnaHRfZW5kLCAm d2VpZ2h0X3RvdGFsKTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OworCWludGVsX2NydGNfZGJ1 Zl93ZWlnaHRzKG5ld19kYnVmX3N0YXRlLCBwaXBlLAorCQkJCSZ3ZWlnaHRfc3RhcnQsICZ3ZWln aHRfZW5kLCAmd2VpZ2h0X3RvdGFsKTsKIAogCXN0YXJ0ID0gZGRiX3JhbmdlX3NpemUgKiB3ZWln aHRfc3RhcnQgLyB3ZWlnaHRfdG90YWw7CiAJZW5kID0gZGRiX3JhbmdlX3NpemUgKiB3ZWlnaHRf ZW5kIC8gd2VpZ2h0X3RvdGFsOwogCi0JYWxsb2MtPnN0YXJ0ID0gZGRiX3NsaWNlcy5zdGFydCAr IHN0YXJ0OwotCWFsbG9jLT5lbmQgPSBkZGJfc2xpY2VzLnN0YXJ0ICsgZW5kOworCW5ld19kYnVm X3N0YXRlLT5kZGJbcGlwZV0uc3RhcnQgPSBkZGJfc2xpY2VzLnN0YXJ0ICsgc3RhcnQ7CisJbmV3 X2RidWZfc3RhdGUtPmRkYltwaXBlXS5lbmQgPSBkZGJfc2xpY2VzLnN0YXJ0ICsgZW5kOworCitv dXQ6CisJaWYgKHNrbF9kZGJfZW50cnlfZXF1YWwoJm9sZF9kYnVmX3N0YXRlLT5kZGJbcGlwZV0s CisJCQkJJm5ld19kYnVmX3N0YXRlLT5kZGJbcGlwZV0pKQorCQlyZXR1cm4gMDsKKworCXJldCA9 IGludGVsX2F0b21pY19sb2NrX2dsb2JhbF9zdGF0ZSgmbmV3X2RidWZfc3RhdGUtPmJhc2UpOwor CWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwljcnRjX3N0YXRlID0gaW50ZWxfYXRvbWljX2dl dF9jcnRjX3N0YXRlKCZzdGF0ZS0+YmFzZSwgY3J0Yyk7CisJaWYgKElTX0VSUihjcnRjX3N0YXRl KSkKKwkJcmV0dXJuIFBUUl9FUlIoY3J0Y19zdGF0ZSk7CiAKIAlkcm1fZGJnX2ttcygmZGV2X3By aXYtPmRybSwKLQkJICAgICJbQ1JUQzolZDolc10gZGJ1ZiBzbGljZXMgMHgleCwgZGRiICglZCAt ICVkKSwgYWN0aXZlIHBpcGVzIDB4JXhcbiIsCisJCSAgICAiW0NSVEM6JWQ6JXNdIGRidWYgc2xp Y2VzIDB4JXggLT4gMHgleCwgZGRiICglZCAtICVkKSAtPiAoJWQgLSAlZCksIGFjdGl2ZSBwaXBl cyAweCV4IC0+IDB4JXhcbiIsCiAJCSAgICBjcnRjLT5iYXNlLmJhc2UuaWQsIGNydGMtPmJhc2Uu bmFtZSwKLQkJICAgIGRidWZfc2xpY2VfbWFzaywgYWxsb2MtPnN0YXJ0LCBhbGxvYy0+ZW5kLCBh Y3RpdmVfcGlwZXMpOworCQkgICAgb2xkX2RidWZfc3RhdGUtPnNsaWNlc1twaXBlXSwgbmV3X2Ri dWZfc3RhdGUtPnNsaWNlc1twaXBlXSwKKwkJICAgIG9sZF9kYnVmX3N0YXRlLT5kZGJbcGlwZV0u c3RhcnQsIG9sZF9kYnVmX3N0YXRlLT5kZGJbcGlwZV0uZW5kLAorCQkgICAgbmV3X2RidWZfc3Rh dGUtPmRkYltwaXBlXS5zdGFydCwgbmV3X2RidWZfc3RhdGUtPmRkYltwaXBlXS5lbmQsCisJCSAg ICBvbGRfZGJ1Zl9zdGF0ZS0+YWN0aXZlX3BpcGVzLCBuZXdfZGJ1Zl9zdGF0ZS0+YWN0aXZlX3Bp cGVzKTsKIAogCXJldHVybiAwOwogfQpAQCAtNDgxMSw1OSArNDc1MywzMiBAQCBza2xfcGxhbmVf d21fbGV2ZWwoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCiB9CiAK IHN0YXRpYyBpbnQKLXNrbF9hbGxvY2F0ZV9waXBlX2RkYihzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqY3J0Y19zdGF0ZSkKK3NrbF9hbGxvY2F0ZV9wbGFuZV9kZGIoc3RydWN0IGludGVsX2F0b21p Y19zdGF0ZSAqc3RhdGUsCisJCSAgICAgICBzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKIHsKLQlz dHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+dWFwaS5j cnRjKTsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMt PmJhc2UuZGV2KTsKLQlzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSA9Ci0JCXRvX2lu dGVsX2F0b21pY19zdGF0ZShjcnRjX3N0YXRlLT51YXBpLnN0YXRlKTsKLQlzdHJ1Y3QgaW50ZWxf ZGJ1Zl9zdGF0ZSAqZGJ1Zl9zdGF0ZSA9CisJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNf c3RhdGUgPQorCQlpbnRlbF9hdG9taWNfZ2V0X25ld19jcnRjX3N0YXRlKHN0YXRlLCBjcnRjKTsK Kwljb25zdCBzdHJ1Y3QgaW50ZWxfZGJ1Zl9zdGF0ZSAqZGJ1Zl9zdGF0ZSA9CiAJCWludGVsX2F0 b21pY19nZXRfbmV3X2RidWZfc3RhdGUoc3RhdGUpOwotCXN0cnVjdCBza2xfZGRiX2VudHJ5ICph bGxvYyA9ICZkYnVmX3N0YXRlLT5kZGJbY3J0Yy0+cGlwZV07CisJY29uc3Qgc3RydWN0IHNrbF9k ZGJfZW50cnkgKmFsbG9jID0gJmRidWZfc3RhdGUtPmRkYltjcnRjLT5waXBlXTsKKwlpbnQgbnVt X2FjdGl2ZSA9IGh3ZWlnaHQ4KGRidWZfc3RhdGUtPmFjdGl2ZV9waXBlcyk7CiAJdTE2IGFsbG9j X3NpemUsIHN0YXJ0ID0gMDsKIAl1MTYgdG90YWxbSTkxNV9NQVhfUExBTkVTXSA9IHt9OwogCXUx NiB1dl90b3RhbFtJOTE1X01BWF9QTEFORVNdID0ge307CiAJdTY0IHRvdGFsX2RhdGFfcmF0ZTsK IAllbnVtIHBsYW5lX2lkIHBsYW5lX2lkOwotCWludCBudW1fYWN0aXZlOwogCXU2NCBwbGFuZV9k YXRhX3JhdGVbSTkxNV9NQVhfUExBTkVTXSA9IHt9OwogCXU2NCB1dl9wbGFuZV9kYXRhX3JhdGVb STkxNV9NQVhfUExBTkVTXSA9IHt9OwogCXUzMiBibG9ja3M7CiAJaW50IGxldmVsOwotCWludCBy ZXQ7CiAKIAkvKiBDbGVhciB0aGUgcGFydGl0aW9uaW5nIGZvciBkaXNhYmxlZCBwbGFuZXMuICov CiAJbWVtc2V0KGNydGNfc3RhdGUtPndtLnNrbC5wbGFuZV9kZGJfeSwgMCwgc2l6ZW9mKGNydGNf c3RhdGUtPndtLnNrbC5wbGFuZV9kZGJfeSkpOwogCW1lbXNldChjcnRjX3N0YXRlLT53bS5za2wu cGxhbmVfZGRiX3V2LCAwLCBzaXplb2YoY3J0Y19zdGF0ZS0+d20uc2tsLnBsYW5lX2RkYl91dikp OwogCi0JaWYgKCFjcnRjX3N0YXRlLT5ody5hY3RpdmUpIHsKLQkJc3RydWN0IGludGVsX2F0b21p Y19zdGF0ZSAqc3RhdGUgPQotCQkJdG9faW50ZWxfYXRvbWljX3N0YXRlKGNydGNfc3RhdGUtPnVh cGkuc3RhdGUpOwotCQlzdHJ1Y3QgaW50ZWxfZGJ1Zl9zdGF0ZSAqbmV3X2RidWZfc3RhdGUgPQot CQkJaW50ZWxfYXRvbWljX2dldF9uZXdfZGJ1Zl9zdGF0ZShzdGF0ZSk7Ci0JCWNvbnN0IHN0cnVj dCBpbnRlbF9kYnVmX3N0YXRlICpvbGRfZGJ1Zl9zdGF0ZSA9Ci0JCQlpbnRlbF9hdG9taWNfZ2V0 X29sZF9kYnVmX3N0YXRlKHN0YXRlKTsKLQotCQkvKgotCQkgKiBGSVhNRSBoYWNrIHRvIG1ha2Ug c3VyZSB3ZSBjb21wdXRlIHRoaXMgc2Vuc2libHkgd2hlbgotCQkgKiB0dXJuaW5nIG9mZiBhbGwg dGhlIHBpcGVzLiBPdGhlcndpc2Ugd2UgbGVhdmUgaXQgYXQKLQkJICogd2hhdGV2ZXIgd2UgaGFk IHByZXZpb3VzbHksIGFuZCB0aGVuIHJ1bnRpbWUgUE0gd2lsbAotCQkgKiBtZXNzIGl0IHVwIGJ5 IHR1cm5pbmcgb2ZmIGFsbCBidXQgUzEuIFJlbW92ZSB0aGlzCi0JCSAqIG9uY2UgdGhlIGRidWYg c3RhdGUgY29tcHV0YXRpb24gZmxvdyBiZWNvbWVzIHNhbmUuCi0JCSAqLwotCQlpZiAobmV3X2Ri dWZfc3RhdGUtPmFjdGl2ZV9waXBlcyA9PSAwKSB7Ci0JCQluZXdfZGJ1Zl9zdGF0ZS0+ZW5hYmxl ZF9zbGljZXMgPSBCSVQoREJVRl9TMSk7Ci0KLQkJCWlmIChvbGRfZGJ1Zl9zdGF0ZS0+ZW5hYmxl ZF9zbGljZXMgIT0gbmV3X2RidWZfc3RhdGUtPmVuYWJsZWRfc2xpY2VzKSB7Ci0JCQkJcmV0ID0g aW50ZWxfYXRvbWljX3NlcmlhbGl6ZV9nbG9iYWxfc3RhdGUoJm5ld19kYnVmX3N0YXRlLT5iYXNl KTsKLQkJCQlpZiAocmV0KQotCQkJCQlyZXR1cm4gcmV0OwotCQkJfQotCQl9Ci0KLQkJYWxsb2Mt PnN0YXJ0ID0gYWxsb2MtPmVuZCA9IDA7CisJaWYgKCFjcnRjX3N0YXRlLT5ody5hY3RpdmUpCiAJ CXJldHVybiAwOwotCX0KIAogCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDExKQogCQl0b3Rh bF9kYXRhX3JhdGUgPQpAQCAtNDg3NSwxMiArNDc5MCw2IEBAIHNrbF9hbGxvY2F0ZV9waXBlX2Rk YihzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKIAkJCQkJCQkgcGxhbmVfZGF0 YV9yYXRlLAogCQkJCQkJCSB1dl9wbGFuZV9kYXRhX3JhdGUpOwogCi0JcmV0ID0gc2tsX2RkYl9n ZXRfcGlwZV9hbGxvY2F0aW9uX2xpbWl0cyhkZXZfcHJpdiwgY3J0Y19zdGF0ZSwKLQkJCQkJCSB0 b3RhbF9kYXRhX3JhdGUsCi0JCQkJCQkgYWxsb2MsICZudW1fYWN0aXZlKTsKLQlpZiAocmV0KQot CQlyZXR1cm4gcmV0OwotCiAJYWxsb2Nfc2l6ZSA9IHNrbF9kZGJfZW50cnlfc2l6ZShhbGxvYyk7 CiAJaWYgKGFsbG9jX3NpemUgPT0gMCkKIAkJcmV0dXJuIDA7CkBAIC01ODA1LDM5ICs1NzE0LDEx NCBAQCBza2xfZGRiX2FkZF9hZmZlY3RlZF9wbGFuZXMoY29uc3Qgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKm9sZF9jcnRjX3N0YXRlLAogCXJldHVybiAwOwogfQogCitzdGF0aWMgdTggaW50ZWxf ZGJ1Zl9lbmFibGVkX3NsaWNlcyhjb25zdCBzdHJ1Y3QgaW50ZWxfZGJ1Zl9zdGF0ZSAqZGJ1Zl9z dGF0ZSkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRi dWZfc3RhdGUtPmJhc2Uuc3RhdGUtPmJhc2UuZGV2KTsKKwl1OCBlbmFibGVkX3NsaWNlczsKKwll bnVtIHBpcGUgcGlwZTsKKworCS8qCisJICogRklYTUU6IEZvciBub3cgd2UgYWx3YXlzIGVuYWJs ZSBzbGljZSBTMSBhcyBwZXIKKwkgKiB0aGUgQnNwZWMgZGlzcGxheSBpbml0aWFsaXphdGlvbiBz ZXF1ZW5jZS4KKwkgKi8KKwllbmFibGVkX3NsaWNlcyA9IEJJVChEQlVGX1MxKTsKKworCWZvcl9l YWNoX3BpcGUoZGV2X3ByaXYsIHBpcGUpCisJCWVuYWJsZWRfc2xpY2VzIHw9IGRidWZfc3RhdGUt PnNsaWNlc1twaXBlXTsKKworCXJldHVybiBlbmFibGVkX3NsaWNlczsKK30KKwogc3RhdGljIGlu dAogc2tsX2NvbXB1dGVfZGRiKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlKQogewog CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoc3RhdGUtPmJhc2Uu ZGV2KTsKIAljb25zdCBzdHJ1Y3QgaW50ZWxfZGJ1Zl9zdGF0ZSAqb2xkX2RidWZfc3RhdGU7Ci0J Y29uc3Qgc3RydWN0IGludGVsX2RidWZfc3RhdGUgKm5ld19kYnVmX3N0YXRlOworCXN0cnVjdCBp bnRlbF9kYnVmX3N0YXRlICpuZXdfZGJ1Zl9zdGF0ZSA9IE5VTEw7CiAJY29uc3Qgc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlOwogCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpuZXdfY3J0Y19zdGF0ZTsKIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YzsKIAlpbnQgcmV0LCBp OwogCi0JZm9yX2VhY2hfb2xkbmV3X2ludGVsX2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIG9s ZF9jcnRjX3N0YXRlLAotCQkJCQkgICAgbmV3X2NydGNfc3RhdGUsIGkpIHsKLQkJcmV0ID0gc2ts X2FsbG9jYXRlX3BpcGVfZGRiKG5ld19jcnRjX3N0YXRlKTsKKwlmb3JfZWFjaF9uZXdfaW50ZWxf Y3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0YywgbmV3X2NydGNfc3RhdGUsIGkpIHsKKwkJbmV3X2Ri dWZfc3RhdGUgPSBpbnRlbF9hdG9taWNfZ2V0X2RidWZfc3RhdGUoc3RhdGUpOworCQlpZiAoSVNf RVJSKG5ld19kYnVmX3N0YXRlKSkKKwkJCXJldHVybiBQVFJfRVJSKG5ld19kYnVmX3N0YXRlKTsK KworCQlvbGRfZGJ1Zl9zdGF0ZSA9IGludGVsX2F0b21pY19nZXRfb2xkX2RidWZfc3RhdGUoc3Rh dGUpOworCQlicmVhazsKKwl9CisKKwlpZiAoIW5ld19kYnVmX3N0YXRlKQorCQlyZXR1cm4gMDsK KworCW5ld19kYnVmX3N0YXRlLT5hY3RpdmVfcGlwZXMgPQorCQlpbnRlbF9jYWxjX2FjdGl2ZV9w aXBlcyhzdGF0ZSwgb2xkX2RidWZfc3RhdGUtPmFjdGl2ZV9waXBlcyk7CisKKwlpZiAob2xkX2Ri dWZfc3RhdGUtPmFjdGl2ZV9waXBlcyAhPSBuZXdfZGJ1Zl9zdGF0ZS0+YWN0aXZlX3BpcGVzKSB7 CisJCXJldCA9IGludGVsX2F0b21pY19sb2NrX2dsb2JhbF9zdGF0ZSgmbmV3X2RidWZfc3RhdGUt PmJhc2UpOwogCQlpZiAocmV0KQogCQkJcmV0dXJuIHJldDsKKwl9CiAKLQkJcmV0ID0gc2tsX2Rk Yl9hZGRfYWZmZWN0ZWRfcGxhbmVzKG9sZF9jcnRjX3N0YXRlLAotCQkJCQkJICBuZXdfY3J0Y19z dGF0ZSk7CisJZm9yX2VhY2hfaW50ZWxfY3J0YygmZGV2X3ByaXYtPmRybSwgY3J0YykgeworCQll bnVtIHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7CisKKwkJbmV3X2RidWZfc3RhdGUtPnNsaWNlc1tw aXBlXSA9CisJCQlza2xfY29tcHV0ZV9kYnVmX3NsaWNlcyhjcnRjLCBuZXdfZGJ1Zl9zdGF0ZS0+ YWN0aXZlX3BpcGVzKTsKKworCQlpZiAob2xkX2RidWZfc3RhdGUtPnNsaWNlc1twaXBlXSA9PSBu ZXdfZGJ1Zl9zdGF0ZS0+c2xpY2VzW3BpcGVdKQorCQkJY29udGludWU7CisKKwkJcmV0ID0gaW50 ZWxfYXRvbWljX2xvY2tfZ2xvYmFsX3N0YXRlKCZuZXdfZGJ1Zl9zdGF0ZS0+YmFzZSk7CiAJCWlm IChyZXQpCiAJCQlyZXR1cm4gcmV0OwogCX0KIAotCW9sZF9kYnVmX3N0YXRlID0gaW50ZWxfYXRv bWljX2dldF9vbGRfZGJ1Zl9zdGF0ZShzdGF0ZSk7Ci0JbmV3X2RidWZfc3RhdGUgPSBpbnRlbF9h dG9taWNfZ2V0X25ld19kYnVmX3N0YXRlKHN0YXRlKTsKKwluZXdfZGJ1Zl9zdGF0ZS0+ZW5hYmxl ZF9zbGljZXMgPSBpbnRlbF9kYnVmX2VuYWJsZWRfc2xpY2VzKG5ld19kYnVmX3N0YXRlKTsKKwor CWlmIChvbGRfZGJ1Zl9zdGF0ZS0+ZW5hYmxlZF9zbGljZXMgIT0gbmV3X2RidWZfc3RhdGUtPmVu YWJsZWRfc2xpY2VzKSB7CisJCXJldCA9IGludGVsX2F0b21pY19zZXJpYWxpemVfZ2xvYmFsX3N0 YXRlKCZuZXdfZGJ1Zl9zdGF0ZS0+YmFzZSk7CisJCWlmIChyZXQpCisJCQlyZXR1cm4gcmV0Owog Ci0JaWYgKG5ld19kYnVmX3N0YXRlICYmCi0JICAgIG5ld19kYnVmX3N0YXRlLT5lbmFibGVkX3Ns aWNlcyAhPSBvbGRfZGJ1Zl9zdGF0ZS0+ZW5hYmxlZF9zbGljZXMpCiAJCWRybV9kYmdfa21zKCZk ZXZfcHJpdi0+ZHJtLAogCQkJICAgICJFbmFibGVkIGRidWYgc2xpY2VzIDB4JXggLT4gMHgleCAo b3V0IG9mICVkIGRidWYgc2xpY2VzKVxuIiwKIAkJCSAgICBvbGRfZGJ1Zl9zdGF0ZS0+ZW5hYmxl ZF9zbGljZXMsCiAJCQkgICAgbmV3X2RidWZfc3RhdGUtPmVuYWJsZWRfc2xpY2VzLAogCQkJICAg IElOVEVMX0lORk8oZGV2X3ByaXYpLT5udW1fc3VwcG9ydGVkX2RidWZfc2xpY2VzKTsKKwl9CisK Kwlmb3JfZWFjaF9uZXdfaW50ZWxfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0YywgbmV3X2NydGNf c3RhdGUsIGkpIHsKKwkJZW51bSBwaXBlIHBpcGUgPSBjcnRjLT5waXBlOworCisJCW5ld19kYnVm X3N0YXRlLT53ZWlnaHRbcGlwZV0gPSBpbnRlbF9jcnRjX2RkYl93ZWlnaHQobmV3X2NydGNfc3Rh dGUpOworCisJCWlmIChvbGRfZGJ1Zl9zdGF0ZS0+d2VpZ2h0W3BpcGVdID09IG5ld19kYnVmX3N0 YXRlLT53ZWlnaHRbcGlwZV0pCisJCQljb250aW51ZTsKKworCQlyZXQgPSBpbnRlbF9hdG9taWNf bG9ja19nbG9iYWxfc3RhdGUoJm5ld19kYnVmX3N0YXRlLT5iYXNlKTsKKwkJaWYgKHJldCkKKwkJ CXJldHVybiByZXQ7CisJfQorCisJZm9yX2VhY2hfaW50ZWxfY3J0YygmZGV2X3ByaXYtPmRybSwg Y3J0YykgeworCQlyZXQgPSBza2xfY3J0Y19hbGxvY2F0ZV9kZGIoc3RhdGUsIGNydGMpOworCQlp ZiAocmV0KQorCQkJcmV0dXJuIHJldDsKKwl9CisKKwlmb3JfZWFjaF9vbGRuZXdfaW50ZWxfY3J0 Y19pbl9zdGF0ZShzdGF0ZSwgY3J0Yywgb2xkX2NydGNfc3RhdGUsCisJCQkJCSAgICBuZXdfY3J0 Y19zdGF0ZSwgaSkgeworCQlyZXQgPSBza2xfYWxsb2NhdGVfcGxhbmVfZGRiKHN0YXRlLCBjcnRj KTsKKwkJaWYgKHJldCkKKwkJCXJldHVybiByZXQ7CisKKwkJcmV0ID0gc2tsX2RkYl9hZGRfYWZm ZWN0ZWRfcGxhbmVzKG9sZF9jcnRjX3N0YXRlLAorCQkJCQkJICBuZXdfY3J0Y19zdGF0ZSk7CisJ CWlmIChyZXQpCisJCQlyZXR1cm4gcmV0OworCX0KIAogCXJldHVybiAwOwogfQpAQCAtNTk3NCw4 MyArNTk1OCw2IEBAIHNrbF9wcmludF93bV9jaGFuZ2VzKHN0cnVjdCBpbnRlbF9hdG9taWNfc3Rh dGUgKnN0YXRlKQogCX0KIH0KIAotc3RhdGljIGludCBpbnRlbF9hZGRfYWZmZWN0ZWRfcGlwZXMo c3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUsCi0JCQkJICAgIHU4IHBpcGVfbWFzaykK LXsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHN0YXRlLT5i YXNlLmRldik7Ci0Jc3RydWN0IGludGVsX2NydGMgKmNydGM7Ci0KLQlmb3JfZWFjaF9pbnRlbF9j cnRjKCZkZXZfcHJpdi0+ZHJtLCBjcnRjKSB7Ci0JCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj cnRjX3N0YXRlOwotCi0JCWlmICgocGlwZV9tYXNrICYgQklUKGNydGMtPnBpcGUpKSA9PSAwKQot CQkJY29udGludWU7Ci0KLQkJY3J0Y19zdGF0ZSA9IGludGVsX2F0b21pY19nZXRfY3J0Y19zdGF0 ZSgmc3RhdGUtPmJhc2UsIGNydGMpOwotCQlpZiAoSVNfRVJSKGNydGNfc3RhdGUpKQotCQkJcmV0 dXJuIFBUUl9FUlIoY3J0Y19zdGF0ZSk7Ci0JfQotCi0JcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBp bnQKLXNrbF9kZGJfYWRkX2FmZmVjdGVkX3BpcGVzKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUg KnN0YXRlKQotewotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUo c3RhdGUtPmJhc2UuZGV2KTsKLQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsK LQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YzsKLQlpbnQgaSwgcmV0OwotCi0JaWYgKGRldl9wcml2 LT53bS5kaXN0cnVzdF9iaW9zX3dtKSB7Ci0JCS8qCi0JCSAqIHNrbF9kZGJfZ2V0X3BpcGVfYWxs b2NhdGlvbl9saW1pdHMoKSBjdXJyZW50bHkgcmVxdWlyZXMKLQkJICogYWxsIGFjdGl2ZSBwaXBl cyB0byBiZSBpbmNsdWRlZCBpbiB0aGUgc3RhdGUgc28gdGhhdAotCQkgKiBpdCBjYW4gcmVkaXN0 cmlidXRlIHRoZSBkYnVmIGFtb25nIHRoZW0sIGFuZCBpdCByZWFsbHkKLQkJICogd2FudHMgdG8g cmVjb21wdXRlIHRoaW5ncyB3aGVuIGRpc3RydXN0X2Jpb3Nfd20gaXMgc2V0Ci0JCSAqIHNvIHdl IGFkZCBhbGwgdGhlIHBpcGVzIHRvIHRoZSBzdGF0ZS4KLQkJICovCi0JCXJldCA9IGludGVsX2Fk ZF9hZmZlY3RlZF9waXBlcyhzdGF0ZSwgfjApOwotCQlpZiAocmV0KQotCQkJcmV0dXJuIHJldDsK LQl9Ci0KLQlmb3JfZWFjaF9uZXdfaW50ZWxfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0YywgY3J0 Y19zdGF0ZSwgaSkgewotCQlzdHJ1Y3QgaW50ZWxfZGJ1Zl9zdGF0ZSAqbmV3X2RidWZfc3RhdGU7 Ci0JCWNvbnN0IHN0cnVjdCBpbnRlbF9kYnVmX3N0YXRlICpvbGRfZGJ1Zl9zdGF0ZTsKLQotCQlu ZXdfZGJ1Zl9zdGF0ZSA9IGludGVsX2F0b21pY19nZXRfZGJ1Zl9zdGF0ZShzdGF0ZSk7Ci0JCWlm IChJU19FUlIobmV3X2RidWZfc3RhdGUpKQotCQkJcmV0dXJuIFBUUl9FUlIobmV3X2RidWZfc3Rh dGUpOwotCi0JCW9sZF9kYnVmX3N0YXRlID0gaW50ZWxfYXRvbWljX2dldF9vbGRfZGJ1Zl9zdGF0 ZShzdGF0ZSk7Ci0KLQkJbmV3X2RidWZfc3RhdGUtPmFjdGl2ZV9waXBlcyA9Ci0JCQlpbnRlbF9j YWxjX2FjdGl2ZV9waXBlcyhzdGF0ZSwgb2xkX2RidWZfc3RhdGUtPmFjdGl2ZV9waXBlcyk7Ci0K LQkJaWYgKG9sZF9kYnVmX3N0YXRlLT5hY3RpdmVfcGlwZXMgPT0gbmV3X2RidWZfc3RhdGUtPmFj dGl2ZV9waXBlcykKLQkJCWJyZWFrOwotCi0JCXJldCA9IGludGVsX2F0b21pY19sb2NrX2dsb2Jh bF9zdGF0ZSgmbmV3X2RidWZfc3RhdGUtPmJhc2UpOwotCQlpZiAocmV0KQotCQkJcmV0dXJuIHJl dDsKLQotCQkvKgotCQkgKiBza2xfZGRiX2dldF9waXBlX2FsbG9jYXRpb25fbGltaXRzKCkgY3Vy cmVudGx5IHJlcXVpcmVzCi0JCSAqIGFsbCBhY3RpdmUgcGlwZXMgdG8gYmUgaW5jbHVkZWQgaW4g dGhlIHN0YXRlIHNvIHRoYXQKLQkJICogaXQgY2FuIHJlZGlzdHJpYnV0ZSB0aGUgZGJ1ZiBhbW9u ZyB0aGVtLgotCQkgKi8KLQkJcmV0ID0gaW50ZWxfYWRkX2FmZmVjdGVkX3BpcGVzKHN0YXRlLAot CQkJCQkgICAgICAgbmV3X2RidWZfc3RhdGUtPmFjdGl2ZV9waXBlcyk7Ci0JCWlmIChyZXQpCi0J CQlyZXR1cm4gcmV0OwotCi0JCWJyZWFrOwotCX0KLQotCXJldHVybiAwOwotfQotCiAvKgogICog VG8gbWFrZSBzdXJlIHRoZSBjdXJzb3Igd2F0ZXJtYXJrIHJlZ2lzdGVycyBhcmUgYWx3YXlzIGNv bnNpc3RlbnQKICAqIHdpdGggb3VyIGNvbXB1dGVkIHN0YXRlIHRoZSBmb2xsb3dpbmcgc2NlbmFy aW8gbmVlZHMgc3BlY2lhbApAQCAtNjExOSwxNSArNjAyNiw2IEBAIHNrbF9jb21wdXRlX3dtKHN0 cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlKQogCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpvbGRfY3J0Y19zdGF0ZTsKIAlpbnQgcmV0LCBpOwogCi0JcmV0ID0gc2tsX2RkYl9hZGRfYWZm ZWN0ZWRfcGlwZXMoc3RhdGUpOwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7Ci0KLQkvKgotCSAq IENhbGN1bGF0ZSBXTSdzIGZvciBhbGwgcGlwZXMgdGhhdCBhcmUgcGFydCBvZiB0aGlzIHRyYW5z YWN0aW9uLgotCSAqIE5vdGUgdGhhdCBza2xfZGRiX2FkZF9hZmZlY3RlZF9waXBlcyBtYXkgaGF2 ZSBhZGRlZCBtb3JlIENSVEMncyB0aGF0Ci0JICogd2VyZW4ndCBvdGhlcndpc2UgYmVpbmcgbW9k aWZpZWQgaWYgcGlwZSBhbGxvY2F0aW9ucyBoYWQgdG8gY2hhbmdlLgotCSAqLwogCWZvcl9lYWNo X29sZG5ld19pbnRlbF9jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBvbGRfY3J0Y19zdGF0ZSwK IAkJCQkJICAgIG5ld19jcnRjX3N0YXRlLCBpKSB7CiAJCXJldCA9IHNrbF9idWlsZF9waXBlX3dt KG5ld19jcnRjX3N0YXRlKTsKQEAgLTYyOTYsMTEgKzYxOTQsNiBAQCB2b2lkIHNrbF93bV9nZXRf aHdfc3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCiAJCXNrbF9waXBl X3dtX2dldF9od19zdGF0ZShjcnRjLCAmY3J0Y19zdGF0ZS0+d20uc2tsLm9wdGltYWwpOwogCX0K LQotCWlmIChkZXZfcHJpdi0+YWN0aXZlX3BpcGVzKSB7Ci0JCS8qIEZ1bGx5IHJlY29tcHV0ZSBE REIgb24gZmlyc3QgYXRvbWljIGNvbW1pdCAqLwotCQlkZXZfcHJpdi0+d20uZGlzdHJ1c3RfYmlv c193bSA9IHRydWU7Ci0JfQogfQogCiBzdGF0aWMgdm9pZCBpbGtfcGlwZV93bV9nZXRfaHdfc3Rh dGUoc3RydWN0IGludGVsX2NydGMgKmNydGMpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9wbS5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uaAppbmRleCA3 MjQyMDRiYjg0NDIuLjk3NTUwY2YwYjZkZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcG0uaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5oCkBAIC03 MSw2ICs3MSw4IEBAIHN0cnVjdCBpbnRlbF9kYnVmX3N0YXRlIHsKIAlzdHJ1Y3QgaW50ZWxfZ2xv YmFsX3N0YXRlIGJhc2U7CiAKIAlzdHJ1Y3Qgc2tsX2RkYl9lbnRyeSBkZGJbSTkxNV9NQVhfUElQ RVNdOworCXVuc2lnbmVkIGludCB3ZWlnaHRbSTkxNV9NQVhfUElQRVNdOworCXU4IHNsaWNlc1tJ OTE1X01BWF9QSVBFU107CiAKIAl1OCBlbmFibGVkX3NsaWNlczsKIAl1OCBhY3RpdmVfcGlwZXM7 Ci0tIAoyLjI2LjIKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdm eAo=