From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ander Conselvan De Oliveira Subject: Re: [PATCH 7/7] drm/i915/dp: Enable Upfront link training for typeC DP support on BXT Date: Tue, 12 Jan 2016 11:37:50 +0200 Message-ID: <1452591470.2921.19.camel@gmail.com> References: <1449826768-19415-1-git-send-email-durgadoss.r@intel.com> <1449826768-19415-8-git-send-email-durgadoss.r@intel.com> <1452525336.2737.38.camel@gmail.com> <4D68720C2E767A4AA6A8796D42C8EB590936FF5A@BGSMSX101.gar.corp.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-pa0-f65.google.com (mail-pa0-f65.google.com [209.85.220.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id 855998800B for ; Tue, 12 Jan 2016 01:37:55 -0800 (PST) Received: by mail-pa0-f65.google.com with SMTP id pv5so26605463pac.0 for ; Tue, 12 Jan 2016 01:37:55 -0800 (PST) In-Reply-To: <4D68720C2E767A4AA6A8796D42C8EB590936FF5A@BGSMSX101.gar.corp.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "R, Durgadoss" , "intel-gfx@lists.freedesktop.org" List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCAyMDE2LTAxLTExIGF0IDE3OjUzICswMDAwLCBSLCBEdXJnYWRvc3Mgd3JvdGU6Cj4g PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+ID4gRnJvbTogQW5kZXIgQ29uc2VsdmFuIERl IE9saXZlaXJhIFttYWlsdG86Y29uc2VsdmFuMkBnbWFpbC5jb21dCj4gPiBTZW50OiBNb25kYXks IEphbnVhcnkgMTEsIDIwMTYgODo0NiBQTQo+ID4gVG86IFIsIER1cmdhZG9zczsgaW50ZWwtZ2Z4 QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+ID4gU3ViamVjdDogUmU6IFtQQVRDSCA3LzddIGRybS9p OTE1L2RwOiBFbmFibGUgVXBmcm9udCBsaW5rIHRyYWluaW5nIGZvciB0eXBlQwo+ID4gRFAgc3Vw cG9ydCBvbiBCWFQKPiA+IAo+ID4gT24gRnJpLCAyMDE1LTEyLTExIGF0IDE1OjA5ICswNTMwLCBE dXJnYWRvc3MgUiB3cm90ZToKPiA+ID4gVG8gc3VwcG9ydCBVU0IgdHlwZSBDIGFsdGVybmF0ZSBE UCBtb2RlLCB0aGUgZGlzcGxheSBkcml2ZXIgbmVlZHMgdG8KPiA+ID4ga25vdyB0aGUgbnVtYmVy IG9mIGxhbmVzIHJlcXVpcmVkIGJ5IHRoZSBEUCBwYW5lbCBhcyB3ZWxsIGFzIG51bWJlcgo+ID4g PiBvZiBsYW5lcyB0aGF0IGNhbiBiZSBzdXBwb3J0ZWQgYnkgdGhlIHR5cGUtQyBjYWJsZS4gU29t ZXRpbWVzLCB0aGUKPiA+ID4gdHlwZS1DIGNhYmxlIG1heSBsaW1pdCB0aGUgYmFuZHdpZHRoIGV2 ZW4gaWYgUGFuZWwgY2FuIHN1cHBvcnQKPiA+ID4gbW9yZSBsYW5lcy4gVG8gYWRkcmVzcyB0aGVz ZSBzY2VuYXJpb3MsIHRoZSBkaXNwbGF5IGRyaXZlciB3aWxsCj4gPiA+IHN0YXJ0IGxpbmsgdHJh aW5pbmcgd2l0aCBtYXggbGFuZXMsIGFuZCBpZiB0aGF0IGZhaWxzLCB0aGUgZHJpdmVyCj4gPiA+ IGZhbGxzIGJhY2sgdG8geDIgbGFuZXM7IGFuZCByZXBlYXRzIHRoaXMgcHJvY2VkdXJlIGZvciBh bGwKPiA+ID4gYmFuZHdpZHRoL2xhbmUgY29uZmlndXJhdGlvbnMuCj4gPiA+IAo+ID4gPiAqIFNp bmNlIGxpbmsgdHJhaW5pbmcgaXMgZG9uZSBiZWZvcmUgbW9kZXNldCBvbmx5IHRoZSBwb3J0Cj4g PiA+ICAgKGFuZCBub3QgcGlwZS9wbGFuZXMpIGFuZCBpdHMgYXNzb2NpYXRlZCBQTExzIGFyZSBl bmFibGVkLgo+ID4gPiAqIE9uIERQIGhvdHBsdWc6IERpcmVjdGx5IHN0YXJ0IGxpbmsgdHJhaW5p bmcgb24gdGhlIGNydGMKPiA+ID4gICBhc3NvY2lhdGVkIHdpdGggdGhlIERQIGVuY29kZXIuCj4g PiA+ICogT24gQ29ubmVjdGVkIGJvb3Qgc2NlbmFyaW9zOiBXaGVuIGJvb3RlZCB3aXRoIGFuIExG UCBhbmQgYSBEUCwKPiA+ID4gICB0eXBpY2FsbHksIEJJT1MgYnJpbmdzIHVwIERQLiBJbiB0aGVz ZSBjYXNlcywgd2UgZGlzYWJsZSB0aGUKPiA+ID4gICBjcnRjLCBkbyB1cGZyb250IGxpbmsgdHJh aW5pbmcgYW5kIHRoZW4gcmUtZW5hYmxlIGl0IGJhY2suCj4gPiA+ICogQWxsIGxvY2FsIGNoYW5n ZXMgbWFkZSBmb3IgdXBmcm9udCBsaW5rIHRyYWluaW5nIGFyZSByZXNldAo+ID4gPiAgIHRvIHRo ZWlyIHByZXZpb3VzIHZhbHVlcyBvbmNlIGl0IGlzIGRvbmU7IHNvIHRoYXQgdGhlCj4gPiA+ICAg c3Vic2VxdWVudCBtb2Rlc2V0IGlzIG5vdCBhd2FyZSBvZiB0aGVzZSBjaGFuZ2VzLgo+ID4gPiAK PiA+ID4gU2lnbmVkLW9mZi1ieTogRHVyZ2Fkb3NzIFIgPGR1cmdhZG9zcy5yQGludGVsLmNvbT4K PiA+ID4gLS0tCj4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYyB8IDgxCj4g PiA+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiA+ID4gIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgIHwgNzcKPiA+ID4gKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKy0KPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Ry di5oIHwgIDIgKwo+ID4gPiAgMyBmaWxlcyBjaGFuZ2VkLCAxNTkgaW5zZXJ0aW9ucygrKSwgMSBk ZWxldGlvbigtKQo+ID4gPiAKPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2RkaS5jCj4gPiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMKPiA+ ID4gaW5kZXggNjMyMDQ0YS4uNDNlZmMyNiAxMDA2NDQKPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZGRpLmMKPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZGRpLmMKPiA+ID4gQEAgLTMyNzQsNiArMzI3NCw4NyBAQCBpbnRlbF9kZGlfaW5pdF9oZG1p X2Nvbm5lY3RvcihzdHJ1Y3QKPiA+ID4gaW50ZWxfZGlnaXRhbF9wb3J0Cj4gPiA+ICppbnRlbF9k aWdfcG9ydCkKPiA+ID4gIAlyZXR1cm4gY29ubmVjdG9yOwo+ID4gPiAgfQo+ID4gPiAKPiA+ID4g K2Jvb2wgaW50ZWxfZGRpX3VwZnJvbnRfbGlua190cmFpbihzdHJ1Y3QgaW50ZWxfZHAgKmludGVs X2RwLAo+ID4gPiArCQkJCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQo+ID4gPiArewo+ID4gPiAr CXN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRpZ19wb3J0ID0gZHBfdG9fZGlnX3BvcnQoaW50 ZWxfZHApOwo+ID4gPiArCXN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciA9IGludGVs X2RwLT5hdHRhY2hlZF9jb25uZWN0b3I7Cj4gPiA+ICsJc3RydWN0IGludGVsX2VuY29kZXIgKmVu Y29kZXIgPSBjb25uZWN0b3ItPmVuY29kZXI7Cj4gPiA+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRl diA9IGVuY29kZXItPmJhc2UuZGV2Owo+ID4gPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gPiA+ICsJc3RydWN0IGludGVsX3NoYXJlZF9k cGxsICpwbGw7Cj4gPiA+ICsJc3RydWN0IGRybV9jcnRjICpkcm1fY3J0YyA9IE5VTEw7Cj4gPiA+ ICsJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnRtcF9jcnRjX2NvbmZpZzsKPiA+ID4gKwlzdHJ1 Y3QgaW50ZWxfZHBsbF9od19zdGF0ZSB0bXBfZHBsbF9od19zdGF0ZTsKPiA+ID4gKwl1aW50OF90 IGxpbmtfYncsIGxhbmVfY291bnQ7Cj4gPiA+ICsKPiA+ID4gKwlpZiAoIWNydGMpIHsKPiA+ID4g KwkJZHJtX2NydGMgPSBpbnRlbF9nZXRfdW51c2VkX2NydGMoJmVuY29kZXItPmJhc2UpOwo+ID4g PiArCQlpZiAoIWRybV9jcnRjKSB7Cj4gPiA+ICsJCQlEUk1fRVJST1IoIk5vIGNydGMgZm9yIHVw ZnJvbnQgbGluayB0cmFpbmluZ1xuIik7Cj4gPiA+ICsJCQlyZXR1cm4gZmFsc2U7Cj4gPiA+ICsJ CX0KPiA+ID4gKwkJZW5jb2Rlci0+YmFzZS5jcnRjID0gZHJtX2NydGM7Cj4gPiA+ICsJCWNydGMg PSB0b19pbnRlbF9jcnRjKGRybV9jcnRjKTsKPiA+ID4gKwl9Cj4gPiA+ICsKPiA+ID4gKwkvKiBJ bml0aWFsaXplIHdpdGggTWF4IExpbmsgcmF0ZSAmIGxhbmUgY291bnQgc3VwcG9ydGVkIGJ5IHBh bmVsCj4gPiA+ICovCj4gPiA+ICsJbGlua19idyA9ICBpbnRlbF9kcC0+ZHBjZFtEUF9NQVhfTElO S19SQVRFXTsKPiA+ID4gKwlsYW5lX2NvdW50ID0gZHJtX2RwX21heF9sYW5lX2NvdW50KGludGVs X2RwLT5kcGNkKTsKPiA+ID4gKwo+ID4gPiArCS8qIFNhdmUgdGhlIGNydGMtPmNvbmZpZyAqLwo+ ID4gPiArCXRtcF9jcnRjX2NvbmZpZyA9IGNydGMtPmNvbmZpZzsKPiA+ID4gKwl0bXBfZHBsbF9o d19zdGF0ZSA9IGNydGMtPmNvbmZpZy0+ZHBsbF9od19zdGF0ZTsKPiA+ID4gKwo+ID4gPiArCS8q IFNlbGVjdCB0aGUgc2hhcmVkIERQTEwgdG8gdXNlIGZvciB0aGlzIHBvcnQgKi8KPiA+ID4gKwlp bnRlbF9nZXRfZGRpX3BsbChkZXZfcHJpdiwgZGlnX3BvcnQtPnBvcnQsIGNydGMtPmNvbmZpZyk7 Cj4gPiA+ICsJcGxsID0gaW50ZWxfY3J0Y190b19zaGFyZWRfZHBsbChjcnRjKTsKPiA+ID4gKwlp ZiAoIXBsbCkgewo+ID4gPiArCQlEUk1fRVJST1IoIkNvdWxkIG5vdCBnZXQgc2hhcmVkIERQTExc biIpOwo+ID4gPiArCQlnb3RvIGV4aXQ7Cj4gPiA+ICsJfQo+ID4gPiArCURSTV9ERUJVR19LTVMo IlVzaW5nICVzIGZvciBwaXBlICVjXG4iLCBwbGwtPm5hbWUsIHBpcGVfbmFtZShjcnRjCj4gPiA+ IC0+cGlwZSkpOwo+ID4gPiArCj4gPiA+ICsJZG8gewo+ID4gPiArCQljcnRjLT5jb25maWctPnBv cnRfY2xvY2sgPQo+ID4gPiBkcm1fZHBfYndfY29kZV90b19saW5rX3JhdGUobGlua19idyk7Cj4g PiA+ICsJCWNydGMtPmNvbmZpZy0+bGFuZV9jb3VudCA9IGxhbmVfY291bnQ7Cj4gPiA+ICsJCWlm ICghaW50ZWxfZGRpX3BsbF9zZWxlY3QoY3J0YywgY3J0Yy0+Y29uZmlnLCBlbmNvZGVyLAo+ID4g PiBmYWxzZSkpCj4gPiA+ICsJCQlnb3RvIGV4aXQ7Cj4gPiA+ICsKPiA+ID4gKwkJcGxsLT5jb25m aWcuY3J0Y19tYXNrIHw9ICgxIDw8IGNydGMtPnBpcGUpOwo+ID4gPiArCQlwbGwtPmNvbmZpZy5o d19zdGF0ZSA9IGNydGMtPmNvbmZpZy0+ZHBsbF9od19zdGF0ZTsKPiA+ID4gKwo+ID4gPiArCQkv KiBFbmFibGUgUExMIGZvbGxvd2VkIGJ5IHBvcnQgKi8KPiA+ID4gKwkJaW50ZWxfZW5hYmxlX3No YXJlZF9kcGxsKGNydGMpOwo+ID4gPiArCQllbmNvZGVyLT5wcmVfZW5hYmxlKGVuY29kZXIpOwo+ ID4gPiArCj4gPiA+ICsJCS8qIENoZWNrIGlmIGxpbmsgdHJhaW5pbmcgcGFzc2VkOyBpZiBzbyB1 cGRhdGUgRFBDRCAqLwo+ID4gPiArCQlpZiAoaW50ZWxfZHAtPnRyYWluX3NldF92YWxpZCkKPiA+ ID4gKwkJCWludGVsX2RwX3VwZGF0ZV9kcGNkX3BhcmFtcyhpbnRlbF9kcCk7Cj4gPiA+ICsKPiA+ ID4gKwkJLyogRGlzYWJsZSBwb3J0IGZvbGxvd2VkIGJ5IFBMTCBmb3IgbmV4dCByZXRyeS9jbGVh biB1cAo+ID4gPiAqLwo+ID4gPiArCQllbmNvZGVyLT5wb3N0X2Rpc2FibGUoZW5jb2Rlcik7Cj4g PiA+ICsJCWludGVsX2Rpc2FibGVfc2hhcmVkX2RwbGwoY3J0Yyk7Cj4gPiA+ICsKPiA+ID4gKwl9 IHdoaWxlICghaW50ZWxfZHAtPnRyYWluX3NldF92YWxpZCAmJgo+ID4gPiArCQkhaW50ZWxfZHBf Z2V0X2xpbmtfcmV0cnlfcGFyYW1zKCZsYW5lX2NvdW50LCAmbGlua19idykpOwo+ID4gPiArCj4g PiA+ICsJLyogUmVzZXQgcGxsIHN0YXRlIGFzIGJlZm9yZSAqLwo+ID4gPiArCXBsbC0+Y29uZmln LmNydGNfbWFzayAmPSB+KDEgPDwgY3J0Yy0+cGlwZSk7Cj4gPiA+ICsJcGxsLT5jb25maWcuaHdf c3RhdGUgPSB0bXBfZHBsbF9od19zdGF0ZTsKPiA+ID4gKwo+ID4gPiArZXhpdDoKPiA+ID4gKwkv KiBSZXNldCBsb2NhbCBhc3NvY2lhdGlvbnMgbWFkZSAqLwo+ID4gPiArCWlmIChkcm1fY3J0YykK PiA+ID4gKwkJZW5jb2Rlci0+YmFzZS5jcnRjID0gTlVMTDsKPiA+ID4gKwljcnRjLT5jb25maWcg PSB0bXBfY3J0Y19jb25maWc7Cj4gPiA+ICsKPiA+ID4gKwlEUk1fREVCVUdfS01TKCJVcGZyb250 IGxpbmsgdHJhaW4gJXM6IGxhbmVzOiVkIGJ3OiVkXG4iLAo+ID4gPiArCWludGVsX2RwLT50cmFp bl9zZXRfdmFsaWQgPyAiUGFzc2VkIiA6ICJGYWlsZWQiLCBsYW5lX2NvdW50LAo+ID4gPiBsaW5r X2J3KTsKPiA+ID4gKwo+ID4gPiArCXJldHVybiBpbnRlbF9kcC0+dHJhaW5fc2V0X3ZhbGlkOwo+ ID4gPiArfQo+ID4gPiArCj4gPiA+ICB2b2lkIGludGVsX2RkaV9pbml0KHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsIGVudW0gcG9ydCBwb3J0KQo+ID4gPiAgewo+ID4gPiAgCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gPiA+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gPiA+IGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHAuYwo+ID4gPiBpbmRleCBkOGY3ODMwLi40N2I2MjY2IDEwMDY0NAo+ID4g PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gPiA+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPiA+ID4gQEAgLTQ2MjIsNiArNDYyMiw3MSBAQCBp bnRlbF9kcF91bnNldF9lZGlkKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gPiA+ICAJaW50 ZWxfZHAtPmhhc19hdWRpbyA9IGZhbHNlOwo+ID4gPiAgfQo+ID4gPiAKPiA+ID4gK3N0YXRpYyB2 b2lkIGludGVsX2RwX3VwZnJvbnRfZHBtc19vZmYoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5l Y3RvciwKPiA+ID4gKwkJCQlzdHJ1Y3QgZHJtX21vZGVzZXRfYWNxdWlyZV9jdHggKmN0eCkKPiA+ ID4gK3sKPiA+ID4gKwlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0gaW50ZWxfYXR0YWNoZWRf ZHAoY29ubmVjdG9yKTsKPiA+ID4gKwlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9k aWdfcG9ydCA9Cj4gPiA+IGRwX3RvX2RpZ19wb3J0KGludGVsX2RwKTsKPiA+ID4gKwlzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMgPSBpbnRlbF9kaWdfcG9ydC0+YmFzZS5iYXNlLmNydGM7Cj4gPiA+ICsJ c3RydWN0IGludGVsX2xvYWRfZGV0ZWN0X3BpcGUgdG1wOwo+ID4gPiArCj4gPiA+ICsJaWYgKGlu dGVsX2dldF9sb2FkX2RldGVjdF9waXBlKGNvbm5lY3RvciwgTlVMTCwgJnRtcCwgY3R4KSkgewo+ ID4gPiArCQljcnRjLT5hY3F1aXJlX2N0eCA9IGN0eDsKPiA+ID4gKwkJdG1wLmRwbXNfbW9kZSA9 IERSTV9NT0RFX0RQTVNfT0ZGOwo+ID4gPiArCQlpbnRlbF9yZWxlYXNlX2xvYWRfZGV0ZWN0X3Bp cGUoY29ubmVjdG9yLCAmdG1wLCBjdHgpOwo+ID4gPiArCX0KPiA+ID4gK30KPiA+ID4gKwo+ID4g PiArc3RhdGljIHZvaWQgaW50ZWxfZHBfdXBmcm9udF9kcG1zX29uKHN0cnVjdCBkcm1fY29ubmVj dG9yICpjb25uZWN0b3IsCj4gPiA+ICsJCQkJc3RydWN0IGRybV9tb2Rlc2V0X2FjcXVpcmVfY3R4 ICpjdHgpCj4gPiA+ICt7Cj4gPiA+ICsJc3RydWN0IGludGVsX2xvYWRfZGV0ZWN0X3BpcGUgdG1w Owo+ID4gPiArCj4gPiA+ICsJaW50ZWxfZ2V0X2xvYWRfZGV0ZWN0X3BpcGUoY29ubmVjdG9yLCBO VUxMLCAmdG1wLCBjdHgpOwo+ID4gPiArCj4gPiA+ICsJZHJtX21vZGVzZXRfZHJvcF9sb2Nrcyhj dHgpOwo+ID4gPiArCWRybV9tb2Rlc2V0X2FjcXVpcmVfZmluaShjdHgpOwo+ID4gPiArfQo+ID4g Cj4gPiBBcmUgdGhlc2Ugc3VwcG9zZWQgdG8gZGlzYWJsZS9lbmFibGUgdGhlIGNydGMgc28gdGhh dCB0aGUgdXBmcm9udCBsaW5rCj4gPiB0cmFpbmluZwo+ID4gY2FuIGJlIHBlcmZvcm1lZD8gVGhl IGxvYWQgZGV0ZWN0IHBpcGUgcmVhbGx5IGRvZXNuJ3QgYmVsb25nIGhlcmUsIGl0cyBvbmx5Cj4g PiBwdXJwb3NlIGlzIHRvIGRldGVjdCB3aGV0aGVyIHRoZXJlIGlzIGFuIG91dHB1dCBjb25uZWN0 ZWQgaW4gcGxhdGZvcm1zIHRoYXQKPiA+IGRpZG4ndCBzdXBwb3J0IGhvdHBsdWcuIFlvdSBzaG91 bGQgZG8gYSBub3JtYWwgYXRvbWljIG9wZXJhdGlvbiBpbnN0ZWFkLgo+IAo+IEkgdGhpbmsgSSBz aG91bGQgYWRkIG1vcmUgY29tbWVudCBvbiB0aGlzIHVzYWdlIGhlcmUuLgo+IAo+IER1cmluZyBS RkMsIHdlIHdlcmUgZGlzY3Vzc2luZyBhYm91dCByZS11c2luZyBjb2RlIGZyb20gbG9hZF9kZXRl Y3QgbG9naWMgCj4gdG8gZmluZCB1bnVzZWQgQ3J0YydzLCB0byBkbyB1cGZyb250IGxpbmsgdHJh aW5pbmcuIFdoaWxlIGRvaW5nIHRoYXQsIEkKPiBmaWd1cmVkIG91dAo+IHRoYXQgdGhlIHNhbWUg Y2FuIGJlIHVzZWQgaGVyZSAocmVwbGFjaW5nIGludGVsX2NydGNfY29udHJvbCgpIGZyb20gbm9u LWF0b21pYwo+IHdvcmxkLikKCkRQTVMgaXMgbm93IGltcGxlbWVudGVkIHVzaW5nIGF0b21pYywg Ynkgc2V0dGluZyB0aGUgY29ubmVjdG9yIGRwbXMgZnVuY3Rpb24gdG8KZHJtX2F0b21pY19oZWxw ZXJfY29ubmVjdG9yX2RwbXMoKS4gSXQgc2hvdWxkIGJlIG9rIHRvIGNhbGwgdGhhdCBkaXJlY3Rs eSBoZXJlLgoKPiBOb3csIGlmIEJJT1MgaGFzIGVuYWJsZWQgdGhlIGNydGMgZHVyaW5nIGJvb3Qs IHdlIGRpc2FibGUgaXQgZHVyaW5nIHVwZnJvbnQKPiBsaW5rCj4gdHJhaW5pbmcgYW5kIHRoZW4g dHVybiBpdCBvbiBvbmNlIHdlIGFyZSBkb25lLiBUaGlzIHNldCBvZiBkcG1zX29uL29mZgo+IG9w ZXJhdGlvbnMKPiByZXF1aXJlIHRoZSBtb2Rlc2V0IGxvY2tpbmcgaW5mcmFzdHJ1Y3R1cmUgd2hp Y2ggYXJlIChhbHJlYWR5KSBwcm92aWRlZCBieSAKPiAqX2xvYWRfZGV0ZWN0KCkgZnVuY3Rpb25z Lgo+IAo+IElmIHVzaW5nIHRoZSBmdW5jdGlvbnMgYXMgc3VjaCBkb2VzIG5vdCBtYWtlIGxvZ2lj YWwgc2Vuc2UsIHRoZW4gd2UgY2FuCj4gc2VwYXJhdGUKPiBvdXQgdGhlIHJlcXVpcmVkIGNvZGUg ZnJvbSAqX2xvYWRfZGV0ZWN0KCkgZnVuY3Rpb25zLCBhbmQgdGhlbiByZS11c2UgdGhlbS4KPiAo bGlrZSB3ZSBkaWQgZm9yIGdldF91bnVzZWRfY3J0YygpIGNvZGUpLiBEb2VzIHRoaXMgc291bmQg b2sgdG8geW91ID8KClRoZSBsb2FkIGRldGVjdCBwaXBlIGRvZXMgdGhlIG9wcG9zaXRlIG9mIHdo YXQgeW91IHdhbnQgaGVyZS4gSXQgZW5hYmxlcyBhCmRpc2FibGVkIGNydGMgdXNpbmcgYW4gZmIg YWxsb2NhdGVkIGJ5IHRoYXQgZnVuY3Rpb24uIEFmdGVyIHRoZSBwaXBlIGhhcyBiZWVuCnVzZWQg Zm9yIGxvYWQgZGV0ZWN0aW9uLCBhIGNhbGwgdG8gaW50ZWxfcmVsZWFzZV9sb2FkX2RldGVjdF9w aXBlKCkgdHVybnMgdGhlCnBpcGUgYmFjayBvZmYgYW5kIHJlbGVhc2VzIHRoZSBmYi4KCkluIHRo ZSBjb2RlIGFib3ZlLCB0aGVyZSBpcyBhIGNhbGwgdG8gaW50ZWxfZ2V0X2xvYWRfZGV0ZWN0X3Bp cGUoKSB3aXRob3V0IGEKbWF0Y2hpbmcgcmVsZWFzZS4gQXQgdGhhdCBwb2ludCwgdGhlIGNydGMg aXMgbGVmdCBvbiB3aXRoIHRoZSB3cm9uZyBmYiAodGhlIG9uZQphbGxvY2F0ZWQgZm9yIHRoZSBs b2FkIGRldGVjdCBwaXBlIGluc3RlYWQgb2YgdGhlIGZiIGl0IHdhcyB1c2luZyBiZWZvcmUpIGFu ZAp0aGF0IGZiIGlzIG5ldmVyIGZyZWVkLgoKU28gSSB0aGluayB0aGUgYmVzdCBzb2x1dGlvbiBp cyB0byBjYWxsIGRybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9kcG1zKCkKZGlyZWN0bHkuCgoK QW5kZXIKCgo+IFRoYW5rcywKPiBEdXJnYQo+IAo+ID4gCj4gPiBBbmRlcgo+ID4gCj4gPiA+ICsK PiA+ID4gK3N0YXRpYyBib29sIGludGVsX2RwX3VwZnJvbnRfbGlua190cmFpbihzdHJ1Y3QgZHJt X2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ID4gPiArewo+ID4gPiArCXN0cnVjdCBpbnRlbF9kcCAq aW50ZWxfZHAgPSBpbnRlbF9hdHRhY2hlZF9kcChjb25uZWN0b3IpOwo+ID4gPiArCXN0cnVjdCBp bnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0ID0KPiA+ID4gZHBfdG9fZGlnX3BvcnQo aW50ZWxfZHApOwo+ID4gPiArCXN0cnVjdCBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyID0g JmludGVsX2RpZ19wb3J0LT5iYXNlOwo+ID4gPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBp bnRlbF9lbmNvZGVyLT5iYXNlLmRldjsKPiA+ID4gKwlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBp bnRlbF9kaWdfcG9ydC0+YmFzZS5iYXNlLmNydGM7Cj4gPiA+ICsJc3RydWN0IGludGVsX2NydGMg KmludGVsX2NydGMgPSBjcnRjID8gdG9faW50ZWxfY3J0YyhjcnRjKSA6Cj4gPiA+IE5VTEw7Cj4g PiA+ICsJc3RydWN0IGRybV9tb2Rlc2V0X2FjcXVpcmVfY3R4IGN0eCwgKm9sZF9jdHggPSBOVUxM Owo+ID4gPiArCWJvb2wgcmV0ID0gdHJ1ZSwgbmVlZF9kcG1zX29uID0gZmFsc2U7Cj4gPiA+ICsK PiA+ID4gKwlpZiAoIUlTX0JST1hUT04oZGV2KSkKPiA+ID4gKwkJcmV0dXJuIHRydWU7Cj4gPiA+ ICsJLyoKPiA+ID4gKwkgKiBPbiBob3RwbHVnIGNhc2VzLCB3ZSBjYWxsIF91cGZyb250X2xpbmtf dHJhaW4gZGlyZWN0bHkuCj4gPiA+ICsJICogSW4gY29ubmVjdGVkIGJvb3Qgc2NlbmFyaW9zIChi b290IHdpdGgge01JUEkvZURQfSArIERQKSwKPiA+ID4gKwkgKiBCSU9TIHR5cGljYWxseSBicmlu Z3MgdXAgRFAuIEhlbmNlLCB3ZSBkaXNhYmxlIHRoZSBjcnRjCj4gPiA+ICsJICogdG8gZG8gX3Vw ZnJvbnRfbGlua190cmFpbmluZyBhbmQgdGhlbiByZS1lbmFibGUgaXQgYmFjay4KPiA+ID4gKwkg Ki8KPiA+ID4gKwlpZiAoY3J0YyAmJiBjcnRjLT5lbmFibGVkICYmIGludGVsX2NydGMtPmFjdGl2 ZSkgewo+ID4gPiArCQlEUk1fREVCVUdfS01TKCJEaXNhYmxpbmcgcGlwZSAlY1xuIiwgcGlwZV9u YW1lKGludGVsX2NydGMKPiA+ID4gLT5waXBlKSk7Cj4gPiA+ICsJCW9sZF9jdHggPSBjcnRjLT5h Y3F1aXJlX2N0eDsKPiA+ID4gKwkJZHJtX21vZGVzZXRfYWNxdWlyZV9pbml0KCZjdHgsIDApOwo+ ID4gPiArCQlpbnRlbF9kcF91cGZyb250X2RwbXNfb2ZmKGNvbm5lY3RvciwgJmN0eCk7Cj4gPiA+ ICsJCW5lZWRfZHBtc19vbiA9IHRydWU7Cj4gPiA+ICsJfQo+ID4gPiArCj4gPiA+ICsJaWYgKEhB U19EREkoZGV2KSkKPiA+ID4gKwkJcmV0ID0gaW50ZWxfZGRpX3VwZnJvbnRfbGlua190cmFpbihp bnRlbF9kcCwgaW50ZWxfY3J0Yyk7Cj4gPiA+ICsJCS8qIE90aGVyIHBsYXRmb3JtcyB1cGZyb250 IGxpbmsgdHJhaW4gY2FsbCBnb2VzIGhlcmUuLiovCj4gPiA+ICsKPiA+ID4gKwlpZiAobmVlZF9k cG1zX29uKSB7Cj4gPiA+ICsJCWludGVsX2RwX3VwZnJvbnRfZHBtc19vbihjb25uZWN0b3IsICZj dHgpOwo+ID4gPiArCQljcnRjLT5hY3F1aXJlX2N0eCA9IG9sZF9jdHg7Cj4gPiA+ICsJfQo+ID4g PiArCXJldHVybiByZXQ7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gKwo+ID4gPiAgc3RhdGljIGVu dW0gZHJtX2Nvbm5lY3Rvcl9zdGF0dXMKPiA+ID4gIGludGVsX2RwX2RldGVjdChzdHJ1Y3QgZHJt X2Nvbm5lY3RvciAqY29ubmVjdG9yLCBib29sIGZvcmNlKQo+ID4gPiAgewo+ID4gPiBAQCAtNDYz MSw3ICs0Njk2LDcgQEAgaW50ZWxfZHBfZGV0ZWN0KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25u ZWN0b3IsCj4gPiA+IGJvb2wKPiA+ID4gZm9yY2UpCj4gPiA+ICAJc3RydWN0IGRybV9kZXZpY2Ug KmRldiA9IGNvbm5lY3Rvci0+ZGV2Owo+ID4gPiAgCWVudW0gZHJtX2Nvbm5lY3Rvcl9zdGF0dXMg c3RhdHVzOwo+ID4gPiAgCWVudW0gaW50ZWxfZGlzcGxheV9wb3dlcl9kb21haW4gcG93ZXJfZG9t YWluOwo+ID4gPiAtCWJvb2wgcmV0Owo+ID4gPiArCWJvb2wgcmV0LCBkb191cGZyb250X2xpbmtf dHJhaW47Cj4gPiA+ICAJdTggc2lua19pcnFfdmVjdG9yOwo+ID4gPiAKPiA+ID4gIAlEUk1fREVC VUdfS01TKCJbQ09OTkVDVE9SOiVkOiVzXVxuIiwKPiA+ID4gQEAgLTQ3MDUsNiArNDc3MCwxNiBA QCBpbnRlbF9kcF9kZXRlY3Qoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiA+ID4g Ym9vbAo+ID4gPiBmb3JjZSkKPiA+ID4gIAkJCURSTV9ERUJVR19EUklWRVIoIkNQIG9yIHNpbmsg c3BlY2lmaWMgaXJxCj4gPiA+IHVuaGFuZGxlZFxuIik7Cj4gPiA+ICAJfQo+ID4gPiAKPiA+ID4g KwkvKiBEbyBub3QgZG8gdXBmcm9udCBsaW5rIHRyYWluLCBpZiBpdCBpcyBhIGNvbXBsaWFuY2Ug cmVxdWVzdCAqLwo+ID4gPiArCWRvX3VwZnJvbnRfbGlua190cmFpbiA9Cj4gPiA+ICsJCWludGVs X2VuY29kZXItPnR5cGUgPT0gSU5URUxfT1VUUFVUX0RJU1BMQVlQT1JUICYmCj4gPiA+ICsJCWlu dGVsX2RwLT5jb21wbGlhbmNlX3Rlc3RfdHlwZSAhPSBEUF9URVNUX0xJTktfVFJBSU5JTkc7Cj4g PiA+ICsKPiA+ID4gKwlpZiAoZG9fdXBmcm9udF9saW5rX3RyYWluKSB7Cj4gPiA+ICsJCXJldCA9 IGludGVsX2RwX3VwZnJvbnRfbGlua190cmFpbihjb25uZWN0b3IpOwo+ID4gPiArCQlpZiAoIXJl dCkKPiA+ID4gKwkJCXN0YXR1cyA9IGNvbm5lY3Rvcl9zdGF0dXNfZGlzY29ubmVjdGVkOwo+ID4g PiArCX0KPiA+ID4gIG91dDoKPiA+ID4gIAlpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dCh0b19pOTE1 KGRldiksIHBvd2VyX2RvbWFpbik7Cj4gPiA+ICAJcmV0dXJuIHN0YXR1czsKPiA+ID4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gPiA+IGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiA+ID4gaW5kZXggNTkxMjk1NS4uM2NmYWIyMCAxMDA2 NDQKPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiA+ID4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiA+ID4gQEAgLTEwMjUsNiArMTAy NSw4IEBAIHZvaWQgaW50ZWxfZGRpX2Nsb2NrX2dldChzdHJ1Y3QgaW50ZWxfZW5jb2Rlcgo+ID4g PiAqZW5jb2RlciwKPiA+ID4gIAkJCSBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25m aWcpOwo+ID4gPiAgdm9pZCBpbnRlbF9kZGlfc2V0X3ZjX3BheWxvYWRfYWxsb2Moc3RydWN0IGRy bV9jcnRjICpjcnRjLCBib29sIHN0YXRlKTsKPiA+ID4gIHVpbnQzMl90IGRkaV9zaWduYWxfbGV2 ZWxzKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApOwo+ID4gPiArYm9vbCBpbnRlbF9kZGlfdXBm cm9udF9saW5rX3RyYWluKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4gPiA+ICsJCQkJc3Ry dWN0IGludGVsX2NydGMgKmNydGMpOwo+ID4gPiAKPiA+ID4gIC8qIGludGVsX2Zyb250YnVmZmVy LmMgKi8KPiA+ID4gIHZvaWQgaW50ZWxfZmJfb2JqX2ludmFsaWRhdGUoc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QgKm9iaiwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRl bC1nZngK