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: Fri, 12 Aug 2016 04:28:09 +0000 Message-ID: <1470976951.10941.30.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> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTP id 89D7E6E9A4 for ; Fri, 12 Aug 2016 04:28:11 +0000 (UTC) In-Reply-To: <20160811073911.GE4329@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 T24gVGh1LCAyMDE2LTA4LTExIGF0IDEwOjM5ICswMzAwLCBWaWxsZSBTeXJqw6Rsw6Qgd3JvdGU6 DQo+IE9uIFRodSwgQXVnIDExLCAyMDE2IGF0IDA3OjEwOjM5QU0gKzAwMDAsIFBhbmRpeWFuLCBE aGluYWthcmFuIHdyb3RlOg0KPiA+IE9uIFRodSwgMjAxNi0wOC0xMSBhdCAwOToyNiArMDMwMCwg VmlsbGUgU3lyasOkbMOkIHdyb3RlOg0KPiA+ID4gT24gV2VkLCBBdWcgMTAsIDIwMTYgYXQgMTI6 NDE6NTdQTSAtMDcwMCwgRGhpbmFrYXJhbiBQYW5kaXlhbiB3cm90ZToNCj4gPiA+ID4gRFAgTVNU IHByb3ZpZGVzIHRoZSBjYXBhYmlsaXR5IHRvIHNlbmQgbXVsdGlwbGUgdmlkZW8gYW5kIGF1ZGlv IHN0cmVhbXMNCj4gPiA+ID4gdGhyb3VnaCBhIHNpbmdsZSBwb3J0LiBUaGlzIHJlcXVpcmVzIHRo ZSBBUEkncyBiZXR3ZWVuIGk5MTUgYW5kIGF1ZGlvDQo+ID4gPiA+IGRyaXZlcnMgdG8gZGlzdGlu Z3Vpc2ggYmV0d2VlbiBtdWx0aXBsZSBhdWRpbyBjYXBhYmxlIGRpc3BsYXlzIHRoYXQgY2FuIGJl DQo+ID4gPiA+IGNvbm5lY3RlZCB0byBhIHBvcnQuIEN1cnJlbnRseSBvbmx5IHRoZSBwb3J0IGlk ZW50aXR5IGlzIHNoYXJlZCBpbiB0aGUNCj4gPiA+ID4gQVBJcy4gVGhpcyBwYXRjaCBhZGRzIHN1 cHBvcnQgZm9yIE1TVCB3aXRoIGFuIGFkZGl0aW9uYWwgcGFyYW1ldGVyDQo+ID4gPiA+ICdpbnQg cGlwZScuICBUaGUgZXhpc3RpbmcgcGFyYW1ldGVyICdwb3J0JyBkb2VzIG5vdCBjaGFuZ2UgaXQn cyBtZWFuaW5nLg0KPiA+ID4gPiANCj4gPiA+ID4gcGlwZSA9DQo+ID4gPiA+IAlNU1QJOiBkaXNw bGF5IHBpcGUgdGhhdCB0aGUgc3RyZWFtIG9yaWdpbmF0ZXMgZnJvbQ0KPiA+ID4gPiAJTm9uLU1T VAk6IC0xDQo+ID4gPiA+IA0KPiA+ID4gPiBBZmZlY3RlZCBBUElzOg0KPiA+ID4gPiBzdHJ1Y3Qg aTkxNV9hdWRpb19jb21wb25lbnRfb3BzDQo+ID4gPiA+IC0gICAgICAgaW50ICgqc3luY19hdWRp b19yYXRlKShzdHJ1Y3QgZGV2aWNlICosIGludCBwb3J0LCBpbnQgcmF0ZSk7DQo+ID4gPiA+ICsJ aW50ICgqc3luY19hdWRpb19yYXRlKShzdHJ1Y3QgZGV2aWNlICosIGludCBwb3J0LCBpbnQgcGlw ZSwNCj4gPiA+ID4gKwkgICAgIGludCByYXRlKTsNCj4gPiA+ID4gDQo+ID4gPiA+IC0gICAgICAg aW50ICgqZ2V0X2VsZCkoc3RydWN0IGRldmljZSAqLCBpbnQgcG9ydCwgYm9vbCAqZW5hYmxlZCwN Cj4gPiA+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqYnVmLCBpbnQg bWF4X2J5dGVzKTsNCj4gPiA+ID4gKyAgICAgICBpbnQgKCpnZXRfZWxkKShzdHJ1Y3QgZGV2aWNl ICosIGludCBwb3J0LCBpbnQgcGlwZSwNCj4gPiA+ID4gKwkJICAgICAgIGJvb2wgKmVuYWJsZWQs IHVuc2lnbmVkIGNoYXIgKmJ1ZiwgaW50IG1heF9ieXRlcyk7DQo+ID4gPiA+IA0KPiA+ID4gPiBz dHJ1Y3QgaTkxNV9hdWRpb19jb21wb25lbnRfYXVkaW9fb3BzDQo+ID4gPiA+IC0gICAgICAgdm9p ZCAoKnBpbl9lbGRfbm90aWZ5KSh2b2lkICphdWRpb19wdHIsIGludCBwb3J0KTsNCj4gPiA+ID4g KyAgICAgICB2b2lkICgqcGluX2VsZF9ub3RpZnkpKHZvaWQgKmF1ZGlvX3B0ciwgaW50IHBvcnQs IGludCBwaXBlKTsNCj4gPiA+ID4gDQo+ID4gPiA+IFRoaXMgcGF0Y2ggbWFrZXMgZHVtbXkgY2hh bmdlcyBpbiB0aGUgYXVkaW8gZHJpdmVycyAoTGliaW4pIGZvciBidWlsZCB0bw0KPiA+ID4gPiBz dWNjZWVkLiBUaGUgYXVkaW8gc2lkZSBkcml2ZXJzIHdpbGwgc2VuZCB0aGUgcmlnaHQgJ3BpcGUn IHZhbHVlcyBpbg0KPiA+ID4gPiBwYXRjaGVzIHRoYXQgd2lsbCBmb2xsb3cuDQo+ID4gPiA+IA0K PiA+ID4gPiB2MjoNCj4gPiA+ID4gUmVuYW1lZCB0aGUgbmV3IEFQSSBwYXJhbWV0ZXIgZnJvbSAn ZGV2X2lkJyB0byAncGlwZScuIChKaW0sIFZpbGxlKQ0KPiA+ID4gPiBJbmNsdWRlZCBBc29jIGRy aXZlciBBUEkgY29tcGF0aWJpbGl0eSBjaGFuZ2VzIGZyb20gSmVlamEuDQo+ID4gPiA+IEFkZGVk IFdBUk5fT04oKSBmb3IgaW52YWxpZCBwaXBlIGluIGdldF9zYXZlZF9lbmNvZGVyKCkuIChUYWth c2hpKQ0KPiA+ID4gPiBBZGRlZCBjb21tZW50IGZvciBhdl9lbmNfbWFwW10gZGVmaW5pdGlvbi4g KFRha2FzaGkpDQo+ID4gPiA+IA0KPiA+ID4gPiB2MzoNCj4gPiA+ID4gRml4ZWQgbG9naWMgZXJy b3IgaW50cm9kdWNlZCB3aGlsZSByZW5hbWluZyAnZGV2X2lkJyBhcyAncGlwZScgKFZpbGxlKQ0K PiA+ID4gPiBSZW5hbWVkIGdldF9zYXZlZF9lbmNvZGVyKCkgdG8gZ2V0X3NhdmVkX2VuYygpIHRv IHJlZHVjZSBsaW5lIGxlbmd0aA0KPiA+ID4gPiANCj4gPiA+ID4gU2lnbmVkLW9mZi1ieTogRGhp bmFrYXJhbiBQYW5kaXlhbiA8ZGhpbmFrYXJhbi5wYW5kaXlhbkBpbnRlbC5jb20+DQo+ID4gPiA+ IC0tLQ0KPiA+ID4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICB8ICAzICst DQo+ID4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5jIHwgOTMgKysrKysr KysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0NCj4gPiA+ID4gIGluY2x1ZGUvZHJtL2k5 MTVfY29tcG9uZW50LmggICAgICAgfCAgNiArLS0NCj4gPiA+ID4gIGluY2x1ZGUvc291bmQvaGRh X2k5MTUuaCAgICAgICAgICAgfCAxMSArKystLQ0KPiA+ID4gPiAgc291bmQvaGRhL2hkYWNfaTkx NS5jICAgICAgICAgICAgICB8ICA5ICsrLS0NCj4gPiA+ID4gIHNvdW5kL3BjaS9oZGEvcGF0Y2hf aGRtaS5jICAgICAgICAgfCAgNyArLS0NCj4gPiA+ID4gIHNvdW5kL3NvYy9jb2RlY3MvaGRhY19o ZG1pLmMgICAgICAgfCAgMiArLQ0KPiA+ID4gPiAgNyBmaWxlcyBjaGFuZ2VkLCA4NiBpbnNlcnRp b25zKCspLCA0NSBkZWxldGlvbnMoLSkNCj4gPiA+ID4gDQo+ID4gPiA+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuaA0KPiA+ID4gPiBpbmRleCBjMzZkMTc2Li44ZTRhODhmIDEwMDY0NA0KPiA+ID4gPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oDQo+ID4gPiA+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgNCj4gPiA+ID4gQEAgLTIwMzYsNyArMjAzNiw4IEBA IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlIHsNCj4gPiA+ID4gIAkvKiBwZXJmb3JtIFBIWSBzdGF0 ZSBzYW5pdHkgY2hlY2tzPyAqLw0KPiA+ID4gPiAgCWJvb2wgY2h2X3BoeV9hc3NlcnRbMl07DQo+ ID4gPiA+ICANCj4gPiA+ID4gLQlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZGlnX3BvcnRfbWFwW0k5 MTVfTUFYX1BPUlRTXTsNCj4gPiA+ID4gKwkvKiBVc2VkIHRvIHNhdmUgdGhlIHBpcGUtdG8tZW5j b2RlciBtYXBwaW5nIGZvciBhdWRpbyAqLw0KPiA+ID4gPiArCXN0cnVjdCBpbnRlbF9lbmNvZGVy ICphdl9lbmNfbWFwW0k5MTVfTUFYX1BJUEVTXTsNCj4gPiA+ID4gIA0KPiA+ID4gPiAgCS8qDQo+ ID4gPiA+ICAJICogTk9URTogVGhpcyBpcyB0aGUgZHJpMS91bXMgZHVuZ2VvbiwgZG9uJ3QgYWRk IHN0dWZmIGhlcmUuIFlvdXIgcGF0Y2gNCj4gPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2F1ZGlvLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRp by5jDQo+ID4gPiA+IGluZGV4IGVmMjA4NzUuLmE3NDY3ZWEgMTAwNjQ0DQo+ID4gPiA+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F1ZGlvLmMNCj4gPiA+ID4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfYXVkaW8uYw0KPiA+ID4gPiBAQCAtNTAwLDYgKzUwMCw3IEBA IHZvaWQgaW50ZWxfYXVkaW9fY29kZWNfZW5hYmxlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICppbnRl bF9lbmNvZGVyKQ0KPiA+ID4gPiAgCXN0cnVjdCBpOTE1X2F1ZGlvX2NvbXBvbmVudCAqYWNvbXAg PSBkZXZfcHJpdi0+YXVkaW9fY29tcG9uZW50Ow0KPiA+ID4gPiAgCXN0cnVjdCBpbnRlbF9kaWdp dGFsX3BvcnQgKmludGVsX2RpZ19wb3J0ID0gZW5jX3RvX2RpZ19wb3J0KGVuY29kZXIpOw0KPiA+ ID4gPiAgCWVudW0gcG9ydCBwb3J0ID0gaW50ZWxfZGlnX3BvcnQtPnBvcnQ7DQo+ID4gPiA+ICsJ ZW51bSBwaXBlIHBpcGUgPSBjcnRjLT5waXBlOw0KPiA+ID4gPiAgDQo+ID4gPiA+ICAJY29ubmVj dG9yID0gZHJtX3NlbGVjdF9lbGQoZW5jb2Rlcik7DQo+ID4gPiA+ICAJaWYgKCFjb25uZWN0b3Ip DQo+ID4gPiA+IEBAIC01MjQsMTIgKzUyNSwxOCBAQCB2b2lkIGludGVsX2F1ZGlvX2NvZGVjX2Vu YWJsZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlcikNCj4gPiA+ID4gIA0KPiA+ ID4gPiAgCW11dGV4X2xvY2soJmRldl9wcml2LT5hdl9tdXRleCk7DQo+ID4gPiA+ICAJaW50ZWxf ZW5jb2Rlci0+YXVkaW9fY29ubmVjdG9yID0gY29ubmVjdG9yOw0KPiA+ID4gPiArDQo+ID4gPiA+ ICAJLyogcmVmZXJyZWQgaW4gYXVkaW8gY2FsbGJhY2tzICovDQo+ID4gPiA+IC0JZGV2X3ByaXYt PmRpZ19wb3J0X21hcFtwb3J0XSA9IGludGVsX2VuY29kZXI7DQo+ID4gPiA+ICsJZGV2X3ByaXYt PmF2X2VuY19tYXBbcGlwZV0gPSBpbnRlbF9lbmNvZGVyOw0KPiA+ID4gPiAgCW11dGV4X3VubG9j aygmZGV2X3ByaXYtPmF2X211dGV4KTsNCj4gPiA+ID4gIA0KPiA+ID4gPiArCS8qIGF1ZGlvIGRy aXZlcnMgZXhwZWN0IHBpcGUgPSAtMSB0byBpbmRpY2F0ZSBOb24tTVNUIGNhc2VzICovDQo+ID4g PiA+ICsJaWYgKGludGVsX2VuY29kZXItPnR5cGUgIT0gSU5URUxfT1VUUFVUX0RQX01TVCkNCj4g PiA+ID4gKwkJcGlwZSA9IC0xOw0KPiA+ID4gPiArDQo+ID4gPiA+ICAJaWYgKGFjb21wICYmIGFj b21wLT5hdWRpb19vcHMgJiYgYWNvbXAtPmF1ZGlvX29wcy0+cGluX2VsZF9ub3RpZnkpDQo+ID4g PiA+IC0JCWFjb21wLT5hdWRpb19vcHMtPnBpbl9lbGRfbm90aWZ5KGFjb21wLT5hdWRpb19vcHMt PmF1ZGlvX3B0ciwgKGludCkgcG9ydCk7DQo+ID4gPiA+ICsJCWFjb21wLT5hdWRpb19vcHMtPnBp bl9lbGRfbm90aWZ5KGFjb21wLT5hdWRpb19vcHMtPmF1ZGlvX3B0ciwNCj4gPiA+ID4gKwkJCQkJ CSAoaW50KSBwb3J0LCAoaW50KSBwaXBlKTsNCj4gPiA+ID4gIH0NCj4gPiA+ID4gIA0KPiA+ID4g PiAgLyoqDQo+ID4gPiA+IEBAIC01NDIsMjIgKzU0OSwyOSBAQCB2b2lkIGludGVsX2F1ZGlvX2Nv ZGVjX2VuYWJsZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlcikNCj4gPiA+ID4g IHZvaWQgaW50ZWxfYXVkaW9fY29kZWNfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50 ZWxfZW5jb2RlcikNCj4gPiA+ID4gIHsNCj4gPiA+ID4gIAlzdHJ1Y3QgZHJtX2VuY29kZXIgKmVu Y29kZXIgPSAmaW50ZWxfZW5jb2Rlci0+YmFzZTsNCj4gPiA+ID4gKwlzdHJ1Y3QgaW50ZWxfY3J0 YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoZW5jb2Rlci0+Y3J0Yyk7DQo+ID4gPiA+ICAJc3RydWN0 IGRybV9kZXZpY2UgKmRldiA9IGVuY29kZXItPmRldjsNCj4gPiA+ID4gIAlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7DQo+ID4gPiA+ICAJc3RydWN0IGk5 MTVfYXVkaW9fY29tcG9uZW50ICphY29tcCA9IGRldl9wcml2LT5hdWRpb19jb21wb25lbnQ7DQo+ ID4gPiA+ICAJc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQgPSBlbmNf dG9fZGlnX3BvcnQoZW5jb2Rlcik7DQo+ID4gPiA+ICAJZW51bSBwb3J0IHBvcnQgPSBpbnRlbF9k aWdfcG9ydC0+cG9ydDsNCj4gPiA+ID4gKwllbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7DQo+ ID4gPiA+ICANCj4gPiA+ID4gIAlpZiAoZGV2X3ByaXYtPmRpc3BsYXkuYXVkaW9fY29kZWNfZGlz YWJsZSkNCj4gPiA+ID4gIAkJZGV2X3ByaXYtPmRpc3BsYXkuYXVkaW9fY29kZWNfZGlzYWJsZShp bnRlbF9lbmNvZGVyKTsNCj4gPiA+ID4gIA0KPiA+ID4gPiAgCW11dGV4X2xvY2soJmRldl9wcml2 LT5hdl9tdXRleCk7DQo+ID4gPiA+ICAJaW50ZWxfZW5jb2Rlci0+YXVkaW9fY29ubmVjdG9yID0g TlVMTDsNCj4gPiA+ID4gLQlkZXZfcHJpdi0+ZGlnX3BvcnRfbWFwW3BvcnRdID0gTlVMTDsNCj4g PiA+ID4gKwlkZXZfcHJpdi0+YXZfZW5jX21hcFtwaXBlXSA9IE5VTEw7DQo+ID4gPiA+ICAJbXV0 ZXhfdW5sb2NrKCZkZXZfcHJpdi0+YXZfbXV0ZXgpOw0KPiA+ID4gPiAgDQo+ID4gPiA+ICsJLyog YXVkaW8gZHJpdmVycyBleHBlY3QgcGlwZSA9IC0xIHRvIGluZGljYXRlIE5vbi1NU1QgY2FzZXMg Ki8NCj4gPiA+ID4gKwlpZiAoaW50ZWxfZW5jb2Rlci0+dHlwZSAhPSBJTlRFTF9PVVRQVVRfRFBf TVNUKQ0KPiA+ID4gPiArCQlwaXBlID0gLTE7DQo+ID4gPiA+ICsNCj4gPiA+ID4gIAlpZiAoYWNv bXAgJiYgYWNvbXAtPmF1ZGlvX29wcyAmJiBhY29tcC0+YXVkaW9fb3BzLT5waW5fZWxkX25vdGlm eSkNCj4gPiA+ID4gLQkJYWNvbXAtPmF1ZGlvX29wcy0+cGluX2VsZF9ub3RpZnkoYWNvbXAtPmF1 ZGlvX29wcy0+YXVkaW9fcHRyLCAoaW50KSBwb3J0KTsNCj4gPiA+ID4gKwkJYWNvbXAtPmF1ZGlv X29wcy0+cGluX2VsZF9ub3RpZnkoYWNvbXAtPmF1ZGlvX29wcy0+YXVkaW9fcHRyLA0KPiA+ID4g PiArCQkJCQkJIChpbnQpIHBvcnQsIChpbnQpIHBpcGUpOw0KPiA+ID4gPiAgfQ0KPiA+ID4gPiAg DQo+ID4gPiA+ICAvKioNCj4gPiA+ID4gQEAgLTYzMiwxNSArNjQ2LDM5IEBAIHN0YXRpYyBpbnQg aTkxNV9hdWRpb19jb21wb25lbnRfZ2V0X2NkY2xrX2ZyZXEoc3RydWN0IGRldmljZSAqZGV2KQ0K PiA+ID4gPiAgCXJldHVybiBkZXZfcHJpdi0+Y2RjbGtfZnJlcTsNCj4gPiA+ID4gIH0NCj4gPiA+ ID4gIA0KPiA+ID4gPiAtc3RhdGljIGludCBpOTE1X2F1ZGlvX2NvbXBvbmVudF9zeW5jX2F1ZGlv X3JhdGUoc3RydWN0IGRldmljZSAqZGV2LA0KPiA+ID4gPiAtCQkJCQkJaW50IHBvcnQsIGludCBy YXRlKQ0KPiA+ID4gPiArc3RhdGljIHN0cnVjdCBpbnRlbF9lbmNvZGVyICpnZXRfc2F2ZWRfZW5j KHN0cnVjdCBpbnRlbF9lbmNvZGVyICphdl9lbmNfbWFwW10sDQo+ID4gPiA+ICsJCQkJCSAgICAg ICBpbnQgcG9ydCwgaW50IHBpcGUpDQo+ID4gPiA+ICt7DQo+ID4gPiA+ICsJc3RydWN0IGRybV9l bmNvZGVyICplbmNvZGVyOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsJaWYgKFdBUk5fT04ocGlwZSA+ PSBJOTE1X01BWF9QSVBFUykpDQo+ID4gPiA+ICsJCXJldHVybiBOVUxMOw0KPiA+ID4gPiArDQo+ ID4gPiA+ICsJLyogTVNUICovDQo+ID4gPiA+ICsJaWYgKHBpcGUgIT0gLTEpDQo+ID4gPiANCj4g PiA+IEknZCBtYWtlIHRoYXQgPCAwDQo+ID4gPiANCj4gPiBUaGFua3MgZm9yIHJldmlld2luZy4N Cj4gPiBEbyB5b3UgbWVhbiB0aGlzPyAtIGhhbmRsZSB0aGUgbm9uLU1TVCBicmFuY2ggZmlyc3Qg d2l0aCANCj4gPiANCj4gPiBpZiAocGlwZSA8IDApeyANCj4gPiAJZm9yX2VhY2hfcGlwZSgpew0K PiA+IA0KPiA+IAkJLi4uDQo+ID4gCX0NCj4gPiB9DQo+ID4gZWxzZSANCj4gPiAJcmV0dXJuIGF2 X2VuY19tYXBbcGlwZV07DQo+IA0KPiBTb3JyeSwgbm8uIEkgbGlrZSB5b3VyIGN1cnJlbnQgY29k ZSBzdHJ1Y3R1cmUsIHNvIHdoYXQgSSByZWFsbHkgbWVhbnQNCj4gd2FzICdwaXBlID49IDAnLCBz bzoNCj4gDQo+IGlmIChwaXBlID49IDApDQo+IAlyZXR1cm4gLi4uDQo+IA0KPiBmb3JfZWFjaF9w aXBlKCkNCj4gCS4uLg0KPiAJDQo+IA0KDQpJJ2xsIG1ha2UgdGhpcyBjaGFuZ2UuDQoNCj4gPiAN Cj4gPiA+ID4gKwkJcmV0dXJuIGF2X2VuY19tYXBbcGlwZV07DQo+ID4gPiA+ICsNCj4gPiA+ID4g KwkvKiBOb24tTVNUICovDQo+ID4gPiA+ICsJZm9yIChwaXBlID0gUElQRV9BOyBwaXBlIDwgSTkx NV9NQVhfUElQRVM7IHBpcGUrKykgew0KPiA+ID4gDQo+ID4gPiBmb3JfZWFjaF9waXBlKCkgd291 bGQgYmUgbmljZXIuDQo+ID4gPiANCj4gPiA+ID4gKwkJaWYgKCFhdl9lbmNfbWFwW3BpcGVdKQ0K PiA+ID4gPiArCQkJY29udGludWU7DQo+ID4gPiA+ICsNCj4gPiA+ID4gKwkJZW5jb2RlciA9ICZh dl9lbmNfbWFwW3BpcGVdLT5iYXNlOw0KPiA+ID4gPiArCQlpZiAocG9ydCA9PSBlbmNfdG9fZGln X3BvcnQoZW5jb2RlciktPnBvcnQpDQo+ID4gPiA+ICsJCQlyZXR1cm4gYXZfZW5jX21hcFtwaXBl XTsNCj4gPiA+ID4gKwl9DQo+ID4gPiA+ICsNCj4gPiA+ID4gKwlyZXR1cm4gTlVMTDsNCj4gPiA+ ID4gK30NCj4gPiA+ID4gKw0KPiA+ID4gPiArc3RhdGljIGludCBpOTE1X2F1ZGlvX2NvbXBvbmVu dF9zeW5jX2F1ZGlvX3JhdGUoc3RydWN0IGRldmljZSAqZGV2LCBpbnQgcG9ydCwNCj4gPiA+ID4g KwkJCQkJCWludCBwaXBlLCBpbnQgcmF0ZSkNCj4gPiA+ID4gIHsNCj4gPiA+ID4gIAlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXZfdG9faTkxNShkZXYpOw0KPiA+ID4gPiAg CXN0cnVjdCBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyOw0KPiA+ID4gPiAgCXN0cnVjdCBp bnRlbF9jcnRjICpjcnRjOw0KPiA+ID4gPiAgCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2Rl Ow0KPiA+ID4gPiAgCXN0cnVjdCBpOTE1X2F1ZGlvX2NvbXBvbmVudCAqYWNvbXAgPSBkZXZfcHJp di0+YXVkaW9fY29tcG9uZW50Ow0KPiA+ID4gPiAtCWVudW0gcGlwZSBwaXBlID0gSU5WQUxJRF9Q SVBFOw0KPiA+ID4gPiAgCXUzMiB0bXA7DQo+ID4gPiA+ICAJaW50IG47DQo+ID4gPiA+ICAJaW50 IGVyciA9IDA7DQo+ID4gPiA+IEBAIC02NTQsMjUgKzY5MiwyMCBAQCBzdGF0aWMgaW50IGk5MTVf YXVkaW9fY29tcG9uZW50X3N5bmNfYXVkaW9fcmF0ZShzdHJ1Y3QgZGV2aWNlICpkZXYsDQo+ID4g PiA+ICANCj4gPiA+ID4gIAlpOTE1X2F1ZGlvX2NvbXBvbmVudF9nZXRfcG93ZXIoZGV2KTsNCj4g PiA+ID4gIAltdXRleF9sb2NrKCZkZXZfcHJpdi0+YXZfbXV0ZXgpOw0KPiA+ID4gPiArDQo+ID4g PiA+ICAJLyogMS4gZ2V0IHRoZSBwaXBlICovDQo+ID4gPiA+IC0JaW50ZWxfZW5jb2RlciA9IGRl dl9wcml2LT5kaWdfcG9ydF9tYXBbcG9ydF07DQo+ID4gPiA+IC0JLyogaW50ZWxfZW5jb2RlciBt aWdodCBiZSBOVUxMIGZvciBEUCBNU1QgKi8NCj4gPiA+ID4gKwlpbnRlbF9lbmNvZGVyID0gZ2V0 X3NhdmVkX2VuYyhkZXZfcHJpdi0+YXZfZW5jX21hcCwgcG9ydCwgcGlwZSk7DQo+ID4gPiA+ICAJ aWYgKCFpbnRlbF9lbmNvZGVyIHx8ICFpbnRlbF9lbmNvZGVyLT5iYXNlLmNydGMgfHwNCj4gPiA+ ID4gIAkgICAgaW50ZWxfZW5jb2Rlci0+dHlwZSAhPSBJTlRFTF9PVVRQVVRfSERNSSkgew0KPiA+ ID4gDQo+ID4gPiBEaWQgd2UgaGF2ZSBhIGZvbGxvd3VwIHBsYW5uZWQgdG8gZGVhbCB3aXRoIE1T VCBoZXJlPyBJIGtub3cgdGhlcmUncw0KPiA+ID4gdGhhdCBTU1QgTS9OIHBhdGNoIGZsb2F0aW5n IGFyb3VuZCwgYnV0IEkgdGhpbmsgd2UnbGwgd2FudCBpdCBmb3IgTVNUDQo+ID4gPiB0b28uDQo+ ID4gPiANCj4gPiBMb29rcyBsaWtlIExpYmluIFlhbmcgaXMgd29ya2luZyBvbiB0aGUgRFAgcGF0 Y2gsIEkgd2lsbCBjaGVjayB3aXRoIGhpbS4NCj4gPiANCj4gPiA+ID4gLQkJRFJNX0RFQlVHX0tN Uygibm8gdmFsaWQgcG9ydCAlY1xuIiwgcG9ydF9uYW1lKHBvcnQpKTsNCj4gPiA+ID4gKwkJRFJN X0RFQlVHX0tNUygiTm90IHZhbGlkIGZvciBwb3J0ICVjXG4iLCBwb3J0X25hbWUocG9ydCkpOw0K PiA+ID4gPiAgCQllcnIgPSAtRU5PREVWOw0KPiA+ID4gPiAgCQlnb3RvIHVubG9jazsNCj4gPiA+ ID4gIAl9DQo+ID4gPiA+ICsNCj4gPiA+ID4gKwkvKiBwaXBlIHBhc3NlZCBmcm9tIHRoZSBhdWRp byBkcml2ZXIgd2lsbCBiZSAtMSBmb3IgTm9uLU1TVCBjYXNlICovDQo+ID4gPiA+ICAJY3J0YyA9 IHRvX2ludGVsX2NydGMoaW50ZWxfZW5jb2Rlci0+YmFzZS5jcnRjKTsNCj4gPiA+ID4gIAlwaXBl ID0gY3J0Yy0+cGlwZTsNCj4gPiA+ID4gLQlpZiAocGlwZSA9PSBJTlZBTElEX1BJUEUpIHsNCj4g PiA+ID4gLQkJRFJNX0RFQlVHX0tNUygibm8gcGlwZSBmb3IgdGhlIHBvcnQgJWNcbiIsIHBvcnRf bmFtZShwb3J0KSk7DQo+ID4gPiA+IC0JCWVyciA9IC1FTk9ERVY7DQo+ID4gPiA+IC0JCWdvdG8g dW5sb2NrOw0KPiA+ID4gPiAtCX0NCj4gPiA+ID4gIA0KPiA+ID4gPiAtCURSTV9ERUJVR19LTVMo InBpcGUgJWMgY29ubmVjdHMgcG9ydCAlY1xuIiwNCj4gPiA+ID4gLQkJCQkgIHBpcGVfbmFtZShw aXBlKSwgcG9ydF9uYW1lKHBvcnQpKTsNCj4gPiA+ID4gIAltb2RlID0gJmNydGMtPmNvbmZpZy0+ YmFzZS5hZGp1c3RlZF9tb2RlOw0KPiA+ID4gPiAgDQo+ID4gPiA+ICAJLyogcG9ydCBtdXN0IGJl IHZhbGlkIG5vdywgb3RoZXJ3aXNlIHRoZSBwaXBlIHdpbGwgYmUgaW52YWxpZCAqLw0KPiA+ID4g PiBAQCAtNzA4LDcgKzc0MSw3IEBAIHN0YXRpYyBpbnQgaTkxNV9hdWRpb19jb21wb25lbnRfc3lu Y19hdWRpb19yYXRlKHN0cnVjdCBkZXZpY2UgKmRldiwNCj4gPiA+ID4gIH0NCj4gPiA+ID4gIA0K PiA+ID4gPiAgc3RhdGljIGludCBpOTE1X2F1ZGlvX2NvbXBvbmVudF9nZXRfZWxkKHN0cnVjdCBk ZXZpY2UgKmRldiwgaW50IHBvcnQsDQo+ID4gPiA+IC0JCQkJCWJvb2wgKmVuYWJsZWQsDQo+ID4g PiA+ICsJCQkJCWludCBwaXBlLCBib29sICplbmFibGVkLA0KPiA+ID4gPiAgCQkJCQl1bnNpZ25l ZCBjaGFyICpidWYsIGludCBtYXhfYnl0ZXMpDQo+ID4gPiA+ICB7DQo+ID4gPiA+ICAJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2X3RvX2k5MTUoZGV2KTsNCj4gPiA+ID4g QEAgLTcxNywxNiArNzUwLDIwIEBAIHN0YXRpYyBpbnQgaTkxNV9hdWRpb19jb21wb25lbnRfZ2V0 X2VsZChzdHJ1Y3QgZGV2aWNlICpkZXYsIGludCBwb3J0LA0KPiA+ID4gPiAgCWludCByZXQgPSAt RUlOVkFMOw0KPiA+ID4gPiAgDQo+ID4gPiA+ICAJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPmF2X211 dGV4KTsNCj4gPiA+ID4gLQlpbnRlbF9lbmNvZGVyID0gZGV2X3ByaXYtPmRpZ19wb3J0X21hcFtw b3J0XTsNCj4gPiA+ID4gLQkvKiBpbnRlbF9lbmNvZGVyIG1pZ2h0IGJlIE5VTEwgZm9yIERQIE1T VCAqLw0KPiA+ID4gPiAtCWlmIChpbnRlbF9lbmNvZGVyKSB7DQo+ID4gPiA+IC0JCXJldCA9IDA7 DQo+ID4gPiA+IC0JCSplbmFibGVkID0gaW50ZWxfZW5jb2Rlci0+YXVkaW9fY29ubmVjdG9yICE9 IE5VTEw7DQo+ID4gPiA+IC0JCWlmICgqZW5hYmxlZCkgew0KPiA+ID4gPiAtCQkJZWxkID0gaW50 ZWxfZW5jb2Rlci0+YXVkaW9fY29ubmVjdG9yLT5lbGQ7DQo+ID4gPiA+IC0JCQlyZXQgPSBkcm1f ZWxkX3NpemUoZWxkKTsNCj4gPiA+ID4gLQkJCW1lbWNweShidWYsIGVsZCwgbWluKG1heF9ieXRl cywgcmV0KSk7DQo+ID4gPiA+IC0JCX0NCj4gPiA+ID4gKw0KPiA+ID4gPiArCWludGVsX2VuY29k ZXIgPSBnZXRfc2F2ZWRfZW5jKGRldl9wcml2LT5hdl9lbmNfbWFwLCBwb3J0LCBwaXBlKTsNCj4g PiA+ID4gKwlpZiAoIWludGVsX2VuY29kZXIpIHsNCj4gPiA+ID4gKwkJRFJNX0RFQlVHX0tNUygi Tm90IHZhbGlkIGZvciBwb3J0ICVjXG4iLCBwb3J0X25hbWUocG9ydCkpOw0KPiA+ID4gDQo+ID4g PiBQcmludCB0aGUgcGlwZSBuYW1lIHRvbywgaWYgd2UgaGF2ZSBhIHZhbGlkIHBpcGU/DQo+ID4g PiANCj4gPiA+ID4gKwkJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+YXZfbXV0ZXgpOw0KPiA+ID4g PiArCQlyZXR1cm4gcmV0Ow0KPiA+ID4gPiArCX0NCj4gPiA+ID4gKw0KPiA+ID4gPiArCXJldCA9 IDA7DQo+ID4gPiA+ICsJKmVuYWJsZWQgPSBpbnRlbF9lbmNvZGVyLT5hdWRpb19jb25uZWN0b3Ig IT0gTlVMTDsNCj4gPiA+ID4gKwlpZiAoKmVuYWJsZWQpIHsNCj4gPiA+ID4gKwkJZWxkID0gaW50 ZWxfZW5jb2Rlci0+YXVkaW9fY29ubmVjdG9yLT5lbGQ7DQo+ID4gPiA+ICsJCXJldCA9IGRybV9l bGRfc2l6ZShlbGQpOw0KPiA+ID4gPiArCQltZW1jcHkoYnVmLCBlbGQsIG1pbihtYXhfYnl0ZXMs IHJldCkpOw0KPiA+ID4gPiAgCX0NCj4gPiA+ID4gIA0KPiA+ID4gPiAgCW11dGV4X3VubG9jaygm ZGV2X3ByaXYtPmF2X211dGV4KTsNCj4gPiA+ID4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2k5 MTVfY29tcG9uZW50LmggYi9pbmNsdWRlL2RybS9pOTE1X2NvbXBvbmVudC5oDQo+ID4gPiA+IGlu ZGV4IGI0NmZhMGUuLjU0NWM2ZTAgMTAwNjQ0DQo+ID4gPiA+IC0tLSBhL2luY2x1ZGUvZHJtL2k5 MTVfY29tcG9uZW50LmgNCj4gPiA+ID4gKysrIGIvaW5jbHVkZS9kcm0vaTkxNV9jb21wb25lbnQu aA0KPiA+ID4gPiBAQCAtNjQsNyArNjQsNyBAQCBzdHJ1Y3QgaTkxNV9hdWRpb19jb21wb25lbnRf b3BzIHsNCj4gPiA+ID4gIAkgKiBDYWxsZWQgZnJvbSBhdWRpbyBkcml2ZXIuIEFmdGVyIGF1ZGlv IGRyaXZlciBzZXRzIHRoZQ0KPiA+ID4gPiAgCSAqIHNhbXBsZSByYXRlLCBpdCB3aWxsIGNhbGwg dGhpcyBmdW5jdGlvbiB0byBzZXQgbi9jdHMNCj4gPiA+ID4gIAkgKi8NCj4gPiA+ID4gLQlpbnQg KCpzeW5jX2F1ZGlvX3JhdGUpKHN0cnVjdCBkZXZpY2UgKiwgaW50IHBvcnQsIGludCByYXRlKTsN Cj4gPiA+ID4gKwlpbnQgKCpzeW5jX2F1ZGlvX3JhdGUpKHN0cnVjdCBkZXZpY2UgKiwgaW50IHBv cnQsIGludCBwaXBlLCBpbnQgcmF0ZSk7DQo+ID4gPiA+ICAJLyoqDQo+ID4gPiA+ICAJICogQGdl dF9lbGQ6IGZpbGwgdGhlIGF1ZGlvIHN0YXRlIGFuZCBFTEQgYnl0ZXMgZm9yIHRoZSBnaXZlbiBw b3J0DQo+ID4gPiA+ICAJICoNCj4gPiA+ID4gQEAgLTc3LDcgKzc3LDcgQEAgc3RydWN0IGk5MTVf YXVkaW9fY29tcG9uZW50X29wcyB7DQo+ID4gPiA+ICAJICogTm90ZSB0aGF0IHRoZSByZXR1cm5l ZCBzaXplIG1heSBiZSBvdmVyIEBtYXhfYnl0ZXMuICBUaGVuIGl0DQo+ID4gPiA+ICAJICogaW1w bGllcyB0aGF0IG9ubHkgYSBwYXJ0IG9mIEVMRCBoYXMgYmVlbiBjb3BpZWQgdG8gdGhlIGJ1ZmZl ci4NCj4gPiA+ID4gIAkgKi8NCj4gPiA+ID4gLQlpbnQgKCpnZXRfZWxkKShzdHJ1Y3QgZGV2aWNl ICosIGludCBwb3J0LCBib29sICplbmFibGVkLA0KPiA+ID4gPiArCWludCAoKmdldF9lbGQpKHN0 cnVjdCBkZXZpY2UgKiwgaW50IHBvcnQsIGludCBwaXBlLCBib29sICplbmFibGVkLA0KPiA+ID4g PiAgCQkgICAgICAgdW5zaWduZWQgY2hhciAqYnVmLCBpbnQgbWF4X2J5dGVzKTsNCj4gPiA+ID4g IH07DQo+ID4gPiA+ICANCj4gPiA+ID4gQEAgLTk3LDcgKzk3LDcgQEAgc3RydWN0IGk5MTVfYXVk aW9fY29tcG9uZW50X2F1ZGlvX29wcyB7DQo+ID4gPiA+ICAJICogc3RhdHVzIGFjY29yZGluZ2x5 IChldmVuIHdoZW4gdGhlIEhEQSBjb250cm9sbGVyIGlzIGluIHBvd2VyIHNhdmUNCj4gPiA+ID4g IAkgKiBtb2RlKS4NCj4gPiA+ID4gIAkgKi8NCj4gPiA+ID4gLQl2b2lkICgqcGluX2VsZF9ub3Rp ZnkpKHZvaWQgKmF1ZGlvX3B0ciwgaW50IHBvcnQpOw0KPiA+ID4gPiArCXZvaWQgKCpwaW5fZWxk X25vdGlmeSkodm9pZCAqYXVkaW9fcHRyLCBpbnQgcG9ydCwgaW50IHBpcGUpOw0KPiA+ID4gPiAg fTsNCj4gPiA+ID4gIA0KPiA+ID4gPiAgLyoqDQo+ID4gPiA+IGRpZmYgLS1naXQgYS9pbmNsdWRl L3NvdW5kL2hkYV9pOTE1LmggYi9pbmNsdWRlL3NvdW5kL2hkYV9pOTE1LmgNCj4gPiA+ID4gaW5k ZXggNzk2Y2FiZi4uMDdmZDY0ZSAxMDA2NDQNCj4gPiA+ID4gLS0tIGEvaW5jbHVkZS9zb3VuZC9o ZGFfaTkxNS5oDQo+ID4gPiA+ICsrKyBiL2luY2x1ZGUvc291bmQvaGRhX2k5MTUuaA0KPiA+ID4g PiBAQCAtMTAsOCArMTAsOSBAQA0KPiA+ID4gPiAgaW50IHNuZF9oZGFjX3NldF9jb2RlY193YWtl dXAoc3RydWN0IGhkYWNfYnVzICpidXMsIGJvb2wgZW5hYmxlKTsNCj4gPiA+ID4gIGludCBzbmRf aGRhY19kaXNwbGF5X3Bvd2VyKHN0cnVjdCBoZGFjX2J1cyAqYnVzLCBib29sIGVuYWJsZSk7DQo+ ID4gPiA+ICB2b2lkIHNuZF9oZGFjX2k5MTVfc2V0X2JjbGsoc3RydWN0IGhkYWNfYnVzICpidXMp Ow0KPiA+ID4gPiAtaW50IHNuZF9oZGFjX3N5bmNfYXVkaW9fcmF0ZShzdHJ1Y3QgaGRhY19kZXZp Y2UgKmNvZGVjLCBoZGFfbmlkX3QgbmlkLCBpbnQgcmF0ZSk7DQo+ID4gPiA+IC1pbnQgc25kX2hk YWNfYWNvbXBfZ2V0X2VsZChzdHJ1Y3QgaGRhY19kZXZpY2UgKmNvZGVjLCBoZGFfbmlkX3Qgbmlk LA0KPiA+ID4gPiAraW50IHNuZF9oZGFjX3N5bmNfYXVkaW9fcmF0ZShzdHJ1Y3QgaGRhY19kZXZp Y2UgKmNvZGVjLCBoZGFfbmlkX3QgbmlkLA0KPiA+ID4gPiArCQkJICAgICBpbnQgcGlwZSwgaW50 IHJhdGUpOw0KPiA+ID4gPiAraW50IHNuZF9oZGFjX2Fjb21wX2dldF9lbGQoc3RydWN0IGhkYWNf ZGV2aWNlICpjb2RlYywgaGRhX25pZF90IG5pZCwgaW50IHBpcGUsDQo+ID4gPiA+ICAJCQkgICBi b29sICphdWRpb19lbmFibGVkLCBjaGFyICpidWZmZXIsIGludCBtYXhfYnl0ZXMpOw0KPiA+ID4g PiAgaW50IHNuZF9oZGFjX2k5MTVfaW5pdChzdHJ1Y3QgaGRhY19idXMgKmJ1cyk7DQo+ID4gPiA+ ICBpbnQgc25kX2hkYWNfaTkxNV9leGl0KHN0cnVjdCBoZGFjX2J1cyAqYnVzKTsNCj4gPiA+ID4g QEAgLTI5LDEzICszMCwxMyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgc25kX2hkYWNfaTkxNV9zZXRf YmNsayhzdHJ1Y3QgaGRhY19idXMgKmJ1cykNCj4gPiA+ID4gIHsNCj4gPiA+ID4gIH0NCj4gPiA+ ID4gIHN0YXRpYyBpbmxpbmUgaW50IHNuZF9oZGFjX3N5bmNfYXVkaW9fcmF0ZShzdHJ1Y3QgaGRh Y19kZXZpY2UgKmNvZGVjLA0KPiA+ID4gPiAtCQkJCQkgICBoZGFfbmlkX3QgbmlkLCBpbnQgcmF0 ZSkNCj4gPiA+ID4gKwkJCQkJICAgaGRhX25pZF90IG5pZCwgaW50IHBpcGUsIGludCByYXRlKQ0K PiA+ID4gPiAgew0KPiA+ID4gPiAgCXJldHVybiAwOw0KPiA+ID4gPiAgfQ0KPiA+ID4gPiAgc3Rh dGljIGlubGluZSBpbnQgc25kX2hkYWNfYWNvbXBfZ2V0X2VsZChzdHJ1Y3QgaGRhY19kZXZpY2Ug KmNvZGVjLCBoZGFfbmlkX3QgbmlkLA0KPiA+ID4gPiAtCQkJCQkgYm9vbCAqYXVkaW9fZW5hYmxl ZCwgY2hhciAqYnVmZmVyLA0KPiA+ID4gPiAtCQkJCQkgaW50IG1heF9ieXRlcykNCj4gPiA+ID4g KwkJCQkJIGludCBwaXBlLCBib29sICphdWRpb19lbmFibGVkLA0KPiA+ID4gPiArCQkJCQkgY2hh ciAqYnVmZmVyLCBpbnQgbWF4X2J5dGVzKQ0KPiA+ID4gPiAgew0KPiA+ID4gPiAgCXJldHVybiAt RU5PREVWOw0KPiA+ID4gPiAgfQ0KPiA+ID4gPiBkaWZmIC0tZ2l0IGEvc291bmQvaGRhL2hkYWNf aTkxNS5jIGIvc291bmQvaGRhL2hkYWNfaTkxNS5jDQo+ID4gPiA+IGluZGV4IGM5YWYwMjIuLmI5 OTk5NGIgMTAwNjQ0DQo+ID4gPiA+IC0tLSBhL3NvdW5kL2hkYS9oZGFjX2k5MTUuYw0KPiA+ID4g PiArKysgYi9zb3VuZC9oZGEvaGRhY19pOTE1LmMNCj4gPiA+ID4gQEAgLTIwMSw3ICsyMDEsOCBA QCBzdGF0aWMgaW50IHBpbjJwb3J0KHN0cnVjdCBoZGFjX2RldmljZSAqY29kZWMsIGhkYV9uaWRf dCBwaW5fbmlkKQ0KPiA+ID4gPiAgICogVGhpcyBmdW5jdGlvbiBzZXRzIE4vQ1RTIHZhbHVlIGJh c2VkIG9uIHRoZSBnaXZlbiBzYW1wbGUgcmF0ZS4NCj4gPiA+ID4gICAqIFJldHVybnMgemVybyBm b3Igc3VjY2Vzcywgb3IgYSBuZWdhdGl2ZSBlcnJvciBjb2RlLg0KPiA+ID4gPiAgICovDQo+ID4g PiA+IC1pbnQgc25kX2hkYWNfc3luY19hdWRpb19yYXRlKHN0cnVjdCBoZGFjX2RldmljZSAqY29k ZWMsIGhkYV9uaWRfdCBuaWQsIGludCByYXRlKQ0KPiA+ID4gPiAraW50IHNuZF9oZGFjX3N5bmNf YXVkaW9fcmF0ZShzdHJ1Y3QgaGRhY19kZXZpY2UgKmNvZGVjLCBoZGFfbmlkX3QgbmlkLA0KPiA+ ID4gPiArCQkJICAgICBpbnQgcGlwZSwgaW50IHJhdGUpDQo+ID4gPiANCj4gPiA+IEkgdGhvdWdo dCB5b3UnZCBzdGlsbCB3YW50IHRvIGNhbGwgaXQgJ2Rldl9pZCcgb24gdGhlIGhkYSBzaWRlLCBh bmQganVzdA0KPiA+ID4gZG8gdGhlIGRldl9pZC0+cGlwZSBjb252ZXJzaW9uIGhlcmUgbmV4dCB0 byB0aGUgcGluLT5wb3J0IGNvbnZlcnNpb24/DQo+ID4gPiBKdXN0IGZpZ3VyZWQgdGhhdCB3b3Vs ZCBiZSBsZXNzIGNvbmZ1c2luZyBmb3IgcGVvcGxlIHdobyBhcmUganVzdCBmYW1pbGlhcg0KPiA+ ID4gd2l0aCBoZGEgYW5kIG5vdCBpOTE1Lg0KPiA+ID4gDQo+ID4gWWVhaCwgdGhhdCBtYWtlcyBz ZW5zZS4gDQo+ID4gDQo+ID4gPiBBbnl3YXlzLCB0aGUgcGF0Y2ggbG9va3MgcHJldHR5IGdvb2Qg dG8gbWUgZnJvbSB0aGUgaTkxNSBQT1YuIFdoZXRoZXINCj4gPiA+IHlvdSB3YW50IHRvIGRvIHRo b3NlIHNtYWxsIGNoYW5nZXMgSSBwcm9wb3NlZCBpcyB1cCB0byB5b3UsIGFuZCBlaXRoZXINCj4g PiA+IHdheSB0aGUgaTkxNSBwYXJ0cyBhcmUNCj4gPiA+IFJldmlld2VkLWJ5OiBWaWxsZSBTeXJq w6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPg0KPiA+ID4gDQo+ID4gDQo+ID4g SSBoYXZlIGFzc3VtZWQgZW5jX3RvX2RpZ19wb3J0KCkgd29ya3MgZm9yIE1TVCBlbmNvZGVycy4g RG8geW91IHRoaW5rDQo+ID4gaXQncyBnb29kIGlkZWEgdG8gaGF2ZSB0aGlzDQo+ID4gaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvYXJjaGl2ZXMvaW50ZWwtZ2Z4LzIwMTYtQXVndXN0LzEw Mjk5NC5odG1sDQo+ID4gbm93Pw0KPiANCj4gT2ggSSBmb3Jnb3QgYWJvdXQgdGhhdCBwYXJ0LiBJ J20gbm90IHJlYWxseSBleGNpdGVkIGFib3V0IHRoYXQgcGF0Y2guDQo+IEknZCBwcmVmZXIgdGhh dCBwZW9wbGUgaGF2ZSB0byB0aGluayBhIGJpdCB3aGVuIGRlYWxpbmcgd2l0aCBNU1QNCj4gZW5j b2RlcnMsIG90aGVyd2lzZSB0aGV5IG1pZ2h0IGFzc3VtZSB0aGV5IHdvcmsganVzdCBsaWtlIGFu eSBvdGhlcg0KPiBlbmNvZGVyLg0KPiANCj4gU28gSSdkIHByZWZlciB0aGF0IHlvdSBleHBsaWNp dGx5IGhhbmRsZSB0aGUgTVNUIGNhc2Ugd2hlbiBsb29raW5nIHVwDQo+IHRoZSBlbmNvZGVyLiBG b3IgeW91ciBhdWRpbyB1c2UgY2FzZSwgSSB0aGluayB5b3UganVzdCBuZWVkIHRoZSAncG9ydCcN Cj4gaW5mb3JtYXRpb24gZnJvbSB0aGUgZGlnX3BvcnQsIG5vPyBJIHRoaW5rIG1ha2luZyB0aGF0 IHBhcnQgZ2VuZXJpYyBpc24ndA0KPiBhIGh1Z2UgcHJvYmxlbSBzaW5jZSB0aGF0IHdheSBhdCBs ZWFzdCB5b3UncmUgbm90IGdldHRpbmcgeW91ciBoYW5kcw0KPiAgb24gYSBkaWdfcG9ydCBzdHJ1 Y3R1cmUgdGhhdCB5b3UgZG9uJ3QgcmVhbGx5IG93bi4NCj4gDQo+IFNvIHlvdSBjb3VsZCBhbG1v c3QgdXNlIGludGVsX2RkaV9nZXRfZW5jb2Rlcl9wb3J0KCksIGV4Y2VwdCB1c2luZyBhDQo+IERE SSBzcGVjaWZpYyBmdW5jdGlvbiBpbiBnZW5lcmljIGNvZGUgaXNuJ3QgdmVyeSBuaWNlLiBXZSBj b3VsZCBleHRyYWN0DQo+IHRoZSBnZW5lcmljIHBhcnQgdG8gYSBzZXBhcmF0ZSBmdW5jdGlvbiwg bGlrZSBzbzoNCj4gDQo+IGVudW0gcG9ydCBpbnRlbF9lbmNvZGVyX2dldF9wb3J0KHN0cnVjdCBp bnRlbF9lbmNvZGVyICplbmNvZGVyKQ0KPiB7DQo+ICAgICAgICAgc3dpdGNoIChlbmNvZGVyLT50 eXBlKSB7DQo+ICAgICAgICAgY2FzZSBJTlRFTF9PVVRQVVRfRFBfTVNUOg0KPiAgICAgICAgICAg ICAgICAgcmV0dXJuIGVuY190b19tc3QoJmVuY29kZXItPmJhc2UpLT5wcmltYXJ5LT5wb3J0Ow0K PiAgICAgICAgIGNhc2UgSU5URUxfT1VUUFVUX0RQOg0KPiAgICAgICAgIGNhc2UgSU5URUxfT1VU UFVUX0VEUDoNCj4gICAgICAgICBjYXNlIElOVEVMX09VVFBVVF9IRE1JOg0KPiAgICAgICAgIGNh c2UgSU5URUxfT1VUUFVUX1VOS05PV046DQo+ICAgICAgICAgICAgICAgICByZXR1cm4gZW5jX3Rv X2RpZ19wb3J0KCZlbmNvZGVyLT5iYXNlKS0+cG9ydDsNCj4gICAgICAgICBkZWZhdWx0Og0KPiAg ICAgICAgICAgICAgICAgTUlTU0lOR19DQVNFKGVuY29kZXItPnR5cGUpOw0KPiAgICAgICAgICAg ICAgICAgcmV0dXJuIFBPUlRfQTsNCj4gICAgICAgICB9DQo+IH0NCj4gDQo+IGVudW0gcG9ydCBp bnRlbF9kZGlfZ2V0X2VuY29kZXJfcG9ydChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikN Cj4gew0KPiAgICAgICAgIHN3aXRjaCAoZW5jb2Rlci0+dHlwZSkgew0KPiAgICAgICAgIGNhc2Ug SU5URUxfT1VUUFVUX0FOQUxPRzoNCj4gCQlyZXR1cm4gUE9SVF9FOw0KPiAgICAgICAgIGRlZmF1 bHQ6DQo+IAkJcmV0dXJuIGludGVsX2VuY29kZXJfZ2V0X3BvcnQoZW5jb2Rlcik7DQo+ICAgICAg ICAgfQ0KPiB9DQoNCg0KSSBsaWtlIHRoZSBpZGVhIG9mIG5vdCBwYXNzaW5nIHRoZSBwb2ludGVy IHRvIGludGVsX2RpZ19wb3J0LiBCdXQsIHRoZQ0KZ2VuZXJpYyBuYW1pbmcgb2YgaW50ZWxfZW5j b2Rlcl9nZXRfcG9ydCgpIHNvdW5kcyBsaWtlIGl0IHNob3VsZCBoYW5kbGUNCkRESSBhbmQgTm9u LURESSBwbGF0Zm9ybXMuIENhbiB3ZSBqdXN0IGhhdmUgaW50ZWxfZW5jb2Rlcl9nZXRfcG9ydCgp Pw0KSU9XLCByZW5hbWUgaW50ZWxfZGRpX2dldF9lbmNvZGVyX3BvcnQoKSB0byBpbnRlbF9lbmNv ZGVyX2dldF9wb3J0KCkgYW5kDQptb3ZlIGl0IG91dCBvZiBpbnRlbF9kZGkuYz8NCg0KDQo+IA0K PiBvciB5b3UgY291bGQganVzdCB5b3VyIG93biBmdW5jdGlvbiBmb3IgaW50ZWxfYXVkaW8uYyBh dCB0aGlzIHRpbWUsIGxpa2U6DQo+IA0KPiBzdGF0aWMgZW51bSBwb3J0IGVuY29kZXJfZ2V0X3Bv cnQoZW5jb2RlcikNCj4gew0KPiAJaWYgKGVuY29kZXItPnR5cGUgPT0gTVNUOw0KPiAJCXJldHVy biBlbmNfdG9fbXN0KCkuLi47DQo+IAllbHNlDQo+IAkJcmV0dXJuIGVuY190b19kaWdfcG9ydCgp Li4uOw0KPiB9DQo+IAkNCj4gDQo+IA0KPiA+ICANCj4gPiA+ID4gIHsNCj4gPiA+ID4gIAlzdHJ1 Y3QgaGRhY19idXMgKmJ1cyA9IGNvZGVjLT5idXM7DQo+ID4gPiA+ICAJc3RydWN0IGk5MTVfYXVk aW9fY29tcG9uZW50ICphY29tcCA9IGJ1cy0+YXVkaW9fY29tcG9uZW50Ow0KPiA+ID4gPiBAQCAt MjEyLDcgKzIxMyw3IEBAIGludCBzbmRfaGRhY19zeW5jX2F1ZGlvX3JhdGUoc3RydWN0IGhkYWNf ZGV2aWNlICpjb2RlYywgaGRhX25pZF90IG5pZCwgaW50IHJhdGUpDQo+ID4gPiA+ICAJcG9ydCA9 IHBpbjJwb3J0KGNvZGVjLCBuaWQpOw0KPiA+ID4gPiAgCWlmIChwb3J0IDwgMCkNCj4gPiA+ID4g IAkJcmV0dXJuIC1FSU5WQUw7DQo+ID4gPiA+IC0JcmV0dXJuIGFjb21wLT5vcHMtPnN5bmNfYXVk aW9fcmF0ZShhY29tcC0+ZGV2LCBwb3J0LCByYXRlKTsNCj4gPiA+ID4gKwlyZXR1cm4gYWNvbXAt Pm9wcy0+c3luY19hdWRpb19yYXRlKGFjb21wLT5kZXYsIHBvcnQsIHBpcGUsIHJhdGUpOw0KPiA+ ID4gPiAgfQ0KPiA+ID4gPiAgRVhQT1JUX1NZTUJPTF9HUEwoc25kX2hkYWNfc3luY19hdWRpb19y YXRlKTsNCj4gPiA+ID4gIA0KPiA+ID4gPiBAQCAtMjM2LDcgKzIzNyw3IEBAIEVYUE9SVF9TWU1C T0xfR1BMKHNuZF9oZGFjX3N5bmNfYXVkaW9fcmF0ZSk7DQo+ID4gPiA+ICAgKiB0aHVzIGl0IG1h eSBiZSBvdmVyIEBtYXhfYnl0ZXMuICBJZiBpdCdzIG92ZXIgQG1heF9ieXRlcywgaXQgaW1wbGll cw0KPiA+ID4gPiAgICogdGhhdCBvbmx5IGEgcGFydCBvZiBFTEQgYnl0ZXMgaGF2ZSBiZWVuIGZl dGNoZWQuDQo+ID4gPiA+ICAgKi8NCj4gPiA+ID4gLWludCBzbmRfaGRhY19hY29tcF9nZXRfZWxk KHN0cnVjdCBoZGFjX2RldmljZSAqY29kZWMsIGhkYV9uaWRfdCBuaWQsDQo+ID4gPiA+ICtpbnQg c25kX2hkYWNfYWNvbXBfZ2V0X2VsZChzdHJ1Y3QgaGRhY19kZXZpY2UgKmNvZGVjLCBoZGFfbmlk X3QgbmlkLCBpbnQgcGlwZSwNCj4gPiA+ID4gIAkJCSAgIGJvb2wgKmF1ZGlvX2VuYWJsZWQsIGNo YXIgKmJ1ZmZlciwgaW50IG1heF9ieXRlcykNCj4gPiA+ID4gIHsNCj4gPiA+ID4gIAlzdHJ1Y3Qg aGRhY19idXMgKmJ1cyA9IGNvZGVjLT5idXM7DQo+ID4gPiA+IEBAIC0yNDksNyArMjUwLDcgQEAg aW50IHNuZF9oZGFjX2Fjb21wX2dldF9lbGQoc3RydWN0IGhkYWNfZGV2aWNlICpjb2RlYywgaGRh X25pZF90IG5pZCwNCj4gPiA+ID4gIAlwb3J0ID0gcGluMnBvcnQoY29kZWMsIG5pZCk7DQo+ID4g PiA+ICAJaWYgKHBvcnQgPCAwKQ0KPiA+ID4gPiAgCQlyZXR1cm4gLUVJTlZBTDsNCj4gPiA+ID4g LQlyZXR1cm4gYWNvbXAtPm9wcy0+Z2V0X2VsZChhY29tcC0+ZGV2LCBwb3J0LCBhdWRpb19lbmFi bGVkLA0KPiA+ID4gPiArCXJldHVybiBhY29tcC0+b3BzLT5nZXRfZWxkKGFjb21wLT5kZXYsIHBv cnQsIHBpcGUsIGF1ZGlvX2VuYWJsZWQsDQo+ID4gPiA+ICAJCQkJICAgYnVmZmVyLCBtYXhfYnl0 ZXMpOw0KPiA+ID4gPiAgfQ0KPiA+ID4gPiAgRVhQT1JUX1NZTUJPTF9HUEwoc25kX2hkYWNfYWNv bXBfZ2V0X2VsZCk7DQo+ID4gPiA+IGRpZmYgLS1naXQgYS9zb3VuZC9wY2kvaGRhL3BhdGNoX2hk bWkuYyBiL3NvdW5kL3BjaS9oZGEvcGF0Y2hfaGRtaS5jDQo+ID4gPiA+IGluZGV4IGQwZDVhZDgu LjY3ODkwZGYgMTAwNjQ0DQo+ID4gPiA+IC0tLSBhL3NvdW5kL3BjaS9oZGEvcGF0Y2hfaGRtaS5j DQo+ID4gPiA+ICsrKyBiL3NvdW5kL3BjaS9oZGEvcGF0Y2hfaGRtaS5jDQo+ID4gPiA+IEBAIC0x NDg1LDcgKzE0ODUsNyBAQCBzdGF0aWMgdm9pZCBzeW5jX2VsZF92aWFfYWNvbXAoc3RydWN0IGhk YV9jb2RlYyAqY29kZWMsDQo+ID4gPiA+ICANCj4gPiA+ID4gIAltdXRleF9sb2NrKCZwZXJfcGlu LT5sb2NrKTsNCj4gPiA+ID4gIAllbGQtPm1vbml0b3JfcHJlc2VudCA9IGZhbHNlOw0KPiA+ID4g PiAtCXNpemUgPSBzbmRfaGRhY19hY29tcF9nZXRfZWxkKCZjb2RlYy0+Y29yZSwgcGVyX3Bpbi0+ cGluX25pZCwNCj4gPiA+ID4gKwlzaXplID0gc25kX2hkYWNfYWNvbXBfZ2V0X2VsZCgmY29kZWMt PmNvcmUsIHBlcl9waW4tPnBpbl9uaWQsIC0xLA0KPiA+ID4gPiAgCQkJCSAgICAgICZlbGQtPm1v bml0b3JfcHJlc2VudCwgZWxkLT5lbGRfYnVmZmVyLA0KPiA+ID4gPiAgCQkJCSAgICAgIEVMRF9N QVhfU0laRSk7DQo+ID4gPiA+ICAJaWYgKHNpemUgPiAwKSB7DQo+ID4gPiA+IEBAIC0xNzM5LDcg KzE3MzksOCBAQCBzdGF0aWMgaW50IGdlbmVyaWNfaGRtaV9wbGF5YmFja19wY21fcHJlcGFyZShz dHJ1Y3QgaGRhX3BjbV9zdHJlYW0gKmhpbmZvLA0KPiA+ID4gPiAgCS8qIENhbGwgc3luY19hdWRp b19yYXRlIHRvIHNldCB0aGUgTi9DVFMvTSBtYW51YWxseSBpZiBuZWNlc3NhcnkgKi8NCj4gPiA+ ID4gIAkvKiBUb2RvOiBhZGQgRFAxLjIgTVNUIGF1ZGlvIHN1cHBvcnQgbGF0ZXIgKi8NCj4gPiA+ ID4gIAlpZiAoY29kZWNfaGFzX2Fjb21wKGNvZGVjKSkNCj4gPiA+ID4gLQkJc25kX2hkYWNfc3lu Y19hdWRpb19yYXRlKCZjb2RlYy0+Y29yZSwgcGluX25pZCwgcnVudGltZS0+cmF0ZSk7DQo+ID4g PiA+ICsJCXNuZF9oZGFjX3N5bmNfYXVkaW9fcmF0ZSgmY29kZWMtPmNvcmUsIHBpbl9uaWQsIC0x LA0KPiA+ID4gPiArCQkJCQkgcnVudGltZS0+cmF0ZSk7DQo+ID4gPiA+ICANCj4gPiA+ID4gIAlu b25fcGNtID0gY2hlY2tfbm9uX3BjbV9wZXJfY3Z0KGNvZGVjLCBjdnRfbmlkKTsNCj4gPiA+ID4g IAltdXRleF9sb2NrKCZwZXJfcGluLT5sb2NrKTsNCj4gPiA+ID4gQEAgLTIyODUsNyArMjI4Niw3 IEBAIHN0YXRpYyB2b2lkIGhhc3dlbGxfc2V0X3Bvd2VyX3N0YXRlKHN0cnVjdCBoZGFfY29kZWMg KmNvZGVjLCBoZGFfbmlkX3QgZmcsDQo+ID4gPiA+ICAJc25kX2hkYV9jb2RlY19zZXRfcG93ZXJf dG9fYWxsKGNvZGVjLCBmZywgcG93ZXJfc3RhdGUpOw0KPiA+ID4gPiAgfQ0KPiA+ID4gPiAgDQo+ ID4gPiA+IC1zdGF0aWMgdm9pZCBpbnRlbF9waW5fZWxkX25vdGlmeSh2b2lkICphdWRpb19wdHIs IGludCBwb3J0KQ0KPiA+ID4gPiArc3RhdGljIHZvaWQgaW50ZWxfcGluX2VsZF9ub3RpZnkodm9p ZCAqYXVkaW9fcHRyLCBpbnQgcG9ydCwgaW50IHBpcGUpDQo+ID4gPiA+ICB7DQo+ID4gPiA+ICAJ c3RydWN0IGhkYV9jb2RlYyAqY29kZWMgPSBhdWRpb19wdHI7DQo+ID4gPiA+ICAJaW50IHBpbl9u aWQ7DQo+ID4gPiA+IGRpZmYgLS1naXQgYS9zb3VuZC9zb2MvY29kZWNzL2hkYWNfaGRtaS5jIGIv c291bmQvc29jL2NvZGVjcy9oZGFjX2hkbWkuYw0KPiA+ID4gPiBpbmRleCAyYWJiNzQyLi5jZjU3 YWIzIDEwMDY0NA0KPiA+ID4gPiAtLS0gYS9zb3VuZC9zb2MvY29kZWNzL2hkYWNfaGRtaS5jDQo+ ID4gPiA+ICsrKyBiL3NvdW5kL3NvYy9jb2RlY3MvaGRhY19oZG1pLmMNCj4gPiA+ID4gQEAgLTEz NjYsNyArMTM2Niw3IEBAIHN0YXRpYyBpbnQgaGRhY19oZG1pX3BhcnNlX2FuZF9tYXBfbmlkKHN0 cnVjdCBoZGFjX2V4dF9kZXZpY2UgKmVkZXYsDQo+ID4gPiA+ICAJcmV0dXJuIGhkYWNfaGRtaV9p bml0X2RhaV9tYXAoZWRldik7DQo+ID4gPiA+ICB9DQo+ID4gPiA+ICANCj4gPiA+ID4gLXN0YXRp YyB2b2lkIGhkYWNfaGRtaV9lbGRfbm90aWZ5X2NiKHZvaWQgKmFwdHIsIGludCBwb3J0KQ0KPiA+ ID4gPiArc3RhdGljIHZvaWQgaGRhY19oZG1pX2VsZF9ub3RpZnlfY2Iodm9pZCAqYXB0ciwgaW50 IHBvcnQsIGludCBwaXBlKQ0KPiA+ID4gPiAgew0KPiA+ID4gPiAgCXN0cnVjdCBoZGFjX2V4dF9k ZXZpY2UgKmVkZXYgPSBhcHRyOw0KPiA+ID4gPiAgCXN0cnVjdCBoZGFjX2hkbWlfcHJpdiAqaGRt aSA9IGVkZXYtPnByaXZhdGVfZGF0YTsNCj4gPiA+ID4gLS0gDQo+ID4gPiA+IDIuNS4wDQo+ID4g PiANCj4gPiANCj4gDQoNCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVs LWdmeAo=