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: Fri, 27 Apr 2018 17:28:31 -0700 Message-ID: <20180428002831.GY3617@intel.com> References: <20180222035519.13486-9-paulo.r.zanoni@intel.com> <20180323001022.17280-1-paulo.r.zanoni@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 23ED86E00A for ; Sat, 28 Apr 2018 00:28:31 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20180323001022.17280-1-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: Paulo Zanoni Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBNYXIgMjIsIDIwMTggYXQgMDU6MTA6MjJQTSAtMDcwMCwgUGF1bG8gWmFub25pIHdy b3RlOgo+IEZyb206IE1hbmFzaSBOYXZhcmUgPG1hbmFzaS5kLm5hdmFyZUBpbnRlbC5jb20+Cj4g Cj4gVGhpcyBpcyBhbiBpbXBvcnRhbnQgcGFydCBvZiB0aGUgRERJIGluaXRhbGl6YXRpb24gYXMg d2VsbCBhcwo+IGZvciBjaGFuZ2luZyB0aGUgdm9sdGFnZSBkdXJpbmcgRGlzcGxheVBvcnQgbGlu ayB0cmFpbmluZy4KPiAKPiBUaGUgVm9sdGFnZSBzd2luZyBzZXFldWVuY2UgaXMgc2ltaWxhciB0 byBDYW5ub25sYWtlLgo+IEhvd2V2ZXIgaXQgaGFzIGRpZmZlcmVudCByZWdpc3RlciBkZWZpbml0 aW9ucyBhbmQgaGVuY2UKPiBpdCBtYWtlcyBzZW5zZSB0byBjcmVhdGUgYSBzZXBhcmF0ZSB2c3dp bmcgc2VxdWVuY2UgYW5kCj4gcHJvZ3JhbSBmdW5jdGlvbnMgZm9yIElDTCB0byBsZWF2ZSByb29t IGZvciBtb3JlIGNoYW5nZXMKPiBpbiBjYXNlIHRoZSBCc3BlYyBjaGFuZ2VzIGxhdGVyIGFuZCBk ZXZpYXRlcyBmcm9tIENOTCBzZXF1ZW5jZS4KPiAKPiB2MjoKPiBVc2UgflRBUDNfRElTQUJMRSBm b3IgZW5iYWxpbmcgdGhhdCBiaXQgKEphbmkgTmlrdWxhKQo+IAo+IHYzOgo+ICogVXNlIGR3NF9z Y2FsaW5nIGNvbHVtbiBmb3IgUE9SVF9UWF9EVzQgdmFsdWVzIChSb2RyaWdvKQo+IAo+IHY0Ogo+ ICogQ2FsbCBpdCBjb21ib192c3dpbmcsIHVzZSBzd2l0Y2ggc3RhdGVtZW50IChQYXVsbykKPiAK PiB2NSAoZnJvbSBQYXVsbyk6Cj4gKiBGaXggYSB0eXBvLgo+ICogcy9yYXRlIDwgNjAwMDAwL3Jh dGUgPD0gNjAwMDAwLy4KPiAqIERvbid0IHJlbW92ZSBibGFuayBsaW5lcyB0aGF0IHNob3VsZCBi ZSB0aGVyZS4KPiAKPiB2NjoKPiAqIFJlYmFzZWQgYnkgUm9kcmlnbyBvbiB0b3Agb2YgQ2Fubm9u bGFrZSBjaGFuZ2VzCj4gICB3aGVyZSBub24gdnN3aW5nIHNlcXVlbmNlcyBhcmUgbm90IGFsaWdu ZWQgd2l0aCBpYm9vc3QKPiAgIGFueW1vcmUuCj4gCj4gdjc6IEFub3RoZXIgcmViYXNlIGFmdGVy IGFuIHVwc3RyZWFtIHJld29yay4KPiAKPiB2OCAoZnJvbSBQYXVsbyk6Cj4gKiBBZGp1c3QgdGhl IGNvZGUgdG8gdGhlIHVwc3RyZWFtIG91dHB1dCB0eXBlIGNoYW5nZXMuCj4gKiBTcXVhc2ggdGhl IHBhdGNoIHRoYXQgbW92ZWQgc29tZSBmdW5jdGlvbnMgdXAuCj4gKiBNZXJnZSBib3RoIGdldF9j b21ib19idWZfdHJhbnMgZnVuY3Rpb25zIGluIG9yZGVyIHRvIHNpbXBsaWZ5IHRoZQo+ICAgY29k ZS4KPiAqIENoYW5nZSB0aGUgY2hhbmdlbG9nIGZvcm1hdC4KPiAKPiB2OSAoZnJvbSBQYXVsbyk6 Cj4gKiBVc2UgUlRFUk1fU0VMRUNUIGluc3RlYWQgb2YgU0NBTElOR19NT0RFX1NFTC4KPiAqIEFk anVzdCB0aGUgb3V0cHV0IHR5cGUgaGFuZGxpbmcgYWNjb3JkaW5nIHRvIGhvdyB0aGUgb3RoZXIg cGxhdGZvcm1zCj4gICBkbyBpdCBub3cuCj4gCj4gQ2M6IEphbmkgTmlrdWxhIDxqYW5pLm5pa3Vs YUBsaW51eC5pbnRlbC5jb20+Cj4gQ2M6IEphbWVzIEF1c211cyA8amFtZXMuYXVzbXVzQGludGVs LmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBNYW5hc2kgTmF2YXJlIDxtYW5hc2kuZC5uYXZhcmVAaW50 ZWwuY29tPgo+IFNpZ25lZC1vZmYtYnk6IFJvZHJpZ28gVml2aSA8cm9kcmlnby52aXZpQGludGVs LmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBQYXVsbyBaYW5vbmkgPHBhdWxvLnIuemFub25pQGludGVs LmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMgfCAxOTEgKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCj4gIDEgZmlsZSBjaGFuZ2VkLCAx ODggaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k ZGkuYwo+IGluZGV4IDM1NWRkNDcyOWFlOC4uMTViYWZjODUwOTA3IDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZGRpLmMKPiBAQCAtODUwLDYgKzg1MCw0NSBAQCBjbmxfZ2V0X2J1Zl90cmFuc19l ZHAoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBpbnQgKm5fZW50cmllcykKPiAg CX0KPiAgfQo+ICAKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBpY2xfY29tYm9fcGh5X2RkaV9idWZf dHJhbnMgKgo+ICtpY2xfZ2V0X2NvbWJvX2J1Zl90cmFucyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsIGVudW0gcG9ydCBwb3J0LAo+ICsJCQlpbnQgdHlwZSwgaW50ICpuX2VudHJp ZXMpCj4gK3sKPiArCXUzMiB2b2x0YWdlID0gSTkxNV9SRUFEKElDTF9QT1JUX0NPTVBfRFczKHBv cnQpKSAmIFZPTFRBR0VfSU5GT19NQVNLOwo+ICsKPiArCWlmICh0eXBlID09IElOVEVMX09VVFBV VF9FRFAgJiYgZGV2X3ByaXYtPnZidC5lZHAubG93X3Zzd2luZykgewo+ICsJCXN3aXRjaCAodm9s dGFnZSkgewo+ICsJCWNhc2UgVk9MVEFHRV9JTkZPXzBfODVWOgo+ICsJCQkqbl9lbnRyaWVzID0g QVJSQVlfU0laRShpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZWRwXzBfODVWKTsKPiAr CQkJcmV0dXJuIGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19lZHBfMF84NVY7Cj4gKwkJ Y2FzZSBWT0xUQUdFX0lORk9fMF85NVY6Cj4gKwkJCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGlj bF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19lZHBfMF85NVYpOwo+ICsJCQlyZXR1cm4gaWNs X2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2VkcF8wXzk1VjsKPiArCQljYXNlIFZPTFRBR0Vf SU5GT18xXzA1VjoKPiArCQkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoaWNsX2NvbWJvX3BoeV9k ZGlfdHJhbnNsYXRpb25zX2VkcF8xXzA1Vik7Cj4gKwkJCXJldHVybiBpY2xfY29tYm9fcGh5X2Rk aV90cmFuc2xhdGlvbnNfZWRwXzFfMDVWOwo+ICsJCWRlZmF1bHQ6Cj4gKwkJCU1JU1NJTkdfQ0FT RSh2b2x0YWdlKTsKPiArCQkJcmV0dXJuIE5VTEw7Cj4gKwkJfQo+ICsJfSBlbHNlIHsKPiArCQlz d2l0Y2ggKHZvbHRhZ2UpIHsKPiArCQljYXNlIFZPTFRBR0VfSU5GT18wXzg1VjoKPiArCQkJKm5f ZW50cmllcyA9IEFSUkFZX1NJWkUoaWNsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2RwX2hk bWlfMF84NVYpOwo+ICsJCQlyZXR1cm4gaWNsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2Rw X2hkbWlfMF84NVY7Cj4gKwkJY2FzZSBWT0xUQUdFX0lORk9fMF85NVY6Cj4gKwkJCSpuX2VudHJp ZXMgPSBBUlJBWV9TSVpFKGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19kcF9oZG1pXzBf OTVWKTsKPiArCQkJcmV0dXJuIGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19kcF9oZG1p XzBfOTVWOwo+ICsJCWNhc2UgVk9MVEFHRV9JTkZPXzFfMDVWOgo+ICsJCQkqbl9lbnRyaWVzID0g QVJSQVlfU0laRShpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZHBfaGRtaV8xXzA1Vik7 Cj4gKwkJCXJldHVybiBpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZHBfaGRtaV8xXzA1 VjsKPiArCQlkZWZhdWx0Ogo+ICsJCQlNSVNTSU5HX0NBU0Uodm9sdGFnZSk7Cj4gKwkJCXJldHVy biBOVUxMOwo+ICsJCX0KPiArCX0KPiArfQo+ICsKPiAgc3RhdGljIGludCBpbnRlbF9kZGlfaGRt aV9sZXZlbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGVudW0gcG9ydCBwb3J0 KQo+ICB7Cj4gIAlpbnQgbl9lbnRyaWVzLCBsZXZlbCwgZGVmYXVsdF9lbnRyeTsKPiBAQCAtMjE3 OSw2ICsyMjE4LDE0NiBAQCBzdGF0aWMgdm9pZCBjbmxfZGRpX3Zzd2luZ19zZXF1ZW5jZShzdHJ1 Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAgCUk5MTVfV1JJVEUoQ05MX1BPUlRfVFhfRFc1 X0dSUChwb3J0KSwgdmFsKTsKPiAgfQo+ICAKPiArc3RhdGljIHZvaWQgaWNsX2RkaV9jb21ib192 c3dpbmdfcHJvZ3JhbShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gKwkJCQkJ IHUzMiBsZXZlbCwgZW51bSBwb3J0IHBvcnQsIGludCB0eXBlKQo+ICt7Cj4gKwljb25zdCBzdHJ1 Y3QgaWNsX2NvbWJvX3BoeV9kZGlfYnVmX3RyYW5zICpkZGlfdHJhbnNsYXRpb25zID0gTlVMTDsK PiArCXUzMiBuX2VudHJpZXMsIHZhbDsKPiArCWludCBsbjsKPiArCj4gKwlkZGlfdHJhbnNsYXRp b25zID0gaWNsX2dldF9jb21ib19idWZfdHJhbnMoZGV2X3ByaXYsIHBvcnQsIHR5cGUsCj4gKwkJ CQkJCSAgICZuX2VudHJpZXMpOwo+ICsJaWYgKCFkZGlfdHJhbnNsYXRpb25zKQo+ICsJCXJldHVy bjsKPiArCj4gKwlpZiAobGV2ZWwgPj0gbl9lbnRyaWVzKSB7Cj4gKwkJRFJNX0RFQlVHX0tNUygi RERJIHRyYW5zbGF0aW9uIG5vdCBmb3VuZCBmb3IgbGV2ZWwgJWQuIFVzaW5nICVkIGluc3RlYWQu IiwgbGV2ZWwsIG5fZW50cmllcyAtIDEpOwo+ICsJCWxldmVsID0gbl9lbnRyaWVzIC0gMTsKPiAr CX0KPiArCj4gKwkvKiBTZXQgUE9SVF9UWF9EVzUgU2NhbGluZyBNb2RlIFNlbCB0byAxMTBiLiAq LwoKUGxlYXNlIGZpeCB0aGUgY29tbWVudCB0byByZWZsZWN0IHRoZSBjaGFuZ2UuCnMvU2NhbGlu ZyBNb2RlL1J0ZXJtL2cKClNvcnJ5IGZvciBoYXZpbmcgbWlzc2VkIHRoaXMuCgpXaXRoIGNvbW1l bnQgZml4ZWQ6CgpSZXZpZXdlZC1ieTogUm9kcmlnbyBWaXZpIDxyb2RyaWdvLnZpdmlAaW50ZWwu Y29tPgoKCgo+ICsJdmFsID0gSTkxNV9SRUFEKElDTF9QT1JUX1RYX0RXNV9MTjAocG9ydCkpOwo+ ICsJdmFsICY9IH5SVEVSTV9TRUxFQ1RfTUFTSzsKPiArCXZhbCB8PSBSVEVSTV9TRUxFQ1QoMHg2 KTsKPiArCUk5MTVfV1JJVEUoSUNMX1BPUlRfVFhfRFc1X0dSUChwb3J0KSwgdmFsKTsKPiArCj4g KwkvKiBQcm9ncmFtIFBPUlRfVFhfRFc1ICovCj4gKwl2YWwgPSBJOTE1X1JFQUQoSUNMX1BPUlRf VFhfRFc1X0xOMChwb3J0KSk7Cj4gKwkvKiBTZXQgRGlzYWJsZVRhcDIgYW5kIERpc2FibGVUYXAz IGlmIE1JUEkgRFNJCj4gKwkgKiBDbGVhciBEaXNhYmxlVGFwMiBhbmQgRGlzYWJsZVRhcDMgZm9y IGFsbCBvdGhlciBQb3J0cwo+ICsJICovCj4gKwlpZiAodHlwZSA9PSBJTlRFTF9PVVRQVVRfRFNJ KSB7Cj4gKwkJdmFsIHw9IFRBUDJfRElTQUJMRTsKPiArCQl2YWwgfD0gVEFQM19ESVNBQkxFOwo+ ICsJfSBlbHNlIHsKPiArCQl2YWwgJj0gflRBUDJfRElTQUJMRTsKPiArCQl2YWwgJj0gflRBUDNf RElTQUJMRTsKPiArCX0KPiArCUk5MTVfV1JJVEUoSUNMX1BPUlRfVFhfRFc1X0dSUChwb3J0KSwg dmFsKTsKPiArCj4gKwkvKiBQcm9ncmFtIFBPUlRfVFhfRFcyICovCj4gKwl2YWwgPSBJOTE1X1JF QUQoSUNMX1BPUlRfVFhfRFcyX0xOMChwb3J0KSk7Cj4gKwl2YWwgJj0gfihTV0lOR19TRUxfTE9X RVJfTUFTSyB8IFNXSU5HX1NFTF9VUFBFUl9NQVNLIHwKPiArCQkgUkNPTVBfU0NBTEFSX01BU0sp Owo+ICsJdmFsIHw9IFNXSU5HX1NFTF9VUFBFUihkZGlfdHJhbnNsYXRpb25zW2xldmVsXS5kdzJf c3dpbmdfc2VsZWN0KTsKPiArCXZhbCB8PSBTV0lOR19TRUxfTE9XRVIoZGRpX3RyYW5zbGF0aW9u c1tsZXZlbF0uZHcyX3N3aW5nX3NlbGVjdCk7Cj4gKwkvKiBQcm9ncmFtIFJjb21wIHNjYWxhciBm b3IgZXZlcnkgdGFibGUgZW50cnkgKi8KPiArCXZhbCB8PSBSQ09NUF9TQ0FMQVIoZGRpX3RyYW5z bGF0aW9uc1tsZXZlbF0uZHcyX3N3aW5nX3NjYWxhcik7Cj4gKwlJOTE1X1dSSVRFKElDTF9QT1JU X1RYX0RXMl9HUlAocG9ydCksIHZhbCk7Cj4gKwo+ICsJLyogUHJvZ3JhbSBQT1JUX1RYX0RXNCAq Lwo+ICsJLyogV2UgY2Fubm90IHdyaXRlIHRvIEdSUC4gSXQgd291bGQgb3ZlcndyaXRlIGluZGl2 aWR1YWwgbG9hZGdlbi4gKi8KPiArCWZvciAobG4gPSAwOyBsbiA8PSAzOyBsbisrKSB7Cj4gKwkJ dmFsID0gSTkxNV9SRUFEKElDTF9QT1JUX1RYX0RXNF9MTihwb3J0LCBsbikpOwo+ICsJCXZhbCAm PSB+KFBPU1RfQ1VSU09SXzFfTUFTSyB8IFBPU1RfQ1VSU09SXzJfTUFTSyB8Cj4gKwkJCSBDVVJT T1JfQ09FRkZfTUFTSyk7Cj4gKwkJdmFsIHw9IGRkaV90cmFuc2xhdGlvbnNbbGV2ZWxdLmR3NF9z Y2FsaW5nOwo+ICsJCUk5MTVfV1JJVEUoSUNMX1BPUlRfVFhfRFc0X0xOKHBvcnQsIGxuKSwgdmFs KTsKPiArCX0KPiArfQo+ICsKPiArc3RhdGljIHZvaWQgaWNsX2NvbWJvX3BoeV9kZGlfdnN3aW5n X3NlcXVlbmNlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICsJCQkJCSAgICAgIHUz MiBsZXZlbCwKPiArCQkJCQkgICAgICBlbnVtIGludGVsX291dHB1dF90eXBlIHR5cGUpCj4gK3sK PiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+ YmFzZS5kZXYpOwo+ICsJZW51bSBwb3J0IHBvcnQgPSBlbmNvZGVyLT5wb3J0Owo+ICsJaW50IHdp ZHRoID0gMDsKPiArCWludCByYXRlID0gMDsKPiArCXUzMiB2YWw7Cj4gKwlpbnQgbG4gPSAwOwo+ ICsKPiArCWlmICh0eXBlID09IElOVEVMX09VVFBVVF9IRE1JKSB7Cj4gKwkJd2lkdGggPSA0Owo+ ICsJCS8qIFJhdGUgaXMgYWx3YXlzIDwgdGhhbiA2R0h6IGZvciBIRE1JICovCj4gKwl9IGVsc2Ug ewo+ICsJCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAgPSBlbmNfdG9faW50ZWxfZHAoJmVuY29k ZXItPmJhc2UpOwo+ICsKPiArCQl3aWR0aCA9IGludGVsX2RwLT5sYW5lX2NvdW50Owo+ICsJCXJh dGUgPSBpbnRlbF9kcC0+bGlua19yYXRlOwo+ICsJfQo+ICsKPiArCS8qCj4gKwkgKiAxLiBJZiBw b3J0IHR5cGUgaXMgZURQIG9yIERQLAo+ICsJICogc2V0IFBPUlRfUENTX0RXMSBjbW5rZWVwZXJf ZW5hYmxlIHRvIDFiLAo+ICsJICogZWxzZSBjbGVhciB0byAwYi4KPiArCSAqLwo+ICsJdmFsID0g STkxNV9SRUFEKElDTF9QT1JUX1BDU19EVzFfTE4wKHBvcnQpKTsKPiArCWlmICh0eXBlID09IElO VEVMX09VVFBVVF9IRE1JKQo+ICsJCXZhbCAmPSB+Q09NTU9OX0tFRVBFUl9FTjsKPiArCWVsc2UK PiArCQl2YWwgfD0gQ09NTU9OX0tFRVBFUl9FTjsKPiArCUk5MTVfV1JJVEUoSUNMX1BPUlRfUENT X0RXMV9HUlAocG9ydCksIHZhbCk7Cj4gKwo+ICsJLyogMi4gUHJvZ3JhbSBsb2FkZ2VuIHNlbGVj dCAqLwo+ICsJLyoKPiArCSAqIFByb2dyYW0gUE9SVF9UWF9EVzRfTE4gZGVwZW5kaW5nIG9uIEJp dCByYXRlIGFuZCB1c2VkIGxhbmVzCj4gKwkgKiA8PSA2IEdIeiBhbmQgNCBsYW5lcyAoTE4wPTAs IExOMT0xLCBMTjI9MSwgTE4zPTEpCj4gKwkgKiA8PSA2IEdIeiBhbmQgMSwyIGxhbmVzIChMTjA9 MCwgTE4xPTEsIExOMj0xLCBMTjM9MCkKPiArCSAqID4gNiBHSHogKExOMD0wLCBMTjE9MCwgTE4y PTAsIExOMz0wKQo+ICsJICovCj4gKwlmb3IgKGxuID0gMDsgbG4gPD0gMzsgbG4rKykgewo+ICsJ CXZhbCA9IEk5MTVfUkVBRChJQ0xfUE9SVF9UWF9EVzRfTE4ocG9ydCwgbG4pKTsKPiArCQl2YWwg Jj0gfkxPQURHRU5fU0VMRUNUOwo+ICsKPiArCQlpZiAoKHJhdGUgPD0gNjAwMDAwICYmIHdpZHRo ID09IDQgJiYgbG4gPj0gMSkgfHwKPiArCQkgICAgKHJhdGUgPD0gNjAwMDAwICYmIHdpZHRoIDwg NCAmJiAobG4gPT0gMSB8fCBsbiA9PSAyKSkpIHsKPiArCQkJdmFsIHw9IExPQURHRU5fU0VMRUNU Owo+ICsJCX0KPiArCQlJOTE1X1dSSVRFKElDTF9QT1JUX1RYX0RXNF9MTihwb3J0LCBsbiksIHZh bCk7Cj4gKwl9Cj4gKwo+ICsJLyogMy4gU2V0IFBPUlRfQ0xfRFc1IFNVUyBDbG9jayBDb25maWcg dG8gMTFiICovCj4gKwl2YWwgPSBJOTE1X1JFQUQoSUNMX1BPUlRfQ0xfRFc1KHBvcnQpKTsKPiAr CXZhbCB8PSBTVVNfQ0xPQ0tfQ09ORklHOwo+ICsJSTkxNV9XUklURShJQ0xfUE9SVF9DTF9EVzUo cG9ydCksIHZhbCk7Cj4gKwo+ICsJLyogNC4gQ2xlYXIgdHJhaW5pbmcgZW5hYmxlIHRvIGNoYW5n ZSBzd2luZyB2YWx1ZXMgKi8KPiArCXZhbCA9IEk5MTVfUkVBRChJQ0xfUE9SVF9UWF9EVzVfTE4w KHBvcnQpKTsKPiArCXZhbCAmPSB+VFhfVFJBSU5JTkdfRU47Cj4gKwlJOTE1X1dSSVRFKElDTF9Q T1JUX1RYX0RXNV9HUlAocG9ydCksIHZhbCk7Cj4gKwo+ICsJLyogNS4gUHJvZ3JhbSBzd2luZyBh bmQgZGUtZW1waGFzaXMgKi8KPiArCWljbF9kZGlfY29tYm9fdnN3aW5nX3Byb2dyYW0oZGV2X3By aXYsIGxldmVsLCBwb3J0LCB0eXBlKTsKPiArCj4gKwkvKiA2LiBTZXQgdHJhaW5pbmcgZW5hYmxl IHRvIHRyaWdnZXIgdXBkYXRlICovCj4gKwl2YWwgPSBJOTE1X1JFQUQoSUNMX1BPUlRfVFhfRFc1 X0xOMChwb3J0KSk7Cj4gKwl2YWwgfD0gVFhfVFJBSU5JTkdfRU47Cj4gKwlJOTE1X1dSSVRFKElD TF9QT1JUX1RYX0RXNV9HUlAocG9ydCksIHZhbCk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGlj bF9kZGlfdnN3aW5nX3NlcXVlbmNlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLCB1MzIg bGV2ZWwsCj4gKwkJCQkgICAgZW51bSBpbnRlbF9vdXRwdXRfdHlwZSB0eXBlKQo+ICt7Cj4gKwll bnVtIHBvcnQgcG9ydCA9IGVuY29kZXItPnBvcnQ7Cj4gKwo+ICsJaWYgKHBvcnQgPT0gUE9SVF9B IHx8IHBvcnQgPT0gUE9SVF9CKQo+ICsJCWljbF9jb21ib19waHlfZGRpX3Zzd2luZ19zZXF1ZW5j ZShlbmNvZGVyLCBsZXZlbCwgdHlwZSk7Cj4gKwllbHNlCj4gKwkJLyogTm90IEltcGxlbWVudGVk IFlldCAqLwo+ICsJCVdBUk5fT04oMSk7Cj4gK30KPiArCj4gIHN0YXRpYyB1aW50MzJfdCB0cmFu c2xhdGVfc2lnbmFsX2xldmVsKGludCBzaWduYWxfbGV2ZWxzKQo+ICB7Cj4gIAlpbnQgaTsKPiBA QCAtMjIxMCw3ICsyMzg5LDkgQEAgdTMyIGJ4dF9zaWduYWxfbGV2ZWxzKHN0cnVjdCBpbnRlbF9k cCAqaW50ZWxfZHApCj4gIAlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciA9ICZkcG9ydC0+ YmFzZTsKPiAgCWludCBsZXZlbCA9IGludGVsX2RkaV9kcF9sZXZlbChpbnRlbF9kcCk7Cj4gIAo+ IC0JaWYgKElTX0NBTk5PTkxBS0UoZGV2X3ByaXYpKQo+ICsJaWYgKElTX0lDRUxBS0UoZGV2X3By aXYpKQo+ICsJCWljbF9kZGlfdnN3aW5nX3NlcXVlbmNlKGVuY29kZXIsIGxldmVsLCBlbmNvZGVy LT50eXBlKTsKPiArCWVsc2UgaWYgKElTX0NBTk5PTkxBS0UoZGV2X3ByaXYpKQo+ICAJCWNubF9k ZGlfdnN3aW5nX3NlcXVlbmNlKGVuY29kZXIsIGxldmVsLCBlbmNvZGVyLT50eXBlKTsKPiAgCWVs c2UKPiAgCQlieHRfZGRpX3Zzd2luZ19zZXF1ZW5jZShlbmNvZGVyLCBsZXZlbCwgZW5jb2Rlci0+ dHlwZSk7Cj4gQEAgLTIzODQsNyArMjU2NSw5IEBAIHN0YXRpYyB2b2lkIGludGVsX2RkaV9wcmVf ZW5hYmxlX2RwKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAKPiAgCWludGVsX2Rp c3BsYXlfcG93ZXJfZ2V0KGRldl9wcml2LCBkaWdfcG9ydC0+ZGRpX2lvX3Bvd2VyX2RvbWFpbik7 Cj4gIAo+IC0JaWYgKElTX0NBTk5PTkxBS0UoZGV2X3ByaXYpKQo+ICsJaWYgKElTX0lDRUxBS0Uo ZGV2X3ByaXYpKQo+ICsJCWljbF9kZGlfdnN3aW5nX3NlcXVlbmNlKGVuY29kZXIsIGxldmVsLCBl bmNvZGVyLT50eXBlKTsKPiArCWVsc2UgaWYgKElTX0NBTk5PTkxBS0UoZGV2X3ByaXYpKQo+ICAJ CWNubF9kZGlfdnN3aW5nX3NlcXVlbmNlKGVuY29kZXIsIGxldmVsLCBlbmNvZGVyLT50eXBlKTsK PiAgCWVsc2UgaWYgKElTX0dFTjlfTFAoZGV2X3ByaXYpKQo+ICAJCWJ4dF9kZGlfdnN3aW5nX3Nl cXVlbmNlKGVuY29kZXIsIGxldmVsLCBlbmNvZGVyLT50eXBlKTsKPiBAQCAtMjQxNCw3ICsyNTk3 LDkgQEAgc3RhdGljIHZvaWQgaW50ZWxfZGRpX3ByZV9lbmFibGVfaGRtaShzdHJ1Y3QgaW50ZWxf ZW5jb2RlciAqZW5jb2RlciwKPiAgCj4gIAlpbnRlbF9kaXNwbGF5X3Bvd2VyX2dldChkZXZfcHJp diwgZGlnX3BvcnQtPmRkaV9pb19wb3dlcl9kb21haW4pOwo+ICAKPiAtCWlmIChJU19DQU5OT05M QUtFKGRldl9wcml2KSkKPiArCWlmIChJU19JQ0VMQUtFKGRldl9wcml2KSkKPiArCQlpY2xfZGRp X3Zzd2luZ19zZXF1ZW5jZShlbmNvZGVyLCBsZXZlbCwgSU5URUxfT1VUUFVUX0hETUkpOwo+ICsJ ZWxzZSBpZiAoSVNfQ0FOTk9OTEFLRShkZXZfcHJpdikpCj4gIAkJY25sX2RkaV92c3dpbmdfc2Vx dWVuY2UoZW5jb2RlciwgbGV2ZWwsIElOVEVMX09VVFBVVF9IRE1JKTsKPiAgCWVsc2UgaWYgKElT X0dFTjlfTFAoZGV2X3ByaXYpKQo+ICAJCWJ4dF9kZGlfdnN3aW5nX3NlcXVlbmNlKGVuY29kZXIs IGxldmVsLCBJTlRFTF9PVVRQVVRfSERNSSk7Cj4gLS0gCj4gMi4xNC4zCj4gCj4gX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBJbnRlbC1nZnggbWFpbGlu ZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QK SW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=