From mboxrd@z Thu Jan 1 00:00:00 1970 From: Uma Shankar Subject: [BXT MIPI PATCH v5 05/14] drm/i915/bxt: DSI encoder support in CRTC modeset Date: Wed, 30 Sep 2015 22:33:38 +0530 Message-ID: <1443632618-19049-1-git-send-email-uma.shankar@intel.com> References: <87zj05iszn.fsf@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id 2D1E372192 for ; Wed, 30 Sep 2015 09:35:44 -0700 (PDT) In-Reply-To: <87zj05iszn.fsf@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 Cc: shobhit.kumar@intel.com List-Id: intel-gfx@lists.freedesktop.org RnJvbTogU2hhc2hhbmsgU2hhcm1hIDxzaGFzaGFuay5zaGFybWFAaW50ZWwuY29tPgoKU0tMIGFu ZCBCWFQgcXVhbGlmaWVzIHRoZSBIQVNfRERJKCkgY2hlY2ssIGFuZCBoZW5jZSBoYXN3ZWxsCm1v ZGVzZXQgZnVuY3Rpb25zIGFyZSByZS11c2VkIGZvciBtb2Rlc2V0IHNlcXVlbmNlLiBCdXQgRERJ CmludGVyZmFjZSBkb2Vzbid0IGluY2x1ZGUgc3VwcG9ydCBmb3IgRFNJLgpUaGlzIHBhdGNoIGFk ZHM6CjEuIGNhc2VzIGZvciBEU0kgZW5jb2RlciwgaW4gdGhvc2UgbW9kZXNldCBmdW5jdGlvbnMg YW5kIGFsbG93cwogICBhIENSVEMgbW9kZXNldAoyLiBBZGRzIGNhbGwgdG8gcHJlX3BsbCBlbmFi bGVkIGZyb20gQ1JUQyBtb2Rlc2V0IGZ1bmN0aW9uLiBOb3RoaW5nCiAgIG5lZWRzIHRvIGJlIGRv bmUgYXMgc3VjaCBpbiBDUlRDIGZvciBEU0kgZW5jb2RlciwgYXMgUExMLCBjbG9jawogICBhbmQg YW5kIHRyYW5zY29kZXIgcHJvZ3JhbW1pbmcgd2lsbCBiZSB0YWtlbiBjYXJlIGluIGVuY29kZXIn cwogICBwcmVfZW5hYmxlIGFuZCBwcmVfcGxsX2VuYWJsZSBmdW5jdGlvbi4KCnYyOiBGaXhlZCBK YW5pJ3MgcmV2aWV3IGNvbW1lbnRzLiBBZGRlZCBJTlZBTElEX1BPUlQgZm9yIG5vbiBEREkKICAg IGVuY29kZXIgbGlrZSBEU0kgZm9yIHBsYXRmb3JtcyBoYXZpbmcgSEFTX0RESSBhcyB0cnVlLgoK djM6IFJlYmFzZWQgb24gbGF0ZXN0IGRybS1uaWdodGx5IGJyYW5jaC4gQWRkZWQgYSBXQVJOX09O IGZvciBpbnZhbGlkCiAgICBlbmNvZGVyLgoKdjQ6IFdBUk5fT04gZm9yIGludmFsaWQgZW5jb2Rl ciBpcyByZWZhY3RvcmVkIGFzIHBlciBKYW5pJ3Mgc3VnZ2VzdGlvbi4KICAgIEZpeGVkIHRoZSBz ZXF1ZW5jZSBmb3IgcHJlX3BsbF9lbmFibGUuCgp2NTogUHJvdGVjdGVkIERESSBjb2RlIHBhdGhz IGluIGNhc2Ugb2YgRFNJIGVuY29kZXIgY2FsbHMuCgpTaWduZWQtb2ZmLWJ5OiBTaGFzaGFuayBT aGFybWEgPHNoYXNoYW5rLnNoYXJtYUBpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IFVtYSBTaGFu a2FyIDx1bWEuc2hhbmthckBpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuaCAgICAgICB8ICAgIDEgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMg ICAgICB8ICAgODMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tCiBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgIHwgICAyMSArKysrKystLS0KIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2RwX21zdC5jICAgfCAgICA4ICsrKy0KIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX29wcmVnaW9uLmMgfCAgICA5ICsrKy0KIDUgZmlsZXMgY2hhbmdlZCwgMTAxIGlu c2VydGlvbnMoKyksIDIxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCmluZGV4 IGZkMWRlNDUuLmY5N2EyYTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAtMjQ4Miw2ICsy NDgyLDcgQEAgc3RydWN0IGRybV9pOTE1X2NtZF90YWJsZSB7CiAJCQkJIElOVEVMX0lORk8oZGV2 KS0+Z2VuID49IDkpCiAKICNkZWZpbmUgSEFTX0RESShkZXYpCQkoSU5URUxfSU5GTyhkZXYpLT5o YXNfZGRpKQorI2RlZmluZSBoYXNfZW5jb2Rlcl9kZGkodHlwZSkgICgodHlwZSkgPT0gKElOVEVM X09VVFBVVF9EU0kpID8gIDAgOiAxKQogI2RlZmluZSBIQVNfRlBHQV9EQkdfVU5DTEFJTUVEKGRl dikJKElOVEVMX0lORk8oZGV2KS0+aGFzX2ZwZ2FfZGJnKQogI2RlZmluZSBIQVNfUFNSKGRldikJ CShJU19IQVNXRUxMKGRldikgfHwgSVNfQlJPQURXRUxMKGRldikgfHwgXAogCQkJCSBJU19WQUxM RVlWSUVXKGRldikgfHwgSVNfQ0hFUlJZVklFVyhkZXYpIHx8IFwKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZGRpLmMKaW5kZXggY2FjYjA3Yi4uNGFiYzEzZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZGRpLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMK QEAgLTM5MCw4ICszOTAsMTAgQEAgdm9pZCBpbnRlbF9wcmVwYXJlX2RkaShzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2KQogCQllbnVtIHBvcnQgcG9ydDsKIAkJYm9vbCBzdXBwb3J0c19oZG1pOwogCi0J CWRkaV9nZXRfZW5jb2Rlcl9wb3J0KGludGVsX2VuY29kZXIsICZpbnRlbF9kaWdfcG9ydCwgJnBv cnQpOworCQlpZiAoaW50ZWxfZW5jb2Rlci0+dHlwZSA9PSBJTlRFTF9PVVRQVVRfRFNJKQorCQkJ Y29udGludWU7CiAKKwkJZGRpX2dldF9lbmNvZGVyX3BvcnQoaW50ZWxfZW5jb2RlciwgJmludGVs X2RpZ19wb3J0LCAmcG9ydCk7CiAJCWlmICh2aXNpdGVkW3BvcnRdKQogCQkJY29udGludWU7CiAK QEAgLTk3Nyw4ICs5NzksMTYgQEAgc3RhdGljIHZvaWQgYnh0X2RkaV9jbG9ja19nZXQoc3RydWN0 IGludGVsX2VuY29kZXIgKmVuY29kZXIsCiAJCQkJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBp cGVfY29uZmlnKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGVuY29k ZXItPmJhc2UuZGV2LT5kZXZfcHJpdmF0ZTsKLQllbnVtIHBvcnQgcG9ydCA9IGludGVsX2RkaV9n ZXRfZW5jb2Rlcl9wb3J0KGVuY29kZXIpOwotCXVpbnQzMl90IGRwbGwgPSBwb3J0OworCWVudW0g cG9ydCBwb3J0OworCXVpbnQzMl90IGRwbGw7CisKKwlpZiAoIWhhc19lbmNvZGVyX2RkaShlbmNv ZGVyLT50eXBlKSkgeworCQlEUk1fREVCVUdfS01TKCJEREkgZnVuYyBnZXR0aW5nIGNhbGxlZCBm b3IgRFNJP1xuIik7CisJCXJldHVybjsKKwl9CisKKwlwb3J0ID0gaW50ZWxfZGRpX2dldF9lbmNv ZGVyX3BvcnQoZW5jb2Rlcik7CisJZHBsbCA9IHBvcnQ7CiAKIAlwaXBlX2NvbmZpZy0+cG9ydF9j bG9jayA9CiAJCWJ4dF9jYWxjX3BsbF9saW5rKGRldl9wcml2LCBkcGxsKTsKQEAgLTE1NjgsMTAg KzE1NzgsMTYgQEAgdm9pZCBpbnRlbF9kZGlfZW5hYmxlX3RyYW5zY29kZXJfZnVuYyhzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMpCiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2 LT5kZXZfcHJpdmF0ZTsKIAllbnVtIHBpcGUgcGlwZSA9IGludGVsX2NydGMtPnBpcGU7CiAJZW51 bSB0cmFuc2NvZGVyIGNwdV90cmFuc2NvZGVyID0gaW50ZWxfY3J0Yy0+Y29uZmlnLT5jcHVfdHJh bnNjb2RlcjsKLQllbnVtIHBvcnQgcG9ydCA9IGludGVsX2RkaV9nZXRfZW5jb2Rlcl9wb3J0KGlu dGVsX2VuY29kZXIpOworCWVudW0gcG9ydCBwb3J0OwogCWludCB0eXBlID0gaW50ZWxfZW5jb2Rl ci0+dHlwZTsKIAl1aW50MzJfdCB0ZW1wOwogCisJaWYgKCFoYXNfZW5jb2Rlcl9kZGkodHlwZSkp IHsKKwkJRFJNX0RFQlVHX0tNUygiRERJIGZ1bmMgZ2V0dGluZyBjYWxsZWQgZm9yIERTST9cbiIp OworCQlyZXR1cm47CisJfQorCisJcG9ydCA9IGludGVsX2RkaV9nZXRfZW5jb2Rlcl9wb3J0KGlu dGVsX2VuY29kZXIpOwogCS8qIEVuYWJsZSBUUkFOU19ERElfRlVOQ19DVEwgZm9yIHRoZSBwaXBl IHRvIHdvcmsgaW4gSERNSSBtb2RlICovCiAJdGVtcCA9IFRSQU5TX0RESV9GVU5DX0VOQUJMRTsK IAl0ZW1wIHw9IFRSQU5TX0RESV9TRUxFQ1RfUE9SVChwb3J0KTsKQEAgLTE2NzgsMTIgKzE2OTQs MTggQEAgYm9vbCBpbnRlbF9kZGlfY29ubmVjdG9yX2dldF9od19zdGF0ZShzdHJ1Y3QgaW50ZWxf Y29ubmVjdG9yICppbnRlbF9jb25uZWN0b3IpCiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKIAlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxf ZW5jb2RlciA9IGludGVsX2Nvbm5lY3Rvci0+ZW5jb2RlcjsKIAlpbnQgdHlwZSA9IGludGVsX2Nv bm5lY3Rvci0+YmFzZS5jb25uZWN0b3JfdHlwZTsKLQllbnVtIHBvcnQgcG9ydCA9IGludGVsX2Rk aV9nZXRfZW5jb2Rlcl9wb3J0KGludGVsX2VuY29kZXIpOworCWVudW0gcG9ydCBwb3J0OwogCWVu dW0gcGlwZSBwaXBlID0gMDsKIAllbnVtIHRyYW5zY29kZXIgY3B1X3RyYW5zY29kZXI7CiAJZW51 bSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2RvbWFpbiBwb3dlcl9kb21haW47CiAJdWludDMyX3QgdG1w OwogCisJaWYgKCFoYXNfZW5jb2Rlcl9kZGkodHlwZSkpIHsKKwkJRFJNX0RFQlVHX0tNUygiRERJ IGZ1bmMgZ2V0dGluZyBjYWxsZWQgZm9yIERTST9cbiIpOworCQlyZXR1cm4gZmFsc2U7CisJfQor CisJcG9ydCA9IGludGVsX2RkaV9nZXRfZW5jb2Rlcl9wb3J0KGludGVsX2VuY29kZXIpOwogCXBv d2VyX2RvbWFpbiA9IGludGVsX2Rpc3BsYXlfcG9ydF9wb3dlcl9kb21haW4oaW50ZWxfZW5jb2Rl cik7CiAJaWYgKCFpbnRlbF9kaXNwbGF5X3Bvd2VyX2lzX2VuYWJsZWQoZGV2X3ByaXYsIHBvd2Vy X2RvbWFpbikpCiAJCXJldHVybiBmYWxzZTsKQEAgLTE3MjUsMTEgKzE3NDcsMTcgQEAgYm9vbCBp bnRlbF9kZGlfZ2V0X2h3X3N0YXRlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAogewog CXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBlbmNvZGVyLT5iYXNlLmRldjsKIAlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwotCWVudW0gcG9ydCBw b3J0ID0gaW50ZWxfZGRpX2dldF9lbmNvZGVyX3BvcnQoZW5jb2Rlcik7CisJZW51bSBwb3J0IHBv cnQ7CiAJZW51bSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2RvbWFpbiBwb3dlcl9kb21haW47CiAJdTMy IHRtcDsKIAlpbnQgaTsKIAorCWlmICghaGFzX2VuY29kZXJfZGRpKGVuY29kZXItPnR5cGUpKSB7 CisJCURSTV9ERUJVR19LTVMoIkRESSBmdW5jIGdldHRpbmcgY2FsbGVkIGZvciBEU0k/XG4iKTsK KwkJcmV0dXJuIGZhbHNlOworCX0KKworCXBvcnQgPSBpbnRlbF9kZGlfZ2V0X2VuY29kZXJfcG9y dChlbmNvZGVyKTsKIAlwb3dlcl9kb21haW4gPSBpbnRlbF9kaXNwbGF5X3BvcnRfcG93ZXJfZG9t YWluKGVuY29kZXIpOwogCWlmICghaW50ZWxfZGlzcGxheV9wb3dlcl9pc19lbmFibGVkKGRldl9w cml2LCBwb3dlcl9kb21haW4pKQogCQlyZXR1cm4gZmFsc2U7CkBAIC0xNzc5LDExICsxODA3LDE4 IEBAIGJvb2wgaW50ZWxfZGRpX2dldF9od19zdGF0ZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5j b2RlciwKIHZvaWQgaW50ZWxfZGRpX2VuYWJsZV9waXBlX2Nsb2NrKHN0cnVjdCBpbnRlbF9jcnRj ICppbnRlbF9jcnRjKQogewogCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9ICZpbnRlbF9jcnRjLT5i YXNlOwotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGNydGMtPmRldi0+ZGV2 X3ByaXZhdGU7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKKwlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwogCXN0cnVjdCBp bnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyID0gaW50ZWxfZGRpX2dldF9jcnRjX2VuY29kZXIo Y3J0Yyk7Ci0JZW51bSBwb3J0IHBvcnQgPSBpbnRlbF9kZGlfZ2V0X2VuY29kZXJfcG9ydChpbnRl bF9lbmNvZGVyKTsKKwllbnVtIHBvcnQgcG9ydDsKIAllbnVtIHRyYW5zY29kZXIgY3B1X3RyYW5z Y29kZXIgPSBpbnRlbF9jcnRjLT5jb25maWctPmNwdV90cmFuc2NvZGVyOwogCisJaWYgKCFoYXNf ZW5jb2Rlcl9kZGkoaW50ZWxfZW5jb2Rlci0+dHlwZSkpIHsKKwkJRFJNX0RFQlVHX0tNUygiRERJ IGZ1bmMgZ2V0dGluZyBjYWxsZWQgZm9yIERTST9cbiIpOworCQlyZXR1cm47CisJfQorCisJcG9y dCA9IGludGVsX2RkaV9nZXRfZW5jb2Rlcl9wb3J0KGludGVsX2VuY29kZXIpOwogCWlmIChjcHVf dHJhbnNjb2RlciAhPSBUUkFOU0NPREVSX0VEUCkKIAkJSTkxNV9XUklURShUUkFOU19DTEtfU0VM KGNwdV90cmFuc2NvZGVyKSwKIAkJCSAgIFRSQU5TX0NMS19TRUxfUE9SVChwb3J0KSk7CkBAIC0x ODY2LDEwICsxOTAxLDE2IEBAIHN0YXRpYyB2b2lkIGludGVsX2RkaV9wcmVfZW5hYmxlKHN0cnVj dCBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyKQogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYg PSBlbmNvZGVyLT5kZXY7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2 LT5kZXZfcHJpdmF0ZTsKIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMo ZW5jb2Rlci0+Y3J0Yyk7Ci0JZW51bSBwb3J0IHBvcnQgPSBpbnRlbF9kZGlfZ2V0X2VuY29kZXJf cG9ydChpbnRlbF9lbmNvZGVyKTsKKwllbnVtIHBvcnQgcG9ydDsKIAlpbnQgdHlwZSA9IGludGVs X2VuY29kZXItPnR5cGU7CiAJaW50IGhkbWlfbGV2ZWw7CiAKKwlpZiAoIWhhc19lbmNvZGVyX2Rk aSh0eXBlKSkgeworCQlEUk1fREVCVUdfS01TKCJEREkgZnVuYyBnZXR0aW5nIGNhbGxlZCBmb3Ig RFNJP1xuIik7CisJCXJldHVybjsKKwl9CisKKwlwb3J0ID0gaW50ZWxfZGRpX2dldF9lbmNvZGVy X3BvcnQoaW50ZWxfZW5jb2Rlcik7CiAJaWYgKHR5cGUgPT0gSU5URUxfT1VUUFVUX0VEUCkgewog CQlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0gZW5jX3RvX2ludGVsX2RwKGVuY29kZXIpOwog CQlpbnRlbF9lZHBfcGFuZWxfb24oaW50ZWxfZHApOwpAQCAtMTk0MiwxMSArMTk4MywxNyBAQCBz dGF0aWMgdm9pZCBpbnRlbF9kZGlfcG9zdF9kaXNhYmxlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICpp bnRlbF9lbmNvZGVyKQogCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciA9ICZpbnRlbF9lbmNv ZGVyLT5iYXNlOwogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBlbmNvZGVyLT5kZXY7CiAJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKLQllbnVt IHBvcnQgcG9ydCA9IGludGVsX2RkaV9nZXRfZW5jb2Rlcl9wb3J0KGludGVsX2VuY29kZXIpOwor CWVudW0gcG9ydCBwb3J0OwogCWludCB0eXBlID0gaW50ZWxfZW5jb2Rlci0+dHlwZTsKIAl1aW50 MzJfdCB2YWw7CiAJYm9vbCB3YWl0ID0gZmFsc2U7CiAKKwlpZiAoIWhhc19lbmNvZGVyX2RkaSh0 eXBlKSkgeworCQlEUk1fREVCVUdfS01TKCJEREkgZnVuYyBnZXR0aW5nIGNhbGxlZCBmb3IgRFNJ P1xuIik7CisJCXJldHVybjsKKwl9CisKKwlwb3J0ID0gaW50ZWxfZGRpX2dldF9lbmNvZGVyX3Bv cnQoaW50ZWxfZW5jb2Rlcik7CiAJdmFsID0gSTkxNV9SRUFEKERESV9CVUZfQ1RMKHBvcnQpKTsK IAlpZiAodmFsICYgRERJX0JVRl9DVExfRU5BQkxFKSB7CiAJCXZhbCAmPSB+RERJX0JVRl9DVExf RU5BQkxFOwpAQCAtMTk4Myw5ICsyMDMwLDE1IEBAIHN0YXRpYyB2b2lkIGludGVsX2VuYWJsZV9k ZGkoc3RydWN0IGludGVsX2VuY29kZXIgKmludGVsX2VuY29kZXIpCiAJc3RydWN0IGludGVsX2Ny dGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwogCXN0cnVjdCBkcm1fZGV2aWNl ICpkZXYgPSBlbmNvZGVyLT5kZXY7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gZGV2LT5kZXZfcHJpdmF0ZTsKLQllbnVtIHBvcnQgcG9ydCA9IGludGVsX2RkaV9nZXRfZW5j b2Rlcl9wb3J0KGludGVsX2VuY29kZXIpOworCWVudW0gcG9ydCBwb3J0OwogCWludCB0eXBlID0g aW50ZWxfZW5jb2Rlci0+dHlwZTsKIAorCWlmICghaGFzX2VuY29kZXJfZGRpKHR5cGUpKSB7CisJ CURSTV9ERUJVR19LTVMoIkRESSBmdW5jIGdldHRpbmcgY2FsbGVkIGZvciBEU0k/XG4iKTsKKwkJ cmV0dXJuOworCX0KKworCXBvcnQgPSBpbnRlbF9kZGlfZ2V0X2VuY29kZXJfcG9ydChpbnRlbF9l bmNvZGVyKTsKIAlpZiAodHlwZSA9PSBJTlRFTF9PVVRQVVRfSERNSSkgewogCQlzdHJ1Y3QgaW50 ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCA9CiAJCQllbmNfdG9fZGlnX3BvcnQoZW5j b2Rlcik7CkBAIC0yNzI5LDggKzI3ODIsMTQgQEAgc3RhdGljIGJvb2wgaW50ZWxfZGRpX2NvbXB1 dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAogCQkJCSAgICAgc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKQogewogCWludCB0eXBlID0gZW5jb2Rlci0+ dHlwZTsKLQlpbnQgcG9ydCA9IGludGVsX2RkaV9nZXRfZW5jb2Rlcl9wb3J0KGVuY29kZXIpOwor CWludCBwb3J0OworCisJaWYgKCFoYXNfZW5jb2Rlcl9kZGkodHlwZSkpIHsKKwkJRFJNX0RFQlVH X0tNUygiRERJIGZ1bmMgZ2V0dGluZyBjYWxsZWQgZm9yIERTST9cbiIpOworCQlyZXR1cm4gZmFs c2U7CisJfQogCisJcG9ydCA9IGludGVsX2RkaV9nZXRfZW5jb2Rlcl9wb3J0KGVuY29kZXIpOwog CVdBUk4odHlwZSA9PSBJTlRFTF9PVVRQVVRfVU5LTk9XTiwgImNvbXB1dGVfY29uZmlnKCkgb24g dW5rbm93biBvdXRwdXQhXG4iKTsKIAogCWlmIChwb3J0ID09IFBPUlRfQSkKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rpc3BsYXkuYwppbmRleCBiOGUwMzEwLi5lYTBmNTMzIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZGlzcGxheS5jCkBAIC00OTkxLDYgKzQ5OTEsNyBAQCBzdGF0aWMgdm9pZCBo YXN3ZWxsX2NydGNfZW5hYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIAlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwogCXN0cnVjdCBpbnRlbF9j cnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKIAlzdHJ1Y3QgaW50ZWxfZW5j b2RlciAqZW5jb2RlcjsKKwlib29sIGlzX2RzaSA9IGludGVsX3BpcGVfaGFzX3R5cGUoaW50ZWxf Y3J0YywgSU5URUxfT1VUUFVUX0RTSSk7CiAJaW50IHBpcGUgPSBpbnRlbF9jcnRjLT5waXBlOwog CiAJV0FSTl9PTighY3J0Yy0+c3RhdGUtPmVuYWJsZSk7CkBAIC01MDIzLDkgKzUwMjQsMTIgQEAg c3RhdGljIHZvaWQgaGFzd2VsbF9jcnRjX2VuYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiAJ aW50ZWxfY3J0Yy0+YWN0aXZlID0gdHJ1ZTsKIAogCWludGVsX3NldF9jcHVfZmlmb191bmRlcnJ1 bl9yZXBvcnRpbmcoZGV2X3ByaXYsIHBpcGUsIHRydWUpOwotCWZvcl9lYWNoX2VuY29kZXJfb25f Y3J0YyhkZXYsIGNydGMsIGVuY29kZXIpCisJZm9yX2VhY2hfZW5jb2Rlcl9vbl9jcnRjKGRldiwg Y3J0YywgZW5jb2RlcikgeworCQlpZiAoZW5jb2Rlci0+cHJlX3BsbF9lbmFibGUpCisJCQllbmNv ZGVyLT5wcmVfcGxsX2VuYWJsZShlbmNvZGVyKTsKIAkJaWYgKGVuY29kZXItPnByZV9lbmFibGUp CiAJCQllbmNvZGVyLT5wcmVfZW5hYmxlKGVuY29kZXIpOworCX0KIAogCWlmIChpbnRlbF9jcnRj LT5jb25maWctPmhhc19wY2hfZW5jb2RlcikgewogCQlpbnRlbF9zZXRfcGNoX2ZpZm9fdW5kZXJy dW5fcmVwb3J0aW5nKGRldl9wcml2LCBUUkFOU0NPREVSX0EsCkBAIC01MDMzLDcgKzUwMzcsOCBA QCBzdGF0aWMgdm9pZCBoYXN3ZWxsX2NydGNfZW5hYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykK IAkJZGV2X3ByaXYtPmRpc3BsYXkuZmRpX2xpbmtfdHJhaW4oY3J0Yyk7CiAJfQogCi0JaW50ZWxf ZGRpX2VuYWJsZV9waXBlX2Nsb2NrKGludGVsX2NydGMpOworCWlmICghaXNfZHNpKQorCQlpbnRl bF9kZGlfZW5hYmxlX3BpcGVfY2xvY2soaW50ZWxfY3J0Yyk7CiAKIAlpZiAoSU5URUxfSU5GTyhk ZXYpLT5nZW4gPT0gOSkKIAkJc2t5bGFrZV9wZml0X3VwZGF0ZShpbnRlbF9jcnRjLCAxKTsKQEAg LTUwNDksNyArNTA1NCw4IEBAIHN0YXRpYyB2b2lkIGhhc3dlbGxfY3J0Y19lbmFibGUoc3RydWN0 IGRybV9jcnRjICpjcnRjKQogCWludGVsX2NydGNfbG9hZF9sdXQoY3J0Yyk7CiAKIAlpbnRlbF9k ZGlfc2V0X3BpcGVfc2V0dGluZ3MoY3J0Yyk7Ci0JaW50ZWxfZGRpX2VuYWJsZV90cmFuc2NvZGVy X2Z1bmMoY3J0Yyk7CisJaWYgKCFpc19kc2kpCisJCWludGVsX2RkaV9lbmFibGVfdHJhbnNjb2Rl cl9mdW5jKGNydGMpOwogCiAJaW50ZWxfdXBkYXRlX3dhdGVybWFya3MoY3J0Yyk7CiAJaW50ZWxf ZW5hYmxlX3BpcGUoaW50ZWxfY3J0Yyk7CkBAIC01MDU3LDcgKzUwNjMsNyBAQCBzdGF0aWMgdm9p ZCBoYXN3ZWxsX2NydGNfZW5hYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIAlpZiAoaW50ZWxf Y3J0Yy0+Y29uZmlnLT5oYXNfcGNoX2VuY29kZXIpCiAJCWxwdF9wY2hfZW5hYmxlKGNydGMpOwog Ci0JaWYgKGludGVsX2NydGMtPmNvbmZpZy0+ZHBfZW5jb2Rlcl9pc19tc3QpCisJaWYgKGludGVs X2NydGMtPmNvbmZpZy0+ZHBfZW5jb2Rlcl9pc19tc3QgJiYgIWlzX2RzaSkKIAkJaW50ZWxfZGRp X3NldF92Y19wYXlsb2FkX2FsbG9jKGNydGMsIHRydWUpOwogCiAJYXNzZXJ0X3ZibGFua19kaXNh YmxlZChjcnRjKTsKQEAgLTUxNTksNiArNTE2NSw3IEBAIHN0YXRpYyB2b2lkIGhhc3dlbGxfY3J0 Y19kaXNhYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50 ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7CiAJc3RydWN0IGludGVsX2VuY29kZXIgKmVu Y29kZXI7CiAJZW51bSB0cmFuc2NvZGVyIGNwdV90cmFuc2NvZGVyID0gaW50ZWxfY3J0Yy0+Y29u ZmlnLT5jcHVfdHJhbnNjb2RlcjsKKwlib29sIGlzX2RzaSA9IGludGVsX3BpcGVfaGFzX3R5cGUo aW50ZWxfY3J0YywgSU5URUxfT1VUUFVUX0RTSSk7CiAKIAlpZiAoIWludGVsX2NydGMtPmFjdGl2 ZSkKIAkJcmV0dXJuOwpAQCAtNTE3OSw3ICs1MTg2LDggQEAgc3RhdGljIHZvaWQgaGFzd2VsbF9j cnRjX2Rpc2FibGUoc3RydWN0IGRybV9jcnRjICpjcnRjKQogCWlmIChpbnRlbF9jcnRjLT5jb25m aWctPmRwX2VuY29kZXJfaXNfbXN0KQogCQlpbnRlbF9kZGlfc2V0X3ZjX3BheWxvYWRfYWxsb2Mo Y3J0YywgZmFsc2UpOwogCi0JaW50ZWxfZGRpX2Rpc2FibGVfdHJhbnNjb2Rlcl9mdW5jKGRldl9w cml2LCBjcHVfdHJhbnNjb2Rlcik7CisJaWYgKCFpc19kc2kpCisJCWludGVsX2RkaV9kaXNhYmxl X3RyYW5zY29kZXJfZnVuYyhkZXZfcHJpdiwgY3B1X3RyYW5zY29kZXIpOwogCiAJaWYgKElOVEVM X0lORk8oZGV2KS0+Z2VuID09IDkpCiAJCXNreWxha2VfcGZpdF91cGRhdGUoaW50ZWxfY3J0Yywg MCk7CkBAIC01MTg4LDcgKzUxOTYsOCBAQCBzdGF0aWMgdm9pZCBoYXN3ZWxsX2NydGNfZGlzYWJs ZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiAJZWxzZQogCQlNSVNTSU5HX0NBU0UoSU5URUxfSU5G TyhkZXYpLT5nZW4pOwogCi0JaW50ZWxfZGRpX2Rpc2FibGVfcGlwZV9jbG9jayhpbnRlbF9jcnRj KTsKKwlpZiAoIWlzX2RzaSkKKwkJaW50ZWxfZGRpX2Rpc2FibGVfcGlwZV9jbG9jayhpbnRlbF9j cnRjKTsKIAogCWlmIChpbnRlbF9jcnRjLT5jb25maWctPmhhc19wY2hfZW5jb2RlcikgewogCQls cHRfZGlzYWJsZV9wY2hfdHJhbnNjb2RlcihkZXZfcHJpdik7CmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kcF9tc3QuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2RwX21zdC5jCmluZGV4IDYwMGFmZGIuLjAwMzI3YmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2RwX21zdC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2RwX21zdC5jCkBAIC0xNzIsOCArMTcyLDE0IEBAIHN0YXRpYyB2b2lkIGludGVsX21zdF9wcmVf ZW5hYmxlX2RwKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQogCWludGVsX21zdC0+cG9y dCA9IGZvdW5kLT5wb3J0OwogCiAJaWYgKGludGVsX2RwLT5hY3RpdmVfbXN0X2xpbmtzID09IDAp IHsKLQkJZW51bSBwb3J0IHBvcnQgPSBpbnRlbF9kZGlfZ2V0X2VuY29kZXJfcG9ydChlbmNvZGVy KTsKKwkJZW51bSBwb3J0IHBvcnQ7CiAKKwkJaWYgKCFoYXNfZW5jb2Rlcl9kZGkoZW5jb2Rlci0+ dHlwZSkpIHsKKwkJCURSTV9ERUJVR19LTVMoIkRESSBmdW5jIGdldHRpbmcgY2FsbGVkIGZvciBE U0k/XG4iKTsKKwkJCXJldHVybjsKKwkJfQorCisJCXBvcnQgPSBpbnRlbF9kZGlfZ2V0X2VuY29k ZXJfcG9ydChlbmNvZGVyKTsKIAkJLyogRklYTUU6IGFkZCBzdXBwb3J0IGZvciBTS0wgKi8KIAkJ aWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuIDwgOSkKIAkJCUk5MTVfV1JJVEUoUE9SVF9DTEtfU0VM KHBvcnQpLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfb3ByZWdpb24u YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX29wcmVnaW9uLmMKaW5kZXggNDgxMzM3NC4u NjRiOGJjZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfb3ByZWdpb24u YworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9vcHJlZ2lvbi5jCkBAIC0zMzQsOCAr MzM0LDEyIEBAIGludCBpbnRlbF9vcHJlZ2lvbl9ub3RpZnlfZW5jb2RlcihzdHJ1Y3QgaW50ZWxf ZW5jb2RlciAqaW50ZWxfZW5jb2RlciwKIAlpZiAoIUhBU19EREkoZGV2KSkKIAkJcmV0dXJuIDA7 CiAKLQlwb3J0ID0gaW50ZWxfZGRpX2dldF9lbmNvZGVyX3BvcnQoaW50ZWxfZW5jb2Rlcik7Ci0J aWYgKHBvcnQgPT0gUE9SVF9FKSB7CisJaWYgKCFoYXNfZW5jb2Rlcl9kZGkodHlwZSkpCisJCXBv cnQgPSAwOworCWVsc2UKKwkJcG9ydCA9IGludGVsX2RkaV9nZXRfZW5jb2Rlcl9wb3J0KGludGVs X2VuY29kZXIpOworCisJaWYgKHBvcnQgPT0gUE9SVF9FKSAgewogCQlwb3J0ID0gMDsKIAl9IGVs c2UgewogCQlwYXJtIHw9IDEgPDwgcG9ydDsKQEAgLTM1Niw2ICszNjAsNyBAQCBpbnQgaW50ZWxf b3ByZWdpb25fbm90aWZ5X2VuY29kZXIoc3RydWN0IGludGVsX2VuY29kZXIgKmludGVsX2VuY29k ZXIsCiAJCXR5cGUgPSBESVNQTEFZX1RZUEVfRVhURVJOQUxfRkxBVF9QQU5FTDsKIAkJYnJlYWs7 CiAJY2FzZSBJTlRFTF9PVVRQVVRfRURQOgorCWNhc2UgSU5URUxfT1VUUFVUX0RTSToKIAkJdHlw ZSA9IERJU1BMQVlfVFlQRV9JTlRFUk5BTF9GTEFUX1BBTkVMOwogCQlicmVhazsKIAlkZWZhdWx0 OgotLSAKMS43LjkuNQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1n ZngK