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: Thu, 5 Apr 2018 17:20:35 -0700 Message-ID: <20180406002034.GP4181@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 EC2C56E90C for ; Fri, 6 Apr 2018 00:21:00 +0000 (UTC) Content-Disposition: inline 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: Paulo Zanoni Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBGZWIgMjIsIDIwMTggYXQgMTI6NTU6MTBBTSAtMDMwMCwgUGF1bG8gWmFub25pIHdy 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 ZS4KPiAqIENoYW5nZSB0aGUgY2hhbmdlbG9nIGZvcm1hdC4KPiAKPiBDYzogSmFuaSBOaWt1bGEg PGphbmkubmlrdWxhQGxpbnV4LmludGVsLmNvbT4KPiBSZXZpZXdlZC1ieTogUGF1bG8gWmFub25p IDxwYXVsby5yLnphbm9uaUBpbnRlbC5jb20+ICh2NSkKPiBTaWduZWQtb2ZmLWJ5OiBNYW5hc2kg TmF2YXJlIDxtYW5hc2kuZC5uYXZhcmVAaW50ZWwuY29tPgo+IFNpZ25lZC1vZmYtYnk6IFJvZHJp Z28gVml2aSA8cm9kcmlnby52aXZpQGludGVsLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBQYXVsbyBa YW5vbmkgPHBhdWxvLnIuemFub25pQGludGVsLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZGRpLmMgfCAxODkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKystCj4gIDEgZmlsZSBjaGFuZ2VkLCAxODYgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMo LSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYwo+IGluZGV4IDBhNDY4Mzk5MWVjMi4uYzM4 ODczY2I5OGNhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMKPiBAQCAtODQ5LDYgKzg0 OSw0NSBAQCBjbmxfZ2V0X2J1Zl90cmFuc19lZHAoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LCBpbnQgKm5fZW50cmllcykKPiAgCX0KPiAgfQo+ICAKPiArc3RhdGljIGNvbnN0IHN0 cnVjdCBpY2xfY29tYm9fcGh5X2RkaV9idWZfdHJhbnMgKgo+ICtpY2xfZ2V0X2NvbWJvX2J1Zl90 cmFucyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGVudW0gcG9ydCBwb3J0LAo+ ICsJCQlpbnQgdHlwZSwgaW50ICpuX2VudHJpZXMpCj4gK3sKPiArCXUzMiB2b2x0YWdlID0gSTkx NV9SRUFEKElDTF9QT1JUX0NPTVBfRFczKHBvcnQpKSAmIFZPTFRBR0VfSU5GT19NQVNLOwo+ICsK PiArCWlmICh0eXBlID09IElOVEVMX09VVFBVVF9FRFAgJiYgZGV2X3ByaXYtPnZidC5lZHAubG93 X3Zzd2luZykgewo+ICsJCXN3aXRjaCAodm9sdGFnZSkgewo+ICsJCWNhc2UgVk9MVEFHRV9JTkZP XzBfODVWOgo+ICsJCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShpY2xfY29tYm9fcGh5X2RkaV90 cmFuc2xhdGlvbnNfZWRwXzBfODVWKTsKPiArCQkJcmV0dXJuIGljbF9jb21ib19waHlfZGRpX3Ry YW5zbGF0aW9uc19lZHBfMF84NVY7Cj4gKwkJY2FzZSBWT0xUQUdFX0lORk9fMF85NVY6Cj4gKwkJ CSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19l ZHBfMF85NVYpOwo+ICsJCQlyZXR1cm4gaWNsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2Vk cF8wXzk1VjsKPiArCQljYXNlIFZPTFRBR0VfSU5GT18xXzA1VjoKPiArCQkJKm5fZW50cmllcyA9 IEFSUkFZX1NJWkUoaWNsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2VkcF8xXzA1Vik7Cj4g KwkJCXJldHVybiBpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZWRwXzFfMDVWOwo+ICsJ CWRlZmF1bHQ6Cj4gKwkJCU1JU1NJTkdfQ0FTRSh2b2x0YWdlKTsKPiArCQkJcmV0dXJuIE5VTEw7 Cj4gKwkJfQo+ICsJfSBlbHNlIHsKCkRQIGVuZHMgdXAgaGVyZSBvbiBIRE1JPwpUaGlzIGlzIHN0 cmFuZ2UuLi4KCkFsc28sIGZvciBjbGFyaXR5LCB3aHkgbm90IHRvIHNwbGl0IHRoaXMgaW50byBz ZXBhcmF0ZWQgZnVuY3Rpb25zCmxpa2UgYWxsIG90aGVyIHBsYXRmb3Jtcz8KCj4gKwkJc3dpdGNo ICh2b2x0YWdlKSB7Cj4gKwkJY2FzZSBWT0xUQUdFX0lORk9fMF84NVY6Cj4gKwkJCSpuX2VudHJp ZXMgPSBBUlJBWV9TSVpFKGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19kcF9oZG1pXzBf ODVWKTsKPiArCQkJcmV0dXJuIGljbF9jb21ib19waHlfZGRpX3RyYW5zbGF0aW9uc19kcF9oZG1p XzBfODVWOwo+ICsJCWNhc2UgVk9MVEFHRV9JTkZPXzBfOTVWOgo+ICsJCQkqbl9lbnRyaWVzID0g QVJSQVlfU0laRShpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZHBfaGRtaV8wXzk1Vik7 Cj4gKwkJCXJldHVybiBpY2xfY29tYm9fcGh5X2RkaV90cmFuc2xhdGlvbnNfZHBfaGRtaV8wXzk1 VjsKPiArCQljYXNlIFZPTFRBR0VfSU5GT18xXzA1VjoKPiArCQkJKm5fZW50cmllcyA9IEFSUkFZ X1NJWkUoaWNsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2RwX2hkbWlfMV8wNVYpOwo+ICsJ CQlyZXR1cm4gaWNsX2NvbWJvX3BoeV9kZGlfdHJhbnNsYXRpb25zX2RwX2hkbWlfMV8wNVY7Cj4g KwkJZGVmYXVsdDoKPiArCQkJTUlTU0lOR19DQVNFKHZvbHRhZ2UpOwo+ICsJCQlyZXR1cm4gTlVM TDsKPiArCQl9Cj4gKwl9Cj4gK30KPiArCj4gIHN0YXRpYyBpbnQgaW50ZWxfZGRpX2hkbWlfbGV2 ZWwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBlbnVtIHBvcnQgcG9ydCkKPiAg ewo+ICAJaW50IG5fZW50cmllcywgbGV2ZWwsIGRlZmF1bHRfZW50cnk7Cj4gQEAgLTIxNzgsNiAr MjIxNywxNDQgQEAgc3RhdGljIHZvaWQgY25sX2RkaV92c3dpbmdfc2VxdWVuY2Uoc3RydWN0IGlu dGVsX2VuY29kZXIgKmVuY29kZXIsCj4gIAlJOTE1X1dSSVRFKENOTF9QT1JUX1RYX0RXNV9HUlAo cG9ydCksIHZhbCk7Cj4gIH0KPiAgCj4gK3N0YXRpYyB2b2lkIGljbF9kZGlfY29tYm9fdnN3aW5n X3Byb2dyYW0oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICsJCQkJCSB1MzIg bGV2ZWwsIGVudW0gcG9ydCBwb3J0LCBpbnQgdHlwZSkKPiArewo+ICsJY29uc3Qgc3RydWN0IGlj bF9jb21ib19waHlfZGRpX2J1Zl90cmFucyAqZGRpX3RyYW5zbGF0aW9ucyA9IE5VTEw7Cj4gKwl1 MzIgbl9lbnRyaWVzLCB2YWw7Cj4gKwlpbnQgbG47Cj4gKwo+ICsJZGRpX3RyYW5zbGF0aW9ucyA9 IGljbF9nZXRfY29tYm9fYnVmX3RyYW5zKGRldl9wcml2LCBwb3J0LCB0eXBlLAo+ICsJCQkJCQkg ICAmbl9lbnRyaWVzKTsKPiArCWlmICghZGRpX3RyYW5zbGF0aW9ucykKPiArCQlyZXR1cm47Cj4g Kwo+ICsJaWYgKGxldmVsID49IG5fZW50cmllcykgewo+ICsJCURSTV9ERUJVR19LTVMoIkRESSB0 cmFuc2xhdGlvbiBub3QgZm91bmQgZm9yIGxldmVsICVkLiBVc2luZyAlZCBpbnN0ZWFkLiIsIGxl dmVsLCBuX2VudHJpZXMgLSAxKTsKPiArCQlsZXZlbCA9IG5fZW50cmllcyAtIDE7Cj4gKwl9Cj4g Kwo+ICsJLyogU2V0IFBPUlRfVFhfRFc1IFNjYWxpbmcgTW9kZSBTZWwgdG8gMTEwYi4gKi8KPiAr CXZhbCA9IEk5MTVfUkVBRChJQ0xfUE9SVF9UWF9EVzVfTE4wKHBvcnQpKTsKPiArCXZhbCAmPSB+ U0NBTElOR19NT0RFX1NFTF9NQVNLOwo+ICsJdmFsIHw9IFNDQUxJTkdfTU9ERV9TRUwoMHg2KTsK PiArCUk5MTVfV1JJVEUoSUNMX1BPUlRfVFhfRFc1X0dSUChwb3J0KSwgdmFsKTsKPiArCj4gKwkv KiBQcm9ncmFtIFBPUlRfVFhfRFc1ICovCj4gKwl2YWwgPSBJOTE1X1JFQUQoSUNMX1BPUlRfVFhf RFc1X0xOMChwb3J0KSk7Cj4gKwkvKiBTZXQgRGlzYWJsZVRhcDIgYW5kIERpc2FibGVUYXAzIGlm IE1JUEkgRFNJCj4gKwkgKiBDbGVhciBEaXNhYmxlVGFwMiBhbmQgRGlzYWJsZVRhcDMgZm9yIGFs bCBvdGhlciBQb3J0cwo+ICsJICovCj4gKwlpZiAodHlwZSA9PSBJTlRFTF9PVVRQVVRfRFNJKSB7 Cj4gKwkJdmFsIHw9IFRBUDJfRElTQUJMRTsKPiArCQl2YWwgfD0gVEFQM19ESVNBQkxFOwo+ICsJ fSBlbHNlIHsKPiArCQl2YWwgJj0gflRBUDJfRElTQUJMRTsKPiArCQl2YWwgJj0gflRBUDNfRElT QUJMRTsKPiArCX0KPiArCUk5MTVfV1JJVEUoSUNMX1BPUlRfVFhfRFc1X0dSUChwb3J0KSwgdmFs KTsKPiArCj4gKwkvKiBQcm9ncmFtIFBPUlRfVFhfRFcyICovCj4gKwl2YWwgPSBJOTE1X1JFQUQo SUNMX1BPUlRfVFhfRFcyX0xOMChwb3J0KSk7Cj4gKwl2YWwgJj0gfihTV0lOR19TRUxfTE9XRVJf TUFTSyB8IFNXSU5HX1NFTF9VUFBFUl9NQVNLIHwKPiArCQkgUkNPTVBfU0NBTEFSX01BU0spOwo+ ICsJdmFsIHw9IFNXSU5HX1NFTF9VUFBFUihkZGlfdHJhbnNsYXRpb25zW2xldmVsXS5kdzJfc3dp bmdfc2VsZWN0KTsKPiArCXZhbCB8PSBTV0lOR19TRUxfTE9XRVIoZGRpX3RyYW5zbGF0aW9uc1ts ZXZlbF0uZHcyX3N3aW5nX3NlbGVjdCk7Cj4gKwkvKiBQcm9ncmFtIFJjb21wIHNjYWxhciBmb3Ig ZXZlcnkgdGFibGUgZW50cnkgKi8KPiArCXZhbCB8PSBSQ09NUF9TQ0FMQVIoZGRpX3RyYW5zbGF0 aW9uc1tsZXZlbF0uZHcyX3N3aW5nX3NjYWxhcik7Cj4gKwlJOTE1X1dSSVRFKElDTF9QT1JUX1RY X0RXMl9HUlAocG9ydCksIHZhbCk7Cj4gKwo+ICsJLyogUHJvZ3JhbSBQT1JUX1RYX0RXNCAqLwo+ ICsJLyogV2UgY2Fubm90IHdyaXRlIHRvIEdSUC4gSXQgd291bGQgb3ZlcndyaXRlIGluZGl2aWR1 YWwgbG9hZGdlbi4gKi8KPiArCWZvciAobG4gPSAwOyBsbiA8PSAzOyBsbisrKSB7Cj4gKwkJdmFs ID0gSTkxNV9SRUFEKElDTF9QT1JUX1RYX0RXNF9MTihwb3J0LCBsbikpOwo+ICsJCXZhbCAmPSB+ KFBPU1RfQ1VSU09SXzFfTUFTSyB8IFBPU1RfQ1VSU09SXzJfTUFTSyB8Cj4gKwkJCSBDVVJTT1Jf Q09FRkZfTUFTSyk7Cj4gKwkJdmFsIHw9IGRkaV90cmFuc2xhdGlvbnNbbGV2ZWxdLmR3NF9zY2Fs aW5nOwo+ICsJCUk5MTVfV1JJVEUoSUNMX1BPUlRfVFhfRFc0X0xOKHBvcnQsIGxuKSwgdmFsKTsK PiArCX0KPiArfQo+ICsKPiArc3RhdGljIHZvaWQgaWNsX2NvbWJvX3BoeV9kZGlfdnN3aW5nX3Nl cXVlbmNlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLCB1MzIgbGV2ZWwpCj4gK3sKPiAr CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFz ZS5kZXYpOwo+ICsJZW51bSBwb3J0IHBvcnQgPSBlbmNvZGVyLT5wb3J0Owo+ICsJaW50IHR5cGUg PSBlbmNvZGVyLT50eXBlOwo+ICsJaW50IHdpZHRoID0gMDsKPiArCWludCByYXRlID0gMDsKPiAr CXUzMiB2YWw7Cj4gKwlpbnQgbG4gPSAwOwo+ICsKPiArCWlmICh0eXBlID09IElOVEVMX09VVFBV VF9IRE1JKSB7Cj4gKwkJd2lkdGggPSA0Owo+ICsJCS8qIFJhdGUgaXMgYWx3YXlzIDwgdGhhbiA2 R0h6IGZvciBIRE1JICovCj4gKwl9IGVsc2Ugewo+ICsJCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxf ZHAgPSBlbmNfdG9faW50ZWxfZHAoJmVuY29kZXItPmJhc2UpOwo+ICsKPiArCQl3aWR0aCA9IGlu dGVsX2RwLT5sYW5lX2NvdW50Owo+ICsJCXJhdGUgPSBpbnRlbF9kcC0+bGlua19yYXRlOwo+ICsJ fQo+ICsKPiArCS8qCj4gKwkgKiAxLiBJZiBwb3J0IHR5cGUgaXMgZURQIG9yIERQLAo+ICsJICog c2V0IFBPUlRfUENTX0RXMSBjbW5rZWVwZXJfZW5hYmxlIHRvIDFiLAo+ICsJICogZWxzZSBjbGVh ciB0byAwYi4KPiArCSAqLwo+ICsJdmFsID0gSTkxNV9SRUFEKElDTF9QT1JUX1BDU19EVzFfTE4w KHBvcnQpKTsKPiArCWlmICh0eXBlID09IElOVEVMX09VVFBVVF9IRE1JKQo+ICsJCXZhbCAmPSB+ Q09NTU9OX0tFRVBFUl9FTjsKPiArCWVsc2UKPiArCQl2YWwgfD0gQ09NTU9OX0tFRVBFUl9FTjsK PiArCUk5MTVfV1JJVEUoSUNMX1BPUlRfUENTX0RXMV9HUlAocG9ydCksIHZhbCk7Cj4gKwo+ICsJ LyogMi4gUHJvZ3JhbSBsb2FkZ2VuIHNlbGVjdCAqLwo+ICsJLyoKPiArCSAqIFByb2dyYW0gUE9S VF9UWF9EVzRfTE4gZGVwZW5kaW5nIG9uIEJpdCByYXRlIGFuZCB1c2VkIGxhbmVzCj4gKwkgKiA8 PSA2IEdIeiBhbmQgNCBsYW5lcyAoTE4wPTAsIExOMT0xLCBMTjI9MSwgTE4zPTEpCj4gKwkgKiA8 PSA2IEdIeiBhbmQgMSwyIGxhbmVzIChMTjA9MCwgTE4xPTEsIExOMj0xLCBMTjM9MCkKPiArCSAq ID4gNiBHSHogKExOMD0wLCBMTjE9MCwgTE4yPTAsIExOMz0wKQo+ICsJICovCj4gKwlmb3IgKGxu ID0gMDsgbG4gPD0gMzsgbG4rKykgewo+ICsJCXZhbCA9IEk5MTVfUkVBRChJQ0xfUE9SVF9UWF9E VzRfTE4ocG9ydCwgbG4pKTsKPiArCQl2YWwgJj0gfkxPQURHRU5fU0VMRUNUOwo+ICsKPiArCQlp ZiAoKHJhdGUgPD0gNjAwMDAwICYmIHdpZHRoID09IDQgJiYgbG4gPj0gMSkgfHwKPiArCQkgICAg KHJhdGUgPD0gNjAwMDAwICYmIHdpZHRoIDwgNCAmJiAobG4gPT0gMSB8fCBsbiA9PSAyKSkpIHsK PiArCQkJdmFsIHw9IExPQURHRU5fU0VMRUNUOwo+ICsJCX0KPiArCQlJOTE1X1dSSVRFKElDTF9Q T1JUX1RYX0RXNF9MTihwb3J0LCBsbiksIHZhbCk7Cj4gKwl9Cj4gKwo+ICsJLyogMy4gU2V0IFBP UlRfQ0xfRFc1IFNVUyBDbG9jayBDb25maWcgdG8gMTFiICovCj4gKwl2YWwgPSBJOTE1X1JFQUQo SUNMX1BPUlRfQ0xfRFc1KHBvcnQpKTsKPiArCXZhbCB8PSBTVVNfQ0xPQ0tfQ09ORklHOwo+ICsJ STkxNV9XUklURShJQ0xfUE9SVF9DTF9EVzUocG9ydCksIHZhbCk7Cj4gKwo+ICsJLyogNC4gQ2xl YXIgdHJhaW5pbmcgZW5hYmxlIHRvIGNoYW5nZSBzd2luZyB2YWx1ZXMgKi8KPiArCXZhbCA9IEk5 MTVfUkVBRChJQ0xfUE9SVF9UWF9EVzVfTE4wKHBvcnQpKTsKPiArCXZhbCAmPSB+VFhfVFJBSU5J TkdfRU47Cj4gKwlJOTE1X1dSSVRFKElDTF9QT1JUX1RYX0RXNV9HUlAocG9ydCksIHZhbCk7Cj4g Kwo+ICsJLyogNS4gUHJvZ3JhbSBzd2luZyBhbmQgZGUtZW1waGFzaXMgKi8KPiArCWljbF9kZGlf Y29tYm9fdnN3aW5nX3Byb2dyYW0oZGV2X3ByaXYsIGxldmVsLCBwb3J0LCB0eXBlKTsKPiArCj4g KwkvKiA2LiBTZXQgdHJhaW5pbmcgZW5hYmxlIHRvIHRyaWdnZXIgdXBkYXRlICovCj4gKwl2YWwg PSBJOTE1X1JFQUQoSUNMX1BPUlRfVFhfRFc1X0xOMChwb3J0KSk7Cj4gKwl2YWwgfD0gVFhfVFJB SU5JTkdfRU47Cj4gKwlJOTE1X1dSSVRFKElDTF9QT1JUX1RYX0RXNV9HUlAocG9ydCksIHZhbCk7 Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGljbF9kZGlfdnN3aW5nX3NlcXVlbmNlKHN0cnVjdCBp bnRlbF9lbmNvZGVyICplbmNvZGVyLCB1MzIgbGV2ZWwpCj4gK3sKPiArCWVudW0gcG9ydCBwb3J0 ID0gZW5jb2Rlci0+cG9ydDsKPiArCj4gKwlpZiAocG9ydCA9PSBQT1JUX0EgfHwgcG9ydCA9PSBQ T1JUX0IpCj4gKwkJaWNsX2NvbWJvX3BoeV9kZGlfdnN3aW5nX3NlcXVlbmNlKGVuY29kZXIsIGxl dmVsKTsKPiArCWVsc2UKPiArCQkvKiBOb3QgSW1wbGVtZW50ZWQgWWV0ICovCj4gKwkJV0FSTl9P TigxKTsKPiArfQo+ICsKPiAgc3RhdGljIHVpbnQzMl90IHRyYW5zbGF0ZV9zaWduYWxfbGV2ZWwo aW50IHNpZ25hbF9sZXZlbHMpCj4gIHsKPiAgCWludCBpOwo+IEBAIC0yMjA5LDcgKzIzODYsOSBA QCB1MzIgYnh0X3NpZ25hbF9sZXZlbHMoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiAgCXN0 cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyID0gJmRwb3J0LT5iYXNlOwo+ICAJaW50IGxldmVs ID0gaW50ZWxfZGRpX2RwX2xldmVsKGludGVsX2RwKTsKPiAgCj4gLQlpZiAoSVNfQ0FOTk9OTEFL RShkZXZfcHJpdikpCj4gKwlpZiAoSVNfSUNFTEFLRShkZXZfcHJpdikpCj4gKwkJaWNsX2RkaV92 c3dpbmdfc2VxdWVuY2UoZW5jb2RlciwgbGV2ZWwpOwo+ICsJZWxzZSBpZiAoSVNfQ0FOTk9OTEFL RShkZXZfcHJpdikpCj4gIAkJY25sX2RkaV92c3dpbmdfc2VxdWVuY2UoZW5jb2RlciwgbGV2ZWws IGVuY29kZXItPnR5cGUpOwo+ICAJZWxzZQo+ICAJCWJ4dF9kZGlfdnN3aW5nX3NlcXVlbmNlKGVu Y29kZXIsIGxldmVsLCBlbmNvZGVyLT50eXBlKTsKPiBAQCAtMjM4OSw3ICsyNTY4LDkgQEAgc3Rh dGljIHZvaWQgaW50ZWxfZGRpX3ByZV9lbmFibGVfZHAoc3RydWN0IGludGVsX2VuY29kZXIgKmVu Y29kZXIsCj4gIAo+ICAJaW50ZWxfZGlzcGxheV9wb3dlcl9nZXQoZGV2X3ByaXYsIGRpZ19wb3J0 LT5kZGlfaW9fcG93ZXJfZG9tYWluKTsKPiAgCj4gLQlpZiAoSVNfQ0FOTk9OTEFLRShkZXZfcHJp dikpCj4gKwlpZiAoSVNfSUNFTEFLRShkZXZfcHJpdikpCj4gKwkJaWNsX2RkaV92c3dpbmdfc2Vx dWVuY2UoZW5jb2RlciwgbGV2ZWwpOwo+ICsJZWxzZSBpZiAoSVNfQ0FOTk9OTEFLRShkZXZfcHJp dikpCj4gIAkJY25sX2RkaV92c3dpbmdfc2VxdWVuY2UoZW5jb2RlciwgbGV2ZWwsIGVuY29kZXIt PnR5cGUpOwo+ICAJZWxzZSBpZiAoSVNfR0VOOV9MUChkZXZfcHJpdikpCj4gIAkJYnh0X2RkaV92 c3dpbmdfc2VxdWVuY2UoZW5jb2RlciwgbGV2ZWwsIGVuY29kZXItPnR5cGUpOwo+IEBAIC0yNDIw LDcgKzI2MDEsOSBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kZGlfcHJlX2VuYWJsZV9oZG1pKHN0cnVj dCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAKPiAgCWludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0 KGRldl9wcml2LCBkaWdfcG9ydC0+ZGRpX2lvX3Bvd2VyX2RvbWFpbik7Cj4gIAo+IC0JaWYgKElT X0NBTk5PTkxBS0UoZGV2X3ByaXYpKQo+ICsJaWYgKElTX0lDRUxBS0UoZGV2X3ByaXYpKQo+ICsJ CWljbF9kZGlfdnN3aW5nX3NlcXVlbmNlKGVuY29kZXIsIGxldmVsKTsKPiArCWVsc2UgaWYgKElT X0NBTk5PTkxBS0UoZGV2X3ByaXYpKQo+ICAJCWNubF9kZGlfdnN3aW5nX3NlcXVlbmNlKGVuY29k ZXIsIGxldmVsLCBJTlRFTF9PVVRQVVRfSERNSSk7Cj4gIAllbHNlIGlmIChJU19HRU45X0xQKGRl dl9wcml2KSkKPiAgCQlieHRfZGRpX3Zzd2luZ19zZXF1ZW5jZShlbmNvZGVyLCBsZXZlbCwgSU5U RUxfT1VUUFVUX0hETUkpOwo+IC0tIAo+IDIuMTQuMwo+IAo+IF9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+IElu dGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeApfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9pbnRlbC1nZngK