From mboxrd@z Thu Jan 1 00:00:00 1970 From: Durgadoss R Subject: [PATCHv7 5/5] drm/i915/dp: Enable Upfront link training for typeC DP support on BXT Date: Wed, 13 Jul 2016 16:15:44 +0530 Message-ID: <1468406744-6779-6-git-send-email-durgadoss.r@intel.com> References: <1468406744-6779-1-git-send-email-durgadoss.r@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id E94246E6E4 for ; Wed, 13 Jul 2016 10:00:48 +0000 (UTC) In-Reply-To: <1468406744-6779-1-git-send-email-durgadoss.r@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: ander.conselvan.de.oliveira@intel.com, jim.bride@intel.com List-Id: intel-gfx@lists.freedesktop.org VG8gc3VwcG9ydCBVU0IgdHlwZSBDIGFsdGVybmF0ZSBEUCBtb2RlLCB0aGUgZGlzcGxheSBkcml2 ZXIgbmVlZHMgdG8Ka25vdyB0aGUgbnVtYmVyIG9mIGxhbmVzIHJlcXVpcmVkIGJ5IHRoZSBEUCBw YW5lbCBhcyB3ZWxsIGFzIG51bWJlcgpvZiBsYW5lcyB0aGF0IGNhbiBiZSBzdXBwb3J0ZWQgYnkg dGhlIHR5cGUtQyBjYWJsZS4gU29tZXRpbWVzLCB0aGUKdHlwZS1DIGNhYmxlIG1heSBsaW1pdCB0 aGUgYmFuZHdpZHRoIGV2ZW4gaWYgUGFuZWwgY2FuIHN1cHBvcnQKbW9yZSBsYW5lcy4gVG8gYWRk cmVzcyB0aGVzZSBzY2VuYXJpb3MsIHRoZSBkaXNwbGF5IGRyaXZlciB3aWxsCnN0YXJ0IGxpbmsg dHJhaW5pbmcgd2l0aCBtYXggbGFuZXMsIGFuZCBpZiB0aGF0IGZhaWxzLCB0aGUgZHJpdmVyCmZh bGxzIGJhY2sgdG8geDIgbGFuZXM7IGFuZCByZXBlYXRzIHRoaXMgcHJvY2VkdXJlIGZvciBhbGwK YmFuZHdpZHRoL2xhbmUgY29uZmlndXJhdGlvbnMuCgoqIFNpbmNlIGxpbmsgdHJhaW5pbmcgaXMg ZG9uZSBiZWZvcmUgbW9kZXNldCBvbmx5IHRoZSBwb3J0CiAgKGFuZCBub3QgcGlwZS9wbGFuZXMp IGFuZCBpdHMgYXNzb2NpYXRlZCBQTExzIGFyZSBlbmFibGVkLgoqIE9uIERQIGhvdHBsdWc6IERp cmVjdGx5IHN0YXJ0IGxpbmsgdHJhaW5pbmcgb24gdGhlIERQIGVuY29kZXIuCiogT24gQ29ubmVj dGVkIGJvb3Qgc2NlbmFyaW9zOiBXaGVuIGJvb3RlZCB3aXRoIGFuIExGUCBhbmQgYSBEUCwKICBz b21ldGltZXMgQklPUyBicmluZ3MgdXAgRFAuIEluIHRoZXNlIGNhc2VzLCB3ZSBkaXNhYmxlIHRo ZQogIGNydGMgYW5kIHRoZW4gZG8gdXBmcm9udCBsaW5rIHRyYWluaW5nOyBhbmQgYnJpbmcgaXQg YmFjayB1cC4KKiBBbGwgbG9jYWwgY2hhbmdlcyBtYWRlIGZvciB1cGZyb250IGxpbmsgdHJhaW5p bmcgYXJlIHJlc2V0CiAgdG8gdGhlaXIgcHJldmlvdXMgdmFsdWVzIG9uY2UgaXQgaXMgZG9uZTsg c28gdGhhdCB0aGUKICBzdWJzZXF1ZW50IG1vZGVzZXQgaXMgbm90IGF3YXJlIG9mIHRoZXNlIGNo YW5nZXMuCgpDaGFuZ2VzIHNpbmNlIHY2OgoqIEZpeCBzb21lIGluaXRpYWxpemF0aW9uIGJ1Z3Mg b24gbGlua19yYXRlIChKaW0gQnJpZGUpCiogVXNlIGxpbmtfcmF0ZSAoYW5kIG5vdCBsaW5rX2J3 KSBmb3IgdXBmcm9udCAoVmlsbGUpCiogTWFrZSBpbnRlbF9kcF91cGZyb250KigpIGFzIGEgdmZ1 bmMgKEFuZGVyKQoqIFRoZSB0cmFpbl9zZXRfdmFsaWQgdmFyaWFibGUgaW4gaW50ZWxfZHAgd2Fz IHJlbW92ZWQgZHVlIHRvCiAgaXNzdWVzIGluIGZhc3QgbGluayB0cmFpbmluZy4gU28sIHRvIGlu ZGljYXRlIHRoZSBsaW5rIHRyYWluCiAgc3RhdHVzLCBtb3ZlIHRoZSBjaGFubmVsX2VxIGluc2lk ZSBpbnRlbF9kcC4KQ2hhbmdlcyBzaW5jZSB2NToKKiBNb3ZlZCByZXRyeSBsb2dpYyBpbiB1cGZy b250IHRvIGludGVsX2RwLmMgc28gdGhhdCBpdAogIGNhbiBiZSB1c2VkIGZvciBhbGwgcGxhdGZv cm1zLgpDaGFuZ2VzIHNpbmNlIHY0OgoqIFJlbW92ZWQgdXNhZ2Ugb2YgY3J0Y19zdGF0ZSBpbiB1 cGZyb250IGxpbmsgdHJhaW5pbmc7CiAgSGVuY2Ugbm8gbmVlZCB0byBmaW5kIGZyZWUgY3J0YyB0 byBkbyB1cGZyb250IG5vdy4KKiBSZS1lbmFibGUgY3J0YyBpZiBpdCB3YXMgZGlzYWJsZWQgZm9y IHVwZnJvbnQuCiogVXNlIHNlcGFyYXRlIHZhcmlhYmxlcyB0byB0cmFjayBtYXggbGFuZSBjb3Vu dAogIGFuZCBsaW5rIHJhdGUgZm91bmQgYnkgdXBmcm9udCwgd2l0aG91dCBtb2RpZnlpbmcKICB0 aGUgb3JpZ2luYWwgRFBDRCByZWFkIGZyb20gcGFuZWwuCkNoYW5nZXMgc2luY2UgdjM6CiogRml4 ZWQgYSByZXR1cm4gdmFsdWUgb24gQlhUIGNoZWNrCiogUmV3b3JrZWQgb24gdG9wIG9mIGJ4dF9k ZGlfcGxsX3NlbGVjdCBzcGxpdCBmcm9tIEFuZGVyCiogUmVuYW1lZCBmcm9tIGRkaV91cGZyb250 IHRvIGJ4dF91cGZyb250IHNpbmNlIHRoZQogIHVwZnJvbnQgbG9naWMgaW5jbHVkZXMgQlhUIHNw ZWNpZmljIGZ1bmN0aW9ucyBmb3Igbm93LgpDaGFuZ2VzIHNpbmNlIHYyOgoqIFJlYmFzZWQgb24g dG9wIG9mIGxhdGVzdCBkcGxsX21nci5jIGNvZGUgYW5kCiAgbGF0ZXN0IEhQRCByZWxhdGVkIGNs ZWFuIHVwcy4KKiBDb3JyZWN0ZWQgcmV0dXJuIHZhbHVlcyBmcm9tIHVwZnJvbnQgKEFuZGVyKQoq IENvcnJlY3RlZCBhdG9taWMgbG9ja2luZyBmb3IgdXBmcm9udCBpbiBpbnRlbF9kcC5jIChWaWxs ZSkKQ2hhbmdlcyBzaW5jZSB2MToKKiAgYWxsIHBsbCByZWxhdGVkIGZ1bmN0aW9ucyBpbnNpZGUg ZGRpLmMKClNpZ25lZC1vZmYtYnk6IER1cmdhZG9zcyBSIDxkdXJnYWRvc3MuckBpbnRlbC5jb20+ Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMgICAgICAgICAgICAgIHwgIDQ1 ICsrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jICAgICAgICAgICAgICAg fCAxNTUgKysrKysrKysrKysrKysrKysrKysrKysrKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2RwX2xpbmtfdHJhaW5pbmcuYyB8ICAgNyArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHJ2LmggICAgICAgICAgICAgIHwgIDE1ICsrKwogNCBmaWxlcyBjaGFuZ2VkLCAyMTMgaW5z ZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kZGkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCmluZGV4 IGFiMTc0NWEuLjNiYWQwMWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2RkaS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCkBAIC0yMzU2LDYg KzIzNTYsNTEgQEAgaW50ZWxfZGRpX2luaXRfaGRtaV9jb25uZWN0b3Ioc3RydWN0IGludGVsX2Rp Z2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQpCiAJcmV0dXJuIGNvbm5lY3RvcjsKIH0KIAorYm9v bCBpbnRlbF9ieHRfdXBmcm9udF9saW5rX3RyYWluKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAs CisJCQkJaW50IGNsb2NrLCB1aW50OF90IGxhbmVfY291bnQpCit7CisJc3RydWN0IGludGVsX2Nv bm5lY3RvciAqY29ubmVjdG9yID0gaW50ZWxfZHAtPmF0dGFjaGVkX2Nvbm5lY3RvcjsKKwlzdHJ1 Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciA9IGNvbm5lY3Rvci0+ZW5jb2RlcjsKKwlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsK KwlzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKnBsbDsKKwlzdHJ1Y3QgaW50ZWxfc2hhcmVkX2Rw bGxfY29uZmlnIHRtcF9wbGxfY29uZmlnOworCXN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRp Z19wb3J0ID0gZHBfdG9fZGlnX3BvcnQoaW50ZWxfZHApOworCWVudW0gaW50ZWxfZHBsbF9pZCBk cGxsX2lkID0gKGVudW0gaW50ZWxfZHBsbF9pZClkaWdfcG9ydC0+cG9ydDsKKworCS8qCisJICog RklYTUU6IFdvcmtzIG9ubHkgZm9yIEJYVC4KKwkgKiBTZWxlY3QgdGhlIHJlcXVpcmVkIFBMTC4g VGhpcyB3b3JrcyBmb3IgcGxhdGZvcm1zIHdoZXJlCisJICogdGhlcmUgaXMgbm8gc2hhcmVkIERQ TEwuCisJICovCisJcGxsID0gJmRldl9wcml2LT5zaGFyZWRfZHBsbHNbZHBsbF9pZF07CisJaWYg KFdBUk5fT04ocGxsLT5hY3RpdmVfbWFzaykpIHsKKwkJRFJNX0VSUk9SKCJTaGFyZWQgRFBMTCBh bHJlYWR5IGluIHVzZS4gYWN0aXZlX21hc2s6JXhcbiIsIHBsbC0+YWN0aXZlX21hc2spOworCQly ZXR1cm4gZmFsc2U7CisJfQorCisJdG1wX3BsbF9jb25maWcgPSBwbGwtPmNvbmZpZzsKKworCWlm ICghYnh0X2RkaV9kcF9zZXRfZHBsbF9od19zdGF0ZShjbG9jaywgJnBsbC0+Y29uZmlnLmh3X3N0 YXRlKSkgeworCQlEUk1fRVJST1IoIkNvdWxkIG5vdCBzZXR1cCBEUExMXG4iKTsKKwkJcGxsLT5j b25maWcgPSB0bXBfcGxsX2NvbmZpZzsKKwkJcmV0dXJuIGZhbHNlOworCX0KKworCS8qIEVuYWJs ZSBQTEwgZm9sbG93ZWQgYnkgcG9ydCAqLworCXBsbC0+ZnVuY3MuZW5hYmxlKGRldl9wcml2LCBw bGwpOworCWludGVsX2RkaV9wcmVfZW5hYmxlX2RwKGVuY29kZXIsIGNsb2NrLCBsYW5lX2NvdW50 LCBwbGwpOworCisJRFJNX0RFQlVHX0tNUygiVXBmcm9udCBsaW5rIHRyYWluICVzOiBsaW5rX2Ns b2NrOiVkIGxhbmVzOiVkXG4iLAorCWludGVsX2RwLT5jaGFubmVsX2VxX3N0YXR1cyA/ICJQYXNz ZWQiIDogIkZhaWxlZCIsIGNsb2NrLCBsYW5lX2NvdW50KTsKKworCS8qIERpc2FibGUgcG9ydCBm b2xsb3dlZCBieSBQTEwgZm9yIG5leHQgcmV0cnkvY2xlYW4gdXAgKi8KKwlpbnRlbF9kZGlfcG9z dF9kaXNhYmxlKGVuY29kZXIpOworCXBsbC0+ZnVuY3MuZGlzYWJsZShkZXZfcHJpdiwgcGxsKTsK KworCXBsbC0+Y29uZmlnID0gdG1wX3BsbF9jb25maWc7CisJcmV0dXJuIGludGVsX2RwLT5jaGFu bmVsX2VxX3N0YXR1czsKK30KKwogdm9pZCBpbnRlbF9kZGlfaW5pdChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LCBlbnVtIHBvcnQgcG9ydCkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSB0b19pOTE1KGRldik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwppbmRleCA4MTc4OTdj Li4zOTRlNjJkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKQEAgLTE1MywxMiArMTUzLDIxIEBA IGludGVsX2RwX21heF9saW5rX2J3KHN0cnVjdCBpbnRlbF9kcCAgKmludGVsX2RwKQogc3RhdGlj IHU4IGludGVsX2RwX21heF9sYW5lX2NvdW50KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCiB7 CiAJc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQgPSBkcF90b19kaWdf cG9ydChpbnRlbF9kcCk7Ci0JdTggc291cmNlX21heCwgc2lua19tYXg7CisJdTggdGVtcCwgc291 cmNlX21heCwgc2lua19tYXg7CiAKIAlzb3VyY2VfbWF4ID0gaW50ZWxfZGlnX3BvcnQtPm1heF9s YW5lczsKIAlzaW5rX21heCA9IGRybV9kcF9tYXhfbGFuZV9jb3VudChpbnRlbF9kcC0+ZHBjZCk7 CiAKLQlyZXR1cm4gbWluKHNvdXJjZV9tYXgsIHNpbmtfbWF4KTsKKwl0ZW1wID0gbWluKHNvdXJj ZV9tYXgsIHNpbmtfbWF4KTsKKworCS8qCisJICogTGltaXQgbWF4IGxhbmVzIHcuci50IHRvIHRo ZSBtYXggdmFsdWUgZm91bmQKKwkgKiB1c2luZyBVcGZyb250IGxpbmsgdHJhaW5pbmcgYWxzby4K KwkgKi8KKwlpZiAoaW50ZWxfZHAtPm1heF9sYW5lc191cGZyb250KQorCQlyZXR1cm4gbWluKHRl bXAsIGludGVsX2RwLT5tYXhfbGFuZXNfdXBmcm9udCk7CisJZWxzZQorCQlyZXR1cm4gdGVtcDsK IH0KIAogLyoKQEAgLTEzODAsNiArMTM4OSwxNSBAQCBzdGF0aWMgaW50IGludGVsX2RwX2NvbW1v bl9yYXRlcyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAogCWludCBzb3VyY2VfbGVuLCBzaW5r X2xlbjsKIAogCXNpbmtfbGVuID0gaW50ZWxfZHBfc2lua19yYXRlcyhpbnRlbF9kcCwgJnNpbmtf cmF0ZXMpOworCisJLyogQ2FwIHNpbmsgcmF0ZXMgdy5yLnQgdXBmcm9udCB2YWx1ZXMgKi8KKwlp ZiAoaW50ZWxfZHAtPm1heF9saW5rX3JhdGVfdXBmcm9udCkgeworCQlpbnQgbGVuID0gc2lua19s ZW4gLSAxOworCQl3aGlsZSAobGVuID4gMCAmJiBzaW5rX3JhdGVzW2xlbl0gPiBpbnRlbF9kcC0+ bWF4X2xpbmtfcmF0ZV91cGZyb250KQorCQkJbGVuLS07CisJCXNpbmtfbGVuID0gbGVuICsgMTsK Kwl9CisKIAlzb3VyY2VfbGVuID0gaW50ZWxfZHBfc291cmNlX3JhdGVzKGludGVsX2RwLCAmc291 cmNlX3JhdGVzKTsKIAogCXJldHVybiBpbnRlcnNlY3RfcmF0ZXMoc291cmNlX3JhdGVzLCBzb3Vy Y2VfbGVuLApAQCAtNDIwOCw2ICs0MjI2LDExNCBAQCBpbnRlbF9kcF91bnNldF9lZGlkKHN0cnVj dCBpbnRlbF9kcCAqaW50ZWxfZHApCiAJaW50ZWxfZHAtPmhhc19hdWRpbyA9IGZhbHNlOwogfQog CitzdGF0aWMgaW50IGludGVsX2RwX3VwZnJvbnRfY3J0Y19kaXNhYmxlKHN0cnVjdCBpbnRlbF9j cnRjICpjcnRjLAorCQkJCXN0cnVjdCBkcm1fbW9kZXNldF9hY3F1aXJlX2N0eCAqY3R4LAorCQkJ CWJvb2wgZW5hYmxlKQoreworCWludCByZXQ7CisJc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0 YXRlOworCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlOworCXN0cnVjdCBkcm1f ZGV2aWNlICpkZXYgPSBjcnRjLT5iYXNlLmRldjsKKwllbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBp cGU7CisKKwlzdGF0ZSA9IGRybV9hdG9taWNfc3RhdGVfYWxsb2MoZGV2KTsKKwlpZiAoIXN0YXRl KQorCQlyZXR1cm4gLUVOT01FTTsKKworCXN0YXRlLT5hY3F1aXJlX2N0eCA9IGN0eDsKKworCWNy dGNfc3RhdGUgPSBpbnRlbF9hdG9taWNfZ2V0X2NydGNfc3RhdGUoc3RhdGUsIGNydGMpOworCWlm IChJU19FUlIoY3J0Y19zdGF0ZSkpIHsKKwkJcmV0ID0gUFRSX0VSUihjcnRjX3N0YXRlKTsKKwkJ ZHJtX2F0b21pY19zdGF0ZV9mcmVlKHN0YXRlKTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlEUk1f REVCVUdfS01TKCIlc2FibGluZyBjcnRjICVjICVzIHVwZnJvbnQgbGluayB0cmFpblxuIiwKKwkJ CWVuYWJsZSA/ICJFbiIgOiAiRGlzIiwKKwkJCXBpcGVfbmFtZShwaXBlKSwKKwkJCWVuYWJsZSA/ ICJhZnRlciIgOiAiYmVmb3JlIik7CisKKwljcnRjX3N0YXRlLT5iYXNlLmFjdGl2ZSA9IGVuYWJs ZTsKKwlyZXQgPSBkcm1fYXRvbWljX2NvbW1pdChzdGF0ZSk7CisJaWYgKHJldCkKKwkJZHJtX2F0 b21pY19zdGF0ZV9mcmVlKHN0YXRlKTsKKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBib29s IGludGVsX2RwX3VwZnJvbnRfbGlua190cmFpbihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQor eworCXN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0ID0gZHBfdG9fZGln X3BvcnQoaW50ZWxfZHApOworCXN0cnVjdCBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyID0g JmludGVsX2RpZ19wb3J0LT5iYXNlOworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBpbnRlbF9l bmNvZGVyLT5iYXNlLmRldjsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0 b19pOTE1KGRldik7CisJc3RydWN0IGRybV9tb2RlX2NvbmZpZyAqY29uZmlnID0gJmRldi0+bW9k ZV9jb25maWc7CisJc3RydWN0IGRybV9tb2Rlc2V0X2FjcXVpcmVfY3R4IGN0eDsKKwlzdHJ1Y3Qg aW50ZWxfY3J0YyAqaW50ZWxfY3J0YzsKKwlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBOVUxMOwor CWludCByZXQ7CisJYm9vbCBkb25lID0gZmFsc2U7CisJdWludDhfdCBsYW5lX2NvdW50LCBtYXhf bGFuZXMgPSA0OworCWludCBjb21tb25fcmF0ZXNbRFBfTUFYX1NVUFBPUlRFRF9SQVRFU10gPSB7 fTsKKwlpbnQgY2xvY2ssIGNvbW1vbl9sZW47CisKKwljb21tb25fbGVuID0gaW50ZWxfZHBfY29t bW9uX3JhdGVzKGludGVsX2RwLCBjb21tb25fcmF0ZXMpOworCWlmIChXQVJOX09OKGNvbW1vbl9s ZW4gPD0gMCkpCisJCXJldHVybiB0cnVlOworCisJZHJtX21vZGVzZXRfYWNxdWlyZV9pbml0KCZj dHgsIDApOworcmV0cnk6CisJcmV0ID0gZHJtX21vZGVzZXRfbG9jaygmY29uZmlnLT5jb25uZWN0 aW9uX211dGV4LCAmY3R4KTsKKwlpZiAocmV0KQorCQlnb3RvIGV4aXRfZmFpbDsKKworCWlmIChp bnRlbF9lbmNvZGVyLT5iYXNlLmNydGMpIHsKKwkJY3J0YyA9IGludGVsX2VuY29kZXItPmJhc2Uu Y3J0YzsKKworCQlyZXQgPSBkcm1fbW9kZXNldF9sb2NrKCZjcnRjLT5tdXRleCwgJmN0eCk7CisJ CWlmIChyZXQpCisJCQlnb3RvIGV4aXRfZmFpbDsKKworCQlyZXQgPSBkcm1fbW9kZXNldF9sb2Nr KCZjcnRjLT5wcmltYXJ5LT5tdXRleCwgJmN0eCk7CisJCWlmIChyZXQpCisJCQlnb3RvIGV4aXRf ZmFpbDsKKworCQlpbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKKwkJcmV0ID0gaW50 ZWxfZHBfdXBmcm9udF9jcnRjX2Rpc2FibGUoaW50ZWxfY3J0YywgJmN0eCwgZmFsc2UpOworCQlp ZiAocmV0KQorCQkJZ290byBleGl0X2ZhaWw7CisJfQorCisJbXV0ZXhfbG9jaygmZGV2X3ByaXYt PmRwbGxfbG9jayk7CisKKwlmb3IgKGxhbmVfY291bnQgPSBtYXhfbGFuZXM7IGxhbmVfY291bnQg Pj0gMSAmJiAhZG9uZTsgbGFuZV9jb3VudCA+Pj0gMSkgeworCQlmb3IgKGNsb2NrID0gY29tbW9u X2xlbiAtIDE7IGNsb2NrID49IDAgJiYgIWRvbmU7IGNsb2NrLS0pIHsKKwkJCWRvbmUgPSBpbnRl bF9kcC0+dXBmcm9udF9saW5rX3RyYWluKGludGVsX2RwLAorCQkJCQljb21tb25fcmF0ZXNbY2xv Y2tdLCBsYW5lX2NvdW50KTsKKwkJCWlmIChkb25lKSB7CisJCQkJaW50ZWxfZHAtPm1heF9sYW5l c191cGZyb250ID0gbGFuZV9jb3VudDsKKwkJCQlpbnRlbF9kcC0+bWF4X2xpbmtfcmF0ZV91cGZy b250ID0gY29tbW9uX3JhdGVzW2Nsb2NrXTsKKwkJCQlicmVhazsKKwkJCX0KKwkJfQorCX0KKwor CW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmRwbGxfbG9jayk7CisKKwlpZiAoY3J0YykKKwkJcmV0 ID0gaW50ZWxfZHBfdXBmcm9udF9jcnRjX2Rpc2FibGUoaW50ZWxfY3J0YywgJmN0eCwgdHJ1ZSk7 CisKK2V4aXRfZmFpbDoKKwlpZiAocmV0ID09IC1FREVBRExLKSB7CisJCWRybV9tb2Rlc2V0X2Jh Y2tvZmYoJmN0eCk7CisJCWdvdG8gcmV0cnk7CisJfQorCWRybV9tb2Rlc2V0X2Ryb3BfbG9ja3Mo JmN0eCk7CisJZHJtX21vZGVzZXRfYWNxdWlyZV9maW5pKCZjdHgpOworCXJldHVybiBkb25lOwor fQorCiBzdGF0aWMgdm9pZAogaW50ZWxfZHBfbG9uZ19wdWxzZShzdHJ1Y3QgaW50ZWxfY29ubmVj dG9yICppbnRlbF9jb25uZWN0b3IpCiB7CkBAIC00MjE4LDcgKzQzNDQsNyBAQCBpbnRlbF9kcF9s b25nX3B1bHNlKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmludGVsX2Nvbm5lY3RvcikKIAlzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2ID0gY29ubmVjdG9yLT5kZXY7CiAJZW51bSBkcm1fY29ubmVjdG9y X3N0YXR1cyBzdGF0dXM7CiAJZW51bSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2RvbWFpbiBwb3dlcl9k b21haW47Ci0JYm9vbCByZXQ7CisJYm9vbCByZXQsIGRvX3VwZnJvbnRfbGlua190cmFpbjsKIAl1 OCBzaW5rX2lycV92ZWN0b3I7CiAKIAlwb3dlcl9kb21haW4gPSBpbnRlbF9kaXNwbGF5X3BvcnRf YXV4X3Bvd2VyX2RvbWFpbihpbnRlbF9lbmNvZGVyKTsKQEAgLTQzMDMsMTAgKzQ0MjksMjMgQEAg aW50ZWxfZHBfbG9uZ19wdWxzZShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICppbnRlbF9jb25uZWN0 b3IpCiAJCQlEUk1fREVCVUdfRFJJVkVSKCJDUCBvciBzaW5rIHNwZWNpZmljIGlycSB1bmhhbmRs ZWRcbiIpOwogCX0KIAorCS8qIERvIG5vdCBkbyB1cGZyb250IGxpbmsgdHJhaW4sIGlmIGl0IGlz IGEgY29tcGxpYW5jZSByZXF1ZXN0ICovCisJZG9fdXBmcm9udF9saW5rX3RyYWluID0gaW50ZWxf ZHAtPnVwZnJvbnRfbGlua190cmFpbiAmJgorCQkJCSFpbnRlbF9kcC0+dXBmcm9udF9kb25lICYm CisJCQkJaW50ZWxfZW5jb2Rlci0+dHlwZSA9PSBJTlRFTF9PVVRQVVRfRFAgJiYKKwkJCQlpbnRl bF9kcC0+Y29tcGxpYW5jZV90ZXN0X3R5cGUgIT0gRFBfVEVTVF9MSU5LX1RSQUlOSU5HOworCisJ aWYgKGRvX3VwZnJvbnRfbGlua190cmFpbikgeworCQlpbnRlbF9kcC0+dXBmcm9udF9kb25lID0g aW50ZWxfZHBfdXBmcm9udF9saW5rX3RyYWluKGludGVsX2RwKTsKKwkJaWYgKCFpbnRlbF9kcC0+ dXBmcm9udF9kb25lKQorCQkJc3RhdHVzID0gY29ubmVjdG9yX3N0YXR1c19kaXNjb25uZWN0ZWQ7 CisJfQorCiBvdXQ6Ci0JaWYgKChzdGF0dXMgIT0gY29ubmVjdG9yX3N0YXR1c19jb25uZWN0ZWQp ICYmCi0JICAgIChpbnRlbF9kcC0+aXNfbXN0ID09IGZhbHNlKSkKKwlpZiAoc3RhdHVzICE9IGNv bm5lY3Rvcl9zdGF0dXNfY29ubmVjdGVkICYmICFpbnRlbF9kcC0+aXNfbXN0KSB7CiAJCWludGVs X2RwX3Vuc2V0X2VkaWQoaW50ZWxfZHApOworCQlpbnRlbF9kcC0+dXBmcm9udF9kb25lID0gZmFs c2U7CisJfQogCiAJaW50ZWxfZGlzcGxheV9wb3dlcl9wdXQodG9faTkxNShkZXYpLCBwb3dlcl9k b21haW4pOwogCXJldHVybjsKQEAgLTU1NjIsNiArNTcwMSwxMiBAQCBpbnRlbF9kcF9pbml0X2Nv bm5lY3RvcihzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCwKIAlpZiAo dHlwZSA9PSBEUk1fTU9ERV9DT05ORUNUT1JfZURQKQogCQlpbnRlbF9lbmNvZGVyLT50eXBlID0g SU5URUxfT1VUUFVUX0VEUDsKIAorCS8qIEluaXRpYWxpemUgdXBmcm9udCBsaW5rIHRyYWluaW5n IHZmdW5jIGZvciBEUCAqLworCWlmIChpbnRlbF9lbmNvZGVyLT50eXBlICE9IElOVEVMX09VVFBV VF9FRFApIHsKKwkJaWYgKElTX0JST1hUT04oZGV2KSkKKwkJCWludGVsX2RwLT51cGZyb250X2xp bmtfdHJhaW4gPSBpbnRlbF9ieHRfdXBmcm9udF9saW5rX3RyYWluOworCX0KKwogCS8qIGVEUCBv bmx5IG9uIHBvcnQgQiBhbmQvb3IgQyBvbiB2bHYvY2h2ICovCiAJaWYgKFdBUk5fT04oKElTX1ZB TExFWVZJRVcoZGV2KSB8fCBJU19DSEVSUllWSUVXKGRldikpICYmCiAJCSAgICBpc19lZHAoaW50 ZWxfZHApICYmIHBvcnQgIT0gUE9SVF9CICYmIHBvcnQgIT0gUE9SVF9DKSkKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX2xpbmtfdHJhaW5pbmcuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2RwX2xpbmtfdHJhaW5pbmcuYwppbmRleCA2MGZiMzljLi5lNTg0 NDJhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcF9saW5rX3RyYWlu aW5nLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBfbGlua190cmFpbmluZy5j CkBAIC0yMzIsNyArMjMyLDYgQEAgc3RhdGljIHUzMiBpbnRlbF9kcF90cmFpbmluZ19wYXR0ZXJu KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCiBzdGF0aWMgdm9pZAogaW50ZWxfZHBfbGlua190 cmFpbmluZ19jaGFubmVsX2VxdWFsaXphdGlvbihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQog ewotCWJvb2wgY2hhbm5lbF9lcSA9IGZhbHNlOwogCWludCB0cmllcywgY3JfdHJpZXM7CiAJdTMy IHRyYWluaW5nX3BhdHRlcm47CiAKQEAgLTI0OCw3ICsyNDcsNyBAQCBpbnRlbF9kcF9saW5rX3Ry YWluaW5nX2NoYW5uZWxfZXF1YWxpemF0aW9uKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCiAK IAl0cmllcyA9IDA7CiAJY3JfdHJpZXMgPSAwOwotCWNoYW5uZWxfZXEgPSBmYWxzZTsKKwlpbnRl bF9kcC0+Y2hhbm5lbF9lcV9zdGF0dXMgPSBmYWxzZTsKIAlmb3IgKDs7KSB7CiAJCXVpbnQ4X3Qg bGlua19zdGF0dXNbRFBfTElOS19TVEFUVVNfU0laRV07CiAKQEAgLTI3Niw3ICsyNzUsNyBAQCBp bnRlbF9kcF9saW5rX3RyYWluaW5nX2NoYW5uZWxfZXF1YWxpemF0aW9uKHN0cnVjdCBpbnRlbF9k cCAqaW50ZWxfZHApCiAKIAkJaWYgKGRybV9kcF9jaGFubmVsX2VxX29rKGxpbmtfc3RhdHVzLAog CQkJCQkgaW50ZWxfZHAtPmxhbmVfY291bnQpKSB7Ci0JCQljaGFubmVsX2VxID0gdHJ1ZTsKKwkJ CWludGVsX2RwLT5jaGFubmVsX2VxX3N0YXR1cyA9IHRydWU7CiAJCQlicmVhazsKIAkJfQogCkBA IC0zMDIsNyArMzAxLDcgQEAgaW50ZWxfZHBfbGlua190cmFpbmluZ19jaGFubmVsX2VxdWFsaXph dGlvbihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQogCiAJaW50ZWxfZHBfc2V0X2lkbGVfbGlu a190cmFpbihpbnRlbF9kcCk7CiAKLQlpZiAoY2hhbm5lbF9lcSkKKwlpZiAoaW50ZWxfZHAtPmNo YW5uZWxfZXFfc3RhdHVzKQogCQlEUk1fREVCVUdfS01TKCJDaGFubmVsIEVRIGRvbmUuIERQIFRy YWluaW5nIHN1Y2Nlc3NmdWxcbiIpOwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCmluZGV4 IDE2ZjcwZDQuLjg4MzA2ZmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCkBAIC04NTEsNiAr ODUxLDE1IEBAIHN0cnVjdCBpbnRlbF9kcCB7CiAJZW51bSBoZG1pX2ZvcmNlX2F1ZGlvIGZvcmNl X2F1ZGlvOwogCWJvb2wgbGltaXRlZF9jb2xvcl9yYW5nZTsKIAlib29sIGNvbG9yX3JhbmdlX2F1 dG87CisKKwkvKiBXaGV0aGVyIENoYW5uZWwgRXF1YWxpemF0aW9uIHdhcyBhY2hpZXZlZCBkdXJp bmcgTGluayB0cmFpbmluZyAqLworCWJvb2wgY2hhbm5lbF9lcV9zdGF0dXM7CisKKwkvKiBVcGZy b250IGxpbmsgdHJhaW4gcGFyYW1ldGVycyAqLworCWludCBtYXhfbGlua19yYXRlX3VwZnJvbnQ7 CisJdWludDhfdCBtYXhfbGFuZXNfdXBmcm9udDsKKwlib29sIHVwZnJvbnRfZG9uZTsKKwogCXVp bnQ4X3QgZHBjZFtEUF9SRUNFSVZFUl9DQVBfU0laRV07CiAJdWludDhfdCBwc3JfZHBjZFtFRFBf UFNSX1JFQ0VJVkVSX0NBUF9TSVpFXTsKIAl1aW50OF90IGRvd25zdHJlYW1fcG9ydHNbRFBfTUFY X0RPV05TVFJFQU1fUE9SVFNdOwpAQCAtOTA4LDYgKzkxNywxMCBAQCBzdHJ1Y3QgaW50ZWxfZHAg ewogCS8qIFRoaXMgaXMgY2FsbGVkIGJlZm9yZSBhIGxpbmsgdHJhaW5pbmcgaXMgc3RhcnRlcmQg Ki8KIAl2b2lkICgqcHJlcGFyZV9saW5rX3JldHJhaW4pKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxf ZHApOwogCisJLyogRm9yIFVwZnJvbnQgbGluayB0cmFpbmluZyAqLworCWJvb2wgKCp1cGZyb250 X2xpbmtfdHJhaW4pKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsIGludCBjbG9jaywKKwkJCQl1 aW50OF90IGxhbmVfY291bnQpOworCiAJLyogRGlzcGxheXBvcnQgY29tcGxpYW5jZSB0ZXN0aW5n ICovCiAJdW5zaWduZWQgbG9uZyBjb21wbGlhbmNlX3Rlc3RfdHlwZTsKIAl1bnNpZ25lZCBsb25n IGNvbXBsaWFuY2VfdGVzdF9kYXRhOwpAQCAtMTEyNyw2ICsxMTQwLDggQEAgdm9pZCBpbnRlbF9k ZGlfY2xvY2tfZ2V0KHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAogCQkJIHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZyk7CiB2b2lkIGludGVsX2RkaV9zZXRfdmNfcGF5 bG9hZF9hbGxvYyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIGJvb2wgc3RhdGUpOwogdWludDMyX3Qg ZGRpX3NpZ25hbF9sZXZlbHMoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCk7Citib29sIGludGVs X2J4dF91cGZyb250X2xpbmtfdHJhaW4oc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKKwkJCQlp bnQgY2xvY2ssIHVpbnQ4X3QgbGFuZV9jb3VudCk7CiAKIC8qIGludGVsX2Zyb250YnVmZmVyLmMg Ki8KIHZvaWQgaW50ZWxfZmJfb2JqX2ludmFsaWRhdGUoc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QgKm9iaiwKLS0gCjEuOS4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9p bnRlbC1nZngK