From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 2/3] drm/i915/dsi: Move vlv/icl_dphy_param_init call out of intel_dsi_vbt_init (v2) Date: Wed, 5 Jun 2019 21:37:28 +0300 Message-ID: <20190605183728.GS5942@intel.com> References: <20190605181735.7020-1-hdegoede@redhat.com> <20190605181735.7020-2-hdegoede@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20190605181735.7020-2-hdegoede@redhat.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Hans de Goede Cc: intel-gfx , dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gV2VkLCBKdW4gMDUsIDIwMTkgYXQgMDg6MTc6MzRQTSArMDIwMCwgSGFucyBkZSBHb2VkZSB3 cm90ZToKPiBUaGUgdmx2L2ljbF9kcGh5X3BhcmFtX2luaXQgY2FsbHMgZG8gdmFyaW91cyBjYWxj dWxhdGlvbnMgdG8gc2V0IGRwaHkKPiBwYXJhbWV0ZXJzIGJhc2VkIG9uIHRoZSBwY2xrLgo+IAo+ IE1vdmUgdGhlIGNhbGxpbmcgb2Ygdmx2L2ljbF9kcGh5X3BhcmFtX2luaXQgdG8gdmx2X2RzaV9p bml0IHRvIGdpdmUKPiB2bHZfZHNpX2luaXQgYSBjaGFuY2UgdG8gdHdlYWsgdGhlIHBjbGsgYmVm b3JlIHRoZXNlIGNhbGN1bGF0aW9ucyBhcmUgZG9uZS4KPiAKPiBDaGFuZ2VzIGluIHYyOgo+IC1B bHNvIG1vdmVzIHRoZSBpY2wgYW5kIHZsdiBzcGVjaWZpYyBkcGh5X3BhcmFtX2luaXQgZnVuY3Rp b25zIGZyb20gdGhlCj4gIGdlbmVyaWMgaW50ZWxfZHNpX3ZidC5jIGZpbGUgaW50byB0aGUgaWNs XyBhbmQgdmx2X2RzaS5jIHNwZWNpZmljIGZpbGVzLgo+IAo+IE5vdGUgaWNsX2RwaHlfcGFyYW1f aW5pdCgpIGFuZCB2bHZfZHBoeV9wYXJhbV9pbml0KCkgYXJlIG9ubHkgbW92ZWQsCj4gb3RoZXJ3 aXNlIHRoZXkgYXJlIGNvbXBsZXRlbHkgdW5jaGFuZ2VkLgo+IAo+IFNpZ25lZC1vZmYtYnk6IEhh bnMgZGUgR29lZGUgPGhkZWdvZWRlQHJlZGhhdC5jb20+CgpSZXZpZXdlZC1ieTogVmlsbGUgU3ly asOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KCj4gLS0tCj4gIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ljbF9kc2kuYyAgICAgICB8IDEwOCArKysrKysrKysrCj4gIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2RzaS5oICAgICB8ICAgMSArCj4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2RzaV92YnQuYyB8IDI4MiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvdmx2X2RzaS5jICAgICAgIHwgMTcwICsrKysrKysrKysrKysr KysKPiAgNCBmaWxlcyBjaGFuZ2VkLCAyODAgaW5zZXJ0aW9ucygrKSwgMjgxIGRlbGV0aW9ucygt KQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pY2xfZHNpLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pY2xfZHNpLmMKPiBpbmRleCA5ZDk2MmVhMWU2MzUuLjUxMWM3NmU3 ODhlZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pY2xfZHNpLmMKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pY2xfZHNpLmMKPiBAQCAtMTM2Myw2ICsxMzYzLDExMyBA QCBzdGF0aWMgY29uc3Qgc3RydWN0IG1pcGlfZHNpX2hvc3Rfb3BzIGdlbjExX2RzaV9ob3N0X29w cyA9IHsKPiAgCS50cmFuc2ZlciA9IGdlbjExX2RzaV9ob3N0X3RyYW5zZmVyLAo+ICB9Owo+ICAK PiArI2RlZmluZSBJQ0xfUFJFUEFSRV9DTlRfTUFYCTB4Nwo+ICsjZGVmaW5lIElDTF9DTEtfWkVS T19DTlRfTUFYCTB4Zgo+ICsjZGVmaW5lIElDTF9UUkFJTF9DTlRfTUFYCTB4Nwo+ICsjZGVmaW5l IElDTF9UQ0xLX1BSRV9DTlRfTUFYCTB4Mwo+ICsjZGVmaW5lIElDTF9UQ0xLX1BPU1RfQ05UX01B WAkweDcKPiArI2RlZmluZSBJQ0xfSFNfWkVST19DTlRfTUFYCTB4Zgo+ICsjZGVmaW5lIElDTF9F WElUX1pFUk9fQ05UX01BWAkweDcKPiArCj4gK3N0YXRpYyB2b2lkIGljbF9kcGh5X3BhcmFtX2lu aXQoc3RydWN0IGludGVsX2RzaSAqaW50ZWxfZHNpKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2ID0gaW50ZWxfZHNpLT5iYXNlLmJhc2UuZGV2Owo+ICsJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+ICsJc3RydWN0IG1pcGlfY29uZmlnICpt aXBpX2NvbmZpZyA9IGRldl9wcml2LT52YnQuZHNpLmNvbmZpZzsKPiArCXUzMiB0bHB4X25zOwo+ ICsJdTMyIHByZXBhcmVfY250LCBleGl0X3plcm9fY250LCBjbGtfemVyb19jbnQsIHRyYWlsX2Nu dDsKPiArCXUzMiB0aHNfcHJlcGFyZV9ucywgdGNsa190cmFpbF9uczsKPiArCXUzMiBoc196ZXJv X2NudDsKPiArCXUzMiB0Y2xrX3ByZV9jbnQsIHRjbGtfcG9zdF9jbnQ7Cj4gKwo+ICsJdGxweF9u cyA9IGludGVsX2RzaV90bHB4X25zKGludGVsX2RzaSk7Cj4gKwo+ICsJdGNsa190cmFpbF9ucyA9 IG1heChtaXBpX2NvbmZpZy0+dGNsa190cmFpbCwgbWlwaV9jb25maWctPnRoc190cmFpbCk7Cj4g Kwl0aHNfcHJlcGFyZV9ucyA9IG1heChtaXBpX2NvbmZpZy0+dGhzX3ByZXBhcmUsCj4gKwkJCSAg ICAgbWlwaV9jb25maWctPnRjbGtfcHJlcGFyZSk7Cj4gKwo+ICsJLyoKPiArCSAqIHByZXBhcmUg Y250IGluIGVzY2FwZSBjbG9ja3MKPiArCSAqIHRoaXMgZmllbGQgcmVwcmVzZW50cyBhIGhleGFk ZWNpbWFsIHZhbHVlIHdpdGggYSBwcmVjaXNpb24KPiArCSAqIG9mIDEuMiDigJMgaS5lLiB0aGUg bW9zdCBzaWduaWZpY2FudCBiaXQgaXMgdGhlIGludGVnZXIKPiArCSAqIGFuZCB0aGUgbGVhc3Qg c2lnbmlmaWNhbnQgMiBiaXRzIGFyZSBmcmFjdGlvbiBiaXRzLgo+ICsJICogc28sIHRoZSBmaWVs ZCBjYW4gcmVwcmVzZW50IGEgcmFuZ2Ugb2YgMC4yNSB0byAxLjc1Cj4gKwkgKi8KPiArCXByZXBh cmVfY250ID0gRElWX1JPVU5EX1VQKHRoc19wcmVwYXJlX25zICogNCwgdGxweF9ucyk7Cj4gKwlp ZiAocHJlcGFyZV9jbnQgPiBJQ0xfUFJFUEFSRV9DTlRfTUFYKSB7Cj4gKwkJRFJNX0RFQlVHX0tN UygicHJlcGFyZV9jbnQgb3V0IG9mIHJhbmdlICglZClcbiIsIHByZXBhcmVfY250KTsKPiArCQlw cmVwYXJlX2NudCA9IElDTF9QUkVQQVJFX0NOVF9NQVg7Cj4gKwl9Cj4gKwo+ICsJLyogY2xrIHpl cm8gY291bnQgaW4gZXNjYXBlIGNsb2NrcyAqLwo+ICsJY2xrX3plcm9fY250ID0gRElWX1JPVU5E X1VQKG1pcGlfY29uZmlnLT50Y2xrX3ByZXBhcmVfY2xremVybyAtCj4gKwkJCQkgICAgdGhzX3By ZXBhcmVfbnMsIHRscHhfbnMpOwo+ICsJaWYgKGNsa196ZXJvX2NudCA+IElDTF9DTEtfWkVST19D TlRfTUFYKSB7Cj4gKwkJRFJNX0RFQlVHX0tNUygiY2xrX3plcm9fY250IG91dCBvZiByYW5nZSAo JWQpXG4iLCBjbGtfemVyb19jbnQpOwo+ICsJCWNsa196ZXJvX2NudCA9IElDTF9DTEtfWkVST19D TlRfTUFYOwo+ICsJfQo+ICsKPiArCS8qIHRyYWlsIGNudCBpbiBlc2NhcGUgY2xvY2tzKi8KPiAr CXRyYWlsX2NudCA9IERJVl9ST1VORF9VUCh0Y2xrX3RyYWlsX25zLCB0bHB4X25zKTsKPiArCWlm ICh0cmFpbF9jbnQgPiBJQ0xfVFJBSUxfQ05UX01BWCkgewo+ICsJCURSTV9ERUJVR19LTVMoInRy YWlsX2NudCBvdXQgb2YgcmFuZ2UgKCVkKVxuIiwgdHJhaWxfY250KTsKPiArCQl0cmFpbF9jbnQg PSBJQ0xfVFJBSUxfQ05UX01BWDsKPiArCX0KPiArCj4gKwkvKiB0Y2xrIHByZSBjb3VudCBpbiBl c2NhcGUgY2xvY2tzICovCj4gKwl0Y2xrX3ByZV9jbnQgPSBESVZfUk9VTkRfVVAobWlwaV9jb25m aWctPnRjbGtfcHJlLCB0bHB4X25zKTsKPiArCWlmICh0Y2xrX3ByZV9jbnQgPiBJQ0xfVENMS19Q UkVfQ05UX01BWCkgewo+ICsJCURSTV9ERUJVR19LTVMoInRjbGtfcHJlX2NudCBvdXQgb2YgcmFu Z2UgKCVkKVxuIiwgdGNsa19wcmVfY250KTsKPiArCQl0Y2xrX3ByZV9jbnQgPSBJQ0xfVENMS19Q UkVfQ05UX01BWDsKPiArCX0KPiArCj4gKwkvKiB0Y2xrIHBvc3QgY291bnQgaW4gZXNjYXBlIGNs b2NrcyAqLwo+ICsJdGNsa19wb3N0X2NudCA9IERJVl9ST1VORF9VUChtaXBpX2NvbmZpZy0+dGNs a19wb3N0LCB0bHB4X25zKTsKPiArCWlmICh0Y2xrX3Bvc3RfY250ID4gSUNMX1RDTEtfUE9TVF9D TlRfTUFYKSB7Cj4gKwkJRFJNX0RFQlVHX0tNUygidGNsa19wb3N0X2NudCBvdXQgb2YgcmFuZ2Ug KCVkKVxuIiwgdGNsa19wb3N0X2NudCk7Cj4gKwkJdGNsa19wb3N0X2NudCA9IElDTF9UQ0xLX1BP U1RfQ05UX01BWDsKPiArCX0KPiArCj4gKwkvKiBocyB6ZXJvIGNudCBpbiBlc2NhcGUgY2xvY2tz ICovCj4gKwloc196ZXJvX2NudCA9IERJVl9ST1VORF9VUChtaXBpX2NvbmZpZy0+dGhzX3ByZXBh cmVfaHN6ZXJvIC0KPiArCQkJCSAgIHRoc19wcmVwYXJlX25zLCB0bHB4X25zKTsKPiArCWlmICho c196ZXJvX2NudCA+IElDTF9IU19aRVJPX0NOVF9NQVgpIHsKPiArCQlEUk1fREVCVUdfS01TKCJo c196ZXJvX2NudCBvdXQgb2YgcmFuZ2UgKCVkKVxuIiwgaHNfemVyb19jbnQpOwo+ICsJCWhzX3pl cm9fY250ID0gSUNMX0hTX1pFUk9fQ05UX01BWDsKPiArCX0KPiArCj4gKwkvKiBocyBleGl0IHpl cm8gY250IGluIGVzY2FwZSBjbG9ja3MgKi8KPiArCWV4aXRfemVyb19jbnQgPSBESVZfUk9VTkRf VVAobWlwaV9jb25maWctPnRoc19leGl0LCB0bHB4X25zKTsKPiArCWlmIChleGl0X3plcm9fY250 ID4gSUNMX0VYSVRfWkVST19DTlRfTUFYKSB7Cj4gKwkJRFJNX0RFQlVHX0tNUygiZXhpdF96ZXJv X2NudCBvdXQgb2YgcmFuZ2UgKCVkKVxuIiwgZXhpdF96ZXJvX2NudCk7Cj4gKwkJZXhpdF96ZXJv X2NudCA9IElDTF9FWElUX1pFUk9fQ05UX01BWDsKPiArCX0KPiArCj4gKwkvKiBjbG9jayBsYW5l IGRwaHkgdGltaW5ncyAqLwo+ICsJaW50ZWxfZHNpLT5kcGh5X3JlZyA9IChDTEtfUFJFUEFSRV9P VkVSUklERSB8Cj4gKwkJCSAgICAgICBDTEtfUFJFUEFSRShwcmVwYXJlX2NudCkgfAo+ICsJCQkg ICAgICAgQ0xLX1pFUk9fT1ZFUlJJREUgfAo+ICsJCQkgICAgICAgQ0xLX1pFUk8oY2xrX3plcm9f Y250KSB8Cj4gKwkJCSAgICAgICBDTEtfUFJFX09WRVJSSURFIHwKPiArCQkJICAgICAgIENMS19Q UkUodGNsa19wcmVfY250KSB8Cj4gKwkJCSAgICAgICBDTEtfUE9TVF9PVkVSUklERSB8Cj4gKwkJ CSAgICAgICBDTEtfUE9TVCh0Y2xrX3Bvc3RfY250KSB8Cj4gKwkJCSAgICAgICBDTEtfVFJBSUxf T1ZFUlJJREUgfAo+ICsJCQkgICAgICAgQ0xLX1RSQUlMKHRyYWlsX2NudCkpOwo+ICsKPiArCS8q IGRhdGEgbGFuZXMgZHBoeSB0aW1pbmdzICovCj4gKwlpbnRlbF9kc2ktPmRwaHlfZGF0YV9sYW5l X3JlZyA9IChIU19QUkVQQVJFX09WRVJSSURFIHwKPiArCQkJCQkgSFNfUFJFUEFSRShwcmVwYXJl X2NudCkgfAo+ICsJCQkJCSBIU19aRVJPX09WRVJSSURFIHwKPiArCQkJCQkgSFNfWkVSTyhoc196 ZXJvX2NudCkgfAo+ICsJCQkJCSBIU19UUkFJTF9PVkVSUklERSB8Cj4gKwkJCQkJIEhTX1RSQUlM KHRyYWlsX2NudCkgfAo+ICsJCQkJCSBIU19FWElUX09WRVJSSURFIHwKPiArCQkJCQkgSFNfRVhJ VChleGl0X3plcm9fY250KSk7Cj4gKwo+ICsJaW50ZWxfZHNpX2xvZ19wYXJhbXMoaW50ZWxfZHNp KTsKPiArfQo+ICsKPiAgdm9pZCBpY2xfZHNpX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gJmRldl9wcml2LT5k cm07Cj4gQEAgLTE0NTUsNiArMTU2Miw3IEBAIHZvaWQgaWNsX2RzaV9pbml0KHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCQlnb3RvIGVycjsKPiAgCX0KPiAgCj4gKwlpY2xf ZHBoeV9wYXJhbV9pbml0KGludGVsX2RzaSk7Cj4gIAlyZXR1cm47Cj4gIAo+ICBlcnI6Cj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaS5oIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHNpLmgKPiBpbmRleCA3MDVhNjA5MDUwYzAuLjJlOTk3MTg3ZmVkNSAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kc2kuaAo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaS5oCj4gQEAgLTE5Miw1ICsxOTIsNiBAQCBib29s IGludGVsX2RzaV92YnRfaW5pdChzdHJ1Y3QgaW50ZWxfZHNpICppbnRlbF9kc2ksIHUxNiBwYW5l bF9pZCk7Cj4gIHZvaWQgaW50ZWxfZHNpX3ZidF9leGVjX3NlcXVlbmNlKHN0cnVjdCBpbnRlbF9k c2kgKmludGVsX2RzaSwKPiAgCQkJCSBlbnVtIG1pcGlfc2VxIHNlcV9pZCk7Cj4gIHZvaWQgaW50 ZWxfZHNpX21zbGVlcChzdHJ1Y3QgaW50ZWxfZHNpICppbnRlbF9kc2ksIGludCBtc2VjKTsKPiAr dm9pZCBpbnRlbF9kc2lfbG9nX3BhcmFtcyhzdHJ1Y3QgaW50ZWxfZHNpICppbnRlbF9kc2kpOwo+ ICAKPiAgI2VuZGlmIC8qIF9JTlRFTF9EU0lfSCAqLwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kc2lfdmJ0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k c2lfdmJ0LmMKPiBpbmRleCAzYTE4N2ZmYWJmYmQuLjI2ZmNiMzM0NGViYiAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kc2lfdmJ0LmMKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kc2lfdmJ0LmMKPiBAQCAtNDEsMTMgKzQxLDYgQEAKPiAgI2RlZmlu ZSBNSVBJX1ZJUlRVQUxfQ0hBTk5FTF9TSElGVAkxCj4gICNkZWZpbmUgTUlQSV9QT1JUX1NISUZU CQkJMwo+ICAKPiAtI2RlZmluZSBQUkVQQVJFX0NOVF9NQVgJCTB4M0YKPiAtI2RlZmluZSBFWElU X1pFUk9fQ05UX01BWAkweDNGCj4gLSNkZWZpbmUgQ0xLX1pFUk9fQ05UX01BWAkweEZGCj4gLSNk ZWZpbmUgVFJBSUxfQ05UX01BWAkJMHgxRgo+IC0KPiAtI2RlZmluZSBOU19LSFpfUkFUSU8gMTAw MDAwMAo+IC0KPiAgLyogYmFzZSBvZmZzZXRzIGZvciBncGlvIHBhZHMgKi8KPiAgI2RlZmluZSBW TFZfR1BJT19OQ18wX0hWX0RESTBfSFBECTB4NDEzMAo+ICAjZGVmaW5lIFZMVl9HUElPX05DXzFf SFZfRERJMF9ERENfU0RBCTB4NDEyMAo+IEBAIC01MzIsNyArNTI1LDcgQEAgdm9pZCBpbnRlbF9k c2lfbXNsZWVwKHN0cnVjdCBpbnRlbF9kc2kgKmludGVsX2RzaSwgaW50IG1zZWMpCj4gIAltc2xl ZXAobXNlYyk7Cj4gIH0KPiAgCj4gLXN0YXRpYyB2b2lkIGludGVsX2RzaV9sb2dfcGFyYW1zKHN0 cnVjdCBpbnRlbF9kc2kgKmludGVsX2RzaSkKPiArdm9pZCBpbnRlbF9kc2lfbG9nX3BhcmFtcyhz dHJ1Y3QgaW50ZWxfZHNpICppbnRlbF9kc2kpCj4gIHsKPiAgCURSTV9ERUJVR19LTVMoIlBjbGsg JWRcbiIsIGludGVsX2RzaS0+cGNsayk7Cj4gIAlEUk1fREVCVUdfS01TKCJQaXhlbCBvdmVybGFw ICVkXG4iLCBpbnRlbF9kc2ktPnBpeGVsX292ZXJsYXApOwo+IEBAIC01NzAsMjc0ICs1NjMsNiBA QCBzdGF0aWMgdm9pZCBpbnRlbF9kc2lfbG9nX3BhcmFtcyhzdHJ1Y3QgaW50ZWxfZHNpICppbnRl bF9kc2kpCj4gIAkJCWVuYWJsZWRkaXNhYmxlZCghKGludGVsX2RzaS0+dmlkZW9fZnJtdF9jZmdf Yml0cyAmIERJU0FCTEVfVklERU9fQlRBKSkpOwo+ICB9Cj4gIAo+IC0jZGVmaW5lIElDTF9QUkVQ QVJFX0NOVF9NQVgJMHg3Cj4gLSNkZWZpbmUgSUNMX0NMS19aRVJPX0NOVF9NQVgJMHhmCj4gLSNk ZWZpbmUgSUNMX1RSQUlMX0NOVF9NQVgJMHg3Cj4gLSNkZWZpbmUgSUNMX1RDTEtfUFJFX0NOVF9N QVgJMHgzCj4gLSNkZWZpbmUgSUNMX1RDTEtfUE9TVF9DTlRfTUFYCTB4Nwo+IC0jZGVmaW5lIElD TF9IU19aRVJPX0NOVF9NQVgJMHhmCj4gLSNkZWZpbmUgSUNMX0VYSVRfWkVST19DTlRfTUFYCTB4 Nwo+IC0KPiAtc3RhdGljIHZvaWQgaWNsX2RwaHlfcGFyYW1faW5pdChzdHJ1Y3QgaW50ZWxfZHNp ICppbnRlbF9kc2kpCj4gLXsKPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBpbnRlbF9kc2kt PmJhc2UuYmFzZS5kZXY7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0 b19pOTE1KGRldik7Cj4gLQlzdHJ1Y3QgbWlwaV9jb25maWcgKm1pcGlfY29uZmlnID0gZGV2X3By aXYtPnZidC5kc2kuY29uZmlnOwo+IC0JdTMyIHRscHhfbnM7Cj4gLQl1MzIgcHJlcGFyZV9jbnQs IGV4aXRfemVyb19jbnQsIGNsa196ZXJvX2NudCwgdHJhaWxfY250Owo+IC0JdTMyIHRoc19wcmVw YXJlX25zLCB0Y2xrX3RyYWlsX25zOwo+IC0JdTMyIGhzX3plcm9fY250Owo+IC0JdTMyIHRjbGtf cHJlX2NudCwgdGNsa19wb3N0X2NudDsKPiAtCj4gLQl0bHB4X25zID0gaW50ZWxfZHNpX3RscHhf bnMoaW50ZWxfZHNpKTsKPiAtCj4gLQl0Y2xrX3RyYWlsX25zID0gbWF4KG1pcGlfY29uZmlnLT50 Y2xrX3RyYWlsLCBtaXBpX2NvbmZpZy0+dGhzX3RyYWlsKTsKPiAtCXRoc19wcmVwYXJlX25zID0g bWF4KG1pcGlfY29uZmlnLT50aHNfcHJlcGFyZSwKPiAtCQkJICAgICBtaXBpX2NvbmZpZy0+dGNs a19wcmVwYXJlKTsKPiAtCj4gLQkvKgo+IC0JICogcHJlcGFyZSBjbnQgaW4gZXNjYXBlIGNsb2Nr cwo+IC0JICogdGhpcyBmaWVsZCByZXByZXNlbnRzIGEgaGV4YWRlY2ltYWwgdmFsdWUgd2l0aCBh IHByZWNpc2lvbgo+IC0JICogb2YgMS4yIOKAkyBpLmUuIHRoZSBtb3N0IHNpZ25pZmljYW50IGJp dCBpcyB0aGUgaW50ZWdlcgo+IC0JICogYW5kIHRoZSBsZWFzdCBzaWduaWZpY2FudCAyIGJpdHMg YXJlIGZyYWN0aW9uIGJpdHMuCj4gLQkgKiBzbywgdGhlIGZpZWxkIGNhbiByZXByZXNlbnQgYSBy YW5nZSBvZiAwLjI1IHRvIDEuNzUKPiAtCSAqLwo+IC0JcHJlcGFyZV9jbnQgPSBESVZfUk9VTkRf VVAodGhzX3ByZXBhcmVfbnMgKiA0LCB0bHB4X25zKTsKPiAtCWlmIChwcmVwYXJlX2NudCA+IElD TF9QUkVQQVJFX0NOVF9NQVgpIHsKPiAtCQlEUk1fREVCVUdfS01TKCJwcmVwYXJlX2NudCBvdXQg b2YgcmFuZ2UgKCVkKVxuIiwgcHJlcGFyZV9jbnQpOwo+IC0JCXByZXBhcmVfY250ID0gSUNMX1BS RVBBUkVfQ05UX01BWDsKPiAtCX0KPiAtCj4gLQkvKiBjbGsgemVybyBjb3VudCBpbiBlc2NhcGUg Y2xvY2tzICovCj4gLQljbGtfemVyb19jbnQgPSBESVZfUk9VTkRfVVAobWlwaV9jb25maWctPnRj bGtfcHJlcGFyZV9jbGt6ZXJvIC0KPiAtCQkJCSAgICB0aHNfcHJlcGFyZV9ucywgdGxweF9ucyk7 Cj4gLQlpZiAoY2xrX3plcm9fY250ID4gSUNMX0NMS19aRVJPX0NOVF9NQVgpIHsKPiAtCQlEUk1f REVCVUdfS01TKCJjbGtfemVyb19jbnQgb3V0IG9mIHJhbmdlICglZClcbiIsIGNsa196ZXJvX2Nu dCk7Cj4gLQkJY2xrX3plcm9fY250ID0gSUNMX0NMS19aRVJPX0NOVF9NQVg7Cj4gLQl9Cj4gLQo+ IC0JLyogdHJhaWwgY250IGluIGVzY2FwZSBjbG9ja3MqLwo+IC0JdHJhaWxfY250ID0gRElWX1JP VU5EX1VQKHRjbGtfdHJhaWxfbnMsIHRscHhfbnMpOwo+IC0JaWYgKHRyYWlsX2NudCA+IElDTF9U UkFJTF9DTlRfTUFYKSB7Cj4gLQkJRFJNX0RFQlVHX0tNUygidHJhaWxfY250IG91dCBvZiByYW5n ZSAoJWQpXG4iLCB0cmFpbF9jbnQpOwo+IC0JCXRyYWlsX2NudCA9IElDTF9UUkFJTF9DTlRfTUFY Owo+IC0JfQo+IC0KPiAtCS8qIHRjbGsgcHJlIGNvdW50IGluIGVzY2FwZSBjbG9ja3MgKi8KPiAt CXRjbGtfcHJlX2NudCA9IERJVl9ST1VORF9VUChtaXBpX2NvbmZpZy0+dGNsa19wcmUsIHRscHhf bnMpOwo+IC0JaWYgKHRjbGtfcHJlX2NudCA+IElDTF9UQ0xLX1BSRV9DTlRfTUFYKSB7Cj4gLQkJ RFJNX0RFQlVHX0tNUygidGNsa19wcmVfY250IG91dCBvZiByYW5nZSAoJWQpXG4iLCB0Y2xrX3By ZV9jbnQpOwo+IC0JCXRjbGtfcHJlX2NudCA9IElDTF9UQ0xLX1BSRV9DTlRfTUFYOwo+IC0JfQo+ IC0KPiAtCS8qIHRjbGsgcG9zdCBjb3VudCBpbiBlc2NhcGUgY2xvY2tzICovCj4gLQl0Y2xrX3Bv c3RfY250ID0gRElWX1JPVU5EX1VQKG1pcGlfY29uZmlnLT50Y2xrX3Bvc3QsIHRscHhfbnMpOwo+ IC0JaWYgKHRjbGtfcG9zdF9jbnQgPiBJQ0xfVENMS19QT1NUX0NOVF9NQVgpIHsKPiAtCQlEUk1f REVCVUdfS01TKCJ0Y2xrX3Bvc3RfY250IG91dCBvZiByYW5nZSAoJWQpXG4iLCB0Y2xrX3Bvc3Rf Y250KTsKPiAtCQl0Y2xrX3Bvc3RfY250ID0gSUNMX1RDTEtfUE9TVF9DTlRfTUFYOwo+IC0JfQo+ IC0KPiAtCS8qIGhzIHplcm8gY250IGluIGVzY2FwZSBjbG9ja3MgKi8KPiAtCWhzX3plcm9fY250 ID0gRElWX1JPVU5EX1VQKG1pcGlfY29uZmlnLT50aHNfcHJlcGFyZV9oc3plcm8gLQo+IC0JCQkJ ICAgdGhzX3ByZXBhcmVfbnMsIHRscHhfbnMpOwo+IC0JaWYgKGhzX3plcm9fY250ID4gSUNMX0hT X1pFUk9fQ05UX01BWCkgewo+IC0JCURSTV9ERUJVR19LTVMoImhzX3plcm9fY250IG91dCBvZiBy YW5nZSAoJWQpXG4iLCBoc196ZXJvX2NudCk7Cj4gLQkJaHNfemVyb19jbnQgPSBJQ0xfSFNfWkVS T19DTlRfTUFYOwo+IC0JfQo+IC0KPiAtCS8qIGhzIGV4aXQgemVybyBjbnQgaW4gZXNjYXBlIGNs b2NrcyAqLwo+IC0JZXhpdF96ZXJvX2NudCA9IERJVl9ST1VORF9VUChtaXBpX2NvbmZpZy0+dGhz X2V4aXQsIHRscHhfbnMpOwo+IC0JaWYgKGV4aXRfemVyb19jbnQgPiBJQ0xfRVhJVF9aRVJPX0NO VF9NQVgpIHsKPiAtCQlEUk1fREVCVUdfS01TKCJleGl0X3plcm9fY250IG91dCBvZiByYW5nZSAo JWQpXG4iLCBleGl0X3plcm9fY250KTsKPiAtCQlleGl0X3plcm9fY250ID0gSUNMX0VYSVRfWkVS T19DTlRfTUFYOwo+IC0JfQo+IC0KPiAtCS8qIGNsb2NrIGxhbmUgZHBoeSB0aW1pbmdzICovCj4g LQlpbnRlbF9kc2ktPmRwaHlfcmVnID0gKENMS19QUkVQQVJFX09WRVJSSURFIHwKPiAtCQkJICAg ICAgIENMS19QUkVQQVJFKHByZXBhcmVfY250KSB8Cj4gLQkJCSAgICAgICBDTEtfWkVST19PVkVS UklERSB8Cj4gLQkJCSAgICAgICBDTEtfWkVSTyhjbGtfemVyb19jbnQpIHwKPiAtCQkJICAgICAg IENMS19QUkVfT1ZFUlJJREUgfAo+IC0JCQkgICAgICAgQ0xLX1BSRSh0Y2xrX3ByZV9jbnQpIHwK PiAtCQkJICAgICAgIENMS19QT1NUX09WRVJSSURFIHwKPiAtCQkJICAgICAgIENMS19QT1NUKHRj bGtfcG9zdF9jbnQpIHwKPiAtCQkJICAgICAgIENMS19UUkFJTF9PVkVSUklERSB8Cj4gLQkJCSAg ICAgICBDTEtfVFJBSUwodHJhaWxfY250KSk7Cj4gLQo+IC0JLyogZGF0YSBsYW5lcyBkcGh5IHRp bWluZ3MgKi8KPiAtCWludGVsX2RzaS0+ZHBoeV9kYXRhX2xhbmVfcmVnID0gKEhTX1BSRVBBUkVf T1ZFUlJJREUgfAo+IC0JCQkJCSBIU19QUkVQQVJFKHByZXBhcmVfY250KSB8Cj4gLQkJCQkJIEhT X1pFUk9fT1ZFUlJJREUgfAo+IC0JCQkJCSBIU19aRVJPKGhzX3plcm9fY250KSB8Cj4gLQkJCQkJ IEhTX1RSQUlMX09WRVJSSURFIHwKPiAtCQkJCQkgSFNfVFJBSUwodHJhaWxfY250KSB8Cj4gLQkJ CQkJIEhTX0VYSVRfT1ZFUlJJREUgfAo+IC0JCQkJCSBIU19FWElUKGV4aXRfemVyb19jbnQpKTsK PiAtCj4gLQlpbnRlbF9kc2lfbG9nX3BhcmFtcyhpbnRlbF9kc2kpOwo+IC19Cj4gLQo+IC1zdGF0 aWMgdm9pZCB2bHZfZHBoeV9wYXJhbV9pbml0KHN0cnVjdCBpbnRlbF9kc2kgKmludGVsX2RzaSkK PiAtewo+IC0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGludGVsX2RzaS0+YmFzZS5iYXNlLmRl djsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsK PiAtCXN0cnVjdCBtaXBpX2NvbmZpZyAqbWlwaV9jb25maWcgPSBkZXZfcHJpdi0+dmJ0LmRzaS5j b25maWc7Cj4gLQl1MzIgdGxweF9ucywgZXh0cmFfYnl0ZV9jb3VudCwgdGxweF91aTsKPiAtCXUz MiB1aV9udW0sIHVpX2RlbjsKPiAtCXUzMiBwcmVwYXJlX2NudCwgZXhpdF96ZXJvX2NudCwgY2xr X3plcm9fY250LCB0cmFpbF9jbnQ7Cj4gLQl1MzIgdGhzX3ByZXBhcmVfbnMsIHRjbGtfdHJhaWxf bnM7Cj4gLQl1MzIgdGNsa19wcmVwYXJlX2Nsa3plcm8sIHRoc19wcmVwYXJlX2hzemVybzsKPiAt CXUzMiBscF90b19oc19zd2l0Y2gsIGhzX3RvX2xwX3N3aXRjaDsKPiAtCXUzMiBtdWw7Cj4gLQo+ IC0JdGxweF9ucyA9IGludGVsX2RzaV90bHB4X25zKGludGVsX2RzaSk7Cj4gLQo+IC0Jc3dpdGNo IChpbnRlbF9kc2ktPmxhbmVfY291bnQpIHsKPiAtCWNhc2UgMToKPiAtCWNhc2UgMjoKPiAtCQll eHRyYV9ieXRlX2NvdW50ID0gMjsKPiAtCQlicmVhazsKPiAtCWNhc2UgMzoKPiAtCQlleHRyYV9i eXRlX2NvdW50ID0gNDsKPiAtCQlicmVhazsKPiAtCWNhc2UgNDoKPiAtCWRlZmF1bHQ6Cj4gLQkJ ZXh0cmFfYnl0ZV9jb3VudCA9IDM7Cj4gLQkJYnJlYWs7Cj4gLQl9Cj4gLQo+IC0JLyogaW4gS2Jw cyAqLwo+IC0JdWlfbnVtID0gTlNfS0haX1JBVElPOwo+IC0JdWlfZGVuID0gaW50ZWxfZHNpX2Jp dHJhdGUoaW50ZWxfZHNpKTsKPiAtCj4gLQl0Y2xrX3ByZXBhcmVfY2xremVybyA9IG1pcGlfY29u ZmlnLT50Y2xrX3ByZXBhcmVfY2xremVybzsKPiAtCXRoc19wcmVwYXJlX2hzemVybyA9IG1pcGlf Y29uZmlnLT50aHNfcHJlcGFyZV9oc3plcm87Cj4gLQo+IC0JLyoKPiAtCSAqIEIwNjAKPiAtCSAq IExQIGJ5dGUgY2xvY2sgPSBUTFBYLyAoOFVJKQo+IC0JICovCj4gLQlpbnRlbF9kc2ktPmxwX2J5 dGVfY2xrID0gRElWX1JPVU5EX1VQKHRscHhfbnMgKiB1aV9kZW4sIDggKiB1aV9udW0pOwo+IC0K PiAtCS8qIEREUiBjbG9jayBwZXJpb2QgPSAyICogVUkKPiAtCSAqIFVJKHNlYykgPSAxLyhiaXRy YXRlICogMTBeMykgKGJpdHJhdGUgaXMgaW4gS0haKQo+IC0JICogVUkobnNlYykgPSAxMF42IC8g Yml0cmF0ZQo+IC0JICogRERSIGNsb2NrIHBlcmlvZCAobnNlYykgPSAyICogVUkgPSAoMiAqIDEw XjYpLyBiaXRyYXRlCj4gLQkgKiBERFIgY2xvY2sgY291bnQgID0gbnNfdmFsdWUgLyBERFIgY2xv Y2sgcGVyaW9kCj4gLQkgKgo+IC0JICogRm9yIEdFTUlOSUxBS0UgZHBoeV9wYXJhbV9yZWcgd2ls bCBiZSBwcm9ncmFtbWVkIGluIHRlcm1zIG9mCj4gLQkgKiBIUyBieXRlIGNsb2NrIGNvdW50IGZv ciBvdGhlciBwbGF0Zm9ybSBpbiBIUyBkZHIgY2xvY2sgY291bnQKPiAtCSAqLwo+IC0JbXVsID0g SVNfR0VNSU5JTEFLRShkZXZfcHJpdikgPyA4IDogMjsKPiAtCXRoc19wcmVwYXJlX25zID0gbWF4 KG1pcGlfY29uZmlnLT50aHNfcHJlcGFyZSwKPiAtCQkJICAgICBtaXBpX2NvbmZpZy0+dGNsa19w cmVwYXJlKTsKPiAtCj4gLQkvKiBwcmVwYXJlIGNvdW50ICovCj4gLQlwcmVwYXJlX2NudCA9IERJ Vl9ST1VORF9VUCh0aHNfcHJlcGFyZV9ucyAqIHVpX2RlbiwgdWlfbnVtICogbXVsKTsKPiAtCj4g LQlpZiAocHJlcGFyZV9jbnQgPiBQUkVQQVJFX0NOVF9NQVgpIHsKPiAtCQlEUk1fREVCVUdfS01T KCJwcmVwYXJlIGNvdW50IHRvbyBoaWdoICV1XG4iLCBwcmVwYXJlX2NudCk7Cj4gLQkJcHJlcGFy ZV9jbnQgPSBQUkVQQVJFX0NOVF9NQVg7Cj4gLQl9Cj4gLQo+IC0JLyogZXhpdCB6ZXJvIGNvdW50 ICovCj4gLQlleGl0X3plcm9fY250ID0gRElWX1JPVU5EX1VQKAo+IC0JCQkJKHRoc19wcmVwYXJl X2hzemVybyAtIHRoc19wcmVwYXJlX25zKSAqIHVpX2RlbiwKPiAtCQkJCXVpX251bSAqIG11bAo+ IC0JCQkJKTsKPiAtCj4gLQkvKgo+IC0JICogRXhpdCB6ZXJvIGlzIHVuaWZpZWQgdmFsIHRoc196 ZXJvIGFuZCB0aHNfZXhpdAo+IC0JICogbWluaW11bSB2YWx1ZSBmb3IgdGhzX2V4aXQgPSAxMTBu cwo+IC0JICogbWluIChleGl0X3plcm9fY250ICogMikgPSAxMTAvVUkKPiAtCSAqIGV4aXRfemVy b19jbnQgPSA1NS9VSQo+IC0JICovCj4gLQlpZiAoZXhpdF96ZXJvX2NudCA8ICg1NSAqIHVpX2Rl biAvIHVpX251bSkgJiYgKDU1ICogdWlfZGVuKSAlIHVpX251bSkKPiAtCQlleGl0X3plcm9fY250 ICs9IDE7Cj4gLQo+IC0JaWYgKGV4aXRfemVyb19jbnQgPiBFWElUX1pFUk9fQ05UX01BWCkgewo+ IC0JCURSTV9ERUJVR19LTVMoImV4aXQgemVybyBjb3VudCB0b28gaGlnaCAldVxuIiwgZXhpdF96 ZXJvX2NudCk7Cj4gLQkJZXhpdF96ZXJvX2NudCA9IEVYSVRfWkVST19DTlRfTUFYOwo+IC0JfQo+ IC0KPiAtCS8qIGNsayB6ZXJvIGNvdW50ICovCj4gLQljbGtfemVyb19jbnQgPSBESVZfUk9VTkRf VVAoCj4gLQkJCQkodGNsa19wcmVwYXJlX2Nsa3plcm8gLQl0aHNfcHJlcGFyZV9ucykKPiAtCQkJ CSogdWlfZGVuLCB1aV9udW0gKiBtdWwpOwo+IC0KPiAtCWlmIChjbGtfemVyb19jbnQgPiBDTEtf WkVST19DTlRfTUFYKSB7Cj4gLQkJRFJNX0RFQlVHX0tNUygiY2xvY2sgemVybyBjb3VudCB0b28g aGlnaCAldVxuIiwgY2xrX3plcm9fY250KTsKPiAtCQljbGtfemVyb19jbnQgPSBDTEtfWkVST19D TlRfTUFYOwo+IC0JfQo+IC0KPiAtCS8qIHRyYWlsIGNvdW50ICovCj4gLQl0Y2xrX3RyYWlsX25z ID0gbWF4KG1pcGlfY29uZmlnLT50Y2xrX3RyYWlsLCBtaXBpX2NvbmZpZy0+dGhzX3RyYWlsKTsK PiAtCXRyYWlsX2NudCA9IERJVl9ST1VORF9VUCh0Y2xrX3RyYWlsX25zICogdWlfZGVuLCB1aV9u dW0gKiBtdWwpOwo+IC0KPiAtCWlmICh0cmFpbF9jbnQgPiBUUkFJTF9DTlRfTUFYKSB7Cj4gLQkJ RFJNX0RFQlVHX0tNUygidHJhaWwgY291bnQgdG9vIGhpZ2ggJXVcbiIsIHRyYWlsX2NudCk7Cj4g LQkJdHJhaWxfY250ID0gVFJBSUxfQ05UX01BWDsKPiAtCX0KPiAtCj4gLQkvKiBCMDgwICovCj4g LQlpbnRlbF9kc2ktPmRwaHlfcmVnID0gZXhpdF96ZXJvX2NudCA8PCAyNCB8IHRyYWlsX2NudCA8 PCAxNiB8Cj4gLQkJCQkJCWNsa196ZXJvX2NudCA8PCA4IHwgcHJlcGFyZV9jbnQ7Cj4gLQo+IC0J LyoKPiAtCSAqIExQIHRvIEhTIHN3aXRjaCBjb3VudCA9IDRUTFBYICsgUFJFUF9DT1VOVCAqIG11 bCArIEVYSVRfWkVST19DT1VOVCAqCj4gLQkgKgkJCQkJbXVsICsgMTBVSSArIEV4dHJhIEJ5dGUg Q291bnQKPiAtCSAqCj4gLQkgKiBIUyB0byBMUCBzd2l0Y2ggY291bnQgPSBUSFMtVFJBSUwgKyAy VExQWCArIEV4dHJhIEJ5dGUgQ291bnQKPiAtCSAqIEV4dHJhIEJ5dGUgQ291bnQgaXMgY2FsY3Vs YXRlZCBhY2NvcmRpbmcgdG8gbnVtYmVyIG9mIGxhbmVzLgo+IC0JICogSGlnaCBMb3cgU3dpdGNo IENvdW50IGlzIHRoZSBNYXggb2YgTFAgdG8gSFMgYW5kCj4gLQkgKiBIUyB0byBMUCBzd2l0Y2gg Y291bnQKPiAtCSAqCj4gLQkgKi8KPiAtCXRscHhfdWkgPSBESVZfUk9VTkRfVVAodGxweF9ucyAq IHVpX2RlbiwgdWlfbnVtKTsKPiAtCj4gLQkvKiBCMDQ0ICovCj4gLQkvKiBGSVhNRToKPiAtCSAq IFRoZSBjb21tZW50IGFib3ZlIGRvZXMgbm90IG1hdGNoIHdpdGggdGhlIGNvZGUgKi8KPiAtCWxw X3RvX2hzX3N3aXRjaCA9IERJVl9ST1VORF9VUCg0ICogdGxweF91aSArIHByZXBhcmVfY250ICog bXVsICsKPiAtCQkJCQkJZXhpdF96ZXJvX2NudCAqIG11bCArIDEwLCA4KTsKPiAtCj4gLQloc190 b19scF9zd2l0Y2ggPSBESVZfUk9VTkRfVVAobWlwaV9jb25maWctPnRoc190cmFpbCArIDIgKiB0 bHB4X3VpLCA4KTsKPiAtCj4gLQlpbnRlbF9kc2ktPmhzX3RvX2xwX2NvdW50ID0gbWF4KGxwX3Rv X2hzX3N3aXRjaCwgaHNfdG9fbHBfc3dpdGNoKTsKPiAtCWludGVsX2RzaS0+aHNfdG9fbHBfY291 bnQgKz0gZXh0cmFfYnl0ZV9jb3VudDsKPiAtCj4gLQkvKiBCMDg4ICovCj4gLQkvKiBMUCAtPiBI UyBmb3IgY2xvY2sgbGFuZXMKPiAtCSAqIExQIGNsayBzeW5jICsgTFAxMSArIExQMDEgKyB0Y2xr X3ByZXBhcmUgKyB0Y2xrX3plcm8gKwo+IC0JICoJCQkJCQlleHRyYSBieXRlIGNvdW50Cj4gLQkg KiAyVFBMWCArIDFUTFBYICsgMSBUUExYKGluIG5zKSArIHByZXBhcmVfY250ICogMiArIGNsa196 ZXJvX2NudCAqCj4gLQkgKgkJCQkJMihpbiBVSSkgKyBleHRyYSBieXRlIGNvdW50Cj4gLQkgKiBJ biBieXRlY2xrcyA9ICg0VExQWCArIHByZXBhcmVfY250ICogMiArIGNsa196ZXJvX2NudCAqMiAo aW4gVUkpKSAvCj4gLQkgKgkJCQkJOCArIGV4dHJhIGJ5dGUgY291bnQKPiAtCSAqLwo+IC0JaW50 ZWxfZHNpLT5jbGtfbHBfdG9faHNfY291bnQgPQo+IC0JCURJVl9ST1VORF9VUCgKPiAtCQkJNCAq IHRscHhfdWkgKyBwcmVwYXJlX2NudCAqIDIgKwo+IC0JCQljbGtfemVyb19jbnQgKiAyLAo+IC0J CQk4KTsKPiAtCj4gLQlpbnRlbF9kc2ktPmNsa19scF90b19oc19jb3VudCArPSBleHRyYV9ieXRl X2NvdW50Owo+IC0KPiAtCS8qIEhTLT5MUCBmb3IgQ2xvY2sgTGFuZXMKPiAtCSAqIExvdyBQb3dl ciBjbG9jayBzeW5jaHJvbmlzYXRpb25zICsgMVR4IGJ5dGVjbGsgKyB0Y2xrX3RyYWlsICsKPiAt CSAqCQkJCQkJRXh0cmEgYnl0ZSBjb3VudAo+IC0JICogMlRMUFggKyA4VUkgKyAodHJhaWxfY291 bnQqMikoaW4gVUkpICsgRXh0cmEgYnl0ZSBjb3VudAo+IC0JICogSW4gYnl0ZWNsa3MgPSAoMipU THB4KGluIFVJKSArIHRyYWlsX2NvdW50KjIgKzgpKGluIFVJKS84ICsKPiAtCSAqCQkJCQkJRXh0 cmEgYnl0ZSBjb3VudAo+IC0JICovCj4gLQlpbnRlbF9kc2ktPmNsa19oc190b19scF9jb3VudCA9 Cj4gLQkJRElWX1JPVU5EX1VQKDIgKiB0bHB4X3VpICsgdHJhaWxfY250ICogMiArIDgsCj4gLQkJ CTgpOwo+IC0JaW50ZWxfZHNpLT5jbGtfaHNfdG9fbHBfY291bnQgKz0gZXh0cmFfYnl0ZV9jb3Vu dDsKPiAtCj4gLQlpbnRlbF9kc2lfbG9nX3BhcmFtcyhpbnRlbF9kc2kpOwo+IC19Cj4gLQo+ICBi b29sIGludGVsX2RzaV92YnRfaW5pdChzdHJ1Y3QgaW50ZWxfZHNpICppbnRlbF9kc2ksIHUxNiBw YW5lbF9pZCkKPiAgewo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGludGVsX2RzaS0+YmFz ZS5iYXNlLmRldjsKPiBAQCAtOTI1LDExICs2NTAsNiBAQCBib29sIGludGVsX2RzaV92YnRfaW5p dChzdHJ1Y3QgaW50ZWxfZHNpICppbnRlbF9kc2ksIHUxNiBwYW5lbF9pZCkKPiAgCj4gIAlpbnRl bF9kc2ktPmJ1cnN0X21vZGVfcmF0aW8gPSBidXJzdF9tb2RlX3JhdGlvOwo+ICAKPiAtCWlmIChJ TlRFTF9HRU4oZGV2X3ByaXYpID49IDExKQo+IC0JCWljbF9kcGh5X3BhcmFtX2luaXQoaW50ZWxf ZHNpKTsKPiAtCWVsc2UKPiAtCQl2bHZfZHBoeV9wYXJhbV9pbml0KGludGVsX2RzaSk7Cj4gLQo+ ICAJLyogZGVsYXlzIGluIFZCVCBhcmUgaW4gdW5pdCBvZiAxMDB1cywgc28gbmVlZCB0byBjb252 ZXJ0Cj4gIAkgKiBoZXJlIGluIG1zCj4gIAkgKiBEZWxheSAoMTAwdXMpICogMTAwIC8xMDAwID0g RGVsYXkgLyAxMCAobXMpICovCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3Zs dl9kc2kuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3Zsdl9kc2kuYwo+IGluZGV4IDI1NTk5NmE3 MWI5MS4uNTk1MDBjODM4YjlkIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3Zs dl9kc2kuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3Zsdl9kc2kuYwo+IEBAIC0xNjg5 LDYgKzE2ODksMTc0IEBAIHN0YXRpYyB2b2lkIGludGVsX2RzaV9hZGRfcHJvcGVydGllcyhzdHJ1 Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCj4gIAl9Cj4gIH0KPiAgCj4gKyNkZWZpbmUg TlNfS0haX1JBVElPCQkxMDAwMDAwCj4gKwo+ICsjZGVmaW5lIFBSRVBBUkVfQ05UX01BWAkJMHgz Rgo+ICsjZGVmaW5lIEVYSVRfWkVST19DTlRfTUFYCTB4M0YKPiArI2RlZmluZSBDTEtfWkVST19D TlRfTUFYCTB4RkYKPiArI2RlZmluZSBUUkFJTF9DTlRfTUFYCQkweDFGCj4gKwo+ICtzdGF0aWMg dm9pZCB2bHZfZHBoeV9wYXJhbV9pbml0KHN0cnVjdCBpbnRlbF9kc2kgKmludGVsX2RzaSkKPiAr ewo+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGludGVsX2RzaS0+YmFzZS5iYXNlLmRldjsK PiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiAr CXN0cnVjdCBtaXBpX2NvbmZpZyAqbWlwaV9jb25maWcgPSBkZXZfcHJpdi0+dmJ0LmRzaS5jb25m aWc7Cj4gKwl1MzIgdGxweF9ucywgZXh0cmFfYnl0ZV9jb3VudCwgdGxweF91aTsKPiArCXUzMiB1 aV9udW0sIHVpX2RlbjsKPiArCXUzMiBwcmVwYXJlX2NudCwgZXhpdF96ZXJvX2NudCwgY2xrX3pl cm9fY250LCB0cmFpbF9jbnQ7Cj4gKwl1MzIgdGhzX3ByZXBhcmVfbnMsIHRjbGtfdHJhaWxfbnM7 Cj4gKwl1MzIgdGNsa19wcmVwYXJlX2Nsa3plcm8sIHRoc19wcmVwYXJlX2hzemVybzsKPiArCXUz MiBscF90b19oc19zd2l0Y2gsIGhzX3RvX2xwX3N3aXRjaDsKPiArCXUzMiBtdWw7Cj4gKwo+ICsJ dGxweF9ucyA9IGludGVsX2RzaV90bHB4X25zKGludGVsX2RzaSk7Cj4gKwo+ICsJc3dpdGNoIChp bnRlbF9kc2ktPmxhbmVfY291bnQpIHsKPiArCWNhc2UgMToKPiArCWNhc2UgMjoKPiArCQlleHRy YV9ieXRlX2NvdW50ID0gMjsKPiArCQlicmVhazsKPiArCWNhc2UgMzoKPiArCQlleHRyYV9ieXRl X2NvdW50ID0gNDsKPiArCQlicmVhazsKPiArCWNhc2UgNDoKPiArCWRlZmF1bHQ6Cj4gKwkJZXh0 cmFfYnl0ZV9jb3VudCA9IDM7Cj4gKwkJYnJlYWs7Cj4gKwl9Cj4gKwo+ICsJLyogaW4gS2JwcyAq Lwo+ICsJdWlfbnVtID0gTlNfS0haX1JBVElPOwo+ICsJdWlfZGVuID0gaW50ZWxfZHNpX2JpdHJh dGUoaW50ZWxfZHNpKTsKPiArCj4gKwl0Y2xrX3ByZXBhcmVfY2xremVybyA9IG1pcGlfY29uZmln LT50Y2xrX3ByZXBhcmVfY2xremVybzsKPiArCXRoc19wcmVwYXJlX2hzemVybyA9IG1pcGlfY29u ZmlnLT50aHNfcHJlcGFyZV9oc3plcm87Cj4gKwo+ICsJLyoKPiArCSAqIEIwNjAKPiArCSAqIExQ IGJ5dGUgY2xvY2sgPSBUTFBYLyAoOFVJKQo+ICsJICovCj4gKwlpbnRlbF9kc2ktPmxwX2J5dGVf Y2xrID0gRElWX1JPVU5EX1VQKHRscHhfbnMgKiB1aV9kZW4sIDggKiB1aV9udW0pOwo+ICsKPiAr CS8qIEREUiBjbG9jayBwZXJpb2QgPSAyICogVUkKPiArCSAqIFVJKHNlYykgPSAxLyhiaXRyYXRl ICogMTBeMykgKGJpdHJhdGUgaXMgaW4gS0haKQo+ICsJICogVUkobnNlYykgPSAxMF42IC8gYml0 cmF0ZQo+ICsJICogRERSIGNsb2NrIHBlcmlvZCAobnNlYykgPSAyICogVUkgPSAoMiAqIDEwXjYp LyBiaXRyYXRlCj4gKwkgKiBERFIgY2xvY2sgY291bnQgID0gbnNfdmFsdWUgLyBERFIgY2xvY2sg cGVyaW9kCj4gKwkgKgo+ICsJICogRm9yIEdFTUlOSUxBS0UgZHBoeV9wYXJhbV9yZWcgd2lsbCBi ZSBwcm9ncmFtbWVkIGluIHRlcm1zIG9mCj4gKwkgKiBIUyBieXRlIGNsb2NrIGNvdW50IGZvciBv dGhlciBwbGF0Zm9ybSBpbiBIUyBkZHIgY2xvY2sgY291bnQKPiArCSAqLwo+ICsJbXVsID0gSVNf R0VNSU5JTEFLRShkZXZfcHJpdikgPyA4IDogMjsKPiArCXRoc19wcmVwYXJlX25zID0gbWF4KG1p cGlfY29uZmlnLT50aHNfcHJlcGFyZSwKPiArCQkJICAgICBtaXBpX2NvbmZpZy0+dGNsa19wcmVw YXJlKTsKPiArCj4gKwkvKiBwcmVwYXJlIGNvdW50ICovCj4gKwlwcmVwYXJlX2NudCA9IERJVl9S T1VORF9VUCh0aHNfcHJlcGFyZV9ucyAqIHVpX2RlbiwgdWlfbnVtICogbXVsKTsKPiArCj4gKwlp ZiAocHJlcGFyZV9jbnQgPiBQUkVQQVJFX0NOVF9NQVgpIHsKPiArCQlEUk1fREVCVUdfS01TKCJw cmVwYXJlIGNvdW50IHRvbyBoaWdoICV1XG4iLCBwcmVwYXJlX2NudCk7Cj4gKwkJcHJlcGFyZV9j bnQgPSBQUkVQQVJFX0NOVF9NQVg7Cj4gKwl9Cj4gKwo+ICsJLyogZXhpdCB6ZXJvIGNvdW50ICov Cj4gKwlleGl0X3plcm9fY250ID0gRElWX1JPVU5EX1VQKAo+ICsJCQkJKHRoc19wcmVwYXJlX2hz emVybyAtIHRoc19wcmVwYXJlX25zKSAqIHVpX2RlbiwKPiArCQkJCXVpX251bSAqIG11bAo+ICsJ CQkJKTsKPiArCj4gKwkvKgo+ICsJICogRXhpdCB6ZXJvIGlzIHVuaWZpZWQgdmFsIHRoc196ZXJv IGFuZCB0aHNfZXhpdAo+ICsJICogbWluaW11bSB2YWx1ZSBmb3IgdGhzX2V4aXQgPSAxMTBucwo+ ICsJICogbWluIChleGl0X3plcm9fY250ICogMikgPSAxMTAvVUkKPiArCSAqIGV4aXRfemVyb19j bnQgPSA1NS9VSQo+ICsJICovCj4gKwlpZiAoZXhpdF96ZXJvX2NudCA8ICg1NSAqIHVpX2RlbiAv IHVpX251bSkgJiYgKDU1ICogdWlfZGVuKSAlIHVpX251bSkKPiArCQlleGl0X3plcm9fY250ICs9 IDE7Cj4gKwo+ICsJaWYgKGV4aXRfemVyb19jbnQgPiBFWElUX1pFUk9fQ05UX01BWCkgewo+ICsJ CURSTV9ERUJVR19LTVMoImV4aXQgemVybyBjb3VudCB0b28gaGlnaCAldVxuIiwgZXhpdF96ZXJv X2NudCk7Cj4gKwkJZXhpdF96ZXJvX2NudCA9IEVYSVRfWkVST19DTlRfTUFYOwo+ICsJfQo+ICsK PiArCS8qIGNsayB6ZXJvIGNvdW50ICovCj4gKwljbGtfemVyb19jbnQgPSBESVZfUk9VTkRfVVAo Cj4gKwkJCQkodGNsa19wcmVwYXJlX2Nsa3plcm8gLQl0aHNfcHJlcGFyZV9ucykKPiArCQkJCSog dWlfZGVuLCB1aV9udW0gKiBtdWwpOwo+ICsKPiArCWlmIChjbGtfemVyb19jbnQgPiBDTEtfWkVS T19DTlRfTUFYKSB7Cj4gKwkJRFJNX0RFQlVHX0tNUygiY2xvY2sgemVybyBjb3VudCB0b28gaGln aCAldVxuIiwgY2xrX3plcm9fY250KTsKPiArCQljbGtfemVyb19jbnQgPSBDTEtfWkVST19DTlRf TUFYOwo+ICsJfQo+ICsKPiArCS8qIHRyYWlsIGNvdW50ICovCj4gKwl0Y2xrX3RyYWlsX25zID0g bWF4KG1pcGlfY29uZmlnLT50Y2xrX3RyYWlsLCBtaXBpX2NvbmZpZy0+dGhzX3RyYWlsKTsKPiAr CXRyYWlsX2NudCA9IERJVl9ST1VORF9VUCh0Y2xrX3RyYWlsX25zICogdWlfZGVuLCB1aV9udW0g KiBtdWwpOwo+ICsKPiArCWlmICh0cmFpbF9jbnQgPiBUUkFJTF9DTlRfTUFYKSB7Cj4gKwkJRFJN X0RFQlVHX0tNUygidHJhaWwgY291bnQgdG9vIGhpZ2ggJXVcbiIsIHRyYWlsX2NudCk7Cj4gKwkJ dHJhaWxfY250ID0gVFJBSUxfQ05UX01BWDsKPiArCX0KPiArCj4gKwkvKiBCMDgwICovCj4gKwlp bnRlbF9kc2ktPmRwaHlfcmVnID0gZXhpdF96ZXJvX2NudCA8PCAyNCB8IHRyYWlsX2NudCA8PCAx NiB8Cj4gKwkJCQkJCWNsa196ZXJvX2NudCA8PCA4IHwgcHJlcGFyZV9jbnQ7Cj4gKwo+ICsJLyoK PiArCSAqIExQIHRvIEhTIHN3aXRjaCBjb3VudCA9IDRUTFBYICsgUFJFUF9DT1VOVCAqIG11bCAr IEVYSVRfWkVST19DT1VOVCAqCj4gKwkgKgkJCQkJbXVsICsgMTBVSSArIEV4dHJhIEJ5dGUgQ291 bnQKPiArCSAqCj4gKwkgKiBIUyB0byBMUCBzd2l0Y2ggY291bnQgPSBUSFMtVFJBSUwgKyAyVExQ WCArIEV4dHJhIEJ5dGUgQ291bnQKPiArCSAqIEV4dHJhIEJ5dGUgQ291bnQgaXMgY2FsY3VsYXRl ZCBhY2NvcmRpbmcgdG8gbnVtYmVyIG9mIGxhbmVzLgo+ICsJICogSGlnaCBMb3cgU3dpdGNoIENv dW50IGlzIHRoZSBNYXggb2YgTFAgdG8gSFMgYW5kCj4gKwkgKiBIUyB0byBMUCBzd2l0Y2ggY291 bnQKPiArCSAqCj4gKwkgKi8KPiArCXRscHhfdWkgPSBESVZfUk9VTkRfVVAodGxweF9ucyAqIHVp X2RlbiwgdWlfbnVtKTsKPiArCj4gKwkvKiBCMDQ0ICovCj4gKwkvKiBGSVhNRToKPiArCSAqIFRo ZSBjb21tZW50IGFib3ZlIGRvZXMgbm90IG1hdGNoIHdpdGggdGhlIGNvZGUgKi8KPiArCWxwX3Rv X2hzX3N3aXRjaCA9IERJVl9ST1VORF9VUCg0ICogdGxweF91aSArIHByZXBhcmVfY250ICogbXVs ICsKPiArCQkJCQkJZXhpdF96ZXJvX2NudCAqIG11bCArIDEwLCA4KTsKPiArCj4gKwloc190b19s cF9zd2l0Y2ggPSBESVZfUk9VTkRfVVAobWlwaV9jb25maWctPnRoc190cmFpbCArIDIgKiB0bHB4 X3VpLCA4KTsKPiArCj4gKwlpbnRlbF9kc2ktPmhzX3RvX2xwX2NvdW50ID0gbWF4KGxwX3RvX2hz X3N3aXRjaCwgaHNfdG9fbHBfc3dpdGNoKTsKPiArCWludGVsX2RzaS0+aHNfdG9fbHBfY291bnQg Kz0gZXh0cmFfYnl0ZV9jb3VudDsKPiArCj4gKwkvKiBCMDg4ICovCj4gKwkvKiBMUCAtPiBIUyBm b3IgY2xvY2sgbGFuZXMKPiArCSAqIExQIGNsayBzeW5jICsgTFAxMSArIExQMDEgKyB0Y2xrX3By ZXBhcmUgKyB0Y2xrX3plcm8gKwo+ICsJICoJCQkJCQlleHRyYSBieXRlIGNvdW50Cj4gKwkgKiAy VFBMWCArIDFUTFBYICsgMSBUUExYKGluIG5zKSArIHByZXBhcmVfY250ICogMiArIGNsa196ZXJv X2NudCAqCj4gKwkgKgkJCQkJMihpbiBVSSkgKyBleHRyYSBieXRlIGNvdW50Cj4gKwkgKiBJbiBi eXRlY2xrcyA9ICg0VExQWCArIHByZXBhcmVfY250ICogMiArIGNsa196ZXJvX2NudCAqMiAoaW4g VUkpKSAvCj4gKwkgKgkJCQkJOCArIGV4dHJhIGJ5dGUgY291bnQKPiArCSAqLwo+ICsJaW50ZWxf ZHNpLT5jbGtfbHBfdG9faHNfY291bnQgPQo+ICsJCURJVl9ST1VORF9VUCgKPiArCQkJNCAqIHRs cHhfdWkgKyBwcmVwYXJlX2NudCAqIDIgKwo+ICsJCQljbGtfemVyb19jbnQgKiAyLAo+ICsJCQk4 KTsKPiArCj4gKwlpbnRlbF9kc2ktPmNsa19scF90b19oc19jb3VudCArPSBleHRyYV9ieXRlX2Nv dW50Owo+ICsKPiArCS8qIEhTLT5MUCBmb3IgQ2xvY2sgTGFuZXMKPiArCSAqIExvdyBQb3dlciBj bG9jayBzeW5jaHJvbmlzYXRpb25zICsgMVR4IGJ5dGVjbGsgKyB0Y2xrX3RyYWlsICsKPiArCSAq CQkJCQkJRXh0cmEgYnl0ZSBjb3VudAo+ICsJICogMlRMUFggKyA4VUkgKyAodHJhaWxfY291bnQq MikoaW4gVUkpICsgRXh0cmEgYnl0ZSBjb3VudAo+ICsJICogSW4gYnl0ZWNsa3MgPSAoMipUTHB4 KGluIFVJKSArIHRyYWlsX2NvdW50KjIgKzgpKGluIFVJKS84ICsKPiArCSAqCQkJCQkJRXh0cmEg Ynl0ZSBjb3VudAo+ICsJICovCj4gKwlpbnRlbF9kc2ktPmNsa19oc190b19scF9jb3VudCA9Cj4g KwkJRElWX1JPVU5EX1VQKDIgKiB0bHB4X3VpICsgdHJhaWxfY250ICogMiArIDgsCj4gKwkJCTgp Owo+ICsJaW50ZWxfZHNpLT5jbGtfaHNfdG9fbHBfY291bnQgKz0gZXh0cmFfYnl0ZV9jb3VudDsK PiArCj4gKwlpbnRlbF9kc2lfbG9nX3BhcmFtcyhpbnRlbF9kc2kpOwo+ICt9Cj4gKwo+ICB2b2lk IHZsdl9kc2lfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIHsKPiAg CXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSAmZGV2X3ByaXYtPmRybTsKPiBAQCAtMTc3OCw2ICsx OTQ2LDggQEAgdm9pZCB2bHZfZHNpX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQo+ICAJCWdvdG8gZXJyOwo+ICAJfQo+ICAKPiArCXZsdl9kcGh5X3BhcmFtX2luaXQoaW50 ZWxfZHNpKTsKPiArCj4gIAkvKgo+ICAJICogSW4gY2FzZSBvZiBCWVQgd2l0aCBDUkMgUE1JQywg d2UgbmVlZCB0byB1c2UgR1BJTyBmb3IKPiAgCSAqIFBhbmVsIGNvbnRyb2wuCj4gLS0gCj4gMi4y MS4wCgotLSAKVmlsbGUgU3lyasOkbMOkCkludGVsCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxp c3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2ludGVsLWdmeA==