From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Pandiyan, Dhinakaran" Subject: Re: [PATCH v3] drm/i915/dp: DP audio API changes for MST Date: Sat, 13 Aug 2016 00:16:52 +0000 Message-ID: <1471048275.29947.2.camel@dk-H97M-D3H> References: <20160810142118.GT4329@intel.com> <1470858117-2321-1-git-send-email-dhinakaran.pandiyan@intel.com> <20160811062631.GW4329@intel.com> <1470900299.21929.14.camel@dk-H97M-D3H> <20160811073911.GE4329@intel.com> <1470976951.10941.30.camel@dk-H97M-D3H> <20160812051849.GT4329@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id 6501F6EC67 for ; Sat, 13 Aug 2016 00:16:54 +0000 (UTC) In-Reply-To: <20160812051849.GT4329@intel.com> Content-Language: en-US Content-ID: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "ville.syrjala@linux.intel.com" Cc: "tiwai@suse.de" , "Kp, Jeeja" , "alsa-devel@alsa-project.org" , "intel-gfx@lists.freedesktop.org" , "libin.yang@linux.intel.com" List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCAyMDE2LTA4LTEyIGF0IDA4OjE4ICswMzAwLCBWaWxsZSBTeXJqw6Rsw6Qgd3JvdGU6 DQo+IE9uIEZyaSwgQXVnIDEyLCAyMDE2IGF0IDA0OjI4OjA5QU0gKzAwMDAsIFBhbmRpeWFuLCBE aGluYWthcmFuIHdyb3RlOg0KPiA+IE9uIFRodSwgMjAxNi0wOC0xMSBhdCAxMDozOSArMDMwMCwg VmlsbGUgU3lyasOkbMOkIHdyb3RlOg0KPiA+ID4gT24gVGh1LCBBdWcgMTEsIDIwMTYgYXQgMDc6 MTA6MzlBTSArMDAwMCwgUGFuZGl5YW4sIERoaW5ha2FyYW4gd3JvdGU6DQo+ID4gPiA+IE9uIFRo dSwgMjAxNi0wOC0xMSBhdCAwOToyNiArMDMwMCwgVmlsbGUgU3lyasOkbMOkIHdyb3RlOg0KPiA+ ID4gPiA+IE9uIFdlZCwgQXVnIDEwLCAyMDE2IGF0IDEyOjQxOjU3UE0gLTA3MDAsIERoaW5ha2Fy YW4gUGFuZGl5YW4gd3JvdGU6DQo+ID4gPiA+ID4gPiBEUCBNU1QgcHJvdmlkZXMgdGhlIGNhcGFi aWxpdHkgdG8gc2VuZCBtdWx0aXBsZSB2aWRlbyBhbmQgYXVkaW8gc3RyZWFtcw0KPiA+ID4gPiA+ ID4gdGhyb3VnaCBhIHNpbmdsZSBwb3J0LiBUaGlzIHJlcXVpcmVzIHRoZSBBUEkncyBiZXR3ZWVu IGk5MTUgYW5kIGF1ZGlvDQo+ID4gPiA+ID4gPiBkcml2ZXJzIHRvIGRpc3Rpbmd1aXNoIGJldHdl ZW4gbXVsdGlwbGUgYXVkaW8gY2FwYWJsZSBkaXNwbGF5cyB0aGF0IGNhbiBiZQ0KPiA+ID4gPiA+ ID4gY29ubmVjdGVkIHRvIGEgcG9ydC4gQ3VycmVudGx5IG9ubHkgdGhlIHBvcnQgaWRlbnRpdHkg aXMgc2hhcmVkIGluIHRoZQ0KPiA+ID4gPiA+ID4gQVBJcy4gVGhpcyBwYXRjaCBhZGRzIHN1cHBv cnQgZm9yIE1TVCB3aXRoIGFuIGFkZGl0aW9uYWwgcGFyYW1ldGVyDQo+ID4gPiA+ID4gPiAnaW50 IHBpcGUnLiAgVGhlIGV4aXN0aW5nIHBhcmFtZXRlciAncG9ydCcgZG9lcyBub3QgY2hhbmdlIGl0 J3MgbWVhbmluZy4NCj4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gcGlwZSA9DQo+ID4gPiA+ID4g PiAJTVNUCTogZGlzcGxheSBwaXBlIHRoYXQgdGhlIHN0cmVhbSBvcmlnaW5hdGVzIGZyb20NCj4g PiA+ID4gPiA+IAlOb24tTVNUCTogLTENCj4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gQWZmZWN0 ZWQgQVBJczoNCj4gPiA+ID4gPiA+IHN0cnVjdCBpOTE1X2F1ZGlvX2NvbXBvbmVudF9vcHMNCj4g PiA+ID4gPiA+IC0gICAgICAgaW50ICgqc3luY19hdWRpb19yYXRlKShzdHJ1Y3QgZGV2aWNlICos IGludCBwb3J0LCBpbnQgcmF0ZSk7DQo+ID4gPiA+ID4gPiArCWludCAoKnN5bmNfYXVkaW9fcmF0 ZSkoc3RydWN0IGRldmljZSAqLCBpbnQgcG9ydCwgaW50IHBpcGUsDQo+ID4gPiA+ID4gPiArCSAg ICAgaW50IHJhdGUpOw0KPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiAtICAgICAgIGludCAoKmdl dF9lbGQpKHN0cnVjdCBkZXZpY2UgKiwgaW50IHBvcnQsIGJvb2wgKmVuYWJsZWQsDQo+ID4gPiA+ ID4gPiAtICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpidWYsIGludCBtYXhf Ynl0ZXMpOw0KPiA+ID4gPiA+ID4gKyAgICAgICBpbnQgKCpnZXRfZWxkKShzdHJ1Y3QgZGV2aWNl ICosIGludCBwb3J0LCBpbnQgcGlwZSwNCj4gPiA+ID4gPiA+ICsJCSAgICAgICBib29sICplbmFi bGVkLCB1bnNpZ25lZCBjaGFyICpidWYsIGludCBtYXhfYnl0ZXMpOw0KPiA+ID4gPiA+ID4gDQo+ ID4gPiA+ID4gPiBzdHJ1Y3QgaTkxNV9hdWRpb19jb21wb25lbnRfYXVkaW9fb3BzDQo+ID4gPiA+ ID4gPiAtICAgICAgIHZvaWQgKCpwaW5fZWxkX25vdGlmeSkodm9pZCAqYXVkaW9fcHRyLCBpbnQg cG9ydCk7DQo+ID4gPiA+ID4gPiArICAgICAgIHZvaWQgKCpwaW5fZWxkX25vdGlmeSkodm9pZCAq YXVkaW9fcHRyLCBpbnQgcG9ydCwgaW50IHBpcGUpOw0KPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4g PiBUaGlzIHBhdGNoIG1ha2VzIGR1bW15IGNoYW5nZXMgaW4gdGhlIGF1ZGlvIGRyaXZlcnMgKExp YmluKSBmb3IgYnVpbGQgdG8NCj4gPiA+ID4gPiA+IHN1Y2NlZWQuIFRoZSBhdWRpbyBzaWRlIGRy aXZlcnMgd2lsbCBzZW5kIHRoZSByaWdodCAncGlwZScgdmFsdWVzIGluDQo+ID4gPiA+ID4gPiBw YXRjaGVzIHRoYXQgd2lsbCBmb2xsb3cuDQo+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+IHYyOg0K PiA+ID4gPiA+ID4gUmVuYW1lZCB0aGUgbmV3IEFQSSBwYXJhbWV0ZXIgZnJvbSAnZGV2X2lkJyB0 byAncGlwZScuIChKaW0sIFZpbGxlKQ0KPiA+ID4gPiA+ID4gSW5jbHVkZWQgQXNvYyBkcml2ZXIg QVBJIGNvbXBhdGliaWxpdHkgY2hhbmdlcyBmcm9tIEplZWphLg0KPiA+ID4gPiA+ID4gQWRkZWQg V0FSTl9PTigpIGZvciBpbnZhbGlkIHBpcGUgaW4gZ2V0X3NhdmVkX2VuY29kZXIoKS4gKFRha2Fz aGkpDQo+ID4gPiA+ID4gPiBBZGRlZCBjb21tZW50IGZvciBhdl9lbmNfbWFwW10gZGVmaW5pdGlv bi4gKFRha2FzaGkpDQo+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+IHYzOg0KPiA+ID4gPiA+ID4g Rml4ZWQgbG9naWMgZXJyb3IgaW50cm9kdWNlZCB3aGlsZSByZW5hbWluZyAnZGV2X2lkJyBhcyAn cGlwZScgKFZpbGxlKQ0KPiA+ID4gPiA+ID4gUmVuYW1lZCBnZXRfc2F2ZWRfZW5jb2RlcigpIHRv IGdldF9zYXZlZF9lbmMoKSB0byByZWR1Y2UgbGluZSBsZW5ndGgNCj4gPiA+ID4gPiA+IA0KPiA+ ID4gPiA+ID4gU2lnbmVkLW9mZi1ieTogRGhpbmFrYXJhbiBQYW5kaXlhbiA8ZGhpbmFrYXJhbi5w YW5kaXlhbkBpbnRlbC5jb20+DQo+ID4gPiA+ID4gPiAtLS0NCj4gPiA+ID4gPiA+ICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgIHwgIDMgKy0NCj4gPiA+ID4gPiA+ICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5jIHwgOTMgKysrKysrKysrKysrKysrKysrKysrKysr KystLS0tLS0tLS0tLS0NCj4gPiA+ID4gPiA+ICBpbmNsdWRlL2RybS9pOTE1X2NvbXBvbmVudC5o ICAgICAgIHwgIDYgKy0tDQo+ID4gPiA+ID4gPiAgaW5jbHVkZS9zb3VuZC9oZGFfaTkxNS5oICAg ICAgICAgICB8IDExICsrKy0tDQo+ID4gPiA+ID4gPiAgc291bmQvaGRhL2hkYWNfaTkxNS5jICAg ICAgICAgICAgICB8ICA5ICsrLS0NCj4gPiA+ID4gPiA+ICBzb3VuZC9wY2kvaGRhL3BhdGNoX2hk bWkuYyAgICAgICAgIHwgIDcgKy0tDQo+ID4gPiA+ID4gPiAgc291bmQvc29jL2NvZGVjcy9oZGFj X2hkbWkuYyAgICAgICB8ICAyICstDQo+ID4gPiA+ID4gPiAgNyBmaWxlcyBjaGFuZ2VkLCA4NiBp bnNlcnRpb25zKCspLCA0NSBkZWxldGlvbnMoLSkNCj4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oDQo+ID4gPiA+ID4gPiBpbmRleCBjMzZkMTc2Li44ZTRhODhm IDEwMDY0NA0KPiA+ID4gPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu aA0KPiA+ID4gPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaA0KPiA+ ID4gPiA+ID4gQEAgLTIwMzYsNyArMjAzNiw4IEBAIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlIHsN Cj4gPiA+ID4gPiA+ICAJLyogcGVyZm9ybSBQSFkgc3RhdGUgc2FuaXR5IGNoZWNrcz8gKi8NCj4g PiA+ID4gPiA+ICAJYm9vbCBjaHZfcGh5X2Fzc2VydFsyXTsNCj4gPiA+ID4gPiA+ICANCj4gPiA+ ID4gPiA+IC0Jc3RydWN0IGludGVsX2VuY29kZXIgKmRpZ19wb3J0X21hcFtJOTE1X01BWF9QT1JU U107DQo+ID4gPiA+ID4gPiArCS8qIFVzZWQgdG8gc2F2ZSB0aGUgcGlwZS10by1lbmNvZGVyIG1h cHBpbmcgZm9yIGF1ZGlvICovDQo+ID4gPiA+ID4gPiArCXN0cnVjdCBpbnRlbF9lbmNvZGVyICph dl9lbmNfbWFwW0k5MTVfTUFYX1BJUEVTXTsNCj4gPiA+ID4gPiA+ICANCj4gPiA+ID4gPiA+ICAJ LyoNCj4gPiA+ID4gPiA+ICAJICogTk9URTogVGhpcyBpcyB0aGUgZHJpMS91bXMgZHVuZ2Vvbiwg ZG9uJ3QgYWRkIHN0dWZmIGhlcmUuIFlvdXIgcGF0Y2gNCj4gPiA+ID4gPiA+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfYXVkaW8uYw0KPiA+ID4gPiA+ID4gaW5kZXggZWYyMDg3NS4uYTc0NjdlYSAxMDA2 NDQNCj4gPiA+ID4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F1ZGlvLmMN Cj4gPiA+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F1ZGlvLmMNCj4g PiA+ID4gPiA+IEBAIC01MDAsNiArNTAwLDcgQEAgdm9pZCBpbnRlbF9hdWRpb19jb2RlY19lbmFi bGUoc3RydWN0IGludGVsX2VuY29kZXIgKmludGVsX2VuY29kZXIpDQo+ID4gPiA+ID4gPiAgCXN0 cnVjdCBpOTE1X2F1ZGlvX2NvbXBvbmVudCAqYWNvbXAgPSBkZXZfcHJpdi0+YXVkaW9fY29tcG9u ZW50Ow0KPiA+ID4gPiA+ID4gIAlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdf cG9ydCA9IGVuY190b19kaWdfcG9ydChlbmNvZGVyKTsNCj4gPiA+ID4gPiA+ICAJZW51bSBwb3J0 IHBvcnQgPSBpbnRlbF9kaWdfcG9ydC0+cG9ydDsNCj4gPiA+ID4gPiA+ICsJZW51bSBwaXBlIHBp cGUgPSBjcnRjLT5waXBlOw0KPiA+ID4gPiA+ID4gIA0KPiA+ID4gPiA+ID4gIAljb25uZWN0b3Ig PSBkcm1fc2VsZWN0X2VsZChlbmNvZGVyKTsNCj4gPiA+ID4gPiA+ICAJaWYgKCFjb25uZWN0b3Ip DQo+ID4gPiA+ID4gPiBAQCAtNTI0LDEyICs1MjUsMTggQEAgdm9pZCBpbnRlbF9hdWRpb19jb2Rl Y19lbmFibGUoc3RydWN0IGludGVsX2VuY29kZXIgKmludGVsX2VuY29kZXIpDQo+ID4gPiA+ID4g PiAgDQo+ID4gPiA+ID4gPiAgCW11dGV4X2xvY2soJmRldl9wcml2LT5hdl9tdXRleCk7DQo+ID4g PiA+ID4gPiAgCWludGVsX2VuY29kZXItPmF1ZGlvX2Nvbm5lY3RvciA9IGNvbm5lY3RvcjsNCj4g PiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICAJLyogcmVmZXJyZWQgaW4gYXVkaW8gY2FsbGJhY2tz ICovDQo+ID4gPiA+ID4gPiAtCWRldl9wcml2LT5kaWdfcG9ydF9tYXBbcG9ydF0gPSBpbnRlbF9l bmNvZGVyOw0KPiA+ID4gPiA+ID4gKwlkZXZfcHJpdi0+YXZfZW5jX21hcFtwaXBlXSA9IGludGVs X2VuY29kZXI7DQo+ID4gPiA+ID4gPiAgCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmF2X211dGV4 KTsNCj4gPiA+ID4gPiA+ICANCj4gPiA+ID4gPiA+ICsJLyogYXVkaW8gZHJpdmVycyBleHBlY3Qg cGlwZSA9IC0xIHRvIGluZGljYXRlIE5vbi1NU1QgY2FzZXMgKi8NCj4gPiA+ID4gPiA+ICsJaWYg KGludGVsX2VuY29kZXItPnR5cGUgIT0gSU5URUxfT1VUUFVUX0RQX01TVCkNCj4gPiA+ID4gPiA+ ICsJCXBpcGUgPSAtMTsNCj4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICAJaWYgKGFjb21wICYm IGFjb21wLT5hdWRpb19vcHMgJiYgYWNvbXAtPmF1ZGlvX29wcy0+cGluX2VsZF9ub3RpZnkpDQo+ ID4gPiA+ID4gPiAtCQlhY29tcC0+YXVkaW9fb3BzLT5waW5fZWxkX25vdGlmeShhY29tcC0+YXVk aW9fb3BzLT5hdWRpb19wdHIsIChpbnQpIHBvcnQpOw0KPiA+ID4gPiA+ID4gKwkJYWNvbXAtPmF1 ZGlvX29wcy0+cGluX2VsZF9ub3RpZnkoYWNvbXAtPmF1ZGlvX29wcy0+YXVkaW9fcHRyLA0KPiA+ ID4gPiA+ID4gKwkJCQkJCSAoaW50KSBwb3J0LCAoaW50KSBwaXBlKTsNCj4gPiA+ID4gPiA+ICB9 DQo+ID4gPiA+ID4gPiAgDQo+ID4gPiA+ID4gPiAgLyoqDQo+ID4gPiA+ID4gPiBAQCAtNTQyLDIy ICs1NDksMjkgQEAgdm9pZCBpbnRlbF9hdWRpb19jb2RlY19lbmFibGUoc3RydWN0IGludGVsX2Vu Y29kZXIgKmludGVsX2VuY29kZXIpDQo+ID4gPiA+ID4gPiAgdm9pZCBpbnRlbF9hdWRpb19jb2Rl Y19kaXNhYmxlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyKQ0KPiA+ID4gPiA+ ID4gIHsNCj4gPiA+ID4gPiA+ICAJc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyID0gJmludGVs X2VuY29kZXItPmJhc2U7DQo+ID4gPiA+ID4gPiArCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0g dG9faW50ZWxfY3J0YyhlbmNvZGVyLT5jcnRjKTsNCj4gPiA+ID4gPiA+ICAJc3RydWN0IGRybV9k ZXZpY2UgKmRldiA9IGVuY29kZXItPmRldjsNCj4gPiA+ID4gPiA+ICAJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOw0KPiA+ID4gPiA+ID4gIAlzdHJ1Y3Qg aTkxNV9hdWRpb19jb21wb25lbnQgKmFjb21wID0gZGV2X3ByaXYtPmF1ZGlvX2NvbXBvbmVudDsN Cj4gPiA+ID4gPiA+ICAJc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQg PSBlbmNfdG9fZGlnX3BvcnQoZW5jb2Rlcik7DQo+ID4gPiA+ID4gPiAgCWVudW0gcG9ydCBwb3J0 ID0gaW50ZWxfZGlnX3BvcnQtPnBvcnQ7DQo+ID4gPiA+ID4gPiArCWVudW0gcGlwZSBwaXBlID0g Y3J0Yy0+cGlwZTsNCj4gPiA+ID4gPiA+ICANCj4gPiA+ID4gPiA+ICAJaWYgKGRldl9wcml2LT5k aXNwbGF5LmF1ZGlvX2NvZGVjX2Rpc2FibGUpDQo+ID4gPiA+ID4gPiAgCQlkZXZfcHJpdi0+ZGlz cGxheS5hdWRpb19jb2RlY19kaXNhYmxlKGludGVsX2VuY29kZXIpOw0KPiA+ID4gPiA+ID4gIA0K PiA+ID4gPiA+ID4gIAltdXRleF9sb2NrKCZkZXZfcHJpdi0+YXZfbXV0ZXgpOw0KPiA+ID4gPiA+ ID4gIAlpbnRlbF9lbmNvZGVyLT5hdWRpb19jb25uZWN0b3IgPSBOVUxMOw0KPiA+ID4gPiA+ID4g LQlkZXZfcHJpdi0+ZGlnX3BvcnRfbWFwW3BvcnRdID0gTlVMTDsNCj4gPiA+ID4gPiA+ICsJZGV2 X3ByaXYtPmF2X2VuY19tYXBbcGlwZV0gPSBOVUxMOw0KPiA+ID4gPiA+ID4gIAltdXRleF91bmxv Y2soJmRldl9wcml2LT5hdl9tdXRleCk7DQo+ID4gPiA+ID4gPiAgDQo+ID4gPiA+ID4gPiArCS8q IGF1ZGlvIGRyaXZlcnMgZXhwZWN0IHBpcGUgPSAtMSB0byBpbmRpY2F0ZSBOb24tTVNUIGNhc2Vz ICovDQo+ID4gPiA+ID4gPiArCWlmIChpbnRlbF9lbmNvZGVyLT50eXBlICE9IElOVEVMX09VVFBV VF9EUF9NU1QpDQo+ID4gPiA+ID4gPiArCQlwaXBlID0gLTE7DQo+ID4gPiA+ID4gPiArDQo+ID4g PiA+ID4gPiAgCWlmIChhY29tcCAmJiBhY29tcC0+YXVkaW9fb3BzICYmIGFjb21wLT5hdWRpb19v cHMtPnBpbl9lbGRfbm90aWZ5KQ0KPiA+ID4gPiA+ID4gLQkJYWNvbXAtPmF1ZGlvX29wcy0+cGlu X2VsZF9ub3RpZnkoYWNvbXAtPmF1ZGlvX29wcy0+YXVkaW9fcHRyLCAoaW50KSBwb3J0KTsNCj4g PiA+ID4gPiA+ICsJCWFjb21wLT5hdWRpb19vcHMtPnBpbl9lbGRfbm90aWZ5KGFjb21wLT5hdWRp b19vcHMtPmF1ZGlvX3B0ciwNCj4gPiA+ID4gPiA+ICsJCQkJCQkgKGludCkgcG9ydCwgKGludCkg cGlwZSk7DQo+ID4gPiA+ID4gPiAgfQ0KPiA+ID4gPiA+ID4gIA0KPiA+ID4gPiA+ID4gIC8qKg0K PiA+ID4gPiA+ID4gQEAgLTYzMiwxNSArNjQ2LDM5IEBAIHN0YXRpYyBpbnQgaTkxNV9hdWRpb19j b21wb25lbnRfZ2V0X2NkY2xrX2ZyZXEoc3RydWN0IGRldmljZSAqZGV2KQ0KPiA+ID4gPiA+ID4g IAlyZXR1cm4gZGV2X3ByaXYtPmNkY2xrX2ZyZXE7DQo+ID4gPiA+ID4gPiAgfQ0KPiA+ID4gPiA+ ID4gIA0KPiA+ID4gPiA+ID4gLXN0YXRpYyBpbnQgaTkxNV9hdWRpb19jb21wb25lbnRfc3luY19h dWRpb19yYXRlKHN0cnVjdCBkZXZpY2UgKmRldiwNCj4gPiA+ID4gPiA+IC0JCQkJCQlpbnQgcG9y dCwgaW50IHJhdGUpDQo+ID4gPiA+ID4gPiArc3RhdGljIHN0cnVjdCBpbnRlbF9lbmNvZGVyICpn ZXRfc2F2ZWRfZW5jKHN0cnVjdCBpbnRlbF9lbmNvZGVyICphdl9lbmNfbWFwW10sDQo+ID4gPiA+ ID4gPiArCQkJCQkgICAgICAgaW50IHBvcnQsIGludCBwaXBlKQ0KPiA+ID4gPiA+ID4gK3sNCj4g PiA+ID4gPiA+ICsJc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyOw0KPiA+ID4gPiA+ID4gKw0K PiA+ID4gPiA+ID4gKwlpZiAoV0FSTl9PTihwaXBlID49IEk5MTVfTUFYX1BJUEVTKSkNCj4gPiA+ ID4gPiA+ICsJCXJldHVybiBOVUxMOw0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKwkvKiBN U1QgKi8NCj4gPiA+ID4gPiA+ICsJaWYgKHBpcGUgIT0gLTEpDQo+ID4gPiA+ID4gDQo+ID4gPiA+ ID4gSSdkIG1ha2UgdGhhdCA8IDANCj4gPiA+ID4gPiANCj4gPiA+ID4gVGhhbmtzIGZvciByZXZp ZXdpbmcuDQo+ID4gPiA+IERvIHlvdSBtZWFuIHRoaXM/IC0gaGFuZGxlIHRoZSBub24tTVNUIGJy YW5jaCBmaXJzdCB3aXRoIA0KPiA+ID4gPiANCj4gPiA+ID4gaWYgKHBpcGUgPCAwKXsgDQo+ID4g PiA+IAlmb3JfZWFjaF9waXBlKCl7DQo+ID4gPiA+IA0KPiA+ID4gPiAJCS4uLg0KPiA+ID4gPiAJ fQ0KPiA+ID4gPiB9DQo+ID4gPiA+IGVsc2UgDQo+ID4gPiA+IAlyZXR1cm4gYXZfZW5jX21hcFtw aXBlXTsNCj4gPiA+IA0KPiA+ID4gU29ycnksIG5vLiBJIGxpa2UgeW91ciBjdXJyZW50IGNvZGUg c3RydWN0dXJlLCBzbyB3aGF0IEkgcmVhbGx5IG1lYW50DQo+ID4gPiB3YXMgJ3BpcGUgPj0gMCcs IHNvOg0KPiA+ID4gDQo+ID4gPiBpZiAocGlwZSA+PSAwKQ0KPiA+ID4gCXJldHVybiAuLi4NCj4g PiA+IA0KPiA+ID4gZm9yX2VhY2hfcGlwZSgpDQo+ID4gPiAJLi4uDQo+ID4gPiAJDQo+ID4gPiAN Cj4gPiANCj4gPiBJJ2xsIG1ha2UgdGhpcyBjaGFuZ2UuDQo+ID4gDQo+ID4gPiA+IA0KPiA+ID4g PiA+ID4gKwkJcmV0dXJuIGF2X2VuY19tYXBbcGlwZV07DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ ID4gPiArCS8qIE5vbi1NU1QgKi8NCj4gPiA+ID4gPiA+ICsJZm9yIChwaXBlID0gUElQRV9BOyBw aXBlIDwgSTkxNV9NQVhfUElQRVM7IHBpcGUrKykgew0KPiA+ID4gPiA+IA0KPiA+ID4gPiA+IGZv cl9lYWNoX3BpcGUoKSB3b3VsZCBiZSBuaWNlci4NCj4gPiA+ID4gPiANCj4gPiA+ID4gPiA+ICsJ CWlmICghYXZfZW5jX21hcFtwaXBlXSkNCj4gPiA+ID4gPiA+ICsJCQljb250aW51ZTsNCj4gPiA+ ID4gPiA+ICsNCj4gPiA+ID4gPiA+ICsJCWVuY29kZXIgPSAmYXZfZW5jX21hcFtwaXBlXS0+YmFz ZTsNCj4gPiA+ID4gPiA+ICsJCWlmIChwb3J0ID09IGVuY190b19kaWdfcG9ydChlbmNvZGVyKS0+ cG9ydCkNCj4gPiA+ID4gPiA+ICsJCQlyZXR1cm4gYXZfZW5jX21hcFtwaXBlXTsNCj4gPiA+ID4g PiA+ICsJfQ0KPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gKwlyZXR1cm4gTlVMTDsNCj4gPiA+ ID4gPiA+ICt9DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiArc3RhdGljIGludCBpOTE1X2F1 ZGlvX2NvbXBvbmVudF9zeW5jX2F1ZGlvX3JhdGUoc3RydWN0IGRldmljZSAqZGV2LCBpbnQgcG9y dCwNCj4gPiA+ID4gPiA+ICsJCQkJCQlpbnQgcGlwZSwgaW50IHJhdGUpDQo+ID4gPiA+ID4gPiAg ew0KPiA+ID4gPiA+ID4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXZf dG9faTkxNShkZXYpOw0KPiA+ID4gPiA+ID4gIAlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxf ZW5jb2RlcjsNCj4gPiA+ID4gPiA+ICAJc3RydWN0IGludGVsX2NydGMgKmNydGM7DQo+ID4gPiA+ ID4gPiAgCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlOw0KPiA+ID4gPiA+ID4gIAlzdHJ1 Y3QgaTkxNV9hdWRpb19jb21wb25lbnQgKmFjb21wID0gZGV2X3ByaXYtPmF1ZGlvX2NvbXBvbmVu dDsNCj4gPiA+ID4gPiA+IC0JZW51bSBwaXBlIHBpcGUgPSBJTlZBTElEX1BJUEU7DQo+ID4gPiA+ ID4gPiAgCXUzMiB0bXA7DQo+ID4gPiA+ID4gPiAgCWludCBuOw0KPiA+ID4gPiA+ID4gIAlpbnQg ZXJyID0gMDsNCj4gPiA+ID4gPiA+IEBAIC02NTQsMjUgKzY5MiwyMCBAQCBzdGF0aWMgaW50IGk5 MTVfYXVkaW9fY29tcG9uZW50X3N5bmNfYXVkaW9fcmF0ZShzdHJ1Y3QgZGV2aWNlICpkZXYsDQo+ ID4gPiA+ID4gPiAgDQo+ID4gPiA+ID4gPiAgCWk5MTVfYXVkaW9fY29tcG9uZW50X2dldF9wb3dl cihkZXYpOw0KPiA+ID4gPiA+ID4gIAltdXRleF9sb2NrKCZkZXZfcHJpdi0+YXZfbXV0ZXgpOw0K PiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gIAkvKiAxLiBnZXQgdGhlIHBpcGUgKi8NCj4gPiA+ ID4gPiA+IC0JaW50ZWxfZW5jb2RlciA9IGRldl9wcml2LT5kaWdfcG9ydF9tYXBbcG9ydF07DQo+ ID4gPiA+ID4gPiAtCS8qIGludGVsX2VuY29kZXIgbWlnaHQgYmUgTlVMTCBmb3IgRFAgTVNUICov DQo+ID4gPiA+ID4gPiArCWludGVsX2VuY29kZXIgPSBnZXRfc2F2ZWRfZW5jKGRldl9wcml2LT5h dl9lbmNfbWFwLCBwb3J0LCBwaXBlKTsNCj4gPiA+ID4gPiA+ICAJaWYgKCFpbnRlbF9lbmNvZGVy IHx8ICFpbnRlbF9lbmNvZGVyLT5iYXNlLmNydGMgfHwNCj4gPiA+ID4gPiA+ICAJICAgIGludGVs X2VuY29kZXItPnR5cGUgIT0gSU5URUxfT1VUUFVUX0hETUkpIHsNCj4gPiA+ID4gPiANCj4gPiA+ ID4gPiBEaWQgd2UgaGF2ZSBhIGZvbGxvd3VwIHBsYW5uZWQgdG8gZGVhbCB3aXRoIE1TVCBoZXJl PyBJIGtub3cgdGhlcmUncw0KPiA+ID4gPiA+IHRoYXQgU1NUIE0vTiBwYXRjaCBmbG9hdGluZyBh cm91bmQsIGJ1dCBJIHRoaW5rIHdlJ2xsIHdhbnQgaXQgZm9yIE1TVA0KPiA+ID4gPiA+IHRvby4N Cj4gPiA+ID4gPiANCj4gPiA+ID4gTG9va3MgbGlrZSBMaWJpbiBZYW5nIGlzIHdvcmtpbmcgb24g dGhlIERQIHBhdGNoLCBJIHdpbGwgY2hlY2sgd2l0aCBoaW0uDQo+ID4gPiA+IA0KPiA+ID4gPiA+ ID4gLQkJRFJNX0RFQlVHX0tNUygibm8gdmFsaWQgcG9ydCAlY1xuIiwgcG9ydF9uYW1lKHBvcnQp KTsNCj4gPiA+ID4gPiA+ICsJCURSTV9ERUJVR19LTVMoIk5vdCB2YWxpZCBmb3IgcG9ydCAlY1xu IiwgcG9ydF9uYW1lKHBvcnQpKTsNCj4gPiA+ID4gPiA+ICAJCWVyciA9IC1FTk9ERVY7DQo+ID4g PiA+ID4gPiAgCQlnb3RvIHVubG9jazsNCj4gPiA+ID4gPiA+ICAJfQ0KPiA+ID4gPiA+ID4gKw0K PiA+ID4gPiA+ID4gKwkvKiBwaXBlIHBhc3NlZCBmcm9tIHRoZSBhdWRpbyBkcml2ZXIgd2lsbCBi ZSAtMSBmb3IgTm9uLU1TVCBjYXNlICovDQo+ID4gPiA+ID4gPiAgCWNydGMgPSB0b19pbnRlbF9j cnRjKGludGVsX2VuY29kZXItPmJhc2UuY3J0Yyk7DQo+ID4gPiA+ID4gPiAgCXBpcGUgPSBjcnRj LT5waXBlOw0KPiA+ID4gPiA+ID4gLQlpZiAocGlwZSA9PSBJTlZBTElEX1BJUEUpIHsNCj4gPiA+ ID4gPiA+IC0JCURSTV9ERUJVR19LTVMoIm5vIHBpcGUgZm9yIHRoZSBwb3J0ICVjXG4iLCBwb3J0 X25hbWUocG9ydCkpOw0KPiA+ID4gPiA+ID4gLQkJZXJyID0gLUVOT0RFVjsNCj4gPiA+ID4gPiA+ IC0JCWdvdG8gdW5sb2NrOw0KPiA+ID4gPiA+ID4gLQl9DQo+ID4gPiA+ID4gPiAgDQo+ID4gPiA+ ID4gPiAtCURSTV9ERUJVR19LTVMoInBpcGUgJWMgY29ubmVjdHMgcG9ydCAlY1xuIiwNCj4gPiA+ ID4gPiA+IC0JCQkJICBwaXBlX25hbWUocGlwZSksIHBvcnRfbmFtZShwb3J0KSk7DQo+ID4gPiA+ ID4gPiAgCW1vZGUgPSAmY3J0Yy0+Y29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGU7DQo+ID4gPiA+ ID4gPiAgDQo+ID4gPiA+ID4gPiAgCS8qIHBvcnQgbXVzdCBiZSB2YWxpZCBub3csIG90aGVyd2lz ZSB0aGUgcGlwZSB3aWxsIGJlIGludmFsaWQgKi8NCj4gPiA+ID4gPiA+IEBAIC03MDgsNyArNzQx LDcgQEAgc3RhdGljIGludCBpOTE1X2F1ZGlvX2NvbXBvbmVudF9zeW5jX2F1ZGlvX3JhdGUoc3Ry dWN0IGRldmljZSAqZGV2LA0KPiA+ID4gPiA+ID4gIH0NCj4gPiA+ID4gPiA+ICANCj4gPiA+ID4g PiA+ICBzdGF0aWMgaW50IGk5MTVfYXVkaW9fY29tcG9uZW50X2dldF9lbGQoc3RydWN0IGRldmlj ZSAqZGV2LCBpbnQgcG9ydCwNCj4gPiA+ID4gPiA+IC0JCQkJCWJvb2wgKmVuYWJsZWQsDQo+ID4g PiA+ID4gPiArCQkJCQlpbnQgcGlwZSwgYm9vbCAqZW5hYmxlZCwNCj4gPiA+ID4gPiA+ICAJCQkJ CXVuc2lnbmVkIGNoYXIgKmJ1ZiwgaW50IG1heF9ieXRlcykNCj4gPiA+ID4gPiA+ICB7DQo+ID4g PiA+ID4gPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldl90b19pOTE1 KGRldik7DQo+ID4gPiA+ID4gPiBAQCAtNzE3LDE2ICs3NTAsMjAgQEAgc3RhdGljIGludCBpOTE1 X2F1ZGlvX2NvbXBvbmVudF9nZXRfZWxkKHN0cnVjdCBkZXZpY2UgKmRldiwgaW50IHBvcnQsDQo+ ID4gPiA+ID4gPiAgCWludCByZXQgPSAtRUlOVkFMOw0KPiA+ID4gPiA+ID4gIA0KPiA+ID4gPiA+ ID4gIAltdXRleF9sb2NrKCZkZXZfcHJpdi0+YXZfbXV0ZXgpOw0KPiA+ID4gPiA+ID4gLQlpbnRl bF9lbmNvZGVyID0gZGV2X3ByaXYtPmRpZ19wb3J0X21hcFtwb3J0XTsNCj4gPiA+ID4gPiA+IC0J LyogaW50ZWxfZW5jb2RlciBtaWdodCBiZSBOVUxMIGZvciBEUCBNU1QgKi8NCj4gPiA+ID4gPiA+ IC0JaWYgKGludGVsX2VuY29kZXIpIHsNCj4gPiA+ID4gPiA+IC0JCXJldCA9IDA7DQo+ID4gPiA+ ID4gPiAtCQkqZW5hYmxlZCA9IGludGVsX2VuY29kZXItPmF1ZGlvX2Nvbm5lY3RvciAhPSBOVUxM Ow0KPiA+ID4gPiA+ID4gLQkJaWYgKCplbmFibGVkKSB7DQo+ID4gPiA+ID4gPiAtCQkJZWxkID0g aW50ZWxfZW5jb2Rlci0+YXVkaW9fY29ubmVjdG9yLT5lbGQ7DQo+ID4gPiA+ID4gPiAtCQkJcmV0 ID0gZHJtX2VsZF9zaXplKGVsZCk7DQo+ID4gPiA+ID4gPiAtCQkJbWVtY3B5KGJ1ZiwgZWxkLCBt aW4obWF4X2J5dGVzLCByZXQpKTsNCj4gPiA+ID4gPiA+IC0JCX0NCj4gPiA+ID4gPiA+ICsNCj4g PiA+ID4gPiA+ICsJaW50ZWxfZW5jb2RlciA9IGdldF9zYXZlZF9lbmMoZGV2X3ByaXYtPmF2X2Vu Y19tYXAsIHBvcnQsIHBpcGUpOw0KPiA+ID4gPiA+ID4gKwlpZiAoIWludGVsX2VuY29kZXIpIHsN Cj4gPiA+ID4gPiA+ICsJCURSTV9ERUJVR19LTVMoIk5vdCB2YWxpZCBmb3IgcG9ydCAlY1xuIiwg cG9ydF9uYW1lKHBvcnQpKTsNCj4gPiA+ID4gPiANCj4gPiA+ID4gPiBQcmludCB0aGUgcGlwZSBu YW1lIHRvbywgaWYgd2UgaGF2ZSBhIHZhbGlkIHBpcGU/DQo+ID4gPiA+ID4gDQo+ID4gPiA+ID4g PiArCQltdXRleF91bmxvY2soJmRldl9wcml2LT5hdl9tdXRleCk7DQo+ID4gPiA+ID4gPiArCQly ZXR1cm4gcmV0Ow0KPiA+ID4gPiA+ID4gKwl9DQo+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiAr CXJldCA9IDA7DQo+ID4gPiA+ID4gPiArCSplbmFibGVkID0gaW50ZWxfZW5jb2Rlci0+YXVkaW9f Y29ubmVjdG9yICE9IE5VTEw7DQo+ID4gPiA+ID4gPiArCWlmICgqZW5hYmxlZCkgew0KPiA+ID4g PiA+ID4gKwkJZWxkID0gaW50ZWxfZW5jb2Rlci0+YXVkaW9fY29ubmVjdG9yLT5lbGQ7DQo+ID4g PiA+ID4gPiArCQlyZXQgPSBkcm1fZWxkX3NpemUoZWxkKTsNCj4gPiA+ID4gPiA+ICsJCW1lbWNw eShidWYsIGVsZCwgbWluKG1heF9ieXRlcywgcmV0KSk7DQo+ID4gPiA+ID4gPiAgCX0NCj4gPiA+ ID4gPiA+ICANCj4gPiA+ID4gPiA+ICAJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+YXZfbXV0ZXgp Ow0KPiA+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2k5MTVfY29tcG9uZW50Lmgg Yi9pbmNsdWRlL2RybS9pOTE1X2NvbXBvbmVudC5oDQo+ID4gPiA+ID4gPiBpbmRleCBiNDZmYTBl Li41NDVjNmUwIDEwMDY0NA0KPiA+ID4gPiA+ID4gLS0tIGEvaW5jbHVkZS9kcm0vaTkxNV9jb21w b25lbnQuaA0KPiA+ID4gPiA+ID4gKysrIGIvaW5jbHVkZS9kcm0vaTkxNV9jb21wb25lbnQuaA0K PiA+ID4gPiA+ID4gQEAgLTY0LDcgKzY0LDcgQEAgc3RydWN0IGk5MTVfYXVkaW9fY29tcG9uZW50 X29wcyB7DQo+ID4gPiA+ID4gPiAgCSAqIENhbGxlZCBmcm9tIGF1ZGlvIGRyaXZlci4gQWZ0ZXIg YXVkaW8gZHJpdmVyIHNldHMgdGhlDQo+ID4gPiA+ID4gPiAgCSAqIHNhbXBsZSByYXRlLCBpdCB3 aWxsIGNhbGwgdGhpcyBmdW5jdGlvbiB0byBzZXQgbi9jdHMNCj4gPiA+ID4gPiA+ICAJICovDQo+ ID4gPiA+ID4gPiAtCWludCAoKnN5bmNfYXVkaW9fcmF0ZSkoc3RydWN0IGRldmljZSAqLCBpbnQg cG9ydCwgaW50IHJhdGUpOw0KPiA+ID4gPiA+ID4gKwlpbnQgKCpzeW5jX2F1ZGlvX3JhdGUpKHN0 cnVjdCBkZXZpY2UgKiwgaW50IHBvcnQsIGludCBwaXBlLCBpbnQgcmF0ZSk7DQo+ID4gPiA+ID4g PiAgCS8qKg0KPiA+ID4gPiA+ID4gIAkgKiBAZ2V0X2VsZDogZmlsbCB0aGUgYXVkaW8gc3RhdGUg YW5kIEVMRCBieXRlcyBmb3IgdGhlIGdpdmVuIHBvcnQNCj4gPiA+ID4gPiA+ICAJICoNCj4gPiA+ ID4gPiA+IEBAIC03Nyw3ICs3Nyw3IEBAIHN0cnVjdCBpOTE1X2F1ZGlvX2NvbXBvbmVudF9vcHMg ew0KPiA+ID4gPiA+ID4gIAkgKiBOb3RlIHRoYXQgdGhlIHJldHVybmVkIHNpemUgbWF5IGJlIG92 ZXIgQG1heF9ieXRlcy4gIFRoZW4gaXQNCj4gPiA+ID4gPiA+ICAJICogaW1wbGllcyB0aGF0IG9u bHkgYSBwYXJ0IG9mIEVMRCBoYXMgYmVlbiBjb3BpZWQgdG8gdGhlIGJ1ZmZlci4NCj4gPiA+ID4g PiA+ICAJICovDQo+ID4gPiA+ID4gPiAtCWludCAoKmdldF9lbGQpKHN0cnVjdCBkZXZpY2UgKiwg aW50IHBvcnQsIGJvb2wgKmVuYWJsZWQsDQo+ID4gPiA+ID4gPiArCWludCAoKmdldF9lbGQpKHN0 cnVjdCBkZXZpY2UgKiwgaW50IHBvcnQsIGludCBwaXBlLCBib29sICplbmFibGVkLA0KPiA+ID4g PiA+ID4gIAkJICAgICAgIHVuc2lnbmVkIGNoYXIgKmJ1ZiwgaW50IG1heF9ieXRlcyk7DQo+ID4g PiA+ID4gPiAgfTsNCj4gPiA+ID4gPiA+ICANCj4gPiA+ID4gPiA+IEBAIC05Nyw3ICs5Nyw3IEBA IHN0cnVjdCBpOTE1X2F1ZGlvX2NvbXBvbmVudF9hdWRpb19vcHMgew0KPiA+ID4gPiA+ID4gIAkg KiBzdGF0dXMgYWNjb3JkaW5nbHkgKGV2ZW4gd2hlbiB0aGUgSERBIGNvbnRyb2xsZXIgaXMgaW4g cG93ZXIgc2F2ZQ0KPiA+ID4gPiA+ID4gIAkgKiBtb2RlKS4NCj4gPiA+ID4gPiA+ICAJICovDQo+ ID4gPiA+ID4gPiAtCXZvaWQgKCpwaW5fZWxkX25vdGlmeSkodm9pZCAqYXVkaW9fcHRyLCBpbnQg cG9ydCk7DQo+ID4gPiA+ID4gPiArCXZvaWQgKCpwaW5fZWxkX25vdGlmeSkodm9pZCAqYXVkaW9f cHRyLCBpbnQgcG9ydCwgaW50IHBpcGUpOw0KPiA+ID4gPiA+ID4gIH07DQo+ID4gPiA+ID4gPiAg DQo+ID4gPiA+ID4gPiAgLyoqDQo+ID4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zb3Vu ZC9oZGFfaTkxNS5oIGIvaW5jbHVkZS9zb3VuZC9oZGFfaTkxNS5oDQo+ID4gPiA+ID4gPiBpbmRl eCA3OTZjYWJmLi4wN2ZkNjRlIDEwMDY0NA0KPiA+ID4gPiA+ID4gLS0tIGEvaW5jbHVkZS9zb3Vu ZC9oZGFfaTkxNS5oDQo+ID4gPiA+ID4gPiArKysgYi9pbmNsdWRlL3NvdW5kL2hkYV9pOTE1LmgN Cj4gPiA+ID4gPiA+IEBAIC0xMCw4ICsxMCw5IEBADQo+ID4gPiA+ID4gPiAgaW50IHNuZF9oZGFj X3NldF9jb2RlY193YWtldXAoc3RydWN0IGhkYWNfYnVzICpidXMsIGJvb2wgZW5hYmxlKTsNCj4g PiA+ID4gPiA+ICBpbnQgc25kX2hkYWNfZGlzcGxheV9wb3dlcihzdHJ1Y3QgaGRhY19idXMgKmJ1 cywgYm9vbCBlbmFibGUpOw0KPiA+ID4gPiA+ID4gIHZvaWQgc25kX2hkYWNfaTkxNV9zZXRfYmNs ayhzdHJ1Y3QgaGRhY19idXMgKmJ1cyk7DQo+ID4gPiA+ID4gPiAtaW50IHNuZF9oZGFjX3N5bmNf YXVkaW9fcmF0ZShzdHJ1Y3QgaGRhY19kZXZpY2UgKmNvZGVjLCBoZGFfbmlkX3QgbmlkLCBpbnQg cmF0ZSk7DQo+ID4gPiA+ID4gPiAtaW50IHNuZF9oZGFjX2Fjb21wX2dldF9lbGQoc3RydWN0IGhk YWNfZGV2aWNlICpjb2RlYywgaGRhX25pZF90IG5pZCwNCj4gPiA+ID4gPiA+ICtpbnQgc25kX2hk YWNfc3luY19hdWRpb19yYXRlKHN0cnVjdCBoZGFjX2RldmljZSAqY29kZWMsIGhkYV9uaWRfdCBu aWQsDQo+ID4gPiA+ID4gPiArCQkJICAgICBpbnQgcGlwZSwgaW50IHJhdGUpOw0KPiA+ID4gPiA+ ID4gK2ludCBzbmRfaGRhY19hY29tcF9nZXRfZWxkKHN0cnVjdCBoZGFjX2RldmljZSAqY29kZWMs IGhkYV9uaWRfdCBuaWQsIGludCBwaXBlLA0KPiA+ID4gPiA+ID4gIAkJCSAgIGJvb2wgKmF1ZGlv X2VuYWJsZWQsIGNoYXIgKmJ1ZmZlciwgaW50IG1heF9ieXRlcyk7DQo+ID4gPiA+ID4gPiAgaW50 IHNuZF9oZGFjX2k5MTVfaW5pdChzdHJ1Y3QgaGRhY19idXMgKmJ1cyk7DQo+ID4gPiA+ID4gPiAg aW50IHNuZF9oZGFjX2k5MTVfZXhpdChzdHJ1Y3QgaGRhY19idXMgKmJ1cyk7DQo+ID4gPiA+ID4g PiBAQCAtMjksMTMgKzMwLDEzIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBzbmRfaGRhY19pOTE1X3Nl dF9iY2xrKHN0cnVjdCBoZGFjX2J1cyAqYnVzKQ0KPiA+ID4gPiA+ID4gIHsNCj4gPiA+ID4gPiA+ ICB9DQo+ID4gPiA+ID4gPiAgc3RhdGljIGlubGluZSBpbnQgc25kX2hkYWNfc3luY19hdWRpb19y YXRlKHN0cnVjdCBoZGFjX2RldmljZSAqY29kZWMsDQo+ID4gPiA+ID4gPiAtCQkJCQkgICBoZGFf bmlkX3QgbmlkLCBpbnQgcmF0ZSkNCj4gPiA+ID4gPiA+ICsJCQkJCSAgIGhkYV9uaWRfdCBuaWQs IGludCBwaXBlLCBpbnQgcmF0ZSkNCj4gPiA+ID4gPiA+ICB7DQo+ID4gPiA+ID4gPiAgCXJldHVy biAwOw0KPiA+ID4gPiA+ID4gIH0NCj4gPiA+ID4gPiA+ICBzdGF0aWMgaW5saW5lIGludCBzbmRf aGRhY19hY29tcF9nZXRfZWxkKHN0cnVjdCBoZGFjX2RldmljZSAqY29kZWMsIGhkYV9uaWRfdCBu aWQsDQo+ID4gPiA+ID4gPiAtCQkJCQkgYm9vbCAqYXVkaW9fZW5hYmxlZCwgY2hhciAqYnVmZmVy LA0KPiA+ID4gPiA+ID4gLQkJCQkJIGludCBtYXhfYnl0ZXMpDQo+ID4gPiA+ID4gPiArCQkJCQkg aW50IHBpcGUsIGJvb2wgKmF1ZGlvX2VuYWJsZWQsDQo+ID4gPiA+ID4gPiArCQkJCQkgY2hhciAq YnVmZmVyLCBpbnQgbWF4X2J5dGVzKQ0KPiA+ID4gPiA+ID4gIHsNCj4gPiA+ID4gPiA+ICAJcmV0 dXJuIC1FTk9ERVY7DQo+ID4gPiA+ID4gPiAgfQ0KPiA+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL3Nv dW5kL2hkYS9oZGFjX2k5MTUuYyBiL3NvdW5kL2hkYS9oZGFjX2k5MTUuYw0KPiA+ID4gPiA+ID4g aW5kZXggYzlhZjAyMi4uYjk5OTk0YiAxMDA2NDQNCj4gPiA+ID4gPiA+IC0tLSBhL3NvdW5kL2hk YS9oZGFjX2k5MTUuYw0KPiA+ID4gPiA+ID4gKysrIGIvc291bmQvaGRhL2hkYWNfaTkxNS5jDQo+ ID4gPiA+ID4gPiBAQCAtMjAxLDcgKzIwMSw4IEBAIHN0YXRpYyBpbnQgcGluMnBvcnQoc3RydWN0 IGhkYWNfZGV2aWNlICpjb2RlYywgaGRhX25pZF90IHBpbl9uaWQpDQo+ID4gPiA+ID4gPiAgICog VGhpcyBmdW5jdGlvbiBzZXRzIE4vQ1RTIHZhbHVlIGJhc2VkIG9uIHRoZSBnaXZlbiBzYW1wbGUg cmF0ZS4NCj4gPiA+ID4gPiA+ICAgKiBSZXR1cm5zIHplcm8gZm9yIHN1Y2Nlc3MsIG9yIGEgbmVn YXRpdmUgZXJyb3IgY29kZS4NCj4gPiA+ID4gPiA+ICAgKi8NCj4gPiA+ID4gPiA+IC1pbnQgc25k X2hkYWNfc3luY19hdWRpb19yYXRlKHN0cnVjdCBoZGFjX2RldmljZSAqY29kZWMsIGhkYV9uaWRf dCBuaWQsIGludCByYXRlKQ0KPiA+ID4gPiA+ID4gK2ludCBzbmRfaGRhY19zeW5jX2F1ZGlvX3Jh dGUoc3RydWN0IGhkYWNfZGV2aWNlICpjb2RlYywgaGRhX25pZF90IG5pZCwNCj4gPiA+ID4gPiA+ ICsJCQkgICAgIGludCBwaXBlLCBpbnQgcmF0ZSkNCj4gPiA+ID4gPiANCj4gPiA+ID4gPiBJIHRo b3VnaHQgeW91J2Qgc3RpbGwgd2FudCB0byBjYWxsIGl0ICdkZXZfaWQnIG9uIHRoZSBoZGEgc2lk ZSwgYW5kIGp1c3QNCj4gPiA+ID4gPiBkbyB0aGUgZGV2X2lkLT5waXBlIGNvbnZlcnNpb24gaGVy ZSBuZXh0IHRvIHRoZSBwaW4tPnBvcnQgY29udmVyc2lvbj8NCj4gPiA+ID4gPiBKdXN0IGZpZ3Vy ZWQgdGhhdCB3b3VsZCBiZSBsZXNzIGNvbmZ1c2luZyBmb3IgcGVvcGxlIHdobyBhcmUganVzdCBm YW1pbGlhcg0KPiA+ID4gPiA+IHdpdGggaGRhIGFuZCBub3QgaTkxNS4NCj4gPiA+ID4gPiANCj4g PiA+ID4gWWVhaCwgdGhhdCBtYWtlcyBzZW5zZS4gDQo+ID4gPiA+IA0KPiA+ID4gPiA+IEFueXdh eXMsIHRoZSBwYXRjaCBsb29rcyBwcmV0dHkgZ29vZCB0byBtZSBmcm9tIHRoZSBpOTE1IFBPVi4g V2hldGhlcg0KPiA+ID4gPiA+IHlvdSB3YW50IHRvIGRvIHRob3NlIHNtYWxsIGNoYW5nZXMgSSBw cm9wb3NlZCBpcyB1cCB0byB5b3UsIGFuZCBlaXRoZXINCj4gPiA+ID4gPiB3YXkgdGhlIGk5MTUg cGFydHMgYXJlDQo+ID4gPiA+ID4gUmV2aWV3ZWQtYnk6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUu c3lyamFsYUBsaW51eC5pbnRlbC5jb20+DQo+ID4gPiA+ID4gDQo+ID4gPiA+IA0KPiA+ID4gPiBJ IGhhdmUgYXNzdW1lZCBlbmNfdG9fZGlnX3BvcnQoKSB3b3JrcyBmb3IgTVNUIGVuY29kZXJzLiBE byB5b3UgdGhpbmsNCj4gPiA+ID4gaXQncyBnb29kIGlkZWEgdG8gaGF2ZSB0aGlzDQo+ID4gPiA+ IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL2FyY2hpdmVzL2ludGVsLWdmeC8yMDE2LUF1 Z3VzdC8xMDI5OTQuaHRtbA0KPiA+ID4gPiBub3c/DQo+ID4gPiANCj4gPiA+IE9oIEkgZm9yZ290 IGFib3V0IHRoYXQgcGFydC4gSSdtIG5vdCByZWFsbHkgZXhjaXRlZCBhYm91dCB0aGF0IHBhdGNo Lg0KPiA+ID4gSSdkIHByZWZlciB0aGF0IHBlb3BsZSBoYXZlIHRvIHRoaW5rIGEgYml0IHdoZW4g ZGVhbGluZyB3aXRoIE1TVA0KPiA+ID4gZW5jb2RlcnMsIG90aGVyd2lzZSB0aGV5IG1pZ2h0IGFz c3VtZSB0aGV5IHdvcmsganVzdCBsaWtlIGFueSBvdGhlcg0KPiA+ID4gZW5jb2Rlci4NCj4gPiA+ IA0KPiA+ID4gU28gSSdkIHByZWZlciB0aGF0IHlvdSBleHBsaWNpdGx5IGhhbmRsZSB0aGUgTVNU IGNhc2Ugd2hlbiBsb29raW5nIHVwDQo+ID4gPiB0aGUgZW5jb2Rlci4gRm9yIHlvdXIgYXVkaW8g dXNlIGNhc2UsIEkgdGhpbmsgeW91IGp1c3QgbmVlZCB0aGUgJ3BvcnQnDQo+ID4gPiBpbmZvcm1h dGlvbiBmcm9tIHRoZSBkaWdfcG9ydCwgbm8/IEkgdGhpbmsgbWFraW5nIHRoYXQgcGFydCBnZW5l cmljIGlzbid0DQo+ID4gPiBhIGh1Z2UgcHJvYmxlbSBzaW5jZSB0aGF0IHdheSBhdCBsZWFzdCB5 b3UncmUgbm90IGdldHRpbmcgeW91ciBoYW5kcw0KPiA+ID4gIG9uIGEgZGlnX3BvcnQgc3RydWN0 dXJlIHRoYXQgeW91IGRvbid0IHJlYWxseSBvd24uDQo+ID4gPiANCj4gPiA+IFNvIHlvdSBjb3Vs ZCBhbG1vc3QgdXNlIGludGVsX2RkaV9nZXRfZW5jb2Rlcl9wb3J0KCksIGV4Y2VwdCB1c2luZyBh DQo+ID4gPiBEREkgc3BlY2lmaWMgZnVuY3Rpb24gaW4gZ2VuZXJpYyBjb2RlIGlzbid0IHZlcnkg bmljZS4gV2UgY291bGQgZXh0cmFjdA0KPiA+ID4gdGhlIGdlbmVyaWMgcGFydCB0byBhIHNlcGFy YXRlIGZ1bmN0aW9uLCBsaWtlIHNvOg0KPiA+ID4gDQo+ID4gPiBlbnVtIHBvcnQgaW50ZWxfZW5j b2Rlcl9nZXRfcG9ydChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikNCj4gPiA+IHsNCj4g PiA+ICAgICAgICAgc3dpdGNoIChlbmNvZGVyLT50eXBlKSB7DQo+ID4gPiAgICAgICAgIGNhc2Ug SU5URUxfT1VUUFVUX0RQX01TVDoNCj4gPiA+ICAgICAgICAgICAgICAgICByZXR1cm4gZW5jX3Rv X21zdCgmZW5jb2Rlci0+YmFzZSktPnByaW1hcnktPnBvcnQ7DQo+ID4gPiAgICAgICAgIGNhc2Ug SU5URUxfT1VUUFVUX0RQOg0KPiA+ID4gICAgICAgICBjYXNlIElOVEVMX09VVFBVVF9FRFA6DQo+ ID4gPiAgICAgICAgIGNhc2UgSU5URUxfT1VUUFVUX0hETUk6DQo+ID4gPiAgICAgICAgIGNhc2Ug SU5URUxfT1VUUFVUX1VOS05PV046DQo+ID4gPiAgICAgICAgICAgICAgICAgcmV0dXJuIGVuY190 b19kaWdfcG9ydCgmZW5jb2Rlci0+YmFzZSktPnBvcnQ7DQo+ID4gPiAgICAgICAgIGRlZmF1bHQ6 DQo+ID4gPiAgICAgICAgICAgICAgICAgTUlTU0lOR19DQVNFKGVuY29kZXItPnR5cGUpOw0KPiA+ ID4gICAgICAgICAgICAgICAgIHJldHVybiBQT1JUX0E7DQo+ID4gPiAgICAgICAgIH0NCj4gPiA+ IH0NCj4gPiA+IA0KPiA+ID4gZW51bSBwb3J0IGludGVsX2RkaV9nZXRfZW5jb2Rlcl9wb3J0KHN0 cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQ0KPiA+ID4gew0KPiA+ID4gICAgICAgICBzd2l0 Y2ggKGVuY29kZXItPnR5cGUpIHsNCj4gPiA+ICAgICAgICAgY2FzZSBJTlRFTF9PVVRQVVRfQU5B TE9HOg0KPiA+ID4gCQlyZXR1cm4gUE9SVF9FOw0KPiA+ID4gICAgICAgICBkZWZhdWx0Og0KPiA+ ID4gCQlyZXR1cm4gaW50ZWxfZW5jb2Rlcl9nZXRfcG9ydChlbmNvZGVyKTsNCj4gPiA+ICAgICAg ICAgfQ0KPiA+ID4gfQ0KPiA+IA0KPiA+IA0KPiA+IEkgbGlrZSB0aGUgaWRlYSBvZiBub3QgcGFz c2luZyB0aGUgcG9pbnRlciB0byBpbnRlbF9kaWdfcG9ydC4gQnV0LCB0aGUNCj4gPiBnZW5lcmlj IG5hbWluZyBvZiBpbnRlbF9lbmNvZGVyX2dldF9wb3J0KCkgc291bmRzIGxpa2UgaXQgc2hvdWxk IGhhbmRsZQ0KPiA+IERESSBhbmQgTm9uLURESSBwbGF0Zm9ybXMuIENhbiB3ZSBqdXN0IGhhdmUg aW50ZWxfZW5jb2Rlcl9nZXRfcG9ydCgpPw0KPiA+IElPVywgcmVuYW1lIGludGVsX2RkaV9nZXRf ZW5jb2Rlcl9wb3J0KCkgdG8gaW50ZWxfZW5jb2Rlcl9nZXRfcG9ydCgpIGFuZA0KPiA+IG1vdmUg aXQgb3V0IG9mIGludGVsX2RkaS5jPw0KPiANCj4gVGhhdCdzIHdoYXQgSSBqdXN0IGRlc2NyaWJl ZCBlc3NlbnRpYWxseS4gVGhlIG9ubHkgY2F0Y2ggaXMgdGhhdCB0aGUgRkRJDQo+IHBvcnQgRSBj YXNlIHNob3VsZCBzdGF5IGluIHRoZSBEREkgY29kZSBhbmQgbm90IGJlIG1vdmVkIHRvIGdlbmVy aWMNCj4gY29kZS4gSGVuY2UgSSBzdWdnZXN0ZWQgc3BsaXR0aW5nIGl0IHVwLg0KPiANCg0KVGhp cyBpcyB3aGF0IEkgbWVhbnQgLQ0KDQppbnRlbF9nZXRfZW5jb2Rlcl9wb3J0KCkgaXMgdGhlIGdl bmVyaWMgY2F0Y2hhbGwgZnVuY3Rpb24sIHdlIHNob3VsZA0KZXhwZWN0IGl0IHRvIGhhbmRsZSBh bmFsb2cgZW5jb2RlcnMgYXMgd2VsbCBhbmQgbGVhdmUgdGhlIERESSBzcGVjaWZpYw0KY2FzZSB0 byB0aGUgRERJIGZ1bmN0aW9uLg0KDQplbnVtIHBvcnQgaW50ZWxfZ2V0X2VuY29kZXJfcG9ydChz dHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikNCnsNCiAgICAgICAgc3dpdGNoIChlbmNvZGVy LT50eXBlKSB7DQogICAgICAgIGNhc2UgSU5URUxfT1VUUFVUX0RQX01TVDoNCiAgICAgICAgICAg ICAgICByZXR1cm4gZW5jX3RvX21zdCgmZW5jb2Rlci0+YmFzZSktPnByaW1hcnktPnBvcnQ7DQog ICAgICAgIGNhc2UgSU5URUxfT1VUUFVUX0RQOg0KICAgICAgICBjYXNlIElOVEVMX09VVFBVVF9F RFA6DQogICAgICAgIGNhc2UgSU5URUxfT1VUUFVUX0hETUk6DQogICAgICAgIGNhc2UgSU5URUxf T1VUUFVUX1VOS05PV046DQogICAgICAgICAgICAgICAgcmV0dXJuIGVuY190b19kaWdfcG9ydCgm ZW5jb2Rlci0+YmFzZSktPnBvcnQ7DQogICAgICAgIGNhc2UgSU5URUxfT1VUUFVUX0FOQUxPRzoN CiAgICAgICAgICAgICAgICByZXR1cm4gaW50ZWxfZGRpX2dldF9hbmFsb2dfZW5jb2Rlcl9wb3J0 KGVuY29kZXIpOw0KICAgICAgICBkZWZhdWx0Og0KICAgICAgICAgICAgICAgIE1JU1NJTkdfQ0FT RShlbmNvZGVyLT50eXBlKTsNCiAgICAgICAgICAgICAgICByZXR1cm4gUE9SVF9BOw0KICAgICAg ICB9DQp9DQoNCg0KZW51bSBwb3J0IGludGVsX2RkaV9nZXRfYW5hbG9nX2VuY29kZXJfcG9ydChz dHJ1Y3QgaW50ZWxfZW5jb2Rlcg0KKmVuY29kZXIpDQp7DQogICAgcmV0dXJuIFBPUlRfRTsNCn0N Cg0KDQo+ID4gDQo+ID4gDQo+ID4gPiANCj4gPiA+IG9yIHlvdSBjb3VsZCBqdXN0IHlvdXIgb3du IGZ1bmN0aW9uIGZvciBpbnRlbF9hdWRpby5jIGF0IHRoaXMgdGltZSwgbGlrZToNCj4gPiA+IA0K PiA+ID4gc3RhdGljIGVudW0gcG9ydCBlbmNvZGVyX2dldF9wb3J0KGVuY29kZXIpDQo+ID4gPiB7 DQo+ID4gPiAJaWYgKGVuY29kZXItPnR5cGUgPT0gTVNUOw0KPiA+ID4gCQlyZXR1cm4gZW5jX3Rv X21zdCgpLi4uOw0KPiA+ID4gCWVsc2UNCj4gPiA+IAkJcmV0dXJuIGVuY190b19kaWdfcG9ydCgp Li4uOw0KPiA+ID4gfQ0KPiA+ID4gCQ0KPiA+ID4gDQo+ID4gPiANCj4gPiA+ID4gIA0KPiA+ID4g PiA+ID4gIHsNCj4gPiA+ID4gPiA+ICAJc3RydWN0IGhkYWNfYnVzICpidXMgPSBjb2RlYy0+YnVz Ow0KPiA+ID4gPiA+ID4gIAlzdHJ1Y3QgaTkxNV9hdWRpb19jb21wb25lbnQgKmFjb21wID0gYnVz LT5hdWRpb19jb21wb25lbnQ7DQo+ID4gPiA+ID4gPiBAQCAtMjEyLDcgKzIxMyw3IEBAIGludCBz bmRfaGRhY19zeW5jX2F1ZGlvX3JhdGUoc3RydWN0IGhkYWNfZGV2aWNlICpjb2RlYywgaGRhX25p ZF90IG5pZCwgaW50IHJhdGUpDQo+ID4gPiA+ID4gPiAgCXBvcnQgPSBwaW4ycG9ydChjb2RlYywg bmlkKTsNCj4gPiA+ID4gPiA+ICAJaWYgKHBvcnQgPCAwKQ0KPiA+ID4gPiA+ID4gIAkJcmV0dXJu IC1FSU5WQUw7DQo+ID4gPiA+ID4gPiAtCXJldHVybiBhY29tcC0+b3BzLT5zeW5jX2F1ZGlvX3Jh dGUoYWNvbXAtPmRldiwgcG9ydCwgcmF0ZSk7DQo+ID4gPiA+ID4gPiArCXJldHVybiBhY29tcC0+ b3BzLT5zeW5jX2F1ZGlvX3JhdGUoYWNvbXAtPmRldiwgcG9ydCwgcGlwZSwgcmF0ZSk7DQo+ID4g PiA+ID4gPiAgfQ0KPiA+ID4gPiA+ID4gIEVYUE9SVF9TWU1CT0xfR1BMKHNuZF9oZGFjX3N5bmNf YXVkaW9fcmF0ZSk7DQo+ID4gPiA+ID4gPiAgDQo+ID4gPiA+ID4gPiBAQCAtMjM2LDcgKzIzNyw3 IEBAIEVYUE9SVF9TWU1CT0xfR1BMKHNuZF9oZGFjX3N5bmNfYXVkaW9fcmF0ZSk7DQo+ID4gPiA+ ID4gPiAgICogdGh1cyBpdCBtYXkgYmUgb3ZlciBAbWF4X2J5dGVzLiAgSWYgaXQncyBvdmVyIEBt YXhfYnl0ZXMsIGl0IGltcGxpZXMNCj4gPiA+ID4gPiA+ICAgKiB0aGF0IG9ubHkgYSBwYXJ0IG9m IEVMRCBieXRlcyBoYXZlIGJlZW4gZmV0Y2hlZC4NCj4gPiA+ID4gPiA+ICAgKi8NCj4gPiA+ID4g PiA+IC1pbnQgc25kX2hkYWNfYWNvbXBfZ2V0X2VsZChzdHJ1Y3QgaGRhY19kZXZpY2UgKmNvZGVj LCBoZGFfbmlkX3QgbmlkLA0KPiA+ID4gPiA+ID4gK2ludCBzbmRfaGRhY19hY29tcF9nZXRfZWxk KHN0cnVjdCBoZGFjX2RldmljZSAqY29kZWMsIGhkYV9uaWRfdCBuaWQsIGludCBwaXBlLA0KPiA+ ID4gPiA+ID4gIAkJCSAgIGJvb2wgKmF1ZGlvX2VuYWJsZWQsIGNoYXIgKmJ1ZmZlciwgaW50IG1h eF9ieXRlcykNCj4gPiA+ID4gPiA+ICB7DQo+ID4gPiA+ID4gPiAgCXN0cnVjdCBoZGFjX2J1cyAq YnVzID0gY29kZWMtPmJ1czsNCj4gPiA+ID4gPiA+IEBAIC0yNDksNyArMjUwLDcgQEAgaW50IHNu ZF9oZGFjX2Fjb21wX2dldF9lbGQoc3RydWN0IGhkYWNfZGV2aWNlICpjb2RlYywgaGRhX25pZF90 IG5pZCwNCj4gPiA+ID4gPiA+ICAJcG9ydCA9IHBpbjJwb3J0KGNvZGVjLCBuaWQpOw0KPiA+ID4g PiA+ID4gIAlpZiAocG9ydCA8IDApDQo+ID4gPiA+ID4gPiAgCQlyZXR1cm4gLUVJTlZBTDsNCj4g PiA+ID4gPiA+IC0JcmV0dXJuIGFjb21wLT5vcHMtPmdldF9lbGQoYWNvbXAtPmRldiwgcG9ydCwg YXVkaW9fZW5hYmxlZCwNCj4gPiA+ID4gPiA+ICsJcmV0dXJuIGFjb21wLT5vcHMtPmdldF9lbGQo YWNvbXAtPmRldiwgcG9ydCwgcGlwZSwgYXVkaW9fZW5hYmxlZCwNCj4gPiA+ID4gPiA+ICAJCQkJ ICAgYnVmZmVyLCBtYXhfYnl0ZXMpOw0KPiA+ID4gPiA+ID4gIH0NCj4gPiA+ID4gPiA+ICBFWFBP UlRfU1lNQk9MX0dQTChzbmRfaGRhY19hY29tcF9nZXRfZWxkKTsNCj4gPiA+ID4gPiA+IGRpZmYg LS1naXQgYS9zb3VuZC9wY2kvaGRhL3BhdGNoX2hkbWkuYyBiL3NvdW5kL3BjaS9oZGEvcGF0Y2hf aGRtaS5jDQo+ID4gPiA+ID4gPiBpbmRleCBkMGQ1YWQ4Li42Nzg5MGRmIDEwMDY0NA0KPiA+ID4g PiA+ID4gLS0tIGEvc291bmQvcGNpL2hkYS9wYXRjaF9oZG1pLmMNCj4gPiA+ID4gPiA+ICsrKyBi L3NvdW5kL3BjaS9oZGEvcGF0Y2hfaGRtaS5jDQo+ID4gPiA+ID4gPiBAQCAtMTQ4NSw3ICsxNDg1 LDcgQEAgc3RhdGljIHZvaWQgc3luY19lbGRfdmlhX2Fjb21wKHN0cnVjdCBoZGFfY29kZWMgKmNv ZGVjLA0KPiA+ID4gPiA+ID4gIA0KPiA+ID4gPiA+ID4gIAltdXRleF9sb2NrKCZwZXJfcGluLT5s b2NrKTsNCj4gPiA+ID4gPiA+ICAJZWxkLT5tb25pdG9yX3ByZXNlbnQgPSBmYWxzZTsNCj4gPiA+ ID4gPiA+IC0Jc2l6ZSA9IHNuZF9oZGFjX2Fjb21wX2dldF9lbGQoJmNvZGVjLT5jb3JlLCBwZXJf cGluLT5waW5fbmlkLA0KPiA+ID4gPiA+ID4gKwlzaXplID0gc25kX2hkYWNfYWNvbXBfZ2V0X2Vs ZCgmY29kZWMtPmNvcmUsIHBlcl9waW4tPnBpbl9uaWQsIC0xLA0KPiA+ID4gPiA+ID4gIAkJCQkg ICAgICAmZWxkLT5tb25pdG9yX3ByZXNlbnQsIGVsZC0+ZWxkX2J1ZmZlciwNCj4gPiA+ID4gPiA+ ICAJCQkJICAgICAgRUxEX01BWF9TSVpFKTsNCj4gPiA+ID4gPiA+ICAJaWYgKHNpemUgPiAwKSB7 DQo+ID4gPiA+ID4gPiBAQCAtMTczOSw3ICsxNzM5LDggQEAgc3RhdGljIGludCBnZW5lcmljX2hk bWlfcGxheWJhY2tfcGNtX3ByZXBhcmUoc3RydWN0IGhkYV9wY21fc3RyZWFtICpoaW5mbywNCj4g PiA+ID4gPiA+ICAJLyogQ2FsbCBzeW5jX2F1ZGlvX3JhdGUgdG8gc2V0IHRoZSBOL0NUUy9NIG1h bnVhbGx5IGlmIG5lY2Vzc2FyeSAqLw0KPiA+ID4gPiA+ID4gIAkvKiBUb2RvOiBhZGQgRFAxLjIg TVNUIGF1ZGlvIHN1cHBvcnQgbGF0ZXIgKi8NCj4gPiA+ID4gPiA+ICAJaWYgKGNvZGVjX2hhc19h Y29tcChjb2RlYykpDQo+ID4gPiA+ID4gPiAtCQlzbmRfaGRhY19zeW5jX2F1ZGlvX3JhdGUoJmNv ZGVjLT5jb3JlLCBwaW5fbmlkLCBydW50aW1lLT5yYXRlKTsNCj4gPiA+ID4gPiA+ICsJCXNuZF9o ZGFjX3N5bmNfYXVkaW9fcmF0ZSgmY29kZWMtPmNvcmUsIHBpbl9uaWQsIC0xLA0KPiA+ID4gPiA+ ID4gKwkJCQkJIHJ1bnRpbWUtPnJhdGUpOw0KPiA+ID4gPiA+ID4gIA0KPiA+ID4gPiA+ID4gIAlu b25fcGNtID0gY2hlY2tfbm9uX3BjbV9wZXJfY3Z0KGNvZGVjLCBjdnRfbmlkKTsNCj4gPiA+ID4g PiA+ICAJbXV0ZXhfbG9jaygmcGVyX3Bpbi0+bG9jayk7DQo+ID4gPiA+ID4gPiBAQCAtMjI4NSw3 ICsyMjg2LDcgQEAgc3RhdGljIHZvaWQgaGFzd2VsbF9zZXRfcG93ZXJfc3RhdGUoc3RydWN0IGhk YV9jb2RlYyAqY29kZWMsIGhkYV9uaWRfdCBmZywNCj4gPiA+ID4gPiA+ICAJc25kX2hkYV9jb2Rl Y19zZXRfcG93ZXJfdG9fYWxsKGNvZGVjLCBmZywgcG93ZXJfc3RhdGUpOw0KPiA+ID4gPiA+ID4g IH0NCj4gPiA+ID4gPiA+ICANCj4gPiA+ID4gPiA+IC1zdGF0aWMgdm9pZCBpbnRlbF9waW5fZWxk X25vdGlmeSh2b2lkICphdWRpb19wdHIsIGludCBwb3J0KQ0KPiA+ID4gPiA+ID4gK3N0YXRpYyB2 b2lkIGludGVsX3Bpbl9lbGRfbm90aWZ5KHZvaWQgKmF1ZGlvX3B0ciwgaW50IHBvcnQsIGludCBw aXBlKQ0KPiA+ID4gPiA+ID4gIHsNCj4gPiA+ID4gPiA+ICAJc3RydWN0IGhkYV9jb2RlYyAqY29k ZWMgPSBhdWRpb19wdHI7DQo+ID4gPiA+ID4gPiAgCWludCBwaW5fbmlkOw0KPiA+ID4gPiA+ID4g ZGlmZiAtLWdpdCBhL3NvdW5kL3NvYy9jb2RlY3MvaGRhY19oZG1pLmMgYi9zb3VuZC9zb2MvY29k ZWNzL2hkYWNfaGRtaS5jDQo+ID4gPiA+ID4gPiBpbmRleCAyYWJiNzQyLi5jZjU3YWIzIDEwMDY0 NA0KPiA+ID4gPiA+ID4gLS0tIGEvc291bmQvc29jL2NvZGVjcy9oZGFjX2hkbWkuYw0KPiA+ID4g PiA+ID4gKysrIGIvc291bmQvc29jL2NvZGVjcy9oZGFjX2hkbWkuYw0KPiA+ID4gPiA+ID4gQEAg LTEzNjYsNyArMTM2Niw3IEBAIHN0YXRpYyBpbnQgaGRhY19oZG1pX3BhcnNlX2FuZF9tYXBfbmlk KHN0cnVjdCBoZGFjX2V4dF9kZXZpY2UgKmVkZXYsDQo+ID4gPiA+ID4gPiAgCXJldHVybiBoZGFj X2hkbWlfaW5pdF9kYWlfbWFwKGVkZXYpOw0KPiA+ID4gPiA+ID4gIH0NCj4gPiA+ID4gPiA+ICAN Cj4gPiA+ID4gPiA+IC1zdGF0aWMgdm9pZCBoZGFjX2hkbWlfZWxkX25vdGlmeV9jYih2b2lkICph cHRyLCBpbnQgcG9ydCkNCj4gPiA+ID4gPiA+ICtzdGF0aWMgdm9pZCBoZGFjX2hkbWlfZWxkX25v dGlmeV9jYih2b2lkICphcHRyLCBpbnQgcG9ydCwgaW50IHBpcGUpDQo+ID4gPiA+ID4gPiAgew0K PiA+ID4gPiA+ID4gIAlzdHJ1Y3QgaGRhY19leHRfZGV2aWNlICplZGV2ID0gYXB0cjsNCj4gPiA+ ID4gPiA+ICAJc3RydWN0IGhkYWNfaGRtaV9wcml2ICpoZG1pID0gZWRldi0+cHJpdmF0ZV9kYXRh Ow0KPiA+ID4gPiA+ID4gLS0gDQo+ID4gPiA+ID4gPiAyLjUuMA0KPiA+ID4gPiA+IA0KPiA+ID4g PiANCj4gPiA+IA0KPiA+IA0KPiANCg0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vaW50ZWwtZ2Z4Cg==