From mboxrd@z Thu Jan 1 00:00:00 1970 From: Durgadoss R Subject: [PATCHv2 4/4] drm/i915/dp: Enable Upfront link training for typeC DP support on BXT Date: Mon, 1 Feb 2016 19:27:53 +0530 Message-ID: <1454335073-20405-5-git-send-email-durgadoss.r@intel.com> References: <1454335073-20405-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 B518B6E3D5 for ; Mon, 1 Feb 2016 05:24:07 -0800 (PST) In-Reply-To: <1454335073-20405-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 biB0aGVzZSBjYXNlcywgd2UgZGlzYWJsZSB0aGUKICBjcnRjLCBkbyB1cGZyb250IGxpbmsgdHJh aW5pbmcgYW5kIHRoZW4gcmUtZW5hYmxlIGl0IGJhY2suCiogQWxsIGxvY2FsIGNoYW5nZXMgbWFk ZSBmb3IgdXBmcm9udCBsaW5rIHRyYWluaW5nIGFyZSByZXNldAogIHRvIHRoZWlyIHByZXZpb3Vz IHZhbHVlcyBvbmNlIGl0IGlzIGRvbmU7IHNvIHRoYXQgdGhlCiAgc3Vic2VxdWVudCBtb2Rlc2V0 IGlzIG5vdCBhd2FyZSBvZiB0aGVzZSBjaGFuZ2VzLgoKU2lnbmVkLW9mZi1ieTogRHVyZ2Fkb3Nz IFIgPGR1cmdhZG9zcy5yQGludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kZGkuYyAgICAgfCAxMDIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyB8ICAzOCArKysrKysrKysrLQogZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHAuYyAgICAgIHwgMTIyICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKystCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgICAgfCAgMTAg KysrCiA0IGZpbGVzIGNoYW5nZWQsIDI3MCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMKaW5kZXggM2ZiOWEwMy4uY2M1Y2FkNSAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZGRpLmMKQEAgLTMyMTcsNiArMzIxNywxMDggQEAgaW50ZWxfZGRpX2luaXRf aGRtaV9jb25uZWN0b3Ioc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQp CiAJcmV0dXJuIGNvbm5lY3RvcjsKIH0KIAorc3RhdGljIHZvaWQgaW50ZWxfZGRpX2NvbW1pdF91 cGZyb250X3BsbF9jb25maWcoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKKwkJCQkJc3RydWN0 IGludGVsX3NoYXJlZF9kcGxsICpwbGwpCit7CisJc3RydWN0IGludGVsX3NoYXJlZF9kcGxsX2Nv bmZpZyB0bXBfY29uZmlnOworCisJLyoKKwkgKiBUaGUgc2hhcmVkX2RwbGxfY29uZmlnIGlzIGNv bXB1dGVkIGluIGludGVsX2dldF9zaGFyZWRfZHBsbCgpLgorCSAqIEl0IGlzIGNvbW1pdHRlZCB0 byAncGxsLT5jb25maWcnIGhlcmUgdG8gYmUgdXNlZCBpbgorCSAqIGludGVsX2VuYWJsZS9kaXNh YmxlX3NoYXJlZF9kcGxsIGZ1bmN0aW9ucy4gQmVmb3JlIGNvbW1pdHRpbmcuCisJICogc2F2ZSB0 aGUgZXhpc3RpbmcgY29uZmlnLCBzbyB0aGF0IG9uY2UgdXBmcm9udCBsaW5rIHRyYWluaW5nIGlz CisJICogZG9uZSwgdGhlIG9yaWdpbmFsIHZhbHVlIG9mICdwbGwtPmNvbmZpZycgY2FuIGJlIHJl c3RvcmVkLgorCSAqLworCXRtcF9jb25maWcgPSBwbGwtPmNvbmZpZzsKKwlwbGwtPmNvbmZpZyA9 IGludGVsX2RwLT51cGZyb250X3BsbF9jb25maWc7CisJaW50ZWxfZHAtPnVwZnJvbnRfcGxsX2Nv bmZpZyA9IHRtcF9jb25maWc7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwg KmludGVsX2RkaV9zZWxlY3RfdXBmcm9udF9wbGxfY29uZmlnKAorCQkJc3RydWN0IGludGVsX2Rw ICppbnRlbF9kcCwgc3RydWN0IGludGVsX2NydGMgKmNydGMpCit7CisJaWYgKCFpbnRlbF9kZGlf cGxsX3NlbGVjdChjcnRjLCBjcnRjLT5jb25maWcpKQorCQlyZXR1cm4gTlVMTDsKKworCXJldHVy biBpbnRlbF9jcnRjX3RvX3NoYXJlZF9kcGxsKGNydGMpOworfQorCitzdGF0aWMgdm9pZCBpbnRl bF9kZGlfY2xlYXJfdXBmcm9udF9wbGxfY29uZmlnKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAs CisJCQkJCXN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbCAqcGxsKQoreworCXBsbC0+Y29uZmlnID0g aW50ZWxfZHAtPnVwZnJvbnRfcGxsX2NvbmZpZzsKK30KKworaW50IGludGVsX2RkaV91cGZyb250 X2xpbmtfdHJhaW4oc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKKwkJCQlzdHJ1Y3QgaW50ZWxf Y3J0YyAqY3J0YykKK3sKKwlzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IgPSBpbnRl bF9kcC0+YXR0YWNoZWRfY29ubmVjdG9yOworCXN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVy ID0gY29ubmVjdG9yLT5lbmNvZGVyOworCXN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbCAqcGxsID0g TlVMTDsKKwlzdHJ1Y3QgZHJtX2NydGMgKmRybV9jcnRjID0gTlVMTDsKKwlzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqdG1wX2NydGNfY29uZmlnOworCXVpbnQ4X3QgbGlua19idywgbGFuZV9jb3Vu dDsKKworCWlmICghY3J0YykgeworCQlkcm1fY3J0YyA9IGludGVsX2dldF91bnVzZWRfY3J0Yygm ZW5jb2Rlci0+YmFzZSk7CisJCWlmICghZHJtX2NydGMpIHsKKwkJCURSTV9FUlJPUigiTm8gY3J0 YyBmb3IgdXBmcm9udCBsaW5rIHRyYWluaW5nXG4iKTsKKwkJCXJldHVybiAtRUlOVkFMOworCQl9 CisJCWVuY29kZXItPmJhc2UuY3J0YyA9IGRybV9jcnRjOworCQljcnRjID0gdG9faW50ZWxfY3J0 Yyhkcm1fY3J0Yyk7CisJfQorCisJLyogSW5pdGlhbGl6ZSB3aXRoIE1heCBMaW5rIHJhdGUgJiBs YW5lIGNvdW50IHN1cHBvcnRlZCBieSBwYW5lbCAqLworCWxpbmtfYncgPSAgaW50ZWxfZHAtPmRw Y2RbRFBfTUFYX0xJTktfUkFURV07CisJbGFuZV9jb3VudCA9IGRybV9kcF9tYXhfbGFuZV9jb3Vu dChpbnRlbF9kcC0+ZHBjZCk7CisKKwkvKiBTYXZlIHRoZSBjcnRjLT5jb25maWcgKi8KKwl0bXBf Y3J0Y19jb25maWcgPSBjcnRjLT5jb25maWc7CisKKwlEUk1fREVCVUdfS01TKCJVc2luZyBwaXBl ICVjXG4iLCBwaXBlX25hbWUoY3J0Yy0+cGlwZSkpOworCWRvIHsKKwkJY3J0Yy0+Y29uZmlnLT5w b3J0X2Nsb2NrID0gZHJtX2RwX2J3X2NvZGVfdG9fbGlua19yYXRlKGxpbmtfYncpOworCQljcnRj LT5jb25maWctPmxhbmVfY291bnQgPSBsYW5lX2NvdW50OworCisJCXBsbCA9IGludGVsX2RkaV9z ZWxlY3RfdXBmcm9udF9wbGxfY29uZmlnKGludGVsX2RwLCBjcnRjKTsKKwkJaWYgKCFwbGwpIHsK KwkJCURSTV9FUlJPUigiQ291bGQgbm90IGdldCBzaGFyZWQgRFBMTFxuIik7CisJCQlnb3RvIGV4 aXQ7CisJCX0KKworCQlpbnRlbF9kZGlfY29tbWl0X3VwZnJvbnRfcGxsX2NvbmZpZyhpbnRlbF9k cCwgcGxsKTsKKworCQkvKiBFbmFibGUgUExMIGZvbGxvd2VkIGJ5IHBvcnQgKi8KKwkJaW50ZWxf ZW5hYmxlX3NoYXJlZF9kcGxsKGNydGMpOworCQllbmNvZGVyLT5wcmVfZW5hYmxlKGVuY29kZXIp OworCisJCS8qIENoZWNrIGlmIGxpbmsgdHJhaW5pbmcgcGFzc2VkOyBpZiBzbyB1cGRhdGUgRFBD RCAqLworCQlpZiAoaW50ZWxfZHAtPnRyYWluX3NldF92YWxpZCkKKwkJCWludGVsX2RwX3VwZGF0 ZV9kcGNkX3BhcmFtcyhpbnRlbF9kcCk7CisKKwkJLyogRGlzYWJsZSBwb3J0IGZvbGxvd2VkIGJ5 IFBMTCBmb3IgbmV4dCByZXRyeS9jbGVhbiB1cCAqLworCQllbmNvZGVyLT5wb3N0X2Rpc2FibGUo ZW5jb2Rlcik7CisJCWludGVsX2Rpc2FibGVfc2hhcmVkX2RwbGwoY3J0Yyk7CisKKwkJaW50ZWxf ZGRpX2NsZWFyX3VwZnJvbnRfcGxsX2NvbmZpZyhpbnRlbF9kcCwgcGxsKTsKKworCX0gd2hpbGUg KCFpbnRlbF9kcC0+dHJhaW5fc2V0X3ZhbGlkICYmCisJCWludGVsX2RwX2dldF9saW5rX3JldHJ5 X3BhcmFtcyhpbnRlbF9kcCwgJmxhbmVfY291bnQsICZsaW5rX2J3KSk7CitleGl0OgorCS8qIFJl c2V0IGxvY2FsIGFzc29jaWF0aW9ucyBtYWRlICovCisJaWYgKGRybV9jcnRjKQorCQllbmNvZGVy LT5iYXNlLmNydGMgPSBOVUxMOworCisJLyogUmVzdG9yZSBjcnRjIGNvbmZpZyAqLworCWNydGMt PmNvbmZpZyA9IHRtcF9jcnRjX2NvbmZpZzsKKworCURSTV9ERUJVR19LTVMoIlVwZnJvbnQgbGlu ayB0cmFpbiAlczogbGFuZXM6JWQgYnc6JWRcbiIsCisJaW50ZWxfZHAtPnRyYWluX3NldF92YWxp ZCA/ICJQYXNzZWQiIDogIkZhaWxlZCIsIGxhbmVfY291bnQsIGxpbmtfYncpOworCisJcmV0dXJu IGludGVsX2RwLT50cmFpbl9zZXRfdmFsaWQgPyAwIDogLTE7Cit9CisKIHZvaWQgaW50ZWxfZGRp X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgZW51bSBwb3J0IHBvcnQpCiB7CiAJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rpc3BsYXkuYwppbmRleCBhZjUwZTYxLi42YTY1MGFhIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCkBAIC00MjM4LDE2ICs0MjM4LDQ1IEBAIHN0YXRpYyB2 b2lkIGxwdF9wY2hfZW5hYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIAlscHRfZW5hYmxlX3Bj aF90cmFuc2NvZGVyKGRldl9wcml2LCBjcHVfdHJhbnNjb2Rlcik7CiB9CiAKK3N0YXRpYwordm9p ZCBpbnRlbF9nZXRfbmV3X3NoYXJlZF9kcGxsX2NvbmZpZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsCisJCQkJICBzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGxfY29uZmlnICpzaGFy ZWRfZHBsbCkKK3sKKwllbnVtIGludGVsX2RwbGxfaWQgaTsKKworCS8qIENyZWF0ZSBhIG5ldyBz aGFyZWQgZHBsbCBjb25maWcgYnkgZHVwbGljYXRpbmcgcGxsLT5jb25maWcgKi8KKwlmb3IgKGkg PSAwOyBpIDwgZGV2X3ByaXYtPm51bV9zaGFyZWRfZHBsbDsgaSsrKSB7CisJCXN0cnVjdCBpbnRl bF9zaGFyZWRfZHBsbCAqcGxsID0gJmRldl9wcml2LT5zaGFyZWRfZHBsbHNbaV07CisJCXNoYXJl ZF9kcGxsW2ldID0gcGxsLT5jb25maWc7CisJCXNoYXJlZF9kcGxsW2ldLmNydGNfbWFzayA9IDA7 CisJfQorfQorCiBzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKmludGVsX2dldF9zaGFyZWRfZHBs bChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKIAkJCQkJCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpjcnRjX3N0YXRlKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGNy dGMtPmJhc2UuZGV2LT5kZXZfcHJpdmF0ZTsKIAlzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKnBs bDsKIAlzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGxfY29uZmlnICpzaGFyZWRfZHBsbDsKKwlzdHJ1 Y3QgaW50ZWxfc2hhcmVkX2RwbGxfY29uZmlnIHRtcF9jb25maWdbSTkxNV9OVU1fUExMU107CiAJ ZW51bSBpbnRlbF9kcGxsX2lkIGk7CiAJaW50IG1heCA9IGRldl9wcml2LT5udW1fc2hhcmVkX2Rw bGw7CiAKLQlzaGFyZWRfZHBsbCA9IGludGVsX2F0b21pY19nZXRfc2hhcmVkX2RwbGxfc3RhdGUo Y3J0Y19zdGF0ZS0+YmFzZS5zdGF0ZSk7CisJLyoKKwkgKiBpbnRlbF9nZXRfc2hhcmVkX2RwbGwg bmVlZHMgYSBzaGFyZWRfZHBsbFtdIHRvIHN0b3JlIHRoZSBjb21wdXRlZAorCSAqIGRwbGxfY29u ZmlnIHZhbHVlcy4gRm9yIGF0b21pYyBwYXRoLCBpdCBpcyBzdG9yZWQgaW4KKwkgKiBpbnRlbF9h dG9taWNfc3RhdGUtPnNoYXJlZF9kcGxsW10sIHdoaWNoIGlzIGxhdGVyIGNvbW1pdHRlZCB0bwor CSAqIGRldl9wcml2LT5zaGFyZWRfZHBsbFtdIGluIGF0b21pYyBjb21taXQuIEZvciBub24tYXRv bWljIHBhdGgsCisJICogKHdoZXJlIGludGVsX2F0b21pY19zdGF0ZSBkb2VzIG5vdCBleGlzdCkg dGhlIGRwbGxfY29uZmlnIHZhbHVlcworCSAqIGFyZSBzdG9yZWQgaW4gJ3RtcF9jb25maWdbXScg YW5kIGNvcGllZCB0byBlbmNvZGVyIHN0cnVjdHVyZXMKKwkgKiBmb3IgbGF0ZXIgdXNlLgorCSAq LworCWlmIChjcnRjX3N0YXRlLT5iYXNlLnN0YXRlKSB7CisJCXNoYXJlZF9kcGxsID0gaW50ZWxf YXRvbWljX2dldF9zaGFyZWRfZHBsbF9zdGF0ZShjcnRjX3N0YXRlLT5iYXNlLnN0YXRlKTsKKwl9 IGVsc2UgeworCQlpbnRlbF9nZXRfbmV3X3NoYXJlZF9kcGxsX2NvbmZpZyhkZXZfcHJpdiwgdG1w X2NvbmZpZyk7CisJCXNoYXJlZF9kcGxsID0gdG1wX2NvbmZpZzsKKwl9CiAKIAlpZiAoSEFTX1BD SF9JQlgoZGV2X3ByaXYtPmRldikpIHsKIAkJLyogSXJvbmxha2UgUENIIGhhcyBhIGZpeGVkIFBM TC0+UENIIHBpcGUgbWFwcGluZy4gKi8KQEAgLTQyNzcsNiArNDMwNiw3IEBAIHN0cnVjdCBpbnRl bF9zaGFyZWRfZHBsbCAqaW50ZWxfZ2V0X3NoYXJlZF9kcGxsKHN0cnVjdCBpbnRlbF9jcnRjICpj cnRjLAogCQlwbGwgPSAmZGV2X3ByaXYtPnNoYXJlZF9kcGxsc1tpXTsKIAkJRFJNX0RFQlVHX0tN UygiQ1JUQzolZCB1c2luZyBwcmUtYWxsb2NhdGVkICVzXG4iLAogCQkJY3J0Yy0+YmFzZS5iYXNl LmlkLCBwbGwtPm5hbWUpOworCiAJCVdBUk5fT04oc2hhcmVkX2RwbGxbaV0uY3J0Y19tYXNrKTsK IAogCQlnb3RvIGZvdW5kOwpAQCAtNDMyNSw2ICs0MzU1LDEyIEBAIGZvdW5kOgogCiAJc2hhcmVk X2RwbGxbaV0uY3J0Y19tYXNrIHw9IDEgPDwgY3J0Yy0+cGlwZTsKIAorCS8qCisJICogRm9yIERQ LCB0aGlzIHNoYXJlZCBkcGxsIGNvbmZpZyBpcyBzYXZlZCB0byBpbnRlbF9kcCwKKwkgKiBhbmQg dXNlZCBieSB1cGZyb250IGxpbmsgdHJhaW4gbG9naWMgc3Vic2VxdWVudGx5LgorCSAqLworCWlu dGVsX2RwX3VwZGF0ZV9zaGFyZWRfZHBsbF9jb25maWcoY3J0Y19zdGF0ZSwgc2hhcmVkX2RwbGxb aV0pOworCiAJcmV0dXJuIHBsbDsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHAuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKaW5kZXggZTJi ZWE3MTAuLmNjN2I2ZjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rw LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwpAQCAtMTY3OSw2ICsxNjc5 LDU1IEBAIHZvaWQgaW50ZWxfZHBfc2V0X2xpbmtfcGFyYW1zKHN0cnVjdCBpbnRlbF9kcCAqaW50 ZWxfZHAsCiAJaW50ZWxfZHAtPmxhbmVfY291bnQgPSBwaXBlX2NvbmZpZy0+bGFuZV9jb3VudDsK IH0KIAordm9pZCBpbnRlbF9kcF91cGRhdGVfZHBjZF9wYXJhbXMoc3RydWN0IGludGVsX2RwICpp bnRlbF9kcCkKK3sKKwlpbnRlbF9kcC0+ZHBjZFtEUF9NQVhfTEFORV9DT1VOVF0gJj0gfkRQX01B WF9MQU5FX0NPVU5UX01BU0s7CisJaW50ZWxfZHAtPmRwY2RbRFBfTUFYX0xBTkVfQ09VTlRdIHw9 CisJCQlpbnRlbF9kcC0+bGFuZV9jb3VudCAmIERQX01BWF9MQU5FX0NPVU5UX01BU0s7CisKKwlp bnRlbF9kcC0+ZHBjZFtEUF9NQVhfTElOS19SQVRFXSA9CisJCQlkcm1fZHBfbGlua19yYXRlX3Rv X2J3X2NvZGUoaW50ZWxfZHAtPmxpbmtfcmF0ZSk7Cit9CisKK2Jvb2wgaW50ZWxfZHBfZ2V0X2xp bmtfcmV0cnlfcGFyYW1zKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCisJCQl1aW50OF90ICps YW5lX2NvdW50LCB1aW50OF90ICpsaW5rX2J3KQoreworCS8qCisJICogQXMgcGVyIERQMS4zIFNw ZWMsIHJldHJ5IGFsbCBsaW5rIHJhdGVzIGZvciBhIHBhcnRpY3VsYXIKKwkgKiBsYW5lIGNvdW50 IHZhbHVlLCBiZWZvcmUgcmVkdWNpbmcgbnVtYmVyIG9mIGxhbmVzLgorCSAqLworCWlmICgqbGlu a19idyA9PSBEUF9MSU5LX0JXXzVfNCkgeworCQkqbGlua19idyA9IERQX0xJTktfQldfMl83Owor CX0gZWxzZSBpZiAoKmxpbmtfYncgPT0gRFBfTElOS19CV18yXzcpIHsKKwkJKmxpbmtfYncgPSBE UF9MSU5LX0JXXzFfNjI7CisJfSBlbHNlIGlmICgqbGFuZV9jb3VudCA9PSA0KSB7CisJCSpsYW5l X2NvdW50ID0gMjsKKwkJKmxpbmtfYncgPSBpbnRlbF9kcF9tYXhfbGlua19idyhpbnRlbF9kcCk7 CisJfSBlbHNlIGlmICgqbGFuZV9jb3VudCA9PSAyKSB7CisJCSpsYW5lX2NvdW50ID0gMTsKKwkJ KmxpbmtfYncgPSBpbnRlbF9kcF9tYXhfbGlua19idyhpbnRlbF9kcCk7CisJfSBlbHNlIHsKKwkJ LyogVHJpZWQgYWxsIGNvbWJpbmF0aW9ucywgc28gZXhpdCAqLworCQlyZXR1cm4gZmFsc2U7CisJ fQorCisJcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgaW50ZWxfZHBfdXBkYXRlX3NoYXJlZF9kcGxs X2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcsCisJCQkJc3RydWN0 IGludGVsX3NoYXJlZF9kcGxsX2NvbmZpZyBjb25maWcpCit7CisJc3RydWN0IGludGVsX2VuY29k ZXIgKmVuY29kZXI7CisJc3RydWN0IGludGVsX2RwICppbnRlbF9kcDsKKworCWVuY29kZXIgPSBp bnRlbF9kZGlfZ2V0X2NydGNfbmV3X2VuY29kZXIocGlwZV9jb25maWcpOworCWlmICghZW5jb2Rl ciB8fCBlbmNvZGVyLT50eXBlICE9IElOVEVMX09VVFBVVF9ESVNQTEFZUE9SVCkKKwkJcmV0dXJu OworCisJaW50ZWxfZHAgPSBlbmNfdG9faW50ZWxfZHAoJmVuY29kZXItPmJhc2UpOworCWludGVs X2RwLT51cGZyb250X3BsbF9jb25maWcgPSBjb25maWc7Cit9CisKIHN0YXRpYyB2b2lkIGludGVs X2RwX3ByZXBhcmUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCiB7CiAJc3RydWN0IGRy bV9kZXZpY2UgKmRldiA9IGVuY29kZXItPmJhc2UuZGV2OwpAQCAtNDYwMSw2ICs0NjUwLDY2IEBA IGludGVsX2RwX3Vuc2V0X2VkaWQoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKIAlpbnRlbF9k cC0+aGFzX2F1ZGlvID0gZmFsc2U7CiB9CiAKK3N0YXRpYyBib29sIGludGVsX2RwX3VwZnJvbnRf bGlua190cmFpbihzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQoreworCXN0cnVjdCBp bnRlbF9kcCAqaW50ZWxfZHAgPSBpbnRlbF9hdHRhY2hlZF9kcChjb25uZWN0b3IpOworCXN0cnVj dCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0ID0gZHBfdG9fZGlnX3BvcnQoaW50 ZWxfZHApOworCXN0cnVjdCBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyID0gJmludGVsX2Rp Z19wb3J0LT5iYXNlOworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBpbnRlbF9lbmNvZGVyLT5i YXNlLmRldjsKKwlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBpbnRlbF9kaWdfcG9ydC0+YmFzZS5i YXNlLmNydGM7CisJc3RydWN0IGRybV9tb2RlX2NvbmZpZyAqY29uZmlnID0gJmRldi0+bW9kZV9j b25maWc7CisJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSBjcnRjID8gdG9faW50ZWxf Y3J0YyhjcnRjKSA6IE5VTEw7CisJc3RydWN0IGRybV9tb2Rlc2V0X2FjcXVpcmVfY3R4IGN0eCwg Km9sZF9jdHggPSBOVUxMOworCWJvb2wgbmVlZF9kcG1zX29uID0gZmFsc2U7CisJaW50IHJldDsK KworCWlmICghSVNfQlJPWFRPTihkZXYpKQorCQlyZXR1cm4gdHJ1ZTsKKworCS8qCisJICogT24g aG90cGx1ZyBjYXNlcywgd2UgY2FsbCBfdXBmcm9udF9saW5rX3RyYWluIGRpcmVjdGx5LgorCSAq IEluIGNvbm5lY3RlZCBib290IHNjZW5hcmlvcyAoYm9vdCB3aXRoIHtNSVBJL2VEUH0gKyBEUCks CisJICogQklPUyB0eXBpY2FsbHkgYnJpbmdzIHVwIERQLiBIZW5jZSwgd2UgZGlzYWJsZSB0aGUg Y3J0YworCSAqIHRvIGRvIF91cGZyb250X2xpbmtfdHJhaW5pbmcgYW5kIHRoZW4gcmUtZW5hYmxl IGl0IGJhY2suCisJICovCisJaWYgKGNydGMgJiYgY3J0Yy0+ZW5hYmxlZCAmJiBpbnRlbF9jcnRj LT5hY3RpdmUpIHsKKwkJb2xkX2N0eCA9IGNydGMtPmFjcXVpcmVfY3R4OworCQlkcm1fbW9kZXNl dF9hY3F1aXJlX2luaXQoJmN0eCwgMCk7CityZXRyeToKKwkJcmV0ID0gZHJtX21vZGVzZXRfbG9j aygmY29uZmlnLT5jb25uZWN0aW9uX211dGV4LCAmY3R4KTsKKwkJaWYgKHJldCA9PSAtRURFQURM SykgeworCQkJZHJtX21vZGVzZXRfYmFja29mZigmY3R4KTsKKwkJCWdvdG8gcmV0cnk7CisJCX0K KworCQljcnRjLT5hY3F1aXJlX2N0eCA9ICZjdHg7CisJCXJldCA9IGRybV9hdG9taWNfaGVscGVy X2Nvbm5lY3Rvcl9kcG1zKGNvbm5lY3RvciwgRFJNX01PREVfRFBNU19PRkYpOworCQlpZiAocmV0 KSB7CisJCQlEUk1fRVJST1IoIkRQTVMgb2ZmIGZhaWxlZDolZFxuIiwgcmV0KTsKKwkJCWdvdG8g ZXhpdF91bmxvY2s7CisJCX0KKworCQluZWVkX2RwbXNfb24gPSB0cnVlOworCX0KKworCWlmIChI QVNfRERJKGRldikpCisJCXJldCA9IGludGVsX2RkaV91cGZyb250X2xpbmtfdHJhaW4oaW50ZWxf ZHAsIGludGVsX2NydGMpOworCQkvKiBPdGhlciBwbGF0Zm9ybXMgdXBmcm9udCBsaW5rIHRyYWlu IGNhbGwgZ29lcyBoZXJlLi4qLworCisJaWYgKCFuZWVkX2RwbXNfb24pCisJCXJldHVybiByZXQ7 CisKKwlyZXQgPSBkcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfZHBtcyhjb25uZWN0b3IsIERS TV9NT0RFX0RQTVNfT04pOworCWlmIChyZXQpCisJCURSTV9FUlJPUigiRFBNUyBvbiBmYWlsZWQ6 JWRcbiIsIHJldCk7CisKK2V4aXRfdW5sb2NrOgorCWRybV9tb2Rlc2V0X2Ryb3BfbG9ja3MoJmN0 eCk7CisJZHJtX21vZGVzZXRfYWNxdWlyZV9maW5pKCZjdHgpOworCWNydGMtPmFjcXVpcmVfY3R4 ID0gb2xkX2N0eDsKKwlyZXR1cm4gcmV0OworfQorCiBzdGF0aWMgZW51bSBkcm1fY29ubmVjdG9y X3N0YXR1cwogaW50ZWxfZHBfZGV0ZWN0KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3Is IGJvb2wgZm9yY2UpCiB7CkBAIC00NjEwLDcgKzQ3MTksOCBAQCBpbnRlbF9kcF9kZXRlY3Qoc3Ry dWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwgYm9vbCBmb3JjZSkKIAlzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2ID0gY29ubmVjdG9yLT5kZXY7CiAJZW51bSBkcm1fY29ubmVjdG9yX3N0YXR1cyBz dGF0dXM7CiAJZW51bSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2RvbWFpbiBwb3dlcl9kb21haW47Ci0J Ym9vbCByZXQ7CisJYm9vbCBkb191cGZyb250X2xpbmtfdHJhaW47CisJaW50IHJldDsKIAl1OCBz aW5rX2lycV92ZWN0b3I7CiAKIAlEUk1fREVCVUdfS01TKCJbQ09OTkVDVE9SOiVkOiVzXVxuIiwK QEAgLTQ2ODQsNiArNDc5NCwxNiBAQCBpbnRlbF9kcF9kZXRlY3Qoc3RydWN0IGRybV9jb25uZWN0 b3IgKmNvbm5lY3RvciwgYm9vbCBmb3JjZSkKIAkJCURSTV9ERUJVR19EUklWRVIoIkNQIG9yIHNp bmsgc3BlY2lmaWMgaXJxIHVuaGFuZGxlZFxuIik7CiAJfQogCisJLyogRG8gbm90IGRvIHVwZnJv bnQgbGluayB0cmFpbiwgaWYgaXQgaXMgYSBjb21wbGlhbmNlIHJlcXVlc3QgKi8KKwlkb191cGZy b250X2xpbmtfdHJhaW4gPQorCQlpbnRlbF9lbmNvZGVyLT50eXBlID09IElOVEVMX09VVFBVVF9E SVNQTEFZUE9SVCAmJgorCQlpbnRlbF9kcC0+Y29tcGxpYW5jZV90ZXN0X3R5cGUgIT0gRFBfVEVT VF9MSU5LX1RSQUlOSU5HOworCisJaWYgKGRvX3VwZnJvbnRfbGlua190cmFpbikgeworCQlyZXQg PSBpbnRlbF9kcF91cGZyb250X2xpbmtfdHJhaW4oY29ubmVjdG9yKTsKKwkJaWYgKHJldCkKKwkJ CXN0YXR1cyA9IGNvbm5lY3Rvcl9zdGF0dXNfZGlzY29ubmVjdGVkOworCX0KIG91dDoKIAlpbnRl bF9kaXNwbGF5X3Bvd2VyX3B1dCh0b19pOTE1KGRldiksIHBvd2VyX2RvbWFpbik7CiAJcmV0dXJu IHN0YXR1czsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKaW5kZXggOWZlN2M0Yi4uYzVjYTRhYiAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKQEAgLTgxMiw2ICs4MTIsOSBAQCBzdHJ1Y3QgaW50 ZWxfZHAgewogCXVuc2lnbmVkIGxvbmcgY29tcGxpYW5jZV90ZXN0X3R5cGU7CiAJdW5zaWduZWQg bG9uZyBjb21wbGlhbmNlX3Rlc3RfZGF0YTsKIAlib29sIGNvbXBsaWFuY2VfdGVzdF9hY3RpdmU7 CisKKwkvKiBVc2VkIHRvIHN0b3JlIHBsbCBjb25maWcgZm9yIHVwZnJvbnQgbGluayB0cmFpbmlu ZyAqLworCXN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbF9jb25maWcgdXBmcm9udF9wbGxfY29uZmln OwogfTsKIAogc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCB7CkBAIC0xMDMxLDYgKzEwMzQsOCBA QCB2b2lkIGludGVsX2RkaV9jbG9ja19nZXQoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIs CiAJCQkgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKTsKIHZvaWQgaW50ZWxf ZGRpX3NldF92Y19wYXlsb2FkX2FsbG9jKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywgYm9vbCBzdGF0 ZSk7CiB1aW50MzJfdCBkZGlfc2lnbmFsX2xldmVscyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2Rw KTsKK2ludCBpbnRlbF9kZGlfdXBmcm9udF9saW5rX3RyYWluKHN0cnVjdCBpbnRlbF9kcCAqaW50 ZWxfZHAsCisJCQkJc3RydWN0IGludGVsX2NydGMgKmNydGMpOwogCiAvKiBpbnRlbF9mcm9udGJ1 ZmZlci5jICovCiB2b2lkIGludGVsX2ZiX29ial9pbnZhbGlkYXRlKHN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0ICpvYmosCkBAIC0xMjM5LDYgKzEyNDQsOSBAQCBib29sIGludGVsX2RwX2luaXRf Y29ubmVjdG9yKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0LAogCQkJ ICAgICBzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICppbnRlbF9jb25uZWN0b3IpOwogdm9pZCBpbnRl bF9kcF9zZXRfbGlua19wYXJhbXMoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKIAkJCSAgICAg IGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZyk7Cit2b2lkIGludGVs X2RwX3VwZGF0ZV9kcGNkX3BhcmFtcyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKTsKK2Jvb2wg aW50ZWxfZHBfZ2V0X2xpbmtfcmV0cnlfcGFyYW1zKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAs CisJCQkJdWludDhfdCAqbGFuZV9jb3VudCwgdWludDhfdCAqbGlua19idyk7CiB2b2lkIGludGVs X2RwX3N0YXJ0X2xpbmtfdHJhaW4oc3RydWN0IGludGVsX2RwICppbnRlbF9kcCk7CiB2b2lkIGlu dGVsX2RwX3N0b3BfbGlua190cmFpbihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKTsKIHZvaWQg aW50ZWxfZHBfc2lua19kcG1zKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsIGludCBtb2RlKTsK QEAgLTEyNDYsNiArMTI1NCw4IEBAIHZvaWQgaW50ZWxfZHBfZW5jb2Rlcl9kZXN0cm95KHN0cnVj dCBkcm1fZW5jb2RlciAqZW5jb2Rlcik7CiBpbnQgaW50ZWxfZHBfc2lua19jcmMoc3RydWN0IGlu dGVsX2RwICppbnRlbF9kcCwgdTggKmNyYyk7CiBib29sIGludGVsX2RwX2NvbXB1dGVfY29uZmln KHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAogCQkJICAgICBzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqcGlwZV9jb25maWcpOwordm9pZCBpbnRlbF9kcF91cGRhdGVfc2hhcmVkX2RwbGxf Y29uZmlnKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZywKKwkJCQlzdHJ1Y3Qg aW50ZWxfc2hhcmVkX2RwbGxfY29uZmlnIGNvbmZpZyk7CiBib29sIGludGVsX2RwX2lzX2VkcChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBlbnVtIHBvcnQgcG9ydCk7CiBlbnVtIGlycXJldHVybiBp bnRlbF9kcF9ocGRfcHVsc2Uoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3Bv cnQsCiAJCQkJICBib29sIGxvbmdfaHBkKTsKLS0gCjEuOS4xCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVs LWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=