From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 3/3] drm/i915: Pass atomic state to backlight enable/disable/set callbacks. Date: Mon, 12 Jun 2017 17:31:17 +0300 Message-ID: <20170612143117.GH12629@intel.com> References: <20170612102115.23665-1-maarten.lankhorst@linux.intel.com> <20170612102115.23665-4-maarten.lankhorst@linux.intel.com> <20170612124804.GA12629@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 356CE89CB2 for ; Mon, 12 Jun 2017 14:31:22 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20170612124804.GA12629@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Maarten Lankhorst Cc: Puthikorn Voravootivat , Jani Nikula , intel-gfx@lists.freedesktop.org, Dhinakaran Pandiyan List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCBKdW4gMTIsIDIwMTcgYXQgMDM6NDg6MDRQTSArMDMwMCwgVmlsbGUgU3lyasOkbMOk IHdyb3RlOgo+IE9uIE1vbiwgSnVuIDEyLCAyMDE3IGF0IDEyOjIxOjE1UE0gKzAyMDAsIE1hYXJ0 ZW4gTGFua2hvcnN0IHdyb3RlOgo+ID4gUGFzcyBjcnRjX3N0YXRlIHRvIHRoZSBlbmFibGUgY2Fs bGJhY2ssIGFuZCBjb25uZWN0b3Jfc3RhdGUgdG8gYWxsIGNhbGxiYWNrcy4KPiA+IFRoaXMgd2ls bCBlbGltaW5hdGUgdGhlIG5lZWQgdG8gZ3Vlc3MgZm9yIHRoZSBjb3JyZWN0IHBpcGUgaW4gdGhl c2UKPiA+IGNhbGxiYWNrcy4KPiA+IAo+ID4gVGhlIGNydGMgc3RhdGUgaXMgcmVxdWlyZWQgZm9y IHBjaF9lbmFibGVfYmFja2xpZ2h0IHRvIG9idGFpbiB0aGUgY29ycmVjdAo+ID4gY3B1X3RyYW5z Y29kZXIuCj4gPiAKPiA+IGludGVsX2RwX2F1eF9iYWNrbGlnaHQncyBzZXR1cCBmdW5jdGlvbiBp cyBjYWxsZWQgYmVmb3JlIGh3IHJlYWRvdXQsIHNvCj4gPiBjcnRjX3N0YXRlIGFuZCBjb25uZWN0 b3Jfc3RhdGUtPmJlc3RfZW5jb2RlciBhcmUgTlVMTCBpbiB0aGUgZW5hYmxlKCkKPiA+IGFuZCBz ZXQoKSBjYWxsYmFja3MuCj4gCj4gVGhpcyBsb29rcyBsaWtlIGEgYnVnIGluIHRoZSBjb2RlLiBN YXNzYWdpbmcgdGhlIGJhY2tsaWdodCBkdXJpbmcgc2V0dXAKPiBkb2Vzbid0IHNlZW0gbGlrZSB0 aGUgcmlnaHQgdGhpbmcgdG8gZG8uIEl0IHNob3VsZCByZWFkIHRoZSBjdXJyZW50Cj4gc3RhdGUg aW5zdGVhZCBvZiBtb2RpZnlpbmcgaXQuIFNvIHRoaXMgaXMgc29tZXRoaW5nIHRoYXQgdGhlIHJl bGV2YW50Cj4gcGVvcGxlIHNob3VsZCB0YWtlIGEgbG9vayBhdC4gQ2M6aW5nIHNvbWUgcGVvcGxl Li4uCgpOb3cgcmVhbGx5IGNjOmluZyEKCj4gCj4gQW55d2F5cywgdGhlIHNlcmllcyBsb29rcyBn b29kIHRvIG1lLCBzbwo+IFJldmlld2VkLWJ5OiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmph bGFAbGludXguaW50ZWwuY29tPgo+IAo+ID4gCj4gPiBUaGlzIGZpeGVzIHRoZSBmb2xsb3dpbmcg c2VyaWVzIG9mIHdhcm5zIGZyb20gaW50ZWxfZ2V0X3BpcGVfZnJvbV9jb25uZWN0b3I6Cj4gPiBb ICAyMTkuOTY4NDI4XSAtLS0tLS0tLS0tLS1bIGN1dCBoZXJlIF0tLS0tLS0tLS0tLS0KPiA+IFsg IDIxOS45Njg0ODFdIFdBUk5JTkc6IENQVTogMyBQSUQ6IDI0NTcgYXQKPiA+IGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYzoxMzg4MQo+ID4gaW50ZWxfZ2V0X3BpcGVfZnJvbV9j b25uZWN0b3IrMHg2Mi8weDkwIFtpOTE1XQo+ID4gWyAgMjE5Ljk2ODQ4M10KPiA+IFdBUk5fT04o IWRybV9tb2Rlc2V0X2lzX2xvY2tlZCgmZGV2LT5tb2RlX2NvbmZpZy5jb25uZWN0aW9uX211dGV4 KSkKPiA+IFsgIDIxOS45Njg0ODVdIE1vZHVsZXMgbGlua2VkIGluOiBubHNfaXNvODg1OV8xIHNu ZF9oZGFfY29kZWNfaGRtaQo+ID4gc25kX2hkYV9jb2RlY19yZWFsdGVrIHNuZF9oZGFfY29kZWNf Z2VuZXJpYyBzbmRfaGRhX2ludGVsIHNuZF9oZGFfY29kZWMKPiA+IHNuZF9oZGFfY29yZSBzbmRf aHdkZXAgc25kX3BjbSBpbnRlbF9yYXBsIHg4Nl9wa2dfdGVtcF90aGVybWFsIGNvcmV0ZW1wCj4g PiBrdm1faW50ZWwgc25kX3NlcV9taWRpIHNuZF9zZXFfbWlkaV9ldmVudCBrdm0gc25kX3Jhd21p ZGkgaXJxYnlwYXNzCj4gPiBjcmN0MTBkaWZfcGNsbXVsIGNyYzMyX3BjbG11bCBnaGFzaF9jbG11 bG5pX2ludGVsIHBjYmMgc25kX3NlcQo+ID4gc25kX3NlcV9kZXZpY2Ugc2VyaW9fcmF3IHNuZF90 aW1lciBhZXNuaV9pbnRlbCBhZXNfeDg2XzY0IGNyeXB0b19zaW1kCj4gPiBnbHVlX2hlbHBlciBj cnlwdGQgbHBjX2ljaCBzbmQgbWVpX21lIHNocGNocCBzb3VuZGNvcmUgbWVpIHJma2lsbF9ncGlv Cj4gPiBtYWNfaGlkIGludGVsX3BtY19pcGMgcGFycG9ydF9wYyBwcGRldiBscCBwYXJwb3J0IGlw X3RhYmxlcyB4X3RhYmxlcwo+ID4gYXV0b2ZzNCBoaWRfZ2VuZXJpYyB1c2JoaWQgaWdiIGFoY2kg aTkxNSB4aGNpX3BjaSBkY2EgeGhjaV9oY2QgcHRwCj4gPiBzZGhjaV9wY2kgc2RoY2kgbGliYWhj aSBwcHNfY29yZSBpMmNfaGlkIGhpZCB2aWRlbwo+ID4gWyAgMjE5Ljk2ODU3M10gQ1BVOiAzIFBJ RDogMjQ1NyBDb21tOiBrd29ya2VyL3U4OjMgVGFpbnRlZDogRyAgICAgICAgVwo+ID4gNC4xMC4w LXRpcC0yMDE3MDMwMTAxNTkrICMyCj4gPiBbICAyMTkuOTY4NTc1XSBIYXJkd2FyZSBuYW1lOiBJ bnRlbCBDb3JwLiBCcm94dG9uIFAvTk9URUJPT0ssIEJJT1MKPiA+IEFQTEtSVlBBLlg2NC4wMTQ0 LkIxMC4xNjA2MjcwMDA2IDA2LzI3LzIwMTYKPiA+IFsgIDIxOS45Njg2MjddIFdvcmtxdWV1ZTog ZXZlbnRzX3VuYm91bmQgaW50ZWxfYXRvbWljX2NvbW1pdF93b3JrIFtpOTE1XQo+ID4gWyAgMjE5 Ljk2ODYyOV0gQ2FsbCBUcmFjZToKPiA+IFsgIDIxOS45Njg2NDBdICBkdW1wX3N0YWNrKzB4NjMv MHg4Nwo+ID4gWyAgMjE5Ljk2ODY0Nl0gIF9fd2FybisweGQxLzB4ZjAKPiA+IFsgIDIxOS45Njg2 NTFdICB3YXJuX3Nsb3dwYXRoX2ZtdCsweDRmLzB4NjAKPiA+IFsgIDIxOS45Njg2NTddICA/IGRy bV9wcmludGsrMHg5Ny8weGEwCj4gPiBbICAyMTkuOTY4NzA4XSAgaW50ZWxfZ2V0X3BpcGVfZnJv bV9jb25uZWN0b3IrMHg2Mi8weDkwIFtpOTE1XQo+ID4gWyAgMjE5Ljk2ODc1Nl0gIGludGVsX3Bh bmVsX2VuYWJsZV9iYWNrbGlnaHQrMHgxOS8weGYwIFtpOTE1XQo+ID4gWyAgMjE5Ljk2ODgwNF0g IGludGVsX2VkcF9iYWNrbGlnaHRfb24ucGFydC4yMisweDMzLzB4NDAgW2k5MTVdCj4gPiBbICAy MTkuOTY4ODUyXSAgaW50ZWxfZWRwX2JhY2tsaWdodF9vbisweDE4LzB4MjAgW2k5MTVdCj4gPiBb ICAyMTkuOTY4OTAwXSAgaW50ZWxfZW5hYmxlX2RkaSsweDk0LzB4YzAgW2k5MTVdCj4gPiBbICAy MTkuOTY4OTUwXSAgaW50ZWxfZW5jb2RlcnNfZW5hYmxlLmlzcmEuOTMrMHg3Ny8weDkwIFtpOTE1 XQo+ID4gWyAgMjE5Ljk2OTAwMF0gIGhhc3dlbGxfY3J0Y19lbmFibGUrMHgzMTAvMHg3ZjAgW2k5 MTVdCj4gPiBbICAyMTkuOTY5MDUxXSAgaW50ZWxfdXBkYXRlX2NydGMrMHg1OC8weDEwMCBbaTkx NV0KPiA+IFsgIDIxOS45NjkxMDFdICBza2xfdXBkYXRlX2NydGNzKzB4MjE4LzB4MjQwIFtpOTE1 XQo+ID4gWyAgMjE5Ljk2OTE1M10gIGludGVsX2F0b21pY19jb21taXRfdGFpbCsweDM1MC8weDEw MDAgW2k5MTVdCj4gPiBbICAyMTkuOTY5MTU5XSAgPyB2dGltZV9hY2NvdW50X2lkbGUrMHhlLzB4 NTAKPiA+IFsgIDIxOS45NjkxNjRdICA/IGZpbmlzaF90YXNrX3N3aXRjaCsweDEwNy8weDI1MAo+ ID4gWyAgMjE5Ljk2OTIxNF0gIGludGVsX2F0b21pY19jb21taXRfd29yaysweDEyLzB4MjAgW2k5 MTVdCj4gPiBbICAyMTkuOTY5MjE5XSAgcHJvY2Vzc19vbmVfd29yaysweDE1My8weDNmMAo+ID4g WyAgMjE5Ljk2OTIyM10gIHdvcmtlcl90aHJlYWQrMHgxMmIvMHg0YjAKPiA+IFsgIDIxOS45Njky MjddICBrdGhyZWFkKzB4MTAxLzB4MTQwCj4gPiBbICAyMTkuOTY5MjMwXSAgPyByZXNjdWVyX3Ro cmVhZCsweDM0MC8weDM0MAo+ID4gWyAgMjE5Ljk2OTIzM10gID8ga3RocmVhZF9wYXJrKzB4OTAv MHg5MAo+ID4gWyAgMjE5Ljk2OTIzN10gID8gZG9fc3lzY2FsbF82NCsweDZlLzB4MTgwCj4gPiBb ICAyMTkuOTY5MjQzXSAgcmV0X2Zyb21fZm9yaysweDJjLzB4NDAKPiA+IFsgIDIxOS45NjkyNDZd IC0tLVsgZW5kIHRyYWNlIDBhOGZhMTkzODdiOWFkNmQgXS0tLQo+ID4gCj4gPiBCdWd6aWxsYTog aHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwMDIyCj4gPiBT aWduZWQtb2ZmLWJ5OiBNYWFydGVuIExhbmtob3JzdCA8bWFhcnRlbi5sYW5raG9yc3RAbGludXgu aW50ZWwuY29tPgo+ID4gLS0tCj4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBfYXV4 X2JhY2tsaWdodC5jICB8ICAyNSArKy0tCj4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHJ2LmggICAgICAgICAgICAgICB8ICAgNyArLQo+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2RzaV9kY3NfYmFja2xpZ2h0LmMgfCAgMjIgKystLQo+ID4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3BhbmVsLmMgICAgICAgICAgICAgfCAxNTcgKysrKysrKysrKysrKy0tLS0tLS0t LS0tLQo+ID4gIDQgZmlsZXMgY2hhbmdlZCwgMTE1IGluc2VydGlvbnMoKyksIDk2IGRlbGV0aW9u cygtKQo+ID4gCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBf YXV4X2JhY2tsaWdodC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBfYXV4X2JhY2ts aWdodC5jCj4gPiBpbmRleCBhMDk5NWMwMGZjODQuLjZjYzYyOTgwZDBkYSAxMDA2NDQKPiA+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX2F1eF9iYWNrbGlnaHQuYwo+ID4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBfYXV4X2JhY2tsaWdodC5jCj4gPiBAQCAt NzgsOCArNzgsMTMgQEAgc3RhdGljIHVpbnQzMl90IGludGVsX2RwX2F1eF9nZXRfYmFja2xpZ2h0 KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiA+ICAgKiA4LWJpdCBvciAxNiBi aXQgdmFsdWUgKE1TQiBhbmQgTFNCKQo+ID4gICAqLwo+ID4gIHN0YXRpYyB2b2lkCj4gPiAtaW50 ZWxfZHBfYXV4X3NldF9iYWNrbGlnaHQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9y LCB1MzIgbGV2ZWwpCj4gPiAraW50ZWxfZHBfYXV4X3NldF9iYWNrbGlnaHQoY29uc3Qgc3RydWN0 IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGUsIHUzMiBsZXZlbCkKPiA+ICB7Cj4gPiAr CS8qCj4gPiArCSAqIGNvbm5fc3RhdGUtPmJlc3RfZW5jb2RlciBpcyBsaWtlbHkgTlVMTCB3aGVu IGNhbGxlZCBmcm9tCj4gPiArCSAqIGludGVsX2RwX2F1eF9zZXR1cF9iYWNrbGlnaHQoKQo+ID4g KwkgKi8KPiA+ICsJc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yID0gdG9faW50ZWxf Y29ubmVjdG9yKGNvbm5fc3RhdGUtPmNvbm5lY3Rvcik7Cj4gPiAgCXN0cnVjdCBpbnRlbF9kcCAq aW50ZWxfZHAgPSBlbmNfdG9faW50ZWxfZHAoJmNvbm5lY3Rvci0+ZW5jb2Rlci0+YmFzZSk7Cj4g PiAgCXVpbnQ4X3QgdmFsc1syXSA9IHsgMHgwIH07Cj4gPiAgCj4gPiBAQCAtOTcsOCArMTAyLDE0 IEBAIGludGVsX2RwX2F1eF9zZXRfYmFja2xpZ2h0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNv bm5lY3RvciwgdTMyIGxldmVsKQo+ID4gIAl9Cj4gPiAgfQo+ID4gIAo+ID4gLXN0YXRpYyB2b2lk IGludGVsX2RwX2F1eF9lbmFibGVfYmFja2xpZ2h0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNv bm5lY3RvcikKPiA+ICtzdGF0aWMgdm9pZCBpbnRlbF9kcF9hdXhfZW5hYmxlX2JhY2tsaWdodChj b25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiA+ICsJCQkJCSAgY29u c3Qgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGUpCj4gPiAgewo+ID4gKwlz dHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IgPSB0b19pbnRlbF9jb25uZWN0b3IoY29u bl9zdGF0ZS0+Y29ubmVjdG9yKTsKPiA+ICsJLyoKPiA+ICsJICogY29ubl9zdGF0ZS0+YmVzdF9l bmNvZGVyIChhbmQgY3J0Y19zdGF0ZSkgYXJlIE5VTEwgd2hlbiBjYWxsZWQgZnJvbQo+ID4gKwkg KiBpbnRlbF9kcF9hdXhfc2V0dXBfYmFja2xpZ2h0KCkKPiA+ICsJICovCj4gPiAgCXN0cnVjdCBp bnRlbF9kcCAqaW50ZWxfZHAgPSBlbmNfdG9faW50ZWxfZHAoJmNvbm5lY3Rvci0+ZW5jb2Rlci0+ YmFzZSk7Cj4gPiAgCXVpbnQ4X3QgZHBjZF9idWYgPSAwOwo+ID4gIAl1aW50OF90IGVkcF9iYWNr bGlnaHRfbW9kZSA9IDA7Cj4gPiBAQCAtMTMxLDEyICsxNDIsMTIgQEAgc3RhdGljIHZvaWQgaW50 ZWxfZHBfYXV4X2VuYWJsZV9iYWNrbGlnaHQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVj dG9yKQo+ID4gIAl9Cj4gPiAgCj4gPiAgCXNldF9hdXhfYmFja2xpZ2h0X2VuYWJsZShpbnRlbF9k cCwgdHJ1ZSk7Cj4gPiAtCWludGVsX2RwX2F1eF9zZXRfYmFja2xpZ2h0KGNvbm5lY3RvciwgY29u bmVjdG9yLT5wYW5lbC5iYWNrbGlnaHQubGV2ZWwpOwo+ID4gKwlpbnRlbF9kcF9hdXhfc2V0X2Jh Y2tsaWdodChjb25uX3N0YXRlLCBjb25uZWN0b3ItPnBhbmVsLmJhY2tsaWdodC5sZXZlbCk7Cj4g PiAgfQo+ID4gIAo+ID4gLXN0YXRpYyB2b2lkIGludGVsX2RwX2F1eF9kaXNhYmxlX2JhY2tsaWdo dChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCj4gPiArc3RhdGljIHZvaWQgaW50 ZWxfZHBfYXV4X2Rpc2FibGVfYmFja2xpZ2h0KGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0 YXRlICpvbGRfY29ubl9zdGF0ZSkKPiA+ICB7Cj4gPiAtCXNldF9hdXhfYmFja2xpZ2h0X2VuYWJs ZShlbmNfdG9faW50ZWxfZHAoJmNvbm5lY3Rvci0+ZW5jb2Rlci0+YmFzZSksIGZhbHNlKTsKPiA+ ICsJc2V0X2F1eF9iYWNrbGlnaHRfZW5hYmxlKGVuY190b19pbnRlbF9kcChvbGRfY29ubl9zdGF0 ZS0+YmVzdF9lbmNvZGVyKSwgZmFsc2UpOwo+ID4gIH0KPiA+ICAKPiA+ICBzdGF0aWMgaW50IGlu dGVsX2RwX2F1eF9zZXR1cF9iYWNrbGlnaHQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVj dG9yLAo+ID4gQEAgLTE0NSw3ICsxNTYsNyBAQCBzdGF0aWMgaW50IGludGVsX2RwX2F1eF9zZXR1 cF9iYWNrbGlnaHQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ID4gIAlzdHJ1 Y3QgaW50ZWxfZHAgKmludGVsX2RwID0gZW5jX3RvX2ludGVsX2RwKCZjb25uZWN0b3ItPmVuY29k ZXItPmJhc2UpOwo+ID4gIAlzdHJ1Y3QgaW50ZWxfcGFuZWwgKnBhbmVsID0gJmNvbm5lY3Rvci0+ cGFuZWw7Cj4gPiAgCj4gPiAtCWludGVsX2RwX2F1eF9lbmFibGVfYmFja2xpZ2h0KGNvbm5lY3Rv cik7Cj4gPiArCWludGVsX2RwX2F1eF9lbmFibGVfYmFja2xpZ2h0KE5VTEwsIGNvbm5lY3Rvci0+ YmFzZS5zdGF0ZSk7Cj4gPiAgCj4gPiAgCWlmIChpbnRlbF9kcC0+ZWRwX2RwY2RbMl0gJiBEUF9F RFBfQkFDS0xJR0hUX0JSSUdIVE5FU1NfQllURV9DT1VOVCkKPiA+ICAJCXBhbmVsLT5iYWNrbGln aHQubWF4ID0gMHhGRkZGOwo+ID4gQEAgLTE2NSw3ICsxNzYsNyBAQCBpbnRlbF9kcF9hdXhfZGlz cGxheV9jb250cm9sX2NhcGFibGUoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ ID4gIHsKPiA+ICAJc3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9IGVuY190b19pbnRlbF9kcCgm Y29ubmVjdG9yLT5lbmNvZGVyLT5iYXNlKTsKPiA+ICAKPiA+IC0JLyogQ2hlY2sgdGhlICBlRFAg RGlzcGxheSBjb250cm9sIGNhcGFiaWxpdGllcyByZWdpc3RlcnMgdG8gZGV0ZXJtaW5lIGlmCj4g PiArCS8qIENoZWNrIHRoZSBlRFAgRGlzcGxheSBjb250cm9sIGNhcGFiaWxpdGllcyByZWdpc3Rl cnMgdG8gZGV0ZXJtaW5lIGlmCj4gPiAgCSAqIHRoZSBwYW5lbCBjYW4gc3VwcG9ydCBiYWNrbGln aHQgY29udHJvbCBvdmVyIHRoZSBhdXggY2hhbm5lbAo+ID4gIAkgKi8KPiA+ICAJaWYgKGludGVs X2RwLT5lZHBfZHBjZFsxXSAmIERQX0VEUF9UQ09OX0JBQ0tMSUdIVF9BREpVU1RNRU5UX0NBUCAm Jgo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiA+IGluZGV4IGRiMjA0MmE3NWQ0Mi4uMTg1 MjhhNDc3Y2Y2IDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2 LmgKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gPiBAQCAtMjg4 LDkgKzI4OCwxMCBAQCBzdHJ1Y3QgaW50ZWxfcGFuZWwgewo+ID4gIAkJLyogQ29ubmVjdG9yIGFu ZCBwbGF0Zm9ybSBzcGVjaWZpYyBiYWNrbGlnaHQgZnVuY3Rpb25zICovCj4gPiAgCQlpbnQgKCpz ZXR1cCkoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLCBlbnVtIHBpcGUgcGlwZSk7 Cj4gPiAgCQl1aW50MzJfdCAoKmdldCkoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9y KTsKPiA+IC0JCXZvaWQgKCpzZXQpKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3Rvciwg dWludDMyX3QgbGV2ZWwpOwo+ID4gLQkJdm9pZCAoKmRpc2FibGUpKHN0cnVjdCBpbnRlbF9jb25u ZWN0b3IgKmNvbm5lY3Rvcik7Cj4gPiAtCQl2b2lkICgqZW5hYmxlKShzdHJ1Y3QgaW50ZWxfY29u bmVjdG9yICpjb25uZWN0b3IpOwo+ID4gKwkJdm9pZCAoKnNldCkoY29uc3Qgc3RydWN0IGRybV9j b25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGUsIHVpbnQzMl90IGxldmVsKTsKPiA+ICsJCXZvaWQg KCpkaXNhYmxlKShjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZSk7 Cj4gPiArCQl2b2lkICgqZW5hYmxlKShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0 Y19zdGF0ZSwKPiA+ICsJCQkgICAgICAgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUg KmNvbm5fc3RhdGUpOwo+ID4gIAkJdWludDMyX3QgKCpoel90b19wd20pKHN0cnVjdCBpbnRlbF9j b25uZWN0b3IgKmNvbm5lY3RvciwKPiA+ICAJCQkJICAgICAgdWludDMyX3QgaHopOwo+ID4gIAkJ dm9pZCAoKnBvd2VyKShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICosIGJvb2wgZW5hYmxlKTsKPiA+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kc2lfZGNzX2JhY2tsaWdo dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHNpX2Rjc19iYWNrbGlnaHQuYwo+ID4g aW5kZXggYWM3YzYwMjBjNDQzLi42ZTA5Y2ViNzE1MDAgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kc2lfZGNzX2JhY2tsaWdodC5jCj4gPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kc2lfZGNzX2JhY2tsaWdodC5jCj4gPiBAQCAtNjAsMTAgKzYw LDkgQEAgc3RhdGljIHUzMiBkY3NfZ2V0X2JhY2tsaWdodChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9y ICpjb25uZWN0b3IpCj4gPiAgCXJldHVybiBkYXRhOwo+ID4gIH0KPiA+ICAKPiA+IC1zdGF0aWMg dm9pZCBkY3Nfc2V0X2JhY2tsaWdodChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3Is IHUzMiBsZXZlbCkKPiA+ICtzdGF0aWMgdm9pZCBkY3Nfc2V0X2JhY2tsaWdodChjb25zdCBzdHJ1 Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZSwgdTMyIGxldmVsKQo+ID4gIHsKPiA+ IC0Jc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIgPSBjb25uZWN0b3ItPmVuY29kZXI7Cj4g PiAtCXN0cnVjdCBpbnRlbF9kc2kgKmludGVsX2RzaSA9IGVuY190b19pbnRlbF9kc2koJmVuY29k ZXItPmJhc2UpOwo+ID4gKwlzdHJ1Y3QgaW50ZWxfZHNpICppbnRlbF9kc2kgPSBlbmNfdG9faW50 ZWxfZHNpKGNvbm5fc3RhdGUtPmJlc3RfZW5jb2Rlcik7Cj4gPiAgCXN0cnVjdCBtaXBpX2RzaV9k ZXZpY2UgKmRzaV9kZXZpY2U7Cj4gPiAgCXU4IGRhdGEgPSBsZXZlbDsKPiA+ICAJZW51bSBwb3J0 IHBvcnQ7Cj4gPiBAQCAtNzYsMTQgKzc1LDEzIEBAIHN0YXRpYyB2b2lkIGRjc19zZXRfYmFja2xp Z2h0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwgdTMyIGxldmVsKQo+ID4gIAl9 Cj4gPiAgfQo+ID4gIAo+ID4gLXN0YXRpYyB2b2lkIGRjc19kaXNhYmxlX2JhY2tsaWdodChzdHJ1 Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCj4gPiArc3RhdGljIHZvaWQgZGNzX2Rpc2Fi bGVfYmFja2xpZ2h0KGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRl KQo+ID4gIHsKPiA+IC0Jc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIgPSBjb25uZWN0b3It PmVuY29kZXI7Cj4gPiAtCXN0cnVjdCBpbnRlbF9kc2kgKmludGVsX2RzaSA9IGVuY190b19pbnRl bF9kc2koJmVuY29kZXItPmJhc2UpOwo+ID4gKwlzdHJ1Y3QgaW50ZWxfZHNpICppbnRlbF9kc2kg PSBlbmNfdG9faW50ZWxfZHNpKGNvbm5fc3RhdGUtPmJlc3RfZW5jb2Rlcik7Cj4gPiAgCXN0cnVj dCBtaXBpX2RzaV9kZXZpY2UgKmRzaV9kZXZpY2U7Cj4gPiAgCWVudW0gcG9ydCBwb3J0Owo+ID4g IAo+ID4gLQlkY3Nfc2V0X2JhY2tsaWdodChjb25uZWN0b3IsIDApOwo+ID4gKwlkY3Nfc2V0X2Jh Y2tsaWdodChjb25uX3N0YXRlLCAwKTsKPiA+ICAKPiA+ICAJZm9yX2VhY2hfZHNpX3BvcnQocG9y dCwgaW50ZWxfZHNpLT5kY3NfY2FiY19wb3J0cykgewo+ID4gIAkJdTggY2FiYyA9IFBPV0VSX1NB VkVfT0ZGOwo+ID4gQEAgLTExMCwxMSArMTA4LDExIEBAIHN0YXRpYyB2b2lkIGRjc19kaXNhYmxl X2JhY2tsaWdodChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCj4gPiAgCX0KPiA+ ICB9Cj4gPiAgCj4gPiAtc3RhdGljIHZvaWQgZGNzX2VuYWJsZV9iYWNrbGlnaHQoc3RydWN0IGlu dGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ID4gK3N0YXRpYyB2b2lkIGRjc19lbmFibGVfYmFj a2xpZ2h0KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ID4gKwkJ CQkgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGUpCj4gPiAgewo+ ID4gLQlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciA9IGNvbm5lY3Rvci0+ZW5jb2RlcjsK PiA+IC0Jc3RydWN0IGludGVsX2RzaSAqaW50ZWxfZHNpID0gZW5jX3RvX2ludGVsX2RzaSgmZW5j b2Rlci0+YmFzZSk7Cj4gPiAtCXN0cnVjdCBpbnRlbF9wYW5lbCAqcGFuZWwgPSAmY29ubmVjdG9y LT5wYW5lbDsKPiA+ICsJc3RydWN0IGludGVsX2RzaSAqaW50ZWxfZHNpID0gZW5jX3RvX2ludGVs X2RzaShjb25uX3N0YXRlLT5iZXN0X2VuY29kZXIpOwo+ID4gKwlzdHJ1Y3QgaW50ZWxfcGFuZWwg KnBhbmVsID0gJnRvX2ludGVsX2Nvbm5lY3Rvcihjb25uX3N0YXRlLT5jb25uZWN0b3IpLT5wYW5l bDsKPiA+ICAJc3RydWN0IG1pcGlfZHNpX2RldmljZSAqZHNpX2RldmljZTsKPiA+ICAJZW51bSBw b3J0IHBvcnQ7Cj4gPiAgCj4gPiBAQCAtMTQyLDcgKzE0MCw3IEBAIHN0YXRpYyB2b2lkIGRjc19l bmFibGVfYmFja2xpZ2h0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiA+ICAJ CQkJICAgJmNhYmMsIHNpemVvZihjYWJjKSk7Cj4gPiAgCX0KPiA+ICAKPiA+IC0JZGNzX3NldF9i YWNrbGlnaHQoY29ubmVjdG9yLCBwYW5lbC0+YmFja2xpZ2h0LmxldmVsKTsKPiA+ICsJZGNzX3Nl dF9iYWNrbGlnaHQoY29ubl9zdGF0ZSwgcGFuZWwtPmJhY2tsaWdodC5sZXZlbCk7Cj4gPiAgfQo+ ID4gIAo+ID4gIHN0YXRpYyBpbnQgZGNzX3NldHVwX2JhY2tsaWdodChzdHJ1Y3QgaW50ZWxfY29u bmVjdG9yICpjb25uZWN0b3IsCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcGFuZWwuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BhbmVsLmMKPiA+IGlu ZGV4IDhjYjU3MzE2NjQyMS4uOTZjMmNiZDgxODY5IDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwuYwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcGFuZWwuYwo+ID4gQEAgLTU2MSwxNSArNTYxLDE4IEBAIHN0YXRpYyB1MzIgaW50ZWxf cGFuZWxfZ2V0X2JhY2tsaWdodChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCj4g PiAgCXJldHVybiB2YWw7Cj4gPiAgfQo+ID4gIAo+ID4gLXN0YXRpYyB2b2lkIGxwdF9zZXRfYmFj a2xpZ2h0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwgdTMyIGxldmVsKQo+ID4g K3N0YXRpYyB2b2lkIGxwdF9zZXRfYmFja2xpZ2h0KGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9y X3N0YXRlICpjb25uX3N0YXRlLCB1MzIgbGV2ZWwpCj4gPiAgewo+ID4gKwlzdHJ1Y3QgaW50ZWxf Y29ubmVjdG9yICpjb25uZWN0b3IgPSB0b19pbnRlbF9jb25uZWN0b3IoY29ubl9zdGF0ZS0+Y29u bmVjdG9yKTsKPiA+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkx NShjb25uZWN0b3ItPmJhc2UuZGV2KTsKPiA+ICsKPiA+ICAJdTMyIHZhbCA9IEk5MTVfUkVBRChC TENfUFdNX1BDSF9DVEwyKSAmIH5CQUNLTElHSFRfRFVUWV9DWUNMRV9NQVNLOwo+ID4gIAlJOTE1 X1dSSVRFKEJMQ19QV01fUENIX0NUTDIsIHZhbCB8IGxldmVsKTsKPiA+ICB9Cj4gPiAgCj4gPiAt c3RhdGljIHZvaWQgcGNoX3NldF9iYWNrbGlnaHQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29u bmVjdG9yLCB1MzIgbGV2ZWwpCj4gPiArc3RhdGljIHZvaWQgcGNoX3NldF9iYWNrbGlnaHQoY29u c3Qgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGUsIHUzMiBsZXZlbCkKPiA+ ICB7Cj4gPiArCXN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciA9IHRvX2ludGVsX2Nv bm5lY3Rvcihjb25uX3N0YXRlLT5jb25uZWN0b3IpOwo+ID4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNvbm5lY3Rvci0+YmFzZS5kZXYpOwo+ID4gIAl1MzIg dG1wOwo+ID4gIAo+ID4gQEAgLTU3Nyw4ICs1ODAsOSBAQCBzdGF0aWMgdm9pZCBwY2hfc2V0X2Jh Y2tsaWdodChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IsIHUzMiBsZXZlbCkKPiA+ ICAJSTkxNV9XUklURShCTENfUFdNX0NQVV9DVEwsIHRtcCB8IGxldmVsKTsKPiA+ICB9Cj4gPiAg Cj4gPiAtc3RhdGljIHZvaWQgaTl4eF9zZXRfYmFja2xpZ2h0KHN0cnVjdCBpbnRlbF9jb25uZWN0 b3IgKmNvbm5lY3RvciwgdTMyIGxldmVsKQo+ID4gK3N0YXRpYyB2b2lkIGk5eHhfc2V0X2JhY2ts aWdodChjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZSwgdTMyIGxl dmVsKQo+ID4gIHsKPiA+ICsJc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yID0gdG9f aW50ZWxfY29ubmVjdG9yKGNvbm5fc3RhdGUtPmNvbm5lY3Rvcik7Cj4gPiAgCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY29ubmVjdG9yLT5iYXNlLmRldik7Cj4g PiAgCXN0cnVjdCBpbnRlbF9wYW5lbCAqcGFuZWwgPSAmY29ubmVjdG9yLT5wYW5lbDsKPiA+ICAJ dTMyIHRtcCwgbWFzazsKPiA+IEBAIC02MDQsNTAgKzYwOCw1MSBAQCBzdGF0aWMgdm9pZCBpOXh4 X3NldF9iYWNrbGlnaHQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLCB1MzIgbGV2 ZWwpCj4gPiAgCUk5MTVfV1JJVEUoQkxDX1BXTV9DVEwsIHRtcCB8IGxldmVsKTsKPiA+ICB9Cj4g PiAgCj4gPiAtc3RhdGljIHZvaWQgdmx2X3NldF9iYWNrbGlnaHQoc3RydWN0IGludGVsX2Nvbm5l Y3RvciAqY29ubmVjdG9yLCB1MzIgbGV2ZWwpCj4gPiArc3RhdGljIHZvaWQgdmx2X3NldF9iYWNr bGlnaHQoY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGUsIHUzMiBs ZXZlbCkKPiA+ICB7Cj4gPiArCXN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciA9IHRv X2ludGVsX2Nvbm5lY3Rvcihjb25uX3N0YXRlLT5jb25uZWN0b3IpOwo+ID4gIAlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNvbm5lY3Rvci0+YmFzZS5kZXYpOwo+ ID4gLQllbnVtIHBpcGUgcGlwZSA9IGludGVsX2dldF9waXBlX2Zyb21fY29ubmVjdG9yKGNvbm5l Y3Rvcik7Cj4gPiArCWVudW0gcGlwZSBwaXBlID0gdG9faW50ZWxfY3J0Yyhjb25uX3N0YXRlLT5j cnRjKS0+cGlwZTsKPiA+ICAJdTMyIHRtcDsKPiA+ICAKPiA+IC0JaWYgKFdBUk5fT04ocGlwZSAh PSBQSVBFX0EgJiYgcGlwZSAhPSBQSVBFX0IpKQo+ID4gLQkJcmV0dXJuOwo+ID4gLQo+ID4gIAl0 bXAgPSBJOTE1X1JFQUQoVkxWX0JMQ19QV01fQ1RMKHBpcGUpKSAmIH5CQUNLTElHSFRfRFVUWV9D WUNMRV9NQVNLOwo+ID4gIAlJOTE1X1dSSVRFKFZMVl9CTENfUFdNX0NUTChwaXBlKSwgdG1wIHwg bGV2ZWwpOwo+ID4gIH0KPiA+ICAKPiA+IC1zdGF0aWMgdm9pZCBieHRfc2V0X2JhY2tsaWdodChz dHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IsIHUzMiBsZXZlbCkKPiA+ICtzdGF0aWMg dm9pZCBieHRfc2V0X2JhY2tsaWdodChjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAq Y29ubl9zdGF0ZSwgdTMyIGxldmVsKQo+ID4gIHsKPiA+ICsJc3RydWN0IGludGVsX2Nvbm5lY3Rv ciAqY29ubmVjdG9yID0gdG9faW50ZWxfY29ubmVjdG9yKGNvbm5fc3RhdGUtPmNvbm5lY3Rvcik7 Cj4gPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY29ubmVj dG9yLT5iYXNlLmRldik7Cj4gPiAgCXN0cnVjdCBpbnRlbF9wYW5lbCAqcGFuZWwgPSAmY29ubmVj dG9yLT5wYW5lbDsKPiA+ICAKPiA+ICAJSTkxNV9XUklURShCWFRfQkxDX1BXTV9EVVRZKHBhbmVs LT5iYWNrbGlnaHQuY29udHJvbGxlciksIGxldmVsKTsKPiA+ICB9Cj4gPiAgCj4gPiAtc3RhdGlj IHZvaWQgcHdtX3NldF9iYWNrbGlnaHQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9y LCB1MzIgbGV2ZWwpCj4gPiArc3RhdGljIHZvaWQgcHdtX3NldF9iYWNrbGlnaHQoY29uc3Qgc3Ry dWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGUsIHUzMiBsZXZlbCkKPiA+ICB7Cj4g PiAtCXN0cnVjdCBpbnRlbF9wYW5lbCAqcGFuZWwgPSAmY29ubmVjdG9yLT5wYW5lbDsKPiA+ICsJ c3RydWN0IGludGVsX3BhbmVsICpwYW5lbCA9ICZ0b19pbnRlbF9jb25uZWN0b3IoY29ubl9zdGF0 ZS0+Y29ubmVjdG9yKS0+cGFuZWw7Cj4gPiAgCWludCBkdXR5X25zID0gRElWX1JPVU5EX1VQKGxl dmVsICogQ1JDX1BNSUNfUFdNX1BFUklPRF9OUywgMTAwKTsKPiA+ICAKPiA+ICAJcHdtX2NvbmZp ZyhwYW5lbC0+YmFja2xpZ2h0LnB3bSwgZHV0eV9ucywgQ1JDX1BNSUNfUFdNX1BFUklPRF9OUyk7 Cj4gPiAgfQo+ID4gIAo+ID4gIHN0YXRpYyB2b2lkCj4gPiAtaW50ZWxfcGFuZWxfYWN0dWFsbHlf c2V0X2JhY2tsaWdodChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IsIHUzMiBsZXZl bCkKPiA+ICtpbnRlbF9wYW5lbF9hY3R1YWxseV9zZXRfYmFja2xpZ2h0KGNvbnN0IHN0cnVjdCBk cm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlLCB1MzIgbGV2ZWwpCj4gPiAgewo+ID4gKwlz dHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IgPSB0b19pbnRlbF9jb25uZWN0b3IoY29u bl9zdGF0ZS0+Y29ubmVjdG9yKTsKPiA+ICAJc3RydWN0IGludGVsX3BhbmVsICpwYW5lbCA9ICZj b25uZWN0b3ItPnBhbmVsOwo+ID4gIAo+ID4gIAlEUk1fREVCVUdfRFJJVkVSKCJzZXQgYmFja2xp Z2h0IFBXTSA9ICVkXG4iLCBsZXZlbCk7Cj4gPiAgCj4gPiAgCWxldmVsID0gaW50ZWxfcGFuZWxf Y29tcHV0ZV9icmlnaHRuZXNzKGNvbm5lY3RvciwgbGV2ZWwpOwo+ID4gLQlwYW5lbC0+YmFja2xp Z2h0LnNldChjb25uZWN0b3IsIGxldmVsKTsKPiA+ICsJcGFuZWwtPmJhY2tsaWdodC5zZXQoY29u bl9zdGF0ZSwgbGV2ZWwpOwo+ID4gIH0KPiA+ICAKPiA+ICAvKiBzZXQgYmFja2xpZ2h0IGJyaWdo dG5lc3MgdG8gbGV2ZWwgaW4gcmFuZ2UgWzAuLm1heF0sIHNjYWxpbmcgd3J0IGh3IG1pbiAqLwo+ ID4gLXN0YXRpYyB2b2lkIGludGVsX3BhbmVsX3NldF9iYWNrbGlnaHQoc3RydWN0IGludGVsX2Nv bm5lY3RvciAqY29ubmVjdG9yLAo+ID4gK3N0YXRpYyB2b2lkIGludGVsX3BhbmVsX3NldF9iYWNr bGlnaHQoY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGUsCj4gPiAg CQkJCSAgICAgIHUzMiB1c2VyX2xldmVsLCB1MzIgdXNlcl9tYXgpCj4gPiAgewo+ID4gKwlzdHJ1 Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IgPSB0b19pbnRlbF9jb25uZWN0b3IoY29ubl9z dGF0ZS0+Y29ubmVjdG9yKTsKPiA+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gdG9faTkxNShjb25uZWN0b3ItPmJhc2UuZGV2KTsKPiA+ICAJc3RydWN0IGludGVsX3BhbmVs ICpwYW5lbCA9ICZjb25uZWN0b3ItPnBhbmVsOwo+ID4gIAl1MzIgaHdfbGV2ZWw7Cj4gPiBAQCAt NjYzLDcgKzY2OCw3IEBAIHN0YXRpYyB2b2lkIGludGVsX3BhbmVsX3NldF9iYWNrbGlnaHQoc3Ry dWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ID4gIAlwYW5lbC0+YmFja2xpZ2h0Lmxl dmVsID0gaHdfbGV2ZWw7Cj4gPiAgCj4gPiAgCWlmIChwYW5lbC0+YmFja2xpZ2h0LmVuYWJsZWQp Cj4gPiAtCQlpbnRlbF9wYW5lbF9hY3R1YWxseV9zZXRfYmFja2xpZ2h0KGNvbm5lY3RvciwgaHdf bGV2ZWwpOwo+ID4gKwkJaW50ZWxfcGFuZWxfYWN0dWFsbHlfc2V0X2JhY2tsaWdodChjb25uX3N0 YXRlLCBod19sZXZlbCk7Cj4gPiAgCj4gPiAgCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmJhY2ts aWdodF9sb2NrKTsKPiA+ICB9Cj4gPiBAQCAtNzAyLDE3ICs3MDcsMTggQEAgdm9pZCBpbnRlbF9w YW5lbF9zZXRfYmFja2xpZ2h0X2FjcGkoY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUg KmNvbm5fc3RhdGUKPiA+ICAJCQkJCSBwYW5lbC0+YmFja2xpZ2h0LmRldmljZS0+cHJvcHMubWF4 X2JyaWdodG5lc3MpOwo+ID4gIAo+ID4gIAlpZiAocGFuZWwtPmJhY2tsaWdodC5lbmFibGVkKQo+ ID4gLQkJaW50ZWxfcGFuZWxfYWN0dWFsbHlfc2V0X2JhY2tsaWdodChjb25uZWN0b3IsIGh3X2xl dmVsKTsKPiA+ICsJCWludGVsX3BhbmVsX2FjdHVhbGx5X3NldF9iYWNrbGlnaHQoY29ubl9zdGF0 ZSwgaHdfbGV2ZWwpOwo+ID4gIAo+ID4gIAltdXRleF91bmxvY2soJmRldl9wcml2LT5iYWNrbGln aHRfbG9jayk7Cj4gPiAgfQo+ID4gIAo+ID4gLXN0YXRpYyB2b2lkIGxwdF9kaXNhYmxlX2JhY2ts aWdodChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCj4gPiArc3RhdGljIHZvaWQg bHB0X2Rpc2FibGVfYmFja2xpZ2h0KGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpv bGRfY29ubl9zdGF0ZSkKPiA+ICB7Cj4gPiArCXN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5l Y3RvciA9IHRvX2ludGVsX2Nvbm5lY3RvcihvbGRfY29ubl9zdGF0ZS0+Y29ubmVjdG9yKTsKPiA+ ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjb25uZWN0b3It PmJhc2UuZGV2KTsKPiA+ICAJdTMyIHRtcDsKPiA+ICAKPiA+IC0JaW50ZWxfcGFuZWxfYWN0dWFs bHlfc2V0X2JhY2tsaWdodChjb25uZWN0b3IsIDApOwo+ID4gKwlpbnRlbF9wYW5lbF9hY3R1YWxs eV9zZXRfYmFja2xpZ2h0KG9sZF9jb25uX3N0YXRlLCAwKTsKPiA+ICAKPiA+ICAJLyoKPiA+ICAJ ICogQWx0aG91Z2ggd2UgZG9uJ3Qgc3VwcG9ydCBvciBlbmFibGUgQ1BVIFBXTSB3aXRoIExQVC9T UFQgYmFzZWQKPiA+IEBAIC03MzIsMTIgKzczOCwxMyBAQCBzdGF0aWMgdm9pZCBscHRfZGlzYWJs ZV9iYWNrbGlnaHQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ID4gIAlJOTE1 X1dSSVRFKEJMQ19QV01fUENIX0NUTDEsIHRtcCAmIH5CTE1fUENIX1BXTV9FTkFCTEUpOwo+ID4g IH0KPiA+ICAKPiA+IC1zdGF0aWMgdm9pZCBwY2hfZGlzYWJsZV9iYWNrbGlnaHQoc3RydWN0IGlu dGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ID4gK3N0YXRpYyB2b2lkIHBjaF9kaXNhYmxlX2Jh Y2tsaWdodChjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqb2xkX2Nvbm5fc3RhdGUp Cj4gPiAgewo+ID4gKwlzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IgPSB0b19pbnRl bF9jb25uZWN0b3Iob2xkX2Nvbm5fc3RhdGUtPmNvbm5lY3Rvcik7Cj4gPiAgCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY29ubmVjdG9yLT5iYXNlLmRldik7Cj4g PiAgCXUzMiB0bXA7Cj4gPiAgCj4gPiAtCWludGVsX3BhbmVsX2FjdHVhbGx5X3NldF9iYWNrbGln aHQoY29ubmVjdG9yLCAwKTsKPiA+ICsJaW50ZWxfcGFuZWxfYWN0dWFsbHlfc2V0X2JhY2tsaWdo dChvbGRfY29ubl9zdGF0ZSwgMCk7Cj4gPiAgCj4gPiAgCXRtcCA9IEk5MTVfUkVBRChCTENfUFdN X0NQVV9DVEwyKTsKPiA+ICAJSTkxNV9XUklURShCTENfUFdNX0NQVV9DVEwyLCB0bXAgJiB+QkxN X1BXTV9FTkFCTEUpOwo+ID4gQEAgLTc0Niw0NCArNzUzLDQzIEBAIHN0YXRpYyB2b2lkIHBjaF9k aXNhYmxlX2JhY2tsaWdodChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCj4gPiAg CUk5MTVfV1JJVEUoQkxDX1BXTV9QQ0hfQ1RMMSwgdG1wICYgfkJMTV9QQ0hfUFdNX0VOQUJMRSk7 Cj4gPiAgfQo+ID4gIAo+ID4gLXN0YXRpYyB2b2lkIGk5eHhfZGlzYWJsZV9iYWNrbGlnaHQoc3Ry dWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ID4gK3N0YXRpYyB2b2lkIGk5eHhfZGlz YWJsZV9iYWNrbGlnaHQoY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKm9sZF9jb25u X3N0YXRlKQo+ID4gIHsKPiA+IC0JaW50ZWxfcGFuZWxfYWN0dWFsbHlfc2V0X2JhY2tsaWdodChj b25uZWN0b3IsIDApOwo+ID4gKwlpbnRlbF9wYW5lbF9hY3R1YWxseV9zZXRfYmFja2xpZ2h0KG9s ZF9jb25uX3N0YXRlLCAwKTsKPiA+ICB9Cj4gPiAgCj4gPiAtc3RhdGljIHZvaWQgaTk2NV9kaXNh YmxlX2JhY2tsaWdodChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCj4gPiArc3Rh dGljIHZvaWQgaTk2NV9kaXNhYmxlX2JhY2tsaWdodChjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rv cl9zdGF0ZSAqb2xkX2Nvbm5fc3RhdGUpCj4gPiAgewo+ID4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNvbm5lY3Rvci0+YmFzZS5kZXYpOwo+ID4gKwlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KG9sZF9jb25uX3N0YXRlLT5j b25uZWN0b3ItPmRldik7Cj4gPiAgCXUzMiB0bXA7Cj4gPiAgCj4gPiAtCWludGVsX3BhbmVsX2Fj dHVhbGx5X3NldF9iYWNrbGlnaHQoY29ubmVjdG9yLCAwKTsKPiA+ICsJaW50ZWxfcGFuZWxfYWN0 dWFsbHlfc2V0X2JhY2tsaWdodChvbGRfY29ubl9zdGF0ZSwgMCk7Cj4gPiAgCj4gPiAgCXRtcCA9 IEk5MTVfUkVBRChCTENfUFdNX0NUTDIpOwo+ID4gIAlJOTE1X1dSSVRFKEJMQ19QV01fQ1RMMiwg dG1wICYgfkJMTV9QV01fRU5BQkxFKTsKPiA+ICB9Cj4gPiAgCj4gPiAtc3RhdGljIHZvaWQgdmx2 X2Rpc2FibGVfYmFja2xpZ2h0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiA+ ICtzdGF0aWMgdm9pZCB2bHZfZGlzYWJsZV9iYWNrbGlnaHQoY29uc3Qgc3RydWN0IGRybV9jb25u ZWN0b3Jfc3RhdGUgKm9sZF9jb25uX3N0YXRlKQo+ID4gIHsKPiA+ICsJc3RydWN0IGludGVsX2Nv bm5lY3RvciAqY29ubmVjdG9yID0gdG9faW50ZWxfY29ubmVjdG9yKG9sZF9jb25uX3N0YXRlLT5j b25uZWN0b3IpOwo+ID4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19p OTE1KGNvbm5lY3Rvci0+YmFzZS5kZXYpOwo+ID4gLQllbnVtIHBpcGUgcGlwZSA9IGludGVsX2dl dF9waXBlX2Zyb21fY29ubmVjdG9yKGNvbm5lY3Rvcik7Cj4gPiArCWVudW0gcGlwZSBwaXBlID0g dG9faW50ZWxfY3J0YyhvbGRfY29ubl9zdGF0ZS0+Y3J0YyktPnBpcGU7Cj4gPiAgCXUzMiB0bXA7 Cj4gPiAgCj4gPiAtCWlmIChXQVJOX09OKHBpcGUgIT0gUElQRV9BICYmIHBpcGUgIT0gUElQRV9C KSkKPiA+IC0JCXJldHVybjsKPiA+IC0KPiA+IC0JaW50ZWxfcGFuZWxfYWN0dWFsbHlfc2V0X2Jh Y2tsaWdodChjb25uZWN0b3IsIDApOwo+ID4gKwlpbnRlbF9wYW5lbF9hY3R1YWxseV9zZXRfYmFj a2xpZ2h0KG9sZF9jb25uX3N0YXRlLCAwKTsKPiA+ICAKPiA+ICAJdG1wID0gSTkxNV9SRUFEKFZM Vl9CTENfUFdNX0NUTDIocGlwZSkpOwo+ID4gIAlJOTE1X1dSSVRFKFZMVl9CTENfUFdNX0NUTDIo cGlwZSksIHRtcCAmIH5CTE1fUFdNX0VOQUJMRSk7Cj4gPiAgfQo+ID4gIAo+ID4gLXN0YXRpYyB2 b2lkIGJ4dF9kaXNhYmxlX2JhY2tsaWdodChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0 b3IpCj4gPiArc3RhdGljIHZvaWQgYnh0X2Rpc2FibGVfYmFja2xpZ2h0KGNvbnN0IHN0cnVjdCBk cm1fY29ubmVjdG9yX3N0YXRlICpvbGRfY29ubl9zdGF0ZSkKPiA+ICB7Cj4gPiArCXN0cnVjdCBp bnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciA9IHRvX2ludGVsX2Nvbm5lY3RvcihvbGRfY29ubl9z dGF0ZS0+Y29ubmVjdG9yKTsKPiA+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gdG9faTkxNShjb25uZWN0b3ItPmJhc2UuZGV2KTsKPiA+ICAJc3RydWN0IGludGVsX3BhbmVs ICpwYW5lbCA9ICZjb25uZWN0b3ItPnBhbmVsOwo+ID4gIAl1MzIgdG1wLCB2YWw7Cj4gPiAgCj4g PiAtCWludGVsX3BhbmVsX2FjdHVhbGx5X3NldF9iYWNrbGlnaHQoY29ubmVjdG9yLCAwKTsKPiA+ ICsJaW50ZWxfcGFuZWxfYWN0dWFsbHlfc2V0X2JhY2tsaWdodChvbGRfY29ubl9zdGF0ZSwgMCk7 Cj4gPiAgCj4gPiAgCXRtcCA9IEk5MTVfUkVBRChCWFRfQkxDX1BXTV9DVEwocGFuZWwtPmJhY2ts aWdodC5jb250cm9sbGVyKSk7Cj4gPiAgCUk5MTVfV1JJVEUoQlhUX0JMQ19QV01fQ1RMKHBhbmVs LT5iYWNrbGlnaHQuY29udHJvbGxlciksCj4gPiBAQCAtNzk2LDIxICs4MDIsMjMgQEAgc3RhdGlj IHZvaWQgYnh0X2Rpc2FibGVfYmFja2xpZ2h0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5l Y3RvcikKPiA+ICAJfQo+ID4gIH0KPiA+ICAKPiA+IC1zdGF0aWMgdm9pZCBjbnBfZGlzYWJsZV9i YWNrbGlnaHQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ID4gK3N0YXRpYyB2 b2lkIGNucF9kaXNhYmxlX2JhY2tsaWdodChjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0 ZSAqb2xkX2Nvbm5fc3RhdGUpCj4gPiAgewo+ID4gKwlzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpj b25uZWN0b3IgPSB0b19pbnRlbF9jb25uZWN0b3Iob2xkX2Nvbm5fc3RhdGUtPmNvbm5lY3Rvcik7 Cj4gPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY29ubmVj dG9yLT5iYXNlLmRldik7Cj4gPiAgCXN0cnVjdCBpbnRlbF9wYW5lbCAqcGFuZWwgPSAmY29ubmVj dG9yLT5wYW5lbDsKPiA+ICAJdTMyIHRtcDsKPiA+ICAKPiA+IC0JaW50ZWxfcGFuZWxfYWN0dWFs bHlfc2V0X2JhY2tsaWdodChjb25uZWN0b3IsIDApOwo+ID4gKwlpbnRlbF9wYW5lbF9hY3R1YWxs eV9zZXRfYmFja2xpZ2h0KG9sZF9jb25uX3N0YXRlLCAwKTsKPiA+ICAKPiA+ICAJdG1wID0gSTkx NV9SRUFEKEJYVF9CTENfUFdNX0NUTChwYW5lbC0+YmFja2xpZ2h0LmNvbnRyb2xsZXIpKTsKPiA+ ICAJSTkxNV9XUklURShCWFRfQkxDX1BXTV9DVEwocGFuZWwtPmJhY2tsaWdodC5jb250cm9sbGVy KSwKPiA+ICAJCSAgIHRtcCAmIH5CWFRfQkxDX1BXTV9FTkFCTEUpOwo+ID4gIH0KPiA+ICAKPiA+ IC1zdGF0aWMgdm9pZCBwd21fZGlzYWJsZV9iYWNrbGlnaHQoc3RydWN0IGludGVsX2Nvbm5lY3Rv ciAqY29ubmVjdG9yKQo+ID4gK3N0YXRpYyB2b2lkIHB3bV9kaXNhYmxlX2JhY2tsaWdodChjb25z dCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqb2xkX2Nvbm5fc3RhdGUpCj4gPiAgewo+ID4g KwlzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IgPSB0b19pbnRlbF9jb25uZWN0b3Io b2xkX2Nvbm5fc3RhdGUtPmNvbm5lY3Rvcik7Cj4gPiAgCXN0cnVjdCBpbnRlbF9wYW5lbCAqcGFu ZWwgPSAmY29ubmVjdG9yLT5wYW5lbDsKPiA+ICAKPiA+ICAJLyogRGlzYWJsZSB0aGUgYmFja2xp Z2h0ICovCj4gPiBAQCAtODQ0LDEzICs4NTIsMTUgQEAgdm9pZCBpbnRlbF9wYW5lbF9kaXNhYmxl X2JhY2tsaWdodChjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqb2xkX2Nvbm5fc3QK PiA+ICAJaWYgKHBhbmVsLT5iYWNrbGlnaHQuZGV2aWNlKQo+ID4gIAkJcGFuZWwtPmJhY2tsaWdo dC5kZXZpY2UtPnByb3BzLnBvd2VyID0gRkJfQkxBTktfUE9XRVJET1dOOwo+ID4gIAlwYW5lbC0+ YmFja2xpZ2h0LmVuYWJsZWQgPSBmYWxzZTsKPiA+IC0JcGFuZWwtPmJhY2tsaWdodC5kaXNhYmxl KGNvbm5lY3Rvcik7Cj4gPiArCXBhbmVsLT5iYWNrbGlnaHQuZGlzYWJsZShvbGRfY29ubl9zdGF0 ZSk7Cj4gPiAgCj4gPiAgCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmJhY2tsaWdodF9sb2NrKTsK PiA+ICB9Cj4gPiAgCj4gPiAtc3RhdGljIHZvaWQgbHB0X2VuYWJsZV9iYWNrbGlnaHQoc3RydWN0 IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ID4gK3N0YXRpYyB2b2lkIGxwdF9lbmFibGVf YmFja2xpZ2h0KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ID4g KwkJCQkgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGUpCj4gPiAg ewo+ID4gKwlzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IgPSB0b19pbnRlbF9jb25u ZWN0b3IoY29ubl9zdGF0ZS0+Y29ubmVjdG9yKTsKPiA+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gdG9faTkxNShjb25uZWN0b3ItPmJhc2UuZGV2KTsKPiA+ICAJc3RydWN0 IGludGVsX3BhbmVsICpwYW5lbCA9ICZjb25uZWN0b3ItPnBhbmVsOwo+ID4gIAl1MzIgcGNoX2N0 bDEsIHBjaF9jdGwyLCBzY2hpY2tlbjsKPiA+IEBAIC04OTQsMjIgKzkwNCwxOCBAQCBzdGF0aWMg dm9pZCBscHRfZW5hYmxlX2JhY2tsaWdodChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0 b3IpCj4gPiAgCUk5MTVfV1JJVEUoQkxDX1BXTV9QQ0hfQ1RMMSwgcGNoX2N0bDEgfCBCTE1fUENI X1BXTV9FTkFCTEUpOwo+ID4gIAo+ID4gIAkvKiBUaGlzIHdvbid0IHN0aWNrIHVudGlsIHRoZSBh Ym92ZSBlbmFibGUuICovCj4gPiAtCWludGVsX3BhbmVsX2FjdHVhbGx5X3NldF9iYWNrbGlnaHQo Y29ubmVjdG9yLCBwYW5lbC0+YmFja2xpZ2h0LmxldmVsKTsKPiA+ICsJaW50ZWxfcGFuZWxfYWN0 dWFsbHlfc2V0X2JhY2tsaWdodChjb25uX3N0YXRlLCBwYW5lbC0+YmFja2xpZ2h0LmxldmVsKTsK PiA+ICB9Cj4gPiAgCj4gPiAtc3RhdGljIHZvaWQgcGNoX2VuYWJsZV9iYWNrbGlnaHQoc3RydWN0 IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ID4gK3N0YXRpYyB2b2lkIHBjaF9lbmFibGVf YmFja2xpZ2h0KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ID4g KwkJCQkgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGUpCj4gPiAg ewo+ID4gKwlzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IgPSB0b19pbnRlbF9jb25u ZWN0b3IoY29ubl9zdGF0ZS0+Y29ubmVjdG9yKTsKPiA+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gdG9faTkxNShjb25uZWN0b3ItPmJhc2UuZGV2KTsKPiA+ICAJc3RydWN0 IGludGVsX3BhbmVsICpwYW5lbCA9ICZjb25uZWN0b3ItPnBhbmVsOwo+ID4gLQllbnVtIHBpcGUg cGlwZSA9IGludGVsX2dldF9waXBlX2Zyb21fY29ubmVjdG9yKGNvbm5lY3Rvcik7Cj4gPiAtCWVu dW0gdHJhbnNjb2RlciBjcHVfdHJhbnNjb2RlcjsKPiA+ICsJZW51bSB0cmFuc2NvZGVyIGNwdV90 cmFuc2NvZGVyID0gY3J0Y19zdGF0ZS0+Y3B1X3RyYW5zY29kZXI7Cj4gPiAgCXUzMiBjcHVfY3Rs MiwgcGNoX2N0bDEsIHBjaF9jdGwyOwo+ID4gIAo+ID4gLQlpZiAoIVdBUk5fT05fT05DRShwaXBl ID09IElOVkFMSURfUElQRSkpCj4gPiAtCQljcHVfdHJhbnNjb2RlciA9IGludGVsX3BpcGVfdG9f Y3B1X3RyYW5zY29kZXIoZGV2X3ByaXYsIHBpcGUpOwo+ID4gLQllbHNlCj4gPiAtCQljcHVfdHJh bnNjb2RlciA9IFRSQU5TQ09ERVJfRURQOwo+ID4gLQo+ID4gIAljcHVfY3RsMiA9IEk5MTVfUkVB RChCTENfUFdNX0NQVV9DVEwyKTsKPiA+ICAJaWYgKGNwdV9jdGwyICYgQkxNX1BXTV9FTkFCTEUp IHsKPiA+ICAJCURSTV9ERUJVR19LTVMoImNwdSBiYWNrbGlnaHQgYWxyZWFkeSBlbmFibGVkXG4i KTsKPiA+IEBAIC05MzMsNyArOTM5LDcgQEAgc3RhdGljIHZvaWQgcGNoX2VuYWJsZV9iYWNrbGln aHQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ID4gIAlJOTE1X1dSSVRFKEJM Q19QV01fQ1BVX0NUTDIsIGNwdV9jdGwyIHwgQkxNX1BXTV9FTkFCTEUpOwo+ID4gIAo+ID4gIAkv KiBUaGlzIHdvbid0IHN0aWNrIHVudGlsIHRoZSBhYm92ZSBlbmFibGUuICovCj4gPiAtCWludGVs X3BhbmVsX2FjdHVhbGx5X3NldF9iYWNrbGlnaHQoY29ubmVjdG9yLCBwYW5lbC0+YmFja2xpZ2h0 LmxldmVsKTsKPiA+ICsJaW50ZWxfcGFuZWxfYWN0dWFsbHlfc2V0X2JhY2tsaWdodChjb25uX3N0 YXRlLCBwYW5lbC0+YmFja2xpZ2h0LmxldmVsKTsKPiA+ICAKPiA+ICAJcGNoX2N0bDIgPSBwYW5l bC0+YmFja2xpZ2h0Lm1heCA8PCAxNjsKPiA+ICAJSTkxNV9XUklURShCTENfUFdNX1BDSF9DVEwy LCBwY2hfY3RsMik7Cj4gPiBAQCAtOTQ3LDggKzk1MywxMCBAQCBzdGF0aWMgdm9pZCBwY2hfZW5h YmxlX2JhY2tsaWdodChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCj4gPiAgCUk5 MTVfV1JJVEUoQkxDX1BXTV9QQ0hfQ1RMMSwgcGNoX2N0bDEgfCBCTE1fUENIX1BXTV9FTkFCTEUp Owo+ID4gIH0KPiA+ICAKPiA+IC1zdGF0aWMgdm9pZCBpOXh4X2VuYWJsZV9iYWNrbGlnaHQoc3Ry dWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ID4gK3N0YXRpYyB2b2lkIGk5eHhfZW5h YmxlX2JhY2tsaWdodChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwK PiA+ICsJCQkJICBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZSkK PiA+ICB7Cj4gPiArCXN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciA9IHRvX2ludGVs X2Nvbm5lY3Rvcihjb25uX3N0YXRlLT5jb25uZWN0b3IpOwo+ID4gIAlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNvbm5lY3Rvci0+YmFzZS5kZXYpOwo+ID4gIAlz dHJ1Y3QgaW50ZWxfcGFuZWwgKnBhbmVsID0gJmNvbm5lY3Rvci0+cGFuZWw7Cj4gPiAgCXUzMiBj dGwsIGZyZXE7Cj4gPiBAQCAtOTczLDcgKzk4MSw3IEBAIHN0YXRpYyB2b2lkIGk5eHhfZW5hYmxl X2JhY2tsaWdodChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCj4gPiAgCVBPU1RJ TkdfUkVBRChCTENfUFdNX0NUTCk7Cj4gPiAgCj4gPiAgCS8qIFhYWDogY29tYmluZSB0aGlzIGlu dG8gYWJvdmUgd3JpdGU/ICovCj4gPiAtCWludGVsX3BhbmVsX2FjdHVhbGx5X3NldF9iYWNrbGln aHQoY29ubmVjdG9yLCBwYW5lbC0+YmFja2xpZ2h0LmxldmVsKTsKPiA+ICsJaW50ZWxfcGFuZWxf YWN0dWFsbHlfc2V0X2JhY2tsaWdodChjb25uX3N0YXRlLCBwYW5lbC0+YmFja2xpZ2h0LmxldmVs KTsKPiA+ICAKPiA+ICAJLyoKPiA+ICAJICogTmVlZGVkIHRvIGVuYWJsZSBiYWNrbGlnaHQgb24g c29tZSA4NTVnbSBtb2RlbHMuIEJMQ19ISVNUX0NUTCBpcwo+ID4gQEAgLTk4NCwxNiArOTkyLDE1 IEBAIHN0YXRpYyB2b2lkIGk5eHhfZW5hYmxlX2JhY2tsaWdodChzdHJ1Y3QgaW50ZWxfY29ubmVj dG9yICpjb25uZWN0b3IpCj4gPiAgCQlJOTE1X1dSSVRFKEJMQ19ISVNUX0NUTCwgQkxNX0hJU1RP R1JBTV9FTkFCTEUpOwo+ID4gIH0KPiA+ICAKPiA+IC1zdGF0aWMgdm9pZCBpOTY1X2VuYWJsZV9i YWNrbGlnaHQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ID4gK3N0YXRpYyB2 b2lkIGk5NjVfZW5hYmxlX2JhY2tsaWdodChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZSwKPiA+ICsJCQkJICBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAq Y29ubl9zdGF0ZSkKPiA+ICB7Cj4gPiArCXN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3Rv ciA9IHRvX2ludGVsX2Nvbm5lY3Rvcihjb25uX3N0YXRlLT5jb25uZWN0b3IpOwo+ID4gIAlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNvbm5lY3Rvci0+YmFzZS5k ZXYpOwo+ID4gIAlzdHJ1Y3QgaW50ZWxfcGFuZWwgKnBhbmVsID0gJmNvbm5lY3Rvci0+cGFuZWw7 Cj4gPiAtCWVudW0gcGlwZSBwaXBlID0gaW50ZWxfZ2V0X3BpcGVfZnJvbV9jb25uZWN0b3IoY29u bmVjdG9yKTsKPiA+ICsJZW51bSBwaXBlIHBpcGUgPSB0b19pbnRlbF9jcnRjKGNvbm5fc3RhdGUt PmNydGMpLT5waXBlOwo+ID4gIAl1MzIgY3RsLCBjdGwyLCBmcmVxOwo+ID4gIAo+ID4gLQlpZiAo V0FSTl9PTl9PTkNFKHBpcGUgPT0gSU5WQUxJRF9QSVBFKSkKPiA+IC0JCXBpcGUgPSBQSVBFX0E7 Cj4gPiAtCj4gPiAgCWN0bDIgPSBJOTE1X1JFQUQoQkxDX1BXTV9DVEwyKTsKPiA+ICAJaWYgKGN0 bDIgJiBCTE1fUFdNX0VOQUJMRSkgewo+ID4gIAkJRFJNX0RFQlVHX0tNUygiYmFja2xpZ2h0IGFs cmVhZHkgZW5hYmxlZFxuIik7Cj4gPiBAQCAtMTAxNywxOSArMTAyNCwxOCBAQCBzdGF0aWMgdm9p ZCBpOTY1X2VuYWJsZV9iYWNrbGlnaHQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9y KQo+ID4gIAlQT1NUSU5HX1JFQUQoQkxDX1BXTV9DVEwyKTsKPiA+ICAJSTkxNV9XUklURShCTENf UFdNX0NUTDIsIGN0bDIgfCBCTE1fUFdNX0VOQUJMRSk7Cj4gPiAgCj4gPiAtCWludGVsX3BhbmVs X2FjdHVhbGx5X3NldF9iYWNrbGlnaHQoY29ubmVjdG9yLCBwYW5lbC0+YmFja2xpZ2h0LmxldmVs KTsKPiA+ICsJaW50ZWxfcGFuZWxfYWN0dWFsbHlfc2V0X2JhY2tsaWdodChjb25uX3N0YXRlLCBw YW5lbC0+YmFja2xpZ2h0LmxldmVsKTsKPiA+ICB9Cj4gPiAgCj4gPiAtc3RhdGljIHZvaWQgdmx2 X2VuYWJsZV9iYWNrbGlnaHQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ID4g K3N0YXRpYyB2b2lkIHZsdl9lbmFibGVfYmFja2xpZ2h0KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpjcnRjX3N0YXRlLAo+ID4gKwkJCQkgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3Jf c3RhdGUgKmNvbm5fc3RhdGUpCj4gPiAgewo+ID4gKwlzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpj b25uZWN0b3IgPSB0b19pbnRlbF9jb25uZWN0b3IoY29ubl9zdGF0ZS0+Y29ubmVjdG9yKTsKPiA+ ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjb25uZWN0b3It PmJhc2UuZGV2KTsKPiA+ICAJc3RydWN0IGludGVsX3BhbmVsICpwYW5lbCA9ICZjb25uZWN0b3It PnBhbmVsOwo+ID4gLQllbnVtIHBpcGUgcGlwZSA9IGludGVsX2dldF9waXBlX2Zyb21fY29ubmVj dG9yKGNvbm5lY3Rvcik7Cj4gPiArCWVudW0gcGlwZSBwaXBlID0gdG9faW50ZWxfY3J0YyhjcnRj X3N0YXRlLT5iYXNlLmNydGMpLT5waXBlOwo+ID4gIAl1MzIgY3RsLCBjdGwyOwo+ID4gIAo+ID4g LQlpZiAoV0FSTl9PTihwaXBlICE9IFBJUEVfQSAmJiBwaXBlICE9IFBJUEVfQikpCj4gPiAtCQly ZXR1cm47Cj4gPiAtCj4gPiAgCWN0bDIgPSBJOTE1X1JFQUQoVkxWX0JMQ19QV01fQ1RMMihwaXBl KSk7Cj4gPiAgCWlmIChjdGwyICYgQkxNX1BXTV9FTkFCTEUpIHsKPiA+ICAJCURSTV9ERUJVR19L TVMoImJhY2tsaWdodCBhbHJlYWR5IGVuYWJsZWRcbiIpOwo+ID4gQEAgLTEwNDEsNyArMTA0Nyw3 IEBAIHN0YXRpYyB2b2lkIHZsdl9lbmFibGVfYmFja2xpZ2h0KHN0cnVjdCBpbnRlbF9jb25uZWN0 b3IgKmNvbm5lY3RvcikKPiA+ICAJSTkxNV9XUklURShWTFZfQkxDX1BXTV9DVEwocGlwZSksIGN0 bCk7Cj4gPiAgCj4gPiAgCS8qIFhYWDogY29tYmluZSB0aGlzIGludG8gYWJvdmUgd3JpdGU/ICov Cj4gPiAtCWludGVsX3BhbmVsX2FjdHVhbGx5X3NldF9iYWNrbGlnaHQoY29ubmVjdG9yLCBwYW5l bC0+YmFja2xpZ2h0LmxldmVsKTsKPiA+ICsJaW50ZWxfcGFuZWxfYWN0dWFsbHlfc2V0X2JhY2ts aWdodChjb25uX3N0YXRlLCBwYW5lbC0+YmFja2xpZ2h0LmxldmVsKTsKPiA+ICAKPiA+ICAJY3Rs MiA9IDA7Cj4gPiAgCWlmIChwYW5lbC0+YmFja2xpZ2h0LmFjdGl2ZV9sb3dfcHdtKQo+ID4gQEAg LTEwNTEsMTYgKzEwNTcsMTUgQEAgc3RhdGljIHZvaWQgdmx2X2VuYWJsZV9iYWNrbGlnaHQoc3Ry dWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ID4gIAlJOTE1X1dSSVRFKFZMVl9CTENf UFdNX0NUTDIocGlwZSksIGN0bDIgfCBCTE1fUFdNX0VOQUJMRSk7Cj4gPiAgfQo+ID4gIAo+ID4g LXN0YXRpYyB2b2lkIGJ4dF9lbmFibGVfYmFja2xpZ2h0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3Ig KmNvbm5lY3RvcikKPiA+ICtzdGF0aWMgdm9pZCBieHRfZW5hYmxlX2JhY2tsaWdodChjb25zdCBz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiA+ICsJCQkJIGNvbnN0IHN0cnVj dCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlKQo+ID4gIHsKPiA+ICsJc3RydWN0IGlu dGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yID0gdG9faW50ZWxfY29ubmVjdG9yKGNvbm5fc3RhdGUt PmNvbm5lY3Rvcik7Cj4gPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRv X2k5MTUoY29ubmVjdG9yLT5iYXNlLmRldik7Cj4gPiAgCXN0cnVjdCBpbnRlbF9wYW5lbCAqcGFu ZWwgPSAmY29ubmVjdG9yLT5wYW5lbDsKPiA+IC0JZW51bSBwaXBlIHBpcGUgPSBpbnRlbF9nZXRf cGlwZV9mcm9tX2Nvbm5lY3Rvcihjb25uZWN0b3IpOwo+ID4gKwllbnVtIHBpcGUgcGlwZSA9IHRv X2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+YmFzZS5jcnRjKS0+cGlwZTsKPiA+ICAJdTMyIHB3bV9j dGwsIHZhbDsKPiA+ICAKPiA+IC0JaWYgKFdBUk5fT05fT05DRShwaXBlID09IElOVkFMSURfUElQ RSkpCj4gPiAtCQlwaXBlID0gUElQRV9BOwo+ID4gLQo+ID4gIAkvKiBDb250cm9sbGVyIDEgdXNl cyB0aGUgdXRpbGl0eSBwaW4uICovCj4gPiAgCWlmIChwYW5lbC0+YmFja2xpZ2h0LmNvbnRyb2xs ZXIgPT0gMSkgewo+ID4gIAkJdmFsID0gSTkxNV9SRUFEKFVUSUxfUElOX0NUTCk7Cj4gPiBAQCAt MTA4OCw3ICsxMDkzLDcgQEAgc3RhdGljIHZvaWQgYnh0X2VuYWJsZV9iYWNrbGlnaHQoc3RydWN0 IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ID4gIAlJOTE1X1dSSVRFKEJYVF9CTENfUFdN X0ZSRVEocGFuZWwtPmJhY2tsaWdodC5jb250cm9sbGVyKSwKPiA+ICAJCQlwYW5lbC0+YmFja2xp Z2h0Lm1heCk7Cj4gPiAgCj4gPiAtCWludGVsX3BhbmVsX2FjdHVhbGx5X3NldF9iYWNrbGlnaHQo Y29ubmVjdG9yLCBwYW5lbC0+YmFja2xpZ2h0LmxldmVsKTsKPiA+ICsJaW50ZWxfcGFuZWxfYWN0 dWFsbHlfc2V0X2JhY2tsaWdodChjb25uX3N0YXRlLCBwYW5lbC0+YmFja2xpZ2h0LmxldmVsKTsK PiA+ICAKPiA+ICAJcHdtX2N0bCA9IDA7Cj4gPiAgCWlmIChwYW5lbC0+YmFja2xpZ2h0LmFjdGl2 ZV9sb3dfcHdtKQo+ID4gQEAgLTExMDAsOCArMTEwNSwxMCBAQCBzdGF0aWMgdm9pZCBieHRfZW5h YmxlX2JhY2tsaWdodChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCj4gPiAgCQkJ cHdtX2N0bCB8IEJYVF9CTENfUFdNX0VOQUJMRSk7Cj4gPiAgfQo+ID4gIAo+ID4gLXN0YXRpYyB2 b2lkIGNucF9lbmFibGVfYmFja2xpZ2h0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3Rv cikKPiA+ICtzdGF0aWMgdm9pZCBjbnBfZW5hYmxlX2JhY2tsaWdodChjb25zdCBzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiA+ICsJCQkJIGNvbnN0IHN0cnVjdCBkcm1fY29u bmVjdG9yX3N0YXRlICpjb25uX3N0YXRlKQo+ID4gIHsKPiA+ICsJc3RydWN0IGludGVsX2Nvbm5l Y3RvciAqY29ubmVjdG9yID0gdG9faW50ZWxfY29ubmVjdG9yKGNvbm5fc3RhdGUtPmNvbm5lY3Rv cik7Cj4gPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY29u bmVjdG9yLT5iYXNlLmRldik7Cj4gPiAgCXN0cnVjdCBpbnRlbF9wYW5lbCAqcGFuZWwgPSAmY29u bmVjdG9yLT5wYW5lbDsKPiA+ICAJdTMyIHB3bV9jdGw7Cj4gPiBAQCAtMTExNyw3ICsxMTI0LDcg QEAgc3RhdGljIHZvaWQgY25wX2VuYWJsZV9iYWNrbGlnaHQoc3RydWN0IGludGVsX2Nvbm5lY3Rv ciAqY29ubmVjdG9yKQo+ID4gIAlJOTE1X1dSSVRFKEJYVF9CTENfUFdNX0ZSRVEocGFuZWwtPmJh Y2tsaWdodC5jb250cm9sbGVyKSwKPiA+ICAJCSAgIHBhbmVsLT5iYWNrbGlnaHQubWF4KTsKPiA+ ICAKPiA+IC0JaW50ZWxfcGFuZWxfYWN0dWFsbHlfc2V0X2JhY2tsaWdodChjb25uZWN0b3IsIHBh bmVsLT5iYWNrbGlnaHQubGV2ZWwpOwo+ID4gKwlpbnRlbF9wYW5lbF9hY3R1YWxseV9zZXRfYmFj a2xpZ2h0KGNvbm5fc3RhdGUsIHBhbmVsLT5iYWNrbGlnaHQubGV2ZWwpOwo+ID4gIAo+ID4gIAlw d21fY3RsID0gMDsKPiA+ICAJaWYgKHBhbmVsLT5iYWNrbGlnaHQuYWN0aXZlX2xvd19wd20pCj4g PiBAQCAtMTEyOSwxMiArMTEzNiwxNCBAQCBzdGF0aWMgdm9pZCBjbnBfZW5hYmxlX2JhY2tsaWdo dChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCj4gPiAgCQkgICBwd21fY3RsIHwg QlhUX0JMQ19QV01fRU5BQkxFKTsKPiA+ICB9Cj4gPiAgCj4gPiAtc3RhdGljIHZvaWQgcHdtX2Vu YWJsZV9iYWNrbGlnaHQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ID4gK3N0 YXRpYyB2b2lkIHB3bV9lbmFibGVfYmFja2xpZ2h0KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlLAo+ID4gKwkJCQkgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3Jfc3Rh dGUgKmNvbm5fc3RhdGUpCj4gPiAgewo+ID4gKwlzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25u ZWN0b3IgPSB0b19pbnRlbF9jb25uZWN0b3IoY29ubl9zdGF0ZS0+Y29ubmVjdG9yKTsKPiA+ICAJ c3RydWN0IGludGVsX3BhbmVsICpwYW5lbCA9ICZjb25uZWN0b3ItPnBhbmVsOwo+ID4gIAo+ID4g IAlwd21fZW5hYmxlKHBhbmVsLT5iYWNrbGlnaHQucHdtKTsKPiA+IC0JaW50ZWxfcGFuZWxfYWN0 dWFsbHlfc2V0X2JhY2tsaWdodChjb25uZWN0b3IsIHBhbmVsLT5iYWNrbGlnaHQubGV2ZWwpOwo+ ID4gKwlpbnRlbF9wYW5lbF9hY3R1YWxseV9zZXRfYmFja2xpZ2h0KGNvbm5fc3RhdGUsIHBhbmVs LT5iYWNrbGlnaHQubGV2ZWwpOwo+ID4gIH0KPiA+ICAKPiA+ICB2b2lkIGludGVsX3BhbmVsX2Vu YWJsZV9iYWNrbGlnaHQoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUs Cj4gPiBAQCAtMTE2Myw3ICsxMTcyLDcgQEAgdm9pZCBpbnRlbF9wYW5lbF9lbmFibGVfYmFja2xp Z2h0KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ID4gIAkJCQkJ CSBwYW5lbC0+YmFja2xpZ2h0LmRldmljZS0+cHJvcHMubWF4X2JyaWdodG5lc3MpOwo+ID4gIAl9 Cj4gPiAgCj4gPiAtCXBhbmVsLT5iYWNrbGlnaHQuZW5hYmxlKGNvbm5lY3Rvcik7Cj4gPiArCXBh bmVsLT5iYWNrbGlnaHQuZW5hYmxlKGNydGNfc3RhdGUsIGNvbm5fc3RhdGUpOwo+ID4gIAlwYW5l bC0+YmFja2xpZ2h0LmVuYWJsZWQgPSB0cnVlOwo+ID4gIAlpZiAocGFuZWwtPmJhY2tsaWdodC5k ZXZpY2UpCj4gPiAgCQlwYW5lbC0+YmFja2xpZ2h0LmRldmljZS0+cHJvcHMucG93ZXIgPSBGQl9C TEFOS19VTkJMQU5LOwo+ID4gQEAgLTExODEsNyArMTE5MCw3IEBAIHN0YXRpYyBpbnQgaW50ZWxf YmFja2xpZ2h0X2RldmljZV91cGRhdGVfc3RhdHVzKHN0cnVjdCBiYWNrbGlnaHRfZGV2aWNlICpi ZCkKPiA+ICAJZHJtX21vZGVzZXRfbG9jaygmZGV2LT5tb2RlX2NvbmZpZy5jb25uZWN0aW9uX211 dGV4LCBOVUxMKTsKPiA+ICAJRFJNX0RFQlVHX0tNUygidXBkYXRpbmcgaW50ZWxfYmFja2xpZ2h0 LCBicmlnaHRuZXNzPSVkLyVkXG4iLAo+ID4gIAkJICAgICAgYmQtPnByb3BzLmJyaWdodG5lc3Ms IGJkLT5wcm9wcy5tYXhfYnJpZ2h0bmVzcyk7Cj4gPiAtCWludGVsX3BhbmVsX3NldF9iYWNrbGln aHQoY29ubmVjdG9yLCBiZC0+cHJvcHMuYnJpZ2h0bmVzcywKPiA+ICsJaW50ZWxfcGFuZWxfc2V0 X2JhY2tsaWdodChjb25uZWN0b3ItPmJhc2Uuc3RhdGUsIGJkLT5wcm9wcy5icmlnaHRuZXNzLAo+ ID4gIAkJCQkgIGJkLT5wcm9wcy5tYXhfYnJpZ2h0bmVzcyk7Cj4gPiAgCj4gPiAgCS8qCj4gPiAt LSAKPiA+IDIuMTEuMAo+ID4gCj4gPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwo+ID4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+ID4gSW50ZWwtZ2Z4QGxp c3RzLmZyZWVkZXNrdG9wLm9yZwo+ID4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9pbnRlbC1nZngKPiAKPiAtLSAKPiBWaWxsZSBTeXJqw6Rsw6QKPiBJbnRl bCBPVEMKCi0tIApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwgT1RDCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwt Z2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=