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:43:04 +0000 Message-ID: <96A12704CE18D347B625EE2D4A099D19119F955D@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> <96A12704CE18D347B625EE2D4A099D19119F950B@SHSMSX103.ccr.corp.intel.com> <1470380167.13893.13.camel@dk-H97M-D3H> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1470380167.13893.13.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 DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogUGFuZGl5YW4sIERoaW5h a2FyYW4NCj4gU2VudDogRnJpZGF5LCBBdWd1c3QgNSwgMjAxNiAyOjQyIFBNDQo+IFRvOiBZYW5n LCBMaWJpbiA8bGliaW4ueWFuZ0BpbnRlbC5jb20+DQo+IENjOiBpbnRlbC1nZnhAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnOyB0aXdhaUBzdXNlLmRlOyBhbHNhLWRldmVsQGFsc2EtDQo+IHByb2plY3Qu b3JnOyBsaWJpbi55YW5nQGxpbnV4LmludGVsLmNvbQ0KPiBTdWJqZWN0OiBSZTogW0ludGVsLWdm eF0gW1BBVENIXSBkcm0vaTkxNS9kcDogRFAgYXVkaW8gQVBJIGNoYW5nZXMgZm9yIE1TVA0KPiAN Cj4gT24gRnJpLCAyMDE2LTA4LTA1IGF0IDA2OjIxICswMDAwLCBZYW5nLCBMaWJpbiB3cm90ZToN Cj4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiBGcm9tOiBQYW5kaXlhbiwg RGhpbmFrYXJhbg0KPiA+ID4gU2VudDogRnJpZGF5LCBBdWd1c3QgNSwgMjAxNiAxOjU3IFBNDQo+ ID4gPiBUbzogWWFuZywgTGliaW4gPGxpYmluLnlhbmdAaW50ZWwuY29tPg0KPiA+ID4gQ2M6IGlu dGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmc7IHRpd2FpQHN1c2UuZGU7IGFsc2EtZGV2ZWxA YWxzYS0NCj4gPiA+IHByb2plY3Qub3JnOyBsaWJpbi55YW5nQGxpbnV4LmludGVsLmNvbQ0KPiA+ ID4gU3ViamVjdDogUmU6IFtJbnRlbC1nZnhdIFtQQVRDSF0gZHJtL2k5MTUvZHA6IERQIGF1ZGlv IEFQSSBjaGFuZ2VzDQo+ID4gPiBmb3IgTVNUDQo+ID4gPg0KPiA+ID4gT24gRnJpLCAyMDE2LTA4 LTA1IGF0IDAyOjM1ICswMDAwLCBZYW5nLCBMaWJpbiB3cm90ZToNCj4gPiA+ID4gPiAtLS0tLU9y aWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4gPiA+IEZyb206IEludGVsLWdmeCBbbWFpbHRvOmlu dGVsLWdmeC1ib3VuY2VzQGxpc3RzLmZyZWVkZXNrdG9wLm9yZ10NCj4gPiA+ID4gPiBPbiBCZWhh bGYgT2YgRGhpbmFrYXJhbiBQYW5kaXlhbg0KPiA+ID4gPiA+IFNlbnQ6IFdlZG5lc2RheSwgQXVn dXN0IDMsIDIwMTYgMTA6MTUgQU0NCj4gPiA+ID4gPiBUbzogaW50ZWwtZ2Z4QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZw0KPiA+ID4gPiA+IENjOiBhbHNhLWRldmVsQGFsc2EtcHJvamVjdC5vcmc7IHRp d2FpQHN1c2UuZGU7DQo+ID4gPiA+ID4gbGliaW4ueWFuZ0BsaW51eC5pbnRlbC5jb207IFBhbmRp eWFuLCBEaGluYWthcmFuDQo+ID4gPiA+ID4gPGRoaW5ha2FyYW4ucGFuZGl5YW5AaW50ZWwuY29t Pg0KPiA+ID4gPiA+IFN1YmplY3Q6IFtJbnRlbC1nZnhdIFtQQVRDSF0gZHJtL2k5MTUvZHA6IERQ IGF1ZGlvIEFQSSBjaGFuZ2VzDQo+ID4gPiA+ID4gZm9yIE1TVA0KPiA+ID4gPiA+DQo+ID4gPiA+ ID4gRFAgTVNUIHByb3ZpZGVzIHRoZSBjYXBhYmlsaXR5IHRvIHNlbmQgbXVsdGlwbGUgdmlkZW8g YW5kIGF1ZGlvDQo+ID4gPiA+ID4gc3RyZWFtcyB2aWEgb25lIHNpbmdsZSBwb3J0LiBUaGlzIHJl cXVpcmVzIHRoZSBBUEkncyBiZXR3ZWVuDQo+ID4gPiA+ID4gaTkxNSBhbmQgYXVkaW8gZHJpdmVy cyB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuIGF1ZGlvIGNhcGFibGUNCj4gPiA+ID4gPiBkaXNwbGF5 cyBjb25uZWN0ZWQgdG8gYSBwb3J0LiBUaGlzIHBhdGNoIGFkZHMgdGhpcyBzdXBwb3J0IHZpYQ0K PiA+ID4gPiA+IGFuIGFkZGl0aW9uYWwgcGFyYW1ldGVyICdpbnQgZGV2X2lkJy4gVGhlIGV4aXN0 aW5nIHBhcmFtZXRlcg0KPiA+ID4gPiA+ICdwb3J0JyBkb2VzIG5vdCBjaGFuZ2UgaXQncw0KPiA+ ID4gbWVhbmluZy4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+IGRldl9pZCA9DQo+ID4gPiA+ID4gCU1T VAk6IHBpcGUgdGhhdCB0aGUgc3RyZWFtIG9yaWdpbmF0ZXMgZnJvbQ0KPiA+ID4gPiA+IAlOb24t TVNUCTogLTENCj4gPiA+ID4gPg0KPiA+ID4gPiA+IEFmZmVjdGVkIEFQSXM6DQo+ID4gPiA+ID4g c3RydWN0IGk5MTVfYXVkaW9fY29tcG9uZW50X29wcw0KPiA+ID4gPiA+IC0gICAgICAgaW50ICgq c3luY19hdWRpb19yYXRlKShzdHJ1Y3QgZGV2aWNlICosIGludCBwb3J0LCBpbnQgcmF0ZSk7DQo+ ID4gPiA+ID4gKwlpbnQgKCpzeW5jX2F1ZGlvX3JhdGUpKHN0cnVjdCBkZXZpY2UgKiwgaW50IHBv cnQsIGludCBkZXZfaWQsDQo+ID4gPiA+ID4gKwkgICAgIGludCByYXRlKTsNCj4gPiA+ID4gPg0K PiA+ID4gPiA+IC0gICAgICAgaW50ICgqZ2V0X2VsZCkoc3RydWN0IGRldmljZSAqLCBpbnQgcG9y dCwgYm9vbCAqZW5hYmxlZCwNCj4gPiA+ID4gPiAtICAgICAgICAgICAgICAgICAgICAgICB1bnNp Z25lZCBjaGFyICpidWYsIGludCBtYXhfYnl0ZXMpOw0KPiA+ID4gPiA+ICsgICAgICAgaW50ICgq Z2V0X2VsZCkoc3RydWN0IGRldmljZSAqLCBpbnQgcG9ydCwgaW50IGRldl9pZCwNCj4gPiA+ID4g PiArCQkgICAgICAgYm9vbCAqZW5hYmxlZCwgdW5zaWduZWQgY2hhciAqYnVmLCBpbnQgbWF4X2J5 dGVzKTsNCj4gPiA+ID4gPg0KPiA+ID4gPiA+IHN0cnVjdCBpOTE1X2F1ZGlvX2NvbXBvbmVudF9h dWRpb19vcHMNCj4gPiA+ID4gPiAtICAgICAgIHZvaWQgKCpwaW5fZWxkX25vdGlmeSkodm9pZCAq YXVkaW9fcHRyLCBpbnQgcG9ydCk7DQo+ID4gPiA+ID4gKyAgICAgICB2b2lkICgqcGluX2VsZF9u b3RpZnkpKHZvaWQgKmF1ZGlvX3B0ciwgaW50IHBvcnQsIGludA0KPiA+ID4gPiA+ICsgZGV2X2lk KTsNCj4gPiA+ID4gPg0KPiA+ID4gPiA+IFRoaXMgcGF0Y2ggbWFrZXMgZHVtbXkgY2hhbmdlcyBp biB0aGUgYXVkaW8gZHJpdmVycyBmb3IgYnVpbGQgdG8NCj4gc3VjY2VlZC4NCj4gPiA+ID4gPg0K PiA+ID4gPiA+IFNpZ25lZC1vZmYtYnk6IERoaW5ha2FyYW4gUGFuZGl5YW4NCj4gPiA+ID4gPiA8 ZGhpbmFrYXJhbi5wYW5kaXlhbkBpbnRlbC5jb20+DQo+ID4gPiA+ID4gLS0tDQo+ID4gPiA+ID4g IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgfCAgMiArLQ0KPiA+ID4gPiA+ICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5jIHwgODINCj4gPiA+ID4gPiArKysrKysr KysrKysrKysrKysrKysrKysrKysrKy0tDQo+ID4gPiA+ID4gLS0tLS0tLQ0KPiA+ID4gPiA+ICBp bmNsdWRlL2RybS9pOTE1X2NvbXBvbmVudC5oICAgICAgIHwgIDYgKy0tDQo+ID4gPiA+ID4gIGlu Y2x1ZGUvc291bmQvaGRhX2k5MTUuaCAgICAgICAgICAgfCAxMSArKy0tLQ0KPiA+ID4gPiA+ICBz b3VuZC9oZGEvaGRhY19pOTE1LmMgICAgICAgICAgICAgIHwgIDkgKysrLS0NCj4gPiA+ID4gPiAg c291bmQvcGNpL2hkYS9wYXRjaF9oZG1pLmMgICAgICAgICB8ICA3ICsrLS0NCj4gPiA+ID4gPiAg NiBmaWxlcyBjaGFuZ2VkLCA4MiBpbnNlcnRpb25zKCspLCAzNSBkZWxldGlvbnMoLSkNCj4gPiA+ ID4gPg0KPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5oDQo+ID4gPiA+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGluZGV4IDY1 YWRhNWQuLjhlNGM4YzggMTAwNjQ0DQo+ID4gPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuaA0KPiA+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmgNCj4gPiA+ID4gPiBAQCAtMjA1NCw3ICsyMDU0LDcgQEAgc3RydWN0IGRybV9pOTE1X3By aXZhdGUgew0KPiA+ID4gPiA+ICAJLyogcGVyZm9ybSBQSFkgc3RhdGUgc2FuaXR5IGNoZWNrcz8g Ki8NCj4gPiA+ID4gPiAgCWJvb2wgY2h2X3BoeV9hc3NlcnRbMl07DQo+ID4gPiA+ID4NCj4gPiA+ ID4gPiAtCXN0cnVjdCBpbnRlbF9lbmNvZGVyICpkaWdfcG9ydF9tYXBbSTkxNV9NQVhfUE9SVFNd Ow0KPiA+ID4gPiA+ICsJc3RydWN0IGludGVsX2VuY29kZXIgKmF2X2VuY19tYXBbSTkxNV9NQVhf UElQRVNdOw0KPiA+ID4gPg0KPiA+ID4gPiBXZSBtYXkgc3RpbGwgbmVlZCBzYXZlIHRoZSBwb3J0 IG51bWJlciBpbmZvLg0KPiA+ID4gPiBJbiBub24tTVNUIG1vZGUsIGRldmljZSBlbnRyeSBtZWFu cyBub3RoaW5nLiBUaGlzIG1lYW5zDQo+ID4gPiA+IGF2X2VuY19tYXBbcGlwZV0gbWF5IG5vdCBn ZXQgdGhlIHJpZ2h0IGludGVsX2VuY29kZXINCj4gPiA+ID4NCj4gPiA+ID4gUmVnYXJkcywNCj4g PiA+ID4gTGliaW4NCj4gPiA+ID4NCj4gPiA+IFdlIGZpbmQgdGhlIGVuY29kZXIgdXNpbmcgcG9y dCBpbiBnZXRfc2F2ZWRfZW5jb2RlcigpDQo+ID4NCj4gPiBJdCBzZWVtcyBpdCBzdGlsbCBjYW4n dCBnZXQgdGhlIGVuY29kZXIgZm9yIFNTVC9IRE1JIGFzIHBpcGUgbWF5DQo+ID4gYWx3YXlzIGJl IC0xIG9yIDAgZm9yIFNTVC9IRE1JPw0KPiA+DQo+ID4gUmVnYXJkcywNCj4gPiBMaWJpbg0KPiA+ DQo+IA0KPiBUaGUgYXVkaW8gZHJpdmVyIHNlbmRzIGRldl9pZD0tMSwgYnV0IHRoZSBjb3JyZWN0 ICJwb3J0IiBmb3IgU1NULiBTbywgd2UgbG9vcA0KPiB0aHJvdWdoIGFsbCB0aGUgc2F2ZWQgZW5j b2RlcnMgYW5kIGNob29zZSB0aGUgb25lIHRoYXQgaXMgdGllZCB0byAicG9ydCINCj4gDQo+IGZv ciAocGlwZSA9IFBJUEVfQTsgcGlwZSA8IEk5MTVfTUFYX1BJUEVTOyBwaXBlKyspIHsNCj4gDQo+ IAkJaWYgKCFhdl9lbmNfbWFwW3BpcGVdKQ0KPiAJCQljb250aW51ZTsNCj4gDQo+IAkJZW5jb2Rl ciA9ICZhdl9lbmNfbWFwW3BpcGVdLT5iYXNlOw0KPiAJCWlmIChwb3J0ID09IGVuY190b19kaWdf cG9ydChlbmNvZGVyKS0+cG9ydCkNCj4gCQkJcmV0dXJuIGF2X2VuY19tYXBbcGlwZV07DQo+IAl9 DQoNCkdldCB5b3VyIG1lYW4uIFRoYW5rcy4NCg0KPiANCj4gDQo+IA0KPiA+ID4gPiA+DQo+ID4g PiA+ID4gIAkvKg0KPiA+ID4gPiA+ICAJICogTk9URTogVGhpcyBpcyB0aGUgZHJpMS91bXMgZHVu Z2VvbiwgZG9uJ3QgYWRkIHN0dWZmIGhlcmUuDQo+ID4gPiA+ID4gWW91ciBwYXRjaCBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXVkaW8uYw0KPiA+ID4gPiA+IGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXVkaW8uYw0KPiA+ID4gPiA+IGluZGV4IDhjNDkzZGUu LmNiZTQ0YzggMTAwNjQ0DQo+ID4gPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfYXVkaW8uYw0KPiA+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F1 ZGlvLmMNCj4gPiA+ID4gPiBAQCAtNTAwLDYgKzUwMCw5IEBAIHZvaWQgaW50ZWxfYXVkaW9fY29k ZWNfZW5hYmxlKHN0cnVjdA0KPiA+ID4gPiA+IGludGVsX2VuY29kZXINCj4gPiA+ID4gPiAqaW50 ZWxfZW5jb2RlcikNCj4gPiA+ID4gPiAgCXN0cnVjdCBpOTE1X2F1ZGlvX2NvbXBvbmVudCAqYWNv bXAgPSBkZXZfcHJpdi0+YXVkaW9fY29tcG9uZW50Ow0KPiA+ID4gPiA+ICAJc3RydWN0IGludGVs X2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQgPSBlbmNfdG9fZGlnX3BvcnQoZW5jb2Rlcik7 DQo+ID4gPiA+ID4gIAllbnVtIHBvcnQgcG9ydCA9IGludGVsX2RpZ19wb3J0LT5wb3J0Ow0KPiA+ ID4gPiA+ICsJZW51bSBwaXBlIHBpcGUgPSBjcnRjLT5waXBlOw0KPiA+ID4gPiA+ICsJaW50IGRl dl9pZCA9IC0xOw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPg0KPiA+ID4gPiA+ICAJY29ubmVjdG9y ID0gZHJtX3NlbGVjdF9lbGQoZW5jb2Rlcik7DQo+ID4gPiA+ID4gIAlpZiAoIWNvbm5lY3RvcikN Cj4gPiA+ID4gPiBAQCAtNTIyLDE0ICs1MjUsMTkgQEAgdm9pZCBpbnRlbF9hdWRpb19jb2RlY19l bmFibGUoc3RydWN0DQo+ID4gPiA+ID4gaW50ZWxfZW5jb2Rlcg0KPiA+ID4gPiA+ICppbnRlbF9l bmNvZGVyKQ0KPiA+ID4gPiA+ICAJCWRldl9wcml2LT5kaXNwbGF5LmF1ZGlvX2NvZGVjX2VuYWJs ZShjb25uZWN0b3IsDQo+ID4gPiA+ID4gaW50ZWxfZW5jb2RlciwNCj4gPiA+ID4gPiAgCQkJCQkJ ICAgICBhZGp1c3RlZF9tb2RlKTsNCj4gPiA+ID4gPg0KPiA+ID4gPiA+ICsJaWYgKGludGVsX2Vu Y29kZXItPnR5cGUgPT0gSU5URUxfT1VUUFVUX0RQX01TVCkNCj4gPiA+ID4gPiArCQlkZXZfaWQg PSBwaXBlOw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiAgCW11dGV4X2xvY2soJmRldl9wcml2LT5h dl9tdXRleCk7DQo+ID4gPiA+ID4gIAlpbnRlbF9lbmNvZGVyLT5hdWRpb19jb25uZWN0b3IgPSBj b25uZWN0b3I7DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICAJLyogcmVmZXJyZWQgaW4gYXVkaW8g Y2FsbGJhY2tzICovDQo+ID4gPiA+ID4gLQlkZXZfcHJpdi0+ZGlnX3BvcnRfbWFwW3BvcnRdID0g aW50ZWxfZW5jb2RlcjsNCj4gPiA+ID4gPiArCWRldl9wcml2LT5hdl9lbmNfbWFwW3BpcGVdID0g aW50ZWxfZW5jb2RlcjsNCj4gPiA+ID4gPiAgCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmF2X211 dGV4KTsNCj4gPiA+ID4gPg0KPiA+ID4gPiA+ICAJaWYgKGFjb21wICYmIGFjb21wLT5hdWRpb19v cHMgJiYgYWNvbXAtPmF1ZGlvX29wcy0NCj4gPiA+ID4gPiA+cGluX2VsZF9ub3RpZnkpDQo+ID4g PiA+ID4gLQkJYWNvbXAtPmF1ZGlvX29wcy0+cGluX2VsZF9ub3RpZnkoYWNvbXAtPmF1ZGlvX29w cy0NCj4gPiA+ID4gPiA+YXVkaW9fcHRyLCAoaW50KSBwb3J0KTsNCj4gPiA+ID4gPiArCQlhY29t cC0+YXVkaW9fb3BzLT5waW5fZWxkX25vdGlmeShhY29tcC0NCj4gPmF1ZGlvX29wcy0NCj4gPiA+ ID4gPiA+YXVkaW9fcHRyLA0KPiA+ID4gPiA+ICsJCQkJCQkgKGludCkgcG9ydCwgZGV2X2lkKTsN Cj4gPiA+ID4gPiAgfQ0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gIC8qKg0KPiA+ID4gPiA+IEBAIC01 NDIsMjIgKzU1MCwyOSBAQCB2b2lkIGludGVsX2F1ZGlvX2NvZGVjX2VuYWJsZShzdHJ1Y3QNCj4g PiA+ID4gPiBpbnRlbF9lbmNvZGVyDQo+ID4gPiA+ID4gKmludGVsX2VuY29kZXIpICB2b2lkIGlu dGVsX2F1ZGlvX2NvZGVjX2Rpc2FibGUoc3RydWN0DQo+ID4gPiA+ID4gaW50ZWxfZW5jb2Rlcg0K PiA+ID4gPiA+ICppbnRlbF9lbmNvZGVyKSAgew0KPiA+ID4gPiA+ICAJc3RydWN0IGRybV9lbmNv ZGVyICplbmNvZGVyID0gJmludGVsX2VuY29kZXItPmJhc2U7DQo+ID4gPiA+ID4gKwlzdHJ1Y3Qg aW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoZW5jb2Rlci0+Y3J0Yyk7DQo+ID4gPiA+ ID4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZW5jb2Rlci0+ZGV2Ow0KPiA+ID4gPiA+ICAJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOw0KPiA+ID4g PiA+ICAJc3RydWN0IGk5MTVfYXVkaW9fY29tcG9uZW50ICphY29tcCA9IGRldl9wcml2LT5hdWRp b19jb21wb25lbnQ7DQo+ID4gPiA+ID4gIAlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRl bF9kaWdfcG9ydCA9IGVuY190b19kaWdfcG9ydChlbmNvZGVyKTsNCj4gPiA+ID4gPiAgCWVudW0g cG9ydCBwb3J0ID0gaW50ZWxfZGlnX3BvcnQtPnBvcnQ7DQo+ID4gPiA+ID4gKwllbnVtIHBpcGUg cGlwZSA9IGNydGMtPnBpcGU7DQo+ID4gPiA+ID4gKwlpbnQgZGV2X2lkID0gLTE7DQo+ID4gPiA+ ID4gKw0KPiA+ID4gPiA+ICsJaWYgKGludGVsX2VuY29kZXItPnR5cGUgPT0gSU5URUxfT1VUUFVU X0RQX01TVCkNCj4gPiA+ID4gPiArCQlkZXZfaWQgPSBwaXBlOw0KPiA+ID4gPiA+DQo+ID4gPiA+ ID4gIAlpZiAoZGV2X3ByaXYtPmRpc3BsYXkuYXVkaW9fY29kZWNfZGlzYWJsZSkNCj4gPiA+ID4g PiAgCQlkZXZfcHJpdi0+ZGlzcGxheS5hdWRpb19jb2RlY19kaXNhYmxlKGludGVsX2VuY29kZXIp Ow0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gIAltdXRleF9sb2NrKCZkZXZfcHJpdi0+YXZfbXV0ZXgp Ow0KPiA+ID4gPiA+ICAJaW50ZWxfZW5jb2Rlci0+YXVkaW9fY29ubmVjdG9yID0gTlVMTDsNCj4g PiA+ID4gPiAtCWRldl9wcml2LT5kaWdfcG9ydF9tYXBbcG9ydF0gPSBOVUxMOw0KPiA+ID4gPiA+ ICsJZGV2X3ByaXYtPmF2X2VuY19tYXBbcGlwZV0gPSBOVUxMOw0KPiA+ID4gPiA+ICAJbXV0ZXhf dW5sb2NrKCZkZXZfcHJpdi0+YXZfbXV0ZXgpOw0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gIAlpZiAo YWNvbXAgJiYgYWNvbXAtPmF1ZGlvX29wcyAmJiBhY29tcC0+YXVkaW9fb3BzLQ0KPiA+ID4gPiA+ ID5waW5fZWxkX25vdGlmeSkNCj4gPiA+ID4gPiAtCQlhY29tcC0+YXVkaW9fb3BzLT5waW5fZWxk X25vdGlmeShhY29tcC0+YXVkaW9fb3BzLQ0KPiA+ID4gPiA+ID5hdWRpb19wdHIsIChpbnQpIHBv cnQpOw0KPiA+ID4gPiA+ICsJCWFjb21wLT5hdWRpb19vcHMtPnBpbl9lbGRfbm90aWZ5KGFjb21w LQ0KPiA+YXVkaW9fb3BzLQ0KPiA+ID4gPiA+ID5hdWRpb19wdHIsDQo+ID4gPiA+ID4gKwkJCQkJ CSAoaW50KSBwb3J0LCBkZXZfaWQpOw0KPiA+ID4gPiA+ICB9DQo+ID4gPiA+ID4NCj4gPiA+ID4g PiAgLyoqDQo+ID4gPiA+ID4gQEAgLTYyOCw4ICs2NDMsMzIgQEAgc3RhdGljIGludA0KPiA+ID4g PiA+IGk5MTVfYXVkaW9fY29tcG9uZW50X2dldF9jZGNsa19mcmVxKHN0cnVjdCBkZXZpY2UgKmRl dikNCj4gPiA+ID4gPiAgCXJldHVybiBkZXZfcHJpdi0+Y2RjbGtfZnJlcTsNCj4gPiA+ID4gPiAg fQ0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gLXN0YXRpYyBpbnQgaTkxNV9hdWRpb19jb21wb25lbnRf c3luY19hdWRpb19yYXRlKHN0cnVjdCBkZXZpY2UgKmRldiwNCj4gPiA+ID4gPiAtCQkJCQkJaW50 IHBvcnQsIGludCByYXRlKQ0KPiA+ID4gPiA+ICtzdGF0aWMgc3RydWN0IGludGVsX2VuY29kZXIg KmdldF9zYXZlZF9lbmNvZGVyKHN0cnVjdA0KPiA+ID4gPiA+ICtpbnRlbF9lbmNvZGVyDQo+ID4g PiA+ID4gKmF2X2VuY19tYXBbXSwNCj4gPiA+ID4gPiArCQkJCQkgICAgICAgaW50IHBvcnQsIGlu dCBkZXZfaWQpIHsNCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKwllbnVtIHBpcGUgcGlwZTsNCj4g PiA+ID4gPiArCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcjsNCj4gPiA+ID4gPiArDQo+ID4g PiA+ID4gKwlpZiAoZGV2X2lkID49IDAgJiYgZGV2X2lkIDwgSTkxNV9NQVhfUElQRVMpDQo+ID4g PiA+ID4gKwkJcmV0dXJuIGF2X2VuY19tYXBbZGV2X2lkXTsNCj4gPiA+ID4gPiArDQo+ID4gPiA+ ID4gKwlmb3IgKHBpcGUgPSBQSVBFX0E7IHBpcGUgPCBJOTE1X01BWF9QSVBFUzsgcGlwZSsrKSB7 DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsJCWlmICghYXZfZW5jX21hcFtwaXBlXSkNCj4gPiA+ ID4gPiArCQkJY29udGludWU7DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsJCWVuY29kZXIgPSAm YXZfZW5jX21hcFtwaXBlXS0+YmFzZTsNCj4gPiA+ID4gPiArCQlpZiAocG9ydCA9PSBlbmNfdG9f ZGlnX3BvcnQoZW5jb2RlciktPnBvcnQpDQo+ID4gPiA+ID4gKwkJCXJldHVybiBhdl9lbmNfbWFw W3BpcGVdOw0KPiA+ID4gPiA+ICsJfQ0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArCXJldHVybiBO VUxMOw0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiAr c3RhdGljIGludCBpOTE1X2F1ZGlvX2NvbXBvbmVudF9zeW5jX2F1ZGlvX3JhdGUoc3RydWN0IGRl dmljZQ0KPiA+ID4gPiA+ICsqZGV2LCBpbnQNCj4gPiA+ID4gPiBwb3J0LA0KPiA+ID4gPiA+ICsJ CQkJCQlpbnQgZGV2X2lkLCBpbnQgcmF0ZSkNCj4gPiA+ID4gPiAgew0KPiA+ID4gPiA+ICAJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2X3RvX2k5MTUoZGV2KTsNCj4gPiA+ ID4gPiAgCXN0cnVjdCBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyOyBAQCAtNjQ5LDE1ICs2 ODgsMTYgQEANCj4gPiA+ID4gPiBzdGF0aWMgaW50IGk5MTVfYXVkaW9fY29tcG9uZW50X3N5bmNf YXVkaW9fcmF0ZShzdHJ1Y3QgZGV2aWNlICpkZXYsDQo+ID4gPiA+ID4gIAkJcmV0dXJuIDA7DQo+ ID4gPiA+ID4NCj4gPiA+ID4gPiAgCW11dGV4X2xvY2soJmRldl9wcml2LT5hdl9tdXRleCk7DQo+ ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICAJLyogMS4gZ2V0IHRoZSBwaXBlICovDQo+ID4gPiA+ID4g LQlpbnRlbF9lbmNvZGVyID0gZGV2X3ByaXYtPmRpZ19wb3J0X21hcFtwb3J0XTsNCj4gPiA+ID4g PiAtCS8qIGludGVsX2VuY29kZXIgbWlnaHQgYmUgTlVMTCBmb3IgRFAgTVNUICovDQo+ID4gPiA+ ID4gKwlpbnRlbF9lbmNvZGVyID0gZ2V0X3NhdmVkX2VuY29kZXIoZGV2X3ByaXYtPmF2X2VuY19t YXAsDQo+IHBvcnQsDQo+ID4gPiA+ID4gZGV2X2lkKTsNCj4gPiA+ID4gPiAgCWlmICghaW50ZWxf ZW5jb2RlciB8fCAhaW50ZWxfZW5jb2Rlci0+YmFzZS5jcnRjIHx8DQo+ID4gPiA+ID4gIAkgICAg aW50ZWxfZW5jb2Rlci0+dHlwZSAhPSBJTlRFTF9PVVRQVVRfSERNSSkgew0KPiA+ID4gPiA+ICAJ CURSTV9ERUJVR19LTVMoIm5vIHZhbGlkIHBvcnQgJWNcbiIsIHBvcnRfbmFtZShwb3J0KSk7DQo+ ID4gPiA+ID4gIAkJZXJyID0gLUVOT0RFVjsNCj4gPiA+ID4gPiAgCQlnb3RvIHVubG9jazsNCj4g PiA+ID4gPiAgCX0NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gIAljcnRjID0gdG9faW50ZWxfY3J0 YyhpbnRlbF9lbmNvZGVyLT5iYXNlLmNydGMpOw0KPiA+ID4gPiA+ICAJcGlwZSA9IGNydGMtPnBp cGU7DQo+ID4gPiA+ID4gIAlpZiAocGlwZSA9PSBJTlZBTElEX1BJUEUpIHsNCj4gPiA+ID4gPiBA QCAtNzAyLDcgKzc0Miw3IEBAIHN0YXRpYyBpbnQNCj4gPiA+ID4gPiBpOTE1X2F1ZGlvX2NvbXBv bmVudF9zeW5jX2F1ZGlvX3JhdGUoc3RydWN0IGRldmljZSAqZGV2LCAgfQ0KPiA+ID4gPiA+DQo+ ID4gPiA+ID4gIHN0YXRpYyBpbnQgaTkxNV9hdWRpb19jb21wb25lbnRfZ2V0X2VsZChzdHJ1Y3Qg ZGV2aWNlICpkZXYsIGludCBwb3J0LA0KPiA+ID4gPiA+IC0JCQkJCWJvb2wgKmVuYWJsZWQsDQo+ ID4gPiA+ID4gKwkJCQkJaW50IGRldl9pZCwgYm9vbCAqZW5hYmxlZCwNCj4gPiA+ID4gPiAgCQkJ CQl1bnNpZ25lZCBjaGFyICpidWYsIGludCBtYXhfYnl0ZXMpICB7DQo+ID4gPiA+ID4gIAlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXZfdG9faTkxNShkZXYpOyBAQA0KPiA+ ID4gPiA+IC03MTAsMTcNCj4gPiA+ID4gPiArNzUwLDIxIEBAIHN0YXRpYyBpbnQgaTkxNV9hdWRp b19jb21wb25lbnRfZ2V0X2VsZChzdHJ1Y3QgZGV2aWNlDQo+ID4gPiA+ID4gKypkZXYsIGludA0K PiA+ID4gPiA+IHBvcnQsDQo+ID4gPiA+ID4gIAljb25zdCB1OCAqZWxkOw0KPiA+ID4gPiA+ICAJ aW50IHJldCA9IC1FSU5WQUw7DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gIAlt dXRleF9sb2NrKCZkZXZfcHJpdi0+YXZfbXV0ZXgpOw0KPiA+ID4gPiA+IC0JaW50ZWxfZW5jb2Rl ciA9IGRldl9wcml2LT5kaWdfcG9ydF9tYXBbcG9ydF07DQo+ID4gPiA+ID4gLQkvKiBpbnRlbF9l bmNvZGVyIG1pZ2h0IGJlIE5VTEwgZm9yIERQIE1TVCAqLw0KPiA+ID4gPiA+IC0JaWYgKGludGVs X2VuY29kZXIpIHsNCj4gPiA+ID4gPiAtCQlyZXQgPSAwOw0KPiA+ID4gPiA+IC0JCSplbmFibGVk ID0gaW50ZWxfZW5jb2Rlci0+YXVkaW9fY29ubmVjdG9yICE9IE5VTEw7DQo+ID4gPiA+ID4gLQkJ aWYgKCplbmFibGVkKSB7DQo+ID4gPiA+ID4gLQkJCWVsZCA9IGludGVsX2VuY29kZXItPmF1ZGlv X2Nvbm5lY3Rvci0+ZWxkOw0KPiA+ID4gPiA+IC0JCQlyZXQgPSBkcm1fZWxkX3NpemUoZWxkKTsN Cj4gPiA+ID4gPiAtCQkJbWVtY3B5KGJ1ZiwgZWxkLCBtaW4obWF4X2J5dGVzLCByZXQpKTsNCj4g PiA+ID4gPiAtCQl9DQo+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ICsJaW50ZWxfZW5jb2RlciA9IGdl dF9zYXZlZF9lbmNvZGVyKGRldl9wcml2LT5hdl9lbmNfbWFwLA0KPiBwb3J0LA0KPiA+ID4gPiA+ IGRldl9pZCk7DQo+ID4gPiA+ID4gKwlpZiAoIWludGVsX2VuY29kZXIpIHsNCj4gPiA+ID4gPiAr CQltdXRleF91bmxvY2soJmRldl9wcml2LT5hdl9tdXRleCk7DQo+ID4gPiA+ID4gKwkJcmV0dXJu IHJldDsNCj4gPiA+ID4gPiArCX0NCj4gPiA+ID4gPiArDQo+ID4gPiA+ID4gKwlyZXQgPSAwOw0K PiA+ID4gPiA+ICsJKmVuYWJsZWQgPSBpbnRlbF9lbmNvZGVyLT5hdWRpb19jb25uZWN0b3IgIT0g TlVMTDsNCj4gPiA+ID4gPiArCWlmICgqZW5hYmxlZCkgew0KPiA+ID4gPiA+ICsJCWVsZCA9IGlu dGVsX2VuY29kZXItPmF1ZGlvX2Nvbm5lY3Rvci0+ZWxkOw0KPiA+ID4gPiA+ICsJCXJldCA9IGRy bV9lbGRfc2l6ZShlbGQpOw0KPiA+ID4gPiA+ICsJCW1lbWNweShidWYsIGVsZCwgbWluKG1heF9i eXRlcywgcmV0KSk7DQo+ID4gPiA+ID4gIAl9DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiAgCW11dGV4 X3VubG9jaygmZGV2X3ByaXYtPmF2X211dGV4KTsNCj4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvaW5j bHVkZS9kcm0vaTkxNV9jb21wb25lbnQuaA0KPiA+ID4gPiA+IGIvaW5jbHVkZS9kcm0vaTkxNV9j b21wb25lbnQuaCBpbmRleCBiNDZmYTBlLi4xNDE5Yzk4IDEwMDY0NA0KPiA+ID4gPiA+IC0tLSBh L2luY2x1ZGUvZHJtL2k5MTVfY29tcG9uZW50LmgNCj4gPiA+ID4gPiArKysgYi9pbmNsdWRlL2Ry bS9pOTE1X2NvbXBvbmVudC5oDQo+ID4gPiA+ID4gQEAgLTY0LDcgKzY0LDcgQEAgc3RydWN0IGk5 MTVfYXVkaW9fY29tcG9uZW50X29wcyB7DQo+ID4gPiA+ID4gIAkgKiBDYWxsZWQgZnJvbSBhdWRp byBkcml2ZXIuIEFmdGVyIGF1ZGlvIGRyaXZlciBzZXRzIHRoZQ0KPiA+ID4gPiA+ICAJICogc2Ft cGxlIHJhdGUsIGl0IHdpbGwgY2FsbCB0aGlzIGZ1bmN0aW9uIHRvIHNldCBuL2N0cw0KPiA+ID4g PiA+ICAJICovDQo+ID4gPiA+ID4gLQlpbnQgKCpzeW5jX2F1ZGlvX3JhdGUpKHN0cnVjdCBkZXZp Y2UgKiwgaW50IHBvcnQsIGludCByYXRlKTsNCj4gPiA+ID4gPiArCWludCAoKnN5bmNfYXVkaW9f cmF0ZSkoc3RydWN0IGRldmljZSAqLCBpbnQgcG9ydCwgaW50IGRldl9pZCwNCj4gPiA+ID4gPiAr aW50IHJhdGUpOw0KPiA+ID4gPiA+ICAJLyoqDQo+ID4gPiA+ID4gIAkgKiBAZ2V0X2VsZDogZmls bCB0aGUgYXVkaW8gc3RhdGUgYW5kIEVMRCBieXRlcyBmb3IgdGhlIGdpdmVuIHBvcnQNCj4gPiA+ ID4gPiAgCSAqDQo+ID4gPiA+ID4gQEAgLTc3LDcgKzc3LDcgQEAgc3RydWN0IGk5MTVfYXVkaW9f Y29tcG9uZW50X29wcyB7DQo+ID4gPiA+ID4gIAkgKiBOb3RlIHRoYXQgdGhlIHJldHVybmVkIHNp emUgbWF5IGJlIG92ZXIgQG1heF9ieXRlcy4gIFRoZW4gaXQNCj4gPiA+ID4gPiAgCSAqIGltcGxp ZXMgdGhhdCBvbmx5IGEgcGFydCBvZiBFTEQgaGFzIGJlZW4gY29waWVkIHRvIHRoZSBidWZmZXIu DQo+ID4gPiA+ID4gIAkgKi8NCj4gPiA+ID4gPiAtCWludCAoKmdldF9lbGQpKHN0cnVjdCBkZXZp Y2UgKiwgaW50IHBvcnQsIGJvb2wgKmVuYWJsZWQsDQo+ID4gPiA+ID4gKwlpbnQgKCpnZXRfZWxk KShzdHJ1Y3QgZGV2aWNlICosIGludCBwb3J0LCBpbnQgZGV2X2lkLCBib29sDQo+ID4gPiA+ID4g KyplbmFibGVkLA0KPiA+ID4gPiA+ICAJCSAgICAgICB1bnNpZ25lZCBjaGFyICpidWYsIGludCBt YXhfYnl0ZXMpOyAgfTsNCj4gPiA+ID4gPg0KPiA+ID4gPiA+IEBAIC05Nyw3ICs5Nyw3IEBAIHN0 cnVjdCBpOTE1X2F1ZGlvX2NvbXBvbmVudF9hdWRpb19vcHMgew0KPiA+ID4gPiA+ICAJICogc3Rh dHVzIGFjY29yZGluZ2x5IChldmVuIHdoZW4gdGhlIEhEQSBjb250cm9sbGVyIGlzIGluIHBvd2Vy IHNhdmUNCj4gPiA+ID4gPiAgCSAqIG1vZGUpLg0KPiA+ID4gPiA+ICAJICovDQo+ID4gPiA+ID4g LQl2b2lkICgqcGluX2VsZF9ub3RpZnkpKHZvaWQgKmF1ZGlvX3B0ciwgaW50IHBvcnQpOw0KPiA+ ID4gPiA+ICsJdm9pZCAoKnBpbl9lbGRfbm90aWZ5KSh2b2lkICphdWRpb19wdHIsIGludCBwb3J0 LCBpbnQgZGV2X2lkKTsNCj4gPiA+ID4gPiAgfTsNCj4gPiA+ID4gPg0KPiA+ID4gPiA+ICAvKioN Cj4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zb3VuZC9oZGFfaTkxNS5oIGIvaW5jbHVk ZS9zb3VuZC9oZGFfaTkxNS5oDQo+ID4gPiA+ID4gaW5kZXggNzk2Y2FiZi4uNWFiOTcyZSAxMDA2 NDQNCj4gPiA+ID4gPiAtLS0gYS9pbmNsdWRlL3NvdW5kL2hkYV9pOTE1LmgNCj4gPiA+ID4gPiAr KysgYi9pbmNsdWRlL3NvdW5kL2hkYV9pOTE1LmgNCj4gPiA+ID4gPiBAQCAtMTAsOCArMTAsOSBA QA0KPiA+ID4gPiA+ICBpbnQgc25kX2hkYWNfc2V0X2NvZGVjX3dha2V1cChzdHJ1Y3QgaGRhY19i dXMgKmJ1cywgYm9vbA0KPiA+ID4gPiA+IGVuYWJsZSk7IGludCBzbmRfaGRhY19kaXNwbGF5X3Bv d2VyKHN0cnVjdCBoZGFjX2J1cyAqYnVzLCBib29sDQo+ID4gPiA+ID4gZW5hYmxlKTsgIHZvaWQg c25kX2hkYWNfaTkxNV9zZXRfYmNsayhzdHJ1Y3QgaGRhY19idXMgKmJ1cyk7DQo+ID4gPiA+ID4g LWludCBzbmRfaGRhY19zeW5jX2F1ZGlvX3JhdGUoc3RydWN0IGhkYWNfZGV2aWNlICpjb2RlYywN Cj4gPiA+ID4gPiBoZGFfbmlkX3QgbmlkLCBpbnQgcmF0ZSk7IC1pbnQgc25kX2hkYWNfYWNvbXBf Z2V0X2VsZChzdHJ1Y3QNCj4gPiA+ID4gPiBoZGFjX2RldmljZSAqY29kZWMsIGhkYV9uaWRfdCBu aWQsDQo+ID4gPiA+ID4gK2ludCBzbmRfaGRhY19zeW5jX2F1ZGlvX3JhdGUoc3RydWN0IGhkYWNf ZGV2aWNlICpjb2RlYywgaGRhX25pZF90DQo+IG5pZCwNCj4gPiA+ID4gPiArCQkJICAgICBpbnQg ZGV2X2lkLCBpbnQgcmF0ZSk7DQo+ID4gPiA+ID4gK2ludCBzbmRfaGRhY19hY29tcF9nZXRfZWxk KHN0cnVjdCBoZGFjX2RldmljZSAqY29kZWMsIGhkYV9uaWRfdA0KPiA+ID4gPiA+ICtuaWQsIGlu dCBkZXZfaWQsDQo+ID4gPiA+ID4gIAkJCSAgIGJvb2wgKmF1ZGlvX2VuYWJsZWQsIGNoYXIgKmJ1 ZmZlciwgaW50IG1heF9ieXRlcyk7DQo+ID4gPiBpbnQNCj4gPiA+ID4gPiBzbmRfaGRhY19pOTE1 X2luaXQoc3RydWN0IGhkYWNfYnVzICpidXMpOyAgaW50DQo+ID4gPiA+ID4gc25kX2hkYWNfaTkx NV9leGl0KHN0cnVjdCBoZGFjX2J1cyAqYnVzKTsgQEAgLTI5LDEzICszMCwxMyBAQA0KPiA+ID4g PiA+IHN0YXRpYyBpbmxpbmUgdm9pZCBzbmRfaGRhY19pOTE1X3NldF9iY2xrKHN0cnVjdCBoZGFj X2J1cyAqYnVzKQ0KPiA+ID4gPiA+IHsgIH0gc3RhdGljIGlubGluZSBpbnQgc25kX2hkYWNfc3lu Y19hdWRpb19yYXRlKHN0cnVjdCBoZGFjX2RldmljZQ0KPiAqY29kZWMsDQo+ID4gPiA+ID4gLQkJ CQkJICAgaGRhX25pZF90IG5pZCwgaW50IHJhdGUpDQo+ID4gPiA+ID4gKwkJCQkJICAgaGRhX25p ZF90IG5pZCwgaW50IGRldl9pZCwNCj4gaW50IHJhdGUpDQo+ID4gPiA+ID4gIHsNCj4gPiA+ID4g PiAgCXJldHVybiAwOw0KPiA+ID4gPiA+ICB9DQo+ID4gPiA+ID4gIHN0YXRpYyBpbmxpbmUgaW50 IHNuZF9oZGFjX2Fjb21wX2dldF9lbGQoc3RydWN0IGhkYWNfZGV2aWNlDQo+ID4gPiA+ID4gKmNv ZGVjLCBoZGFfbmlkX3QgbmlkLA0KPiA+ID4gPiA+IC0JCQkJCSBib29sICphdWRpb19lbmFibGVk LCBjaGFyICpidWZmZXIsDQo+ID4gPiA+ID4gLQkJCQkJIGludCBtYXhfYnl0ZXMpDQo+ID4gPiA+ ID4gKwkJCQkJIGludCBkZXZfaWQsIGJvb2wNCj4gKmF1ZGlvX2VuYWJsZWQsDQo+ID4gPiA+ID4g KwkJCQkJIGNoYXIgKmJ1ZmZlciwgaW50IG1heF9ieXRlcykNCj4gPiA+ID4gPiAgew0KPiA+ID4g PiA+ICAJcmV0dXJuIC1FTk9ERVY7DQo+ID4gPiA+ID4gIH0NCj4gPiA+ID4gPiBkaWZmIC0tZ2l0 IGEvc291bmQvaGRhL2hkYWNfaTkxNS5jIGIvc291bmQvaGRhL2hkYWNfaTkxNS5jIGluZGV4DQo+ ID4gPiA+ID4gYzlhZjAyMi4uNmVhNjNhYyAxMDA2NDQNCj4gPiA+ID4gPiAtLS0gYS9zb3VuZC9o ZGEvaGRhY19pOTE1LmMNCj4gPiA+ID4gPiArKysgYi9zb3VuZC9oZGEvaGRhY19pOTE1LmMNCj4g PiA+ID4gPiBAQCAtMjAxLDcgKzIwMSw4IEBAIHN0YXRpYyBpbnQgcGluMnBvcnQoc3RydWN0IGhk YWNfZGV2aWNlDQo+ID4gPiA+ID4gKmNvZGVjLCBoZGFfbmlkX3QgcGluX25pZCkNCj4gPiA+ID4g PiAgICogVGhpcyBmdW5jdGlvbiBzZXRzIE4vQ1RTIHZhbHVlIGJhc2VkIG9uIHRoZSBnaXZlbiBz YW1wbGUgcmF0ZS4NCj4gPiA+ID4gPiAgICogUmV0dXJucyB6ZXJvIGZvciBzdWNjZXNzLCBvciBh IG5lZ2F0aXZlIGVycm9yIGNvZGUuDQo+ID4gPiA+ID4gICAqLw0KPiA+ID4gPiA+IC1pbnQgc25k X2hkYWNfc3luY19hdWRpb19yYXRlKHN0cnVjdCBoZGFjX2RldmljZSAqY29kZWMsDQo+ID4gPiA+ ID4gaGRhX25pZF90IG5pZCwgaW50DQo+ID4gPiA+ID4gcmF0ZSkNCj4gPiA+ID4gPiAraW50IHNu ZF9oZGFjX3N5bmNfYXVkaW9fcmF0ZShzdHJ1Y3QgaGRhY19kZXZpY2UgKmNvZGVjLCBoZGFfbmlk X3QNCj4gbmlkLA0KPiA+ID4gPiA+ICsJCQkgICAgIGludCBkZXZfaWQsIGludCByYXRlKQ0KPiA+ ID4gPiA+ICB7DQo+ID4gPiA+ID4gIAlzdHJ1Y3QgaGRhY19idXMgKmJ1cyA9IGNvZGVjLT5idXM7 DQo+ID4gPiA+ID4gIAlzdHJ1Y3QgaTkxNV9hdWRpb19jb21wb25lbnQgKmFjb21wID0gYnVzLT5h dWRpb19jb21wb25lbnQ7IEBADQo+ID4gPiA+ID4gLTIxMiw3ICsyMTMsNyBAQCBpbnQgc25kX2hk YWNfc3luY19hdWRpb19yYXRlKHN0cnVjdCBoZGFjX2RldmljZQ0KPiA+ID4gPiA+ICpjb2RlYywg aGRhX25pZF90IG5pZCwgaW50IHJhdGUpDQo+ID4gPiA+ID4gIAlwb3J0ID0gcGluMnBvcnQoY29k ZWMsIG5pZCk7DQo+ID4gPiA+ID4gIAlpZiAocG9ydCA8IDApDQo+ID4gPiA+ID4gIAkJcmV0dXJu IC1FSU5WQUw7DQo+ID4gPiA+ID4gLQlyZXR1cm4gYWNvbXAtPm9wcy0+c3luY19hdWRpb19yYXRl KGFjb21wLT5kZXYsIHBvcnQsIHJhdGUpOw0KPiA+ID4gPiA+ICsJcmV0dXJuIGFjb21wLT5vcHMt PnN5bmNfYXVkaW9fcmF0ZShhY29tcC0+ZGV2LCBwb3J0LA0KPiBkZXZfaWQsDQo+ID4gPiA+ID4g K3JhdGUpOw0KPiA+ID4gPiA+ICB9DQo+ID4gPiA+ID4gIEVYUE9SVF9TWU1CT0xfR1BMKHNuZF9o ZGFjX3N5bmNfYXVkaW9fcmF0ZSk7DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBAQCAtMjM2LDcgKzIz Nyw3IEBADQo+IEVYUE9SVF9TWU1CT0xfR1BMKHNuZF9oZGFjX3N5bmNfYXVkaW9fcmF0ZSk7DQo+ ID4gPiA+ID4gICAqIHRodXMgaXQgbWF5IGJlIG92ZXIgQG1heF9ieXRlcy4gIElmIGl0J3Mgb3Zl ciBAbWF4X2J5dGVzLCBpdCBpbXBsaWVzDQo+ID4gPiA+ID4gICAqIHRoYXQgb25seSBhIHBhcnQg b2YgRUxEIGJ5dGVzIGhhdmUgYmVlbiBmZXRjaGVkLg0KPiA+ID4gPiA+ICAgKi8NCj4gPiA+ID4g PiAtaW50IHNuZF9oZGFjX2Fjb21wX2dldF9lbGQoc3RydWN0IGhkYWNfZGV2aWNlICpjb2RlYywg aGRhX25pZF90DQo+ID4gPiA+ID4gbmlkLA0KPiA+ID4gPiA+ICtpbnQgc25kX2hkYWNfYWNvbXBf Z2V0X2VsZChzdHJ1Y3QgaGRhY19kZXZpY2UgKmNvZGVjLCBoZGFfbmlkX3QNCj4gPiA+ID4gPiAr bmlkLCBpbnQgZGV2X2lkLA0KPiA+ID4gPiA+ICAJCQkgICBib29sICphdWRpb19lbmFibGVkLCBj aGFyICpidWZmZXIsIGludCBtYXhfYnl0ZXMpICB7DQo+ID4gPiA+ID4gIAlzdHJ1Y3QgaGRhY19i dXMgKmJ1cyA9IGNvZGVjLT5idXM7IEBAIC0yNDksNyArMjUwLDcgQEAgaW50DQo+ID4gPiA+ID4g c25kX2hkYWNfYWNvbXBfZ2V0X2VsZChzdHJ1Y3QgaGRhY19kZXZpY2UgKmNvZGVjLCBoZGFfbmlk X3QgbmlkLA0KPiA+ID4gPiA+ICAJcG9ydCA9IHBpbjJwb3J0KGNvZGVjLCBuaWQpOw0KPiA+ID4g PiA+ICAJaWYgKHBvcnQgPCAwKQ0KPiA+ID4gPiA+ICAJCXJldHVybiAtRUlOVkFMOw0KPiA+ID4g PiA+IC0JcmV0dXJuIGFjb21wLT5vcHMtPmdldF9lbGQoYWNvbXAtPmRldiwgcG9ydCwgYXVkaW9f ZW5hYmxlZCwNCj4gPiA+ID4gPiArCXJldHVybiBhY29tcC0+b3BzLT5nZXRfZWxkKGFjb21wLT5k ZXYsIHBvcnQsIGRldl9pZCwNCj4gPiA+ID4gPiBhdWRpb19lbmFibGVkLA0KPiA+ID4gPiA+ICAJ CQkJICAgYnVmZmVyLCBtYXhfYnl0ZXMpOw0KPiA+ID4gPiA+ICB9DQo+ID4gPiA+ID4gIEVYUE9S VF9TWU1CT0xfR1BMKHNuZF9oZGFjX2Fjb21wX2dldF9lbGQpOw0KPiA+ID4gPiA+IGRpZmYgLS1n aXQgYS9zb3VuZC9wY2kvaGRhL3BhdGNoX2hkbWkuYw0KPiA+ID4gPiA+IGIvc291bmQvcGNpL2hk YS9wYXRjaF9oZG1pLmMgaW5kZXggZDBkNWFkOC4uMDc3ZDQ4YSAxMDA2NDQNCj4gPiA+ID4gPiAt LS0gYS9zb3VuZC9wY2kvaGRhL3BhdGNoX2hkbWkuYw0KPiA+ID4gPiA+ICsrKyBiL3NvdW5kL3Bj aS9oZGEvcGF0Y2hfaGRtaS5jDQo+ID4gPiA+ID4gQEAgLTE0ODUsNyArMTQ4NSw3IEBAIHN0YXRp YyB2b2lkIHN5bmNfZWxkX3ZpYV9hY29tcChzdHJ1Y3QNCj4gPiA+ID4gPiBoZGFfY29kZWMgKmNv ZGVjLA0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gIAltdXRleF9sb2NrKCZwZXJfcGluLT5sb2NrKTsN Cj4gPiA+ID4gPiAgCWVsZC0+bW9uaXRvcl9wcmVzZW50ID0gZmFsc2U7DQo+ID4gPiA+ID4gLQlz aXplID0gc25kX2hkYWNfYWNvbXBfZ2V0X2VsZCgmY29kZWMtPmNvcmUsIHBlcl9waW4tPnBpbl9u aWQsDQo+ID4gPiA+ID4gKwlzaXplID0gc25kX2hkYWNfYWNvbXBfZ2V0X2VsZCgmY29kZWMtPmNv cmUsIHBlcl9waW4tDQo+ID5waW5fbmlkLA0KPiA+ID4gPiA+ICstMSwNCj4gPiA+ID4gPiAgCQkJ CSAgICAgICZlbGQtPm1vbml0b3JfcHJlc2VudCwgZWxkLT5lbGRfYnVmZmVyLA0KPiA+ID4gPiA+ ICAJCQkJICAgICAgRUxEX01BWF9TSVpFKTsNCj4gPiA+ID4gPiAgCWlmIChzaXplID4gMCkgew0K PiA+ID4gPiA+IEBAIC0xNzM5LDcgKzE3MzksOCBAQCBzdGF0aWMgaW50DQo+ID4gPiA+ID4gZ2Vu ZXJpY19oZG1pX3BsYXliYWNrX3BjbV9wcmVwYXJlKHN0cnVjdCBoZGFfcGNtX3N0cmVhbSAqaGlu Zm8sDQo+ID4gPiA+ID4gIAkvKiBDYWxsIHN5bmNfYXVkaW9fcmF0ZSB0byBzZXQgdGhlIE4vQ1RT L00gbWFudWFsbHkgaWYgbmVjZXNzYXJ5ICovDQo+ID4gPiA+ID4gIAkvKiBUb2RvOiBhZGQgRFAx LjIgTVNUIGF1ZGlvIHN1cHBvcnQgbGF0ZXIgKi8NCj4gPiA+ID4gPiAgCWlmIChjb2RlY19oYXNf YWNvbXAoY29kZWMpKQ0KPiA+ID4gPiA+IC0JCXNuZF9oZGFjX3N5bmNfYXVkaW9fcmF0ZSgmY29k ZWMtPmNvcmUsIHBpbl9uaWQsIHJ1bnRpbWUtDQo+ID4gPiA+ID4gPnJhdGUpOw0KPiA+ID4gPiA+ ICsJCXNuZF9oZGFjX3N5bmNfYXVkaW9fcmF0ZSgmY29kZWMtPmNvcmUsIHBpbl9uaWQsIC0xLA0K PiA+ID4gPiA+ICsJCQkJCSBydW50aW1lLT5yYXRlKTsNCj4gPiA+ID4gPg0KPiA+ID4gPiA+ICAJ bm9uX3BjbSA9IGNoZWNrX25vbl9wY21fcGVyX2N2dChjb2RlYywgY3Z0X25pZCk7DQo+ID4gPiA+ ID4gIAltdXRleF9sb2NrKCZwZXJfcGluLT5sb2NrKTsNCj4gPiA+ID4gPiBAQCAtMjI4NSw3ICsy Mjg2LDcgQEAgc3RhdGljIHZvaWQgaGFzd2VsbF9zZXRfcG93ZXJfc3RhdGUoc3RydWN0DQo+ID4g PiA+ID4gaGRhX2NvZGVjICpjb2RlYywgaGRhX25pZF90IGZnLA0KPiA+ID4gPiA+ICAJc25kX2hk YV9jb2RlY19zZXRfcG93ZXJfdG9fYWxsKGNvZGVjLCBmZywgcG93ZXJfc3RhdGUpOyAgfQ0KPiA+ ID4gPiA+DQo+ID4gPiA+ID4gLXN0YXRpYyB2b2lkIGludGVsX3Bpbl9lbGRfbm90aWZ5KHZvaWQg KmF1ZGlvX3B0ciwgaW50IHBvcnQpDQo+ID4gPiA+ID4gK3N0YXRpYyB2b2lkIGludGVsX3Bpbl9l bGRfbm90aWZ5KHZvaWQgKmF1ZGlvX3B0ciwgaW50IHBvcnQsIGludA0KPiA+ID4gPiA+ICtkZXZf aWQpDQo+ID4gPiA+ID4gIHsNCj4gPiA+ID4gPiAgCXN0cnVjdCBoZGFfY29kZWMgKmNvZGVjID0g YXVkaW9fcHRyOw0KPiA+ID4gPiA+ICAJaW50IHBpbl9uaWQ7DQo+ID4gPiA+ID4gLS0NCj4gPiA+ ID4gPiAyLjUuMA0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18NCj4gPiA+ID4gPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0 DQo+ID4gPiA+ID4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZw0KPiA+ID4gPiA+IGh0 dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4DQo+ ID4gPiA+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQo+ ID4gPiA+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QNCj4gPiA+ID4gSW50ZWwtZ2Z4QGxpc3RzLmZy ZWVkZXNrdG9wLm9yZw0KPiA+ID4gPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2ludGVsLWdmeA0KPiA+DQo+ID4gX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18NCj4gPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0DQo+ID4g SW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZw0KPiA+IGh0dHBzOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4DQoNCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50 ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=