From mboxrd@z Thu Jan 1 00:00:00 1970 From: Durgadoss R Subject: [PATCHv4 3/3] drm/i915/dp: Enable Upfront link training for typeC DP support on BXT Date: Mon, 18 Apr 2016 19:01:45 +0530 Message-ID: <1460986305-7116-4-git-send-email-durgadoss.r@intel.com> References: <1460986305-7116-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 mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id 58F776E54D for ; Mon, 18 Apr 2016 12:51:56 +0000 (UTC) In-Reply-To: <1460986305-7116-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 List-Id: intel-gfx@lists.freedesktop.org VG8gc3VwcG9ydCBVU0IgdHlwZSBDIGFsdGVybmF0ZSBEUCBtb2RlLCB0aGUgZGlzcGxheSBkcml2 ZXIgbmVlZHMgdG8Ka25vdyB0aGUgbnVtYmVyIG9mIGxhbmVzIHJlcXVpcmVkIGJ5IHRoZSBEUCBw YW5lbCBhcyB3ZWxsIGFzIG51bWJlcgpvZiBsYW5lcyB0aGF0IGNhbiBiZSBzdXBwb3J0ZWQgYnkg dGhlIHR5cGUtQyBjYWJsZS4gU29tZXRpbWVzLCB0aGUKdHlwZS1DIGNhYmxlIG1heSBsaW1pdCB0 aGUgYmFuZHdpZHRoIGV2ZW4gaWYgUGFuZWwgY2FuIHN1cHBvcnQKbW9yZSBsYW5lcy4gVG8gYWRk cmVzcyB0aGVzZSBzY2VuYXJpb3MsIHRoZSBkaXNwbGF5IGRyaXZlciB3aWxsCnN0YXJ0IGxpbmsg dHJhaW5pbmcgd2l0aCBtYXggbGFuZXMsIGFuZCBpZiB0aGF0IGZhaWxzLCB0aGUgZHJpdmVyCmZh bGxzIGJhY2sgdG8geDIgbGFuZXM7IGFuZCByZXBlYXRzIHRoaXMgcHJvY2VkdXJlIGZvciBhbGwK YmFuZHdpZHRoL2xhbmUgY29uZmlndXJhdGlvbnMuCgoqIFNpbmNlIGxpbmsgdHJhaW5pbmcgaXMg ZG9uZSBiZWZvcmUgbW9kZXNldCBvbmx5IHRoZSBwb3J0CiAgKGFuZCBub3QgcGlwZS9wbGFuZXMp IGFuZCBpdHMgYXNzb2NpYXRlZCBQTExzIGFyZSBlbmFibGVkLgoqIE9uIERQIGhvdHBsdWc6IERp cmVjdGx5IHN0YXJ0IGxpbmsgdHJhaW5pbmcgb24gdGhlIGNydGMKICBhc3NvY2lhdGVkIHdpdGgg dGhlIERQIGVuY29kZXIuCiogT24gQ29ubmVjdGVkIGJvb3Qgc2NlbmFyaW9zOiBXaGVuIGJvb3Rl ZCB3aXRoIGFuIExGUCBhbmQgYSBEUCwKICB0eXBpY2FsbHksIEJJT1MgYnJpbmdzIHVwIERQLiBJ biB0aGVzZSBjYXNlcywgd2UgZGlzYWJsZSB0aGUKICBjcnRjIGFuZCB0aGVuIGRvIHVwZnJvbnQg bGluayB0cmFpbmluZzsgYW5kIGxldCB0aGUgc3Vic2VxdWVudAogIG1vZGVzZXQgcmUtZW5hYmxl IHRoZSBjcnRjLgoqIEFsbCBsb2NhbCBjaGFuZ2VzIG1hZGUgZm9yIHVwZnJvbnQgbGluayB0cmFp bmluZyBhcmUgcmVzZXQKICB0byB0aGVpciBwcmV2aW91cyB2YWx1ZXMgb25jZSBpdCBpcyBkb25l OyBzbyB0aGF0IHRoZQogIHN1YnNlcXVlbnQgbW9kZXNldCBpcyBub3QgYXdhcmUgb2YgdGhlc2Ug Y2hhbmdlcy4KCkNoYW5nZXMgc2luY2UgdjM6CiogRml4ZWQgYSByZXR1cm4gdmFsdWUgb24gQlhU IGNoZWNrCiogUmV3b3JrZWQgb24gdG9wIG9mIGJ4dF9kZGlfcGxsX3NlbGVjdCBzcGxpdCBmcm9t IEFuZGVyCiogUmVuYW1lZCBmcm9tIGRkaV91cGZyb250IHRvIGJ4dF91cGZyb250IHNpbmNlIHRo ZQogIHVwZnJvbnQgbG9naWMgaW5jbHVkZXMgQlhUIHNwZWNpZmljIGZ1bmN0aW9ucyBmb3Igbm93 LgpDaGFuZ2VzIHNpbmNlIHYyOgoqIFJlYmFzZWQgb24gdG9wIG9mIGxhdGVzdCBkcGxsX21nci5j IGNvZGUgYW5kCiAgbGF0ZXN0IEhQRCByZWxhdGVkIGNsZWFuIHVwcy4KKiBDb3JyZWN0ZWQgcmV0 dXJuIHZhbHVlcyBmcm9tIHVwZnJvbnQgKEFuZGVyKQoqIENvcnJlY3RlZCBhdG9taWMgbG9ja2lu ZyBmb3IgdXBmcm9udCBpbiBpbnRlbF9kcC5jIChWaWxsZSkKQ2hhbmdlcyBzaW5jZSB2MToKKiAg YWxsIHBsbCByZWxhdGVkIGZ1bmN0aW9ucyBpbnNpZGUgZGRpLmMKClNpZ25lZC1vZmYtYnk6IER1 cmdhZG9zcyBSIDxkdXJnYWRvc3MuckBpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZGRpLmMgfCAgNzMgKysrKysrKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHAuYyAgfCAxODAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KystCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCB8ICAgNSArKwogMyBmaWxlcyBj aGFuZ2VkLCAyNTYgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2RkaS5jCmluZGV4IDk2MjM0YzUuLmY3ZmEzZGIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2RkaS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rk aS5jCkBAIC0yMjY4LDYgKzIyNjgsNzkgQEAgaW50ZWxfZGRpX2luaXRfaGRtaV9jb25uZWN0b3Io c3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQpCiAJcmV0dXJuIGNvbm5l Y3RvcjsKIH0KIAoraW50IGludGVsX2J4dF91cGZyb250X2xpbmtfdHJhaW4oc3RydWN0IGludGVs X2RwICppbnRlbF9kcCwKKwkJCQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKK3sKKwlzdHJ1Y3Qg aW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IgPSBpbnRlbF9kcC0+YXR0YWNoZWRfY29ubmVjdG9y OworCXN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyID0gY29ubmVjdG9yLT5lbmNvZGVyOwor CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFz ZS5kZXYpOworCXN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbCAqcGxsOworCXN0cnVjdCBpbnRlbF9z aGFyZWRfZHBsbF9jb25maWcgdG1wX3BsbF9jb25maWc7CisJc3RydWN0IGJ4dF9jbGtfZGl2IGNs a19kaXYgPSB7MH07CisJc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqZGlnX3BvcnQgPSBkcF90 b19kaWdfcG9ydChpbnRlbF9kcCk7CisJZW51bSBpbnRlbF9kcGxsX2lkIGRwbGxfaWQgPSAoZW51 bSBpbnRlbF9kcGxsX2lkKWRpZ19wb3J0LT5wb3J0OworCXVpbnQ4X3QgbGlua19idywgbGFuZV9j b3VudDsKKworCWlmIChXQVJOX09OKCFjcnRjKSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwkvKiBJ bml0aWFsaXplIHdpdGggTWF4IExpbmsgcmF0ZSAmIGxhbmUgY291bnQgc3VwcG9ydGVkIGJ5IHBh bmVsICovCisJbGlua19idyA9ICBpbnRlbF9kcC0+ZHBjZFtEUF9NQVhfTElOS19SQVRFXTsKKwls YW5lX2NvdW50ID0gZHJtX2RwX21heF9sYW5lX2NvdW50KGludGVsX2RwLT5kcGNkKTsKKworCW11 dGV4X2xvY2soJmRldl9wcml2LT5kcGxsX2xvY2spOworCS8qCisJICogRklYTUU6IFdvcmtzIG9u bHkgZm9yIEJYVC4KKwkgKiBTZWxlY3QgdGhlIHJlcXVpcmVkIFBMTC4gVGhpcyB3b3JrcyBmb3Ig cGxhdGZvcm1zIHdoZXJlCisJICogdGhlcmUgaXMgbm8gc2hhcmVkIERQTEwuCisJICovCisJcGxs ID0gJmRldl9wcml2LT5zaGFyZWRfZHBsbHNbZHBsbF9pZF07CisJaWYgKFdBUk5fT04ocGxsLT5h Y3RpdmVfbWFzaykpIHsKKwkJRFJNX0VSUk9SKCJTaGFyZWQgRFBMTCBhbHJlYWR5IGluIHVzZS4g YWN0aXZlX21hc2s6JXhcbiIsIHBsbC0+YWN0aXZlX21hc2spOworCQltdXRleF91bmxvY2soJmRl dl9wcml2LT5kcGxsX2xvY2spOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwl0bXBfcGxsX2Nv bmZpZyA9IHBsbC0+Y29uZmlnOworCisJRFJNX0RFQlVHX0tNUygiVXNpbmcgcGlwZSAlYyB3aXRo IHBsbCAlc1xuIiwKKwkJCXBpcGVfbmFtZShjcnRjLT5waXBlKSwgcGxsLT5uYW1lKTsKKwlkbyB7 CisJCWNydGMtPmNvbmZpZy0+cG9ydF9jbG9jayA9IGRybV9kcF9id19jb2RlX3RvX2xpbmtfcmF0 ZShsaW5rX2J3KTsKKwkJY3J0Yy0+Y29uZmlnLT5sYW5lX2NvdW50ID0gbGFuZV9jb3VudDsKKwor CQlieHRfZGRpX2RwX3BsbF9kaXZpZGVycyhjcnRjLT5jb25maWctPnBvcnRfY2xvY2ssICZjbGtf ZGl2KTsKKwkJaWYgKCFieHRfZGRpX3NldF9kcGxsX2h3X3N0YXRlKGNydGMtPmNvbmZpZy0+cG9y dF9jbG9jaywKKwkJCQkJJmNsa19kaXYsICZwbGwtPmNvbmZpZy5od19zdGF0ZSkpIHsKKwkJCURS TV9FUlJPUigiQ291bGQgbm90IHNldHVwIERQTExcbiIpOworCQkJZ290byBleGl0X3BsbDsKKwkJ fQorCisJCS8qIEVuYWJsZSBQTEwgZm9sbG93ZWQgYnkgcG9ydCAqLworCQlwbGwtPmZ1bmNzLmVu YWJsZShkZXZfcHJpdiwgcGxsKTsKKwkJZW5jb2Rlci0+cHJlX2VuYWJsZShlbmNvZGVyKTsKKwor CQkvKiBDaGVjayBpZiBsaW5rIHRyYWluaW5nIHBhc3NlZDsgaWYgc28gdXBkYXRlIERQQ0QgKi8K KwkJaWYgKGludGVsX2RwLT50cmFpbl9zZXRfdmFsaWQpCisJCQlpbnRlbF9kcF91cGRhdGVfZHBj ZF9wYXJhbXMoaW50ZWxfZHApOworCisJCS8qIERpc2FibGUgcG9ydCBmb2xsb3dlZCBieSBQTEwg Zm9yIG5leHQgcmV0cnkvY2xlYW4gdXAgKi8KKwkJZW5jb2Rlci0+cG9zdF9kaXNhYmxlKGVuY29k ZXIpOworCQlwbGwtPmZ1bmNzLmRpc2FibGUoZGV2X3ByaXYsIHBsbCk7CisKKwl9IHdoaWxlICgh aW50ZWxfZHAtPnRyYWluX3NldF92YWxpZCAmJgorCQlpbnRlbF9kcF9nZXRfbGlua19yZXRyeV9w YXJhbXMoaW50ZWxfZHAsICZsYW5lX2NvdW50LCAmbGlua19idykpOworCisJRFJNX0RFQlVHX0tN UygiVXBmcm9udCBsaW5rIHRyYWluICVzOiBsYW5lczolZCBidzolZFxuIiwKKwlpbnRlbF9kcC0+ dHJhaW5fc2V0X3ZhbGlkID8gIlBhc3NlZCIgOiAiRmFpbGVkIiwgbGFuZV9jb3VudCwgbGlua19i dyk7CisKK2V4aXRfcGxsOgorCXBsbC0+Y29uZmlnID0gdG1wX3BsbF9jb25maWc7CisJbXV0ZXhf dW5sb2NrKCZkZXZfcHJpdi0+ZHBsbF9sb2NrKTsKKworCXJldHVybiBpbnRlbF9kcC0+dHJhaW5f c2V0X3ZhbGlkID8gMCA6IC0xOworfQorCiB2b2lkIGludGVsX2RkaV9pbml0KHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsIGVudW0gcG9ydCBwb3J0KQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kcC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwppbmRl eCA2MWVlMjI2Li41N2Q3MTU5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kcC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKQEAgLTE1OTUsNiAr MTU5NSw0MSBAQCB2b2lkIGludGVsX2RwX3NldF9saW5rX3BhcmFtcyhzdHJ1Y3QgaW50ZWxfZHAg KmludGVsX2RwLAogCWludGVsX2RwLT5sYW5lX2NvdW50ID0gcGlwZV9jb25maWctPmxhbmVfY291 bnQ7CiB9CiAKK3ZvaWQgaW50ZWxfZHBfdXBkYXRlX2RwY2RfcGFyYW1zKHN0cnVjdCBpbnRlbF9k cCAqaW50ZWxfZHApCit7CisJaW50ZWxfZHAtPmRwY2RbRFBfTUFYX0xBTkVfQ09VTlRdICY9IH5E UF9NQVhfTEFORV9DT1VOVF9NQVNLOworCWludGVsX2RwLT5kcGNkW0RQX01BWF9MQU5FX0NPVU5U XSB8PQorCQkJaW50ZWxfZHAtPmxhbmVfY291bnQgJiBEUF9NQVhfTEFORV9DT1VOVF9NQVNLOwor CisJaW50ZWxfZHAtPmRwY2RbRFBfTUFYX0xJTktfUkFURV0gPQorCQkJZHJtX2RwX2xpbmtfcmF0 ZV90b19id19jb2RlKGludGVsX2RwLT5saW5rX3JhdGUpOworfQorCitib29sIGludGVsX2RwX2dl dF9saW5rX3JldHJ5X3BhcmFtcyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAorCQkJdWludDhf dCAqbGFuZV9jb3VudCwgdWludDhfdCAqbGlua19idykKK3sKKwkvKgorCSAqIEFzIHBlciBEUDEu MyBTcGVjLCByZXRyeSBhbGwgbGluayByYXRlcyBmb3IgYSBwYXJ0aWN1bGFyCisJICogbGFuZSBj b3VudCB2YWx1ZSwgYmVmb3JlIHJlZHVjaW5nIG51bWJlciBvZiBsYW5lcy4KKwkgKi8KKwlpZiAo KmxpbmtfYncgPT0gRFBfTElOS19CV181XzQpIHsKKwkJKmxpbmtfYncgPSBEUF9MSU5LX0JXXzJf NzsKKwl9IGVsc2UgaWYgKCpsaW5rX2J3ID09IERQX0xJTktfQldfMl83KSB7CisJCSpsaW5rX2J3 ID0gRFBfTElOS19CV18xXzYyOworCX0gZWxzZSBpZiAoKmxhbmVfY291bnQgPT0gNCkgeworCQkq bGFuZV9jb3VudCA9IDI7CisJCSpsaW5rX2J3ID0gaW50ZWxfZHBfbWF4X2xpbmtfYncoaW50ZWxf ZHApOworCX0gZWxzZSBpZiAoKmxhbmVfY291bnQgPT0gMikgeworCQkqbGFuZV9jb3VudCA9IDE7 CisJCSpsaW5rX2J3ID0gaW50ZWxfZHBfbWF4X2xpbmtfYncoaW50ZWxfZHApOworCX0gZWxzZSB7 CisJCS8qIFRyaWVkIGFsbCBjb21iaW5hdGlvbnMsIHNvIGV4aXQgKi8KKwkJcmV0dXJuIGZhbHNl OworCX0KKworCXJldHVybiB0cnVlOworfQorCiBzdGF0aWMgdm9pZCBpbnRlbF9kcF9wcmVwYXJl KHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQogewogCXN0cnVjdCBkcm1fZGV2aWNlICpk ZXYgPSBlbmNvZGVyLT5iYXNlLmRldjsKQEAgLTQ1NDgsNiArNDU4MywxMzUgQEAgaW50ZWxfZHBf dW5zZXRfZWRpZChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQogCWludGVsX2RwLT5oYXNfYXVk aW8gPSBmYWxzZTsKIH0KIAorc3RhdGljIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICppbnRlbF9k cF91cGZyb250X2dldF9jcnRjX3N0YXRlKAorCQkJCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAor CQkJCXN0cnVjdCBkcm1fbW9kZXNldF9hY3F1aXJlX2N0eCAqY3R4KQoreworCXN0cnVjdCBkcm1f ZGV2aWNlICpkZXYgPSBjcnRjLT5iYXNlLmRldjsKKwlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAq c3RhdGU7CisJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGU7CisKKwlzdGF0ZSA9 IGRybV9hdG9taWNfc3RhdGVfYWxsb2MoZGV2KTsKKwlpZiAoIXN0YXRlKQorCQlyZXR1cm4gRVJS X1BUUigtRU5PTUVNKTsKKworCXN0YXRlLT5hY3F1aXJlX2N0eCA9IGN0eDsKKworCWNydGNfc3Rh dGUgPSBpbnRlbF9hdG9taWNfZ2V0X2NydGNfc3RhdGUoc3RhdGUsIGNydGMpOworCWlmIChJU19F UlIoY3J0Y19zdGF0ZSkpIHsKKwkJZHJtX2F0b21pY19zdGF0ZV9mcmVlKHN0YXRlKTsKKwkJc3Rh dGUgPSBOVUxMOworCX0KKworCXJldHVybiBjcnRjX3N0YXRlOworfQorCitzdGF0aWMgaW50IGlu dGVsX2RwX3VwZnJvbnRfY29tbWl0KHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAorCQkJCXN0cnVj dCBkcm1fbW9kZXNldF9hY3F1aXJlX2N0eCAqY3R4KQoreworCWludCByZXQ7CisJc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGU7CisJZW51bSBwaXBlIHBpcGUgPSBjcnRjLT5waXBl OworCisJY3J0Y19zdGF0ZSA9IGludGVsX2RwX3VwZnJvbnRfZ2V0X2NydGNfc3RhdGUoY3J0Yywg Y3R4KTsKKwlpZiAoSVNfRVJSKGNydGNfc3RhdGUpKQorCQlyZXR1cm4gUFRSX0VSUihjcnRjX3N0 YXRlKTsKKworCURSTV9ERUJVR19LTVMoIkRpc2FibGluZyBjcnRjICVjIGZvciB1cGZyb250IGxp bmsgdHJhaW5cbiIsIHBpcGVfbmFtZShwaXBlKSk7CisKKwljcnRjX3N0YXRlLT5iYXNlLmFjdGl2 ZSA9IGZhbHNlOworCXJldCA9IGRybV9hdG9taWNfY29tbWl0KGNydGNfc3RhdGUtPmJhc2Uuc3Rh dGUpOworCWlmIChyZXQpIHsKKwkJZHJtX2F0b21pY19zdGF0ZV9mcmVlKGNydGNfc3RhdGUtPmJh c2Uuc3RhdGUpOworCQljcnRjX3N0YXRlLT5iYXNlLnN0YXRlID0gTlVMTDsKKwl9CisJcmV0dXJu IHJldDsKK30KKworc3RhdGljIGludCBpbnRlbF9kcF91cGZyb250X2xpbmtfdHJhaW4oc3RydWN0 IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikKK3sKKwlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2Rw ID0gaW50ZWxfYXR0YWNoZWRfZHAoY29ubmVjdG9yKTsKKwlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9w b3J0ICppbnRlbF9kaWdfcG9ydCA9IGRwX3RvX2RpZ19wb3J0KGludGVsX2RwKTsKKwlzdHJ1Y3Qg aW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlciA9ICZpbnRlbF9kaWdfcG9ydC0+YmFzZTsKKwlz dHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gaW50ZWxfZW5jb2Rlci0+YmFzZS5kZXY7CisJc3RydWN0 IGRybV9tb2RlX2NvbmZpZyAqY29uZmlnID0gJmRldi0+bW9kZV9jb25maWc7CisJc3RydWN0IGRy bV9tb2Rlc2V0X2FjcXVpcmVfY3R4IGN0eDsKKwlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0 Y19zdGF0ZSwgKnRtcF9jcnRjX2NvbmZpZzsKKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0 YzsKKwlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBOVUxMOworCWJvb2wgY3J0Y19lbmFibGVkID0g ZmFsc2U7CisJaW50IHJldCwgc3RhdHVzID0gMDsKKworCWlmICghSVNfQlJPWFRPTihkZXYpKQor CQlyZXR1cm4gMDsKKworCWRybV9tb2Rlc2V0X2FjcXVpcmVfaW5pdCgmY3R4LCAwKTsKK3JldHJ5 OgorCXJldCA9IGRybV9tb2Rlc2V0X2xvY2soJmNvbmZpZy0+Y29ubmVjdGlvbl9tdXRleCwgJmN0 eCk7CisJaWYgKHJldCkKKwkJZ290byBleGl0X2ZhaWw7CisKKwlpZiAoY29ubmVjdG9yLT5zdGF0 ZS0+Y3J0YykgeworCQljcnRjID0gY29ubmVjdG9yLT5zdGF0ZS0+Y3J0YzsKKworCQlyZXQgPSBk cm1fbW9kZXNldF9sb2NrKCZjcnRjLT5tdXRleCwgJmN0eCk7CisJCWlmIChyZXQpCisJCQlnb3Rv IGV4aXRfZmFpbDsKKworCQljcnRjX2VuYWJsZWQgPSB0cnVlOworCX0gZWxzZSB7CisJCWNydGMg PSBpbnRlbF9nZXRfdW51c2VkX2NydGMoJmludGVsX2VuY29kZXItPmJhc2UsICZjdHgpOworCQlp ZiAoSVNfRVJSX09SX05VTEwoY3J0YykpIHsKKwkJCXJldCA9IFBUUl9FUlJfT1JfWkVSTyhjcnRj KTsKKwkJCURSTV9ERUJVR19LTVMoIk5vIGNydGMgYXZhaWxhYmxlIGZvciB1cGZyb250IGxpbmsg dHJhaW46JWRcbiIsIHJldCk7CisJCQlnb3RvIGV4aXRfZmFpbDsKKwkJfQorCQlpbnRlbF9lbmNv ZGVyLT5iYXNlLmNydGMgPSBjcnRjOworCX0KKworCWludGVsX2NydGMgPSB0b19pbnRlbF9jcnRj KGNydGMpOworCURSTV9ERUJVR19LTVMoIlVzaW5nIHBpcGUgJWMgZm9yIHVwZnJvbnQgbGluayB0 cmFpbmluZ1xuIiwKKwkJCQkJcGlwZV9uYW1lKGludGVsX2NydGMtPnBpcGUpKTsKKworCXJldCA9 IGRybV9tb2Rlc2V0X2xvY2soJmNydGMtPnByaW1hcnktPm11dGV4LCAmY3R4KTsKKwlpZiAocmV0 KQorCQlnb3RvIGV4aXRfZmFpbDsKKworCWlmIChjcnRjX2VuYWJsZWQpIHsKKwkJcmV0ID0gaW50 ZWxfZHBfdXBmcm9udF9jb21taXQoaW50ZWxfY3J0YywgJmN0eCk7CisJCWlmIChyZXQpCisJCQln b3RvIGV4aXRfZmFpbDsKKwl9CisKKwljcnRjX3N0YXRlID0gaW50ZWxfZHBfdXBmcm9udF9nZXRf Y3J0Y19zdGF0ZShpbnRlbF9jcnRjLCAmY3R4KTsKKwlpZiAoSVNfRVJSKGNydGNfc3RhdGUpKSB7 CisJCXJldCA9IFBUUl9FUlIoY3J0Y19zdGF0ZSk7CisJCWdvdG8gZXhpdF9mYWlsOworCX0KKwor CS8qIFNhdmUgdGhlIGV4aXN0aW5nIGNvbmZpZyAqLworCXRtcF9jcnRjX2NvbmZpZyA9IGludGVs X2NydGMtPmNvbmZpZzsKKwlpbnRlbF9jcnRjLT5jb25maWcgPSBjcnRjX3N0YXRlOworCisJaWYg KElTX0JST1hUT04oZGV2KSkKKwkJc3RhdHVzID0gaW50ZWxfYnh0X3VwZnJvbnRfbGlua190cmFp bihpbnRlbF9kcCwgaW50ZWxfY3J0Yyk7CisJCS8qIE90aGVyIHBsYXRmb3JtcyB1cGZyb250IGxp bmsgdHJhaW4gY2FsbCBnb2VzIGhlcmUuLiovCisKKwkvKiBSZXN0b3JlIHRoZSBzYXZlZCBjb25m aWcgKi8KKwlpbnRlbF9jcnRjLT5jb25maWcgPSB0bXBfY3J0Y19jb25maWc7CisJaW50ZWxfZW5j b2Rlci0+YmFzZS5jcnRjID0gY3J0Y19lbmFibGVkID8gY3J0YyA6IE5VTEw7CisJZHJtX2F0b21p Y19zdGF0ZV9mcmVlKGNydGNfc3RhdGUtPmJhc2Uuc3RhdGUpOworCitleGl0X2ZhaWw6CisJaWYg KHJldCA9PSAtRURFQURMSykgeworCQlkcm1fbW9kZXNldF9iYWNrb2ZmKCZjdHgpOworCQlnb3Rv IHJldHJ5OworCX0KKwlkcm1fbW9kZXNldF9kcm9wX2xvY2tzKCZjdHgpOworCWRybV9tb2Rlc2V0 X2FjcXVpcmVfZmluaSgmY3R4KTsKKwlyZXR1cm4gc3RhdHVzOworfQorCiBzdGF0aWMgdm9pZAog aW50ZWxfZHBfbG9uZ19wdWxzZShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICppbnRlbF9jb25uZWN0 b3IpCiB7CkBAIC00NTU4LDcgKzQ3MjIsNyBAQCBpbnRlbF9kcF9sb25nX3B1bHNlKHN0cnVjdCBp bnRlbF9jb25uZWN0b3IgKmludGVsX2Nvbm5lY3RvcikKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 ID0gY29ubmVjdG9yLT5kZXY7CiAJZW51bSBkcm1fY29ubmVjdG9yX3N0YXR1cyBzdGF0dXM7CiAJ ZW51bSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2RvbWFpbiBwb3dlcl9kb21haW47Ci0JYm9vbCByZXQ7 CisJYm9vbCByZXQsIGRvX3VwZnJvbnRfbGlua190cmFpbjsKIAl1OCBzaW5rX2lycV92ZWN0b3I7 CiAKIAlwb3dlcl9kb21haW4gPSBpbnRlbF9kaXNwbGF5X3BvcnRfYXV4X3Bvd2VyX2RvbWFpbihp bnRlbF9lbmNvZGVyKTsKQEAgLTQ2MDQsNyArNDc2OCwxMSBAQCBpbnRlbF9kcF9sb25nX3B1bHNl KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmludGVsX2Nvbm5lY3RvcikKIAkJZHJtX21vZGVzZXRf bG9jaygmZGV2LT5tb2RlX2NvbmZpZy5jb25uZWN0aW9uX211dGV4LCBOVUxMKTsKIAkJaW50ZWxf ZHBfY2hlY2tfbGlua19zdGF0dXMoaW50ZWxfZHApOwogCQlkcm1fbW9kZXNldF91bmxvY2soJmRl di0+bW9kZV9jb25maWcuY29ubmVjdGlvbl9tdXRleCk7Ci0JCWdvdG8gb3V0OworCQkvKgorCQkg KiBJZiB3ZSBhcmUgaGVyZSwgd2UgaGF2ZSAocmUpcmVhZCBEUENEIGFib3ZlIGFuZCBoZW5jZQor CQkgKiBuZWVkIHRvIGRvIHVwZnJvbnQgbGluayB0cmFpbiBhZ2Fpbi4KKwkJICovCisJCWdvdG8g dXBmcm9udDsKIAl9CiAKIAkvKgpAQCAtNDYzNCw2ICs0ODAyLDE0IEBAIGludGVsX2RwX2xvbmdf cHVsc2Uoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqaW50ZWxfY29ubmVjdG9yKQogCQkJRFJNX0RF QlVHX0RSSVZFUigiQ1Agb3Igc2luayBzcGVjaWZpYyBpcnEgdW5oYW5kbGVkXG4iKTsKIAl9CiAK K3VwZnJvbnQ6CisJLyogRG8gbm90IGRvIHVwZnJvbnQgbGluayB0cmFpbiwgaWYgaXQgaXMgYSBj b21wbGlhbmNlIHJlcXVlc3QgKi8KKwlkb191cGZyb250X2xpbmtfdHJhaW4gPQorCQlpbnRlbF9l bmNvZGVyLT50eXBlID09IElOVEVMX09VVFBVVF9ESVNQTEFZUE9SVCAmJgorCQlpbnRlbF9kcC0+ Y29tcGxpYW5jZV90ZXN0X3R5cGUgIT0gRFBfVEVTVF9MSU5LX1RSQUlOSU5HOworCisJaWYgKGRv X3VwZnJvbnRfbGlua190cmFpbiAmJiBpbnRlbF9kcF91cGZyb250X2xpbmtfdHJhaW4oY29ubmVj dG9yKSkKKwkJc3RhdHVzID0gY29ubmVjdG9yX3N0YXR1c19kaXNjb25uZWN0ZWQ7CiBvdXQ6CiAJ aWYgKHN0YXR1cyAhPSBjb25uZWN0b3Jfc3RhdHVzX2Nvbm5lY3RlZCkgewogCQlpbnRlbF9kcF91 bnNldF9lZGlkKGludGVsX2RwKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKaW5kZXggMjdiNWRj ZC4uYmY5ODQ3MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKQEAgLTEwODIsNiArMTA4Miw4 IEBAIHZvaWQgaW50ZWxfZGRpX2Nsb2NrX2dldChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2Rl ciwKIAkJCSBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcpOwogdm9pZCBpbnRl bF9kZGlfc2V0X3ZjX3BheWxvYWRfYWxsb2Moc3RydWN0IGRybV9jcnRjICpjcnRjLCBib29sIHN0 YXRlKTsKIHVpbnQzMl90IGRkaV9zaWduYWxfbGV2ZWxzKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxf ZHApOworaW50IGludGVsX2J4dF91cGZyb250X2xpbmtfdHJhaW4oc3RydWN0IGludGVsX2RwICpp bnRlbF9kcCwKKwkJCQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0Yyk7CiAKIC8qIGludGVsX2Zyb250 YnVmZmVyLmMgKi8KIHZvaWQgaW50ZWxfZmJfb2JqX2ludmFsaWRhdGUoc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QgKm9iaiwKQEAgLTEyODQsNiArMTI4Niw5IEBAIGJvb2wgaW50ZWxfZHBfaW5p dF9jb25uZWN0b3Ioc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQsCiAJ CQkgICAgIHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmludGVsX2Nvbm5lY3Rvcik7CiB2b2lkIGlu dGVsX2RwX3NldF9saW5rX3BhcmFtcyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAogCQkJICAg ICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKTsKK3ZvaWQgaW50 ZWxfZHBfdXBkYXRlX2RwY2RfcGFyYW1zKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApOworYm9v bCBpbnRlbF9kcF9nZXRfbGlua19yZXRyeV9wYXJhbXMoc3RydWN0IGludGVsX2RwICppbnRlbF9k cCwKKwkJCQl1aW50OF90ICpsYW5lX2NvdW50LCB1aW50OF90ICpsaW5rX2J3KTsKIHZvaWQgaW50 ZWxfZHBfc3RhcnRfbGlua190cmFpbihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKTsKIHZvaWQg aW50ZWxfZHBfc3RvcF9saW5rX3RyYWluKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApOwogdm9p ZCBpbnRlbF9kcF9zaW5rX2RwbXMoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwgaW50IG1vZGUp OwotLSAKMS45LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdm eAo=