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 7A920C35E04 for ; Tue, 25 Feb 2020 17:12:36 +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 5540E20732 for ; Tue, 25 Feb 2020 17:12:36 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 5540E20732 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 02CF66EB4B; Tue, 25 Feb 2020 17:12:36 +0000 (UTC) Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id A84926EB4B for ; Tue, 25 Feb 2020 17:12:34 +0000 (UTC) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga006.jf.intel.com ([10.7.209.51]) by orsmga105.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 25 Feb 2020 09:12:24 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.70,484,1574150400"; d="scan'208";a="241386377" Received: from stinkbox.fi.intel.com (HELO stinkbox) ([10.237.72.174]) by orsmga006.jf.intel.com with SMTP; 25 Feb 2020 09:12:21 -0800 Received: by stinkbox (sSMTP sendmail emulation); Tue, 25 Feb 2020 19:12:21 +0200 From: Ville Syrjala To: intel-gfx@lists.freedesktop.org Date: Tue, 25 Feb 2020 19:11:23 +0200 Message-Id: <20200225171125.28885-19-ville.syrjala@linux.intel.com> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200225171125.28885-1-ville.syrjala@linux.intel.com> References: <20200225171125.28885-1-ville.syrjala@linux.intel.com> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH v2 18/20] 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 aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgICAgICAgICAgICAgICB8IDM1NiArKysrKysr LS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmggICAgICAgICAgICAg ICB8ICAgMiArCiA1IGZpbGVzIGNoYW5nZWQsIDEzOCBpbnNlcnRpb25zKCspLCAyNDUgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9k aXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYwpp bmRleCAyNmU0NDYyMTUxYTYuLmUzZGY0M2YzOTMyZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMKQEAgLTE0ODU2LDIwICsxNDg1Niw2IEBAIHN0YXRp YyBpbnQgaW50ZWxfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJaWYgKG5l d19jZGNsa19zdGF0ZSAmJiBuZXdfY2RjbGtfc3RhdGUtPmZvcmNlX21pbl9jZGNsa19jaGFuZ2Vk KQogCQlhbnlfbXMgPSB0cnVlOwogCi0JLyoKLQkgKiBkaXN0cnVzdF9iaW9zX3dtIHdpbGwgZm9y Y2UgYSBmdWxsIGRidWYgcmVjb21wdXRhdGlvbgotCSAqIGJ1dCB0aGUgaGFyZHdhcmUgc3RhdGUg d2lsbCBvbmx5IGdldCB1cGRhdGVkIGFjY29yZGluZ2x5Ci0JICogaWYgc3RhdGUtPm1vZGVzZXQ9 PXRydWUuIEhlbmNlIGRpc3RydXN0X2Jpb3Nfd209PXRydWUgJiYKLQkgKiBzdGF0ZS0+bW9kZXNl dD09ZmFsc2UgaXMgYW4gaW52YWxpZCBjb21iaW5hdGlvbiB3aGljaAotCSAqIHdvdWxkIGNhdXNl IHRoZSBoYXJkd2FyZSBhbmQgc29mdHdhcmUgZGJ1ZiBzdGF0ZSB0byBnZXQKLQkgKiBvdXQgb2Yg c3luYy4gV2UgbXVzdCBwcmV2ZW50IHRoYXQuCi0JICoKLQkgKiBGSVhNRSBjbGVhbiB1cCB0aGlz IG1lc3MgYW5kIGludHJvZHVjZSBiZXR0ZXIKLQkgKiBzdGF0ZSB0cmFja2luZyBmb3IgZGJ1Zi4K LQkgKi8KLQlpZiAoZGV2X3ByaXYtPndtLmRpc3RydXN0X2Jpb3Nfd20pCi0JCWFueV9tcyA9IHRy dWU7Ci0KIAlpZiAoYW55X21zKSB7CiAJCXJldCA9IGludGVsX21vZGVzZXRfY2hlY2tzKHN0YXRl KTsKIAkJaWYgKHJldCkKQEAgLTE1NzY5LDcgKzE1NzU1LDYgQEAgc3RhdGljIGludCBpbnRlbF9h dG9taWNfY29tbWl0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCWludGVsX3J1bnRpbWVfcG1f cHV0KCZkZXZfcHJpdi0+cnVudGltZV9wbSwgc3RhdGUtPndha2VyZWYpOwogCQlyZXR1cm4gcmV0 OwogCX0KLQlkZXZfcHJpdi0+d20uZGlzdHJ1c3RfYmlvc193bSA9IGZhbHNlOwogCWludGVsX3No YXJlZF9kcGxsX3N3YXBfc3RhdGUoc3RhdGUpOwogCWludGVsX2F0b21pY190cmFja19mYnMoc3Rh dGUpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rp c3BsYXlfZGVidWdmcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNw bGF5X2RlYnVnZnMuYwppbmRleCA0Njk1NGNjN2I2YzAuLmI1MDVkZTYyODdlNiAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X2RlYnVnZnMuYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfZGVidWdmcy5j CkBAIC05OTgsNyArOTk4LDYgQEAgc3RhdGljIHNzaXplX3QgaTkxNV9pcGNfc3RhdHVzX3dyaXRl KHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqdWJ1ZiwKIAkJaWYgKCFkZXZf cHJpdi0+aXBjX2VuYWJsZWQgJiYgZW5hYmxlKQogCQkJZHJtX2luZm8oJmRldl9wcml2LT5kcm0s CiAJCQkJICJFbmFibGluZyBJUEM6IFdNIHdpbGwgYmUgcHJvcGVyIG9ubHkgYWZ0ZXIgbmV4dCBj b21taXRcbiIpOwotCQlkZXZfcHJpdi0+d20uZGlzdHJ1c3RfYmlvc193bSA9IHRydWU7CiAJCWRl dl9wcml2LT5pcGNfZW5hYmxlZCA9IGVuYWJsZTsKIAkJaW50ZWxfZW5hYmxlX2lwYyhkZXZfcHJp dik7CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXggZDAzYzg0ZjM3M2U2Li4zMTdlNmE0 NjhlMmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAtMTE4MywxNSArMTE4Myw2IEBAIHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlIHsKIAkJICogY3J0Y19zdGF0ZS0+d20ubmVlZF9wb3N0dmJs X3VwZGF0ZS4KIAkJICovCiAJCXN0cnVjdCBtdXRleCB3bV9tdXRleDsKLQotCQkvKgotCQkgKiBT ZXQgZHVyaW5nIEhXIHJlYWRvdXQgb2Ygd2F0ZXJtYXJrcy9EREIuICBTb21lIHBsYXRmb3Jtcwot CQkgKiBuZWVkIHRvIGtub3cgd2hlbiB3ZSdyZSBzdGlsbCB1c2luZyBCSU9TLXByb3ZpZGVkIHZh bHVlcwotCQkgKiAod2hpY2ggd2UgZG9uJ3QgZnVsbHkgdHJ1c3QpLgotCQkgKgotCQkgKiBGSVhN RSBnZXQgcmlkIG9mIHRoaXMuCi0JCSAqLwotCQlib29sIGRpc3RydXN0X2Jpb3Nfd207CiAJfSB3 bTsKIAogCXN0cnVjdCBkcmFtX2luZm8gewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKaW5kZXggMDg1 MDQzNTI4ZjgwLi5jMTE1MDhmYjNmYWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3BtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwpAQCAtMzg2 NSw1NiArMzg2NSwyMiBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGludGVsX2NydGNfZGRiX3dlaWdo dChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdAogCXJldHVybiBoZGlzcGxh eTsKIH0KIAotc3RhdGljIHU4IHNrbF9jb21wdXRlX2RidWZfc2xpY2VzKHN0cnVjdCBpbnRlbF9j cnRjICpjcnRjLAotCQkJCSAgdTggYWN0aXZlX3BpcGVzKTsKLQotc3RhdGljIGludCBpbnRlbF9j cnRjX2RidWZfd2VpZ2h0cyhzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwKLQkJCQkg ICBzdHJ1Y3QgaW50ZWxfY3J0YyAqZm9yX2NydGMsCi0JCQkJICAgdW5zaWduZWQgaW50ICp3ZWln aHRfc3RhcnQsCi0JCQkJICAgdW5zaWduZWQgaW50ICp3ZWlnaHRfZW5kLAotCQkJCSAgIHVuc2ln bmVkIGludCAqd2VpZ2h0X3RvdGFsKQorc3RhdGljIHZvaWQgaW50ZWxfY3J0Y19kYnVmX3dlaWdo dHMoY29uc3Qgc3RydWN0IGludGVsX2RidWZfc3RhdGUgKmRidWZfc3RhdGUsCisJCQkJICAgIGVu dW0gcGlwZSBmb3JfcGlwZSwKKwkJCQkgICAgdW5zaWduZWQgaW50ICp3ZWlnaHRfc3RhcnQsCisJ CQkJICAgIHVuc2lnbmVkIGludCAqd2VpZ2h0X2VuZCwKKwkJCQkgICAgdW5zaWduZWQgaW50ICp3 ZWlnaHRfdG90YWwpCiB7Ci0JY29uc3Qgc3RydWN0IGludGVsX2RidWZfc3RhdGUgKm9sZF9kYnVm X3N0YXRlID0KLQkJaW50ZWxfYXRvbWljX2dldF9vbGRfZGJ1Zl9zdGF0ZShzdGF0ZSk7Ci0Jc3Ry dWN0IGludGVsX2RidWZfc3RhdGUgKm5ld19kYnVmX3N0YXRlID0KLQkJaW50ZWxfYXRvbWljX2dl dF9uZXdfZGJ1Zl9zdGF0ZShzdGF0ZSk7Ci0JdTggYWN0aXZlX3BpcGVzID0gbmV3X2RidWZfc3Rh dGUtPmFjdGl2ZV9waXBlczsKLQllbnVtIHBpcGUgZm9yX3BpcGUgPSBmb3JfY3J0Yy0+cGlwZTsK LQljb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsKLQlzdHJ1Y3QgaW50 ZWxfY3J0YyAqY3J0YzsKLQl1OCBkYnVmX3NsaWNlX21hc2s7Ci0JdTggdG90YWxfc2xpY2VfbWFz azsKLQlpbnQgaSwgcmV0OwotCi0JLyoKLQkgKiBHZXQgYWxsb3dlZCBEQnVmIHNsaWNlcyBmb3Ig Y29ycmVzcG9uZGVudCBwaXBlIGFuZCBwbGF0Zm9ybS4KLQkgKi8KLQlkYnVmX3NsaWNlX21hc2sg PSBza2xfY29tcHV0ZV9kYnVmX3NsaWNlcyhmb3JfY3J0YywgYWN0aXZlX3BpcGVzKTsKLQl0b3Rh bF9zbGljZV9tYXNrID0gZGJ1Zl9zbGljZV9tYXNrOworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9CisJCXRvX2k5MTUoZGJ1Zl9zdGF0ZS0+YmFzZS5zdGF0ZS0+YmFzZS5kZXYp OworCWVudW0gcGlwZSBwaXBlOwogCiAJKndlaWdodF9zdGFydCA9IDA7CiAJKndlaWdodF9lbmQg PSAwOwogCSp3ZWlnaHRfdG90YWwgPSAwOwogCi0JZm9yX2VhY2hfbmV3X2ludGVsX2NydGNfaW5f c3RhdGUoc3RhdGUsIGNydGMsIGNydGNfc3RhdGUsIGkpIHsKLQkJZW51bSBwaXBlIHBpcGUgPSBj cnRjLT5waXBlOwotCQl1bnNpZ25lZCBpbnQgd2VpZ2h0OwotCQl1OCBwaXBlX2RidWZfc2xpY2Vf bWFzazsKLQotCQlpZiAoIWNydGNfc3RhdGUtPmh3LmFjdGl2ZSkKLQkJCWNvbnRpbnVlOwotCi0J CXBpcGVfZGJ1Zl9zbGljZV9tYXNrID0KLQkJCXNrbF9jb21wdXRlX2RidWZfc2xpY2VzKGNydGMs IGFjdGl2ZV9waXBlcyk7Ci0KLQkJLyoKLQkJICogQWNjb3JkaW5nIHRvIEJTcGVjIHBpcGUgY2Fu IHNoYXJlIG9uZSBkYnVmIHNsaWNlIHdpdGggYW5vdGhlcgotCQkgKiBwaXBlcyBvciBwaXBlIGNh biB1c2UgbXVsdGlwbGUgZGJ1ZnMsIGluIGJvdGggY2FzZXMgd2UKLQkJICogYWNjb3VudCBmb3Ig b3RoZXIgcGlwZXMgb25seSBpZiB0aGV5IGhhdmUgZXhhY3RseSBzYW1lIG1hc2suCi0JCSAqIEhv d2V2ZXIgd2UgbmVlZCB0byBhY2NvdW50IGhvdyBtYW55IHNsaWNlcyB3ZSBzaG91bGQgZW5hYmxl Ci0JCSAqIGluIHRvdGFsLgotCQkgKi8KLQkJdG90YWxfc2xpY2VfbWFzayB8PSBwaXBlX2RidWZf c2xpY2VfbWFzazsKKwlmb3JfZWFjaF9waXBlKGRldl9wcml2LCBwaXBlKSB7CisJCWludCB3ZWln aHQgPSBkYnVmX3N0YXRlLT53ZWlnaHRbcGlwZV07CiAKIAkJLyoKIAkJICogRG8gbm90IGFjY291 bnQgcGlwZXMgdXNpbmcgb3RoZXIgc2xpY2Ugc2V0cwpAQCAtMzkyMywxMiArMzg4OSwxMCBAQCBz dGF0aWMgaW50IGludGVsX2NydGNfZGJ1Zl93ZWlnaHRzKHN0cnVjdCBpbnRlbF9hdG9taWNfc3Rh dGUgKnN0YXRlLAogCQkgKiBpLmUgbm8gcGFydGlhbCBpbnRlcnNlY3Rpb24pLCBzbyBpdCBpcyBl bm91Z2ggdG8gY2hlY2sgZm9yCiAJCSAqIGVxdWFsaXR5IGZvciBub3cuCiAJCSAqLwotCQlpZiAo ZGJ1Zl9zbGljZV9tYXNrICE9IHBpcGVfZGJ1Zl9zbGljZV9tYXNrKQorCQlpZiAoZGJ1Zl9zdGF0 ZS0+c2xpY2VzW3BpcGVdICE9IGRidWZfc3RhdGUtPnNsaWNlc1tmb3JfcGlwZV0pCiAJCQljb250 aW51ZTsKIAotCQl3ZWlnaHQgPSBpbnRlbF9jcnRjX2RkYl93ZWlnaHQoY3J0Y19zdGF0ZSk7CiAJ CSp3ZWlnaHRfdG90YWwgKz0gd2VpZ2h0OwotCiAJCWlmIChwaXBlIDwgZm9yX3BpcGUpIHsKIAkJ CSp3ZWlnaHRfc3RhcnQgKz0gd2VpZ2h0OwogCQkJKndlaWdodF9lbmQgKz0gd2VpZ2h0OwpAQCAt MzkzNiw4NyArMzkwMCw2NSBAQCBzdGF0aWMgaW50IGludGVsX2NydGNfZGJ1Zl93ZWlnaHRzKHN0 cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlLAogCQkJKndlaWdodF9lbmQgKz0gd2VpZ2h0 OwogCQl9CiAJfQotCi0JLyoKLQkgKiBGSVhNRTogRm9yIG5vdyB3ZSBhbHdheXMgZW5hYmxlIHNs aWNlIFMxIGFzIHBlcgotCSAqIHRoZSBCc3BlYyBkaXNwbGF5IGluaXRpYWxpemF0aW9uIHNlcXVl bmNlLgotCSAqLwotCW5ld19kYnVmX3N0YXRlLT5lbmFibGVkX3NsaWNlcyA9IHRvdGFsX3NsaWNl X21hc2sgfCBCSVQoREJVRl9TMSk7Ci0KLQlpZiAob2xkX2RidWZfc3RhdGUtPmVuYWJsZWRfc2xp Y2VzICE9IG5ld19kYnVmX3N0YXRlLT5lbmFibGVkX3NsaWNlcykgewotCQlyZXQgPSBpbnRlbF9h dG9taWNfc2VyaWFsaXplX2dsb2JhbF9zdGF0ZSgmbmV3X2RidWZfc3RhdGUtPmJhc2UpOwotCQlp ZiAocmV0KQotCQkJcmV0dXJuIHJldDsKLQl9Ci0KLQlyZXR1cm4gMDsKIH0KIAogc3RhdGljIGlu dAotc2tsX2RkYl9nZXRfcGlwZV9hbGxvY2F0aW9uX2xpbWl0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCi0JCQkJICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNy dGNfc3RhdGUsCi0JCQkJICAgY29uc3QgdTY0IHRvdGFsX2RhdGFfcmF0ZSwKLQkJCQkgICBzdHJ1 Y3Qgc2tsX2RkYl9lbnRyeSAqYWxsb2MsIC8qIG91dCAqLwotCQkJCSAgIGludCAqbnVtX2FjdGl2 ZSAvKiBvdXQgKi8pCitza2xfY3J0Y19hbGxvY2F0ZV9kZGIoc3RydWN0IGludGVsX2F0b21pY19z dGF0ZSAqc3RhdGUsIHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQogewotCXN0cnVjdCBpbnRlbF9h dG9taWNfc3RhdGUgKnN0YXRlID0KLQkJdG9faW50ZWxfYXRvbWljX3N0YXRlKGNydGNfc3RhdGUt PnVhcGkuc3RhdGUpOwotCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0Yyhj cnRjX3N0YXRlLT51YXBpLmNydGMpOwotCXVuc2lnbmVkIGludCB3ZWlnaHRfc3RhcnQsIHdlaWdo dF9lbmQsIHdlaWdodF90b3RhbDsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsKKwl1bnNpZ25lZCBpbnQgd2VpZ2h0X3RvdGFsLCB3 ZWlnaHRfc3RhcnQsIHdlaWdodF9lbmQ7CiAJY29uc3Qgc3RydWN0IGludGVsX2RidWZfc3RhdGUg Km9sZF9kYnVmX3N0YXRlID0KIAkJaW50ZWxfYXRvbWljX2dldF9vbGRfZGJ1Zl9zdGF0ZShzdGF0 ZSk7CiAJc3RydWN0IGludGVsX2RidWZfc3RhdGUgKm5ld19kYnVmX3N0YXRlID0KIAkJaW50ZWxf YXRvbWljX2dldF9uZXdfZGJ1Zl9zdGF0ZShzdGF0ZSk7Ci0JdTggYWN0aXZlX3BpcGVzID0gbmV3 X2RidWZfc3RhdGUtPmFjdGl2ZV9waXBlczsKKwlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0 Y19zdGF0ZTsKIAlzdHJ1Y3Qgc2tsX2RkYl9lbnRyeSBkZGJfc2xpY2VzOworCWVudW0gcGlwZSBw aXBlID0gY3J0Yy0+cGlwZTsKIAl1MzIgZGRiX3JhbmdlX3NpemU7CiAJdTMyIGRidWZfc2xpY2Vf bWFzazsKIAl1MzIgc3RhcnQsIGVuZDsKIAlpbnQgcmV0OwogCi0JKm51bV9hY3RpdmUgPSBod2Vp Z2h0OChhY3RpdmVfcGlwZXMpOwotCi0JaWYgKCFjcnRjX3N0YXRlLT5ody5hY3RpdmUpIHsKLQkJ YWxsb2MtPnN0YXJ0ID0gMDsKLQkJYWxsb2MtPmVuZCA9IDA7Ci0JCXJldHVybiAwOworCWlmIChu ZXdfZGJ1Zl9zdGF0ZS0+d2VpZ2h0W3BpcGVdID09IDApIHsKKwkJbmV3X2RidWZfc3RhdGUtPmRk YltwaXBlXS5zdGFydCA9IDA7CisJCW5ld19kYnVmX3N0YXRlLT5kZGJbcGlwZV0uZW5kID0gMDsK KwkJZ290byBvdXQ7CiAJfQogCi0JLyoKLQkgKiBJZiB0aGUgc3RhdGUgZG9lc24ndCBjaGFuZ2Ug dGhlIGFjdGl2ZSBDUlRDJ3Mgb3IgdGhlcmUgaXMgbm8KLQkgKiBtb2Rlc2V0IHJlcXVlc3QsIHRo ZW4gdGhlcmUncyBubyBuZWVkIHRvIHJlY2FsY3VsYXRlOwotCSAqIHRoZSBleGlzdGluZyBwaXBl IGFsbG9jYXRpb24gbGltaXRzIHNob3VsZCByZW1haW4gdW5jaGFuZ2VkLgotCSAqIE5vdGUgdGhh dCB3ZSdyZSBzYWZlIGZyb20gcmFjaW5nIGNvbW1pdHMgc2luY2UgYW55IHJhY2luZyBjb21taXQK LQkgKiB0aGF0IGNoYW5nZXMgdGhlIGFjdGl2ZSBDUlRDIGxpc3Qgb3IgZG8gbW9kZXNldCB3b3Vs ZCBuZWVkIHRvCi0JICogZ3JhYiBfYWxsXyBjcnRjIGxvY2tzLCBpbmNsdWRpbmcgdGhlIG9uZSB3 ZSBjdXJyZW50bHkgaG9sZC4KLQkgKi8KLQlpZiAob2xkX2RidWZfc3RhdGUtPmFjdGl2ZV9waXBl cyA9PSBuZXdfZGJ1Zl9zdGF0ZS0+YWN0aXZlX3BpcGVzICYmCi0JICAgICFkZXZfcHJpdi0+d20u ZGlzdHJ1c3RfYmlvc193bSkKLQkJcmV0dXJuIDA7Ci0KLQkvKgotCSAqIEdldCBhbGxvd2VkIERC dWYgc2xpY2VzIGZvciBjb3JyZXNwb25kZW50IHBpcGUgYW5kIHBsYXRmb3JtLgotCSAqLwotCWRi dWZfc2xpY2VfbWFzayA9IHNrbF9jb21wdXRlX2RidWZfc2xpY2VzKGNydGMsIGFjdGl2ZV9waXBl cyk7CisJZGJ1Zl9zbGljZV9tYXNrID0gbmV3X2RidWZfc3RhdGUtPnNsaWNlc1twaXBlXTsKIAog CXNrbF9kZGJfZW50cnlfZm9yX3NsaWNlcyhkZXZfcHJpdiwgZGJ1Zl9zbGljZV9tYXNrLCAmZGRi X3NsaWNlcyk7CiAJZGRiX3JhbmdlX3NpemUgPSBza2xfZGRiX2VudHJ5X3NpemUoJmRkYl9zbGlj ZXMpOwogCi0JcmV0ID0gaW50ZWxfY3J0Y19kYnVmX3dlaWdodHMoc3RhdGUsIGNydGMsCi0JCQkJ ICAgICAgJndlaWdodF9zdGFydCwgJndlaWdodF9lbmQsICZ3ZWlnaHRfdG90YWwpOwotCWlmIChy ZXQpCi0JCXJldHVybiByZXQ7CisJaW50ZWxfY3J0Y19kYnVmX3dlaWdodHMobmV3X2RidWZfc3Rh dGUsIHBpcGUsCisJCQkJJndlaWdodF9zdGFydCwgJndlaWdodF9lbmQsICZ3ZWlnaHRfdG90YWwp OwogCiAJc3RhcnQgPSBkZGJfcmFuZ2Vfc2l6ZSAqIHdlaWdodF9zdGFydCAvIHdlaWdodF90b3Rh bDsKIAllbmQgPSBkZGJfcmFuZ2Vfc2l6ZSAqIHdlaWdodF9lbmQgLyB3ZWlnaHRfdG90YWw7CiAK LQlhbGxvYy0+c3RhcnQgPSBkZGJfc2xpY2VzLnN0YXJ0ICsgc3RhcnQ7Ci0JYWxsb2MtPmVuZCA9 IGRkYl9zbGljZXMuc3RhcnQgKyBlbmQ7CisJbmV3X2RidWZfc3RhdGUtPmRkYltwaXBlXS5zdGFy dCA9IGRkYl9zbGljZXMuc3RhcnQgKyBzdGFydDsKKwluZXdfZGJ1Zl9zdGF0ZS0+ZGRiW3BpcGVd LmVuZCA9IGRkYl9zbGljZXMuc3RhcnQgKyBlbmQ7CisKK291dDoKKwlpZiAoc2tsX2RkYl9lbnRy eV9lcXVhbCgmb2xkX2RidWZfc3RhdGUtPmRkYltwaXBlXSwKKwkJCQkmbmV3X2RidWZfc3RhdGUt PmRkYltwaXBlXSkpCisJCXJldHVybiAwOworCisJcmV0ID0gaW50ZWxfYXRvbWljX2xvY2tfZ2xv YmFsX3N0YXRlKCZuZXdfZGJ1Zl9zdGF0ZS0+YmFzZSk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJl dDsKKworCWNydGNfc3RhdGUgPSBpbnRlbF9hdG9taWNfZ2V0X2NydGNfc3RhdGUoJnN0YXRlLT5i YXNlLCBjcnRjKTsKKwlpZiAoSVNfRVJSKGNydGNfc3RhdGUpKQorCQlyZXR1cm4gUFRSX0VSUihj cnRjX3N0YXRlKTsKIAogCWRybV9kYmdfa21zKCZkZXZfcHJpdi0+ZHJtLAotCQkgICAgIltDUlRD OiVkOiVzXSBkYnVmIHNsaWNlcyAweCV4LCBkZGIgKCVkIC0gJWQpLCBhY3RpdmUgcGlwZXMgMHgl eFxuIiwKKwkJICAgICJbQ1JUQzolZDolc10gZGJ1ZiBzbGljZXMgMHgleCAtPiAweCV4LCBkZGIg KCVkIC0gJWQpIC0+ICglZCAtICVkKSwgYWN0aXZlIHBpcGVzIDB4JXggLT4gMHgleFxuIiwKIAkJ ICAgIGNydGMtPmJhc2UuYmFzZS5pZCwgY3J0Yy0+YmFzZS5uYW1lLAotCQkgICAgZGJ1Zl9zbGlj ZV9tYXNrLCBhbGxvYy0+c3RhcnQsIGFsbG9jLT5lbmQsIGFjdGl2ZV9waXBlcyk7CisJCSAgICBv bGRfZGJ1Zl9zdGF0ZS0+c2xpY2VzW3BpcGVdLCBuZXdfZGJ1Zl9zdGF0ZS0+c2xpY2VzW3BpcGVd LAorCQkgICAgb2xkX2RidWZfc3RhdGUtPmRkYltwaXBlXS5zdGFydCwgb2xkX2RidWZfc3RhdGUt PmRkYltwaXBlXS5lbmQsCisJCSAgICBuZXdfZGJ1Zl9zdGF0ZS0+ZGRiW3BpcGVdLnN0YXJ0LCBu ZXdfZGJ1Zl9zdGF0ZS0+ZGRiW3BpcGVdLmVuZCwKKwkJICAgIG9sZF9kYnVmX3N0YXRlLT5hY3Rp dmVfcGlwZXMsIG5ld19kYnVmX3N0YXRlLT5hY3RpdmVfcGlwZXMpOwogCiAJcmV0dXJuIDA7CiB9 CkBAIC00NTQ5LDM1ICs0NDkxLDMyIEBAIGljbF9nZXRfdG90YWxfcmVsYXRpdmVfZGF0YV9yYXRl KHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogfQogCiBzdGF0aWMgaW50Ci1z a2xfYWxsb2NhdGVfcGlwZV9kZGIoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUp Citza2xfYWxsb2NhdGVfcGxhbmVfZGRiKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRl LAorCQkgICAgICAgc3RydWN0IGludGVsX2NydGMgKmNydGMpCiB7Ci0Jc3RydWN0IGludGVsX2Ny dGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPnVhcGkuY3J0Yyk7CiAJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5iYXNlLmRldik7Ci0J c3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUgPQotCQl0b19pbnRlbF9hdG9taWNfc3Rh dGUoY3J0Y19zdGF0ZS0+dWFwaS5zdGF0ZSk7Ci0Jc3RydWN0IGludGVsX2RidWZfc3RhdGUgKmRi dWZfc3RhdGUgPQorCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlID0KKwkJaW50 ZWxfYXRvbWljX2dldF9uZXdfY3J0Y19zdGF0ZShzdGF0ZSwgY3J0Yyk7CisJY29uc3Qgc3RydWN0 IGludGVsX2RidWZfc3RhdGUgKmRidWZfc3RhdGUgPQogCQlpbnRlbF9hdG9taWNfZ2V0X25ld19k YnVmX3N0YXRlKHN0YXRlKTsKLQlzdHJ1Y3Qgc2tsX2RkYl9lbnRyeSAqYWxsb2MgPSAmZGJ1Zl9z dGF0ZS0+ZGRiW2NydGMtPnBpcGVdOworCWNvbnN0IHN0cnVjdCBza2xfZGRiX2VudHJ5ICphbGxv YyA9ICZkYnVmX3N0YXRlLT5kZGJbY3J0Yy0+cGlwZV07CisJaW50IG51bV9hY3RpdmUgPSBod2Vp Z2h0OChkYnVmX3N0YXRlLT5hY3RpdmVfcGlwZXMpOwogCXUxNiBhbGxvY19zaXplLCBzdGFydCA9 IDA7CiAJdTE2IHRvdGFsW0k5MTVfTUFYX1BMQU5FU10gPSB7fTsKIAl1MTYgdXZfdG90YWxbSTkx NV9NQVhfUExBTkVTXSA9IHt9OwogCXU2NCB0b3RhbF9kYXRhX3JhdGU7CiAJZW51bSBwbGFuZV9p ZCBwbGFuZV9pZDsKLQlpbnQgbnVtX2FjdGl2ZTsKIAl1NjQgcGxhbmVfZGF0YV9yYXRlW0k5MTVf TUFYX1BMQU5FU10gPSB7fTsKIAl1NjQgdXZfcGxhbmVfZGF0YV9yYXRlW0k5MTVfTUFYX1BMQU5F U10gPSB7fTsKIAl1MzIgYmxvY2tzOwogCWludCBsZXZlbDsKLQlpbnQgcmV0OwogCiAJLyogQ2xl YXIgdGhlIHBhcnRpdGlvbmluZyBmb3IgZGlzYWJsZWQgcGxhbmVzLiAqLwogCW1lbXNldChjcnRj X3N0YXRlLT53bS5za2wucGxhbmVfZGRiX3ksIDAsIHNpemVvZihjcnRjX3N0YXRlLT53bS5za2wu cGxhbmVfZGRiX3kpKTsKIAltZW1zZXQoY3J0Y19zdGF0ZS0+d20uc2tsLnBsYW5lX2RkYl91diwg MCwgc2l6ZW9mKGNydGNfc3RhdGUtPndtLnNrbC5wbGFuZV9kZGJfdXYpKTsKIAotCWlmICghY3J0 Y19zdGF0ZS0+aHcuYWN0aXZlKSB7Ci0JCWFsbG9jLT5zdGFydCA9IGFsbG9jLT5lbmQgPSAwOwor CWlmICghY3J0Y19zdGF0ZS0+aHcuYWN0aXZlKQogCQlyZXR1cm4gMDsKLQl9CiAKIAlpZiAoSU5U RUxfR0VOKGRldl9wcml2KSA+PSAxMSkKIAkJdG90YWxfZGF0YV9yYXRlID0KQEAgLTQ1ODksMTMg KzQ1MjgsNiBAQCBza2xfYWxsb2NhdGVfcGlwZV9kZGIoc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNydGNfc3RhdGUpCiAJCQkJCQkJIHBsYW5lX2RhdGFfcmF0ZSwKIAkJCQkJCQkgdXZfcGxhbmVf ZGF0YV9yYXRlKTsKIAotCi0JcmV0ID0gc2tsX2RkYl9nZXRfcGlwZV9hbGxvY2F0aW9uX2xpbWl0 cyhkZXZfcHJpdiwgY3J0Y19zdGF0ZSwKLQkJCQkJCSB0b3RhbF9kYXRhX3JhdGUsCi0JCQkJCQkg YWxsb2MsICZudW1fYWN0aXZlKTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OwotCiAJYWxsb2Nf c2l6ZSA9IHNrbF9kZGJfZW50cnlfc2l6ZShhbGxvYyk7CiAJaWYgKGFsbG9jX3NpemUgPT0gMCkK IAkJcmV0dXJuIDA7CkBAIC01NDc1LDM5ICs1NDA3LDExNCBAQCBza2xfZGRiX2FkZF9hZmZlY3Rl ZF9wbGFuZXMoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlLAog CXJldHVybiAwOwogfQogCitzdGF0aWMgdTggaW50ZWxfZGJ1Zl9lbmFibGVkX3NsaWNlcyhjb25z dCBzdHJ1Y3QgaW50ZWxfZGJ1Zl9zdGF0ZSAqZGJ1Zl9zdGF0ZSkKK3sKKwlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRidWZfc3RhdGUtPmJhc2Uuc3RhdGUtPmJh c2UuZGV2KTsKKwl1OCBlbmFibGVkX3NsaWNlczsKKwllbnVtIHBpcGUgcGlwZTsKKworCS8qCisJ ICogRklYTUU6IEZvciBub3cgd2UgYWx3YXlzIGVuYWJsZSBzbGljZSBTMSBhcyBwZXIKKwkgKiB0 aGUgQnNwZWMgZGlzcGxheSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS4KKwkgKi8KKwllbmFibGVk X3NsaWNlcyA9IEJJVChEQlVGX1MxKTsKKworCWZvcl9lYWNoX3BpcGUoZGV2X3ByaXYsIHBpcGUp CisJCWVuYWJsZWRfc2xpY2VzIHw9IGRidWZfc3RhdGUtPnNsaWNlc1twaXBlXTsKKworCXJldHVy biBlbmFibGVkX3NsaWNlczsKK30KKwogc3RhdGljIGludAogc2tsX2NvbXB1dGVfZGRiKHN0cnVj dCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IHRvX2k5MTUoc3RhdGUtPmJhc2UuZGV2KTsKIAljb25zdCBzdHJ1Y3QgaW50 ZWxfZGJ1Zl9zdGF0ZSAqb2xkX2RidWZfc3RhdGU7Ci0JY29uc3Qgc3RydWN0IGludGVsX2RidWZf c3RhdGUgKm5ld19kYnVmX3N0YXRlOworCXN0cnVjdCBpbnRlbF9kYnVmX3N0YXRlICpuZXdfZGJ1 Zl9zdGF0ZSA9IE5VTEw7CiAJY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRj X3N0YXRlOwogCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpuZXdfY3J0Y19zdGF0ZTsKIAlzdHJ1 Y3QgaW50ZWxfY3J0YyAqY3J0YzsKIAlpbnQgcmV0LCBpOwogCi0JZm9yX2VhY2hfb2xkbmV3X2lu dGVsX2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIG9sZF9jcnRjX3N0YXRlLAotCQkJCQkgICAg bmV3X2NydGNfc3RhdGUsIGkpIHsKLQkJcmV0ID0gc2tsX2FsbG9jYXRlX3BpcGVfZGRiKG5ld19j cnRjX3N0YXRlKTsKKwlmb3JfZWFjaF9uZXdfaW50ZWxfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0 YywgbmV3X2NydGNfc3RhdGUsIGkpIHsKKwkJbmV3X2RidWZfc3RhdGUgPSBpbnRlbF9hdG9taWNf Z2V0X2RidWZfc3RhdGUoc3RhdGUpOworCQlpZiAoSVNfRVJSKG5ld19kYnVmX3N0YXRlKSkKKwkJ CXJldHVybiBQVFJfRVJSKG5ld19kYnVmX3N0YXRlKTsKKworCQlvbGRfZGJ1Zl9zdGF0ZSA9IGlu dGVsX2F0b21pY19nZXRfb2xkX2RidWZfc3RhdGUoc3RhdGUpOworCQlicmVhazsKKwl9CisKKwlp ZiAoIW5ld19kYnVmX3N0YXRlKQorCQlyZXR1cm4gMDsKKworCW5ld19kYnVmX3N0YXRlLT5hY3Rp dmVfcGlwZXMgPQorCQlpbnRlbF9jYWxjX2FjdGl2ZV9waXBlcyhzdGF0ZSwgb2xkX2RidWZfc3Rh dGUtPmFjdGl2ZV9waXBlcyk7CisKKwlpZiAob2xkX2RidWZfc3RhdGUtPmFjdGl2ZV9waXBlcyAh PSBuZXdfZGJ1Zl9zdGF0ZS0+YWN0aXZlX3BpcGVzKSB7CisJCXJldCA9IGludGVsX2F0b21pY19s b2NrX2dsb2JhbF9zdGF0ZSgmbmV3X2RidWZfc3RhdGUtPmJhc2UpOwogCQlpZiAocmV0KQogCQkJ cmV0dXJuIHJldDsKKwl9CiAKLQkJcmV0ID0gc2tsX2RkYl9hZGRfYWZmZWN0ZWRfcGxhbmVzKG9s ZF9jcnRjX3N0YXRlLAotCQkJCQkJICBuZXdfY3J0Y19zdGF0ZSk7CisJZm9yX2VhY2hfaW50ZWxf Y3J0YygmZGV2X3ByaXYtPmRybSwgY3J0YykgeworCQllbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBp cGU7CisKKwkJbmV3X2RidWZfc3RhdGUtPnNsaWNlc1twaXBlXSA9CisJCQlza2xfY29tcHV0ZV9k YnVmX3NsaWNlcyhjcnRjLCBuZXdfZGJ1Zl9zdGF0ZS0+YWN0aXZlX3BpcGVzKTsKKworCQlpZiAo b2xkX2RidWZfc3RhdGUtPnNsaWNlc1twaXBlXSA9PSBuZXdfZGJ1Zl9zdGF0ZS0+c2xpY2VzW3Bp cGVdKQorCQkJY29udGludWU7CisKKwkJcmV0ID0gaW50ZWxfYXRvbWljX2xvY2tfZ2xvYmFsX3N0 YXRlKCZuZXdfZGJ1Zl9zdGF0ZS0+YmFzZSk7CiAJCWlmIChyZXQpCiAJCQlyZXR1cm4gcmV0Owog CX0KIAotCW9sZF9kYnVmX3N0YXRlID0gaW50ZWxfYXRvbWljX2dldF9vbGRfZGJ1Zl9zdGF0ZShz dGF0ZSk7Ci0JbmV3X2RidWZfc3RhdGUgPSBpbnRlbF9hdG9taWNfZ2V0X25ld19kYnVmX3N0YXRl KHN0YXRlKTsKKwluZXdfZGJ1Zl9zdGF0ZS0+ZW5hYmxlZF9zbGljZXMgPSBpbnRlbF9kYnVmX2Vu YWJsZWRfc2xpY2VzKG5ld19kYnVmX3N0YXRlKTsKKworCWlmIChvbGRfZGJ1Zl9zdGF0ZS0+ZW5h YmxlZF9zbGljZXMgIT0gbmV3X2RidWZfc3RhdGUtPmVuYWJsZWRfc2xpY2VzKSB7CisJCXJldCA9 IGludGVsX2F0b21pY19zZXJpYWxpemVfZ2xvYmFsX3N0YXRlKCZuZXdfZGJ1Zl9zdGF0ZS0+YmFz ZSk7CisJCWlmIChyZXQpCisJCQlyZXR1cm4gcmV0OwogCi0JaWYgKG5ld19kYnVmX3N0YXRlICYm Ci0JICAgIG5ld19kYnVmX3N0YXRlLT5lbmFibGVkX3NsaWNlcyAhPSBvbGRfZGJ1Zl9zdGF0ZS0+ ZW5hYmxlZF9zbGljZXMpCiAJCWRybV9kYmdfa21zKCZkZXZfcHJpdi0+ZHJtLAogCQkJICAgICJF bmFibGVkIGRidWYgc2xpY2VzIDB4JXggLT4gMHgleCAob3V0IG9mICVkIGRidWYgc2xpY2VzKVxu IiwKIAkJCSAgICBvbGRfZGJ1Zl9zdGF0ZS0+ZW5hYmxlZF9zbGljZXMsCiAJCQkgICAgbmV3X2Ri dWZfc3RhdGUtPmVuYWJsZWRfc2xpY2VzLAogCQkJICAgIElOVEVMX0lORk8oZGV2X3ByaXYpLT5u dW1fc3VwcG9ydGVkX2RidWZfc2xpY2VzKTsKKwl9CisKKwlmb3JfZWFjaF9uZXdfaW50ZWxfY3J0 Y19pbl9zdGF0ZShzdGF0ZSwgY3J0YywgbmV3X2NydGNfc3RhdGUsIGkpIHsKKwkJZW51bSBwaXBl IHBpcGUgPSBjcnRjLT5waXBlOworCisJCW5ld19kYnVmX3N0YXRlLT53ZWlnaHRbY3J0Yy0+cGlw ZV0gPSBpbnRlbF9jcnRjX2RkYl93ZWlnaHQobmV3X2NydGNfc3RhdGUpOworCisJCWlmIChvbGRf ZGJ1Zl9zdGF0ZS0+d2VpZ2h0W3BpcGVdID09IG5ld19kYnVmX3N0YXRlLT53ZWlnaHRbcGlwZV0p CisJCQljb250aW51ZTsKKworCQlyZXQgPSBpbnRlbF9hdG9taWNfbG9ja19nbG9iYWxfc3RhdGUo Jm5ld19kYnVmX3N0YXRlLT5iYXNlKTsKKwkJaWYgKHJldCkKKwkJCXJldHVybiByZXQ7CisJfQor CisJZm9yX2VhY2hfaW50ZWxfY3J0YygmZGV2X3ByaXYtPmRybSwgY3J0YykgeworCQlyZXQgPSBz a2xfY3J0Y19hbGxvY2F0ZV9kZGIoc3RhdGUsIGNydGMpOworCQlpZiAocmV0KQorCQkJcmV0dXJu IHJldDsKKwl9CisKKwlmb3JfZWFjaF9vbGRuZXdfaW50ZWxfY3J0Y19pbl9zdGF0ZShzdGF0ZSwg Y3J0Yywgb2xkX2NydGNfc3RhdGUsCisJCQkJCSAgICBuZXdfY3J0Y19zdGF0ZSwgaSkgeworCQly ZXQgPSBza2xfYWxsb2NhdGVfcGxhbmVfZGRiKHN0YXRlLCBjcnRjKTsKKwkJaWYgKHJldCkKKwkJ CXJldHVybiByZXQ7CisKKwkJcmV0ID0gc2tsX2RkYl9hZGRfYWZmZWN0ZWRfcGxhbmVzKG9sZF9j cnRjX3N0YXRlLAorCQkJCQkJICBuZXdfY3J0Y19zdGF0ZSk7CisJCWlmIChyZXQpCisJCQlyZXR1 cm4gcmV0OworCX0KIAogCXJldHVybiAwOwogfQpAQCAtNTYzNiw4MyArNTY0Myw2IEBAIHNrbF9w cmludF93bV9jaGFuZ2VzKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlKQogCX0KIH0K IAotc3RhdGljIGludCBpbnRlbF9hZGRfYWZmZWN0ZWRfcGlwZXMoc3RydWN0IGludGVsX2F0b21p Y19zdGF0ZSAqc3RhdGUsCi0JCQkJICAgIHU4IHBpcGVfbWFzaykKLXsKLQlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHN0YXRlLT5iYXNlLmRldik7Ci0Jc3RydWN0 IGludGVsX2NydGMgKmNydGM7Ci0KLQlmb3JfZWFjaF9pbnRlbF9jcnRjKCZkZXZfcHJpdi0+ZHJt LCBjcnRjKSB7Ci0JCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlOwotCi0JCWlm ICgocGlwZV9tYXNrICYgQklUKGNydGMtPnBpcGUpKSA9PSAwKQotCQkJY29udGludWU7Ci0KLQkJ Y3J0Y19zdGF0ZSA9IGludGVsX2F0b21pY19nZXRfY3J0Y19zdGF0ZSgmc3RhdGUtPmJhc2UsIGNy dGMpOwotCQlpZiAoSVNfRVJSKGNydGNfc3RhdGUpKQotCQkJcmV0dXJuIFBUUl9FUlIoY3J0Y19z dGF0ZSk7Ci0JfQotCi0JcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBpbnQKLXNrbF9kZGJfYWRkX2Fm ZmVjdGVkX3BpcGVzKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlKQotewotCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoc3RhdGUtPmJhc2UuZGV2KTsK LQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsKLQlzdHJ1Y3QgaW50ZWxfY3J0 YyAqY3J0YzsKLQlpbnQgaSwgcmV0OwotCi0JaWYgKGRldl9wcml2LT53bS5kaXN0cnVzdF9iaW9z X3dtKSB7Ci0JCS8qCi0JCSAqIHNrbF9kZGJfZ2V0X3BpcGVfYWxsb2NhdGlvbl9saW1pdHMoKSBj dXJyZW50bHkgcmVxdWlyZXMKLQkJICogYWxsIGFjdGl2ZSBwaXBlcyB0byBiZSBpbmNsdWRlZCBp biB0aGUgc3RhdGUgc28gdGhhdAotCQkgKiBpdCBjYW4gcmVkaXN0cmlidXRlIHRoZSBkYnVmIGFt b25nIHRoZW0sIGFuZCBpdCByZWFsbHkKLQkJICogd2FudHMgdG8gcmVjb21wdXRlIHRoaW5ncyB3 aGVuIGRpc3RydXN0X2Jpb3Nfd20gaXMgc2V0Ci0JCSAqIHNvIHdlIGFkZCBhbGwgdGhlIHBpcGVz IHRvIHRoZSBzdGF0ZS4KLQkJICovCi0JCXJldCA9IGludGVsX2FkZF9hZmZlY3RlZF9waXBlcyhz dGF0ZSwgfjApOwotCQlpZiAocmV0KQotCQkJcmV0dXJuIHJldDsKLQl9Ci0KLQlmb3JfZWFjaF9u ZXdfaW50ZWxfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0YywgY3J0Y19zdGF0ZSwgaSkgewotCQlz dHJ1Y3QgaW50ZWxfZGJ1Zl9zdGF0ZSAqbmV3X2RidWZfc3RhdGU7Ci0JCWNvbnN0IHN0cnVjdCBp bnRlbF9kYnVmX3N0YXRlICpvbGRfZGJ1Zl9zdGF0ZTsKLQotCQluZXdfZGJ1Zl9zdGF0ZSA9IGlu dGVsX2F0b21pY19nZXRfZGJ1Zl9zdGF0ZShzdGF0ZSk7Ci0JCWlmIChJU19FUlIobmV3X2RidWZf c3RhdGUpKQotCQkJcmV0dXJuIHJldDsKLQotCQlvbGRfZGJ1Zl9zdGF0ZSA9IGludGVsX2F0b21p Y19nZXRfb2xkX2RidWZfc3RhdGUoc3RhdGUpOwotCi0JCW5ld19kYnVmX3N0YXRlLT5hY3RpdmVf cGlwZXMgPQotCQkJaW50ZWxfY2FsY19hY3RpdmVfcGlwZXMoc3RhdGUsIG9sZF9kYnVmX3N0YXRl LT5hY3RpdmVfcGlwZXMpOwotCi0JCWlmIChvbGRfZGJ1Zl9zdGF0ZS0+YWN0aXZlX3BpcGVzID09 IG5ld19kYnVmX3N0YXRlLT5hY3RpdmVfcGlwZXMpCi0JCQlicmVhazsKLQotCQlyZXQgPSBpbnRl bF9hdG9taWNfbG9ja19nbG9iYWxfc3RhdGUoJm5ld19kYnVmX3N0YXRlLT5iYXNlKTsKLQkJaWYg KHJldCkKLQkJCXJldHVybiByZXQ7Ci0KLQkJLyoKLQkJICogc2tsX2RkYl9nZXRfcGlwZV9hbGxv Y2F0aW9uX2xpbWl0cygpIGN1cnJlbnRseSByZXF1aXJlcwotCQkgKiBhbGwgYWN0aXZlIHBpcGVz IHRvIGJlIGluY2x1ZGVkIGluIHRoZSBzdGF0ZSBzbyB0aGF0Ci0JCSAqIGl0IGNhbiByZWRpc3Ry aWJ1dGUgdGhlIGRidWYgYW1vbmcgdGhlbS4KLQkJICovCi0JCXJldCA9IGludGVsX2FkZF9hZmZl Y3RlZF9waXBlcyhzdGF0ZSwKLQkJCQkJICAgICAgIG5ld19kYnVmX3N0YXRlLT5hY3RpdmVfcGlw ZXMpOwotCQlpZiAocmV0KQotCQkJcmV0dXJuIHJldDsKLQotCQlicmVhazsKLQl9Ci0KLQlyZXR1 cm4gMDsKLX0KLQogLyoKICAqIFRvIG1ha2Ugc3VyZSB0aGUgY3Vyc29yIHdhdGVybWFyayByZWdp c3RlcnMgYXJlIGFsd2F5cyBjb25zaXN0ZW50CiAgKiB3aXRoIG91ciBjb21wdXRlZCBzdGF0ZSB0 aGUgZm9sbG93aW5nIHNjZW5hcmlvIG5lZWRzIHNwZWNpYWwKQEAgLTU3ODEsMTUgKzU3MTEsNiBA QCBza2xfY29tcHV0ZV93bShzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSkKIAlzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGU7CiAJaW50IHJldCwgaTsKIAotCXJl dCA9IHNrbF9kZGJfYWRkX2FmZmVjdGVkX3BpcGVzKHN0YXRlKTsKLQlpZiAocmV0KQotCQlyZXR1 cm4gcmV0OwotCi0JLyoKLQkgKiBDYWxjdWxhdGUgV00ncyBmb3IgYWxsIHBpcGVzIHRoYXQgYXJl IHBhcnQgb2YgdGhpcyB0cmFuc2FjdGlvbi4KLQkgKiBOb3RlIHRoYXQgc2tsX2RkYl9hZGRfYWZm ZWN0ZWRfcGlwZXMgbWF5IGhhdmUgYWRkZWQgbW9yZSBDUlRDJ3MgdGhhdAotCSAqIHdlcmVuJ3Qg b3RoZXJ3aXNlIGJlaW5nIG1vZGlmaWVkIGlmIHBpcGUgYWxsb2NhdGlvbnMgaGFkIHRvIGNoYW5n ZS4KLQkgKi8KIAlmb3JfZWFjaF9vbGRuZXdfaW50ZWxfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0 Yywgb2xkX2NydGNfc3RhdGUsCiAJCQkJCSAgICBuZXdfY3J0Y19zdGF0ZSwgaSkgewogCQlyZXQg PSBza2xfYnVpbGRfcGlwZV93bShuZXdfY3J0Y19zdGF0ZSk7CkBAIC01OTQ0LDExICs1ODY1LDYg QEAgdm9pZCBza2xfd21fZ2V0X2h3X3N0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKIAogCQlza2xfcGlwZV93bV9nZXRfaHdfc3RhdGUoY3J0YywgJmNydGNfc3RhdGUtPndt LnNrbC5vcHRpbWFsKTsKIAl9Ci0KLQlpZiAoZGV2X3ByaXYtPmFjdGl2ZV9waXBlcykgewotCQkv KiBGdWxseSByZWNvbXB1dGUgRERCIG9uIGZpcnN0IGF0b21pYyBjb21taXQgKi8KLQkJZGV2X3By aXYtPndtLmRpc3RydXN0X2Jpb3Nfd20gPSB0cnVlOwotCX0KIH0KIAogc3RhdGljIHZvaWQgaWxr X3BpcGVfd21fZ2V0X2h3X3N0YXRlKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3BtLmgKaW5kZXggZDlmODRkOTMyODBkLi4zYTgyYjgwNDZmMTAgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcG0uaApAQCAtNjYsNiArNjYsOCBAQCBzdHJ1Y3QgaW50ZWxfZGJ1Zl9zdGF0ZSB7 CiAJc3RydWN0IGludGVsX2dsb2JhbF9zdGF0ZSBiYXNlOwogCiAJc3RydWN0IHNrbF9kZGJfZW50 cnkgZGRiW0k5MTVfTUFYX1BJUEVTXTsKKwl1bnNpZ25lZCBpbnQgd2VpZ2h0W0k5MTVfTUFYX1BJ UEVTXTsKKwl1OCBzbGljZXNbSTkxNV9NQVhfUElQRVNdOwogCiAJdTggZW5hYmxlZF9zbGljZXM7 CiAJdTggYWN0aXZlX3BpcGVzOwotLSAKMi4yNC4xCgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9pbnRlbC1nZngK