From mboxrd@z Thu Jan 1 00:00:00 1970 From: Manasi Navare Subject: Re: [PATCH 39/67] drm/i915/cnl: Implement voltage swing sequence. Date: Wed, 17 May 2017 18:13:33 -0700 Message-ID: <20170518011333.GG21027@intel.com> References: <1491506163-14587-1-git-send-email-rodrigo.vivi@intel.com> <1491506163-14587-39-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 46C8389B55 for ; Thu, 18 May 2017 01:08:32 +0000 (UTC) Content-Disposition: inline In-Reply-To: <1491506163-14587-39-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 T24gVGh1LCBBcHIgMDYsIDIwMTcgYXQgMTI6MTU6MzVQTSAtMDcwMCwgUm9kcmlnbyBWaXZpIHdy b3RlOgo+IFRoaXMgaXMgYW4gaW1wb3J0YW50IHBhcnQgb2YgdGhlIERESSBpbml0YWxpemF0aW9u IGFzIHdlbGwgYXMKPiBmb3IgY2hhbmdpbmcgdGhlIHZvbHRhZ2UgZHVyaW5nIERpc3BsYXlQb3J0 IGxpbmsgdHJhaW5pbmcuCj4gCj4gVGhpcyBuZXcgc2VxdWVuY2UgZm9yIENhbm5vbmxha2UgaXMg bW9yZSBsaWtlIEJyb3h0b24gc3R5bGUKPiBidXQgc3RpbGwgd2l0aCBkaWZmZXJlbnQgcmVnaXN0 ZXJzLCBkaWZmZXJlbnQgdGFibGUgYW5kCj4gZGlmZmVyZW50IHN0ZXBzLgo+IAo+IHYyOiBEbyBu b3Qgd3JpdGUgdG8gRFc0X0dSUCB0byBhdm9pZCBvdmVyd3JpdGUgaW5kaXZpZHVhbCBsb2FkZ2Vu Lgo+ICAgICBGaXggUE9SVF9DTF9EVzUgU1VTIENsb2NrIENvbmZpZyBzZXQuCj4gdjM6IEFzIHBy ZXZpb3VzIHBsYXRmb3JtcyB1c2Ugb25seSBlRFAgdGFibGUgaWYgbG93IHZvbHRhZ2Ugd2FzCj4g ICAgIHJlcXVlc3RlZC4KPiB2NDogZml4IFdlcnJvcjptYXliZSB1bmluaXRpYWxpemVkIChQYXVs bykKPiB2NTogUmViYXNlIG9uIHRvcCBvZiBkdzJfc3dpbmdfc2VsIGNoYW5nZXMKPiAgICAgb24g cHJldmlvdXMgcGF0Y2hlcy4KPiAKPiBDYzogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxh QGxpbnV4LmludGVsLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBSb2RyaWdvIFZpdmkgPHJvZHJpZ28u dml2aUBpbnRlbC5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgg IHwgICAxICsKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMgfCAxNzYgKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2RwLmMgIHwgICAyICstCj4gIDMgZmlsZXMgY2hhbmdlZCwgMTc3IGluc2VydGlvbnMo KyksIDIgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfcmVnLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gaW5kZXggZDRm NzQ2MC4uNTVmZmVjNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Jl Zy5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+IEBAIC0xNjYzLDYg KzE2NjMsNyBAQCBlbnVtIHNrbF9kaXNwX3Bvd2VyX3dlbGxzIHsKPiAgCj4gICNkZWZpbmUgQ05M X1BPUlRfQ0wxQ01fRFc1CQlfTU1JTygweDE2MjAxNCkKPiAgI2RlZmluZSAgIENMX1BPV0VSX0RP V05fRU5BQkxFCQkoMSA8PCA0KQo+ICsjZGVmaW5lICAgU1VTX0NMT0NLX0NPTkZJRwkJKDMgPDwg MCkKPiAgCj4gICNkZWZpbmUgX1BPUlRfQ0wxQ01fRFc5X0EJCTB4MTYyMDI0Cj4gICNkZWZpbmUg X1BPUlRfQ0wxQ01fRFc5X0JDCQkweDZDMDI0Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2RkaS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMKPiBp bmRleCAzYzMxYTIyLi5hNGQ3MDYxIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2RkaS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMKPiBA QCAtMTcyMCw2ICsxNzIwLDE3MyBAQCB1OCBpbnRlbF9kZGlfZHBfdm9sdGFnZV9tYXgoc3RydWN0 IGludGVsX2VuY29kZXIgKmVuY29kZXIpCj4gIAkJRFBfVFJBSU5fVk9MVEFHRV9TV0lOR19NQVNL Owo+ICB9Cj4gIAo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGNubF9kZGlfYnVmX3RyYW5zICoKPiAr Y25sX2dldF9idWZfdHJhbnNfaGRtaShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs Cj4gKwkJICAgICAgIHUzMiB2b2x0YWdlLCBpbnQgKm5fZW50cmllcykKPiArewo+ICsJaWYgKHZv bHRhZ2UgPT0gVk9MVEFHRV9JTkZPXzBfODVWKSB7Cj4gKwkJKm5fZW50cmllcyA9IEFSUkFZX1NJ WkUoY25sX2RkaV90cmFuc2xhdGlvbnNfaGRtaV8wXzg1Vik7Cj4gKwkJcmV0dXJuIGNubF9kZGlf dHJhbnNsYXRpb25zX2hkbWlfMF84NVY7Cj4gKwl9IGVsc2UgaWYgKHZvbHRhZ2UgPT0gVk9MVEFH RV9JTkZPXzBfOTVWKSB7Cj4gKwkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoY25sX2RkaV90cmFu c2xhdGlvbnNfaGRtaV8wXzk1Vik7Cj4gKwkJcmV0dXJuIGNubF9kZGlfdHJhbnNsYXRpb25zX2hk bWlfMF85NVY7Cj4gKwl9IGVsc2UgaWYgKHZvbHRhZ2UgPT0gVk9MVEFHRV9JTkZPXzFfMDVWKSB7 Cj4gKwkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoY25sX2RkaV90cmFuc2xhdGlvbnNfaGRtaV8x XzA1Vik7Cj4gKwkJcmV0dXJuIGNubF9kZGlfdHJhbnNsYXRpb25zX2hkbWlfMV8wNVY7Cj4gKwl9 Cj4gKwlyZXR1cm4gTlVMTDsKPiArfQo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBjbmxfZGRp X2J1Zl90cmFucyAqCj4gK2NubF9nZXRfYnVmX3RyYW5zX2RwKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwKPiArCQkgICAgIHUzMiB2b2x0YWdlLCBpbnQgKm5fZW50cmllcykKPiAr ewo+ICsJaWYgKHZvbHRhZ2UgPT0gVk9MVEFHRV9JTkZPXzBfODVWKSB7Cj4gKwkJKm5fZW50cmll cyA9IEFSUkFZX1NJWkUoY25sX2RkaV90cmFuc2xhdGlvbnNfZHBfMF84NVYpOwo+ICsJCXJldHVy biBjbmxfZGRpX3RyYW5zbGF0aW9uc19kcF8wXzg1VjsKPiArCX0gZWxzZSBpZiAodm9sdGFnZSA9 PSBWT0xUQUdFX0lORk9fMF85NVYpIHsKPiArCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShjbmxf ZGRpX3RyYW5zbGF0aW9uc19kcF8wXzk1Vik7Cj4gKwkJcmV0dXJuIGNubF9kZGlfdHJhbnNsYXRp b25zX2RwXzBfOTVWOwo+ICsJfSBlbHNlIGlmICh2b2x0YWdlID09IFZPTFRBR0VfSU5GT18xXzA1 Vikgewo+ICsJCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGNubF9kZGlfdHJhbnNsYXRpb25zX2Rw XzFfMDVWKTsKPiArCQlyZXR1cm4gY25sX2RkaV90cmFuc2xhdGlvbnNfZHBfMV8wNVY7Cj4gKwl9 Cj4gKwlyZXR1cm4gTlVMTDsKPiArfQo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBjbmxfZGRp X2J1Zl90cmFucyAqCj4gK2NubF9nZXRfYnVmX3RyYW5zX2VkcChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCj4gKwkJICAgICAgdTMyIHZvbHRhZ2UsIGludCAqbl9lbnRyaWVzKQo+ ICt7Cj4gKwlpZiAoZGV2X3ByaXYtPnZidC5lZHAubG93X3Zzd2luZykgewo+ICsJCWlmICh2b2x0 YWdlID09IFZPTFRBR0VfSU5GT18wXzg1Vikgewo+ICsJCQkqbl9lbnRyaWVzID0gQVJSQVlfU0la RShjbmxfZGRpX3RyYW5zbGF0aW9uc19lZHBfMF84NVYpOwo+ICsJCQlyZXR1cm4gY25sX2RkaV90 cmFuc2xhdGlvbnNfZHBfMF84NVY7Cj4gKwkJfSBlbHNlIGlmICh2b2x0YWdlID09IFZPTFRBR0Vf SU5GT18wXzk1Vikgewo+ICsJCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShjbmxfZGRpX3RyYW5z bGF0aW9uc19lZHBfMF85NVYpOwo+ICsJCQlyZXR1cm4gY25sX2RkaV90cmFuc2xhdGlvbnNfZWRw XzBfOTVWOwo+ICsJCX0gZWxzZSBpZiAodm9sdGFnZSA9PSBWT0xUQUdFX0lORk9fMV8wNVYpIHsK PiArCQkJKm5fZW50cmllcyA9IEFSUkFZX1NJWkUoY25sX2RkaV90cmFuc2xhdGlvbnNfZWRwXzFf MDVWKTsKPiArCQkJcmV0dXJuIGNubF9kZGlfdHJhbnNsYXRpb25zX2VkcF8xXzA1VjsKPiArCQl9 Cj4gKwkJcmV0dXJuIE5VTEw7Cj4gKwl9IGVsc2Ugewo+ICsJCXJldHVybiBjbmxfZ2V0X2J1Zl90 cmFuc19kcChkZXZfcHJpdiwgdm9sdGFnZSwgbl9lbnRyaWVzKTsKPiArCX0KPiArfQo+ICsKPiAr c3RhdGljIHZvaWQgY25sX2RkaV92c3dpbmdfcHJvZ3JhbShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsCj4gKwkJCQkgICAgdTMyIGxldmVsLCBlbnVtIHBvcnQgcG9ydCwgaW50IHR5 cGUpCj4gK3sKPiArCWNvbnN0IHN0cnVjdCBjbmxfZGRpX2J1Zl90cmFucyAqZGRpX3RyYW5zbGF0 aW9ucyA9IE5VTEw7Cj4gKwl1MzIgbl9lbnRyaWVzLCB2YWwsIHZvbHRhZ2U7Cj4gKwlpbnQgbG47 Cj4gKwo+ICsJLyoKPiArCSAqIFZhbHVlcyBmb3IgZWFjaCBwb3J0IHR5cGUgYXJlIGxpc3RlZCBp bgo+ICsJICogdm9sdGFnZSBzd2luZyBwcm9ncmFtbWluZyB0YWJsZXMuCj4gKwkgKiBWY2NpbyB2 b2x0YWdlIGZvdW5kIGluIFBPUlRfQ09NUF9EVzMuCj4gKwkgKi8KPiArCXZvbHRhZ2UgPSBJOTE1 X1JFQUQoQ05MX1BPUlRfQ09NUF9EVzMpICYgVk9MVEFHRV9JTkZPX01BU0s7Cj4gKwo+ICsJaWYg KHR5cGUgPT0gSU5URUxfT1VUUFVUX0hETUkpIHsKPiArCQlkZGlfdHJhbnNsYXRpb25zID0gY25s X2dldF9idWZfdHJhbnNfaGRtaShkZXZfcHJpdiwKPiArCQkJCQkJCSAgdm9sdGFnZSwgJm5fZW50 cmllcyk7Cj4gKwl9IGVsc2UgaWYgKHR5cGUgPT0gSU5URUxfT1VUUFVUX0RQKSB7Cj4gKwkJZGRp X3RyYW5zbGF0aW9ucyA9IGNubF9nZXRfYnVmX3RyYW5zX2RwKGRldl9wcml2LAo+ICsJCQkJCQkJ dm9sdGFnZSwgJm5fZW50cmllcyk7Cj4gKwl9IGVsc2UgaWYgKHR5cGUgPT0gSU5URUxfT1VUUFVU X0VEUCkgewo+ICsJCWRkaV90cmFuc2xhdGlvbnMgPSBjbmxfZ2V0X2J1Zl90cmFuc19lZHAoZGV2 X3ByaXYsCj4gKwkJCQkJCQkgdm9sdGFnZSwgJm5fZW50cmllcyk7Cj4gKwl9Cj4gKwo+ICsJaWYg KGRkaV90cmFuc2xhdGlvbnMgPT0gTlVMTCkgewo+ICsJCU1JU1NJTkdfQ0FTRSh2b2x0YWdlKTsK PiArCQlyZXR1cm47Cj4gKwl9Cj4gKwo+ICsJaWYgKGxldmVsID49IG5fZW50cmllcykgewo+ICsJ CURSTV9ERUJVR19LTVMoIkRESSB0cmFuc2xhdGlvbiBub3QgZm91bmQgZm9yIGxldmVsICVkLiBV c2luZyAlZCBpbnN0ZWFkLiIsIGxldmVsLCBuX2VudHJpZXMgLSAxKTsKPiArCQlsZXZlbCA9IG5f ZW50cmllcyAtIDE7Cj4gKwl9Cj4gKwo+ICsJLyogU2V0IFBPUlRfVFhfRFc1IFNjYWxpbmcgTW9k ZSBTZWwgdG8gMDEwYi4gKi8KPiArCXZhbCA9IEk5MTVfUkVBRChDTkxfUE9SVF9UWF9EVzVfTE4w KHBvcnQpKTsKPiArCXZhbCB8PSBTQ0FMSU5HX01PREVfU0VMOwoKTWFrZSB0aGUgY2hhbmdlIGJh c2VkIG9uIG5ldyBtYWNybyBmb3IgU0NBTElOR19NT0RFX1NFTApTbyBpdCB3aWxsIGJlIHZhbCB8 PSBTQ0FMSU5HX01PREVfU0VMKDB4Mik7CgpNYW5hc2kKCj4gKwlJOTE1X1dSSVRFKENOTF9QT1JU X1RYX0RXNV9HUlAocG9ydCksIHZhbCk7Cj4gKwo+ICsJLyogUHJvZ3JhbSBQT1JUX1RYX0RXMiAq Lwo+ICsJdmFsID0gSTkxNV9SRUFEKENOTF9QT1JUX1RYX0RXMl9MTjAocG9ydCkpOwo+ICsJdmFs IHw9IFNXSU5HX1NFTF9VUFBFUihkZGlfdHJhbnNsYXRpb25zW2xldmVsXS5kdzJfc3dpbmdfc2Vs KTsKPiArCXZhbCB8PSBTV0lOR19TRUxfTE9XRVIoZGRpX3RyYW5zbGF0aW9uc1tsZXZlbF0uZHcy X3N3aW5nX3NlbCk7Cj4gKwkvKiBSY29tcCBzY2FsYXIgaXMgZml4ZWQgYXMgMHg5OCBmb3IgZXZl cnkgdGFibGUgZW50cnkgKi8KPiArCXZhbCB8PSBSQ09NUF9TQ0FMQVIoMHg5OCk7Cj4gKwlJOTE1 X1dSSVRFKENOTF9QT1JUX1RYX0RXMl9HUlAocG9ydCksIHZhbCk7Cj4gKwo+ICsgICAgICAgIC8q IFByb2dyYW0gUE9SVF9UWF9EVzQgKi8KPiArCS8qIFdlIGNhbm5vdCB3cml0ZSB0byBHUlAuIEl0 IHdvdWxkIG92ZXJyaXRlIGluZGl2aWR1YWwgbG9hZGdlbiAqLwo+ICsJZm9yIChsbiA9IDA7IGxu IDwgNDsgbG4rKykgewo+ICsJCXZhbCA9IEk5MTVfUkVBRChDTkxfUE9SVF9UWF9EVzRfTE4ocG9y dCwgbG4pKTsKPiArCQl2YWwgfD0gUE9TVF9DVVJTT1JfMShkZGlfdHJhbnNsYXRpb25zW2xldmVs XS5kdzRfcG9zdF9jdXJzb3JfMSk7Cj4gKwkJdmFsIHw9IFBPU1RfQ1VSU09SXzIoZGRpX3RyYW5z bGF0aW9uc1tsZXZlbF0uZHc0X3Bvc3RfY3Vyc29yXzIpOwo+ICsJCXZhbCB8PSBDVVJTT1JfQ09F RkYoZGRpX3RyYW5zbGF0aW9uc1tsZXZlbF0uZHc0X2N1cnNvcl9jb2VmZik7Cj4gKwkJSTkxNV9X UklURShDTkxfUE9SVF9UWF9EVzRfTE4ocG9ydCwgbG4pLCB2YWwpOwo+ICsJfQo+ICsKPiArICAg ICAgICAvKiBQcm9ncmFtIFBPUlRfVFhfRFc1ICovCj4gKwkvKiBBbGwgRFc1IHZhbHVlcyBhcmUg Zml4ZWQgZm9yIGV2ZXJ5IHRhYmxlIGVudHJ5ICovCj4gKwl2YWwgPSBJOTE1X1JFQUQoQ05MX1BP UlRfVFhfRFc1X0xOMChwb3J0KSk7Cj4gKwl2YWwgfD0gUlRFUk1fU0VMRUNUKDYpOwo+ICsJdmFs IHw9IFRBUDNfRElTQUJMRTsKPiArCUk5MTVfV1JJVEUoQ05MX1BPUlRfVFhfRFc1X0dSUChwb3J0 KSwgdmFsKTsKPiArCj4gKyAgICAgICAgLyogUHJvZ3JhbSBQT1JUX1RYX0RXNyAqLwo+ICsJdmFs ID0gSTkxNV9SRUFEKENOTF9QT1JUX1RYX0RXN19MTjAocG9ydCkpOwo+ICsJdmFsIHw9IE5fU0NB TEFSKGRkaV90cmFuc2xhdGlvbnNbbGV2ZWxdLmR3N19uX3NjYWxhcik7Cj4gKwlJOTE1X1dSSVRF KENOTF9QT1JUX1RYX0RXN19HUlAocG9ydCksIHZhbCk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lk IGNubF9kZGlfdnN3aW5nX3NlcXVlbmNlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKPiArCQkJCSAgICB1MzIgbGV2ZWwsIGVudW0gcG9ydCBwb3J0LCBpbnQgdHlwZSkKPiArewo+ ICsJdTMyIHZhbDsKPiArCj4gKwkvKgo+ICsJICogMS4gSWYgcG9ydCB0eXBlIGlzIGVEUCBvciBE UCwKPiArCSAqIHNldCBQT1JUX1BDU19EVzEgY21ua2VlcGVyX2VuYWJsZSB0byAxYiwKPiArCSAq IGVsc2UgY2xlYXIgdG8gMGIuCj4gKwkgKi8KPiArCXZhbCA9IEk5MTVfUkVBRChDTkxfUE9SVF9Q Q1NfRFcxX0xOMChwb3J0KSk7Cj4gKwlpZiAodHlwZSA9PSBJTlRFTF9PVVRQVVRfRURQIHx8IHR5 cGUgPT0gSU5URUxfT1VUUFVUX0RQKQo+ICsJCXZhbCB8PSBDT01NT05fS0VFUEVSX0VOOwo+ICsJ ZWxzZQo+ICsJCXZhbCAmPSB+Q09NTU9OX0tFRVBFUl9FTjsKPiArCUk5MTVfV1JJVEUoQ05MX1BP UlRfUENTX0RXMV9HUlAocG9ydCksIHZhbCk7Cj4gKwo+ICsJLyogMi4gUHJvZ3JhbSBsb2FkZ2Vu IHNlbGVjdCAqLwo+ICsJLyoKPiArCSAqIEZJWE1FOiBQcm9ncmFtIFBPUlRfVFhfRFc0X0xOIGRl cGVuZGluZyBvbiBCaXQgcmF0ZSBhbmQgdXNlZCBsYW5lcwo+ICsJICovCj4gKwo+ICsJLyogMy4g U2V0IFBPUlRfQ0xfRFc1IFNVUyBDbG9jayBDb25maWcgdG8gMTFiICovCj4gKwl2YWwgPSBJOTE1 X1JFQUQoQ05MX1BPUlRfQ0wxQ01fRFc1KTsKPiArCXZhbCB8PSBTVVNfQ0xPQ0tfQ09ORklHOwo+ ICsJSTkxNV9XUklURShDTkxfUE9SVF9DTDFDTV9EVzUsIHZhbCk7Cj4gKwo+ICsJLyogNC4gQ2xl YXIgdHJhaW5pbmcgZW5hYmxlIHRvIGNoYW5nZSBzd2luZyB2YWx1ZXMgKi8KPiArCXZhbCA9IEk5 MTVfUkVBRChDTkxfUE9SVF9UWF9EVzVfTE4wKHBvcnQpKTsKPiArCXZhbCAmPSB+VFhfVFJBSU5J TkdfRU47Cj4gKwlJOTE1X1dSSVRFKENOTF9QT1JUX1RYX0RXNV9HUlAocG9ydCksIHZhbCk7Cj4g Kwo+ICsJLyogNS4gUHJvZ3JhbSBzd2luZyBhbmQgZGUtZW1waGFzaXMgKi8KPiArCWNubF9kZGlf dnN3aW5nX3Byb2dyYW0oZGV2X3ByaXYsIGxldmVsLCBwb3J0LCB0eXBlKTsKPiArCj4gKwkvKiA2 LiBTZXQgdHJhaW5pbmcgZW5hYmxlIHRvIHRyaWdnZXIgdXBkYXRlICovCj4gKwl2YWwgPSBJOTE1 X1JFQUQoQ05MX1BPUlRfVFhfRFc1X0xOMChwb3J0KSk7Cj4gKwl2YWwgfD0gVFhfVFJBSU5JTkdf RU47Cj4gKwlJOTE1X1dSSVRFKENOTF9QT1JUX1RYX0RXNV9HUlAocG9ydCksIHZhbCk7Cj4gK30K PiArCj4gIHN0YXRpYyB1aW50MzJfdCB0cmFuc2xhdGVfc2lnbmFsX2xldmVsKGludCBzaWduYWxf bGV2ZWxzKQo+ICB7Cj4gIAlpbnQgaTsKPiBAQCAtMTc1Miw3ICsxOTE5LDExIEBAIHVpbnQzMl90 IGRkaV9zaWduYWxfbGV2ZWxzKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gIAkJc2tsX2Rk aV9zZXRfaWJvb3N0KGVuY29kZXIsIGxldmVsKTsKPiAgCWVsc2UgaWYgKElTX0dFTjlfTFAoZGV2 X3ByaXYpKQo+ICAJCWJ4dF9kZGlfdnN3aW5nX3NlcXVlbmNlKGRldl9wcml2LCBsZXZlbCwgcG9y dCwgZW5jb2Rlci0+dHlwZSk7Cj4gLQo+ICsJZWxzZSBpZiAoSVNfQ0FOTk9OTEFLRShkZXZfcHJp dikpIHsKPiArCQljbmxfZGRpX3Zzd2luZ19zZXF1ZW5jZShkZXZfcHJpdiwgbGV2ZWwsIHBvcnQs IGVuY29kZXItPnR5cGUpOwo+ICsJCS8qIERESV9CVUZfQ1RMIGJpdHMgMjc6MjQgYXJlIHJlc2Vy dmVkIG9uIENOTCAqLwo+ICsJCXJldHVybiAwOwo+ICsJfQo+ICAJcmV0dXJuIERESV9CVUZfVFJB TlNfU0VMRUNUKGxldmVsKTsKPiAgfQo+ICAKPiBAQCAtMTg1MCw2ICsyMDIxLDkgQEAgc3RhdGlj IHZvaWQgaW50ZWxfZGRpX3ByZV9lbmFibGVfaGRtaShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5j b2RlciwKPiAgCWVsc2UgaWYgKElTX0dFTjlfTFAoZGV2X3ByaXYpKQo+ICAJCWJ4dF9kZGlfdnN3 aW5nX3NlcXVlbmNlKGRldl9wcml2LCBsZXZlbCwgcG9ydCwKPiAgCQkJCQlJTlRFTF9PVVRQVVRf SERNSSk7Cj4gKwllbHNlIGlmIChJU19DQU5OT05MQUtFKGRldl9wcml2KSkKPiArCQljbmxfZGRp X3Zzd2luZ19zZXF1ZW5jZShkZXZfcHJpdiwgbGV2ZWwsIHBvcnQsCj4gKwkJCQkJSU5URUxfT1VU UFVUX0hETUkpOwo+ICAKPiAgCWludGVsX2hkbWktPnNldF9pbmZvZnJhbWVzKGRybV9lbmNvZGVy LAo+ICAJCQkJICAgaGFzX2hkbWlfc2luaywKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHAuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPiBpbmRl eCBkYTExMWNiLi5iN2FkZjBhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2RwLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gQEAgLTM0 NzEsNyArMzQ3MSw3IEBAIHN0YXRpYyB1aW50MzJfdCBjaHZfc2lnbmFsX2xldmVscyhzdHJ1Y3Qg aW50ZWxfZHAgKmludGVsX2RwKQo+ICAJaWYgKEhBU19EREkoZGV2X3ByaXYpKSB7Cj4gIAkJc2ln bmFsX2xldmVscyA9IGRkaV9zaWduYWxfbGV2ZWxzKGludGVsX2RwKTsKPiAgCj4gLQkJaWYgKElT X0dFTjlfTFAoZGV2X3ByaXYpKQo+ICsJCWlmIChJU19HRU45X0xQKGRldl9wcml2KSB8fCBJU19D QU5OT05MQUtFKGRldl9wcml2KSkKPiAgCQkJc2lnbmFsX2xldmVscyA9IDA7Cj4gIAkJZWxzZQo+ ICAJCQltYXNrID0gRERJX0JVRl9FTVBfTUFTSzsKPiAtLSAKPiAxLjkuMQo+IAo+IF9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gSW50ZWwtZ2Z4IG1haWxp bmcgbGlzdAo+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeApfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0 CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK