From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Vivi, Rodrigo" Subject: Re: [PATCH 39/67] drm/i915/cnl: Implement voltage swing sequence. Date: Tue, 23 May 2017 19:19:50 +0000 Message-ID: <1495567204.11850.24.camel@rdvivi-vienna> References: <1491506163-14587-1-git-send-email-rodrigo.vivi@intel.com> <1491506163-14587-39-git-send-email-rodrigo.vivi@intel.com> <20170518011333.GG21027@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 02F1D6E327 for ; Tue, 23 May 2017 19:19:51 +0000 (UTC) In-Reply-To: <20170518011333.GG21027@intel.com> Content-Language: en-US Content-ID: <5CF746193A806648A78419C870F75D5A@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Navare, Manasi D" Cc: "intel-gfx@lists.freedesktop.org" List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCAyMDE3LTA1LTE3IGF0IDE4OjEzIC0wNzAwLCBNYW5hc2kgTmF2YXJlIHdyb3RlOg0K PiBPbiBUaHUsIEFwciAwNiwgMjAxNyBhdCAxMjoxNTozNVBNIC0wNzAwLCBSb2RyaWdvIFZpdmkg d3JvdGU6DQo+ID4gVGhpcyBpcyBhbiBpbXBvcnRhbnQgcGFydCBvZiB0aGUgRERJIGluaXRhbGl6 YXRpb24gYXMgd2VsbCBhcw0KPiA+IGZvciBjaGFuZ2luZyB0aGUgdm9sdGFnZSBkdXJpbmcgRGlz cGxheVBvcnQgbGluayB0cmFpbmluZy4NCj4gPiANCj4gPiBUaGlzIG5ldyBzZXF1ZW5jZSBmb3Ig Q2Fubm9ubGFrZSBpcyBtb3JlIGxpa2UgQnJveHRvbiBzdHlsZQ0KPiA+IGJ1dCBzdGlsbCB3aXRo IGRpZmZlcmVudCByZWdpc3RlcnMsIGRpZmZlcmVudCB0YWJsZSBhbmQNCj4gPiBkaWZmZXJlbnQg c3RlcHMuDQo+ID4gDQo+ID4gdjI6IERvIG5vdCB3cml0ZSB0byBEVzRfR1JQIHRvIGF2b2lkIG92 ZXJ3cml0ZSBpbmRpdmlkdWFsIGxvYWRnZW4uDQo+ID4gICAgIEZpeCBQT1JUX0NMX0RXNSBTVVMg Q2xvY2sgQ29uZmlnIHNldC4NCj4gPiB2MzogQXMgcHJldmlvdXMgcGxhdGZvcm1zIHVzZSBvbmx5 IGVEUCB0YWJsZSBpZiBsb3cgdm9sdGFnZSB3YXMNCj4gPiAgICAgcmVxdWVzdGVkLg0KPiA+IHY0 OiBmaXggV2Vycm9yOm1heWJlIHVuaW5pdGlhbGl6ZWQgKFBhdWxvKQ0KPiA+IHY1OiBSZWJhc2Ug b24gdG9wIG9mIGR3Ml9zd2luZ19zZWwgY2hhbmdlcw0KPiA+ICAgICBvbiBwcmV2aW91cyBwYXRj aGVzLg0KPiA+IA0KPiA+IENjOiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXgu aW50ZWwuY29tPg0KPiA+IFNpZ25lZC1vZmYtYnk6IFJvZHJpZ28gVml2aSA8cm9kcmlnby52aXZp QGludGVsLmNvbT4NCj4gPiAtLS0NCj4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcu aCAgfCAgIDEgKw0KPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYyB8IDE3NiAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0NCj4gPiAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHAuYyAgfCAgIDIgKy0NCj4gPiAgMyBmaWxlcyBjaGFuZ2VkLCAxNzcg aW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkNCj4gPiANCj4gPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf cmVnLmgNCj4gPiBpbmRleCBkNGY3NDYwLi41NWZmZWM3IDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgNCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X3JlZy5oDQo+ID4gQEAgLTE2NjMsNiArMTY2Myw3IEBAIGVudW0gc2tsX2Rpc3BfcG93 ZXJfd2VsbHMgew0KPiA+ICANCj4gPiAgI2RlZmluZSBDTkxfUE9SVF9DTDFDTV9EVzUJCV9NTUlP KDB4MTYyMDE0KQ0KPiA+ICAjZGVmaW5lICAgQ0xfUE9XRVJfRE9XTl9FTkFCTEUJCSgxIDw8IDQp DQo+ID4gKyNkZWZpbmUgICBTVVNfQ0xPQ0tfQ09ORklHCQkoMyA8PCAwKQ0KPiA+ICANCj4gPiAg I2RlZmluZSBfUE9SVF9DTDFDTV9EVzlfQQkJMHgxNjIwMjQNCj4gPiAgI2RlZmluZSBfUE9SVF9D TDFDTV9EVzlfQkMJCTB4NkMwMjQNCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZGRpLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYw0KPiA+IGlu ZGV4IDNjMzFhMjIuLmE0ZDcwNjEgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZGRpLmMNCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGku Yw0KPiA+IEBAIC0xNzIwLDYgKzE3MjAsMTczIEBAIHU4IGludGVsX2RkaV9kcF92b2x0YWdlX21h eChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikNCj4gPiAgCQlEUF9UUkFJTl9WT0xUQUdF X1NXSU5HX01BU0s7DQo+ID4gIH0NCj4gPiAgDQo+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY25s X2RkaV9idWZfdHJhbnMgKg0KPiA+ICtjbmxfZ2V0X2J1Zl90cmFuc19oZG1pKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwNCj4gPiArCQkgICAgICAgdTMyIHZvbHRhZ2UsIGludCAq bl9lbnRyaWVzKQ0KPiA+ICt7DQo+ID4gKwlpZiAodm9sdGFnZSA9PSBWT0xUQUdFX0lORk9fMF84 NVYpIHsNCj4gPiArCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShjbmxfZGRpX3RyYW5zbGF0aW9u c19oZG1pXzBfODVWKTsNCj4gPiArCQlyZXR1cm4gY25sX2RkaV90cmFuc2xhdGlvbnNfaGRtaV8w Xzg1VjsNCj4gPiArCX0gZWxzZSBpZiAodm9sdGFnZSA9PSBWT0xUQUdFX0lORk9fMF85NVYpIHsN Cj4gPiArCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShjbmxfZGRpX3RyYW5zbGF0aW9uc19oZG1p XzBfOTVWKTsNCj4gPiArCQlyZXR1cm4gY25sX2RkaV90cmFuc2xhdGlvbnNfaGRtaV8wXzk1VjsN Cj4gPiArCX0gZWxzZSBpZiAodm9sdGFnZSA9PSBWT0xUQUdFX0lORk9fMV8wNVYpIHsNCj4gPiAr CQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShjbmxfZGRpX3RyYW5zbGF0aW9uc19oZG1pXzFfMDVW KTsNCj4gPiArCQlyZXR1cm4gY25sX2RkaV90cmFuc2xhdGlvbnNfaGRtaV8xXzA1VjsNCj4gPiAr CX0NCj4gPiArCXJldHVybiBOVUxMOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgY29uc3Qg c3RydWN0IGNubF9kZGlfYnVmX3RyYW5zICoNCj4gPiArY25sX2dldF9idWZfdHJhbnNfZHAoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LA0KPiA+ICsJCSAgICAgdTMyIHZvbHRhZ2Us IGludCAqbl9lbnRyaWVzKQ0KPiA+ICt7DQo+ID4gKwlpZiAodm9sdGFnZSA9PSBWT0xUQUdFX0lO Rk9fMF84NVYpIHsNCj4gPiArCQkqbl9lbnRyaWVzID0gQVJSQVlfU0laRShjbmxfZGRpX3RyYW5z bGF0aW9uc19kcF8wXzg1Vik7DQo+ID4gKwkJcmV0dXJuIGNubF9kZGlfdHJhbnNsYXRpb25zX2Rw XzBfODVWOw0KPiA+ICsJfSBlbHNlIGlmICh2b2x0YWdlID09IFZPTFRBR0VfSU5GT18wXzk1Vikg ew0KPiA+ICsJCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGNubF9kZGlfdHJhbnNsYXRpb25zX2Rw XzBfOTVWKTsNCj4gPiArCQlyZXR1cm4gY25sX2RkaV90cmFuc2xhdGlvbnNfZHBfMF85NVY7DQo+ ID4gKwl9IGVsc2UgaWYgKHZvbHRhZ2UgPT0gVk9MVEFHRV9JTkZPXzFfMDVWKSB7DQo+ID4gKwkJ Km5fZW50cmllcyA9IEFSUkFZX1NJWkUoY25sX2RkaV90cmFuc2xhdGlvbnNfZHBfMV8wNVYpOw0K PiA+ICsJCXJldHVybiBjbmxfZGRpX3RyYW5zbGF0aW9uc19kcF8xXzA1VjsNCj4gPiArCX0NCj4g PiArCXJldHVybiBOVUxMOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0 IGNubF9kZGlfYnVmX3RyYW5zICoNCj4gPiArY25sX2dldF9idWZfdHJhbnNfZWRwKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwNCj4gPiArCQkgICAgICB1MzIgdm9sdGFnZSwgaW50 ICpuX2VudHJpZXMpDQo+ID4gK3sNCj4gPiArCWlmIChkZXZfcHJpdi0+dmJ0LmVkcC5sb3dfdnN3 aW5nKSB7DQo+ID4gKwkJaWYgKHZvbHRhZ2UgPT0gVk9MVEFHRV9JTkZPXzBfODVWKSB7DQo+ID4g KwkJCSpuX2VudHJpZXMgPSBBUlJBWV9TSVpFKGNubF9kZGlfdHJhbnNsYXRpb25zX2VkcF8wXzg1 Vik7DQo+ID4gKwkJCXJldHVybiBjbmxfZGRpX3RyYW5zbGF0aW9uc19kcF8wXzg1VjsNCj4gPiAr CQl9IGVsc2UgaWYgKHZvbHRhZ2UgPT0gVk9MVEFHRV9JTkZPXzBfOTVWKSB7DQo+ID4gKwkJCSpu X2VudHJpZXMgPSBBUlJBWV9TSVpFKGNubF9kZGlfdHJhbnNsYXRpb25zX2VkcF8wXzk1Vik7DQo+ ID4gKwkJCXJldHVybiBjbmxfZGRpX3RyYW5zbGF0aW9uc19lZHBfMF85NVY7DQo+ID4gKwkJfSBl bHNlIGlmICh2b2x0YWdlID09IFZPTFRBR0VfSU5GT18xXzA1Vikgew0KPiA+ICsJCQkqbl9lbnRy aWVzID0gQVJSQVlfU0laRShjbmxfZGRpX3RyYW5zbGF0aW9uc19lZHBfMV8wNVYpOw0KPiA+ICsJ CQlyZXR1cm4gY25sX2RkaV90cmFuc2xhdGlvbnNfZWRwXzFfMDVWOw0KPiA+ICsJCX0NCj4gPiAr CQlyZXR1cm4gTlVMTDsNCj4gPiArCX0gZWxzZSB7DQo+ID4gKwkJcmV0dXJuIGNubF9nZXRfYnVm X3RyYW5zX2RwKGRldl9wcml2LCB2b2x0YWdlLCBuX2VudHJpZXMpOw0KPiA+ICsJfQ0KPiA+ICt9 DQo+ID4gKw0KPiA+ICtzdGF0aWMgdm9pZCBjbmxfZGRpX3Zzd2luZ19wcm9ncmFtKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwNCj4gPiArCQkJCSAgICB1MzIgbGV2ZWwsIGVudW0g cG9ydCBwb3J0LCBpbnQgdHlwZSkNCj4gPiArew0KPiA+ICsJY29uc3Qgc3RydWN0IGNubF9kZGlf YnVmX3RyYW5zICpkZGlfdHJhbnNsYXRpb25zID0gTlVMTDsNCj4gPiArCXUzMiBuX2VudHJpZXMs IHZhbCwgdm9sdGFnZTsNCj4gPiArCWludCBsbjsNCj4gPiArDQo+ID4gKwkvKg0KPiA+ICsJICog VmFsdWVzIGZvciBlYWNoIHBvcnQgdHlwZSBhcmUgbGlzdGVkIGluDQo+ID4gKwkgKiB2b2x0YWdl IHN3aW5nIHByb2dyYW1taW5nIHRhYmxlcy4NCj4gPiArCSAqIFZjY2lvIHZvbHRhZ2UgZm91bmQg aW4gUE9SVF9DT01QX0RXMy4NCj4gPiArCSAqLw0KPiA+ICsJdm9sdGFnZSA9IEk5MTVfUkVBRChD TkxfUE9SVF9DT01QX0RXMykgJiBWT0xUQUdFX0lORk9fTUFTSzsNCj4gPiArDQo+ID4gKwlpZiAo dHlwZSA9PSBJTlRFTF9PVVRQVVRfSERNSSkgew0KPiA+ICsJCWRkaV90cmFuc2xhdGlvbnMgPSBj bmxfZ2V0X2J1Zl90cmFuc19oZG1pKGRldl9wcml2LA0KPiA+ICsJCQkJCQkJICB2b2x0YWdlLCAm bl9lbnRyaWVzKTsNCj4gPiArCX0gZWxzZSBpZiAodHlwZSA9PSBJTlRFTF9PVVRQVVRfRFApIHsN Cj4gPiArCQlkZGlfdHJhbnNsYXRpb25zID0gY25sX2dldF9idWZfdHJhbnNfZHAoZGV2X3ByaXYs DQo+ID4gKwkJCQkJCQl2b2x0YWdlLCAmbl9lbnRyaWVzKTsNCj4gPiArCX0gZWxzZSBpZiAodHlw ZSA9PSBJTlRFTF9PVVRQVVRfRURQKSB7DQo+ID4gKwkJZGRpX3RyYW5zbGF0aW9ucyA9IGNubF9n ZXRfYnVmX3RyYW5zX2VkcChkZXZfcHJpdiwNCj4gPiArCQkJCQkJCSB2b2x0YWdlLCAmbl9lbnRy aWVzKTsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwlpZiAoZGRpX3RyYW5zbGF0aW9ucyA9PSBOVUxM KSB7DQo+ID4gKwkJTUlTU0lOR19DQVNFKHZvbHRhZ2UpOw0KPiA+ICsJCXJldHVybjsNCj4gPiAr CX0NCj4gPiArDQo+ID4gKwlpZiAobGV2ZWwgPj0gbl9lbnRyaWVzKSB7DQo+ID4gKwkJRFJNX0RF QlVHX0tNUygiRERJIHRyYW5zbGF0aW9uIG5vdCBmb3VuZCBmb3IgbGV2ZWwgJWQuIFVzaW5nICVk IGluc3RlYWQuIiwgbGV2ZWwsIG5fZW50cmllcyAtIDEpOw0KPiA+ICsJCWxldmVsID0gbl9lbnRy aWVzIC0gMTsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwkvKiBTZXQgUE9SVF9UWF9EVzUgU2NhbGlu ZyBNb2RlIFNlbCB0byAwMTBiLiAqLw0KPiA+ICsJdmFsID0gSTkxNV9SRUFEKENOTF9QT1JUX1RY X0RXNV9MTjAocG9ydCkpOw0KPiA+ICsJdmFsIHw9IFNDQUxJTkdfTU9ERV9TRUw7DQo+IA0KPiBN YWtlIHRoZSBjaGFuZ2UgYmFzZWQgb24gbmV3IG1hY3JvIGZvciBTQ0FMSU5HX01PREVfU0VMDQo+ IFNvIGl0IHdpbGwgYmUgdmFsIHw9IFNDQUxJTkdfTU9ERV9TRUwoMHgyKTsNCg0KdGhhbmtzLA0K d2l0aCB0aGF0IEkgaGF2ZSB5b3VyIHJ2LWI/DQoNCj4gDQo+IE1hbmFzaQ0KPiANCj4gPiArCUk5 MTVfV1JJVEUoQ05MX1BPUlRfVFhfRFc1X0dSUChwb3J0KSwgdmFsKTsNCj4gPiArDQo+ID4gKwkv KiBQcm9ncmFtIFBPUlRfVFhfRFcyICovDQo+ID4gKwl2YWwgPSBJOTE1X1JFQUQoQ05MX1BPUlRf VFhfRFcyX0xOMChwb3J0KSk7DQo+ID4gKwl2YWwgfD0gU1dJTkdfU0VMX1VQUEVSKGRkaV90cmFu c2xhdGlvbnNbbGV2ZWxdLmR3Ml9zd2luZ19zZWwpOw0KPiA+ICsJdmFsIHw9IFNXSU5HX1NFTF9M T1dFUihkZGlfdHJhbnNsYXRpb25zW2xldmVsXS5kdzJfc3dpbmdfc2VsKTsNCj4gPiArCS8qIFJj b21wIHNjYWxhciBpcyBmaXhlZCBhcyAweDk4IGZvciBldmVyeSB0YWJsZSBlbnRyeSAqLw0KPiA+ ICsJdmFsIHw9IFJDT01QX1NDQUxBUigweDk4KTsNCj4gPiArCUk5MTVfV1JJVEUoQ05MX1BPUlRf VFhfRFcyX0dSUChwb3J0KSwgdmFsKTsNCj4gPiArDQo+ID4gKyAgICAgICAgLyogUHJvZ3JhbSBQ T1JUX1RYX0RXNCAqLw0KPiA+ICsJLyogV2UgY2Fubm90IHdyaXRlIHRvIEdSUC4gSXQgd291bGQg b3ZlcnJpdGUgaW5kaXZpZHVhbCBsb2FkZ2VuICovDQo+ID4gKwlmb3IgKGxuID0gMDsgbG4gPCA0 OyBsbisrKSB7DQo+ID4gKwkJdmFsID0gSTkxNV9SRUFEKENOTF9QT1JUX1RYX0RXNF9MTihwb3J0 LCBsbikpOw0KPiA+ICsJCXZhbCB8PSBQT1NUX0NVUlNPUl8xKGRkaV90cmFuc2xhdGlvbnNbbGV2 ZWxdLmR3NF9wb3N0X2N1cnNvcl8xKTsNCj4gPiArCQl2YWwgfD0gUE9TVF9DVVJTT1JfMihkZGlf dHJhbnNsYXRpb25zW2xldmVsXS5kdzRfcG9zdF9jdXJzb3JfMik7DQo+ID4gKwkJdmFsIHw9IENV UlNPUl9DT0VGRihkZGlfdHJhbnNsYXRpb25zW2xldmVsXS5kdzRfY3Vyc29yX2NvZWZmKTsNCj4g PiArCQlJOTE1X1dSSVRFKENOTF9QT1JUX1RYX0RXNF9MTihwb3J0LCBsbiksIHZhbCk7DQo+ID4g Kwl9DQo+ID4gKw0KPiA+ICsgICAgICAgIC8qIFByb2dyYW0gUE9SVF9UWF9EVzUgKi8NCj4gPiAr CS8qIEFsbCBEVzUgdmFsdWVzIGFyZSBmaXhlZCBmb3IgZXZlcnkgdGFibGUgZW50cnkgKi8NCj4g PiArCXZhbCA9IEk5MTVfUkVBRChDTkxfUE9SVF9UWF9EVzVfTE4wKHBvcnQpKTsNCj4gPiArCXZh bCB8PSBSVEVSTV9TRUxFQ1QoNik7DQo+ID4gKwl2YWwgfD0gVEFQM19ESVNBQkxFOw0KPiA+ICsJ STkxNV9XUklURShDTkxfUE9SVF9UWF9EVzVfR1JQKHBvcnQpLCB2YWwpOw0KPiA+ICsNCj4gPiAr ICAgICAgICAvKiBQcm9ncmFtIFBPUlRfVFhfRFc3ICovDQo+ID4gKwl2YWwgPSBJOTE1X1JFQUQo Q05MX1BPUlRfVFhfRFc3X0xOMChwb3J0KSk7DQo+ID4gKwl2YWwgfD0gTl9TQ0FMQVIoZGRpX3Ry YW5zbGF0aW9uc1tsZXZlbF0uZHc3X25fc2NhbGFyKTsNCj4gPiArCUk5MTVfV1JJVEUoQ05MX1BP UlRfVFhfRFc3X0dSUChwb3J0KSwgdmFsKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHZv aWQgY25sX2RkaV92c3dpbmdfc2VxdWVuY2Uoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LA0KPiA+ICsJCQkJICAgIHUzMiBsZXZlbCwgZW51bSBwb3J0IHBvcnQsIGludCB0eXBlKQ0K PiA+ICt7DQo+ID4gKwl1MzIgdmFsOw0KPiA+ICsNCj4gPiArCS8qDQo+ID4gKwkgKiAxLiBJZiBw b3J0IHR5cGUgaXMgZURQIG9yIERQLA0KPiA+ICsJICogc2V0IFBPUlRfUENTX0RXMSBjbW5rZWVw ZXJfZW5hYmxlIHRvIDFiLA0KPiA+ICsJICogZWxzZSBjbGVhciB0byAwYi4NCj4gPiArCSAqLw0K PiA+ICsJdmFsID0gSTkxNV9SRUFEKENOTF9QT1JUX1BDU19EVzFfTE4wKHBvcnQpKTsNCj4gPiAr CWlmICh0eXBlID09IElOVEVMX09VVFBVVF9FRFAgfHwgdHlwZSA9PSBJTlRFTF9PVVRQVVRfRFAp DQo+ID4gKwkJdmFsIHw9IENPTU1PTl9LRUVQRVJfRU47DQo+ID4gKwllbHNlDQo+ID4gKwkJdmFs ICY9IH5DT01NT05fS0VFUEVSX0VOOw0KPiA+ICsJSTkxNV9XUklURShDTkxfUE9SVF9QQ1NfRFcx X0dSUChwb3J0KSwgdmFsKTsNCj4gPiArDQo+ID4gKwkvKiAyLiBQcm9ncmFtIGxvYWRnZW4gc2Vs ZWN0ICovDQo+ID4gKwkvKg0KPiA+ICsJICogRklYTUU6IFByb2dyYW0gUE9SVF9UWF9EVzRfTE4g ZGVwZW5kaW5nIG9uIEJpdCByYXRlIGFuZCB1c2VkIGxhbmVzDQo+ID4gKwkgKi8NCj4gPiArDQo+ ID4gKwkvKiAzLiBTZXQgUE9SVF9DTF9EVzUgU1VTIENsb2NrIENvbmZpZyB0byAxMWIgKi8NCj4g PiArCXZhbCA9IEk5MTVfUkVBRChDTkxfUE9SVF9DTDFDTV9EVzUpOw0KPiA+ICsJdmFsIHw9IFNV U19DTE9DS19DT05GSUc7DQo+ID4gKwlJOTE1X1dSSVRFKENOTF9QT1JUX0NMMUNNX0RXNSwgdmFs KTsNCj4gPiArDQo+ID4gKwkvKiA0LiBDbGVhciB0cmFpbmluZyBlbmFibGUgdG8gY2hhbmdlIHN3 aW5nIHZhbHVlcyAqLw0KPiA+ICsJdmFsID0gSTkxNV9SRUFEKENOTF9QT1JUX1RYX0RXNV9MTjAo cG9ydCkpOw0KPiA+ICsJdmFsICY9IH5UWF9UUkFJTklOR19FTjsNCj4gPiArCUk5MTVfV1JJVEUo Q05MX1BPUlRfVFhfRFc1X0dSUChwb3J0KSwgdmFsKTsNCj4gPiArDQo+ID4gKwkvKiA1LiBQcm9n cmFtIHN3aW5nIGFuZCBkZS1lbXBoYXNpcyAqLw0KPiA+ICsJY25sX2RkaV92c3dpbmdfcHJvZ3Jh bShkZXZfcHJpdiwgbGV2ZWwsIHBvcnQsIHR5cGUpOw0KPiA+ICsNCj4gPiArCS8qIDYuIFNldCB0 cmFpbmluZyBlbmFibGUgdG8gdHJpZ2dlciB1cGRhdGUgKi8NCj4gPiArCXZhbCA9IEk5MTVfUkVB RChDTkxfUE9SVF9UWF9EVzVfTE4wKHBvcnQpKTsNCj4gPiArCXZhbCB8PSBUWF9UUkFJTklOR19F TjsNCj4gPiArCUk5MTVfV1JJVEUoQ05MX1BPUlRfVFhfRFc1X0dSUChwb3J0KSwgdmFsKTsNCj4g PiArfQ0KPiA+ICsNCj4gPiAgc3RhdGljIHVpbnQzMl90IHRyYW5zbGF0ZV9zaWduYWxfbGV2ZWwo aW50IHNpZ25hbF9sZXZlbHMpDQo+ID4gIHsNCj4gPiAgCWludCBpOw0KPiA+IEBAIC0xNzUyLDcg KzE5MTksMTEgQEAgdWludDMyX3QgZGRpX3NpZ25hbF9sZXZlbHMoc3RydWN0IGludGVsX2RwICpp bnRlbF9kcCkNCj4gPiAgCQlza2xfZGRpX3NldF9pYm9vc3QoZW5jb2RlciwgbGV2ZWwpOw0KPiA+ ICAJZWxzZSBpZiAoSVNfR0VOOV9MUChkZXZfcHJpdikpDQo+ID4gIAkJYnh0X2RkaV92c3dpbmdf c2VxdWVuY2UoZGV2X3ByaXYsIGxldmVsLCBwb3J0LCBlbmNvZGVyLT50eXBlKTsNCj4gPiAtDQo+ ID4gKwllbHNlIGlmIChJU19DQU5OT05MQUtFKGRldl9wcml2KSkgew0KPiA+ICsJCWNubF9kZGlf dnN3aW5nX3NlcXVlbmNlKGRldl9wcml2LCBsZXZlbCwgcG9ydCwgZW5jb2Rlci0+dHlwZSk7DQo+ ID4gKwkJLyogRERJX0JVRl9DVEwgYml0cyAyNzoyNCBhcmUgcmVzZXJ2ZWQgb24gQ05MICovDQo+ ID4gKwkJcmV0dXJuIDA7DQo+ID4gKwl9DQo+ID4gIAlyZXR1cm4gRERJX0JVRl9UUkFOU19TRUxF Q1QobGV2ZWwpOw0KPiA+ICB9DQo+ID4gIA0KPiA+IEBAIC0xODUwLDYgKzIwMjEsOSBAQCBzdGF0 aWMgdm9pZCBpbnRlbF9kZGlfcHJlX2VuYWJsZV9oZG1pKHN0cnVjdCBpbnRlbF9lbmNvZGVyICpl bmNvZGVyLA0KPiA+ICAJZWxzZSBpZiAoSVNfR0VOOV9MUChkZXZfcHJpdikpDQo+ID4gIAkJYnh0 X2RkaV92c3dpbmdfc2VxdWVuY2UoZGV2X3ByaXYsIGxldmVsLCBwb3J0LA0KPiA+ICAJCQkJCUlO VEVMX09VVFBVVF9IRE1JKTsNCj4gPiArCWVsc2UgaWYgKElTX0NBTk5PTkxBS0UoZGV2X3ByaXYp KQ0KPiA+ICsJCWNubF9kZGlfdnN3aW5nX3NlcXVlbmNlKGRldl9wcml2LCBsZXZlbCwgcG9ydCwN Cj4gPiArCQkJCQlJTlRFTF9PVVRQVVRfSERNSSk7DQo+ID4gIA0KPiA+ICAJaW50ZWxfaGRtaS0+ c2V0X2luZm9mcmFtZXMoZHJtX2VuY29kZXIsDQo+ID4gIAkJCQkgICBoYXNfaGRtaV9zaW5rLA0K PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYw0KPiA+IGluZGV4IGRhMTExY2IuLmI3YWRmMGEgMTAw NjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYw0KPiA+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMNCj4gPiBAQCAtMzQ3MSw3ICszNDcxLDcg QEAgc3RhdGljIHVpbnQzMl90IGNodl9zaWduYWxfbGV2ZWxzKHN0cnVjdCBpbnRlbF9kcCAqaW50 ZWxfZHApDQo+ID4gIAlpZiAoSEFTX0RESShkZXZfcHJpdikpIHsNCj4gPiAgCQlzaWduYWxfbGV2 ZWxzID0gZGRpX3NpZ25hbF9sZXZlbHMoaW50ZWxfZHApOw0KPiA+ICANCj4gPiAtCQlpZiAoSVNf R0VOOV9MUChkZXZfcHJpdikpDQo+ID4gKwkJaWYgKElTX0dFTjlfTFAoZGV2X3ByaXYpIHx8IElT X0NBTk5PTkxBS0UoZGV2X3ByaXYpKQ0KPiA+ICAJCQlzaWduYWxfbGV2ZWxzID0gMDsNCj4gPiAg CQllbHNlDQo+ID4gIAkJCW1hc2sgPSBERElfQlVGX0VNUF9NQVNLOw0KPiA+IC0tIA0KPiA+IDEu OS4xDQo+ID4gDQo+ID4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18NCj4gPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0DQo+ID4gSW50ZWwtZ2Z4QGxpc3RzLmZy ZWVkZXNrdG9wLm9yZw0KPiA+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vaW50ZWwtZ2Z4DQoNCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2ludGVsLWdmeAo=