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: Tue, 24 Apr 2018 17:34:14 -0700 Message-ID: <1524616454.2813.10.camel@intel.com> References: <20180222035519.13486-1-paulo.r.zanoni@intel.com> <20180222035519.13486-9-paulo.r.zanoni@intel.com> <20180406002034.GP4181@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 ESMTPS id 88CFD6E4EB for ; Wed, 25 Apr 2018 00:34:31 +0000 (UTC) In-Reply-To: <20180406002034.GP4181@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Rodrigo Vivi Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org RW0gUXVpLCAyMDE4LTA0LTA1IMOgcyAxNzoyMCAtMDcwMCwgUm9kcmlnbyBWaXZpIGVzY3JldmV1 Ogo+IE9uIFRodSwgRmViIDIyLCAyMDE4IGF0IDEyOjU1OjEwQU0gLTAzMDAsIFBhdWxvIFphbm9u aSB3cm90ZToKPiA+IEZyb206IE1hbmFzaSBOYXZhcmUgPG1hbmFzaS5kLm5hdmFyZUBpbnRlbC5j b20+Cj4gPiAKPiA+IFRoaXMgaXMgYW4gaW1wb3J0YW50IHBhcnQgb2YgdGhlIERESSBpbml0YWxp emF0aW9uIGFzIHdlbGwgYXMKPiA+IGZvciBjaGFuZ2luZyB0aGUgdm9sdGFnZSBkdXJpbmcgRGlz cGxheVBvcnQgbGluayB0cmFpbmluZy4KPiA+IAo+ID4gVGhlIFZvbHRhZ2Ugc3dpbmcgc2VxZXVl bmNlIGlzIHNpbWlsYXIgdG8gQ2Fubm9ubGFrZS4KPiA+IEhvd2V2ZXIgaXQgaGFzIGRpZmZlcmVu dCByZWdpc3RlciBkZWZpbml0aW9ucyBhbmQgaGVuY2UKPiA+IGl0IG1ha2VzIHNlbnNlIHRvIGNy ZWF0ZSBhIHNlcGFyYXRlIHZzd2luZyBzZXF1ZW5jZSBhbmQKPiA+IHByb2dyYW0gZnVuY3Rpb25z IGZvciBJQ0wgdG8gbGVhdmUgcm9vbSBmb3IgbW9yZSBjaGFuZ2VzCj4gPiBpbiBjYXNlIHRoZSBC c3BlYyBjaGFuZ2VzIGxhdGVyIGFuZCBkZXZpYXRlcyBmcm9tIENOTCBzZXF1ZW5jZS4KPiA+IAo+ ID4gdjI6Cj4gPiBVc2UgflRBUDNfRElTQUJMRSBmb3IgZW5iYWxpbmcgdGhhdCBiaXQgKEphbmkg TmlrdWxhKQo+ID4gCj4gPiB2MzoKPiA+ICogVXNlIGR3NF9zY2FsaW5nIGNvbHVtbiBmb3IgUE9S VF9UWF9EVzQgdmFsdWVzIChSb2RyaWdvKQo+ID4gCj4gPiB2NDoKPiA+ICogQ2FsbCBpdCBjb21i b192c3dpbmcsIHVzZSBzd2l0Y2ggc3RhdGVtZW50IChQYXVsbykKPiA+IAo+ID4gdjUgKGZyb20g UGF1bG8pOgo+ID4gKiBGaXggYSB0eXBvLgo+ID4gKiBzL3JhdGUgPCA2MDAwMDAvcmF0ZSA8PSA2 MDAwMDAvLgo+ID4gKiBEb24ndCByZW1vdmUgYmxhbmsgbGluZXMgdGhhdCBzaG91bGQgYmUgdGhl cmUuCj4gPiAKPiA+IHY2Ogo+ID4gKiBSZWJhc2VkIGJ5IFJvZHJpZ28gb24gdG9wIG9mIENhbm5v bmxha2UgY2hhbmdlcwo+ID4gICB3aGVyZSBub24gdnN3aW5nIHNlcXVlbmNlcyBhcmUgbm90IGFs aWduZWQgd2l0aCBpYm9vc3QKPiA+ICAgYW55bW9yZS4KPiA+IAo+ID4gdjc6IEFub3RoZXIgcmVi YXNlIGFmdGVyIGFuIHVwc3RyZWFtIHJld29yay4KPiA+IAo+ID4gdjggKGZyb20gUGF1bG8pOgo+ ID4gKiBBZGp1c3QgdGhlIGNvZGUgdG8gdGhlIHVwc3RyZWFtIG91dHB1dCB0eXBlIGNoYW5nZXMu Cj4gPiAqIFNxdWFzaCB0aGUgcGF0Y2ggdGhhdCBtb3ZlZCBzb21lIGZ1bmN0aW9ucyB1cC4KPiA+ ICogTWVyZ2UgYm90aCBnZXRfY29tYm9fYnVmX3RyYW5zIGZ1bmN0aW9ucyBpbiBvcmRlciB0byBz aW1wbGlmeSB0aGUKPiA+ICAgY29kZS4KPiA+ICogQ2hhbmdlIHRoZSBjaGFuZ2Vsb2cgZm9ybWF0 Lgo+ID4gCj4gPiBDYzogSmFuaSBOaWt1bGEgPGphbmkubmlrdWxhQGxpbnV4LmludGVsLmNvbT4K PiA+IFJldmlld2VkLWJ5OiBQYXVsbyBaYW5vbmkgPHBhdWxvLnIuemFub25pQGludGVsLmNvbT4g KHY1KQo+ID4gU2lnbmVkLW9mZi1ieTogTWFuYXNpIE5hdmFyZSA8bWFuYXNpLmQubmF2YXJlQGlu dGVsLmNvbT4KPiA+IFNpZ25lZC1vZmYtYnk6IFJvZHJpZ28gVml2aSA8cm9kcmlnby52aXZpQGlu dGVsLmNvbT4KPiA+IFNpZ25lZC1vZmYtYnk6IFBhdWxvIFphbm9uaSA8cGF1bG8uci56YW5vbmlA aW50ZWwuY29tPgo+ID4gLS0tCj4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMg fCAxODkKPiA+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQo+ID4gIDEg ZmlsZSBjaGFuZ2VkLCAxODYgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKPiA+IAo+ID4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCj4gPiBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCj4gPiBpbmRleCAwYTQ2ODM5OTFlYzIuLmMzODg3 M2NiOThjYSAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5j Cj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYwo+ID4gQEAgLTg0OSw2 ICs4NDksNDUgQEAgY25sX2dldF9idWZfdHJhbnNfZWRwKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl Cj4gPiAqZGV2X3ByaXYsIGludCAqbl9lbnRyaWVzKQo+ID4gIAl9Cj4gPiAgfQo+ID4gIAo+ID4g K3N0YXRpYyBjb25zdCBzdHJ1Y3QgaWNsX2NvbWJvX3BoeV9kZGlfYnVmX3RyYW5zICoKPiA+ICtp Y2xfZ2V0X2NvbWJvX2J1Zl90cmFucyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs IGVudW0KPiA+IHBvcnQgcG9ydCwKPiA+ICsJCQlpbnQgdHlwZSwgaW50ICpuX2VudHJpZXMpCj4g PiArewo+ID4gKwl1MzIgdm9sdGFnZSA9IEk5MTVfUkVBRChJQ0xfUE9SVF9DT01QX0RXMyhwb3J0 KSkgJgo+ID4gVk9MVEFHRV9JTkZPX01BU0s7Cj4gPiArCj4gPiArCWlmICh0eXBlID09IElOVEVM X09VVFBVVF9FRFAgJiYgZGV2X3ByaXYtCj4gPiA+dmJ0LmVkcC5sb3dfdnN3aW5nKSB7Cj4gPiAr CQlzd2l0Y2ggKHZvbHRhZ2UpIHsKPiA+ICsJCWNhc2UgVk9MVEFHRV9JTkZPXzBfODVWOgo+ID4g KwkJCSpuX2VudHJpZXMgPQo+ID4gQVJSQVlfU0laRShpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xh dGlvbnNfZWRwXzBfODVWKTsKPiA+ICsJCQlyZXR1cm4KPiA+IGljbF9jb21ib19waHlfZGRpX3Ry YW5zbGF0aW9uc19lZHBfMF84NVY7Cj4gPiArCQljYXNlIFZPTFRBR0VfSU5GT18wXzk1VjoKPiA+ ICsJCQkqbl9lbnRyaWVzID0KPiA+IEFSUkFZX1NJWkUoaWNsX2NvbWJvX3BoeV9kZGlfdHJhbnNs YXRpb25zX2VkcF8wXzk1Vik7Cj4gPiArCQkJcmV0dXJuCj4gPiBpY2xfY29tYm9fcGh5X2RkaV90 cmFuc2xhdGlvbnNfZWRwXzBfOTVWOwo+ID4gKwkJY2FzZSBWT0xUQUdFX0lORk9fMV8wNVY6Cj4g PiArCQkJKm5fZW50cmllcyA9Cj4gPiBBUlJBWV9TSVpFKGljbF9jb21ib19waHlfZGRpX3RyYW5z bGF0aW9uc19lZHBfMV8wNVYpOwo+ID4gKwkJCXJldHVybgo+ID4gaWNsX2NvbWJvX3BoeV9kZGlf dHJhbnNsYXRpb25zX2VkcF8xXzA1VjsKPiA+ICsJCWRlZmF1bHQ6Cj4gPiArCQkJTUlTU0lOR19D QVNFKHZvbHRhZ2UpOwo+ID4gKwkJCXJldHVybiBOVUxMOwo+ID4gKwkJfQo+ID4gKwl9IGVsc2Ug ewo+IAo+IERQIGVuZHMgdXAgaGVyZSBvbiBIRE1JPwo+IFRoaXMgaXMgc3RyYW5nZS4uLgoKRFAg ZW5kcyBvbiB0aGUgImRwX2hkbWkiIHBhcnQsIHdoaWxlIGVkcCBlbmRzIG9uIHRoZSAiZWRwIiBw YXJ0LiBXaGF0CmlzIHN0cmFuZ2UgYWJvdXQgdGhhdD8KCj4gCj4gQWxzbywgZm9yIGNsYXJpdHks IHdoeSBub3QgdG8gc3BsaXQgdGhpcyBpbnRvIHNlcGFyYXRlZCBmdW5jdGlvbnMKPiBsaWtlIGFs bCBvdGhlciBwbGF0Zm9ybXM/CgpTbyB3ZSBkb24ndCBlbmQgdXAgcmVhZGluZyBQT1JUX0NPTVBf RFczIG11bHRpcGxlIHRpbWVzIChsaWtlIHdlIGRvIGZvcgpDTkwpLCBhbmQgYXMgYSBib251cyB0 aGUgY29kZSBsb29rcyBiZXR0ZXIgSU1ITy4KCgoKPiAKPiA+ICsJCXN3aXRjaCAodm9sdGFnZSkg ewo+ID4gKwkJY2FzZSBWT0xUQUdFX0lORk9fMF84NVY6Cj4gPiArCQkJKm5fZW50cmllcyA9Cj4g PiBBUlJBWV9TSVpFKGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19kcF9oZG1pXzBfODVW KTsKPiA+ICsJCQlyZXR1cm4KPiA+IGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19kcF9o ZG1pXzBfODVWOwo+ID4gKwkJY2FzZSBWT0xUQUdFX0lORk9fMF85NVY6Cj4gPiArCQkJKm5fZW50 cmllcyA9Cj4gPiBBUlJBWV9TSVpFKGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19kcF9o ZG1pXzBfOTVWKTsKPiA+ICsJCQlyZXR1cm4KPiA+IGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0 aW9uc19kcF9oZG1pXzBfOTVWOwo+ID4gKwkJY2FzZSBWT0xUQUdFX0lORk9fMV8wNVY6Cj4gPiAr CQkJKm5fZW50cmllcyA9Cj4gPiBBUlJBWV9TSVpFKGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0 aW9uc19kcF9oZG1pXzFfMDVWKTsKPiA+ICsJCQlyZXR1cm4KPiA+IGljbF9jb21ib19waHlfZGRp X3RyYW5zbGF0aW9uc19kcF9oZG1pXzFfMDVWOwo+ID4gKwkJZGVmYXVsdDoKPiA+ICsJCQlNSVNT SU5HX0NBU0Uodm9sdGFnZSk7Cj4gPiArCQkJcmV0dXJuIE5VTEw7Cj4gPiArCQl9Cj4gPiArCX0K PiA+ICt9Cj4gPiArCj4gPiAgc3RhdGljIGludCBpbnRlbF9kZGlfaGRtaV9sZXZlbChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiBlbnVtIHBvcnQgcG9ydCkKPiA+ICB7Cj4g PiAgCWludCBuX2VudHJpZXMsIGxldmVsLCBkZWZhdWx0X2VudHJ5Owo+ID4gQEAgLTIxNzgsNiAr MjIxNywxNDQgQEAgc3RhdGljIHZvaWQgY25sX2RkaV92c3dpbmdfc2VxdWVuY2Uoc3RydWN0Cj4g PiBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ID4gIAlJOTE1X1dSSVRFKENOTF9QT1JUX1RYX0RX NV9HUlAocG9ydCksIHZhbCk7Cj4gPiAgfQo+ID4gIAo+ID4gK3N0YXRpYyB2b2lkIGljbF9kZGlf Y29tYm9fdnN3aW5nX3Byb2dyYW0oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUKPiA+ICpkZXZfcHJp diwKPiA+ICsJCQkJCSB1MzIgbGV2ZWwsIGVudW0gcG9ydAo+ID4gcG9ydCwgaW50IHR5cGUpCj4g PiArewo+ID4gKwljb25zdCBzdHJ1Y3QgaWNsX2NvbWJvX3BoeV9kZGlfYnVmX3RyYW5zICpkZGlf dHJhbnNsYXRpb25zCj4gPiA9IE5VTEw7Cj4gPiArCXUzMiBuX2VudHJpZXMsIHZhbDsKPiA+ICsJ aW50IGxuOwo+ID4gKwo+ID4gKwlkZGlfdHJhbnNsYXRpb25zID0gaWNsX2dldF9jb21ib19idWZf dHJhbnMoZGV2X3ByaXYsIHBvcnQsCj4gPiB0eXBlLAo+ID4gKwkJCQkJCSAgICZuX2VudHJpZXMp Owo+ID4gKwlpZiAoIWRkaV90cmFuc2xhdGlvbnMpCj4gPiArCQlyZXR1cm47Cj4gPiArCj4gPiAr CWlmIChsZXZlbCA+PSBuX2VudHJpZXMpIHsKPiA+ICsJCURSTV9ERUJVR19LTVMoIkRESSB0cmFu c2xhdGlvbiBub3QgZm91bmQgZm9yIGxldmVsCj4gPiAlZC4gVXNpbmcgJWQgaW5zdGVhZC4iLCBs ZXZlbCwgbl9lbnRyaWVzIC0gMSk7Cj4gPiArCQlsZXZlbCA9IG5fZW50cmllcyAtIDE7Cj4gPiAr CX0KPiA+ICsKPiA+ICsJLyogU2V0IFBPUlRfVFhfRFc1IFNjYWxpbmcgTW9kZSBTZWwgdG8gMTEw Yi4gKi8KPiA+ICsJdmFsID0gSTkxNV9SRUFEKElDTF9QT1JUX1RYX0RXNV9MTjAocG9ydCkpOwo+ ID4gKwl2YWwgJj0gflNDQUxJTkdfTU9ERV9TRUxfTUFTSzsKPiA+ICsJdmFsIHw9IFNDQUxJTkdf TU9ERV9TRUwoMHg2KTsKPiA+ICsJSTkxNV9XUklURShJQ0xfUE9SVF9UWF9EVzVfR1JQKHBvcnQp LCB2YWwpOwo+ID4gKwo+ID4gKwkvKiBQcm9ncmFtIFBPUlRfVFhfRFc1ICovCj4gPiArCXZhbCA9 IEk5MTVfUkVBRChJQ0xfUE9SVF9UWF9EVzVfTE4wKHBvcnQpKTsKPiA+ICsJLyogU2V0IERpc2Fi bGVUYXAyIGFuZCBEaXNhYmxlVGFwMyBpZiBNSVBJIERTSQo+ID4gKwkgKiBDbGVhciBEaXNhYmxl VGFwMiBhbmQgRGlzYWJsZVRhcDMgZm9yIGFsbCBvdGhlciBQb3J0cwo+ID4gKwkgKi8KPiA+ICsJ aWYgKHR5cGUgPT0gSU5URUxfT1VUUFVUX0RTSSkgewo+ID4gKwkJdmFsIHw9IFRBUDJfRElTQUJM RTsKPiA+ICsJCXZhbCB8PSBUQVAzX0RJU0FCTEU7Cj4gPiArCX0gZWxzZSB7Cj4gPiArCQl2YWwg Jj0gflRBUDJfRElTQUJMRTsKPiA+ICsJCXZhbCAmPSB+VEFQM19ESVNBQkxFOwo+ID4gKwl9Cj4g PiArCUk5MTVfV1JJVEUoSUNMX1BPUlRfVFhfRFc1X0dSUChwb3J0KSwgdmFsKTsKPiA+ICsKPiA+ ICsJLyogUHJvZ3JhbSBQT1JUX1RYX0RXMiAqLwo+ID4gKwl2YWwgPSBJOTE1X1JFQUQoSUNMX1BP UlRfVFhfRFcyX0xOMChwb3J0KSk7Cj4gPiArCXZhbCAmPSB+KFNXSU5HX1NFTF9MT1dFUl9NQVNL IHwgU1dJTkdfU0VMX1VQUEVSX01BU0sgfAo+ID4gKwkJIFJDT01QX1NDQUxBUl9NQVNLKTsKPiA+ ICsJdmFsIHw9Cj4gPiBTV0lOR19TRUxfVVBQRVIoZGRpX3RyYW5zbGF0aW9uc1tsZXZlbF0uZHcy X3N3aW5nX3NlbGVjdCk7Cj4gPiArCXZhbCB8PQo+ID4gU1dJTkdfU0VMX0xPV0VSKGRkaV90cmFu c2xhdGlvbnNbbGV2ZWxdLmR3Ml9zd2luZ19zZWxlY3QpOwo+ID4gKwkvKiBQcm9ncmFtIFJjb21w IHNjYWxhciBmb3IgZXZlcnkgdGFibGUgZW50cnkgKi8KPiA+ICsJdmFsIHw9Cj4gPiBSQ09NUF9T Q0FMQVIoZGRpX3RyYW5zbGF0aW9uc1tsZXZlbF0uZHcyX3N3aW5nX3NjYWxhcik7Cj4gPiArCUk5 MTVfV1JJVEUoSUNMX1BPUlRfVFhfRFcyX0dSUChwb3J0KSwgdmFsKTsKPiA+ICsKPiA+ICsJLyog UHJvZ3JhbSBQT1JUX1RYX0RXNCAqLwo+ID4gKwkvKiBXZSBjYW5ub3Qgd3JpdGUgdG8gR1JQLiBJ dCB3b3VsZCBvdmVyd3JpdGUgaW5kaXZpZHVhbAo+ID4gbG9hZGdlbi4gKi8KPiA+ICsJZm9yIChs biA9IDA7IGxuIDw9IDM7IGxuKyspIHsKPiA+ICsJCXZhbCA9IEk5MTVfUkVBRChJQ0xfUE9SVF9U WF9EVzRfTE4ocG9ydCwgbG4pKTsKPiA+ICsJCXZhbCAmPSB+KFBPU1RfQ1VSU09SXzFfTUFTSyB8 IFBPU1RfQ1VSU09SXzJfTUFTSyB8Cj4gPiArCQkJIENVUlNPUl9DT0VGRl9NQVNLKTsKPiA+ICsJ CXZhbCB8PSBkZGlfdHJhbnNsYXRpb25zW2xldmVsXS5kdzRfc2NhbGluZzsKPiA+ICsJCUk5MTVf V1JJVEUoSUNMX1BPUlRfVFhfRFc0X0xOKHBvcnQsIGxuKSwgdmFsKTsKPiA+ICsJfQo+ID4gK30K PiA+ICsKPiA+ICtzdGF0aWMgdm9pZCBpY2xfY29tYm9fcGh5X2RkaV92c3dpbmdfc2VxdWVuY2Uo c3RydWN0IGludGVsX2VuY29kZXIKPiA+ICplbmNvZGVyLCB1MzIgbGV2ZWwpCj4gPiArewo+ID4g KwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItCj4g PiA+YmFzZS5kZXYpOwo+ID4gKwllbnVtIHBvcnQgcG9ydCA9IGVuY29kZXItPnBvcnQ7Cj4gPiAr CWludCB0eXBlID0gZW5jb2Rlci0+dHlwZTsKPiA+ICsJaW50IHdpZHRoID0gMDsKPiA+ICsJaW50 IHJhdGUgPSAwOwo+ID4gKwl1MzIgdmFsOwo+ID4gKwlpbnQgbG4gPSAwOwo+ID4gKwo+ID4gKwlp ZiAodHlwZSA9PSBJTlRFTF9PVVRQVVRfSERNSSkgewo+ID4gKwkJd2lkdGggPSA0Owo+ID4gKwkJ LyogUmF0ZSBpcyBhbHdheXMgPCB0aGFuIDZHSHogZm9yIEhETUkgKi8KPiA+ICsJfSBlbHNlIHsK PiA+ICsJCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAgPQo+ID4gZW5jX3RvX2ludGVsX2RwKCZl bmNvZGVyLT5iYXNlKTsKPiA+ICsKPiA+ICsJCXdpZHRoID0gaW50ZWxfZHAtPmxhbmVfY291bnQ7 Cj4gPiArCQlyYXRlID0gaW50ZWxfZHAtPmxpbmtfcmF0ZTsKPiA+ICsJfQo+ID4gKwo+ID4gKwkv Kgo+ID4gKwkgKiAxLiBJZiBwb3J0IHR5cGUgaXMgZURQIG9yIERQLAo+ID4gKwkgKiBzZXQgUE9S VF9QQ1NfRFcxIGNtbmtlZXBlcl9lbmFibGUgdG8gMWIsCj4gPiArCSAqIGVsc2UgY2xlYXIgdG8g MGIuCj4gPiArCSAqLwo+ID4gKwl2YWwgPSBJOTE1X1JFQUQoSUNMX1BPUlRfUENTX0RXMV9MTjAo cG9ydCkpOwo+ID4gKwlpZiAodHlwZSA9PSBJTlRFTF9PVVRQVVRfSERNSSkKPiA+ICsJCXZhbCAm PSB+Q09NTU9OX0tFRVBFUl9FTjsKPiA+ICsJZWxzZQo+ID4gKwkJdmFsIHw9IENPTU1PTl9LRUVQ RVJfRU47Cj4gPiArCUk5MTVfV1JJVEUoSUNMX1BPUlRfUENTX0RXMV9HUlAocG9ydCksIHZhbCk7 Cj4gPiArCj4gPiArCS8qIDIuIFByb2dyYW0gbG9hZGdlbiBzZWxlY3QgKi8KPiA+ICsJLyoKPiA+ ICsJICogUHJvZ3JhbSBQT1JUX1RYX0RXNF9MTiBkZXBlbmRpbmcgb24gQml0IHJhdGUgYW5kIHVz ZWQKPiA+IGxhbmVzCj4gPiArCSAqIDw9IDYgR0h6IGFuZCA0IGxhbmVzIChMTjA9MCwgTE4xPTEs IExOMj0xLCBMTjM9MSkKPiA+ICsJICogPD0gNiBHSHogYW5kIDEsMiBsYW5lcyAoTE4wPTAsIExO MT0xLCBMTjI9MSwgTE4zPTApCj4gPiArCSAqID4gNiBHSHogKExOMD0wLCBMTjE9MCwgTE4yPTAs IExOMz0wKQo+ID4gKwkgKi8KPiA+ICsJZm9yIChsbiA9IDA7IGxuIDw9IDM7IGxuKyspIHsKPiA+ ICsJCXZhbCA9IEk5MTVfUkVBRChJQ0xfUE9SVF9UWF9EVzRfTE4ocG9ydCwgbG4pKTsKPiA+ICsJ CXZhbCAmPSB+TE9BREdFTl9TRUxFQ1Q7Cj4gPiArCj4gPiArCQlpZiAoKHJhdGUgPD0gNjAwMDAw ICYmIHdpZHRoID09IDQgJiYgbG4gPj0gMSkgfHwKPiA+ICsJCSAgICAocmF0ZSA8PSA2MDAwMDAg JiYgd2lkdGggPCA0ICYmIChsbiA9PSAxIHx8IGxuCj4gPiA9PSAyKSkpIHsKPiA+ICsJCQl2YWwg fD0gTE9BREdFTl9TRUxFQ1Q7Cj4gPiArCQl9Cj4gPiArCQlJOTE1X1dSSVRFKElDTF9QT1JUX1RY X0RXNF9MTihwb3J0LCBsbiksIHZhbCk7Cj4gPiArCX0KPiA+ICsKPiA+ICsJLyogMy4gU2V0IFBP UlRfQ0xfRFc1IFNVUyBDbG9jayBDb25maWcgdG8gMTFiICovCj4gPiArCXZhbCA9IEk5MTVfUkVB RChJQ0xfUE9SVF9DTF9EVzUocG9ydCkpOwo+ID4gKwl2YWwgfD0gU1VTX0NMT0NLX0NPTkZJRzsK PiA+ICsJSTkxNV9XUklURShJQ0xfUE9SVF9DTF9EVzUocG9ydCksIHZhbCk7Cj4gPiArCj4gPiAr CS8qIDQuIENsZWFyIHRyYWluaW5nIGVuYWJsZSB0byBjaGFuZ2Ugc3dpbmcgdmFsdWVzICovCj4g PiArCXZhbCA9IEk5MTVfUkVBRChJQ0xfUE9SVF9UWF9EVzVfTE4wKHBvcnQpKTsKPiA+ICsJdmFs ICY9IH5UWF9UUkFJTklOR19FTjsKPiA+ICsJSTkxNV9XUklURShJQ0xfUE9SVF9UWF9EVzVfR1JQ KHBvcnQpLCB2YWwpOwo+ID4gKwo+ID4gKwkvKiA1LiBQcm9ncmFtIHN3aW5nIGFuZCBkZS1lbXBo YXNpcyAqLwo+ID4gKwlpY2xfZGRpX2NvbWJvX3Zzd2luZ19wcm9ncmFtKGRldl9wcml2LCBsZXZl bCwgcG9ydCwgdHlwZSk7Cj4gPiArCj4gPiArCS8qIDYuIFNldCB0cmFpbmluZyBlbmFibGUgdG8g dHJpZ2dlciB1cGRhdGUgKi8KPiA+ICsJdmFsID0gSTkxNV9SRUFEKElDTF9QT1JUX1RYX0RXNV9M TjAocG9ydCkpOwo+ID4gKwl2YWwgfD0gVFhfVFJBSU5JTkdfRU47Cj4gPiArCUk5MTVfV1JJVEUo SUNMX1BPUlRfVFhfRFc1X0dSUChwb3J0KSwgdmFsKTsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGlj IHZvaWQgaWNsX2RkaV92c3dpbmdfc2VxdWVuY2Uoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29k ZXIsCj4gPiB1MzIgbGV2ZWwpCj4gPiArewo+ID4gKwllbnVtIHBvcnQgcG9ydCA9IGVuY29kZXIt PnBvcnQ7Cj4gPiArCj4gPiArCWlmIChwb3J0ID09IFBPUlRfQSB8fCBwb3J0ID09IFBPUlRfQikK PiA+ICsJCWljbF9jb21ib19waHlfZGRpX3Zzd2luZ19zZXF1ZW5jZShlbmNvZGVyLCBsZXZlbCk7 Cj4gPiArCWVsc2UKPiA+ICsJCS8qIE5vdCBJbXBsZW1lbnRlZCBZZXQgKi8KPiA+ICsJCVdBUk5f T04oMSk7Cj4gPiArfQo+ID4gKwo+ID4gIHN0YXRpYyB1aW50MzJfdCB0cmFuc2xhdGVfc2lnbmFs X2xldmVsKGludCBzaWduYWxfbGV2ZWxzKQo+ID4gIHsKPiA+ICAJaW50IGk7Cj4gPiBAQCAtMjIw OSw3ICsyMzg2LDkgQEAgdTMyIGJ4dF9zaWduYWxfbGV2ZWxzKHN0cnVjdCBpbnRlbF9kcAo+ID4g KmludGVsX2RwKQo+ID4gIAlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciA9ICZkcG9ydC0+ YmFzZTsKPiA+ICAJaW50IGxldmVsID0gaW50ZWxfZGRpX2RwX2xldmVsKGludGVsX2RwKTsKPiA+ ICAKPiA+IC0JaWYgKElTX0NBTk5PTkxBS0UoZGV2X3ByaXYpKQo+ID4gKwlpZiAoSVNfSUNFTEFL RShkZXZfcHJpdikpCj4gPiArCQlpY2xfZGRpX3Zzd2luZ19zZXF1ZW5jZShlbmNvZGVyLCBsZXZl bCk7Cj4gPiArCWVsc2UgaWYgKElTX0NBTk5PTkxBS0UoZGV2X3ByaXYpKQo+ID4gIAkJY25sX2Rk aV92c3dpbmdfc2VxdWVuY2UoZW5jb2RlciwgbGV2ZWwsIGVuY29kZXItCj4gPiA+dHlwZSk7Cj4g PiAgCWVsc2UKPiA+ICAJCWJ4dF9kZGlfdnN3aW5nX3NlcXVlbmNlKGVuY29kZXIsIGxldmVsLCBl bmNvZGVyLQo+ID4gPnR5cGUpOwo+ID4gQEAgLTIzODksNyArMjU2OCw5IEBAIHN0YXRpYyB2b2lk IGludGVsX2RkaV9wcmVfZW5hYmxlX2RwKHN0cnVjdAo+ID4gaW50ZWxfZW5jb2RlciAqZW5jb2Rl ciwKPiA+ICAKPiA+ICAJaW50ZWxfZGlzcGxheV9wb3dlcl9nZXQoZGV2X3ByaXYsIGRpZ19wb3J0 LQo+ID4gPmRkaV9pb19wb3dlcl9kb21haW4pOwo+ID4gIAo+ID4gLQlpZiAoSVNfQ0FOTk9OTEFL RShkZXZfcHJpdikpCj4gPiArCWlmIChJU19JQ0VMQUtFKGRldl9wcml2KSkKPiA+ICsJCWljbF9k ZGlfdnN3aW5nX3NlcXVlbmNlKGVuY29kZXIsIGxldmVsKTsKPiA+ICsJZWxzZSBpZiAoSVNfQ0FO Tk9OTEFLRShkZXZfcHJpdikpCj4gPiAgCQljbmxfZGRpX3Zzd2luZ19zZXF1ZW5jZShlbmNvZGVy LCBsZXZlbCwgZW5jb2Rlci0KPiA+ID50eXBlKTsKPiA+ICAJZWxzZSBpZiAoSVNfR0VOOV9MUChk ZXZfcHJpdikpCj4gPiAgCQlieHRfZGRpX3Zzd2luZ19zZXF1ZW5jZShlbmNvZGVyLCBsZXZlbCwg ZW5jb2Rlci0KPiA+ID50eXBlKTsKPiA+IEBAIC0yNDIwLDcgKzI2MDEsOSBAQCBzdGF0aWMgdm9p ZCBpbnRlbF9kZGlfcHJlX2VuYWJsZV9oZG1pKHN0cnVjdAo+ID4gaW50ZWxfZW5jb2RlciAqZW5j b2RlciwKPiA+ICAKPiA+ICAJaW50ZWxfZGlzcGxheV9wb3dlcl9nZXQoZGV2X3ByaXYsIGRpZ19w b3J0LQo+ID4gPmRkaV9pb19wb3dlcl9kb21haW4pOwo+ID4gIAo+ID4gLQlpZiAoSVNfQ0FOTk9O TEFLRShkZXZfcHJpdikpCj4gPiArCWlmIChJU19JQ0VMQUtFKGRldl9wcml2KSkKPiA+ICsJCWlj bF9kZGlfdnN3aW5nX3NlcXVlbmNlKGVuY29kZXIsIGxldmVsKTsKPiA+ICsJZWxzZSBpZiAoSVNf Q0FOTk9OTEFLRShkZXZfcHJpdikpCj4gPiAgCQljbmxfZGRpX3Zzd2luZ19zZXF1ZW5jZShlbmNv ZGVyLCBsZXZlbCwKPiA+IElOVEVMX09VVFBVVF9IRE1JKTsKPiA+ICAJZWxzZSBpZiAoSVNfR0VO OV9MUChkZXZfcHJpdikpCj4gPiAgCQlieHRfZGRpX3Zzd2luZ19zZXF1ZW5jZShlbmNvZGVyLCBs ZXZlbCwKPiA+IElOVEVMX09VVFBVVF9IRE1JKTsKPiA+IC0tIAo+ID4gMi4xNC4zCj4gPiAKPiA+ IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gPiBJbnRl bC1nZnggbWFpbGluZyBsaXN0Cj4gPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4g PiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdm eApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1n ZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK