From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paulo Zanoni Subject: Re: [PATCH 08/17] drm/i915/icl: Implement voltage swing programming sequence for Combo PHY DDI Date: Thu, 22 Mar 2018 15:23:44 -0700 Message-ID: <1521757424.26921.46.camel@intel.com> References: <20180222035519.13486-1-paulo.r.zanoni@intel.com> <20180222035519.13486-9-paulo.r.zanoni@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id C1A636E0FB for ; Thu, 22 Mar 2018 22:31:01 +0000 (UTC) In-Reply-To: <20180222035519.13486-9-paulo.r.zanoni@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: Rodrigo Vivi List-Id: intel-gfx@lists.freedesktop.org RW0gUXVpLCAyMDE4LTAyLTIyIMOgcyAwMDo1NSAtMDMwMCwgUGF1bG8gWmFub25pIGVzY3JldmV1 Ogo+IEZyb206IE1hbmFzaSBOYXZhcmUgPG1hbmFzaS5kLm5hdmFyZUBpbnRlbC5jb20+Cj4gCj4g VGhpcyBpcyBhbiBpbXBvcnRhbnQgcGFydCBvZiB0aGUgRERJIGluaXRhbGl6YXRpb24gYXMgd2Vs bCBhcwo+IGZvciBjaGFuZ2luZyB0aGUgdm9sdGFnZSBkdXJpbmcgRGlzcGxheVBvcnQgbGluayB0 cmFpbmluZy4KPiAKPiBUaGUgVm9sdGFnZSBzd2luZyBzZXFldWVuY2UgaXMgc2ltaWxhciB0byBD YW5ub25sYWtlLgo+IEhvd2V2ZXIgaXQgaGFzIGRpZmZlcmVudCByZWdpc3RlciBkZWZpbml0aW9u cyBhbmQgaGVuY2UKPiBpdCBtYWtlcyBzZW5zZSB0byBjcmVhdGUgYSBzZXBhcmF0ZSB2c3dpbmcg c2VxdWVuY2UgYW5kCj4gcHJvZ3JhbSBmdW5jdGlvbnMgZm9yIElDTCB0byBsZWF2ZSByb29tIGZv ciBtb3JlIGNoYW5nZXMKPiBpbiBjYXNlIHRoZSBCc3BlYyBjaGFuZ2VzIGxhdGVyIGFuZCBkZXZp YXRlcyBmcm9tIENOTCBzZXF1ZW5jZS4KPiAKPiB2MjoKPiBVc2UgflRBUDNfRElTQUJMRSBmb3Ig ZW5iYWxpbmcgdGhhdCBiaXQgKEphbmkgTmlrdWxhKQo+IAo+IHYzOgo+ICogVXNlIGR3NF9zY2Fs aW5nIGNvbHVtbiBmb3IgUE9SVF9UWF9EVzQgdmFsdWVzIChSb2RyaWdvKQo+IAo+IHY0Ogo+ICog Q2FsbCBpdCBjb21ib192c3dpbmcsIHVzZSBzd2l0Y2ggc3RhdGVtZW50IChQYXVsbykKPiAKPiB2 NSAoZnJvbSBQYXVsbyk6Cj4gKiBGaXggYSB0eXBvLgo+ICogcy9yYXRlIDwgNjAwMDAwL3JhdGUg PD0gNjAwMDAwLy4KPiAqIERvbid0IHJlbW92ZSBibGFuayBsaW5lcyB0aGF0IHNob3VsZCBiZSB0 aGVyZS4KPiAKPiB2NjoKPiAqIFJlYmFzZWQgYnkgUm9kcmlnbyBvbiB0b3Agb2YgQ2Fubm9ubGFr ZSBjaGFuZ2VzCj4gICB3aGVyZSBub24gdnN3aW5nIHNlcXVlbmNlcyBhcmUgbm90IGFsaWduZWQg d2l0aCBpYm9vc3QKPiAgIGFueW1vcmUuCj4gCj4gdjc6IEFub3RoZXIgcmViYXNlIGFmdGVyIGFu IHVwc3RyZWFtIHJld29yay4KPiAKPiB2OCAoZnJvbSBQYXVsbyk6Cj4gKiBBZGp1c3QgdGhlIGNv ZGUgdG8gdGhlIHVwc3RyZWFtIG91dHB1dCB0eXBlIGNoYW5nZXMuCj4gKiBTcXVhc2ggdGhlIHBh dGNoIHRoYXQgbW92ZWQgc29tZSBmdW5jdGlvbnMgdXAuCj4gKiBNZXJnZSBib3RoIGdldF9jb21i b19idWZfdHJhbnMgZnVuY3Rpb25zIGluIG9yZGVyIHRvIHNpbXBsaWZ5IHRoZQo+ICAgY29kZS4K PiAqIENoYW5nZSB0aGUgY2hhbmdlbG9nIGZvcm1hdC4KPiAKPiBDYzogSmFuaSBOaWt1bGEgPGph bmkubmlrdWxhQGxpbnV4LmludGVsLmNvbT4KPiBSZXZpZXdlZC1ieTogUGF1bG8gWmFub25pIDxw YXVsby5yLnphbm9uaUBpbnRlbC5jb20+ICh2NSkKPiBTaWduZWQtb2ZmLWJ5OiBNYW5hc2kgTmF2 YXJlIDxtYW5hc2kuZC5uYXZhcmVAaW50ZWwuY29tPgo+IFNpZ25lZC1vZmYtYnk6IFJvZHJpZ28g Vml2aSA8cm9kcmlnby52aXZpQGludGVsLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBQYXVsbyBaYW5v bmkgPHBhdWxvLnIuemFub25pQGludGVsLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZGRpLmMgfCAxODkKPiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKy0KPiAgMSBmaWxlIGNoYW5nZWQsIDE4NiBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygt KQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYwo+IGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMKPiBpbmRleCAwYTQ2ODM5OTFlYzIuLmMz ODg3M2NiOThjYSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGku Ywo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCj4gQEAgLTg0OSw2ICs4 NDksNDUgQEAgY25sX2dldF9idWZfdHJhbnNfZWRwKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlCj4g KmRldl9wcml2LCBpbnQgKm5fZW50cmllcykKPiAgCX0KPiAgfQo+ICAKPiArc3RhdGljIGNvbnN0 IHN0cnVjdCBpY2xfY29tYm9fcGh5X2RkaV9idWZfdHJhbnMgKgo+ICtpY2xfZ2V0X2NvbWJvX2J1 Zl90cmFucyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGVudW0gcG9ydAo+IHBv cnQsCj4gKwkJCWludCB0eXBlLCBpbnQgKm5fZW50cmllcykKPiArewo+ICsJdTMyIHZvbHRhZ2Ug PSBJOTE1X1JFQUQoSUNMX1BPUlRfQ09NUF9EVzMocG9ydCkpICYKPiBWT0xUQUdFX0lORk9fTUFT SzsKPiArCj4gKwlpZiAodHlwZSA9PSBJTlRFTF9PVVRQVVRfRURQICYmIGRldl9wcml2LQo+ID52 YnQuZWRwLmxvd192c3dpbmcpIHsKPiArCQlzd2l0Y2ggKHZvbHRhZ2UpIHsKPiArCQljYXNlIFZP TFRBR0VfSU5GT18wXzg1VjoKPiArCQkJKm5fZW50cmllcyA9Cj4gQVJSQVlfU0laRShpY2xfY29t Ym9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZWRwXzBfODVWKTsKPiArCQkJcmV0dXJuCj4gaWNsX2Nv bWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2VkcF8wXzg1VjsKPiArCQljYXNlIFZPTFRBR0VfSU5G T18wXzk1VjoKPiArCQkJKm5fZW50cmllcyA9Cj4gQVJSQVlfU0laRShpY2xfY29tYm9fcGh5X2Rk aV90cmFuc2xhdGlvbnNfZWRwXzBfOTVWKTsKPiArCQkJcmV0dXJuCj4gaWNsX2NvbWJvX3BoeV9k ZGlfdHJhbnNsYXRpb25zX2VkcF8wXzk1VjsKPiArCQljYXNlIFZPTFRBR0VfSU5GT18xXzA1VjoK PiArCQkJKm5fZW50cmllcyA9Cj4gQVJSQVlfU0laRShpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xh dGlvbnNfZWRwXzFfMDVWKTsKPiArCQkJcmV0dXJuCj4gaWNsX2NvbWJvX3BoeV9kZGlfdHJhbnNs YXRpb25zX2VkcF8xXzA1VjsKPiArCQlkZWZhdWx0Ogo+ICsJCQlNSVNTSU5HX0NBU0Uodm9sdGFn ZSk7Cj4gKwkJCXJldHVybiBOVUxMOwo+ICsJCX0KPiArCX0gZWxzZSB7Cj4gKwkJc3dpdGNoICh2 b2x0YWdlKSB7Cj4gKwkJY2FzZSBWT0xUQUdFX0lORk9fMF84NVY6Cj4gKwkJCSpuX2VudHJpZXMg PQo+IEFSUkFZX1NJWkUoaWNsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2RwX2hkbWlfMF84 NVYpOwo+ICsJCQlyZXR1cm4KPiBpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZHBfaGRt aV8wXzg1VjsKPiArCQljYXNlIFZPTFRBR0VfSU5GT18wXzk1VjoKPiArCQkJKm5fZW50cmllcyA9 Cj4gQVJSQVlfU0laRShpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZHBfaGRtaV8wXzk1 Vik7Cj4gKwkJCXJldHVybgo+IGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19kcF9oZG1p XzBfOTVWOwo+ICsJCWNhc2UgVk9MVEFHRV9JTkZPXzFfMDVWOgo+ICsJCQkqbl9lbnRyaWVzID0K PiBBUlJBWV9TSVpFKGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19kcF9oZG1pXzFfMDVW KTsKPiArCQkJcmV0dXJuCj4gaWNsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2RwX2hkbWlf MV8wNVY7Cj4gKwkJZGVmYXVsdDoKPiArCQkJTUlTU0lOR19DQVNFKHZvbHRhZ2UpOwo+ICsJCQly ZXR1cm4gTlVMTDsKPiArCQl9Cj4gKwl9Cj4gK30KPiArCj4gIHN0YXRpYyBpbnQgaW50ZWxfZGRp X2hkbWlfbGV2ZWwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+IGVudW0gcG9y dCBwb3J0KQo+ICB7Cj4gIAlpbnQgbl9lbnRyaWVzLCBsZXZlbCwgZGVmYXVsdF9lbnRyeTsKPiBA QCAtMjE3OCw2ICsyMjE3LDE0NCBAQCBzdGF0aWMgdm9pZCBjbmxfZGRpX3Zzd2luZ19zZXF1ZW5j ZShzdHJ1Y3QKPiBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAJSTkxNV9XUklURShDTkxfUE9S VF9UWF9EVzVfR1JQKHBvcnQpLCB2YWwpOwo+ICB9Cj4gIAo+ICtzdGF0aWMgdm9pZCBpY2xfZGRp X2NvbWJvX3Zzd2luZ19wcm9ncmFtKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlCj4gKmRldl9wcml2 LAo+ICsJCQkJCSB1MzIgbGV2ZWwsIGVudW0gcG9ydCBwb3J0LAo+IGludCB0eXBlKQo+ICt7Cj4g Kwljb25zdCBzdHJ1Y3QgaWNsX2NvbWJvX3BoeV9kZGlfYnVmX3RyYW5zICpkZGlfdHJhbnNsYXRp b25zID0KPiBOVUxMOwo+ICsJdTMyIG5fZW50cmllcywgdmFsOwo+ICsJaW50IGxuOwo+ICsKPiAr CWRkaV90cmFuc2xhdGlvbnMgPSBpY2xfZ2V0X2NvbWJvX2J1Zl90cmFucyhkZXZfcHJpdiwgcG9y dCwKPiB0eXBlLAo+ICsJCQkJCQkgICAmbl9lbnRyaWVzKTsKPiArCWlmICghZGRpX3RyYW5zbGF0 aW9ucykKPiArCQlyZXR1cm47Cj4gKwo+ICsJaWYgKGxldmVsID49IG5fZW50cmllcykgewo+ICsJ CURSTV9ERUJVR19LTVMoIkRESSB0cmFuc2xhdGlvbiBub3QgZm91bmQgZm9yIGxldmVsCj4gJWQu IFVzaW5nICVkIGluc3RlYWQuIiwgbGV2ZWwsIG5fZW50cmllcyAtIDEpOwo+ICsJCWxldmVsID0g bl9lbnRyaWVzIC0gMTsKPiArCX0KPiArCj4gKwkvKiBTZXQgUE9SVF9UWF9EVzUgU2NhbGluZyBN b2RlIFNlbCB0byAxMTBiLiAqLwo+ICsJdmFsID0gSTkxNV9SRUFEKElDTF9QT1JUX1RYX0RXNV9M TjAocG9ydCkpOwo+ICsJdmFsICY9IH5TQ0FMSU5HX01PREVfU0VMX01BU0s7Cj4gKwl2YWwgfD0g U0NBTElOR19NT0RFX1NFTCgweDYpOwoKVGhpcyBzaG91bGQgYmUgUlRFUk1fU0VMLgoKCj4gKwlJ OTE1X1dSSVRFKElDTF9QT1JUX1RYX0RXNV9HUlAocG9ydCksIHZhbCk7Cj4gKwo+ICsJLyogUHJv Z3JhbSBQT1JUX1RYX0RXNSAqLwo+ICsJdmFsID0gSTkxNV9SRUFEKElDTF9QT1JUX1RYX0RXNV9M TjAocG9ydCkpOwo+ICsJLyogU2V0IERpc2FibGVUYXAyIGFuZCBEaXNhYmxlVGFwMyBpZiBNSVBJ IERTSQo+ICsJICogQ2xlYXIgRGlzYWJsZVRhcDIgYW5kIERpc2FibGVUYXAzIGZvciBhbGwgb3Ro ZXIgUG9ydHMKPiArCSAqLwo+ICsJaWYgKHR5cGUgPT0gSU5URUxfT1VUUFVUX0RTSSkgewo+ICsJ CXZhbCB8PSBUQVAyX0RJU0FCTEU7Cj4gKwkJdmFsIHw9IFRBUDNfRElTQUJMRTsKPiArCX0gZWxz ZSB7Cj4gKwkJdmFsICY9IH5UQVAyX0RJU0FCTEU7Cj4gKwkJdmFsICY9IH5UQVAzX0RJU0FCTEU7 Cj4gKwl9Cj4gKwlJOTE1X1dSSVRFKElDTF9QT1JUX1RYX0RXNV9HUlAocG9ydCksIHZhbCk7Cj4g Kwo+ICsJLyogUHJvZ3JhbSBQT1JUX1RYX0RXMiAqLwo+ICsJdmFsID0gSTkxNV9SRUFEKElDTF9Q T1JUX1RYX0RXMl9MTjAocG9ydCkpOwo+ICsJdmFsICY9IH4oU1dJTkdfU0VMX0xPV0VSX01BU0sg fCBTV0lOR19TRUxfVVBQRVJfTUFTSyB8Cj4gKwkJIFJDT01QX1NDQUxBUl9NQVNLKTsKPiArCXZh bCB8PQo+IFNXSU5HX1NFTF9VUFBFUihkZGlfdHJhbnNsYXRpb25zW2xldmVsXS5kdzJfc3dpbmdf c2VsZWN0KTsKPiArCXZhbCB8PQo+IFNXSU5HX1NFTF9MT1dFUihkZGlfdHJhbnNsYXRpb25zW2xl dmVsXS5kdzJfc3dpbmdfc2VsZWN0KTsKPiArCS8qIFByb2dyYW0gUmNvbXAgc2NhbGFyIGZvciBl dmVyeSB0YWJsZSBlbnRyeSAqLwo+ICsJdmFsIHw9Cj4gUkNPTVBfU0NBTEFSKGRkaV90cmFuc2xh dGlvbnNbbGV2ZWxdLmR3Ml9zd2luZ19zY2FsYXIpOwo+ICsJSTkxNV9XUklURShJQ0xfUE9SVF9U WF9EVzJfR1JQKHBvcnQpLCB2YWwpOwo+ICsKPiArCS8qIFByb2dyYW0gUE9SVF9UWF9EVzQgKi8K PiArCS8qIFdlIGNhbm5vdCB3cml0ZSB0byBHUlAuIEl0IHdvdWxkIG92ZXJ3cml0ZSBpbmRpdmlk dWFsCj4gbG9hZGdlbi4gKi8KPiArCWZvciAobG4gPSAwOyBsbiA8PSAzOyBsbisrKSB7Cj4gKwkJ dmFsID0gSTkxNV9SRUFEKElDTF9QT1JUX1RYX0RXNF9MTihwb3J0LCBsbikpOwo+ICsJCXZhbCAm PSB+KFBPU1RfQ1VSU09SXzFfTUFTSyB8IFBPU1RfQ1VSU09SXzJfTUFTSyB8Cj4gKwkJCSBDVVJT T1JfQ09FRkZfTUFTSyk7Cj4gKwkJdmFsIHw9IGRkaV90cmFuc2xhdGlvbnNbbGV2ZWxdLmR3NF9z Y2FsaW5nOwo+ICsJCUk5MTVfV1JJVEUoSUNMX1BPUlRfVFhfRFc0X0xOKHBvcnQsIGxuKSwgdmFs KTsKPiArCX0KPiArfQo+ICsKPiArc3RhdGljIHZvaWQgaWNsX2NvbWJvX3BoeV9kZGlfdnN3aW5n X3NlcXVlbmNlKHN0cnVjdCBpbnRlbF9lbmNvZGVyCj4gKmVuY29kZXIsIHUzMiBsZXZlbCkKPiAr ewo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVy LQo+ID5iYXNlLmRldik7Cj4gKwllbnVtIHBvcnQgcG9ydCA9IGVuY29kZXItPnBvcnQ7Cj4gKwlp bnQgdHlwZSA9IGVuY29kZXItPnR5cGU7Cj4gKwlpbnQgd2lkdGggPSAwOwo+ICsJaW50IHJhdGUg PSAwOwo+ICsJdTMyIHZhbDsKPiArCWludCBsbiA9IDA7Cj4gKwo+ICsJaWYgKHR5cGUgPT0gSU5U RUxfT1VUUFVUX0hETUkpIHsKPiArCQl3aWR0aCA9IDQ7Cj4gKwkJLyogUmF0ZSBpcyBhbHdheXMg PCB0aGFuIDZHSHogZm9yIEhETUkgKi8KPiArCX0gZWxzZSB7Cj4gKwkJc3RydWN0IGludGVsX2Rw ICppbnRlbF9kcCA9Cj4gZW5jX3RvX2ludGVsX2RwKCZlbmNvZGVyLT5iYXNlKTsKPiArCj4gKwkJ d2lkdGggPSBpbnRlbF9kcC0+bGFuZV9jb3VudDsKPiArCQlyYXRlID0gaW50ZWxfZHAtPmxpbmtf cmF0ZTsKPiArCX0KPiArCj4gKwkvKgo+ICsJICogMS4gSWYgcG9ydCB0eXBlIGlzIGVEUCBvciBE UCwKPiArCSAqIHNldCBQT1JUX1BDU19EVzEgY21ua2VlcGVyX2VuYWJsZSB0byAxYiwKPiArCSAq IGVsc2UgY2xlYXIgdG8gMGIuCj4gKwkgKi8KPiArCXZhbCA9IEk5MTVfUkVBRChJQ0xfUE9SVF9Q Q1NfRFcxX0xOMChwb3J0KSk7Cj4gKwlpZiAodHlwZSA9PSBJTlRFTF9PVVRQVVRfSERNSSkKPiAr CQl2YWwgJj0gfkNPTU1PTl9LRUVQRVJfRU47Cj4gKwllbHNlCj4gKwkJdmFsIHw9IENPTU1PTl9L RUVQRVJfRU47Cj4gKwlJOTE1X1dSSVRFKElDTF9QT1JUX1BDU19EVzFfR1JQKHBvcnQpLCB2YWwp Owo+ICsKPiArCS8qIDIuIFByb2dyYW0gbG9hZGdlbiBzZWxlY3QgKi8KPiArCS8qCj4gKwkgKiBQ cm9ncmFtIFBPUlRfVFhfRFc0X0xOIGRlcGVuZGluZyBvbiBCaXQgcmF0ZSBhbmQgdXNlZAo+IGxh bmVzCj4gKwkgKiA8PSA2IEdIeiBhbmQgNCBsYW5lcyAoTE4wPTAsIExOMT0xLCBMTjI9MSwgTE4z PTEpCj4gKwkgKiA8PSA2IEdIeiBhbmQgMSwyIGxhbmVzIChMTjA9MCwgTE4xPTEsIExOMj0xLCBM TjM9MCkKPiArCSAqID4gNiBHSHogKExOMD0wLCBMTjE9MCwgTE4yPTAsIExOMz0wKQo+ICsJICov Cj4gKwlmb3IgKGxuID0gMDsgbG4gPD0gMzsgbG4rKykgewo+ICsJCXZhbCA9IEk5MTVfUkVBRChJ Q0xfUE9SVF9UWF9EVzRfTE4ocG9ydCwgbG4pKTsKPiArCQl2YWwgJj0gfkxPQURHRU5fU0VMRUNU Owo+ICsKPiArCQlpZiAoKHJhdGUgPD0gNjAwMDAwICYmIHdpZHRoID09IDQgJiYgbG4gPj0gMSkg fHwKPiArCQkgICAgKHJhdGUgPD0gNjAwMDAwICYmIHdpZHRoIDwgNCAmJiAobG4gPT0gMSB8fCBs bgo+ID09IDIpKSkgewo+ICsJCQl2YWwgfD0gTE9BREdFTl9TRUxFQ1Q7Cj4gKwkJfQo+ICsJCUk5 MTVfV1JJVEUoSUNMX1BPUlRfVFhfRFc0X0xOKHBvcnQsIGxuKSwgdmFsKTsKPiArCX0KPiArCj4g KwkvKiAzLiBTZXQgUE9SVF9DTF9EVzUgU1VTIENsb2NrIENvbmZpZyB0byAxMWIgKi8KPiArCXZh bCA9IEk5MTVfUkVBRChJQ0xfUE9SVF9DTF9EVzUocG9ydCkpOwo+ICsJdmFsIHw9IFNVU19DTE9D S19DT05GSUc7Cj4gKwlJOTE1X1dSSVRFKElDTF9QT1JUX0NMX0RXNShwb3J0KSwgdmFsKTsKPiAr Cj4gKwkvKiA0LiBDbGVhciB0cmFpbmluZyBlbmFibGUgdG8gY2hhbmdlIHN3aW5nIHZhbHVlcyAq Lwo+ICsJdmFsID0gSTkxNV9SRUFEKElDTF9QT1JUX1RYX0RXNV9MTjAocG9ydCkpOwo+ICsJdmFs ICY9IH5UWF9UUkFJTklOR19FTjsKPiArCUk5MTVfV1JJVEUoSUNMX1BPUlRfVFhfRFc1X0dSUChw b3J0KSwgdmFsKTsKPiArCj4gKwkvKiA1LiBQcm9ncmFtIHN3aW5nIGFuZCBkZS1lbXBoYXNpcyAq Lwo+ICsJaWNsX2RkaV9jb21ib192c3dpbmdfcHJvZ3JhbShkZXZfcHJpdiwgbGV2ZWwsIHBvcnQs IHR5cGUpOwo+ICsKPiArCS8qIDYuIFNldCB0cmFpbmluZyBlbmFibGUgdG8gdHJpZ2dlciB1cGRh dGUgKi8KPiArCXZhbCA9IEk5MTVfUkVBRChJQ0xfUE9SVF9UWF9EVzVfTE4wKHBvcnQpKTsKPiAr CXZhbCB8PSBUWF9UUkFJTklOR19FTjsKPiArCUk5MTVfV1JJVEUoSUNMX1BPUlRfVFhfRFc1X0dS UChwb3J0KSwgdmFsKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgaWNsX2RkaV92c3dpbmdfc2Vx dWVuY2Uoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gdTMyIGxldmVsKQo+ICt7Cj4g KwllbnVtIHBvcnQgcG9ydCA9IGVuY29kZXItPnBvcnQ7Cj4gKwo+ICsJaWYgKHBvcnQgPT0gUE9S VF9BIHx8IHBvcnQgPT0gUE9SVF9CKQo+ICsJCWljbF9jb21ib19waHlfZGRpX3Zzd2luZ19zZXF1 ZW5jZShlbmNvZGVyLCBsZXZlbCk7Cj4gKwllbHNlCj4gKwkJLyogTm90IEltcGxlbWVudGVkIFll dCAqLwo+ICsJCVdBUk5fT04oMSk7Cj4gK30KPiArCj4gIHN0YXRpYyB1aW50MzJfdCB0cmFuc2xh dGVfc2lnbmFsX2xldmVsKGludCBzaWduYWxfbGV2ZWxzKQo+ICB7Cj4gIAlpbnQgaTsKPiBAQCAt MjIwOSw3ICsyMzg2LDkgQEAgdTMyIGJ4dF9zaWduYWxfbGV2ZWxzKHN0cnVjdCBpbnRlbF9kcAo+ ICppbnRlbF9kcCkKPiAgCXN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyID0gJmRwb3J0LT5i YXNlOwo+ICAJaW50IGxldmVsID0gaW50ZWxfZGRpX2RwX2xldmVsKGludGVsX2RwKTsKPiAgCj4g LQlpZiAoSVNfQ0FOTk9OTEFLRShkZXZfcHJpdikpCj4gKwlpZiAoSVNfSUNFTEFLRShkZXZfcHJp dikpCj4gKwkJaWNsX2RkaV92c3dpbmdfc2VxdWVuY2UoZW5jb2RlciwgbGV2ZWwpOwoKSSB3YXMg MTAwJSBzdXJlIEkgaGFkIGFscmVhZHkgcmV3b3JrZWQgdGhlIHBhdGNoIHRvIGZvbGxvdyB0aGUg bmV3CnN0YW5kYXJkIGZvciB0aGUgb3RoZXIgcGxhdGZvcm1zLCBidXQgSSBndWVzcyBJIHdhcyB3 cm9uZy4KCkknbGwgdXBkYXRlIHRoaXMgcGF0Y2ggYmFzZWQgb24gbXkgcmV2aWV3LCBidXQgSSBn dWVzcyBub3cgd2UnbGwgYmUgYXQKYSBwb2ludCB3aGVyZSBJIGNoYW5nZWQgdGhlIHBhdGNoIHNv IG11Y2ggdGhhdCB3ZSdsbCBuZWVkIGEgbmV3CnJldmlld2VyLgoKPiArCWVsc2UgaWYgKElTX0NB Tk5PTkxBS0UoZGV2X3ByaXYpKQo+ICAJCWNubF9kZGlfdnN3aW5nX3NlcXVlbmNlKGVuY29kZXIs IGxldmVsLCBlbmNvZGVyLQo+ID50eXBlKTsKPiAgCWVsc2UKPiAgCQlieHRfZGRpX3Zzd2luZ19z ZXF1ZW5jZShlbmNvZGVyLCBsZXZlbCwgZW5jb2Rlci0KPiA+dHlwZSk7Cj4gQEAgLTIzODksNyAr MjU2OCw5IEBAIHN0YXRpYyB2b2lkIGludGVsX2RkaV9wcmVfZW5hYmxlX2RwKHN0cnVjdAo+IGlu dGVsX2VuY29kZXIgKmVuY29kZXIsCj4gIAo+ICAJaW50ZWxfZGlzcGxheV9wb3dlcl9nZXQoZGV2 X3ByaXYsIGRpZ19wb3J0LQo+ID5kZGlfaW9fcG93ZXJfZG9tYWluKTsKPiAgCj4gLQlpZiAoSVNf Q0FOTk9OTEFLRShkZXZfcHJpdikpCj4gKwlpZiAoSVNfSUNFTEFLRShkZXZfcHJpdikpCj4gKwkJ aWNsX2RkaV92c3dpbmdfc2VxdWVuY2UoZW5jb2RlciwgbGV2ZWwpOwo+ICsJZWxzZSBpZiAoSVNf Q0FOTk9OTEFLRShkZXZfcHJpdikpCj4gIAkJY25sX2RkaV92c3dpbmdfc2VxdWVuY2UoZW5jb2Rl ciwgbGV2ZWwsIGVuY29kZXItCj4gPnR5cGUpOwo+ICAJZWxzZSBpZiAoSVNfR0VOOV9MUChkZXZf cHJpdikpCj4gIAkJYnh0X2RkaV92c3dpbmdfc2VxdWVuY2UoZW5jb2RlciwgbGV2ZWwsIGVuY29k ZXItCj4gPnR5cGUpOwo+IEBAIC0yNDIwLDcgKzI2MDEsOSBAQCBzdGF0aWMgdm9pZCBpbnRlbF9k ZGlfcHJlX2VuYWJsZV9oZG1pKHN0cnVjdAo+IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gIAo+ ICAJaW50ZWxfZGlzcGxheV9wb3dlcl9nZXQoZGV2X3ByaXYsIGRpZ19wb3J0LQo+ID5kZGlfaW9f cG93ZXJfZG9tYWluKTsKPiAgCj4gLQlpZiAoSVNfQ0FOTk9OTEFLRShkZXZfcHJpdikpCj4gKwlp ZiAoSVNfSUNFTEFLRShkZXZfcHJpdikpCj4gKwkJaWNsX2RkaV92c3dpbmdfc2VxdWVuY2UoZW5j b2RlciwgbGV2ZWwpOwo+ICsJZWxzZSBpZiAoSVNfQ0FOTk9OTEFLRShkZXZfcHJpdikpCj4gIAkJ Y25sX2RkaV92c3dpbmdfc2VxdWVuY2UoZW5jb2RlciwgbGV2ZWwsCj4gSU5URUxfT1VUUFVUX0hE TUkpOwo+ICAJZWxzZSBpZiAoSVNfR0VOOV9MUChkZXZfcHJpdikpCj4gIAkJYnh0X2RkaV92c3dp bmdfc2VxdWVuY2UoZW5jb2RlciwgbGV2ZWwsCj4gSU5URUxfT1VUUFVUX0hETUkpOwpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGlu ZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK