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, 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 86152C35E04 for ; Tue, 25 Feb 2020 17:13:52 +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 68C7120732 for ; Tue, 25 Feb 2020 17:13:52 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 68C7120732 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 B9C1B6EB5A; Tue, 25 Feb 2020 17:13:51 +0000 (UTC) Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id 183B76EB56 for ; Tue, 25 Feb 2020 17:13:48 +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 fmsmga104.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 25 Feb 2020 09:11:52 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.70,484,1574150400"; d="scan'208";a="241386160" Received: from stinkbox.fi.intel.com (HELO stinkbox) ([10.237.72.174]) by orsmga006.jf.intel.com with SMTP; 25 Feb 2020 09:11:50 -0800 Received: by stinkbox (sSMTP sendmail emulation); Tue, 25 Feb 2020 19:11:49 +0200 From: Ville Syrjala To: intel-gfx@lists.freedesktop.org Date: Tue, 25 Feb 2020 19:11:13 +0200 Message-Id: <20200225171125.28885-9-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 08/20] drm/i915: Introduce proper dbuf state 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" RnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KCkFk ZCBhIGdsb2JhbCBzdGF0ZSB0byB0cmFjayB0aGUgZGJ1ZiBzbGljZXMuIEdldHMgcmlkIG9mIGFs bCB0aGUgbmFzdHkKY291cGxpbmcgYmV0d2VlbiBzdGF0ZS0+bW9kZXNldCBhbmQgZGJ1ZiByZWNv bXB1dGF0aW9uLiBBbHNvIHdlIGNhbiBub3cKdG90YWxseSBudWtlIHN0YXRlLT5hY3RpdmVfcGlw ZV9jaGFuZ2VzLgoKZGV2X3ByaXYtPndtLmRpc3RydXN0X2Jpb3Nfd20gc3RpbGwgcmVtYWlucywg YnV0IHRoYXQgdG9vIHdpbGwgZ2V0Cm51a2VkIHNvb24uCgpDYzogU3RhbmlzbGF2IExpc292c2tp eSA8c3RhbmlzbGF2Lmxpc292c2tpeUBpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IFZpbGxlIFN5 cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUv ZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMgIHwgIDY3ICsrKysrLS0KIC4uLi9kcm0v aTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXIuYyAgICB8ICAgOCArLQogLi4uL2RybS9p OTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV90eXBlcy5oICAgIHwgIDEzIC0tCiBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAgICAgICAgfCAgMTEgKy0KIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3BtLmMgICAgICAgICAgICAgICB8IDE4OSArKysrKysrKysrKystLS0t LS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmggICAgICAgICAgICAgICB8ICAyMiAr KwogNiBmaWxlcyBjaGFuZ2VkLCAyMDkgaW5zZXJ0aW9ucygrKSwgMTAxIGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMKaW5kZXggNjk1 MmMzOThjYzQzLi42NTliOTUyYzhlMmYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3Bs YXkvaW50ZWxfZGlzcGxheS5jCkBAIC03NTgxLDYgKzc1ODEsOCBAQCBzdGF0aWMgdm9pZCBpbnRl bF9jcnRjX2Rpc2FibGVfbm9hdG9taWMoc3RydWN0IGludGVsX2NydGMgKmNydGMsCiAJCXRvX2lu dGVsX2J3X3N0YXRlKGRldl9wcml2LT5id19vYmouc3RhdGUpOwogCXN0cnVjdCBpbnRlbF9jZGNs a19zdGF0ZSAqY2RjbGtfc3RhdGUgPQogCQl0b19pbnRlbF9jZGNsa19zdGF0ZShkZXZfcHJpdi0+ Y2RjbGsub2JqLnN0YXRlKTsKKwlzdHJ1Y3QgaW50ZWxfZGJ1Zl9zdGF0ZSAqZGJ1Zl9zdGF0ZSA9 CisJCXRvX2ludGVsX2RidWZfc3RhdGUoZGV2X3ByaXYtPmRidWYub2JqLnN0YXRlKTsKIAlzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSA9CiAJCXRvX2ludGVsX2NydGNfc3RhdGUo Y3J0Yy0+YmFzZS5zdGF0ZSk7CiAJZW51bSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2RvbWFpbiBkb21h aW47CkBAIC03NjU0LDYgKzc2NTYsOCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9jcnRjX2Rpc2FibGVf bm9hdG9taWMoc3RydWN0IGludGVsX2NydGMgKmNydGMsCiAJY2RjbGtfc3RhdGUtPm1pbl92b2x0 YWdlX2xldmVsW3BpcGVdID0gMDsKIAljZGNsa19zdGF0ZS0+YWN0aXZlX3BpcGVzICY9IH5CSVQo cGlwZSk7CiAKKwlkYnVmX3N0YXRlLT5hY3RpdmVfcGlwZXMgJj0gfkJJVChwaXBlKTsKKwogCWJ3 X3N0YXRlLT5kYXRhX3JhdGVbcGlwZV0gPSAwOwogCWJ3X3N0YXRlLT5udW1fYWN0aXZlX3BsYW5l c1twaXBlXSA9IDA7CiB9CkBAIC0xMzk5MSwxMCArMTM5OTUsMTAgQEAgc3RhdGljIHZvaWQgdmVy aWZ5X3dtX3N0YXRlKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAogCWh3X2VuYWJsZWRfc2xpY2Vz ID0gaW50ZWxfZW5hYmxlZF9kYnVmX3NsaWNlc19tYXNrKGRldl9wcml2KTsKIAogCWlmIChJTlRF TF9HRU4oZGV2X3ByaXYpID49IDExICYmCi0JICAgIGh3X2VuYWJsZWRfc2xpY2VzICE9IGRldl9w cml2LT5lbmFibGVkX2RidWZfc2xpY2VzX21hc2spCisJICAgIGh3X2VuYWJsZWRfc2xpY2VzICE9 IGRldl9wcml2LT5kYnVmLmVuYWJsZWRfc2xpY2VzKQogCQlkcm1fZXJyKCZkZXZfcHJpdi0+ZHJt LAogCQkJIm1pc21hdGNoIGluIERCVUYgU2xpY2VzIChleHBlY3RlZCAweCV4LCBnb3QgMHgleClc biIsCi0JCQlkZXZfcHJpdi0+ZW5hYmxlZF9kYnVmX3NsaWNlc19tYXNrLAorCQkJZGV2X3ByaXYt PmRidWYuZW5hYmxlZF9zbGljZXMsCiAJCQlod19lbmFibGVkX3NsaWNlcyk7CiAKIAkvKiBwbGFu ZXMgKi8KQEAgLTE0NTI5LDkgKzE0NTMzLDcgQEAgc3RhdGljIGludCBpbnRlbF9tb2Rlc2V0X2No ZWNrcyhzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSkKIAlzdGF0ZS0+bW9kZXNldCA9 IHRydWU7CiAJc3RhdGUtPmFjdGl2ZV9waXBlcyA9IGludGVsX2NhbGNfYWN0aXZlX3BpcGVzKHN0 YXRlLCBkZXZfcHJpdi0+YWN0aXZlX3BpcGVzKTsKIAotCXN0YXRlLT5hY3RpdmVfcGlwZV9jaGFu Z2VzID0gc3RhdGUtPmFjdGl2ZV9waXBlcyBeIGRldl9wcml2LT5hY3RpdmVfcGlwZXM7Ci0KLQlp ZiAoc3RhdGUtPmFjdGl2ZV9waXBlX2NoYW5nZXMpIHsKKwlpZiAoc3RhdGUtPmFjdGl2ZV9waXBl cyAhPSBkZXZfcHJpdi0+YWN0aXZlX3BpcGVzKSB7CiAJCXJldCA9IF9pbnRlbF9hdG9taWNfbG9j a19nbG9iYWxfc3RhdGUoc3RhdGUpOwogCQlpZiAocmV0KQogCQkJcmV0dXJuIHJldDsKQEAgLTE1 MjkyLDIyICsxNTI5NCwzOCBAQCBzdGF0aWMgdm9pZCBpbnRlbF91cGRhdGVfdHJhbnNfcG9ydF9z eW5jX2NydGNzKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAogc3RhdGljIHZvaWQgaWNsX2RidWZf c2xpY2VfcHJlX3VwZGF0ZShzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSkKIHsKIAlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHN0YXRlLT5iYXNlLmRl dik7Ci0JdTggaHdfZW5hYmxlZF9zbGljZXMgPSBkZXZfcHJpdi0+ZW5hYmxlZF9kYnVmX3NsaWNl c19tYXNrOwotCXU4IHJlcXVpcmVkX3NsaWNlcyA9IHN0YXRlLT5lbmFibGVkX2RidWZfc2xpY2Vz X21hc2s7Ci0JdTggc2xpY2VzX3VuaW9uID0gaHdfZW5hYmxlZF9zbGljZXMgfCByZXF1aXJlZF9z bGljZXM7CisJY29uc3Qgc3RydWN0IGludGVsX2RidWZfc3RhdGUgKm5ld19kYnVmX3N0YXRlID0K KwkJaW50ZWxfYXRvbWljX2dldF9uZXdfZGJ1Zl9zdGF0ZShzdGF0ZSk7CisJY29uc3Qgc3RydWN0 IGludGVsX2RidWZfc3RhdGUgKm9sZF9kYnVmX3N0YXRlID0KKwkJaW50ZWxfYXRvbWljX2dldF9v bGRfZGJ1Zl9zdGF0ZShzdGF0ZSk7CiAKLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMSAm JiBzbGljZXNfdW5pb24gIT0gaHdfZW5hYmxlZF9zbGljZXMpCi0JCWdlbjlfZGJ1Zl9zbGljZXNf dXBkYXRlKGRldl9wcml2LCBzbGljZXNfdW5pb24pOworCWlmICghbmV3X2RidWZfc3RhdGUgfHwK KwkgICAgbmV3X2RidWZfc3RhdGUtPmVuYWJsZWRfc2xpY2VzID09IG9sZF9kYnVmX3N0YXRlLT5l bmFibGVkX3NsaWNlcykKKwkJcmV0dXJuOworCisJV0FSTl9PTighbmV3X2RidWZfc3RhdGUtPmJh c2UuY2hhbmdlZCk7CisKKwlnZW45X2RidWZfc2xpY2VzX3VwZGF0ZShkZXZfcHJpdiwKKwkJCQlv bGRfZGJ1Zl9zdGF0ZS0+ZW5hYmxlZF9zbGljZXMgfAorCQkJCW5ld19kYnVmX3N0YXRlLT5lbmFi bGVkX3NsaWNlcyk7CiB9CiAKIHN0YXRpYyB2b2lkIGljbF9kYnVmX3NsaWNlX3Bvc3RfdXBkYXRl KHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlKQogewogCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoc3RhdGUtPmJhc2UuZGV2KTsKLQl1OCBod19lbmFi bGVkX3NsaWNlcyA9IGRldl9wcml2LT5lbmFibGVkX2RidWZfc2xpY2VzX21hc2s7Ci0JdTggcmVx dWlyZWRfc2xpY2VzID0gc3RhdGUtPmVuYWJsZWRfZGJ1Zl9zbGljZXNfbWFzazsKKwljb25zdCBz dHJ1Y3QgaW50ZWxfZGJ1Zl9zdGF0ZSAqbmV3X2RidWZfc3RhdGUgPQorCQlpbnRlbF9hdG9taWNf Z2V0X25ld19kYnVmX3N0YXRlKHN0YXRlKTsKKwljb25zdCBzdHJ1Y3QgaW50ZWxfZGJ1Zl9zdGF0 ZSAqb2xkX2RidWZfc3RhdGUgPQorCQlpbnRlbF9hdG9taWNfZ2V0X29sZF9kYnVmX3N0YXRlKHN0 YXRlKTsKIAotCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDExICYmIHJlcXVpcmVkX3NsaWNl cyAhPSBod19lbmFibGVkX3NsaWNlcykKLQkJZ2VuOV9kYnVmX3NsaWNlc191cGRhdGUoZGV2X3By aXYsIHJlcXVpcmVkX3NsaWNlcyk7CisJaWYgKCFuZXdfZGJ1Zl9zdGF0ZSB8fAorCSAgICBuZXdf ZGJ1Zl9zdGF0ZS0+ZW5hYmxlZF9zbGljZXMgPT0gb2xkX2RidWZfc3RhdGUtPmVuYWJsZWRfc2xp Y2VzKQorCQlyZXR1cm47CisKKwlXQVJOX09OKCFuZXdfZGJ1Zl9zdGF0ZS0+YmFzZS5jaGFuZ2Vk KTsKKworCWdlbjlfZGJ1Zl9zbGljZXNfdXBkYXRlKGRldl9wcml2LAorCQkJCW5ld19kYnVmX3N0 YXRlLT5lbmFibGVkX3NsaWNlcyk7CiB9CiAKIHN0YXRpYyB2b2lkIHNrbF9jb21taXRfbW9kZXNl dF9lbmFibGVzKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlKQpAQCAtMTU1NjIsOSAr MTU1ODAsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9hdG9taWNfY29tbWl0X3RhaWwoc3RydWN0IGlu dGVsX2F0b21pY19zdGF0ZSAqc3RhdGUpCiAJaWYgKHN0YXRlLT5tb2Rlc2V0KQogCQlpbnRlbF9l bmNvZGVyc191cGRhdGVfcHJlcGFyZShzdGF0ZSk7CiAKLQkvKiBFbmFibGUgYWxsIG5ldyBzbGlj ZXMsIHdlIG1pZ2h0IG5lZWQgKi8KLQlpZiAoc3RhdGUtPm1vZGVzZXQpCi0JCWljbF9kYnVmX3Ns aWNlX3ByZV91cGRhdGUoc3RhdGUpOworCWljbF9kYnVmX3NsaWNlX3ByZV91cGRhdGUoc3RhdGUp OwogCiAJLyogTm93IGVuYWJsZSB0aGUgY2xvY2tzLCBwbGFuZSwgcGlwZSwgYW5kIGNvbm5lY3Rv cnMgdGhhdCB3ZSBzZXQgdXAuICovCiAJZGV2X3ByaXYtPmRpc3BsYXkuY29tbWl0X21vZGVzZXRf ZW5hYmxlcyhzdGF0ZSk7CkBAIC0xNTYxOSw5ICsxNTYzNSw3IEBAIHN0YXRpYyB2b2lkIGludGVs X2F0b21pY19jb21taXRfdGFpbChzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSkKIAkJ CWRldl9wcml2LT5kaXNwbGF5Lm9wdGltaXplX3dhdGVybWFya3Moc3RhdGUsIGNydGMpOwogCX0K IAotCS8qIERpc2FibGUgYWxsIHNsaWNlcywgd2UgZG9uJ3QgbmVlZCAqLwotCWlmIChzdGF0ZS0+ bW9kZXNldCkKLQkJaWNsX2RidWZfc2xpY2VfcG9zdF91cGRhdGUoc3RhdGUpOworCWljbF9kYnVm X3NsaWNlX3Bvc3RfdXBkYXRlKHN0YXRlKTsKIAogCWZvcl9lYWNoX29sZG5ld19pbnRlbF9jcnRj X2luX3N0YXRlKHN0YXRlLCBjcnRjLCBvbGRfY3J0Y19zdGF0ZSwgbmV3X2NydGNfc3RhdGUsIGkp IHsKIAkJaW50ZWxfcG9zdF9wbGFuZV91cGRhdGUoc3RhdGUsIGNydGMpOwpAQCAtMTc1MDcsMTAg KzE3NTIxLDE0IEBAIHZvaWQgaW50ZWxfbW9kZXNldF9pbml0X2h3KHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICppOTE1KQogewogCXN0cnVjdCBpbnRlbF9jZGNsa19zdGF0ZSAqY2RjbGtfc3RhdGUg PQogCQl0b19pbnRlbF9jZGNsa19zdGF0ZShpOTE1LT5jZGNsay5vYmouc3RhdGUpOworCXN0cnVj dCBpbnRlbF9kYnVmX3N0YXRlICpkYnVmX3N0YXRlID0KKwkJdG9faW50ZWxfZGJ1Zl9zdGF0ZShp OTE1LT5kYnVmLm9iai5zdGF0ZSk7CiAKIAlpbnRlbF91cGRhdGVfY2RjbGsoaTkxNSk7CiAJaW50 ZWxfZHVtcF9jZGNsa19jb25maWcoJmk5MTUtPmNkY2xrLmh3LCAiQ3VycmVudCBDRENMSyIpOwog CWNkY2xrX3N0YXRlLT5sb2dpY2FsID0gY2RjbGtfc3RhdGUtPmFjdHVhbCA9IGk5MTUtPmNkY2xr Lmh3OworCisJZGJ1Zl9zdGF0ZS0+ZW5hYmxlZF9zbGljZXMgPSBpOTE1LT5kYnVmLmVuYWJsZWRf c2xpY2VzOwogfQogCiBzdGF0aWMgaW50IHNhbml0aXplX3dhdGVybWFya3NfYWRkX2FmZmVjdGVk KHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKQEAgLTE3ODAwLDYgKzE3ODE4LDEwIEBA IGludCBpbnRlbF9tb2Rlc2V0X2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCiAJ aWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAorCXJldCA9IGludGVsX2RidWZfaW5pdChpOTE1KTsK KwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCiAJcmV0ID0gaW50ZWxfYndfaW5pdChpOTE1KTsK IAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwpAQCAtMTgzMDMsNiArMTgzMjUsOCBAQCBzdGF0aWMg dm9pZCBpbnRlbF9tb2Rlc2V0X3JlYWRvdXRfaHdfc3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRl dikKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7CiAJ c3RydWN0IGludGVsX2NkY2xrX3N0YXRlICpjZGNsa19zdGF0ZSA9CiAJCXRvX2ludGVsX2NkY2xr X3N0YXRlKGRldl9wcml2LT5jZGNsay5vYmouc3RhdGUpOworCXN0cnVjdCBpbnRlbF9kYnVmX3N0 YXRlICpkYnVmX3N0YXRlID0KKwkJdG9faW50ZWxfZGJ1Zl9zdGF0ZShkZXZfcHJpdi0+ZGJ1Zi5v Ymouc3RhdGUpOwogCWVudW0gcGlwZSBwaXBlOwogCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjOwog CXN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyOwpAQCAtMTgzMzQsNyArMTgzNTgsOCBAQCBz dGF0aWMgdm9pZCBpbnRlbF9tb2Rlc2V0X3JlYWRvdXRfaHdfc3RhdGUoc3RydWN0IGRybV9kZXZp Y2UgKmRldikKIAkJCSAgICBlbmFibGVkZGlzYWJsZWQoY3J0Y19zdGF0ZS0+aHcuYWN0aXZlKSk7 CiAJfQogCi0JZGV2X3ByaXYtPmFjdGl2ZV9waXBlcyA9IGNkY2xrX3N0YXRlLT5hY3RpdmVfcGlw ZXMgPSBhY3RpdmVfcGlwZXM7CisJZGV2X3ByaXYtPmFjdGl2ZV9waXBlcyA9IGNkY2xrX3N0YXRl LT5hY3RpdmVfcGlwZXMgPQorCQlkYnVmX3N0YXRlLT5hY3RpdmVfcGlwZXMgPSBhY3RpdmVfcGlw ZXM7CiAKIAlyZWFkb3V0X3BsYW5lX3N0YXRlKGRldl9wcml2KTsKIApkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5X3Bvd2VyLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXlfcG93ZXIuYwppbmRleCBjZTNiYmM0 YzdhMjcuLmRjMGM5Njk0YjcxNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlz cGxheS9pbnRlbF9kaXNwbGF5X3Bvd2VyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlz cGxheS9pbnRlbF9kaXNwbGF5X3Bvd2VyLmMKQEAgLTEwNjIsNyArMTA2Miw3IEBAIHN0YXRpYyBi b29sIGdlbjlfZGNfb2ZmX3Bvd2VyX3dlbGxfZW5hYmxlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsCiBzdGF0aWMgdm9pZCBnZW45X2Fzc2VydF9kYnVmX2VuYWJsZWQoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogewogCXU4IGh3X2VuYWJsZWRfZGJ1Zl9zbGlj ZXMgPSBpbnRlbF9lbmFibGVkX2RidWZfc2xpY2VzX21hc2soZGV2X3ByaXYpOwotCXU4IGVuYWJs ZWRfZGJ1Zl9zbGljZXMgPSBkZXZfcHJpdi0+ZW5hYmxlZF9kYnVmX3NsaWNlc19tYXNrOworCXU4 IGVuYWJsZWRfZGJ1Zl9zbGljZXMgPSBkZXZfcHJpdi0+ZGJ1Zi5lbmFibGVkX3NsaWNlczsKIAog CWRybV9XQVJOKCZkZXZfcHJpdi0+ZHJtLAogCQkgaHdfZW5hYmxlZF9kYnVmX3NsaWNlcyAhPSBl bmFibGVkX2RidWZfc2xpY2VzLApAQCAtNDQ4MSwxNCArNDQ4MSwxNCBAQCB2b2lkIGdlbjlfZGJ1 Zl9zbGljZXNfdXBkYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAlmb3Ig KHNsaWNlID0gREJVRl9TMTsgc2xpY2UgPCBudW1fc2xpY2VzOyBzbGljZSsrKQogCQlnZW45X2Ri dWZfc2xpY2Vfc2V0KGRldl9wcml2LCBzbGljZSwgcmVxX3NsaWNlcyAmIEJJVChzbGljZSkpOwog Ci0JZGV2X3ByaXYtPmVuYWJsZWRfZGJ1Zl9zbGljZXNfbWFzayA9IHJlcV9zbGljZXM7CisJZGV2 X3ByaXYtPmRidWYuZW5hYmxlZF9zbGljZXMgPSByZXFfc2xpY2VzOwogCiAJbXV0ZXhfdW5sb2Nr KCZwb3dlcl9kb21haW5zLT5sb2NrKTsKIH0KIAogc3RhdGljIHZvaWQgZ2VuOV9kYnVmX2VuYWJs ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7Ci0JZGV2X3ByaXYtPmVuYWJs ZWRfZGJ1Zl9zbGljZXNfbWFzayA9CisJZGV2X3ByaXYtPmRidWYuZW5hYmxlZF9zbGljZXMgPQog CQlpbnRlbF9lbmFibGVkX2RidWZfc2xpY2VzX21hc2soZGV2X3ByaXYpOwogCiAJLyoKQEAgLTQ0 OTYsNyArNDQ5Niw3IEBAIHN0YXRpYyB2b2lkIGdlbjlfZGJ1Zl9lbmFibGUoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQogCSAqIGZpZ3VyZSBvdXQgbGF0ZXIgd2hpY2ggc2xpY2Vz IHdlIGhhdmUgYW5kIHdoYXQgd2UgbmVlZC4KIAkgKi8KIAlnZW45X2RidWZfc2xpY2VzX3VwZGF0 ZShkZXZfcHJpdiwgQklUKERCVUZfUzEpIHwKLQkJCQlkZXZfcHJpdi0+ZW5hYmxlZF9kYnVmX3Ns aWNlc19tYXNrKTsKKwkJCQlkZXZfcHJpdi0+ZGJ1Zi5lbmFibGVkX3NsaWNlcyk7CiB9CiAKIHN0 YXRpYyB2b2lkIGdlbjlfZGJ1Zl9kaXNhYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlz cGxheV90eXBlcy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5 X3R5cGVzLmgKaW5kZXggMGQ4YTY0MzA1NDY0Li4xNjVlZmEwMGQ4OGIgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV90eXBlcy5oCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheV90eXBlcy5oCkBAIC00NzEs MTYgKzQ3MSw2IEBAIHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgewogCiAJYm9vbCBkcGxsX3Nl dCwgbW9kZXNldDsKIAotCS8qCi0JICogRG9lcyB0aGlzIHRyYW5zYWN0aW9uIGNoYW5nZSB0aGUg cGlwZXMgdGhhdCBhcmUgYWN0aXZlPyAgVGhpcyBtYXNrCi0JICogdHJhY2tzIHdoaWNoIENSVEMn cyBoYXZlIGNoYW5nZWQgdGhlaXIgYWN0aXZlIHN0YXRlIGF0IHRoZSBlbmQgb2YKLQkgKiB0aGUg dHJhbnNhY3Rpb24gKG5vdCBjb3VudGluZyB0aGUgdGVtcG9yYXJ5IGRpc2FibGUgZHVyaW5nIG1v ZGVzZXRzKS4KLQkgKiBUaGlzIG1hc2sgc2hvdWxkIG9ubHkgYmUgbm9uLXplcm8gd2hlbiBpbnRl bF9zdGF0ZS0+bW9kZXNldCBpcyB0cnVlLAotCSAqIGJ1dCB0aGUgY29udmVyc2UgaXMgbm90IG5l Y2Vzc2FyaWx5IHRydWU7IHNpbXBseSBjaGFuZ2luZyBhIG1vZGUgbWF5Ci0JICogbm90IGZsaXAg dGhlIGZpbmFsIGFjdGl2ZSBzdGF0dXMgb2YgYW55IENSVEMncwotCSAqLwotCXU4IGFjdGl2ZV9w aXBlX2NoYW5nZXM7Ci0KIAl1OCBhY3RpdmVfcGlwZXM7CiAKIAlzdHJ1Y3QgaW50ZWxfc2hhcmVk X2RwbGxfc3RhdGUgc2hhcmVkX2RwbGxbSTkxNV9OVU1fUExMU107CkBAIC00OTgsOSArNDg4LDYg QEAgc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSB7CiAJICovCiAJYm9vbCBnbG9iYWxfc3RhdGVf Y2hhbmdlZDsKIAotCS8qIE51bWJlciBvZiBlbmFibGVkIERCdWYgc2xpY2VzICovCi0JdTggZW5h YmxlZF9kYnVmX3NsaWNlc19tYXNrOwotCiAJc3RydWN0IGk5MTVfc3dfZmVuY2UgY29tbWl0X3Jl YWR5OwogCiAJc3RydWN0IGxsaXN0X25vZGUgZnJlZWQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApp bmRleCA4OGU0ZmI4YWM3MzkuLmQwM2M4NGYzNzNlNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5o CkBAIC0xMDA2LDYgKzEwMDYsMTMgQEAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgewogCQlzdHJ1 Y3QgaW50ZWxfZ2xvYmFsX29iaiBvYmo7CiAJfSBjZGNsazsKIAorCXN0cnVjdCB7CisJCS8qIFRo ZSBjdXJyZW50IGhhcmR3YXJlIGRidWYgY29uZmlndXJhdGlvbiAqLworCQl1OCBlbmFibGVkX3Ns aWNlczsKKworCQlzdHJ1Y3QgaW50ZWxfZ2xvYmFsX29iaiBvYmo7CisJfSBkYnVmOworCiAJLyoq CiAJICogd3EgLSBEcml2ZXIgd29ya3F1ZXVlIGZvciBHRU0uCiAJICoKQEAgLTExODEsMTIgKzEx ODgsMTIgQEAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgewogCQkgKiBTZXQgZHVyaW5nIEhXIHJl YWRvdXQgb2Ygd2F0ZXJtYXJrcy9EREIuICBTb21lIHBsYXRmb3JtcwogCQkgKiBuZWVkIHRvIGtu b3cgd2hlbiB3ZSdyZSBzdGlsbCB1c2luZyBCSU9TLXByb3ZpZGVkIHZhbHVlcwogCQkgKiAod2hp Y2ggd2UgZG9uJ3QgZnVsbHkgdHJ1c3QpLgorCQkgKgorCQkgKiBGSVhNRSBnZXQgcmlkIG9mIHRo aXMuCiAJCSAqLwogCQlib29sIGRpc3RydXN0X2Jpb3Nfd207CiAJfSB3bTsKIAotCXU4IGVuYWJs ZWRfZGJ1Zl9zbGljZXNfbWFzazsgLyogR0VOMTEgaGFzIGNvbmZpZ3VyYWJsZSAyIHNsaWNlcyAq LwotCiAJc3RydWN0IGRyYW1faW5mbyB7CiAJCWJvb2wgdmFsaWQ7CiAJCWJvb2wgaXNfMTZnYl9k aW1tOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKaW5kZXggNjQwZjRjNGZkNTA4Li5kNDczMGQ5YjRl MWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwpAQCAtMzg0NSw3ICszODQ1LDcgQEAgc3RhdGlj IHUxNiBpbnRlbF9nZXRfZGRiX3NpemUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQogc3RhdGljIHU4IHNrbF9jb21wdXRlX2RidWZfc2xpY2VzKGNvbnN0IHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCQkJCSAgdTggYWN0aXZlX3BpcGVzKTsKIAotc3RhdGlj IHZvaWQKK3N0YXRpYyBpbnQKIHNrbF9kZGJfZ2V0X3BpcGVfYWxsb2NhdGlvbl9saW1pdHMoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQkJCSAgIGNvbnN0IHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCQkJCSAgIGNvbnN0IHU2NCB0b3RhbF9kYXRhX3Jh dGUsCkBAIC0zODU4LDMwICszODU4LDI5IEBAIHNrbF9kZGJfZ2V0X3BpcGVfYWxsb2NhdGlvbl9s aW1pdHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCWNvbnN0IHN0cnVjdCBp bnRlbF9jcnRjICpjcnRjOwogCXUzMiBwaXBlX3dpZHRoID0gMCwgdG90YWxfd2lkdGhfaW5fcmFu Z2UgPSAwLCB3aWR0aF9iZWZvcmVfcGlwZV9pbl9yYW5nZSA9IDA7CiAJZW51bSBwaXBlIGZvcl9w aXBlID0gdG9faW50ZWxfY3J0Yyhmb3JfY3J0YyktPnBpcGU7CisJc3RydWN0IGludGVsX2RidWZf c3RhdGUgKm5ld19kYnVmX3N0YXRlID0KKwkJaW50ZWxfYXRvbWljX2dldF9uZXdfZGJ1Zl9zdGF0 ZShpbnRlbF9zdGF0ZSk7CisJY29uc3Qgc3RydWN0IGludGVsX2RidWZfc3RhdGUgKm9sZF9kYnVm X3N0YXRlID0KKwkJaW50ZWxfYXRvbWljX2dldF9vbGRfZGJ1Zl9zdGF0ZShpbnRlbF9zdGF0ZSk7 CisJdTggYWN0aXZlX3BpcGVzID0gbmV3X2RidWZfc3RhdGUtPmFjdGl2ZV9waXBlczsKIAl1MTYg ZGRiX3NpemU7CiAJdTMyIGRkYl9yYW5nZV9zaXplOwogCXUzMiBpOwogCXUzMiBkYnVmX3NsaWNl X21hc2s7Ci0JdTMyIGFjdGl2ZV9waXBlczsKIAl1MzIgb2Zmc2V0OwogCXUzMiBzbGljZV9zaXpl OwogCXUzMiB0b3RhbF9zbGljZV9tYXNrOwogCXUzMiBzdGFydCwgZW5kOworCWludCByZXQ7CiAK LQlpZiAoZHJtX1dBUk5fT04oJmRldl9wcml2LT5kcm0sICFzdGF0ZSkgfHwgIWNydGNfc3RhdGUt Pmh3LmFjdGl2ZSkgeworCSpudW1fYWN0aXZlID0gaHdlaWdodDgoYWN0aXZlX3BpcGVzKTsKKwor CWlmICghY3J0Y19zdGF0ZS0+aHcuYWN0aXZlKSB7CiAJCWFsbG9jLT5zdGFydCA9IDA7CiAJCWFs bG9jLT5lbmQgPSAwOwotCQkqbnVtX2FjdGl2ZSA9IGh3ZWlnaHQ4KGRldl9wcml2LT5hY3RpdmVf cGlwZXMpOwotCQlyZXR1cm47CisJCXJldHVybiAwOwogCX0KIAotCWlmIChpbnRlbF9zdGF0ZS0+ YWN0aXZlX3BpcGVfY2hhbmdlcykKLQkJYWN0aXZlX3BpcGVzID0gaW50ZWxfc3RhdGUtPmFjdGl2 ZV9waXBlczsKLQllbHNlCi0JCWFjdGl2ZV9waXBlcyA9IGRldl9wcml2LT5hY3RpdmVfcGlwZXM7 Ci0KLQkqbnVtX2FjdGl2ZSA9IGh3ZWlnaHQ4KGFjdGl2ZV9waXBlcyk7Ci0KIAlkZGJfc2l6ZSA9 IGludGVsX2dldF9kZGJfc2l6ZShkZXZfcHJpdik7CiAKIAlzbGljZV9zaXplID0gZGRiX3NpemUg LyBJTlRFTF9JTkZPKGRldl9wcml2KS0+bnVtX3N1cHBvcnRlZF9kYnVmX3NsaWNlczsKQEAgLTM4 OTQsMTMgKzM4OTMsMTYgQEAgc2tsX2RkYl9nZXRfcGlwZV9hbGxvY2F0aW9uX2xpbWl0cyhzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJICogdGhhdCBjaGFuZ2VzIHRoZSBhY3Rp dmUgQ1JUQyBsaXN0IG9yIGRvIG1vZGVzZXQgd291bGQgbmVlZCB0bwogCSAqIGdyYWIgX2FsbF8g Y3J0YyBsb2NrcywgaW5jbHVkaW5nIHRoZSBvbmUgd2UgY3VycmVudGx5IGhvbGQuCiAJICovCi0J aWYgKCFpbnRlbF9zdGF0ZS0+YWN0aXZlX3BpcGVfY2hhbmdlcyAmJiAhaW50ZWxfc3RhdGUtPm1v ZGVzZXQpIHsKKwlpZiAob2xkX2RidWZfc3RhdGUtPmFjdGl2ZV9waXBlcyA9PSBuZXdfZGJ1Zl9z dGF0ZS0+YWN0aXZlX3BpcGVzICYmCisJICAgICFkZXZfcHJpdi0+d20uZGlzdHJ1c3RfYmlvc193 bSkgewogCQkvKgogCQkgKiBhbGxvYyBtYXkgYmUgY2xlYXJlZCBieSBjbGVhcl9pbnRlbF9jcnRj X3N0YXRlLAogCQkgKiBjb3B5IGZyb20gb2xkIHN0YXRlIHRvIGJlIHN1cmUKKwkJICoKKwkJICog RklYTUUgZ2V0IHJpZCBvZiB0aGlzIG1lc3MKIAkJICovCiAJCSphbGxvYyA9IHRvX2ludGVsX2Ny dGNfc3RhdGUoZm9yX2NydGMtPnN0YXRlKS0+d20uc2tsLmRkYjsKLQkJcmV0dXJuOworCQlyZXR1 cm4gMDsKIAl9CiAKIAkvKgpAQCAtMzk3OSw3ICszOTgxLDEzIEBAIHNrbF9kZGJfZ2V0X3BpcGVf YWxsb2NhdGlvbl9saW1pdHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCSAq IEZJWE1FOiBGb3Igbm93IHdlIGFsd2F5cyBlbmFibGUgc2xpY2UgUzEgYXMgcGVyCiAJICogdGhl IEJzcGVjIGRpc3BsYXkgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UuCiAJICovCi0JaW50ZWxfc3Rh dGUtPmVuYWJsZWRfZGJ1Zl9zbGljZXNfbWFzayA9IHRvdGFsX3NsaWNlX21hc2sgfCBCSVQoREJV Rl9TMSk7CisJbmV3X2RidWZfc3RhdGUtPmVuYWJsZWRfc2xpY2VzID0gdG90YWxfc2xpY2VfbWFz ayB8IEJJVChEQlVGX1MxKTsKKworCWlmIChvbGRfZGJ1Zl9zdGF0ZS0+ZW5hYmxlZF9zbGljZXMg IT0gbmV3X2RidWZfc3RhdGUtPmVuYWJsZWRfc2xpY2VzKSB7CisJCXJldCA9IGludGVsX2F0b21p Y19zZXJpYWxpemVfZ2xvYmFsX3N0YXRlKCZuZXdfZGJ1Zl9zdGF0ZS0+YmFzZSk7CisJCWlmIChy ZXQpCisJCQlyZXR1cm4gcmV0OworCX0KIAogCXN0YXJ0ID0gZGRiX3JhbmdlX3NpemUgKiB3aWR0 aF9iZWZvcmVfcGlwZV9pbl9yYW5nZSAvIHRvdGFsX3dpZHRoX2luX3JhbmdlOwogCWVuZCA9IGRk Yl9yYW5nZV9zaXplICoKQEAgLTM5OTAsOSArMzk5OCw4IEBAIHNrbF9kZGJfZ2V0X3BpcGVfYWxs b2NhdGlvbl9saW1pdHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCiAJRFJN X0RFQlVHX0tNUygiUGlwZSAlZCBkZGIgJWQtJWRcbiIsIGZvcl9waXBlLAogCQkgICAgICBhbGxv Yy0+c3RhcnQsIGFsbG9jLT5lbmQpOwotCURSTV9ERUJVR19LTVMoIkVuYWJsZWQgZGRiIHNsaWNl cyBtYXNrICV4IG51bSBzdXBwb3J0ZWQgJWRcbiIsCi0JCSAgICAgIGludGVsX3N0YXRlLT5lbmFi bGVkX2RidWZfc2xpY2VzX21hc2ssCi0JCSAgICAgIElOVEVMX0lORk8oZGV2X3ByaXYpLT5udW1f c3VwcG9ydGVkX2RidWZfc2xpY2VzKTsKKworCXJldHVybiAwOwogfQogCiBzdGF0aWMgaW50IHNr bF9jb21wdXRlX3dtX3BhcmFtcyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19z dGF0ZSwKQEAgLTQxMTIsOCArNDExOSw4IEBAIHZvaWQgc2tsX3BpcGVfZGRiX2dldF9od19zdGF0 ZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKIAogdm9pZCBza2xfZGRiX2dldF9od19zdGF0ZShz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7Ci0JZGV2X3ByaXYtPmVuYWJsZWRf ZGJ1Zl9zbGljZXNfbWFzayA9Ci0JCQkJaW50ZWxfZW5hYmxlZF9kYnVmX3NsaWNlc19tYXNrKGRl dl9wcml2KTsKKwlkZXZfcHJpdi0+ZGJ1Zi5lbmFibGVkX3NsaWNlcyA9CisJCWludGVsX2VuYWJs ZWRfZGJ1Zl9zbGljZXNfbWFzayhkZXZfcHJpdik7CiB9CiAKIC8qCkBAIC00NTQ2LDYgKzQ1NTMs NyBAQCBza2xfYWxsb2NhdGVfcGlwZV9kZGIoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNf c3RhdGUpCiAJdTY0IHV2X3BsYW5lX2RhdGFfcmF0ZVtJOTE1X01BWF9QTEFORVNdID0ge307CiAJ dTMyIGJsb2NrczsKIAlpbnQgbGV2ZWw7CisJaW50IHJldDsKIAogCS8qIENsZWFyIHRoZSBwYXJ0 aXRpb25pbmcgZm9yIGRpc2FibGVkIHBsYW5lcy4gKi8KIAltZW1zZXQoY3J0Y19zdGF0ZS0+d20u c2tsLnBsYW5lX2RkYl95LCAwLCBzaXplb2YoY3J0Y19zdGF0ZS0+d20uc2tsLnBsYW5lX2RkYl95 KSk7CkBAIC00NTY3LDggKzQ1NzUsMTIgQEAgc2tsX2FsbG9jYXRlX3BpcGVfZGRiKHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQogCQkJCQkJCSB1dl9wbGFuZV9kYXRhX3JhdGUp OwogCiAKLQlza2xfZGRiX2dldF9waXBlX2FsbG9jYXRpb25fbGltaXRzKGRldl9wcml2LCBjcnRj X3N0YXRlLCB0b3RhbF9kYXRhX3JhdGUsCi0JCQkJCSAgIGFsbG9jLCAmbnVtX2FjdGl2ZSk7CisJ cmV0ID0gc2tsX2RkYl9nZXRfcGlwZV9hbGxvY2F0aW9uX2xpbWl0cyhkZXZfcHJpdiwgY3J0Y19z dGF0ZSwKKwkJCQkJCSB0b3RhbF9kYXRhX3JhdGUsCisJCQkJCQkgYWxsb2MsICZudW1fYWN0aXZl KTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCiAJYWxsb2Nfc2l6ZSA9IHNrbF9kZGJfZW50 cnlfc2l6ZShhbGxvYyk7CiAJaWYgKGFsbG9jX3NpemUgPT0gMCkKIAkJcmV0dXJuIDA7CkBAIC01 NDUxLDE0ICs1NDYzLDExIEBAIHNrbF9kZGJfYWRkX2FmZmVjdGVkX3BsYW5lcyhjb25zdCBzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUsCiBzdGF0aWMgaW50CiBza2xfY29t cHV0ZV9kZGIoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUpCiB7Ci0Jc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShzdGF0ZS0+YmFzZS5kZXYpOwogCXN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZTsKIAlzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqbmV3X2NydGNfc3RhdGU7CiAJc3RydWN0IGludGVsX2NydGMgKmNydGM7CiAJaW50 IHJldCwgaTsKIAotCXN0YXRlLT5lbmFibGVkX2RidWZfc2xpY2VzX21hc2sgPSBkZXZfcHJpdi0+ ZW5hYmxlZF9kYnVmX3NsaWNlc19tYXNrOwotCiAJZm9yX2VhY2hfb2xkbmV3X2ludGVsX2NydGNf aW5fc3RhdGUoc3RhdGUsIGNydGMsIG9sZF9jcnRjX3N0YXRlLAogCQkJCQkgICAgbmV3X2NydGNf c3RhdGUsIGkpIHsKIAkJcmV0ID0gc2tsX2FsbG9jYXRlX3BpcGVfZGRiKG5ld19jcnRjX3N0YXRl KTsKQEAgLTU1OTgsNyArNTYwNyw4IEBAIHNrbF9wcmludF93bV9jaGFuZ2VzKHN0cnVjdCBpbnRl bF9hdG9taWNfc3RhdGUgKnN0YXRlKQogCX0KIH0KIAotc3RhdGljIGludCBpbnRlbF9hZGRfYWxs X3BpcGVzKHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlKQorc3RhdGljIGludCBpbnRl bF9hZGRfYWZmZWN0ZWRfcGlwZXMoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUsCisJ CQkJICAgIHU4IHBpcGVfbWFzaykKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSB0b19pOTE1KHN0YXRlLT5iYXNlLmRldik7CiAJc3RydWN0IGludGVsX2NydGMgKmNydGM7 CkBAIC01NjA2LDYgKzU2MTYsOSBAQCBzdGF0aWMgaW50IGludGVsX2FkZF9hbGxfcGlwZXMoc3Ry dWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUpCiAJZm9yX2VhY2hfaW50ZWxfY3J0YygmZGV2 X3ByaXYtPmRybSwgY3J0YykgewogCQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0 ZTsKIAorCQlpZiAoKHBpcGVfbWFzayAmIEJJVChjcnRjLT5waXBlKSkgPT0gMCkKKwkJCWNvbnRp bnVlOworCiAJCWNydGNfc3RhdGUgPSBpbnRlbF9hdG9taWNfZ2V0X2NydGNfc3RhdGUoJnN0YXRl LT5iYXNlLCBjcnRjKTsKIAkJaWYgKElTX0VSUihjcnRjX3N0YXRlKSkKIAkJCXJldHVybiBQVFJf RVJSKGNydGNfc3RhdGUpOwpAQCAtNTYxOCw0OSArNTYzMSw1NCBAQCBzdGF0aWMgaW50CiBza2xf ZGRiX2FkZF9hZmZlY3RlZF9waXBlcyhzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSkK IHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHN0YXRlLT5i YXNlLmRldik7Ci0JaW50IHJldDsKKwlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0 ZTsKKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YzsKKwlpbnQgaSwgcmV0OwogCi0JLyoKLQkgKiBJ ZiB0aGlzIGlzIG91ciBmaXJzdCBhdG9taWMgdXBkYXRlIGZvbGxvd2luZyBoYXJkd2FyZSByZWFk b3V0LAotCSAqIHdlIGNhbid0IHRydXN0IHRoZSBEREIgdGhhdCB0aGUgQklPUyBwcm9ncmFtbWVk IGZvciB1cy4gIExldCdzCi0JICogcHJldGVuZCB0aGF0IGFsbCBwaXBlcyBzd2l0Y2hlZCBhY3Rp dmUgc3RhdHVzIHNvIHRoYXQgd2UnbGwKLQkgKiBlbnN1cmUgYSBmdWxsIEREQiByZWNvbXB1dGUu Ci0JICovCiAJaWYgKGRldl9wcml2LT53bS5kaXN0cnVzdF9iaW9zX3dtKSB7Ci0JCXJldCA9IGRy bV9tb2Rlc2V0X2xvY2soJmRldl9wcml2LT5kcm0ubW9kZV9jb25maWcuY29ubmVjdGlvbl9tdXRl eCwKLQkJCQkgICAgICAgc3RhdGUtPmJhc2UuYWNxdWlyZV9jdHgpOwotCQlpZiAocmV0KQotCQkJ cmV0dXJuIHJldDsKLQotCQlzdGF0ZS0+YWN0aXZlX3BpcGVfY2hhbmdlcyA9IElOVEVMX0lORk8o ZGV2X3ByaXYpLT5waXBlX21hc2s7Ci0KIAkJLyoKLQkJICogV2UgdXN1YWxseSBvbmx5IGluaXRp YWxpemUgc3RhdGUtPmFjdGl2ZV9waXBlcyBpZiB3ZQotCQkgKiB3ZSdyZSBkb2luZyBhIG1vZGVz ZXQ7IG1ha2Ugc3VyZSB0aGlzIGZpZWxkIGlzIGFsd2F5cwotCQkgKiBpbml0aWFsaXplZCBkdXJp bmcgdGhlIHNhbml0aXphdGlvbiBwcm9jZXNzIHRoYXQgaGFwcGVucwotCQkgKiBvbiB0aGUgZmly c3QgY29tbWl0IHRvby4KKwkJICogc2tsX2RkYl9nZXRfcGlwZV9hbGxvY2F0aW9uX2xpbWl0cygp IGN1cnJlbnRseSByZXF1aXJlcworCQkgKiBhbGwgYWN0aXZlIHBpcGVzIHRvIGJlIGluY2x1ZGVk IGluIHRoZSBzdGF0ZSBzbyB0aGF0CisJCSAqIGl0IGNhbiByZWRpc3RyaWJ1dGUgdGhlIGRidWYg YW1vbmcgdGhlbSwgYW5kIGl0IHJlYWxseQorCQkgKiB3YW50cyB0byByZWNvbXB1dGUgdGhpbmdz IHdoZW4gZGlzdHJ1c3RfYmlvc193bSBpcyBzZXQKKwkJICogc28gd2UgYWRkIGFsbCB0aGUgcGlw ZXMgdG8gdGhlIHN0YXRlLgogCQkgKi8KLQkJaWYgKCFzdGF0ZS0+bW9kZXNldCkKLQkJCXN0YXRl LT5hY3RpdmVfcGlwZXMgPSBkZXZfcHJpdi0+YWN0aXZlX3BpcGVzOworCQlyZXQgPSBpbnRlbF9h ZGRfYWZmZWN0ZWRfcGlwZXMoc3RhdGUsIH4wKTsKKwkJaWYgKHJldCkKKwkJCXJldHVybiByZXQ7 CiAJfQogCi0JLyoKLQkgKiBJZiB0aGUgbW9kZXNldCBjaGFuZ2VzIHdoaWNoIENSVEMncyBhcmUg YWN0aXZlLCB3ZSBuZWVkIHRvCi0JICogcmVjb21wdXRlIHRoZSBEREIgYWxsb2NhdGlvbiBmb3Ig KmFsbCogYWN0aXZlIHBpcGVzLCBldmVuCi0JICogdGhvc2UgdGhhdCB3ZXJlbid0IG90aGVyd2lz ZSBiZWluZyBtb2RpZmllZCBpbiBhbnkgd2F5IGJ5IHRoaXMKLQkgKiBhdG9taWMgY29tbWl0LiAg RHVlIHRvIHRoZSBzaHJpbmtpbmcgb2YgdGhlIHBlci1waXBlIGFsbG9jYXRpb25zCi0JICogd2hl biBuZXcgYWN0aXZlIENSVEMncyBhcmUgYWRkZWQsIGl0J3MgcG9zc2libGUgZm9yIGEgcGlwZSB0 aGF0Ci0JICogd2Ugd2VyZSBhbHJlYWR5IHVzaW5nIGFuZCBhcmVuJ3QgY2hhbmdpbmcgYXQgYWxs IGhlcmUgdG8gc3VkZGVubHkKLQkgKiBiZWNvbWUgaW52YWxpZCBpZiBpdHMgRERCIG5lZWRzIGV4 Y2VlZHMgaXRzIG5ldyBhbGxvY2F0aW9uLgotCSAqCi0JICogTm90ZSB0aGF0IGlmIHdlIHdpbmQg dXAgZG9pbmcgYSBmdWxsIEREQiByZWNvbXB1dGUsIHdlIGNhbid0IGxldAotCSAqIGFueSBvdGhl ciBkaXNwbGF5IHVwZGF0ZXMgcmFjZSB3aXRoIHRoaXMgdHJhbnNhY3Rpb24sIHNvIHdlIG5lZWQK LQkgKiB0byBncmFiIHRoZSBsb2NrIG9uICphbGwqIENSVEMncy4KLQkgKi8KLQlpZiAoc3RhdGUt PmFjdGl2ZV9waXBlX2NoYW5nZXMgfHwgc3RhdGUtPm1vZGVzZXQpIHsKLQkJcmV0ID0gaW50ZWxf YWRkX2FsbF9waXBlcyhzdGF0ZSk7CisJZm9yX2VhY2hfbmV3X2ludGVsX2NydGNfaW5fc3RhdGUo c3RhdGUsIGNydGMsIGNydGNfc3RhdGUsIGkpIHsKKwkJc3RydWN0IGludGVsX2RidWZfc3RhdGUg Km5ld19kYnVmX3N0YXRlOworCQljb25zdCBzdHJ1Y3QgaW50ZWxfZGJ1Zl9zdGF0ZSAqb2xkX2Ri dWZfc3RhdGU7CisKKwkJbmV3X2RidWZfc3RhdGUgPSBpbnRlbF9hdG9taWNfZ2V0X2RidWZfc3Rh dGUoc3RhdGUpOworCQlpZiAoSVNfRVJSKG5ld19kYnVmX3N0YXRlKSkKKwkJCXJldHVybiByZXQ7 CisKKwkJb2xkX2RidWZfc3RhdGUgPSBpbnRlbF9hdG9taWNfZ2V0X29sZF9kYnVmX3N0YXRlKHN0 YXRlKTsKKworCQluZXdfZGJ1Zl9zdGF0ZS0+YWN0aXZlX3BpcGVzID0KKwkJCWludGVsX2NhbGNf YWN0aXZlX3BpcGVzKHN0YXRlLCBvbGRfZGJ1Zl9zdGF0ZS0+YWN0aXZlX3BpcGVzKTsKKworCQlp ZiAob2xkX2RidWZfc3RhdGUtPmFjdGl2ZV9waXBlcyA9PSBuZXdfZGJ1Zl9zdGF0ZS0+YWN0aXZl X3BpcGVzKQorCQkJYnJlYWs7CisKKwkJcmV0ID0gaW50ZWxfYXRvbWljX2xvY2tfZ2xvYmFsX3N0 YXRlKCZuZXdfZGJ1Zl9zdGF0ZS0+YmFzZSk7CisJCWlmIChyZXQpCisJCQlyZXR1cm4gcmV0Owor CisJCS8qCisJCSAqIHNrbF9kZGJfZ2V0X3BpcGVfYWxsb2NhdGlvbl9saW1pdHMoKSBjdXJyZW50 bHkgcmVxdWlyZXMKKwkJICogYWxsIGFjdGl2ZSBwaXBlcyB0byBiZSBpbmNsdWRlZCBpbiB0aGUg c3RhdGUgc28gdGhhdAorCQkgKiBpdCBjYW4gcmVkaXN0cmlidXRlIHRoZSBkYnVmIGFtb25nIHRo ZW0uCisJCSAqLworCQlyZXQgPSBpbnRlbF9hZGRfYWZmZWN0ZWRfcGlwZXMoc3RhdGUsCisJCQkJ CSAgICAgICBuZXdfZGJ1Zl9zdGF0ZS0+YWN0aXZlX3BpcGVzKTsKIAkJaWYgKHJldCkKIAkJCXJl dHVybiByZXQ7CisKKwkJYnJlYWs7CiAJfQogCiAJcmV0dXJuIDA7CkBAIC03NDkzLDMgKzc1MTEs NTIgQEAgdm9pZCBpbnRlbF9wbV9zZXR1cChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCiAJZGV2X3ByaXYtPnJ1bnRpbWVfcG0uc3VzcGVuZGVkID0gZmFsc2U7CiAJYXRvbWljX3Nl dCgmZGV2X3ByaXYtPnJ1bnRpbWVfcG0ud2FrZXJlZl9jb3VudCwgMCk7CiB9CisKK3N0YXRpYyBz dHJ1Y3QgaW50ZWxfZ2xvYmFsX3N0YXRlICppbnRlbF9kYnVmX2R1cGxpY2F0ZV9zdGF0ZShzdHJ1 Y3QgaW50ZWxfZ2xvYmFsX29iaiAqb2JqKQoreworCXN0cnVjdCBpbnRlbF9kYnVmX3N0YXRlICpk YnVmX3N0YXRlOworCisJZGJ1Zl9zdGF0ZSA9IGttZW1kdXAob2JqLT5zdGF0ZSwgc2l6ZW9mKCpk YnVmX3N0YXRlKSwgR0ZQX0tFUk5FTCk7CisJaWYgKCFkYnVmX3N0YXRlKQorCQlyZXR1cm4gTlVM TDsKKworCXJldHVybiAmZGJ1Zl9zdGF0ZS0+YmFzZTsKK30KKworc3RhdGljIHZvaWQgaW50ZWxf ZGJ1Zl9kZXN0cm95X3N0YXRlKHN0cnVjdCBpbnRlbF9nbG9iYWxfb2JqICpvYmosCisJCQkJICAg ICBzdHJ1Y3QgaW50ZWxfZ2xvYmFsX3N0YXRlICpzdGF0ZSkKK3sKKwlrZnJlZShzdGF0ZSk7Cit9 CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZWxfZ2xvYmFsX3N0YXRlX2Z1bmNzIGludGVsX2Ri dWZfZnVuY3MgPSB7CisJLmF0b21pY19kdXBsaWNhdGVfc3RhdGUgPSBpbnRlbF9kYnVmX2R1cGxp Y2F0ZV9zdGF0ZSwKKwkuYXRvbWljX2Rlc3Ryb3lfc3RhdGUgPSBpbnRlbF9kYnVmX2Rlc3Ryb3lf c3RhdGUsCit9OworCitzdHJ1Y3QgaW50ZWxfZGJ1Zl9zdGF0ZSAqCitpbnRlbF9hdG9taWNfZ2V0 X2RidWZfc3RhdGUoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUpCit7CisJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShzdGF0ZS0+YmFzZS5kZXYpOwor CXN0cnVjdCBpbnRlbF9nbG9iYWxfc3RhdGUgKmRidWZfc3RhdGU7CisKKwlkYnVmX3N0YXRlID0g aW50ZWxfYXRvbWljX2dldF9nbG9iYWxfb2JqX3N0YXRlKHN0YXRlLCAmZGV2X3ByaXYtPmRidWYu b2JqKTsKKwlpZiAoSVNfRVJSKGRidWZfc3RhdGUpKQorCQlyZXR1cm4gRVJSX0NBU1QoZGJ1Zl9z dGF0ZSk7CisKKwlyZXR1cm4gdG9faW50ZWxfZGJ1Zl9zdGF0ZShkYnVmX3N0YXRlKTsKK30KKwor aW50IGludGVsX2RidWZfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCit7 CisJc3RydWN0IGludGVsX2RidWZfc3RhdGUgKmRidWZfc3RhdGU7CisKKwlkYnVmX3N0YXRlID0g a3phbGxvYyhzaXplb2YoKmRidWZfc3RhdGUpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIWRidWZfc3Rh dGUpCisJCXJldHVybiAtRU5PTUVNOworCisJaW50ZWxfYXRvbWljX2dsb2JhbF9vYmpfaW5pdChk ZXZfcHJpdiwgJmRldl9wcml2LT5kYnVmLm9iaiwKKwkJCQkgICAgICZkYnVmX3N0YXRlLT5iYXNl LCAmaW50ZWxfZGJ1Zl9mdW5jcyk7CisKKwlyZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9w bS5oCmluZGV4IGQ2MGE4NTQyMWM1YS4uZmFkZjdjYmM0NGM0IDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3BtLmgKQEAgLTgsNiArOCw4IEBACiAKICNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgogCisjaW5j bHVkZSAiZGlzcGxheS9pbnRlbF9nbG9iYWxfc3RhdGUuaCIKKwogI2luY2x1ZGUgImk5MTVfcmVn LmgiCiAKIHN0cnVjdCBkcm1fZGV2aWNlOwpAQCAtNTksNCArNjEsMjQgQEAgdm9pZCBpbnRlbF9l bmFibGVfaXBjKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CiAKIGJvb2wgaW50 ZWxfc2V0X21lbW9yeV9jeHNyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgYm9v bCBlbmFibGUpOwogCitzdHJ1Y3QgaW50ZWxfZGJ1Zl9zdGF0ZSB7CisJc3RydWN0IGludGVsX2ds b2JhbF9zdGF0ZSBiYXNlOworCisJdTggZW5hYmxlZF9zbGljZXM7CisJdTggYWN0aXZlX3BpcGVz OworfTsKKworaW50IGludGVsX2RidWZfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpOworCitzdHJ1Y3QgaW50ZWxfZGJ1Zl9zdGF0ZSAqCitpbnRlbF9hdG9taWNfZ2V0X2Ri dWZfc3RhdGUoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUpOworCisjZGVmaW5lIHRv X2ludGVsX2RidWZfc3RhdGUoeCkgY29udGFpbmVyX29mKCh4KSwgc3RydWN0IGludGVsX2RidWZf c3RhdGUsIGJhc2UpCisjZGVmaW5lIGludGVsX2F0b21pY19nZXRfb2xkX2RidWZfc3RhdGUoc3Rh dGUpIFwKKwl0b19pbnRlbF9kYnVmX3N0YXRlKGludGVsX2F0b21pY19nZXRfb2xkX2dsb2JhbF9v Ympfc3RhdGUoc3RhdGUsICZ0b19pOTE1KHN0YXRlLT5iYXNlLmRldiktPmRidWYub2JqKSkKKyNk ZWZpbmUgaW50ZWxfYXRvbWljX2dldF9uZXdfZGJ1Zl9zdGF0ZShzdGF0ZSkgXAorCXRvX2ludGVs X2RidWZfc3RhdGUoaW50ZWxfYXRvbWljX2dldF9uZXdfZ2xvYmFsX29ial9zdGF0ZShzdGF0ZSwg JnRvX2k5MTUoc3RhdGUtPmJhc2UuZGV2KS0+ZGJ1Zi5vYmopKQorCitpbnQgaW50ZWxfZGJ1Zl9p bml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CisKICNlbmRpZiAvKiBfX0lO VEVMX1BNX0hfXyAqLwotLSAKMi4yNC4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9pbnRlbC1nZngK