From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: [PATCH] drm/i915: Allow control of PSR at runtime through debugfs. Date: Wed, 14 Mar 2018 16:58:32 +0100 Message-ID: <20180314155832.12957-1-maarten.lankhorst@linux.intel.com> References: <20180314114658.61861-1-maarten.lankhorst@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mblankhorst.nl (mblankhorst.nl [IPv6:2a02:2308::216:3eff:fe92:dfa3]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5F1C46E62D for ; Wed, 14 Mar 2018 15:58:35 +0000 (UTC) In-Reply-To: <20180314114658.61861-1-maarten.lankhorst@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Q3VycmVudGx5IHRlc3RzIG1vZGlmeSBpOTE1LmVuYWJsZV9wc3IgYW5kIHRoZW4gZG8gYSBtb2Rl c2V0IGN5Y2xlCnRvIGNoYW5nZSBQU1IuIFdlIGNhbiB3cml0ZSBhIHZhbHVlIHRvIGk5MTVfZWRw X3Bzcl9zdGF0dXMgdG8gZm9yY2UKYSBjZXJ0YWluIHZhbHVlIHdpdGhvdXQgYSBtb2Rlc2V0LgoK VG8gcmV0YWluIGNvbXBhdGliaWxpdHkgd2l0aCBvbGRlciB1c2Vyc3BhY2UsIHdlIGFsc28gc3Rp bGwgYWxsb3cKdGhlIG92ZXJyaWRlIHRocm91Z2ggdGhlIG1vZHVsZSBwYXJhbWV0ZXIsIGFuZCBh ZGQgc29tZSB0cmFja2luZwp0byBjaGVjayB3aGV0aGVyIGEgZGVidWdmcyBtb2RlIGlzIHNwZWNp ZmllZC4KClNpZ25lZC1vZmYtYnk6IE1hYXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3Jz dEBsaW51eC5pbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2Zz LmMgfCAxOTMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCiBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICB8ICAgNyArKwogZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHJ2LmggICAgfCAgIDcgKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bzci5j ICAgIHwgMTU1ICsrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tCiA0IGZpbGVzIGNoYW5nZWQs IDMwMSBpbnNlcnRpb25zKCspLCA2MSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZGVidWdmcy5jCmluZGV4IDU3NGZjZjIzNDAwNy4uNGFiZjgwMzRkNWM3IDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2RlYnVnZnMuYwpAQCAtMjU0NiwxNiArMjU0NiwxMyBAQCBzdGF0aWMgY29uc3Qg Y2hhciAqcHNyMl9saXZlX3N0YXR1cyh1MzIgdmFsKQogCiBzdGF0aWMgaW50IGk5MTVfZWRwX3Bz cl9zdGF0dXMoc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQogewotCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IG5vZGVfdG9faTkxNShtLT5wcml2YXRlKTsKKwlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBtLT5wcml2YXRlOwogCXUzMiBwc3JwZXJm ID0gMDsKIAl1MzIgc3RhdFszXTsKIAllbnVtIHBpcGUgcGlwZTsKIAlib29sIGVuYWJsZWQgPSBm YWxzZTsKIAlib29sIHNpbmtfc3VwcG9ydDsKIAotCWlmICghSEFTX1BTUihkZXZfcHJpdikpCi0J CXJldHVybiAtRU5PREVWOwotCiAJc2lua19zdXBwb3J0ID0gZGV2X3ByaXYtPnBzci5zaW5rX3N1 cHBvcnQ7CiAJc2VxX3ByaW50ZihtLCAiU2lua19TdXBwb3J0OiAlc1xuIiwgeWVzbm8oc2lua19z dXBwb3J0KSk7CiAJaWYgKCFzaW5rX3N1cHBvcnQpCkBAIC0yNjMxLDYgKzI2MjgsMTkyIEBAIHN0 YXRpYyBpbnQgaTkxNV9lZHBfcHNyX3N0YXR1cyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRh dGEpCiAJcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBib29sIHBzcl9nbG9iYWxfZW5hYmxlZChlbnVt IGk5MTVfcHNyX2RlYnVnZnNfbW9kZSBtb2RlKQoreworCXN3aXRjaCAobW9kZSkgeworCWNhc2Ug UFNSX0RFQlVHRlNfTU9ERV9ERUZBVUxUOiByZXR1cm4gaTkxNV9tb2RwYXJhbXMuZW5hYmxlX3Bz cjsKKwljYXNlIFBTUl9ERUJVR0ZTX01PREVfRElTQUJMRUQ6IHJldHVybiBmYWxzZTsKKwljYXNl IFBTUl9ERUJVR0ZTX01PREVfRU5BQkxFRDogcmV0dXJuIHRydWU7CisJfQorCisJLyogR0NDIGlz IHN0dXBpZC4gKi8KKwlyZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyBib29sIHBzcl9uZWVkc19k aXNhYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKKwkJCSAgICAgIGJvb2wg ZW5hYmxlLCBib29sIGxpbmtfc3RhbmRieSkKK3sKKwlpZiAoIWRldl9wcml2LT5wc3IuaHdfY29u ZmlndXJlZCkKKwkJcmV0dXJuIGZhbHNlOworCisJaWYgKCFlbmFibGUpCisJCXJldHVybiB0cnVl OworCisJaWYgKGRldl9wcml2LT5wc3IubGlua19zdGFuZGJ5ICE9IGxpbmtfc3RhbmRieSkKKwkJ cmV0dXJuIHRydWU7CisKKwlyZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyBib29sIHBzcl9uZWVk c19lbmFibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAorCQkJICAgICBib29s IGVuYWJsZSkKK3sKKwlyZXR1cm4gZW5hYmxlICYmICFkZXZfcHJpdi0+cHNyLmh3X2NvbmZpZ3Vy ZWQ7Cit9CisKK3N0YXRpYyBpbnQgX19pOTE1X2VkcF9wc3Jfd3JpdGUoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LAorCQkJCXN0cnVjdCBkcm1fbW9kZXNldF9hY3F1aXJlX2N0eCAq Y3R4LAorCQkJCWVudW0gaTkxNV9wc3JfZGVidWdmc19tb2RlIG1vZGUsCisJCQkJYm9vbCBsaW5r X3N0YW5kYnkpCit7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9ICZkZXZfcHJpdi0+ZHJtOwor CXN0cnVjdCBkcm1fY29ubmVjdG9yX2xpc3RfaXRlciBjb25uX2l0ZXI7CisJc3RydWN0IGRybV9j b25uZWN0b3IgKmNvbm5lY3RvcjsKKwlzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXI7CisJc3Ry dWN0IGRybV9jcnRjICpjcnRjOworCWludCByZXQ7CisJYm9vbCBuZWVkc19lbmFibGUsIGZvdW5k LCBlbmFibGU7CisKKwlyZXQgPSBkcm1fbW9kZXNldF9sb2NrKCZkZXYtPm1vZGVfY29uZmlnLmNv bm5lY3Rpb25fbXV0ZXgsIGN0eCk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCW11dGV4 X2xvY2soJmRldl9wcml2LT5wc3IubG9jayk7CityZXRyeToKKwlpZiAoIWRldl9wcml2LT5wc3Iu ZW5hYmxlZCkgeworCQlkZXZfcHJpdi0+cHNyLmRlYnVnZnNfbW9kZSA9IG1vZGU7CisJCWRldl9w cml2LT5wc3IubGlua19zdGFuZGJ5ID0gbGlua19zdGFuZGJ5OworCQlnb3RvIGVuZDsKKwl9CisJ ZW5jb2RlciA9ICZkcF90b19kaWdfcG9ydChkZXZfcHJpdi0+cHNyLmVuYWJsZWQpLT5iYXNlLmJh c2U7CisJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cHNyLmxvY2spOworCisJZm91bmQgPSBmYWxz ZTsKKwlkcm1fY29ubmVjdG9yX2xpc3RfaXRlcl9iZWdpbihkZXYsICZjb25uX2l0ZXIpOworCWRy bV9mb3JfZWFjaF9jb25uZWN0b3JfaXRlcihjb25uZWN0b3IsICZjb25uX2l0ZXIpCisJCWlmIChj b25uZWN0b3ItPnN0YXRlLT5iZXN0X2VuY29kZXIgPT0gZW5jb2RlcikgeworCQkJZm91bmQgPSB0 cnVlOworCQkJYnJlYWs7CisJCX0KKwlkcm1fY29ubmVjdG9yX2xpc3RfaXRlcl9lbmQoJmNvbm5f aXRlcik7CisKKwlpZiAoV0FSTl9PTighZm91bmQpKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWNy dGMgPSBjb25uZWN0b3ItPnN0YXRlLT5jcnRjOworCXJldCA9IGRybV9tb2Rlc2V0X2xvY2soJmNy dGMtPm11dGV4LCBjdHgpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwltdXRleF9sb2Nr KCZkZXZfcHJpdi0+cHNyLmxvY2spOworCWVuYWJsZSA9IHBzcl9nbG9iYWxfZW5hYmxlZChtb2Rl KTsKKworCWlmIChkZXZfcHJpdi0+cHNyLmVuYWJsZWQgIT0gZW5jX3RvX2ludGVsX2RwKGVuY29k ZXIpKQorCQlnb3RvIHJldHJ5OworCisJaWYgKChjb25uZWN0b3ItPnN0YXRlLT5jb21taXQgJiYg IXRyeV93YWl0X2Zvcl9jb21wbGV0aW9uKCZjb25uZWN0b3ItPnN0YXRlLT5jb21taXQtPmh3X2Rv bmUpKSB8fAorCSAgICAoY3J0Yy0+c3RhdGUtPmNvbW1pdCAmJiAhdHJ5X3dhaXRfZm9yX2NvbXBs ZXRpb24oJmNydGMtPnN0YXRlLT5jb21taXQtPmh3X2RvbmUpKSkgeworCQlyZXQgPSAtRUJVU1k7 CisJCWdvdG8gZW5kOworCX0KKworCWlmIChwc3JfbmVlZHNfZGlzYWJsZShkZXZfcHJpdiwgZW5h YmxlLCBsaW5rX3N0YW5kYnkpKQorCQlfX2ludGVsX3Bzcl9kaXNhYmxlKGRldl9wcml2LCBkZXZf cHJpdi0+cHNyLmVuYWJsZWQsIHRvX2ludGVsX2NydGNfc3RhdGUoY3J0Yy0+c3RhdGUpKTsKKwor CW5lZWRzX2VuYWJsZSA9IHBzcl9uZWVkc19lbmFibGUoZGV2X3ByaXYsIGVuYWJsZSk7CisJZGV2 X3ByaXYtPnBzci5kZWJ1Z2ZzX21vZGUgPSBtb2RlOworCWRldl9wcml2LT5wc3IubGlua19zdGFu ZGJ5ID0gbGlua19zdGFuZGJ5OworCisJaWYgKG5lZWRzX2VuYWJsZSkKKwkJX19pbnRlbF9wc3Jf ZW5hYmxlKGRldl9wcml2LCBkZXZfcHJpdi0+cHNyLmVuYWJsZWQsIHRvX2ludGVsX2NydGNfc3Rh dGUoY3J0Yy0+c3RhdGUpKTsKKworZW5kOgorCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBzci5s b2NrKTsKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgc3NpemVfdCBpOTE1X2VkcF9wc3Jfd3Jp dGUoc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgX191c2VyICp1YnVmLAorCQkJCSAgc2l6 ZV90IGxlbiwgbG9mZl90ICpvZmZwKQoreworCXN0cnVjdCBzZXFfZmlsZSAqbSA9IGZpbGUtPnBy aXZhdGVfZGF0YTsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBtLT5wcml2 YXRlOworCXN0cnVjdCBkcm1fbW9kZXNldF9hY3F1aXJlX2N0eCBjdHg7CisJaW50IHJldCwgdmFs OworCWJvb2wgbGlua19zdGFuZGJ5OworCWVudW0gaTkxNV9wc3JfZGVidWdmc19tb2RlIG1vZGU7 CisKKwlpZiAoIWRldl9wcml2LT5wc3Iuc2lua19zdXBwb3J0KQorCQlyZXR1cm4gLUVOT0RFVjsK KworCXJldCA9IGtzdHJ0b2ludF9mcm9tX3VzZXIodWJ1ZiwgbGVuLCAxMCwgJnZhbCk7CisJaWYg KHJldCA8IDApIHsKKwkJYm9vbCBlbmFibGU7CisJCXJldCA9IGtzdHJ0b2Jvb2xfZnJvbV91c2Vy KHVidWYsIGxlbiwgJmVuYWJsZSk7CisKKwkJaWYgKHJldCA8IDApCisJCQlyZXR1cm4gcmV0Owor CisJCXZhbCA9IGVuYWJsZTsKKwl9CisKKwlzd2l0Y2ggKHZhbCkgeworCWNhc2UgLTE6CisJY2Fz ZSAwOgorCWNhc2UgMToKKwkJbGlua19zdGFuZGJ5ID0gaW50ZWxfcHNyX2RlZmF1bHRfbGlua19z dGFuZGJ5KGRldl9wcml2KTsKKwkJbW9kZSA9IHZhbDsKKwkJYnJlYWs7CisJY2FzZSAyOgorCQlt b2RlID0gUFNSX0RFQlVHRlNfTU9ERV9FTkFCTEVEOworCQlsaW5rX3N0YW5kYnkgPSB0cnVlOwor CQlicmVhazsKKwljYXNlIDM6CisJCW1vZGUgPSBQU1JfREVCVUdGU19NT0RFX0VOQUJMRUQ7CisJ CWxpbmtfc3RhbmRieSA9IGZhbHNlOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlyZXR1cm4gLUVJ TlZBTDsKKwl9CisKKwlpbnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7CisKKwlkcm1fbW9k ZXNldF9hY3F1aXJlX2luaXQoJmN0eCwgRFJNX01PREVTRVRfQUNRVUlSRV9JTlRFUlJVUFRJQkxF KTsKKworcmV0cnk6CisJcmV0ID0gX19pOTE1X2VkcF9wc3Jfd3JpdGUoZGV2X3ByaXYsICZjdHgs IG1vZGUsIGxpbmtfc3RhbmRieSk7CisJaWYgKHJldCA9PSAtRUJVU1kpIHsKKwkJcmV0ID0gZHJt X21vZGVzZXRfYmFja29mZigmY3R4KTsKKwkJaWYgKCFyZXQpCisJCQlnb3RvIHJldHJ5OworCX0K KworCWRybV9tb2Rlc2V0X2Ryb3BfbG9ja3MoJmN0eCk7CisJZHJtX21vZGVzZXRfYWNxdWlyZV9m aW5pKCZjdHgpOworCisJaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYpOworCisJcmV0dXJu IHJldCA/OiBsZW47Cit9CisKK3N0YXRpYyBpbnQgaTkxNV9lZHBfcHNyX29wZW4oc3RydWN0IGlu b2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gaW5vZGUtPmlfcHJpdmF0ZTsKKworCWlmICghSEFTX1BTUihkZXZfcHJp dikpCisJCXJldHVybiAtRU5PREVWOworCisJcmV0dXJuIHNpbmdsZV9vcGVuKGZpbGUsIGk5MTVf ZWRwX3Bzcl9zdGF0dXMsIGRldl9wcml2KTsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxl X29wZXJhdGlvbnMgaTkxNV9lZHBfcHNyX29wcyA9IHsKKwkub3duZXIgPSBUSElTX01PRFVMRSwK Kwkub3BlbiA9IGk5MTVfZWRwX3Bzcl9vcGVuLAorCS5yZWFkID0gc2VxX3JlYWQsCisJLmxsc2Vl ayA9IHNlcV9sc2VlaywKKwkucmVsZWFzZSA9IHNpbmdsZV9yZWxlYXNlLAorCS53cml0ZSA9IGk5 MTVfZWRwX3Bzcl93cml0ZQorfTsKKwogc3RhdGljIGludCBpOTE1X3NpbmtfY3JjKHN0cnVjdCBz ZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSBub2RlX3RvX2k5MTUobS0+cHJpdmF0ZSk7CkBAIC00NzM0LDcgKzQ5MTcsNiBAQCBz dGF0aWMgY29uc3Qgc3RydWN0IGRybV9pbmZvX2xpc3QgaTkxNV9kZWJ1Z2ZzX2xpc3RbXSA9IHsK IAl7Imk5MTVfc3dpenpsZV9pbmZvIiwgaTkxNV9zd2l6emxlX2luZm8sIDB9LAogCXsiaTkxNV9w cGd0dF9pbmZvIiwgaTkxNV9wcGd0dF9pbmZvLCAwfSwKIAl7Imk5MTVfbGxjIiwgaTkxNV9sbGMs IDB9LAotCXsiaTkxNV9lZHBfcHNyX3N0YXR1cyIsIGk5MTVfZWRwX3Bzcl9zdGF0dXMsIDB9LAog CXsiaTkxNV9zaW5rX2NyY19lRFAxIiwgaTkxNV9zaW5rX2NyYywgMH0sCiAJeyJpOTE1X2VuZXJn eV91SiIsIGk5MTVfZW5lcmd5X3VKLCAwfSwKIAl7Imk5MTVfcnVudGltZV9wbV9zdGF0dXMiLCBp OTE1X3J1bnRpbWVfcG1fc3RhdHVzLCAwfSwKQEAgLTQ3NjEsNiArNDk0Myw3IEBAIHN0YXRpYyBj b25zdCBzdHJ1Y3QgaTkxNV9kZWJ1Z2ZzX2ZpbGVzIHsKIAl7Imk5MTVfd2VkZ2VkIiwgJmk5MTVf d2VkZ2VkX2ZvcHN9LAogCXsiaTkxNV9tYXhfZnJlcSIsICZpOTE1X21heF9mcmVxX2ZvcHN9LAog CXsiaTkxNV9taW5fZnJlcSIsICZpOTE1X21pbl9mcmVxX2ZvcHN9LAorCXsiaTkxNV9lZHBfcHNy X3N0YXR1cyIsICZpOTE1X2VkcF9wc3Jfb3BzfSwKIAl7Imk5MTVfY2FjaGVfc2hhcmluZyIsICZp OTE1X2NhY2hlX3NoYXJpbmdfZm9wc30sCiAJeyJpOTE1X3JpbmdfbWlzc2VkX2lycSIsICZpOTE1 X3JpbmdfbWlzc2VkX2lycV9mb3BzfSwKIAl7Imk5MTVfcmluZ190ZXN0X2lycSIsICZpOTE1X3Jp bmdfdGVzdF9pcnFfZm9wc30sCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAppbmRleCBiMzljNWY2OGVm YjIuLjZiZjFjNmQ0M2Y3YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCkBAIC02MDcsNiArNjA3 LDEzIEBAIHN0cnVjdCBpOTE1X3BzciB7CiAJYm9vbCBjb2xvcmltZXRyeV9zdXBwb3J0OwogCWJv b2wgYWxwbTsKIAlib29sIGhhc19od190cmFja2luZzsKKwlib29sIGh3X2NvbmZpZ3VyZWQ7CisK KwllbnVtIGk5MTVfcHNyX2RlYnVnZnNfbW9kZSB7CisJCVBTUl9ERUJVR0ZTX01PREVfREVGQVVM VCwKKwkJUFNSX0RFQlVHRlNfTU9ERV9ESVNBQkxFRCwKKwkJUFNSX0RFQlVHRlNfTU9ERV9FTkFC TEVECisJfSBkZWJ1Z2ZzX21vZGU7CiAKIAl2b2lkICgqZW5hYmxlX3NvdXJjZSkoc3RydWN0IGlu dGVsX2RwICosCiAJCQkgICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqKTsKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHJ2LmgKaW5kZXggMWYwZThmMWU0NTk0Li5jNDg2MDkwZjRmNTIgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCkBAIC0xODcxLDExICsxODcxLDE4IEBAIGJvb2wgaXNf aGRjcF9zdXBwb3J0ZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBlbnVtIHBv cnQgcG9ydCk7CiAKIC8qIGludGVsX3Bzci5jICovCiAjZGVmaW5lIENBTl9QU1IoZGV2X3ByaXYp IChIQVNfUFNSKGRldl9wcml2KSAmJiBkZXZfcHJpdi0+cHNyLnNpbmtfc3VwcG9ydCkKK2Jvb2wg aW50ZWxfcHNyX2RlZmF1bHRfbGlua19zdGFuZGJ5KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdik7CiB2b2lkIGludGVsX3Bzcl9pbml0X2RwY2Qoc3RydWN0IGludGVsX2RwICppbnRl bF9kcCk7CiB2b2lkIGludGVsX3Bzcl9lbmFibGUoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwK IAkJICAgICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpOwordm9p ZCBfX2ludGVsX3Bzcl9lbmFibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAor CQkJc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKKwkJCWNvbnN0IHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpjcnRjX3N0YXRlKTsKIHZvaWQgaW50ZWxfcHNyX2Rpc2FibGUoc3RydWN0IGludGVs X2RwICppbnRlbF9kcCwKIAkJICAgICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9s ZF9jcnRjX3N0YXRlKTsKK3ZvaWQgX19pbnRlbF9wc3JfZGlzYWJsZShzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkgc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKKwkJCSBj b25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUpOwogdm9pZCBpbnRl bF9wc3JfaW52YWxpZGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQkg IHVuc2lnbmVkIGZyb250YnVmZmVyX2JpdHMsCiAJCQkgIGVudW0gZmJfb3Bfb3JpZ2luIG9yaWdp bik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wc3IuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bzci5jCmluZGV4IDMxN2NiNGExMjY5My4uY2ZjZTU4NjFi OWFkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wc3IuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wc3IuYwpAQCAtNTYsNiArNTYsNDggQEAKICNpbmNs dWRlICJpbnRlbF9kcnYuaCIKICNpbmNsdWRlICJpOTE1X2Rydi5oIgogCitib29sIGludGVsX3Bz cl9kZWZhdWx0X2xpbmtfc3RhbmRieShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp Cit7CisJLyogT3ZlcnJpZGUgbGlua19zdGFuZGJ5IHggbGlua19vZmYgZGVmYXVsdHMgKi8KKwlp ZiAoaTkxNV9tb2RwYXJhbXMuZW5hYmxlX3BzciA9PSAyKSB7CisJCURSTV9ERUJVR19LTVMoIlBT UjogRm9yY2luZyBsaW5rIHN0YW5kYnlcbiIpOworCQlyZXR1cm4gdHJ1ZTsKKwl9CisKKwlpZiAo aTkxNV9tb2RwYXJhbXMuZW5hYmxlX3BzciA9PSAzKSB7CisJCURSTV9ERUJVR19LTVMoIlBTUjog Rm9yY2luZyBtYWluIGxpbmsgb2ZmXG4iKTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKworCS8qIFNl dCBsaW5rX3N0YW5kYnkgeCBsaW5rX29mZiBkZWZhdWx0cyAqLworCWlmIChJU19IQVNXRUxMKGRl dl9wcml2KSB8fCBJU19CUk9BRFdFTEwoZGV2X3ByaXYpKQorCQkvKiBIU1cgYW5kIEJEVyByZXF1 aXJlIHdvcmthcm91bmRzIHRoYXQgd2UgZG9uJ3QgaW1wbGVtZW50LiAqLworCQlyZXR1cm4gZmFs c2U7CisJZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikgfHwgSVNfQ0hFUlJZVklFVyhk ZXZfcHJpdikpCisJCS8qIE9uIFZMViBhbmQgQ0hWIG9ubHkgc3RhbmRieSBtb2RlIGlzIHN1cHBv cnRlZC4gKi8KKwkJcmV0dXJuIHRydWU7CisJZWxzZQorCQkvKiBGb3IgbmV3IHBsYXRmb3JtcyBs ZXQncyByZXNwZWN0IFZCVCBiYWNrIGFnYWluICovCisJCXJldHVybiBkZXZfcHJpdi0+dmJ0LnBz ci5mdWxsX2xpbms7Cit9CisKK3N0YXRpYyBib29sIGludGVsX3Bzcl9nbG9iYWxfZW5hYmxlZChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCit7CisJc3dpdGNoIChkZXZfcHJpdi0+ cHNyLmRlYnVnZnNfbW9kZSkgeworCWNhc2UgUFNSX0RFQlVHRlNfTU9ERV9ERUZBVUxUOiByZXR1 cm4gaTkxNV9tb2RwYXJhbXMuZW5hYmxlX3BzcjsKKwljYXNlIFBTUl9ERUJVR0ZTX01PREVfRElT QUJMRUQ6IHJldHVybiBmYWxzZTsKKwljYXNlIFBTUl9ERUJVR0ZTX01PREVfRU5BQkxFRDogcmV0 dXJuIHRydWU7CisJfQorCisJLyogR0NDIGlzIHN0dXBpZC4gKi8KKwlyZXR1cm4gZmFsc2U7Cit9 CisKK3N0YXRpYyBib29sIGludGVsX3Bzcl9lbmFibGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKK3sKKwlyZXR1cm4gZGV2X3ByaXYtPnBzci5lbmFibGVkICYmIGRldl9wcml2 LT5wc3IuaHdfY29uZmlndXJlZDsKK30KKwogc3RhdGljIGlubGluZSBlbnVtIGludGVsX2Rpc3Bs YXlfcG93ZXJfZG9tYWluCiBwc3JfYXV4X2RvbWFpbihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2Rw KQogewpAQCAtNTAyLDExICs1NDQsNiBAQCB2b2lkIGludGVsX3Bzcl9jb21wdXRlX2NvbmZpZyhz dHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAogCWlmICghQ0FOX1BTUihkZXZfcHJpdikpCiAJCXJl dHVybjsKIAotCWlmICghaTkxNV9tb2RwYXJhbXMuZW5hYmxlX3BzcikgewotCQlEUk1fREVCVUdf S01TKCJQU1IgZGlzYWJsZSBieSBmbGFnXG4iKTsKLQkJcmV0dXJuOwotCX0KLQogCS8qCiAJICog SFNXIHNwZWMgZXhwbGljaXRseSBzYXlzIFBTUiBpcyB0aWVkIHRvIHBvcnQgQS4KIAkgKiBCRFcr IHBsYXRmb3JtcyB3aXRoIERESSBpbXBsZW1lbnRhdGlvbiBvZiBQU1IgaGF2ZSBkaWZmZXJlbnQK QEAgLTU1OSw3ICs1OTYsMTEgQEAgdm9pZCBpbnRlbF9wc3JfY29tcHV0ZV9jb25maWcoc3RydWN0 IGludGVsX2RwICppbnRlbF9kcCwKIAogCWNydGNfc3RhdGUtPmhhc19wc3IgPSB0cnVlOwogCWNy dGNfc3RhdGUtPmhhc19wc3IyID0gaW50ZWxfcHNyMl9jb25maWdfdmFsaWQoaW50ZWxfZHAsIGNy dGNfc3RhdGUpOwotCURSTV9ERUJVR19LTVMoIkVuYWJsaW5nIFBTUiVzXG4iLCBjcnRjX3N0YXRl LT5oYXNfcHNyMiA/ICIyIiA6ICIiKTsKKworCWlmIChpbnRlbF9wc3JfZ2xvYmFsX2VuYWJsZWQo ZGV2X3ByaXYpKQorCQlEUk1fREVCVUdfS01TKCJFbmFibGluZyBQU1Ilc1xuIiwgY3J0Y19zdGF0 ZS0+aGFzX3BzcjIgPyAiMiIgOiAiIik7CisJZWxzZQorCQlEUk1fREVCVUdfS01TKCJQU1IgZGlz YWJsZSBieSBmbGFnXG4iKTsKIH0KIAogc3RhdGljIHZvaWQgaW50ZWxfcHNyX2FjdGl2YXRlKHN0 cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCkBAIC02MTcsNiArNjU4LDM0IEBAIHN0YXRpYyB2b2lk IGhzd19wc3JfZW5hYmxlX3NvdXJjZShzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAogCX0KIH0K IAordm9pZCBfX2ludGVsX3Bzcl9lbmFibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LAorCQkJc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKKwkJCWNvbnN0IHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQoreworCWRldl9wcml2LT5wc3IuaHdfY29uZmlndXJl ZCA9IHRydWU7CisKKwlkZXZfcHJpdi0+cHNyLnNldHVwX3ZzYyhpbnRlbF9kcCwgY3J0Y19zdGF0 ZSk7CisJZGV2X3ByaXYtPnBzci5lbmFibGVfc2luayhpbnRlbF9kcCk7CisJZGV2X3ByaXYtPnBz ci5lbmFibGVfc291cmNlKGludGVsX2RwLCBjcnRjX3N0YXRlKTsKKworCWlmIChJTlRFTF9HRU4o ZGV2X3ByaXYpID49IDkpIHsKKwkJaW50ZWxfcHNyX2FjdGl2YXRlKGludGVsX2RwKTsKKwl9IGVs c2UgeworCQkvKgorCQkgKiBGSVhNRTogQWN0aXZhdGlvbiBzaG91bGQgaGFwcGVuIGltbWVkaWF0 ZWx5IHNpbmNlIHRoaXMKKwkJICogZnVuY3Rpb24gaXMganVzdCBjYWxsZWQgYWZ0ZXIgcGlwZSBp cyBmdWxseSB0cmFpbmVkIGFuZAorCQkgKiBlbmFibGVkLgorCQkgKiBIb3dldmVyIG9uIHNvbWUg cGxhdGZvcm1zIHdlIGZhY2UgaXNzdWVzIHdoZW4gZmlyc3QKKwkJICogYWN0aXZhdGlvbiBmb2xs b3dzIGEgbW9kZXNldCBzbyBxdWlja2x5LgorCQkgKiAgICAgLSBPbiBWTFYvQ0hWIHdlIGdldCBi YW5rIHNjcmVlbiBvbiBmaXJzdCBhY3RpdmF0aW9uCisJCSAqICAgICAtIE9uIEhTVy9CRFcgd2Ug Z2V0IGEgcmVjb3ZlcmFibGUgZnJvemVuIHNjcmVlbiB1bnRpbAorCQkgKiAgICAgICBuZXh0IGV4 aXQtYWN0aXZhdGUgc2VxdWVuY2UuCisJCSAqLworCQlzY2hlZHVsZV9kZWxheWVkX3dvcmsoJmRl dl9wcml2LT5wc3Iud29yaywKKwkJCQkgICAgICBtc2Vjc190b19qaWZmaWVzKGludGVsX2RwLT5w YW5lbF9wb3dlcl9jeWNsZV9kZWxheSAqIDUpKTsKKwl9Cit9CisKIC8qKgogICogaW50ZWxfcHNy X2VuYWJsZSAtIEVuYWJsZSBQU1IKICAqIEBpbnRlbF9kcDogSW50ZWwgRFAKQEAgLTY0NywyNyAr NzE2LDEwIEBAIHZvaWQgaW50ZWxfcHNyX2VuYWJsZShzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2Rw LAogCWRldl9wcml2LT5wc3IucHNyMl9zdXBwb3J0ID0gY3J0Y19zdGF0ZS0+aGFzX3BzcjI7CiAJ ZGV2X3ByaXYtPnBzci5idXN5X2Zyb250YnVmZmVyX2JpdHMgPSAwOwogCi0JZGV2X3ByaXYtPnBz ci5zZXR1cF92c2MoaW50ZWxfZHAsIGNydGNfc3RhdGUpOwotCWRldl9wcml2LT5wc3IuZW5hYmxl X3NpbmsoaW50ZWxfZHApOwotCWRldl9wcml2LT5wc3IuZW5hYmxlX3NvdXJjZShpbnRlbF9kcCwg Y3J0Y19zdGF0ZSk7CiAJZGV2X3ByaXYtPnBzci5lbmFibGVkID0gaW50ZWxfZHA7CiAKLQlpZiAo SU5URUxfR0VOKGRldl9wcml2KSA+PSA5KSB7Ci0JCWludGVsX3Bzcl9hY3RpdmF0ZShpbnRlbF9k cCk7Ci0JfSBlbHNlIHsKLQkJLyoKLQkJICogRklYTUU6IEFjdGl2YXRpb24gc2hvdWxkIGhhcHBl biBpbW1lZGlhdGVseSBzaW5jZSB0aGlzCi0JCSAqIGZ1bmN0aW9uIGlzIGp1c3QgY2FsbGVkIGFm dGVyIHBpcGUgaXMgZnVsbHkgdHJhaW5lZCBhbmQKLQkJICogZW5hYmxlZC4KLQkJICogSG93ZXZl ciBvbiBzb21lIHBsYXRmb3JtcyB3ZSBmYWNlIGlzc3VlcyB3aGVuIGZpcnN0Ci0JCSAqIGFjdGl2 YXRpb24gZm9sbG93cyBhIG1vZGVzZXQgc28gcXVpY2tseS4KLQkJICogICAgIC0gT24gVkxWL0NI ViB3ZSBnZXQgYmFuayBzY3JlZW4gb24gZmlyc3QgYWN0aXZhdGlvbgotCQkgKiAgICAgLSBPbiBI U1cvQkRXIHdlIGdldCBhIHJlY292ZXJhYmxlIGZyb3plbiBzY3JlZW4gdW50aWwKLQkJICogICAg ICAgbmV4dCBleGl0LWFjdGl2YXRlIHNlcXVlbmNlLgotCQkgKi8KLQkJc2NoZWR1bGVfZGVsYXll ZF93b3JrKCZkZXZfcHJpdi0+cHNyLndvcmssCi0JCQkJICAgICAgbXNlY3NfdG9famlmZmllcyhp bnRlbF9kcC0+cGFuZWxfcG93ZXJfY3ljbGVfZGVsYXkgKiA1KSk7Ci0JfQorCWlmIChpbnRlbF9w c3JfZ2xvYmFsX2VuYWJsZWQoZGV2X3ByaXYpKQorCQlfX2ludGVsX3Bzcl9lbmFibGUoZGV2X3By aXYsIGludGVsX2RwLCBjcnRjX3N0YXRlKTsKIAogdW5sb2NrOgogCW11dGV4X3VubG9jaygmZGV2 X3ByaXYtPnBzci5sb2NrKTsKQEAgLTc1Miw2ICs4MDQsMTcgQEAgc3RhdGljIHZvaWQgaHN3X3Bz cl9kaXNhYmxlKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCiAJcHNyX2F1eF9pb19wb3dlcl9w dXQoaW50ZWxfZHApOwogfQogCit2b2lkIF9faW50ZWxfcHNyX2Rpc2FibGUoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAorCQkJIHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCisJ CQkgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlKQoreworCWRl dl9wcml2LT5wc3IuZGlzYWJsZV9zb3VyY2UoaW50ZWxfZHAsIG9sZF9jcnRjX3N0YXRlKTsKKwor CS8qIERpc2FibGUgUFNSIG9uIFNpbmsgKi8KKwlkcm1fZHBfZHBjZF93cml0ZWIoJmludGVsX2Rw LT5hdXgsIERQX1BTUl9FTl9DRkcsIDApOworCWRldl9wcml2LT5wc3IuaHdfY29uZmlndXJlZCA9 IGZhbHNlOworfQorCiAvKioKICAqIGludGVsX3Bzcl9kaXNhYmxlIC0gRGlzYWJsZSBQU1IKICAq IEBpbnRlbF9kcDogSW50ZWwgRFAKQEAgLTc3MywxNSArODM2LDEzIEBAIHZvaWQgaW50ZWxfcHNy X2Rpc2FibGUoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKIAkJcmV0dXJuOwogCiAJbXV0ZXhf bG9jaygmZGV2X3ByaXYtPnBzci5sb2NrKTsKLQlpZiAoIWRldl9wcml2LT5wc3IuZW5hYmxlZCkg eworCWlmIChpbnRlbF9kcCAhPSBkZXZfcHJpdi0+cHNyLmVuYWJsZWQpIHsKIAkJbXV0ZXhfdW5s b2NrKCZkZXZfcHJpdi0+cHNyLmxvY2spOwogCQlyZXR1cm47CiAJfQogCi0JZGV2X3ByaXYtPnBz ci5kaXNhYmxlX3NvdXJjZShpbnRlbF9kcCwgb2xkX2NydGNfc3RhdGUpOwotCi0JLyogRGlzYWJs ZSBQU1Igb24gU2luayAqLwotCWRybV9kcF9kcGNkX3dyaXRlYigmaW50ZWxfZHAtPmF1eCwgRFBf UFNSX0VOX0NGRywgMCk7CisJaWYgKGludGVsX3Bzcl9lbmFibGVkKGRldl9wcml2KSkKKwkJX19p bnRlbF9wc3JfZGlzYWJsZShkZXZfcHJpdiwgaW50ZWxfZHAsIG9sZF9jcnRjX3N0YXRlKTsKIAog CWRldl9wcml2LT5wc3IuZW5hYmxlZCA9IE5VTEw7CiAJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ cHNyLmxvY2spOwpAQCAtODMzLDExICs4OTQsMTEgQEAgc3RhdGljIHZvaWQgaW50ZWxfcHNyX3dv cmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogCQl9CiAJfQogCW11dGV4X2xvY2soJmRldl9w cml2LT5wc3IubG9jayk7Ci0JaW50ZWxfZHAgPSBkZXZfcHJpdi0+cHNyLmVuYWJsZWQ7Ci0KLQlp ZiAoIWludGVsX2RwKQorCWlmICghaW50ZWxfcHNyX2VuYWJsZWQoZGV2X3ByaXYpKQogCQlnb3Rv IHVubG9jazsKIAorCWludGVsX2RwID0gZGV2X3ByaXYtPnBzci5lbmFibGVkOworCiAJLyoKIAkg KiBUaGUgZGVsYXllZCB3b3JrIGNhbiByYWNlIHdpdGggYW4gaW52YWxpZGF0ZSBoZW5jZSB3ZSBu ZWVkIHRvCiAJICogcmVjaGVjay4gU2luY2UgcHNyX2ZsdXNoIGZpcnN0IGNsZWFycyB0aGlzIGFu ZCB0aGVuIHJlc2NoZWR1bGVzIHdlCkBAIC05MzMsNyArOTk0LDcgQEAgdm9pZCBpbnRlbF9wc3Jf c2luZ2xlX2ZyYW1lX3VwZGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJ CXJldHVybjsKIAogCW11dGV4X2xvY2soJmRldl9wcml2LT5wc3IubG9jayk7Ci0JaWYgKCFkZXZf cHJpdi0+cHNyLmVuYWJsZWQpIHsKKwlpZiAoIWludGVsX3Bzcl9lbmFibGVkKGRldl9wcml2KSkg ewogCQltdXRleF91bmxvY2soJmRldl9wcml2LT5wc3IubG9jayk7CiAJCXJldHVybjsKIAl9CkBA IC05NzksNyArMTA0MCw3IEBAIHZvaWQgaW50ZWxfcHNyX2ludmFsaWRhdGUoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQlyZXR1cm47CiAKIAltdXRleF9sb2NrKCZkZXZfcHJp di0+cHNyLmxvY2spOwotCWlmICghZGV2X3ByaXYtPnBzci5lbmFibGVkKSB7CisJaWYgKCFpbnRl bF9wc3JfZW5hYmxlZChkZXZfcHJpdikpIHsKIAkJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cHNy LmxvY2spOwogCQlyZXR1cm47CiAJfQpAQCAtMTAyMiw3ICsxMDgzLDcgQEAgdm9pZCBpbnRlbF9w c3JfZmx1c2goc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQlyZXR1cm47CiAK IAltdXRleF9sb2NrKCZkZXZfcHJpdi0+cHNyLmxvY2spOwotCWlmICghZGV2X3ByaXYtPnBzci5l bmFibGVkKSB7CisJaWYgKCFpbnRlbF9wc3JfZW5hYmxlZChkZXZfcHJpdikpIHsKIAkJbXV0ZXhf dW5sb2NrKCZkZXZfcHJpdi0+cHNyLmxvY2spOwogCQlyZXR1cm47CiAJfQpAQCAtMTA4MSwyNiAr MTE0Miw4IEBAIHZvaWQgaW50ZWxfcHNyX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KQogCWlmIChpOTE1X21vZHBhcmFtcy5lbmFibGVfcHNyID09IC0xKQogCQlpOTE1X21v ZHBhcmFtcy5lbmFibGVfcHNyID0gMDsKIAotCS8qIFNldCBsaW5rX3N0YW5kYnkgeCBsaW5rX29m ZiBkZWZhdWx0cyAqLwotCWlmIChJU19IQVNXRUxMKGRldl9wcml2KSB8fCBJU19CUk9BRFdFTEwo ZGV2X3ByaXYpKQotCQkvKiBIU1cgYW5kIEJEVyByZXF1aXJlIHdvcmthcm91bmRzIHRoYXQgd2Ug ZG9uJ3QgaW1wbGVtZW50LiAqLwotCQlkZXZfcHJpdi0+cHNyLmxpbmtfc3RhbmRieSA9IGZhbHNl OwotCWVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2 X3ByaXYpKQotCQkvKiBPbiBWTFYgYW5kIENIViBvbmx5IHN0YW5kYnkgbW9kZSBpcyBzdXBwb3J0 ZWQuICovCi0JCWRldl9wcml2LT5wc3IubGlua19zdGFuZGJ5ID0gdHJ1ZTsKLQllbHNlCi0JCS8q IEZvciBuZXcgcGxhdGZvcm1zIGxldCdzIHJlc3BlY3QgVkJUIGJhY2sgYWdhaW4gKi8KLQkJZGV2 X3ByaXYtPnBzci5saW5rX3N0YW5kYnkgPSBkZXZfcHJpdi0+dmJ0LnBzci5mdWxsX2xpbms7Ci0K LQkvKiBPdmVycmlkZSBsaW5rX3N0YW5kYnkgeCBsaW5rX29mZiBkZWZhdWx0cyAqLwotCWlmIChp OTE1X21vZHBhcmFtcy5lbmFibGVfcHNyID09IDIgJiYgIWRldl9wcml2LT5wc3IubGlua19zdGFu ZGJ5KSB7Ci0JCURSTV9ERUJVR19LTVMoIlBTUjogRm9yY2luZyBsaW5rIHN0YW5kYnlcbiIpOwot CQlkZXZfcHJpdi0+cHNyLmxpbmtfc3RhbmRieSA9IHRydWU7Ci0JfQotCWlmIChpOTE1X21vZHBh cmFtcy5lbmFibGVfcHNyID09IDMgJiYgZGV2X3ByaXYtPnBzci5saW5rX3N0YW5kYnkpIHsKLQkJ RFJNX0RFQlVHX0tNUygiUFNSOiBGb3JjaW5nIG1haW4gbGluayBvZmZcbiIpOwotCQlkZXZfcHJp di0+cHNyLmxpbmtfc3RhbmRieSA9IGZhbHNlOwotCX0KKwlkZXZfcHJpdi0+cHNyLmxpbmtfc3Rh bmRieSA9IGludGVsX3Bzcl9kZWZhdWx0X2xpbmtfc3RhbmRieShkZXZfcHJpdik7CisJZGV2X3By aXYtPnBzci5kZWJ1Z2ZzX21vZGUgPSBQU1JfREVCVUdGU19NT0RFX0RFRkFVTFQ7CiAKIAlJTklU X0RFTEFZRURfV09SSygmZGV2X3ByaXYtPnBzci53b3JrLCBpbnRlbF9wc3Jfd29yayk7CiAJbXV0 ZXhfaW5pdCgmZGV2X3ByaXYtPnBzci5sb2NrKTsKLS0gCjIuMTYuMgoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJ bnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==