From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Yang, Libin" Subject: Re: [PATCH] drm/i915/dp: DP audio API changes for MST Date: Fri, 5 Aug 2016 06:21:51 +0000 Message-ID: <96A12704CE18D347B625EE2D4A099D19119F950B@SHSMSX103.ccr.corp.intel.com> References: <1470190470-32326-1-git-send-email-dhinakaran.pandiyan@intel.com> <1470190470-32326-2-git-send-email-dhinakaran.pandiyan@intel.com> <96A12704CE18D347B625EE2D4A099D19119F934B@SHSMSX103.ccr.corp.intel.com> <1470377487.8584.15.camel@dk-H97M-D3H> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1470377487.8584.15.camel@dk-H97M-D3H> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Pandiyan, Dhinakaran" Cc: "tiwai@suse.de" , "intel-gfx@lists.freedesktop.org" , "alsa-devel@alsa-project.org" , "libin.yang@linux.intel.com" List-Id: alsa-devel@alsa-project.org DQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IFBhbmRpeWFuLCBEaGluYWth cmFuDQo+IFNlbnQ6IEZyaWRheSwgQXVndXN0IDUsIDIwMTYgMTo1NyBQTQ0KPiBUbzogWWFuZywg TGliaW4gPGxpYmluLnlhbmdAaW50ZWwuY29tPg0KPiBDYzogaW50ZWwtZ2Z4QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZzsgdGl3YWlAc3VzZS5kZTsgYWxzYS1kZXZlbEBhbHNhLQ0KPiBwcm9qZWN0Lm9y ZzsgbGliaW4ueWFuZ0BsaW51eC5pbnRlbC5jb20NCj4gU3ViamVjdDogUmU6IFtJbnRlbC1nZnhd IFtQQVRDSF0gZHJtL2k5MTUvZHA6IERQIGF1ZGlvIEFQSSBjaGFuZ2VzIGZvciBNU1QNCj4gDQo+ IE9uIEZyaSwgMjAxNi0wOC0wNSBhdCAwMjozNSArMDAwMCwgWWFuZywgTGliaW4gd3JvdGU6DQo+ ID4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4gRnJvbTogSW50ZWwtZ2Z4IFtt YWlsdG86aW50ZWwtZ2Z4LWJvdW5jZXNAbGlzdHMuZnJlZWRlc2t0b3Aub3JnXSBPbg0KPiA+ID4g QmVoYWxmIE9mIERoaW5ha2FyYW4gUGFuZGl5YW4NCj4gPiA+IFNlbnQ6IFdlZG5lc2RheSwgQXVn dXN0IDMsIDIwMTYgMTA6MTUgQU0NCj4gPiA+IFRvOiBpbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnDQo+ID4gPiBDYzogYWxzYS1kZXZlbEBhbHNhLXByb2plY3Qub3JnOyB0aXdhaUBzdXNl LmRlOw0KPiA+ID4gbGliaW4ueWFuZ0BsaW51eC5pbnRlbC5jb207IFBhbmRpeWFuLCBEaGluYWth cmFuDQo+ID4gPiA8ZGhpbmFrYXJhbi5wYW5kaXlhbkBpbnRlbC5jb20+DQo+ID4gPiBTdWJqZWN0 OiBbSW50ZWwtZ2Z4XSBbUEFUQ0hdIGRybS9pOTE1L2RwOiBEUCBhdWRpbyBBUEkgY2hhbmdlcyBm b3INCj4gPiA+IE1TVA0KPiA+ID4NCj4gPiA+IERQIE1TVCBwcm92aWRlcyB0aGUgY2FwYWJpbGl0 eSB0byBzZW5kIG11bHRpcGxlIHZpZGVvIGFuZCBhdWRpbw0KPiA+ID4gc3RyZWFtcyB2aWEgb25l IHNpbmdsZSBwb3J0LiBUaGlzIHJlcXVpcmVzIHRoZSBBUEkncyBiZXR3ZWVuIGk5MTUNCj4gPiA+ IGFuZCBhdWRpbyBkcml2ZXJzIHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4gYXVkaW8gY2FwYWJsZSBk aXNwbGF5cw0KPiA+ID4gY29ubmVjdGVkIHRvIGEgcG9ydC4gVGhpcyBwYXRjaCBhZGRzIHRoaXMg c3VwcG9ydCB2aWEgYW4gYWRkaXRpb25hbA0KPiA+ID4gcGFyYW1ldGVyICdpbnQgZGV2X2lkJy4g VGhlIGV4aXN0aW5nIHBhcmFtZXRlciAncG9ydCcgZG9lcyBub3QgY2hhbmdlIGl0J3MNCj4gbWVh bmluZy4NCj4gPiA+DQo+ID4gPiBkZXZfaWQgPQ0KPiA+ID4gCU1TVAk6IHBpcGUgdGhhdCB0aGUg c3RyZWFtIG9yaWdpbmF0ZXMgZnJvbQ0KPiA+ID4gCU5vbi1NU1QJOiAtMQ0KPiA+ID4NCj4gPiA+ IEFmZmVjdGVkIEFQSXM6DQo+ID4gPiBzdHJ1Y3QgaTkxNV9hdWRpb19jb21wb25lbnRfb3BzDQo+ ID4gPiAtICAgICAgIGludCAoKnN5bmNfYXVkaW9fcmF0ZSkoc3RydWN0IGRldmljZSAqLCBpbnQg cG9ydCwgaW50IHJhdGUpOw0KPiA+ID4gKwlpbnQgKCpzeW5jX2F1ZGlvX3JhdGUpKHN0cnVjdCBk ZXZpY2UgKiwgaW50IHBvcnQsIGludCBkZXZfaWQsDQo+ID4gPiArCSAgICAgaW50IHJhdGUpOw0K PiA+ID4NCj4gPiA+IC0gICAgICAgaW50ICgqZ2V0X2VsZCkoc3RydWN0IGRldmljZSAqLCBpbnQg cG9ydCwgYm9vbCAqZW5hYmxlZCwNCj4gPiA+IC0gICAgICAgICAgICAgICAgICAgICAgIHVuc2ln bmVkIGNoYXIgKmJ1ZiwgaW50IG1heF9ieXRlcyk7DQo+ID4gPiArICAgICAgIGludCAoKmdldF9l bGQpKHN0cnVjdCBkZXZpY2UgKiwgaW50IHBvcnQsIGludCBkZXZfaWQsDQo+ID4gPiArCQkgICAg ICAgYm9vbCAqZW5hYmxlZCwgdW5zaWduZWQgY2hhciAqYnVmLCBpbnQgbWF4X2J5dGVzKTsNCj4g PiA+DQo+ID4gPiBzdHJ1Y3QgaTkxNV9hdWRpb19jb21wb25lbnRfYXVkaW9fb3BzDQo+ID4gPiAt ICAgICAgIHZvaWQgKCpwaW5fZWxkX25vdGlmeSkodm9pZCAqYXVkaW9fcHRyLCBpbnQgcG9ydCk7 DQo+ID4gPiArICAgICAgIHZvaWQgKCpwaW5fZWxkX25vdGlmeSkodm9pZCAqYXVkaW9fcHRyLCBp bnQgcG9ydCwgaW50DQo+ID4gPiArIGRldl9pZCk7DQo+ID4gPg0KPiA+ID4gVGhpcyBwYXRjaCBt YWtlcyBkdW1teSBjaGFuZ2VzIGluIHRoZSBhdWRpbyBkcml2ZXJzIGZvciBidWlsZCB0byBzdWNj ZWVkLg0KPiA+ID4NCj4gPiA+IFNpZ25lZC1vZmYtYnk6IERoaW5ha2FyYW4gUGFuZGl5YW4gPGRo aW5ha2FyYW4ucGFuZGl5YW5AaW50ZWwuY29tPg0KPiA+ID4gLS0tDQo+ID4gPiAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICB8ICAyICstDQo+ID4gPiAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfYXVkaW8uYyB8IDgyDQo+ID4gPiArKysrKysrKysrKysrKysrKysrKysrKysr KysrKy0tDQo+ID4gPiAtLS0tLS0tDQo+ID4gPiAgaW5jbHVkZS9kcm0vaTkxNV9jb21wb25lbnQu aCAgICAgICB8ICA2ICstLQ0KPiA+ID4gIGluY2x1ZGUvc291bmQvaGRhX2k5MTUuaCAgICAgICAg ICAgfCAxMSArKy0tLQ0KPiA+ID4gIHNvdW5kL2hkYS9oZGFjX2k5MTUuYyAgICAgICAgICAgICAg fCAgOSArKystLQ0KPiA+ID4gIHNvdW5kL3BjaS9oZGEvcGF0Y2hfaGRtaS5jICAgICAgICAgfCAg NyArKy0tDQo+ID4gPiAgNiBmaWxlcyBjaGFuZ2VkLCA4MiBpbnNlcnRpb25zKCspLCAzNSBkZWxl dGlvbnMoLSkNCj4gPiA+DQo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuaA0KPiA+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGluZGV4 IDY1YWRhNWQuLjhlNGM4YzggMTAwNjQ0DQo+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5oDQo+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5o DQo+ID4gPiBAQCAtMjA1NCw3ICsyMDU0LDcgQEAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgew0K PiA+ID4gIAkvKiBwZXJmb3JtIFBIWSBzdGF0ZSBzYW5pdHkgY2hlY2tzPyAqLw0KPiA+ID4gIAli b29sIGNodl9waHlfYXNzZXJ0WzJdOw0KPiA+ID4NCj4gPiA+IC0Jc3RydWN0IGludGVsX2VuY29k ZXIgKmRpZ19wb3J0X21hcFtJOTE1X01BWF9QT1JUU107DQo+ID4gPiArCXN0cnVjdCBpbnRlbF9l bmNvZGVyICphdl9lbmNfbWFwW0k5MTVfTUFYX1BJUEVTXTsNCj4gPg0KPiA+IFdlIG1heSBzdGls bCBuZWVkIHNhdmUgdGhlIHBvcnQgbnVtYmVyIGluZm8uDQo+ID4gSW4gbm9uLU1TVCBtb2RlLCBk ZXZpY2UgZW50cnkgbWVhbnMgbm90aGluZy4gVGhpcyBtZWFucw0KPiA+IGF2X2VuY19tYXBbcGlw ZV0gbWF5IG5vdCBnZXQgdGhlIHJpZ2h0IGludGVsX2VuY29kZXINCj4gPg0KPiA+IFJlZ2FyZHMs DQo+ID4gTGliaW4NCj4gPg0KPiBXZSBmaW5kIHRoZSBlbmNvZGVyIHVzaW5nIHBvcnQgaW4gZ2V0 X3NhdmVkX2VuY29kZXIoKQ0KDQpJdCBzZWVtcyBpdCBzdGlsbCBjYW4ndCBnZXQgdGhlIGVuY29k ZXIgZm9yIFNTVC9IRE1JIGFzDQpwaXBlIG1heSBhbHdheXMgYmUgLTEgb3IgMCBmb3IgU1NUL0hE TUk/DQoNClJlZ2FyZHMsDQpMaWJpbg0KDQo+ID4gPg0KPiA+ID4gIAkvKg0KPiA+ID4gIAkgKiBO T1RFOiBUaGlzIGlzIHRoZSBkcmkxL3VtcyBkdW5nZW9uLCBkb24ndCBhZGQgc3R1ZmYgaGVyZS4g WW91cg0KPiA+ID4gcGF0Y2ggZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2F1ZGlvLmMNCj4gPiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXVkaW8uYw0KPiA+ ID4gaW5kZXggOGM0OTNkZS4uY2JlNDRjOCAxMDA2NDQNCj4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2F1ZGlvLmMNCj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2F1ZGlvLmMNCj4gPiA+IEBAIC01MDAsNiArNTAwLDkgQEAgdm9pZCBpbnRlbF9hdWRp b19jb2RlY19lbmFibGUoc3RydWN0DQo+ID4gPiBpbnRlbF9lbmNvZGVyDQo+ID4gPiAqaW50ZWxf ZW5jb2RlcikNCj4gPiA+ICAJc3RydWN0IGk5MTVfYXVkaW9fY29tcG9uZW50ICphY29tcCA9IGRl dl9wcml2LT5hdWRpb19jb21wb25lbnQ7DQo+ID4gPiAgCXN0cnVjdCBpbnRlbF9kaWdpdGFsX3Bv cnQgKmludGVsX2RpZ19wb3J0ID0gZW5jX3RvX2RpZ19wb3J0KGVuY29kZXIpOw0KPiA+ID4gIAll bnVtIHBvcnQgcG9ydCA9IGludGVsX2RpZ19wb3J0LT5wb3J0Ow0KPiA+ID4gKwllbnVtIHBpcGUg cGlwZSA9IGNydGMtPnBpcGU7DQo+ID4gPiArCWludCBkZXZfaWQgPSAtMTsNCj4gPiA+ICsNCj4g PiA+DQo+ID4gPiAgCWNvbm5lY3RvciA9IGRybV9zZWxlY3RfZWxkKGVuY29kZXIpOw0KPiA+ID4g IAlpZiAoIWNvbm5lY3RvcikNCj4gPiA+IEBAIC01MjIsMTQgKzUyNSwxOSBAQCB2b2lkIGludGVs X2F1ZGlvX2NvZGVjX2VuYWJsZShzdHJ1Y3QNCj4gPiA+IGludGVsX2VuY29kZXINCj4gPiA+ICpp bnRlbF9lbmNvZGVyKQ0KPiA+ID4gIAkJZGV2X3ByaXYtPmRpc3BsYXkuYXVkaW9fY29kZWNfZW5h YmxlKGNvbm5lY3RvciwNCj4gPiA+IGludGVsX2VuY29kZXIsDQo+ID4gPiAgCQkJCQkJICAgICBh ZGp1c3RlZF9tb2RlKTsNCj4gPiA+DQo+ID4gPiArCWlmIChpbnRlbF9lbmNvZGVyLT50eXBlID09 IElOVEVMX09VVFBVVF9EUF9NU1QpDQo+ID4gPiArCQlkZXZfaWQgPSBwaXBlOw0KPiA+ID4gKw0K PiA+ID4gIAltdXRleF9sb2NrKCZkZXZfcHJpdi0+YXZfbXV0ZXgpOw0KPiA+ID4gIAlpbnRlbF9l bmNvZGVyLT5hdWRpb19jb25uZWN0b3IgPSBjb25uZWN0b3I7DQo+ID4gPiArDQo+ID4gPiAgCS8q IHJlZmVycmVkIGluIGF1ZGlvIGNhbGxiYWNrcyAqLw0KPiA+ID4gLQlkZXZfcHJpdi0+ZGlnX3Bv cnRfbWFwW3BvcnRdID0gaW50ZWxfZW5jb2RlcjsNCj4gPiA+ICsJZGV2X3ByaXYtPmF2X2VuY19t YXBbcGlwZV0gPSBpbnRlbF9lbmNvZGVyOw0KPiA+ID4gIAltdXRleF91bmxvY2soJmRldl9wcml2 LT5hdl9tdXRleCk7DQo+ID4gPg0KPiA+ID4gIAlpZiAoYWNvbXAgJiYgYWNvbXAtPmF1ZGlvX29w cyAmJiBhY29tcC0+YXVkaW9fb3BzLQ0KPiA+ID4gPnBpbl9lbGRfbm90aWZ5KQ0KPiA+ID4gLQkJ YWNvbXAtPmF1ZGlvX29wcy0+cGluX2VsZF9ub3RpZnkoYWNvbXAtPmF1ZGlvX29wcy0NCj4gPiA+ ID5hdWRpb19wdHIsIChpbnQpIHBvcnQpOw0KPiA+ID4gKwkJYWNvbXAtPmF1ZGlvX29wcy0+cGlu X2VsZF9ub3RpZnkoYWNvbXAtPmF1ZGlvX29wcy0NCj4gPiA+ID5hdWRpb19wdHIsDQo+ID4gPiAr CQkJCQkJIChpbnQpIHBvcnQsIGRldl9pZCk7DQo+ID4gPiAgfQ0KPiA+ID4NCj4gPiA+ICAvKioN Cj4gPiA+IEBAIC01NDIsMjIgKzU1MCwyOSBAQCB2b2lkIGludGVsX2F1ZGlvX2NvZGVjX2VuYWJs ZShzdHJ1Y3QNCj4gPiA+IGludGVsX2VuY29kZXINCj4gPiA+ICppbnRlbF9lbmNvZGVyKSAgdm9p ZCBpbnRlbF9hdWRpb19jb2RlY19kaXNhYmxlKHN0cnVjdCBpbnRlbF9lbmNvZGVyDQo+ID4gPiAq aW50ZWxfZW5jb2RlcikgIHsNCj4gPiA+ICAJc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyID0g JmludGVsX2VuY29kZXItPmJhc2U7DQo+ID4gPiArCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0g dG9faW50ZWxfY3J0YyhlbmNvZGVyLT5jcnRjKTsNCj4gPiA+ICAJc3RydWN0IGRybV9kZXZpY2Ug KmRldiA9IGVuY29kZXItPmRldjsNCj4gPiA+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gdG9faTkxNShkZXYpOw0KPiA+ID4gIAlzdHJ1Y3QgaTkxNV9hdWRpb19jb21wb25l bnQgKmFjb21wID0gZGV2X3ByaXYtPmF1ZGlvX2NvbXBvbmVudDsNCj4gPiA+ICAJc3RydWN0IGlu dGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQgPSBlbmNfdG9fZGlnX3BvcnQoZW5jb2Rl cik7DQo+ID4gPiAgCWVudW0gcG9ydCBwb3J0ID0gaW50ZWxfZGlnX3BvcnQtPnBvcnQ7DQo+ID4g PiArCWVudW0gcGlwZSBwaXBlID0gY3J0Yy0+cGlwZTsNCj4gPiA+ICsJaW50IGRldl9pZCA9IC0x Ow0KPiA+ID4gKw0KPiA+ID4gKwlpZiAoaW50ZWxfZW5jb2Rlci0+dHlwZSA9PSBJTlRFTF9PVVRQ VVRfRFBfTVNUKQ0KPiA+ID4gKwkJZGV2X2lkID0gcGlwZTsNCj4gPiA+DQo+ID4gPiAgCWlmIChk ZXZfcHJpdi0+ZGlzcGxheS5hdWRpb19jb2RlY19kaXNhYmxlKQ0KPiA+ID4gIAkJZGV2X3ByaXYt PmRpc3BsYXkuYXVkaW9fY29kZWNfZGlzYWJsZShpbnRlbF9lbmNvZGVyKTsNCj4gPiA+DQo+ID4g PiAgCW11dGV4X2xvY2soJmRldl9wcml2LT5hdl9tdXRleCk7DQo+ID4gPiAgCWludGVsX2VuY29k ZXItPmF1ZGlvX2Nvbm5lY3RvciA9IE5VTEw7DQo+ID4gPiAtCWRldl9wcml2LT5kaWdfcG9ydF9t YXBbcG9ydF0gPSBOVUxMOw0KPiA+ID4gKwlkZXZfcHJpdi0+YXZfZW5jX21hcFtwaXBlXSA9IE5V TEw7DQo+ID4gPiAgCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmF2X211dGV4KTsNCj4gPiA+DQo+ ID4gPiAgCWlmIChhY29tcCAmJiBhY29tcC0+YXVkaW9fb3BzICYmIGFjb21wLT5hdWRpb19vcHMt DQo+ID4gPiA+cGluX2VsZF9ub3RpZnkpDQo+ID4gPiAtCQlhY29tcC0+YXVkaW9fb3BzLT5waW5f ZWxkX25vdGlmeShhY29tcC0+YXVkaW9fb3BzLQ0KPiA+ID4gPmF1ZGlvX3B0ciwgKGludCkgcG9y dCk7DQo+ID4gPiArCQlhY29tcC0+YXVkaW9fb3BzLT5waW5fZWxkX25vdGlmeShhY29tcC0+YXVk aW9fb3BzLQ0KPiA+ID4gPmF1ZGlvX3B0ciwNCj4gPiA+ICsJCQkJCQkgKGludCkgcG9ydCwgZGV2 X2lkKTsNCj4gPiA+ICB9DQo+ID4gPg0KPiA+ID4gIC8qKg0KPiA+ID4gQEAgLTYyOCw4ICs2NDMs MzIgQEAgc3RhdGljIGludA0KPiA+ID4gaTkxNV9hdWRpb19jb21wb25lbnRfZ2V0X2NkY2xrX2Zy ZXEoc3RydWN0IGRldmljZSAqZGV2KQ0KPiA+ID4gIAlyZXR1cm4gZGV2X3ByaXYtPmNkY2xrX2Zy ZXE7DQo+ID4gPiAgfQ0KPiA+ID4NCj4gPiA+IC1zdGF0aWMgaW50IGk5MTVfYXVkaW9fY29tcG9u ZW50X3N5bmNfYXVkaW9fcmF0ZShzdHJ1Y3QgZGV2aWNlICpkZXYsDQo+ID4gPiAtCQkJCQkJaW50 IHBvcnQsIGludCByYXRlKQ0KPiA+ID4gK3N0YXRpYyBzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZ2V0 X3NhdmVkX2VuY29kZXIoc3RydWN0IGludGVsX2VuY29kZXINCj4gPiA+ICphdl9lbmNfbWFwW10s DQo+ID4gPiArCQkJCQkgICAgICAgaW50IHBvcnQsIGludCBkZXZfaWQpDQo+ID4gPiArew0KPiA+ ID4gKw0KPiA+ID4gKwllbnVtIHBpcGUgcGlwZTsNCj4gPiA+ICsJc3RydWN0IGRybV9lbmNvZGVy ICplbmNvZGVyOw0KPiA+ID4gKw0KPiA+ID4gKwlpZiAoZGV2X2lkID49IDAgJiYgZGV2X2lkIDwg STkxNV9NQVhfUElQRVMpDQo+ID4gPiArCQlyZXR1cm4gYXZfZW5jX21hcFtkZXZfaWRdOw0KPiA+ ID4gKw0KPiA+ID4gKwlmb3IgKHBpcGUgPSBQSVBFX0E7IHBpcGUgPCBJOTE1X01BWF9QSVBFUzsg cGlwZSsrKSB7DQo+ID4gPiArDQo+ID4gPiArCQlpZiAoIWF2X2VuY19tYXBbcGlwZV0pDQo+ID4g PiArCQkJY29udGludWU7DQo+ID4gPiArDQo+ID4gPiArCQllbmNvZGVyID0gJmF2X2VuY19tYXBb cGlwZV0tPmJhc2U7DQo+ID4gPiArCQlpZiAocG9ydCA9PSBlbmNfdG9fZGlnX3BvcnQoZW5jb2Rl ciktPnBvcnQpDQo+ID4gPiArCQkJcmV0dXJuIGF2X2VuY19tYXBbcGlwZV07DQo+ID4gPiArCX0N Cj4gPiA+ICsNCj4gPiA+ICsJcmV0dXJuIE5VTEw7DQo+ID4gPiArDQo+ID4gPiArfQ0KPiA+ID4g Kw0KPiA+ID4gK3N0YXRpYyBpbnQgaTkxNV9hdWRpb19jb21wb25lbnRfc3luY19hdWRpb19yYXRl KHN0cnVjdCBkZXZpY2UgKmRldiwNCj4gPiA+ICtpbnQNCj4gPiA+IHBvcnQsDQo+ID4gPiArCQkJ CQkJaW50IGRldl9pZCwgaW50IHJhdGUpDQo+ID4gPiAgew0KPiA+ID4gIAlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXZfdG9faTkxNShkZXYpOw0KPiA+ID4gIAlzdHJ1Y3Qg aW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlcjsgQEAgLTY0OSwxNSArNjg4LDE2IEBAIHN0YXRp Yw0KPiA+ID4gaW50IGk5MTVfYXVkaW9fY29tcG9uZW50X3N5bmNfYXVkaW9fcmF0ZShzdHJ1Y3Qg ZGV2aWNlICpkZXYsDQo+ID4gPiAgCQlyZXR1cm4gMDsNCj4gPiA+DQo+ID4gPiAgCW11dGV4X2xv Y2soJmRldl9wcml2LT5hdl9tdXRleCk7DQo+ID4gPiArDQo+ID4gPiAgCS8qIDEuIGdldCB0aGUg cGlwZSAqLw0KPiA+ID4gLQlpbnRlbF9lbmNvZGVyID0gZGV2X3ByaXYtPmRpZ19wb3J0X21hcFtw b3J0XTsNCj4gPiA+IC0JLyogaW50ZWxfZW5jb2RlciBtaWdodCBiZSBOVUxMIGZvciBEUCBNU1Qg Ki8NCj4gPiA+ICsJaW50ZWxfZW5jb2RlciA9IGdldF9zYXZlZF9lbmNvZGVyKGRldl9wcml2LT5h dl9lbmNfbWFwLCBwb3J0LA0KPiA+ID4gZGV2X2lkKTsNCj4gPiA+ICAJaWYgKCFpbnRlbF9lbmNv ZGVyIHx8ICFpbnRlbF9lbmNvZGVyLT5iYXNlLmNydGMgfHwNCj4gPiA+ICAJICAgIGludGVsX2Vu Y29kZXItPnR5cGUgIT0gSU5URUxfT1VUUFVUX0hETUkpIHsNCj4gPiA+ICAJCURSTV9ERUJVR19L TVMoIm5vIHZhbGlkIHBvcnQgJWNcbiIsIHBvcnRfbmFtZShwb3J0KSk7DQo+ID4gPiAgCQllcnIg PSAtRU5PREVWOw0KPiA+ID4gIAkJZ290byB1bmxvY2s7DQo+ID4gPiAgCX0NCj4gPiA+ICsNCj4g PiA+ICAJY3J0YyA9IHRvX2ludGVsX2NydGMoaW50ZWxfZW5jb2Rlci0+YmFzZS5jcnRjKTsNCj4g PiA+ICAJcGlwZSA9IGNydGMtPnBpcGU7DQo+ID4gPiAgCWlmIChwaXBlID09IElOVkFMSURfUElQ RSkgew0KPiA+ID4gQEAgLTcwMiw3ICs3NDIsNyBAQCBzdGF0aWMgaW50DQo+ID4gPiBpOTE1X2F1 ZGlvX2NvbXBvbmVudF9zeW5jX2F1ZGlvX3JhdGUoc3RydWN0IGRldmljZSAqZGV2LCAgfQ0KPiA+ ID4NCj4gPiA+ICBzdGF0aWMgaW50IGk5MTVfYXVkaW9fY29tcG9uZW50X2dldF9lbGQoc3RydWN0 IGRldmljZSAqZGV2LCBpbnQgcG9ydCwNCj4gPiA+IC0JCQkJCWJvb2wgKmVuYWJsZWQsDQo+ID4g PiArCQkJCQlpbnQgZGV2X2lkLCBib29sICplbmFibGVkLA0KPiA+ID4gIAkJCQkJdW5zaWduZWQg Y2hhciAqYnVmLCBpbnQgbWF4X2J5dGVzKSAgew0KPiA+ID4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSBkZXZfdG9faTkxNShkZXYpOyBAQCAtNzEwLDE3DQo+ID4gPiArNzUw LDIxIEBAIHN0YXRpYyBpbnQgaTkxNV9hdWRpb19jb21wb25lbnRfZ2V0X2VsZChzdHJ1Y3QgZGV2 aWNlDQo+ID4gPiArKmRldiwgaW50DQo+ID4gPiBwb3J0LA0KPiA+ID4gIAljb25zdCB1OCAqZWxk Ow0KPiA+ID4gIAlpbnQgcmV0ID0gLUVJTlZBTDsNCj4gPiA+DQo+ID4gPiArDQo+ID4gPiAgCW11 dGV4X2xvY2soJmRldl9wcml2LT5hdl9tdXRleCk7DQo+ID4gPiAtCWludGVsX2VuY29kZXIgPSBk ZXZfcHJpdi0+ZGlnX3BvcnRfbWFwW3BvcnRdOw0KPiA+ID4gLQkvKiBpbnRlbF9lbmNvZGVyIG1p Z2h0IGJlIE5VTEwgZm9yIERQIE1TVCAqLw0KPiA+ID4gLQlpZiAoaW50ZWxfZW5jb2Rlcikgew0K PiA+ID4gLQkJcmV0ID0gMDsNCj4gPiA+IC0JCSplbmFibGVkID0gaW50ZWxfZW5jb2Rlci0+YXVk aW9fY29ubmVjdG9yICE9IE5VTEw7DQo+ID4gPiAtCQlpZiAoKmVuYWJsZWQpIHsNCj4gPiA+IC0J CQllbGQgPSBpbnRlbF9lbmNvZGVyLT5hdWRpb19jb25uZWN0b3ItPmVsZDsNCj4gPiA+IC0JCQly ZXQgPSBkcm1fZWxkX3NpemUoZWxkKTsNCj4gPiA+IC0JCQltZW1jcHkoYnVmLCBlbGQsIG1pbiht YXhfYnl0ZXMsIHJldCkpOw0KPiA+ID4gLQkJfQ0KPiA+ID4gKw0KPiA+ID4gKwlpbnRlbF9lbmNv ZGVyID0gZ2V0X3NhdmVkX2VuY29kZXIoZGV2X3ByaXYtPmF2X2VuY19tYXAsIHBvcnQsDQo+ID4g PiBkZXZfaWQpOw0KPiA+ID4gKwlpZiAoIWludGVsX2VuY29kZXIpIHsNCj4gPiA+ICsJCW11dGV4 X3VubG9jaygmZGV2X3ByaXYtPmF2X211dGV4KTsNCj4gPiA+ICsJCXJldHVybiByZXQ7DQo+ID4g PiArCX0NCj4gPiA+ICsNCj4gPiA+ICsJcmV0ID0gMDsNCj4gPiA+ICsJKmVuYWJsZWQgPSBpbnRl bF9lbmNvZGVyLT5hdWRpb19jb25uZWN0b3IgIT0gTlVMTDsNCj4gPiA+ICsJaWYgKCplbmFibGVk KSB7DQo+ID4gPiArCQllbGQgPSBpbnRlbF9lbmNvZGVyLT5hdWRpb19jb25uZWN0b3ItPmVsZDsN Cj4gPiA+ICsJCXJldCA9IGRybV9lbGRfc2l6ZShlbGQpOw0KPiA+ID4gKwkJbWVtY3B5KGJ1Ziwg ZWxkLCBtaW4obWF4X2J5dGVzLCByZXQpKTsNCj4gPiA+ICAJfQ0KPiA+ID4NCj4gPiA+ICAJbXV0 ZXhfdW5sb2NrKCZkZXZfcHJpdi0+YXZfbXV0ZXgpOw0KPiA+ID4gZGlmZiAtLWdpdCBhL2luY2x1 ZGUvZHJtL2k5MTVfY29tcG9uZW50LmgNCj4gPiA+IGIvaW5jbHVkZS9kcm0vaTkxNV9jb21wb25l bnQuaCBpbmRleCBiNDZmYTBlLi4xNDE5Yzk4IDEwMDY0NA0KPiA+ID4gLS0tIGEvaW5jbHVkZS9k cm0vaTkxNV9jb21wb25lbnQuaA0KPiA+ID4gKysrIGIvaW5jbHVkZS9kcm0vaTkxNV9jb21wb25l bnQuaA0KPiA+ID4gQEAgLTY0LDcgKzY0LDcgQEAgc3RydWN0IGk5MTVfYXVkaW9fY29tcG9uZW50 X29wcyB7DQo+ID4gPiAgCSAqIENhbGxlZCBmcm9tIGF1ZGlvIGRyaXZlci4gQWZ0ZXIgYXVkaW8g ZHJpdmVyIHNldHMgdGhlDQo+ID4gPiAgCSAqIHNhbXBsZSByYXRlLCBpdCB3aWxsIGNhbGwgdGhp cyBmdW5jdGlvbiB0byBzZXQgbi9jdHMNCj4gPiA+ICAJICovDQo+ID4gPiAtCWludCAoKnN5bmNf YXVkaW9fcmF0ZSkoc3RydWN0IGRldmljZSAqLCBpbnQgcG9ydCwgaW50IHJhdGUpOw0KPiA+ID4g KwlpbnQgKCpzeW5jX2F1ZGlvX3JhdGUpKHN0cnVjdCBkZXZpY2UgKiwgaW50IHBvcnQsIGludCBk ZXZfaWQsIGludA0KPiA+ID4gK3JhdGUpOw0KPiA+ID4gIAkvKioNCj4gPiA+ICAJICogQGdldF9l bGQ6IGZpbGwgdGhlIGF1ZGlvIHN0YXRlIGFuZCBFTEQgYnl0ZXMgZm9yIHRoZSBnaXZlbiBwb3J0 DQo+ID4gPiAgCSAqDQo+ID4gPiBAQCAtNzcsNyArNzcsNyBAQCBzdHJ1Y3QgaTkxNV9hdWRpb19j b21wb25lbnRfb3BzIHsNCj4gPiA+ICAJICogTm90ZSB0aGF0IHRoZSByZXR1cm5lZCBzaXplIG1h eSBiZSBvdmVyIEBtYXhfYnl0ZXMuICBUaGVuIGl0DQo+ID4gPiAgCSAqIGltcGxpZXMgdGhhdCBv bmx5IGEgcGFydCBvZiBFTEQgaGFzIGJlZW4gY29waWVkIHRvIHRoZSBidWZmZXIuDQo+ID4gPiAg CSAqLw0KPiA+ID4gLQlpbnQgKCpnZXRfZWxkKShzdHJ1Y3QgZGV2aWNlICosIGludCBwb3J0LCBi b29sICplbmFibGVkLA0KPiA+ID4gKwlpbnQgKCpnZXRfZWxkKShzdHJ1Y3QgZGV2aWNlICosIGlu dCBwb3J0LCBpbnQgZGV2X2lkLCBib29sDQo+ID4gPiArKmVuYWJsZWQsDQo+ID4gPiAgCQkgICAg ICAgdW5zaWduZWQgY2hhciAqYnVmLCBpbnQgbWF4X2J5dGVzKTsgIH07DQo+ID4gPg0KPiA+ID4g QEAgLTk3LDcgKzk3LDcgQEAgc3RydWN0IGk5MTVfYXVkaW9fY29tcG9uZW50X2F1ZGlvX29wcyB7 DQo+ID4gPiAgCSAqIHN0YXR1cyBhY2NvcmRpbmdseSAoZXZlbiB3aGVuIHRoZSBIREEgY29udHJv bGxlciBpcyBpbiBwb3dlciBzYXZlDQo+ID4gPiAgCSAqIG1vZGUpLg0KPiA+ID4gIAkgKi8NCj4g PiA+IC0Jdm9pZCAoKnBpbl9lbGRfbm90aWZ5KSh2b2lkICphdWRpb19wdHIsIGludCBwb3J0KTsN Cj4gPiA+ICsJdm9pZCAoKnBpbl9lbGRfbm90aWZ5KSh2b2lkICphdWRpb19wdHIsIGludCBwb3J0 LCBpbnQgZGV2X2lkKTsNCj4gPiA+ICB9Ow0KPiA+ID4NCj4gPiA+ICAvKioNCj4gPiA+IGRpZmYg LS1naXQgYS9pbmNsdWRlL3NvdW5kL2hkYV9pOTE1LmggYi9pbmNsdWRlL3NvdW5kL2hkYV9pOTE1 LmgNCj4gPiA+IGluZGV4IDc5NmNhYmYuLjVhYjk3MmUgMTAwNjQ0DQo+ID4gPiAtLS0gYS9pbmNs dWRlL3NvdW5kL2hkYV9pOTE1LmgNCj4gPiA+ICsrKyBiL2luY2x1ZGUvc291bmQvaGRhX2k5MTUu aA0KPiA+ID4gQEAgLTEwLDggKzEwLDkgQEANCj4gPiA+ICBpbnQgc25kX2hkYWNfc2V0X2NvZGVj X3dha2V1cChzdHJ1Y3QgaGRhY19idXMgKmJ1cywgYm9vbCBlbmFibGUpOw0KPiA+ID4gaW50IHNu ZF9oZGFjX2Rpc3BsYXlfcG93ZXIoc3RydWN0IGhkYWNfYnVzICpidXMsIGJvb2wgZW5hYmxlKTsg IHZvaWQNCj4gPiA+IHNuZF9oZGFjX2k5MTVfc2V0X2JjbGsoc3RydWN0IGhkYWNfYnVzICpidXMp OyAtaW50DQo+ID4gPiBzbmRfaGRhY19zeW5jX2F1ZGlvX3JhdGUoc3RydWN0IGhkYWNfZGV2aWNl ICpjb2RlYywgaGRhX25pZF90IG5pZCwNCj4gPiA+IGludCByYXRlKTsgLWludCBzbmRfaGRhY19h Y29tcF9nZXRfZWxkKHN0cnVjdCBoZGFjX2RldmljZSAqY29kZWMsDQo+ID4gPiBoZGFfbmlkX3Qg bmlkLA0KPiA+ID4gK2ludCBzbmRfaGRhY19zeW5jX2F1ZGlvX3JhdGUoc3RydWN0IGhkYWNfZGV2 aWNlICpjb2RlYywgaGRhX25pZF90IG5pZCwNCj4gPiA+ICsJCQkgICAgIGludCBkZXZfaWQsIGlu dCByYXRlKTsNCj4gPiA+ICtpbnQgc25kX2hkYWNfYWNvbXBfZ2V0X2VsZChzdHJ1Y3QgaGRhY19k ZXZpY2UgKmNvZGVjLCBoZGFfbmlkX3QNCj4gPiA+ICtuaWQsIGludCBkZXZfaWQsDQo+ID4gPiAg CQkJICAgYm9vbCAqYXVkaW9fZW5hYmxlZCwgY2hhciAqYnVmZmVyLCBpbnQgbWF4X2J5dGVzKTsN Cj4gaW50DQo+ID4gPiBzbmRfaGRhY19pOTE1X2luaXQoc3RydWN0IGhkYWNfYnVzICpidXMpOyAg aW50DQo+ID4gPiBzbmRfaGRhY19pOTE1X2V4aXQoc3RydWN0IGhkYWNfYnVzICpidXMpOyBAQCAt MjksMTMgKzMwLDEzIEBAIHN0YXRpYw0KPiA+ID4gaW5saW5lIHZvaWQgc25kX2hkYWNfaTkxNV9z ZXRfYmNsayhzdHJ1Y3QgaGRhY19idXMgKmJ1cykgIHsgIH0NCj4gPiA+IHN0YXRpYyBpbmxpbmUg aW50IHNuZF9oZGFjX3N5bmNfYXVkaW9fcmF0ZShzdHJ1Y3QgaGRhY19kZXZpY2UgKmNvZGVjLA0K PiA+ID4gLQkJCQkJICAgaGRhX25pZF90IG5pZCwgaW50IHJhdGUpDQo+ID4gPiArCQkJCQkgICBo ZGFfbmlkX3QgbmlkLCBpbnQgZGV2X2lkLCBpbnQgcmF0ZSkNCj4gPiA+ICB7DQo+ID4gPiAgCXJl dHVybiAwOw0KPiA+ID4gIH0NCj4gPiA+ICBzdGF0aWMgaW5saW5lIGludCBzbmRfaGRhY19hY29t cF9nZXRfZWxkKHN0cnVjdCBoZGFjX2RldmljZSAqY29kZWMsDQo+ID4gPiBoZGFfbmlkX3Qgbmlk LA0KPiA+ID4gLQkJCQkJIGJvb2wgKmF1ZGlvX2VuYWJsZWQsIGNoYXIgKmJ1ZmZlciwNCj4gPiA+ IC0JCQkJCSBpbnQgbWF4X2J5dGVzKQ0KPiA+ID4gKwkJCQkJIGludCBkZXZfaWQsIGJvb2wgKmF1 ZGlvX2VuYWJsZWQsDQo+ID4gPiArCQkJCQkgY2hhciAqYnVmZmVyLCBpbnQgbWF4X2J5dGVzKQ0K PiA+ID4gIHsNCj4gPiA+ICAJcmV0dXJuIC1FTk9ERVY7DQo+ID4gPiAgfQ0KPiA+ID4gZGlmZiAt LWdpdCBhL3NvdW5kL2hkYS9oZGFjX2k5MTUuYyBiL3NvdW5kL2hkYS9oZGFjX2k5MTUuYyBpbmRl eA0KPiA+ID4gYzlhZjAyMi4uNmVhNjNhYyAxMDA2NDQNCj4gPiA+IC0tLSBhL3NvdW5kL2hkYS9o ZGFjX2k5MTUuYw0KPiA+ID4gKysrIGIvc291bmQvaGRhL2hkYWNfaTkxNS5jDQo+ID4gPiBAQCAt MjAxLDcgKzIwMSw4IEBAIHN0YXRpYyBpbnQgcGluMnBvcnQoc3RydWN0IGhkYWNfZGV2aWNlICpj b2RlYywNCj4gPiA+IGhkYV9uaWRfdCBwaW5fbmlkKQ0KPiA+ID4gICAqIFRoaXMgZnVuY3Rpb24g c2V0cyBOL0NUUyB2YWx1ZSBiYXNlZCBvbiB0aGUgZ2l2ZW4gc2FtcGxlIHJhdGUuDQo+ID4gPiAg ICogUmV0dXJucyB6ZXJvIGZvciBzdWNjZXNzLCBvciBhIG5lZ2F0aXZlIGVycm9yIGNvZGUuDQo+ ID4gPiAgICovDQo+ID4gPiAtaW50IHNuZF9oZGFjX3N5bmNfYXVkaW9fcmF0ZShzdHJ1Y3QgaGRh Y19kZXZpY2UgKmNvZGVjLCBoZGFfbmlkX3QNCj4gPiA+IG5pZCwgaW50DQo+ID4gPiByYXRlKQ0K PiA+ID4gK2ludCBzbmRfaGRhY19zeW5jX2F1ZGlvX3JhdGUoc3RydWN0IGhkYWNfZGV2aWNlICpj b2RlYywgaGRhX25pZF90IG5pZCwNCj4gPiA+ICsJCQkgICAgIGludCBkZXZfaWQsIGludCByYXRl KQ0KPiA+ID4gIHsNCj4gPiA+ICAJc3RydWN0IGhkYWNfYnVzICpidXMgPSBjb2RlYy0+YnVzOw0K PiA+ID4gIAlzdHJ1Y3QgaTkxNV9hdWRpb19jb21wb25lbnQgKmFjb21wID0gYnVzLT5hdWRpb19j b21wb25lbnQ7IEBADQo+ID4gPiAtMjEyLDcgKzIxMyw3IEBAIGludCBzbmRfaGRhY19zeW5jX2F1 ZGlvX3JhdGUoc3RydWN0IGhkYWNfZGV2aWNlDQo+ID4gPiAqY29kZWMsIGhkYV9uaWRfdCBuaWQs IGludCByYXRlKQ0KPiA+ID4gIAlwb3J0ID0gcGluMnBvcnQoY29kZWMsIG5pZCk7DQo+ID4gPiAg CWlmIChwb3J0IDwgMCkNCj4gPiA+ICAJCXJldHVybiAtRUlOVkFMOw0KPiA+ID4gLQlyZXR1cm4g YWNvbXAtPm9wcy0+c3luY19hdWRpb19yYXRlKGFjb21wLT5kZXYsIHBvcnQsIHJhdGUpOw0KPiA+ ID4gKwlyZXR1cm4gYWNvbXAtPm9wcy0+c3luY19hdWRpb19yYXRlKGFjb21wLT5kZXYsIHBvcnQs IGRldl9pZCwNCj4gPiA+ICtyYXRlKTsNCj4gPiA+ICB9DQo+ID4gPiAgRVhQT1JUX1NZTUJPTF9H UEwoc25kX2hkYWNfc3luY19hdWRpb19yYXRlKTsNCj4gPiA+DQo+ID4gPiBAQCAtMjM2LDcgKzIz Nyw3IEBAIEVYUE9SVF9TWU1CT0xfR1BMKHNuZF9oZGFjX3N5bmNfYXVkaW9fcmF0ZSk7DQo+ID4g PiAgICogdGh1cyBpdCBtYXkgYmUgb3ZlciBAbWF4X2J5dGVzLiAgSWYgaXQncyBvdmVyIEBtYXhf Ynl0ZXMsIGl0IGltcGxpZXMNCj4gPiA+ICAgKiB0aGF0IG9ubHkgYSBwYXJ0IG9mIEVMRCBieXRl cyBoYXZlIGJlZW4gZmV0Y2hlZC4NCj4gPiA+ICAgKi8NCj4gPiA+IC1pbnQgc25kX2hkYWNfYWNv bXBfZ2V0X2VsZChzdHJ1Y3QgaGRhY19kZXZpY2UgKmNvZGVjLCBoZGFfbmlkX3QNCj4gPiA+IG5p ZCwNCj4gPiA+ICtpbnQgc25kX2hkYWNfYWNvbXBfZ2V0X2VsZChzdHJ1Y3QgaGRhY19kZXZpY2Ug KmNvZGVjLCBoZGFfbmlkX3QNCj4gPiA+ICtuaWQsIGludCBkZXZfaWQsDQo+ID4gPiAgCQkJICAg Ym9vbCAqYXVkaW9fZW5hYmxlZCwgY2hhciAqYnVmZmVyLCBpbnQgbWF4X2J5dGVzKSAgew0KPiA+ ID4gIAlzdHJ1Y3QgaGRhY19idXMgKmJ1cyA9IGNvZGVjLT5idXM7IEBAIC0yNDksNyArMjUwLDcg QEAgaW50DQo+ID4gPiBzbmRfaGRhY19hY29tcF9nZXRfZWxkKHN0cnVjdCBoZGFjX2RldmljZSAq Y29kZWMsIGhkYV9uaWRfdCBuaWQsDQo+ID4gPiAgCXBvcnQgPSBwaW4ycG9ydChjb2RlYywgbmlk KTsNCj4gPiA+ICAJaWYgKHBvcnQgPCAwKQ0KPiA+ID4gIAkJcmV0dXJuIC1FSU5WQUw7DQo+ID4g PiAtCXJldHVybiBhY29tcC0+b3BzLT5nZXRfZWxkKGFjb21wLT5kZXYsIHBvcnQsIGF1ZGlvX2Vu YWJsZWQsDQo+ID4gPiArCXJldHVybiBhY29tcC0+b3BzLT5nZXRfZWxkKGFjb21wLT5kZXYsIHBv cnQsIGRldl9pZCwNCj4gPiA+IGF1ZGlvX2VuYWJsZWQsDQo+ID4gPiAgCQkJCSAgIGJ1ZmZlciwg bWF4X2J5dGVzKTsNCj4gPiA+ICB9DQo+ID4gPiAgRVhQT1JUX1NZTUJPTF9HUEwoc25kX2hkYWNf YWNvbXBfZ2V0X2VsZCk7DQo+ID4gPiBkaWZmIC0tZ2l0IGEvc291bmQvcGNpL2hkYS9wYXRjaF9o ZG1pLmMgYi9zb3VuZC9wY2kvaGRhL3BhdGNoX2hkbWkuYw0KPiA+ID4gaW5kZXggZDBkNWFkOC4u MDc3ZDQ4YSAxMDA2NDQNCj4gPiA+IC0tLSBhL3NvdW5kL3BjaS9oZGEvcGF0Y2hfaGRtaS5jDQo+ ID4gPiArKysgYi9zb3VuZC9wY2kvaGRhL3BhdGNoX2hkbWkuYw0KPiA+ID4gQEAgLTE0ODUsNyAr MTQ4NSw3IEBAIHN0YXRpYyB2b2lkIHN5bmNfZWxkX3ZpYV9hY29tcChzdHJ1Y3QNCj4gPiA+IGhk YV9jb2RlYyAqY29kZWMsDQo+ID4gPg0KPiA+ID4gIAltdXRleF9sb2NrKCZwZXJfcGluLT5sb2Nr KTsNCj4gPiA+ICAJZWxkLT5tb25pdG9yX3ByZXNlbnQgPSBmYWxzZTsNCj4gPiA+IC0Jc2l6ZSA9 IHNuZF9oZGFjX2Fjb21wX2dldF9lbGQoJmNvZGVjLT5jb3JlLCBwZXJfcGluLT5waW5fbmlkLA0K PiA+ID4gKwlzaXplID0gc25kX2hkYWNfYWNvbXBfZ2V0X2VsZCgmY29kZWMtPmNvcmUsIHBlcl9w aW4tPnBpbl9uaWQsIC0xLA0KPiA+ID4gIAkJCQkgICAgICAmZWxkLT5tb25pdG9yX3ByZXNlbnQs IGVsZC0+ZWxkX2J1ZmZlciwNCj4gPiA+ICAJCQkJICAgICAgRUxEX01BWF9TSVpFKTsNCj4gPiA+ ICAJaWYgKHNpemUgPiAwKSB7DQo+ID4gPiBAQCAtMTczOSw3ICsxNzM5LDggQEAgc3RhdGljIGlu dA0KPiA+ID4gZ2VuZXJpY19oZG1pX3BsYXliYWNrX3BjbV9wcmVwYXJlKHN0cnVjdCBoZGFfcGNt X3N0cmVhbSAqaGluZm8sDQo+ID4gPiAgCS8qIENhbGwgc3luY19hdWRpb19yYXRlIHRvIHNldCB0 aGUgTi9DVFMvTSBtYW51YWxseSBpZiBuZWNlc3NhcnkgKi8NCj4gPiA+ICAJLyogVG9kbzogYWRk IERQMS4yIE1TVCBhdWRpbyBzdXBwb3J0IGxhdGVyICovDQo+ID4gPiAgCWlmIChjb2RlY19oYXNf YWNvbXAoY29kZWMpKQ0KPiA+ID4gLQkJc25kX2hkYWNfc3luY19hdWRpb19yYXRlKCZjb2RlYy0+ Y29yZSwgcGluX25pZCwgcnVudGltZS0NCj4gPiA+ID5yYXRlKTsNCj4gPiA+ICsJCXNuZF9oZGFj X3N5bmNfYXVkaW9fcmF0ZSgmY29kZWMtPmNvcmUsIHBpbl9uaWQsIC0xLA0KPiA+ID4gKwkJCQkJ IHJ1bnRpbWUtPnJhdGUpOw0KPiA+ID4NCj4gPiA+ICAJbm9uX3BjbSA9IGNoZWNrX25vbl9wY21f cGVyX2N2dChjb2RlYywgY3Z0X25pZCk7DQo+ID4gPiAgCW11dGV4X2xvY2soJnBlcl9waW4tPmxv Y2spOw0KPiA+ID4gQEAgLTIyODUsNyArMjI4Niw3IEBAIHN0YXRpYyB2b2lkIGhhc3dlbGxfc2V0 X3Bvd2VyX3N0YXRlKHN0cnVjdA0KPiA+ID4gaGRhX2NvZGVjICpjb2RlYywgaGRhX25pZF90IGZn LA0KPiA+ID4gIAlzbmRfaGRhX2NvZGVjX3NldF9wb3dlcl90b19hbGwoY29kZWMsIGZnLCBwb3dl cl9zdGF0ZSk7ICB9DQo+ID4gPg0KPiA+ID4gLXN0YXRpYyB2b2lkIGludGVsX3Bpbl9lbGRfbm90 aWZ5KHZvaWQgKmF1ZGlvX3B0ciwgaW50IHBvcnQpDQo+ID4gPiArc3RhdGljIHZvaWQgaW50ZWxf cGluX2VsZF9ub3RpZnkodm9pZCAqYXVkaW9fcHRyLCBpbnQgcG9ydCwgaW50DQo+ID4gPiArZGV2 X2lkKQ0KPiA+ID4gIHsNCj4gPiA+ICAJc3RydWN0IGhkYV9jb2RlYyAqY29kZWMgPSBhdWRpb19w dHI7DQo+ID4gPiAgCWludCBwaW5fbmlkOw0KPiA+ID4gLS0NCj4gPiA+IDIuNS4wDQo+ID4gPg0K PiA+ID4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCj4g PiA+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QNCj4gPiA+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcNCj4gPiA+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vaW50ZWwtZ2Z4DQo+ID4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18NCj4gPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0DQo+ID4gSW50ZWwtZ2Z4QGxp c3RzLmZyZWVkZXNrdG9wLm9yZw0KPiA+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4DQoNCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2ludGVsLWdmeAo=