From mboxrd@z Thu Jan 1 00:00:00 1970 From: Manasi Navare Subject: Re: [PATCH] drm/i915/cnl: Implement voltage swing sequence. Date: Mon, 5 Jun 2017 17:00:48 -0700 Message-ID: <20170606000047.GG26925@intel.com> References: <20170605184715.GE26925@intel.com> <1496695987-3415-1-git-send-email-rodrigo.vivi@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id 26468894A7 for ; Mon, 5 Jun 2017 23:55:14 +0000 (UTC) Content-Disposition: inline In-Reply-To: <1496695987-3415-1-git-send-email-rodrigo.vivi@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 T24gTW9uLCBKdW4gMDUsIDIwMTcgYXQgMDE6NTM6MDdQTSAtMDcwMCwgUm9kcmlnbyBWaXZpIHdy b3RlOgo+IFRoaXMgaXMgYW4gaW1wb3J0YW50IHBhcnQgb2YgdGhlIERESSBpbml0YWxpemF0aW9u IGFzIHdlbGwgYXMKPiBmb3IgY2hhbmdpbmcgdGhlIHZvbHRhZ2UgZHVyaW5nIERpc3BsYXlQb3J0 IGxpbmsgdHJhaW5pbmcuCj4gCj4gVGhpcyBuZXcgc2VxdWVuY2UgZm9yIENhbm5vbmxha2UgaXMg bW9yZSBsaWtlIEJyb3h0b24gc3R5bGUKPiBidXQgc3RpbGwgd2l0aCBkaWZmZXJlbnQgcmVnaXN0 ZXJzLCBkaWZmZXJlbnQgdGFibGUgYW5kCj4gZGlmZmVyZW50IHN0ZXBzLgo+IAo+IHYyOiBEbyBu b3Qgd3JpdGUgdG8gRFc0X0dSUCB0byBhdm9pZCBvdmVyd3JpdGUgaW5kaXZpZHVhbCBsb2FkZ2Vu Lgo+ICAgICBGaXggUE9SVF9DTF9EVzUgU1VTIENsb2NrIENvbmZpZyBzZXQuCj4gdjM6IEFzIHBy ZXZpb3VzIHBsYXRmb3JtcyB1c2Ugb25seSBlRFAgdGFibGUgaWYgbG93IHZvbHRhZ2Ugd2FzCj4g ICAgIHJlcXVlc3RlZC4KPiB2NDogZml4IFdlcnJvcjptYXliZSB1bmluaXRpYWxpemVkIChQYXVs bykKPiB2NTogUmViYXNlIG9uIHRvcCBvZiBkdzJfc3dpbmdfc2VsIGNoYW5nZXMKPiAgICAgb24g cHJldmlvdXMgcGF0Y2hlcy4KPiB2NjogVXNpbmcgZmxleGlibGUgU0NBTElOR19NT0RFX1NFTCh4 KS4KPiAKPiBDYzogTWFuYXNpIE5hdmFyZSA8bWFuYXNpLmQubmF2YXJlQGludGVsLmNvbT4KPiBD YzogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KPiBTaWdu ZWQtb2ZmLWJ5OiBSb2RyaWdvIFZpdmkgPHJvZHJpZ28udml2aUBpbnRlbC5jb20+CiBSZXZpZXdl ZC1ieTogTWFuYXNpIE5hdmFyZSA8bWFuYXNpLmQubmF2YXJlQGludGVsLmNvbT4KCgo+IC0tLQo+ ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oICB8ICAgMSArCj4gIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2RkaS5jIHwgMTc2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jICB8ICAgMiArLQo+ ICAzIGZpbGVzIGNoYW5nZWQsIDE3NyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQo+IAo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+IGluZGV4IDBkMjA2M2UuLmU2MTM3NmYgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfcmVnLmgKPiBAQCAtMTY3MSw2ICsxNjcxLDcgQEAgZW51bSBza2xfZGlz cF9wb3dlcl93ZWxscyB7Cj4gIAo+ICAjZGVmaW5lIENOTF9QT1JUX0NMMUNNX0RXNQkJX01NSU8o MHgxNjIwMTQpCj4gICNkZWZpbmUgICBDTF9QT1dFUl9ET1dOX0VOQUJMRQkJKDEgPDwgNCkKPiAr I2RlZmluZSAgIFNVU19DTE9DS19DT05GSUcJCSgzIDw8IDApCj4gIAo+ICAjZGVmaW5lIF9QT1JU X0NMMUNNX0RXOV9BCQkweDE2MjAyNAo+ICAjZGVmaW5lIF9QT1JUX0NMMUNNX0RXOV9CQwkJMHg2 QzAyNAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCj4gaW5kZXggOWYzNDAzOC4uNTZiMGEyYyAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYwo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCj4gQEAgLTE3MjAsNiArMTcyMCwxNzMgQEAg dTggaW50ZWxfZGRpX2RwX3ZvbHRhZ2VfbWF4KHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVy KQo+ICAJCURQX1RSQUlOX1ZPTFRBR0VfU1dJTkdfTUFTSzsKPiAgfQo+ICAKPiArc3RhdGljIGNv bnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyAqCj4gK2NubF9nZXRfYnVmX3RyYW5zX2hkbWko c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICsJCSAgICAgICB1MzIgdm9sdGFn ZSwgaW50ICpuX2VudHJpZXMpCj4gK3sKPiArCWlmICh2b2x0YWdlID09IFZPTFRBR0VfSU5GT18w Xzg1Vikgewo+ICsJCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGNubF9kZGlfdHJhbnNsYXRpb25z X2hkbWlfMF84NVYpOwo+ICsJCXJldHVybiBjbmxfZGRpX3RyYW5zbGF0aW9uc19oZG1pXzBfODVW Owo+ICsJfSBlbHNlIGlmICh2b2x0YWdlID09IFZPTFRBR0VfSU5GT18wXzk1Vikgewo+ICsJCSpu X2VudHJpZXMgPSBBUlJBWV9TSVpFKGNubF9kZGlfdHJhbnNsYXRpb25zX2hkbWlfMF85NVYpOwo+ ICsJCXJldHVybiBjbmxfZGRpX3RyYW5zbGF0aW9uc19oZG1pXzBfOTVWOwo+ICsJfSBlbHNlIGlm ICh2b2x0YWdlID09IFZPTFRBR0VfSU5GT18xXzA1Vikgewo+ICsJCSpuX2VudHJpZXMgPSBBUlJB WV9TSVpFKGNubF9kZGlfdHJhbnNsYXRpb25zX2hkbWlfMV8wNVYpOwo+ICsJCXJldHVybiBjbmxf ZGRpX3RyYW5zbGF0aW9uc19oZG1pXzFfMDVWOwo+ICsJfQo+ICsJcmV0dXJuIE5VTEw7Cj4gK30K PiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgKgo+ICtjbmxfZ2V0 X2J1Zl90cmFuc19kcChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gKwkJICAg ICB1MzIgdm9sdGFnZSwgaW50ICpuX2VudHJpZXMpCj4gK3sKPiArCWlmICh2b2x0YWdlID09IFZP TFRBR0VfSU5GT18wXzg1Vikgewo+ICsJCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGNubF9kZGlf dHJhbnNsYXRpb25zX2RwXzBfODVWKTsKPiArCQlyZXR1cm4gY25sX2RkaV90cmFuc2xhdGlvbnNf ZHBfMF84NVY7Cj4gKwl9IGVsc2UgaWYgKHZvbHRhZ2UgPT0gVk9MVEFHRV9JTkZPXzBfOTVWKSB7 Cj4gKwkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoY25sX2RkaV90cmFuc2xhdGlvbnNfZHBfMF85 NVYpOwo+ICsJCXJldHVybiBjbmxfZGRpX3RyYW5zbGF0aW9uc19kcF8wXzk1VjsKPiArCX0gZWxz ZSBpZiAodm9sdGFnZSA9PSBWT0xUQUdFX0lORk9fMV8wNVYpIHsKPiArCQkqbl9lbnRyaWVzID0g QVJSQVlfU0laRShjbmxfZGRpX3RyYW5zbGF0aW9uc19kcF8xXzA1Vik7Cj4gKwkJcmV0dXJuIGNu bF9kZGlfdHJhbnNsYXRpb25zX2RwXzFfMDVWOwo+ICsJfQo+ICsJcmV0dXJuIE5VTEw7Cj4gK30K PiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY25sX2RkaV9idWZfdHJhbnMgKgo+ICtjbmxfZ2V0 X2J1Zl90cmFuc19lZHAoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICsJCSAg ICAgIHUzMiB2b2x0YWdlLCBpbnQgKm5fZW50cmllcykKPiArewo+ICsJaWYgKGRldl9wcml2LT52 YnQuZWRwLmxvd192c3dpbmcpIHsKPiArCQlpZiAodm9sdGFnZSA9PSBWT0xUQUdFX0lORk9fMF84 NVYpIHsKPiArCQkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoY25sX2RkaV90cmFuc2xhdGlvbnNf ZWRwXzBfODVWKTsKPiArCQkJcmV0dXJuIGNubF9kZGlfdHJhbnNsYXRpb25zX2RwXzBfODVWOwo+ ICsJCX0gZWxzZSBpZiAodm9sdGFnZSA9PSBWT0xUQUdFX0lORk9fMF85NVYpIHsKPiArCQkJKm5f ZW50cmllcyA9IEFSUkFZX1NJWkUoY25sX2RkaV90cmFuc2xhdGlvbnNfZWRwXzBfOTVWKTsKPiAr CQkJcmV0dXJuIGNubF9kZGlfdHJhbnNsYXRpb25zX2VkcF8wXzk1VjsKPiArCQl9IGVsc2UgaWYg KHZvbHRhZ2UgPT0gVk9MVEFHRV9JTkZPXzFfMDVWKSB7Cj4gKwkJCSpuX2VudHJpZXMgPSBBUlJB WV9TSVpFKGNubF9kZGlfdHJhbnNsYXRpb25zX2VkcF8xXzA1Vik7Cj4gKwkJCXJldHVybiBjbmxf ZGRpX3RyYW5zbGF0aW9uc19lZHBfMV8wNVY7Cj4gKwkJfQo+ICsJCXJldHVybiBOVUxMOwo+ICsJ fSBlbHNlIHsKPiArCQlyZXR1cm4gY25sX2dldF9idWZfdHJhbnNfZHAoZGV2X3ByaXYsIHZvbHRh Z2UsIG5fZW50cmllcyk7Cj4gKwl9Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGNubF9kZGlfdnN3 aW5nX3Byb2dyYW0oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICsJCQkJICAg IHUzMiBsZXZlbCwgZW51bSBwb3J0IHBvcnQsIGludCB0eXBlKQo+ICt7Cj4gKwljb25zdCBzdHJ1 Y3QgY25sX2RkaV9idWZfdHJhbnMgKmRkaV90cmFuc2xhdGlvbnMgPSBOVUxMOwo+ICsJdTMyIG5f ZW50cmllcywgdmFsLCB2b2x0YWdlOwo+ICsJaW50IGxuOwo+ICsKPiArCS8qCj4gKwkgKiBWYWx1 ZXMgZm9yIGVhY2ggcG9ydCB0eXBlIGFyZSBsaXN0ZWQgaW4KPiArCSAqIHZvbHRhZ2Ugc3dpbmcg cHJvZ3JhbW1pbmcgdGFibGVzLgo+ICsJICogVmNjaW8gdm9sdGFnZSBmb3VuZCBpbiBQT1JUX0NP TVBfRFczLgo+ICsJICovCj4gKwl2b2x0YWdlID0gSTkxNV9SRUFEKENOTF9QT1JUX0NPTVBfRFcz KSAmIFZPTFRBR0VfSU5GT19NQVNLOwo+ICsKPiArCWlmICh0eXBlID09IElOVEVMX09VVFBVVF9I RE1JKSB7Cj4gKwkJZGRpX3RyYW5zbGF0aW9ucyA9IGNubF9nZXRfYnVmX3RyYW5zX2hkbWkoZGV2 X3ByaXYsCj4gKwkJCQkJCQkgIHZvbHRhZ2UsICZuX2VudHJpZXMpOwo+ICsJfSBlbHNlIGlmICh0 eXBlID09IElOVEVMX09VVFBVVF9EUCkgewo+ICsJCWRkaV90cmFuc2xhdGlvbnMgPSBjbmxfZ2V0 X2J1Zl90cmFuc19kcChkZXZfcHJpdiwKPiArCQkJCQkJCXZvbHRhZ2UsICZuX2VudHJpZXMpOwo+ ICsJfSBlbHNlIGlmICh0eXBlID09IElOVEVMX09VVFBVVF9FRFApIHsKPiArCQlkZGlfdHJhbnNs YXRpb25zID0gY25sX2dldF9idWZfdHJhbnNfZWRwKGRldl9wcml2LAo+ICsJCQkJCQkJIHZvbHRh Z2UsICZuX2VudHJpZXMpOwo+ICsJfQo+ICsKPiArCWlmIChkZGlfdHJhbnNsYXRpb25zID09IE5V TEwpIHsKPiArCQlNSVNTSU5HX0NBU0Uodm9sdGFnZSk7Cj4gKwkJcmV0dXJuOwo+ICsJfQo+ICsK PiArCWlmIChsZXZlbCA+PSBuX2VudHJpZXMpIHsKPiArCQlEUk1fREVCVUdfS01TKCJEREkgdHJh bnNsYXRpb24gbm90IGZvdW5kIGZvciBsZXZlbCAlZC4gVXNpbmcgJWQgaW5zdGVhZC4iLCBsZXZl bCwgbl9lbnRyaWVzIC0gMSk7Cj4gKwkJbGV2ZWwgPSBuX2VudHJpZXMgLSAxOwo+ICsJfQo+ICsK PiArCS8qIFNldCBQT1JUX1RYX0RXNSBTY2FsaW5nIE1vZGUgU2VsIHRvIDAxMGIuICovCj4gKwl2 YWwgPSBJOTE1X1JFQUQoQ05MX1BPUlRfVFhfRFc1X0xOMChwb3J0KSk7Cj4gKwl2YWwgfD0gU0NB TElOR19NT0RFX1NFTCgyKTsKPiArCUk5MTVfV1JJVEUoQ05MX1BPUlRfVFhfRFc1X0dSUChwb3J0 KSwgdmFsKTsKPiArCj4gKwkvKiBQcm9ncmFtIFBPUlRfVFhfRFcyICovCj4gKwl2YWwgPSBJOTE1 X1JFQUQoQ05MX1BPUlRfVFhfRFcyX0xOMChwb3J0KSk7Cj4gKwl2YWwgfD0gU1dJTkdfU0VMX1VQ UEVSKGRkaV90cmFuc2xhdGlvbnNbbGV2ZWxdLmR3Ml9zd2luZ19zZWwpOwo+ICsJdmFsIHw9IFNX SU5HX1NFTF9MT1dFUihkZGlfdHJhbnNsYXRpb25zW2xldmVsXS5kdzJfc3dpbmdfc2VsKTsKPiAr CS8qIFJjb21wIHNjYWxhciBpcyBmaXhlZCBhcyAweDk4IGZvciBldmVyeSB0YWJsZSBlbnRyeSAq Lwo+ICsJdmFsIHw9IFJDT01QX1NDQUxBUigweDk4KTsKPiArCUk5MTVfV1JJVEUoQ05MX1BPUlRf VFhfRFcyX0dSUChwb3J0KSwgdmFsKTsKPiArCj4gKyAgICAgICAgLyogUHJvZ3JhbSBQT1JUX1RY X0RXNCAqLwo+ICsJLyogV2UgY2Fubm90IHdyaXRlIHRvIEdSUC4gSXQgd291bGQgb3ZlcnJpdGUg aW5kaXZpZHVhbCBsb2FkZ2VuICovCj4gKwlmb3IgKGxuID0gMDsgbG4gPCA0OyBsbisrKSB7Cj4g KwkJdmFsID0gSTkxNV9SRUFEKENOTF9QT1JUX1RYX0RXNF9MTihwb3J0LCBsbikpOwo+ICsJCXZh bCB8PSBQT1NUX0NVUlNPUl8xKGRkaV90cmFuc2xhdGlvbnNbbGV2ZWxdLmR3NF9wb3N0X2N1cnNv cl8xKTsKPiArCQl2YWwgfD0gUE9TVF9DVVJTT1JfMihkZGlfdHJhbnNsYXRpb25zW2xldmVsXS5k dzRfcG9zdF9jdXJzb3JfMik7Cj4gKwkJdmFsIHw9IENVUlNPUl9DT0VGRihkZGlfdHJhbnNsYXRp b25zW2xldmVsXS5kdzRfY3Vyc29yX2NvZWZmKTsKPiArCQlJOTE1X1dSSVRFKENOTF9QT1JUX1RY X0RXNF9MTihwb3J0LCBsbiksIHZhbCk7Cj4gKwl9Cj4gKwo+ICsgICAgICAgIC8qIFByb2dyYW0g UE9SVF9UWF9EVzUgKi8KPiArCS8qIEFsbCBEVzUgdmFsdWVzIGFyZSBmaXhlZCBmb3IgZXZlcnkg dGFibGUgZW50cnkgKi8KPiArCXZhbCA9IEk5MTVfUkVBRChDTkxfUE9SVF9UWF9EVzVfTE4wKHBv cnQpKTsKPiArCXZhbCB8PSBSVEVSTV9TRUxFQ1QoNik7Cj4gKwl2YWwgfD0gVEFQM19ESVNBQkxF Owo+ICsJSTkxNV9XUklURShDTkxfUE9SVF9UWF9EVzVfR1JQKHBvcnQpLCB2YWwpOwo+ICsKPiAr ICAgICAgICAvKiBQcm9ncmFtIFBPUlRfVFhfRFc3ICovCj4gKwl2YWwgPSBJOTE1X1JFQUQoQ05M X1BPUlRfVFhfRFc3X0xOMChwb3J0KSk7Cj4gKwl2YWwgfD0gTl9TQ0FMQVIoZGRpX3RyYW5zbGF0 aW9uc1tsZXZlbF0uZHc3X25fc2NhbGFyKTsKPiArCUk5MTVfV1JJVEUoQ05MX1BPUlRfVFhfRFc3 X0dSUChwb3J0KSwgdmFsKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgY25sX2RkaV92c3dpbmdf c2VxdWVuY2Uoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICsJCQkJICAgIHUz MiBsZXZlbCwgZW51bSBwb3J0IHBvcnQsIGludCB0eXBlKQo+ICt7Cj4gKwl1MzIgdmFsOwo+ICsK PiArCS8qCj4gKwkgKiAxLiBJZiBwb3J0IHR5cGUgaXMgZURQIG9yIERQLAo+ICsJICogc2V0IFBP UlRfUENTX0RXMSBjbW5rZWVwZXJfZW5hYmxlIHRvIDFiLAo+ICsJICogZWxzZSBjbGVhciB0byAw Yi4KPiArCSAqLwo+ICsJdmFsID0gSTkxNV9SRUFEKENOTF9QT1JUX1BDU19EVzFfTE4wKHBvcnQp KTsKPiArCWlmICh0eXBlID09IElOVEVMX09VVFBVVF9FRFAgfHwgdHlwZSA9PSBJTlRFTF9PVVRQ VVRfRFApCj4gKwkJdmFsIHw9IENPTU1PTl9LRUVQRVJfRU47Cj4gKwllbHNlCj4gKwkJdmFsICY9 IH5DT01NT05fS0VFUEVSX0VOOwo+ICsJSTkxNV9XUklURShDTkxfUE9SVF9QQ1NfRFcxX0dSUChw b3J0KSwgdmFsKTsKPiArCj4gKwkvKiAyLiBQcm9ncmFtIGxvYWRnZW4gc2VsZWN0ICovCj4gKwkv Kgo+ICsJICogRklYTUU6IFByb2dyYW0gUE9SVF9UWF9EVzRfTE4gZGVwZW5kaW5nIG9uIEJpdCBy YXRlIGFuZCB1c2VkIGxhbmVzCj4gKwkgKi8KPiArCj4gKwkvKiAzLiBTZXQgUE9SVF9DTF9EVzUg U1VTIENsb2NrIENvbmZpZyB0byAxMWIgKi8KPiArCXZhbCA9IEk5MTVfUkVBRChDTkxfUE9SVF9D TDFDTV9EVzUpOwo+ICsJdmFsIHw9IFNVU19DTE9DS19DT05GSUc7Cj4gKwlJOTE1X1dSSVRFKENO TF9QT1JUX0NMMUNNX0RXNSwgdmFsKTsKPiArCj4gKwkvKiA0LiBDbGVhciB0cmFpbmluZyBlbmFi bGUgdG8gY2hhbmdlIHN3aW5nIHZhbHVlcyAqLwo+ICsJdmFsID0gSTkxNV9SRUFEKENOTF9QT1JU X1RYX0RXNV9MTjAocG9ydCkpOwo+ICsJdmFsICY9IH5UWF9UUkFJTklOR19FTjsKPiArCUk5MTVf V1JJVEUoQ05MX1BPUlRfVFhfRFc1X0dSUChwb3J0KSwgdmFsKTsKPiArCj4gKwkvKiA1LiBQcm9n cmFtIHN3aW5nIGFuZCBkZS1lbXBoYXNpcyAqLwo+ICsJY25sX2RkaV92c3dpbmdfcHJvZ3JhbShk ZXZfcHJpdiwgbGV2ZWwsIHBvcnQsIHR5cGUpOwo+ICsKPiArCS8qIDYuIFNldCB0cmFpbmluZyBl bmFibGUgdG8gdHJpZ2dlciB1cGRhdGUgKi8KPiArCXZhbCA9IEk5MTVfUkVBRChDTkxfUE9SVF9U WF9EVzVfTE4wKHBvcnQpKTsKPiArCXZhbCB8PSBUWF9UUkFJTklOR19FTjsKPiArCUk5MTVfV1JJ VEUoQ05MX1BPUlRfVFhfRFc1X0dSUChwb3J0KSwgdmFsKTsKPiArfQo+ICsKPiAgc3RhdGljIHVp bnQzMl90IHRyYW5zbGF0ZV9zaWduYWxfbGV2ZWwoaW50IHNpZ25hbF9sZXZlbHMpCj4gIHsKPiAg CWludCBpOwo+IEBAIC0xNzUyLDcgKzE5MTksMTEgQEAgdWludDMyX3QgZGRpX3NpZ25hbF9sZXZl bHMoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiAgCQlza2xfZGRpX3NldF9pYm9vc3QoZW5j b2RlciwgbGV2ZWwpOwo+ICAJZWxzZSBpZiAoSVNfR0VOOV9MUChkZXZfcHJpdikpCj4gIAkJYnh0 X2RkaV92c3dpbmdfc2VxdWVuY2UoZGV2X3ByaXYsIGxldmVsLCBwb3J0LCBlbmNvZGVyLT50eXBl KTsKPiAtCj4gKwllbHNlIGlmIChJU19DQU5OT05MQUtFKGRldl9wcml2KSkgewo+ICsJCWNubF9k ZGlfdnN3aW5nX3NlcXVlbmNlKGRldl9wcml2LCBsZXZlbCwgcG9ydCwgZW5jb2Rlci0+dHlwZSk7 Cj4gKwkJLyogRERJX0JVRl9DVEwgYml0cyAyNzoyNCBhcmUgcmVzZXJ2ZWQgb24gQ05MICovCj4g KwkJcmV0dXJuIDA7Cj4gKwl9Cj4gIAlyZXR1cm4gRERJX0JVRl9UUkFOU19TRUxFQ1QobGV2ZWwp Owo+ICB9Cj4gIAo+IEBAIC0xODUwLDYgKzIwMjEsOSBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kZGlf cHJlX2VuYWJsZV9oZG1pKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAJZWxzZSBp ZiAoSVNfR0VOOV9MUChkZXZfcHJpdikpCj4gIAkJYnh0X2RkaV92c3dpbmdfc2VxdWVuY2UoZGV2 X3ByaXYsIGxldmVsLCBwb3J0LAo+ICAJCQkJCUlOVEVMX09VVFBVVF9IRE1JKTsKPiArCWVsc2Ug aWYgKElTX0NBTk5PTkxBS0UoZGV2X3ByaXYpKQo+ICsJCWNubF9kZGlfdnN3aW5nX3NlcXVlbmNl KGRldl9wcml2LCBsZXZlbCwgcG9ydCwKPiArCQkJCQlJTlRFTF9PVVRQVVRfSERNSSk7Cj4gIAo+ ICAJaW50ZWxfaGRtaS0+c2V0X2luZm9mcmFtZXMoZHJtX2VuY29kZXIsCj4gIAkJCQkgICBoYXNf aGRtaV9zaW5rLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+IGluZGV4IDFhMjdjNzIuLmVjZjlk ZmMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPiBAQCAtMzQ2Miw3ICszNDYyLDcgQEAg c3RhdGljIHVpbnQzMl90IGNodl9zaWduYWxfbGV2ZWxzKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxf ZHApCj4gIAlpZiAoSEFTX0RESShkZXZfcHJpdikpIHsKPiAgCQlzaWduYWxfbGV2ZWxzID0gZGRp X3NpZ25hbF9sZXZlbHMoaW50ZWxfZHApOwo+ICAKPiAtCQlpZiAoSVNfR0VOOV9MUChkZXZfcHJp dikpCj4gKwkJaWYgKElTX0dFTjlfTFAoZGV2X3ByaXYpIHx8IElTX0NBTk5PTkxBS0UoZGV2X3By aXYpKQo+ICAJCQlzaWduYWxfbGV2ZWxzID0gMDsKPiAgCQllbHNlCj4gIAkJCW1hc2sgPSBERElf QlVGX0VNUF9NQVNLOwo+IC0tIAo+IDEuOS4xCj4gCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxp c3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2ludGVsLWdmeAo=