From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rodrigo Vivi Subject: Re: [PATCH 08/17] drm/i915/icl: Implement voltage swing programming sequence for Combo PHY DDI Date: Wed, 25 Apr 2018 11:01:50 -0700 Message-ID: <20180425180150.GW1994@intel.com> References: <20180222035519.13486-1-paulo.r.zanoni@intel.com> <20180222035519.13486-9-paulo.r.zanoni@intel.com> <20180406002034.GP4181@intel.com> <1524616454.2813.10.camel@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id CE9F76E648 for ; Wed, 25 Apr 2018 18:01:52 +0000 (UTC) Content-Disposition: inline In-Reply-To: <1524616454.2813.10.camel@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Paulo Zanoni Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBBcHIgMjQsIDIwMTggYXQgMDU6MzQ6MTRQTSAtMDcwMCwgUGF1bG8gWmFub25pIHdy b3RlOgo+IEVtIFF1aSwgMjAxOC0wNC0wNSDDoHMgMTc6MjAgLTA3MDAsIFJvZHJpZ28gVml2aSBl c2NyZXZldToKPiA+IE9uIFRodSwgRmViIDIyLCAyMDE4IGF0IDEyOjU1OjEwQU0gLTAzMDAsIFBh dWxvIFphbm9uaSB3cm90ZToKPiA+ID4gRnJvbTogTWFuYXNpIE5hdmFyZSA8bWFuYXNpLmQubmF2 YXJlQGludGVsLmNvbT4KPiA+ID4gCj4gPiA+IFRoaXMgaXMgYW4gaW1wb3J0YW50IHBhcnQgb2Yg dGhlIERESSBpbml0YWxpemF0aW9uIGFzIHdlbGwgYXMKPiA+ID4gZm9yIGNoYW5naW5nIHRoZSB2 b2x0YWdlIGR1cmluZyBEaXNwbGF5UG9ydCBsaW5rIHRyYWluaW5nLgo+ID4gPiAKPiA+ID4gVGhl IFZvbHRhZ2Ugc3dpbmcgc2VxZXVlbmNlIGlzIHNpbWlsYXIgdG8gQ2Fubm9ubGFrZS4KPiA+ID4g SG93ZXZlciBpdCBoYXMgZGlmZmVyZW50IHJlZ2lzdGVyIGRlZmluaXRpb25zIGFuZCBoZW5jZQo+ ID4gPiBpdCBtYWtlcyBzZW5zZSB0byBjcmVhdGUgYSBzZXBhcmF0ZSB2c3dpbmcgc2VxdWVuY2Ug YW5kCj4gPiA+IHByb2dyYW0gZnVuY3Rpb25zIGZvciBJQ0wgdG8gbGVhdmUgcm9vbSBmb3IgbW9y ZSBjaGFuZ2VzCj4gPiA+IGluIGNhc2UgdGhlIEJzcGVjIGNoYW5nZXMgbGF0ZXIgYW5kIGRldmlh dGVzIGZyb20gQ05MIHNlcXVlbmNlLgo+ID4gPiAKPiA+ID4gdjI6Cj4gPiA+IFVzZSB+VEFQM19E SVNBQkxFIGZvciBlbmJhbGluZyB0aGF0IGJpdCAoSmFuaSBOaWt1bGEpCj4gPiA+IAo+ID4gPiB2 MzoKPiA+ID4gKiBVc2UgZHc0X3NjYWxpbmcgY29sdW1uIGZvciBQT1JUX1RYX0RXNCB2YWx1ZXMg KFJvZHJpZ28pCj4gPiA+IAo+ID4gPiB2NDoKPiA+ID4gKiBDYWxsIGl0IGNvbWJvX3Zzd2luZywg dXNlIHN3aXRjaCBzdGF0ZW1lbnQgKFBhdWxvKQo+ID4gPiAKPiA+ID4gdjUgKGZyb20gUGF1bG8p Ogo+ID4gPiAqIEZpeCBhIHR5cG8uCj4gPiA+ICogcy9yYXRlIDwgNjAwMDAwL3JhdGUgPD0gNjAw MDAwLy4KPiA+ID4gKiBEb24ndCByZW1vdmUgYmxhbmsgbGluZXMgdGhhdCBzaG91bGQgYmUgdGhl cmUuCj4gPiA+IAo+ID4gPiB2NjoKPiA+ID4gKiBSZWJhc2VkIGJ5IFJvZHJpZ28gb24gdG9wIG9m IENhbm5vbmxha2UgY2hhbmdlcwo+ID4gPiAgIHdoZXJlIG5vbiB2c3dpbmcgc2VxdWVuY2VzIGFy ZSBub3QgYWxpZ25lZCB3aXRoIGlib29zdAo+ID4gPiAgIGFueW1vcmUuCj4gPiA+IAo+ID4gPiB2 NzogQW5vdGhlciByZWJhc2UgYWZ0ZXIgYW4gdXBzdHJlYW0gcmV3b3JrLgo+ID4gPiAKPiA+ID4g djggKGZyb20gUGF1bG8pOgo+ID4gPiAqIEFkanVzdCB0aGUgY29kZSB0byB0aGUgdXBzdHJlYW0g b3V0cHV0IHR5cGUgY2hhbmdlcy4KPiA+ID4gKiBTcXVhc2ggdGhlIHBhdGNoIHRoYXQgbW92ZWQg c29tZSBmdW5jdGlvbnMgdXAuCj4gPiA+ICogTWVyZ2UgYm90aCBnZXRfY29tYm9fYnVmX3RyYW5z IGZ1bmN0aW9ucyBpbiBvcmRlciB0byBzaW1wbGlmeSB0aGUKPiA+ID4gICBjb2RlLgo+ID4gPiAq IENoYW5nZSB0aGUgY2hhbmdlbG9nIGZvcm1hdC4KPiA+ID4gCj4gPiA+IENjOiBKYW5pIE5pa3Vs YSA8amFuaS5uaWt1bGFAbGludXguaW50ZWwuY29tPgo+ID4gPiBSZXZpZXdlZC1ieTogUGF1bG8g WmFub25pIDxwYXVsby5yLnphbm9uaUBpbnRlbC5jb20+ICh2NSkKPiA+ID4gU2lnbmVkLW9mZi1i eTogTWFuYXNpIE5hdmFyZSA8bWFuYXNpLmQubmF2YXJlQGludGVsLmNvbT4KPiA+ID4gU2lnbmVk LW9mZi1ieTogUm9kcmlnbyBWaXZpIDxyb2RyaWdvLnZpdmlAaW50ZWwuY29tPgo+ID4gPiBTaWdu ZWQtb2ZmLWJ5OiBQYXVsbyBaYW5vbmkgPHBhdWxvLnIuemFub25pQGludGVsLmNvbT4KPiA+ID4g LS0tCj4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYyB8IDE4OQo+ID4gPiAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KPiA+ID4gIDEgZmlsZSBjaGFu Z2VkLCAxODYgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKPiA+ID4gCj4gPiA+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYwo+ID4gPiBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCj4gPiA+IGluZGV4IDBhNDY4Mzk5MWVjMi4uYzM4ODcz Y2I5OGNhIDEwMDY0NAo+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGku Ywo+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYwo+ID4gPiBAQCAt ODQ5LDYgKzg0OSw0NSBAQCBjbmxfZ2V0X2J1Zl90cmFuc19lZHAoc3RydWN0IGRybV9pOTE1X3By aXZhdGUKPiA+ID4gKmRldl9wcml2LCBpbnQgKm5fZW50cmllcykKPiA+ID4gIAl9Cj4gPiA+ICB9 Cj4gPiA+ICAKPiA+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaWNsX2NvbWJvX3BoeV9kZGlfYnVm X3RyYW5zICoKPiA+ID4gK2ljbF9nZXRfY29tYm9fYnVmX3RyYW5zKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwgZW51bQo+ID4gPiBwb3J0IHBvcnQsCj4gPiA+ICsJCQlpbnQgdHlw ZSwgaW50ICpuX2VudHJpZXMpCj4gPiA+ICt7Cj4gPiA+ICsJdTMyIHZvbHRhZ2UgPSBJOTE1X1JF QUQoSUNMX1BPUlRfQ09NUF9EVzMocG9ydCkpICYKPiA+ID4gVk9MVEFHRV9JTkZPX01BU0s7Cj4g PiA+ICsKPiA+ID4gKwlpZiAodHlwZSA9PSBJTlRFTF9PVVRQVVRfRURQICYmIGRldl9wcml2LQo+ ID4gPiA+dmJ0LmVkcC5sb3dfdnN3aW5nKSB7Cj4gPiA+ICsJCXN3aXRjaCAodm9sdGFnZSkgewo+ ID4gPiArCQljYXNlIFZPTFRBR0VfSU5GT18wXzg1VjoKPiA+ID4gKwkJCSpuX2VudHJpZXMgPQo+ ID4gPiBBUlJBWV9TSVpFKGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19lZHBfMF84NVYp Owo+ID4gPiArCQkJcmV0dXJuCj4gPiA+IGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19l ZHBfMF84NVY7Cj4gPiA+ICsJCWNhc2UgVk9MVEFHRV9JTkZPXzBfOTVWOgo+ID4gPiArCQkJKm5f ZW50cmllcyA9Cj4gPiA+IEFSUkFZX1NJWkUoaWNsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25z X2VkcF8wXzk1Vik7Cj4gPiA+ICsJCQlyZXR1cm4KPiA+ID4gaWNsX2NvbWJvX3BoeV9kZGlfdHJh bnNsYXRpb25zX2VkcF8wXzk1VjsKPiA+ID4gKwkJY2FzZSBWT0xUQUdFX0lORk9fMV8wNVY6Cj4g PiA+ICsJCQkqbl9lbnRyaWVzID0KPiA+ID4gQVJSQVlfU0laRShpY2xfY29tYm9fcGh5X2RkaV90 cmFuc2xhdGlvbnNfZWRwXzFfMDVWKTsKPiA+ID4gKwkJCXJldHVybgo+ID4gPiBpY2xfY29tYm9f cGh5X2RkaV90cmFuc2xhdGlvbnNfZWRwXzFfMDVWOwo+ID4gPiArCQlkZWZhdWx0Ogo+ID4gPiAr CQkJTUlTU0lOR19DQVNFKHZvbHRhZ2UpOwo+ID4gPiArCQkJcmV0dXJuIE5VTEw7Cj4gPiA+ICsJ CX0KPiA+ID4gKwl9IGVsc2Ugewo+ID4gCj4gPiBEUCBlbmRzIHVwIGhlcmUgb24gSERNST8KPiA+ IFRoaXMgaXMgc3RyYW5nZS4uLgo+IAo+IERQIGVuZHMgb24gdGhlICJkcF9oZG1pIiBwYXJ0LCB3 aGlsZSBlZHAgZW5kcyBvbiB0aGUgImVkcCIgcGFydC4gV2hhdAo+IGlzIHN0cmFuZ2UgYWJvdXQg dGhhdD8KCk9oLi4uIGFjdHVhbGx5IHNwZWMgaXMgc3RyYW5nZS4uLgpUaGV5IGhhdmUgMiB0YWJs ZXMsIDEgZm9yIERQIGFuZCAxIGZvciBIRE1JLgpJIGp1c3QgcmVhZCB0aGVtIGFnYWluIGFuZCB0 aGV5IGFyZSB0aGUgc2FtZSBpbmRlZWQuClNvLCBub3RoaW5nIHdyb25nIGhlcmUuCgo+IAo+ID4g Cj4gPiBBbHNvLCBmb3IgY2xhcml0eSwgd2h5IG5vdCB0byBzcGxpdCB0aGlzIGludG8gc2VwYXJh dGVkIGZ1bmN0aW9ucwo+ID4gbGlrZSBhbGwgb3RoZXIgcGxhdGZvcm1zPwo+IAo+IFNvIHdlIGRv bid0IGVuZCB1cCByZWFkaW5nIFBPUlRfQ09NUF9EVzMgbXVsdGlwbGUgdGltZXMgKGxpa2Ugd2Ug ZG8gZm9yCj4gQ05MKSwgYW5kIGFzIGEgYm9udXMgdGhlIGNvZGUgbG9va3MgYmV0dGVyIElNSE8u CgpBZ3JlZS4KClJldmlld2VkLWJ5OiBSb2RyaWdvIFZpdmkgPHJvZHJpZ28udml2aUBpbnRlbC5j b20+Cgo+IAo+IAo+IAo+ID4gCj4gPiA+ICsJCXN3aXRjaCAodm9sdGFnZSkgewo+ID4gPiArCQlj YXNlIFZPTFRBR0VfSU5GT18wXzg1VjoKPiA+ID4gKwkJCSpuX2VudHJpZXMgPQo+ID4gPiBBUlJB WV9TSVpFKGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19kcF9oZG1pXzBfODVWKTsKPiA+ ID4gKwkJCXJldHVybgo+ID4gPiBpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZHBfaGRt aV8wXzg1VjsKPiA+ID4gKwkJY2FzZSBWT0xUQUdFX0lORk9fMF85NVY6Cj4gPiA+ICsJCQkqbl9l bnRyaWVzID0KPiA+ID4gQVJSQVlfU0laRShpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNf ZHBfaGRtaV8wXzk1Vik7Cj4gPiA+ICsJCQlyZXR1cm4KPiA+ID4gaWNsX2NvbWJvX3BoeV9kZGlf dHJhbnNsYXRpb25zX2RwX2hkbWlfMF85NVY7Cj4gPiA+ICsJCWNhc2UgVk9MVEFHRV9JTkZPXzFf MDVWOgo+ID4gPiArCQkJKm5fZW50cmllcyA9Cj4gPiA+IEFSUkFZX1NJWkUoaWNsX2NvbWJvX3Bo eV9kZGlfdHJhbnNsYXRpb25zX2RwX2hkbWlfMV8wNVYpOwo+ID4gPiArCQkJcmV0dXJuCj4gPiA+ IGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19kcF9oZG1pXzFfMDVWOwo+ID4gPiArCQlk ZWZhdWx0Ogo+ID4gPiArCQkJTUlTU0lOR19DQVNFKHZvbHRhZ2UpOwo+ID4gPiArCQkJcmV0dXJu IE5VTEw7Cj4gPiA+ICsJCX0KPiA+ID4gKwl9Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gIHN0YXRp YyBpbnQgaW50ZWxfZGRpX2hkbWlfbGV2ZWwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LAo+ID4gPiBlbnVtIHBvcnQgcG9ydCkKPiA+ID4gIHsKPiA+ID4gIAlpbnQgbl9lbnRyaWVz LCBsZXZlbCwgZGVmYXVsdF9lbnRyeTsKPiA+ID4gQEAgLTIxNzgsNiArMjIxNywxNDQgQEAgc3Rh dGljIHZvaWQgY25sX2RkaV92c3dpbmdfc2VxdWVuY2Uoc3RydWN0Cj4gPiA+IGludGVsX2VuY29k ZXIgKmVuY29kZXIsCj4gPiA+ICAJSTkxNV9XUklURShDTkxfUE9SVF9UWF9EVzVfR1JQKHBvcnQp LCB2YWwpOwo+ID4gPiAgfQo+ID4gPiAgCj4gPiA+ICtzdGF0aWMgdm9pZCBpY2xfZGRpX2NvbWJv X3Zzd2luZ19wcm9ncmFtKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlCj4gPiA+ICpkZXZfcHJpdiwK PiA+ID4gKwkJCQkJIHUzMiBsZXZlbCwgZW51bSBwb3J0Cj4gPiA+IHBvcnQsIGludCB0eXBlKQo+ ID4gPiArewo+ID4gPiArCWNvbnN0IHN0cnVjdCBpY2xfY29tYm9fcGh5X2RkaV9idWZfdHJhbnMg KmRkaV90cmFuc2xhdGlvbnMKPiA+ID4gPSBOVUxMOwo+ID4gPiArCXUzMiBuX2VudHJpZXMsIHZh bDsKPiA+ID4gKwlpbnQgbG47Cj4gPiA+ICsKPiA+ID4gKwlkZGlfdHJhbnNsYXRpb25zID0gaWNs X2dldF9jb21ib19idWZfdHJhbnMoZGV2X3ByaXYsIHBvcnQsCj4gPiA+IHR5cGUsCj4gPiA+ICsJ CQkJCQkgICAmbl9lbnRyaWVzKTsKPiA+ID4gKwlpZiAoIWRkaV90cmFuc2xhdGlvbnMpCj4gPiA+ ICsJCXJldHVybjsKPiA+ID4gKwo+ID4gPiArCWlmIChsZXZlbCA+PSBuX2VudHJpZXMpIHsKPiA+ ID4gKwkJRFJNX0RFQlVHX0tNUygiRERJIHRyYW5zbGF0aW9uIG5vdCBmb3VuZCBmb3IgbGV2ZWwK PiA+ID4gJWQuIFVzaW5nICVkIGluc3RlYWQuIiwgbGV2ZWwsIG5fZW50cmllcyAtIDEpOwo+ID4g PiArCQlsZXZlbCA9IG5fZW50cmllcyAtIDE7Cj4gPiA+ICsJfQo+ID4gPiArCj4gPiA+ICsJLyog U2V0IFBPUlRfVFhfRFc1IFNjYWxpbmcgTW9kZSBTZWwgdG8gMTEwYi4gKi8KPiA+ID4gKwl2YWwg PSBJOTE1X1JFQUQoSUNMX1BPUlRfVFhfRFc1X0xOMChwb3J0KSk7Cj4gPiA+ICsJdmFsICY9IH5T Q0FMSU5HX01PREVfU0VMX01BU0s7Cj4gPiA+ICsJdmFsIHw9IFNDQUxJTkdfTU9ERV9TRUwoMHg2 KTsKPiA+ID4gKwlJOTE1X1dSSVRFKElDTF9QT1JUX1RYX0RXNV9HUlAocG9ydCksIHZhbCk7Cj4g PiA+ICsKPiA+ID4gKwkvKiBQcm9ncmFtIFBPUlRfVFhfRFc1ICovCj4gPiA+ICsJdmFsID0gSTkx NV9SRUFEKElDTF9QT1JUX1RYX0RXNV9MTjAocG9ydCkpOwo+ID4gPiArCS8qIFNldCBEaXNhYmxl VGFwMiBhbmQgRGlzYWJsZVRhcDMgaWYgTUlQSSBEU0kKPiA+ID4gKwkgKiBDbGVhciBEaXNhYmxl VGFwMiBhbmQgRGlzYWJsZVRhcDMgZm9yIGFsbCBvdGhlciBQb3J0cwo+ID4gPiArCSAqLwo+ID4g PiArCWlmICh0eXBlID09IElOVEVMX09VVFBVVF9EU0kpIHsKPiA+ID4gKwkJdmFsIHw9IFRBUDJf RElTQUJMRTsKPiA+ID4gKwkJdmFsIHw9IFRBUDNfRElTQUJMRTsKPiA+ID4gKwl9IGVsc2Ugewo+ ID4gPiArCQl2YWwgJj0gflRBUDJfRElTQUJMRTsKPiA+ID4gKwkJdmFsICY9IH5UQVAzX0RJU0FC TEU7Cj4gPiA+ICsJfQo+ID4gPiArCUk5MTVfV1JJVEUoSUNMX1BPUlRfVFhfRFc1X0dSUChwb3J0 KSwgdmFsKTsKPiA+ID4gKwo+ID4gPiArCS8qIFByb2dyYW0gUE9SVF9UWF9EVzIgKi8KPiA+ID4g Kwl2YWwgPSBJOTE1X1JFQUQoSUNMX1BPUlRfVFhfRFcyX0xOMChwb3J0KSk7Cj4gPiA+ICsJdmFs ICY9IH4oU1dJTkdfU0VMX0xPV0VSX01BU0sgfCBTV0lOR19TRUxfVVBQRVJfTUFTSyB8Cj4gPiA+ ICsJCSBSQ09NUF9TQ0FMQVJfTUFTSyk7Cj4gPiA+ICsJdmFsIHw9Cj4gPiA+IFNXSU5HX1NFTF9V UFBFUihkZGlfdHJhbnNsYXRpb25zW2xldmVsXS5kdzJfc3dpbmdfc2VsZWN0KTsKPiA+ID4gKwl2 YWwgfD0KPiA+ID4gU1dJTkdfU0VMX0xPV0VSKGRkaV90cmFuc2xhdGlvbnNbbGV2ZWxdLmR3Ml9z d2luZ19zZWxlY3QpOwo+ID4gPiArCS8qIFByb2dyYW0gUmNvbXAgc2NhbGFyIGZvciBldmVyeSB0 YWJsZSBlbnRyeSAqLwo+ID4gPiArCXZhbCB8PQo+ID4gPiBSQ09NUF9TQ0FMQVIoZGRpX3RyYW5z bGF0aW9uc1tsZXZlbF0uZHcyX3N3aW5nX3NjYWxhcik7Cj4gPiA+ICsJSTkxNV9XUklURShJQ0xf UE9SVF9UWF9EVzJfR1JQKHBvcnQpLCB2YWwpOwo+ID4gPiArCj4gPiA+ICsJLyogUHJvZ3JhbSBQ T1JUX1RYX0RXNCAqLwo+ID4gPiArCS8qIFdlIGNhbm5vdCB3cml0ZSB0byBHUlAuIEl0IHdvdWxk IG92ZXJ3cml0ZSBpbmRpdmlkdWFsCj4gPiA+IGxvYWRnZW4uICovCj4gPiA+ICsJZm9yIChsbiA9 IDA7IGxuIDw9IDM7IGxuKyspIHsKPiA+ID4gKwkJdmFsID0gSTkxNV9SRUFEKElDTF9QT1JUX1RY X0RXNF9MTihwb3J0LCBsbikpOwo+ID4gPiArCQl2YWwgJj0gfihQT1NUX0NVUlNPUl8xX01BU0sg fCBQT1NUX0NVUlNPUl8yX01BU0sgfAo+ID4gPiArCQkJIENVUlNPUl9DT0VGRl9NQVNLKTsKPiA+ ID4gKwkJdmFsIHw9IGRkaV90cmFuc2xhdGlvbnNbbGV2ZWxdLmR3NF9zY2FsaW5nOwo+ID4gPiAr CQlJOTE1X1dSSVRFKElDTF9QT1JUX1RYX0RXNF9MTihwb3J0LCBsbiksIHZhbCk7Cj4gPiA+ICsJ fQo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICtzdGF0aWMgdm9pZCBpY2xfY29tYm9fcGh5X2RkaV92 c3dpbmdfc2VxdWVuY2Uoc3RydWN0IGludGVsX2VuY29kZXIKPiA+ID4gKmVuY29kZXIsIHUzMiBs ZXZlbCkKPiA+ID4gK3sKPiA+ID4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSB0b19pOTE1KGVuY29kZXItCj4gPiA+ID5iYXNlLmRldik7Cj4gPiA+ICsJZW51bSBwb3J0IHBv cnQgPSBlbmNvZGVyLT5wb3J0Owo+ID4gPiArCWludCB0eXBlID0gZW5jb2Rlci0+dHlwZTsKPiA+ ID4gKwlpbnQgd2lkdGggPSAwOwo+ID4gPiArCWludCByYXRlID0gMDsKPiA+ID4gKwl1MzIgdmFs Owo+ID4gPiArCWludCBsbiA9IDA7Cj4gPiA+ICsKPiA+ID4gKwlpZiAodHlwZSA9PSBJTlRFTF9P VVRQVVRfSERNSSkgewo+ID4gPiArCQl3aWR0aCA9IDQ7Cj4gPiA+ICsJCS8qIFJhdGUgaXMgYWx3 YXlzIDwgdGhhbiA2R0h6IGZvciBIRE1JICovCj4gPiA+ICsJfSBlbHNlIHsKPiA+ID4gKwkJc3Ry dWN0IGludGVsX2RwICppbnRlbF9kcCA9Cj4gPiA+IGVuY190b19pbnRlbF9kcCgmZW5jb2Rlci0+ YmFzZSk7Cj4gPiA+ICsKPiA+ID4gKwkJd2lkdGggPSBpbnRlbF9kcC0+bGFuZV9jb3VudDsKPiA+ ID4gKwkJcmF0ZSA9IGludGVsX2RwLT5saW5rX3JhdGU7Cj4gPiA+ICsJfQo+ID4gPiArCj4gPiA+ ICsJLyoKPiA+ID4gKwkgKiAxLiBJZiBwb3J0IHR5cGUgaXMgZURQIG9yIERQLAo+ID4gPiArCSAq IHNldCBQT1JUX1BDU19EVzEgY21ua2VlcGVyX2VuYWJsZSB0byAxYiwKPiA+ID4gKwkgKiBlbHNl IGNsZWFyIHRvIDBiLgo+ID4gPiArCSAqLwo+ID4gPiArCXZhbCA9IEk5MTVfUkVBRChJQ0xfUE9S VF9QQ1NfRFcxX0xOMChwb3J0KSk7Cj4gPiA+ICsJaWYgKHR5cGUgPT0gSU5URUxfT1VUUFVUX0hE TUkpCj4gPiA+ICsJCXZhbCAmPSB+Q09NTU9OX0tFRVBFUl9FTjsKPiA+ID4gKwllbHNlCj4gPiA+ ICsJCXZhbCB8PSBDT01NT05fS0VFUEVSX0VOOwo+ID4gPiArCUk5MTVfV1JJVEUoSUNMX1BPUlRf UENTX0RXMV9HUlAocG9ydCksIHZhbCk7Cj4gPiA+ICsKPiA+ID4gKwkvKiAyLiBQcm9ncmFtIGxv YWRnZW4gc2VsZWN0ICovCj4gPiA+ICsJLyoKPiA+ID4gKwkgKiBQcm9ncmFtIFBPUlRfVFhfRFc0 X0xOIGRlcGVuZGluZyBvbiBCaXQgcmF0ZSBhbmQgdXNlZAo+ID4gPiBsYW5lcwo+ID4gPiArCSAq IDw9IDYgR0h6IGFuZCA0IGxhbmVzIChMTjA9MCwgTE4xPTEsIExOMj0xLCBMTjM9MSkKPiA+ID4g KwkgKiA8PSA2IEdIeiBhbmQgMSwyIGxhbmVzIChMTjA9MCwgTE4xPTEsIExOMj0xLCBMTjM9MCkK PiA+ID4gKwkgKiA+IDYgR0h6IChMTjA9MCwgTE4xPTAsIExOMj0wLCBMTjM9MCkKPiA+ID4gKwkg Ki8KPiA+ID4gKwlmb3IgKGxuID0gMDsgbG4gPD0gMzsgbG4rKykgewo+ID4gPiArCQl2YWwgPSBJ OTE1X1JFQUQoSUNMX1BPUlRfVFhfRFc0X0xOKHBvcnQsIGxuKSk7Cj4gPiA+ICsJCXZhbCAmPSB+ TE9BREdFTl9TRUxFQ1Q7Cj4gPiA+ICsKPiA+ID4gKwkJaWYgKChyYXRlIDw9IDYwMDAwMCAmJiB3 aWR0aCA9PSA0ICYmIGxuID49IDEpIHx8Cj4gPiA+ICsJCSAgICAocmF0ZSA8PSA2MDAwMDAgJiYg d2lkdGggPCA0ICYmIChsbiA9PSAxIHx8IGxuCj4gPiA+ID09IDIpKSkgewo+ID4gPiArCQkJdmFs IHw9IExPQURHRU5fU0VMRUNUOwo+ID4gPiArCQl9Cj4gPiA+ICsJCUk5MTVfV1JJVEUoSUNMX1BP UlRfVFhfRFc0X0xOKHBvcnQsIGxuKSwgdmFsKTsKPiA+ID4gKwl9Cj4gPiA+ICsKPiA+ID4gKwkv KiAzLiBTZXQgUE9SVF9DTF9EVzUgU1VTIENsb2NrIENvbmZpZyB0byAxMWIgKi8KPiA+ID4gKwl2 YWwgPSBJOTE1X1JFQUQoSUNMX1BPUlRfQ0xfRFc1KHBvcnQpKTsKPiA+ID4gKwl2YWwgfD0gU1VT X0NMT0NLX0NPTkZJRzsKPiA+ID4gKwlJOTE1X1dSSVRFKElDTF9QT1JUX0NMX0RXNShwb3J0KSwg dmFsKTsKPiA+ID4gKwo+ID4gPiArCS8qIDQuIENsZWFyIHRyYWluaW5nIGVuYWJsZSB0byBjaGFu Z2Ugc3dpbmcgdmFsdWVzICovCj4gPiA+ICsJdmFsID0gSTkxNV9SRUFEKElDTF9QT1JUX1RYX0RX NV9MTjAocG9ydCkpOwo+ID4gPiArCXZhbCAmPSB+VFhfVFJBSU5JTkdfRU47Cj4gPiA+ICsJSTkx NV9XUklURShJQ0xfUE9SVF9UWF9EVzVfR1JQKHBvcnQpLCB2YWwpOwo+ID4gPiArCj4gPiA+ICsJ LyogNS4gUHJvZ3JhbSBzd2luZyBhbmQgZGUtZW1waGFzaXMgKi8KPiA+ID4gKwlpY2xfZGRpX2Nv bWJvX3Zzd2luZ19wcm9ncmFtKGRldl9wcml2LCBsZXZlbCwgcG9ydCwgdHlwZSk7Cj4gPiA+ICsK PiA+ID4gKwkvKiA2LiBTZXQgdHJhaW5pbmcgZW5hYmxlIHRvIHRyaWdnZXIgdXBkYXRlICovCj4g PiA+ICsJdmFsID0gSTkxNV9SRUFEKElDTF9QT1JUX1RYX0RXNV9MTjAocG9ydCkpOwo+ID4gPiAr CXZhbCB8PSBUWF9UUkFJTklOR19FTjsKPiA+ID4gKwlJOTE1X1dSSVRFKElDTF9QT1JUX1RYX0RX NV9HUlAocG9ydCksIHZhbCk7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyB2b2lkIGlj bF9kZGlfdnN3aW5nX3NlcXVlbmNlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ID4g PiB1MzIgbGV2ZWwpCj4gPiA+ICt7Cj4gPiA+ICsJZW51bSBwb3J0IHBvcnQgPSBlbmNvZGVyLT5w b3J0Owo+ID4gPiArCj4gPiA+ICsJaWYgKHBvcnQgPT0gUE9SVF9BIHx8IHBvcnQgPT0gUE9SVF9C KQo+ID4gPiArCQlpY2xfY29tYm9fcGh5X2RkaV92c3dpbmdfc2VxdWVuY2UoZW5jb2RlciwgbGV2 ZWwpOwo+ID4gPiArCWVsc2UKPiA+ID4gKwkJLyogTm90IEltcGxlbWVudGVkIFlldCAqLwo+ID4g PiArCQlXQVJOX09OKDEpOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICBzdGF0aWMgdWludDMyX3Qg dHJhbnNsYXRlX3NpZ25hbF9sZXZlbChpbnQgc2lnbmFsX2xldmVscykKPiA+ID4gIHsKPiA+ID4g IAlpbnQgaTsKPiA+ID4gQEAgLTIyMDksNyArMjM4Niw5IEBAIHUzMiBieHRfc2lnbmFsX2xldmVs cyhzdHJ1Y3QgaW50ZWxfZHAKPiA+ID4gKmludGVsX2RwKQo+ID4gPiAgCXN0cnVjdCBpbnRlbF9l bmNvZGVyICplbmNvZGVyID0gJmRwb3J0LT5iYXNlOwo+ID4gPiAgCWludCBsZXZlbCA9IGludGVs X2RkaV9kcF9sZXZlbChpbnRlbF9kcCk7Cj4gPiA+ICAKPiA+ID4gLQlpZiAoSVNfQ0FOTk9OTEFL RShkZXZfcHJpdikpCj4gPiA+ICsJaWYgKElTX0lDRUxBS0UoZGV2X3ByaXYpKQo+ID4gPiArCQlp Y2xfZGRpX3Zzd2luZ19zZXF1ZW5jZShlbmNvZGVyLCBsZXZlbCk7Cj4gPiA+ICsJZWxzZSBpZiAo SVNfQ0FOTk9OTEFLRShkZXZfcHJpdikpCj4gPiA+ICAJCWNubF9kZGlfdnN3aW5nX3NlcXVlbmNl KGVuY29kZXIsIGxldmVsLCBlbmNvZGVyLQo+ID4gPiA+dHlwZSk7Cj4gPiA+ICAJZWxzZQo+ID4g PiAgCQlieHRfZGRpX3Zzd2luZ19zZXF1ZW5jZShlbmNvZGVyLCBsZXZlbCwgZW5jb2Rlci0KPiA+ ID4gPnR5cGUpOwo+ID4gPiBAQCAtMjM4OSw3ICsyNTY4LDkgQEAgc3RhdGljIHZvaWQgaW50ZWxf ZGRpX3ByZV9lbmFibGVfZHAoc3RydWN0Cj4gPiA+IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4g PiA+ICAKPiA+ID4gIAlpbnRlbF9kaXNwbGF5X3Bvd2VyX2dldChkZXZfcHJpdiwgZGlnX3BvcnQt Cj4gPiA+ID5kZGlfaW9fcG93ZXJfZG9tYWluKTsKPiA+ID4gIAo+ID4gPiAtCWlmIChJU19DQU5O T05MQUtFKGRldl9wcml2KSkKPiA+ID4gKwlpZiAoSVNfSUNFTEFLRShkZXZfcHJpdikpCj4gPiA+ ICsJCWljbF9kZGlfdnN3aW5nX3NlcXVlbmNlKGVuY29kZXIsIGxldmVsKTsKPiA+ID4gKwllbHNl IGlmIChJU19DQU5OT05MQUtFKGRldl9wcml2KSkKPiA+ID4gIAkJY25sX2RkaV92c3dpbmdfc2Vx dWVuY2UoZW5jb2RlciwgbGV2ZWwsIGVuY29kZXItCj4gPiA+ID50eXBlKTsKPiA+ID4gIAllbHNl IGlmIChJU19HRU45X0xQKGRldl9wcml2KSkKPiA+ID4gIAkJYnh0X2RkaV92c3dpbmdfc2VxdWVu Y2UoZW5jb2RlciwgbGV2ZWwsIGVuY29kZXItCj4gPiA+ID50eXBlKTsKPiA+ID4gQEAgLTI0MjAs NyArMjYwMSw5IEBAIHN0YXRpYyB2b2lkIGludGVsX2RkaV9wcmVfZW5hYmxlX2hkbWkoc3RydWN0 Cj4gPiA+IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gPiA+ICAKPiA+ID4gIAlpbnRlbF9kaXNw bGF5X3Bvd2VyX2dldChkZXZfcHJpdiwgZGlnX3BvcnQtCj4gPiA+ID5kZGlfaW9fcG93ZXJfZG9t YWluKTsKPiA+ID4gIAo+ID4gPiAtCWlmIChJU19DQU5OT05MQUtFKGRldl9wcml2KSkKPiA+ID4g KwlpZiAoSVNfSUNFTEFLRShkZXZfcHJpdikpCj4gPiA+ICsJCWljbF9kZGlfdnN3aW5nX3NlcXVl bmNlKGVuY29kZXIsIGxldmVsKTsKPiA+ID4gKwllbHNlIGlmIChJU19DQU5OT05MQUtFKGRldl9w cml2KSkKPiA+ID4gIAkJY25sX2RkaV92c3dpbmdfc2VxdWVuY2UoZW5jb2RlciwgbGV2ZWwsCj4g PiA+IElOVEVMX09VVFBVVF9IRE1JKTsKPiA+ID4gIAllbHNlIGlmIChJU19HRU45X0xQKGRldl9w cml2KSkKPiA+ID4gIAkJYnh0X2RkaV92c3dpbmdfc2VxdWVuY2UoZW5jb2RlciwgbGV2ZWwsCj4g PiA+IElOVEVMX09VVFBVVF9IRE1JKTsKPiA+ID4gLS0gCj4gPiA+IDIuMTQuMwo+ID4gPiAKPiA+ ID4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiA+ID4g SW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+ID4gPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCj4gPiA+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v aW50ZWwtZ2Z4Cj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwo+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50 ZWwtZ2Z4Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCklu dGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=