From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Pandiyan, Dhinakaran" Subject: Re: [PATCH] drm/i915/dp: DP audio API changes for MST Date: Fri, 5 Aug 2016 06:41:57 +0000 Message-ID: <1470380167.13893.13.camel@dk-H97M-D3H> 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> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <96A12704CE18D347B625EE2D4A099D19119F950B@SHSMSX103.ccr.corp.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: "Yang, Libin" 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 T24gRnJpLCAyMDE2LTA4LTA1IGF0IDA2OjIxICswMDAwLCBZYW5nLCBMaWJpbiB3cm90ZToNCj4g PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+IEZyb206IFBhbmRpeWFuLCBEaGluYWth cmFuDQo+ID4gU2VudDogRnJpZGF5LCBBdWd1c3QgNSwgMjAxNiAxOjU3IFBNDQo+ID4gVG86IFlh bmcsIExpYmluIDxsaWJpbi55YW5nQGludGVsLmNvbT4NCj4gPiBDYzogaW50ZWwtZ2Z4QGxpc3Rz LmZyZWVkZXNrdG9wLm9yZzsgdGl3YWlAc3VzZS5kZTsgYWxzYS1kZXZlbEBhbHNhLQ0KPiA+IHBy b2plY3Qub3JnOyBsaWJpbi55YW5nQGxpbnV4LmludGVsLmNvbQ0KPiA+IFN1YmplY3Q6IFJlOiBb SW50ZWwtZ2Z4XSBbUEFUQ0hdIGRybS9pOTE1L2RwOiBEUCBhdWRpbyBBUEkgY2hhbmdlcyBmb3Ig TVNUDQo+ID4gDQo+ID4gT24gRnJpLCAyMDE2LTA4LTA1IGF0IDAyOjM1ICswMDAwLCBZYW5nLCBM aWJpbiB3cm90ZToNCj4gPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+ID4g RnJvbTogSW50ZWwtZ2Z4IFttYWlsdG86aW50ZWwtZ2Z4LWJvdW5jZXNAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnXSBPbg0KPiA+ID4gPiBCZWhhbGYgT2YgRGhpbmFrYXJhbiBQYW5kaXlhbg0KPiA+ID4g PiBTZW50OiBXZWRuZXNkYXksIEF1Z3VzdCAzLCAyMDE2IDEwOjE1IEFNDQo+ID4gPiA+IFRvOiBp bnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnDQo+ID4gPiA+IENjOiBhbHNhLWRldmVsQGFs c2EtcHJvamVjdC5vcmc7IHRpd2FpQHN1c2UuZGU7DQo+ID4gPiA+IGxpYmluLnlhbmdAbGludXgu aW50ZWwuY29tOyBQYW5kaXlhbiwgRGhpbmFrYXJhbg0KPiA+ID4gPiA8ZGhpbmFrYXJhbi5wYW5k aXlhbkBpbnRlbC5jb20+DQo+ID4gPiA+IFN1YmplY3Q6IFtJbnRlbC1nZnhdIFtQQVRDSF0gZHJt L2k5MTUvZHA6IERQIGF1ZGlvIEFQSSBjaGFuZ2VzIGZvcg0KPiA+ID4gPiBNU1QNCj4gPiA+ID4N Cj4gPiA+ID4gRFAgTVNUIHByb3ZpZGVzIHRoZSBjYXBhYmlsaXR5IHRvIHNlbmQgbXVsdGlwbGUg dmlkZW8gYW5kIGF1ZGlvDQo+ID4gPiA+IHN0cmVhbXMgdmlhIG9uZSBzaW5nbGUgcG9ydC4gVGhp cyByZXF1aXJlcyB0aGUgQVBJJ3MgYmV0d2VlbiBpOTE1DQo+ID4gPiA+IGFuZCBhdWRpbyBkcml2 ZXJzIHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4gYXVkaW8gY2FwYWJsZSBkaXNwbGF5cw0KPiA+ID4g PiBjb25uZWN0ZWQgdG8gYSBwb3J0LiBUaGlzIHBhdGNoIGFkZHMgdGhpcyBzdXBwb3J0IHZpYSBh biBhZGRpdGlvbmFsDQo+ID4gPiA+IHBhcmFtZXRlciAnaW50IGRldl9pZCcuIFRoZSBleGlzdGlu ZyBwYXJhbWV0ZXIgJ3BvcnQnIGRvZXMgbm90IGNoYW5nZSBpdCdzDQo+ID4gbWVhbmluZy4NCj4g PiA+ID4NCj4gPiA+ID4gZGV2X2lkID0NCj4gPiA+ID4gCU1TVAk6IHBpcGUgdGhhdCB0aGUgc3Ry ZWFtIG9yaWdpbmF0ZXMgZnJvbQ0KPiA+ID4gPiAJTm9uLU1TVAk6IC0xDQo+ID4gPiA+DQo+ID4g PiA+IEFmZmVjdGVkIEFQSXM6DQo+ID4gPiA+IHN0cnVjdCBpOTE1X2F1ZGlvX2NvbXBvbmVudF9v cHMNCj4gPiA+ID4gLSAgICAgICBpbnQgKCpzeW5jX2F1ZGlvX3JhdGUpKHN0cnVjdCBkZXZpY2Ug KiwgaW50IHBvcnQsIGludCByYXRlKTsNCj4gPiA+ID4gKwlpbnQgKCpzeW5jX2F1ZGlvX3JhdGUp KHN0cnVjdCBkZXZpY2UgKiwgaW50IHBvcnQsIGludCBkZXZfaWQsDQo+ID4gPiA+ICsJICAgICBp bnQgcmF0ZSk7DQo+ID4gPiA+DQo+ID4gPiA+IC0gICAgICAgaW50ICgqZ2V0X2VsZCkoc3RydWN0 IGRldmljZSAqLCBpbnQgcG9ydCwgYm9vbCAqZW5hYmxlZCwNCj4gPiA+ID4gLSAgICAgICAgICAg ICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqYnVmLCBpbnQgbWF4X2J5dGVzKTsNCj4gPiA+ID4g KyAgICAgICBpbnQgKCpnZXRfZWxkKShzdHJ1Y3QgZGV2aWNlICosIGludCBwb3J0LCBpbnQgZGV2 X2lkLA0KPiA+ID4gPiArCQkgICAgICAgYm9vbCAqZW5hYmxlZCwgdW5zaWduZWQgY2hhciAqYnVm LCBpbnQgbWF4X2J5dGVzKTsNCj4gPiA+ID4NCj4gPiA+ID4gc3RydWN0IGk5MTVfYXVkaW9fY29t cG9uZW50X2F1ZGlvX29wcw0KPiA+ID4gPiAtICAgICAgIHZvaWQgKCpwaW5fZWxkX25vdGlmeSko dm9pZCAqYXVkaW9fcHRyLCBpbnQgcG9ydCk7DQo+ID4gPiA+ICsgICAgICAgdm9pZCAoKnBpbl9l bGRfbm90aWZ5KSh2b2lkICphdWRpb19wdHIsIGludCBwb3J0LCBpbnQNCj4gPiA+ID4gKyBkZXZf aWQpOw0KPiA+ID4gPg0KPiA+ID4gPiBUaGlzIHBhdGNoIG1ha2VzIGR1bW15IGNoYW5nZXMgaW4g dGhlIGF1ZGlvIGRyaXZlcnMgZm9yIGJ1aWxkIHRvIHN1Y2NlZWQuDQo+ID4gPiA+DQo+ID4gPiA+ IFNpZ25lZC1vZmYtYnk6IERoaW5ha2FyYW4gUGFuZGl5YW4gPGRoaW5ha2FyYW4ucGFuZGl5YW5A aW50ZWwuY29tPg0KPiA+ID4gPiAtLS0NCj4gPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmggICAgfCAgMiArLQ0KPiA+ID4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf YXVkaW8uYyB8IDgyDQo+ID4gPiA+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0NCj4g PiA+ID4gLS0tLS0tLQ0KPiA+ID4gPiAgaW5jbHVkZS9kcm0vaTkxNV9jb21wb25lbnQuaCAgICAg ICB8ICA2ICstLQ0KPiA+ID4gPiAgaW5jbHVkZS9zb3VuZC9oZGFfaTkxNS5oICAgICAgICAgICB8 IDExICsrLS0tDQo+ID4gPiA+ICBzb3VuZC9oZGEvaGRhY19pOTE1LmMgICAgICAgICAgICAgIHwg IDkgKysrLS0NCj4gPiA+ID4gIHNvdW5kL3BjaS9oZGEvcGF0Y2hfaGRtaS5jICAgICAgICAgfCAg NyArKy0tDQo+ID4gPiA+ICA2IGZpbGVzIGNoYW5nZWQsIDgyIGluc2VydGlvbnMoKyksIDM1IGRl bGV0aW9ucygtKQ0KPiA+ID4gPg0KPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuaA0KPiA+ID4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmggaW5kZXggNjVhZGE1ZC4uOGU0YzhjOCAxMDA2NDQNCj4gPiA+ID4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaA0KPiA+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5oDQo+ID4gPiA+IEBAIC0yMDU0LDcgKzIwNTQsNyBAQCBzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSB7DQo+ID4gPiA+ICAJLyogcGVyZm9ybSBQSFkgc3RhdGUgc2FuaXR5IGNoZWNr cz8gKi8NCj4gPiA+ID4gIAlib29sIGNodl9waHlfYXNzZXJ0WzJdOw0KPiA+ID4gPg0KPiA+ID4g PiAtCXN0cnVjdCBpbnRlbF9lbmNvZGVyICpkaWdfcG9ydF9tYXBbSTkxNV9NQVhfUE9SVFNdOw0K PiA+ID4gPiArCXN0cnVjdCBpbnRlbF9lbmNvZGVyICphdl9lbmNfbWFwW0k5MTVfTUFYX1BJUEVT XTsNCj4gPiA+DQo+ID4gPiBXZSBtYXkgc3RpbGwgbmVlZCBzYXZlIHRoZSBwb3J0IG51bWJlciBp bmZvLg0KPiA+ID4gSW4gbm9uLU1TVCBtb2RlLCBkZXZpY2UgZW50cnkgbWVhbnMgbm90aGluZy4g VGhpcyBtZWFucw0KPiA+ID4gYXZfZW5jX21hcFtwaXBlXSBtYXkgbm90IGdldCB0aGUgcmlnaHQg aW50ZWxfZW5jb2Rlcg0KPiA+ID4NCj4gPiA+IFJlZ2FyZHMsDQo+ID4gPiBMaWJpbg0KPiA+ID4N Cj4gPiBXZSBmaW5kIHRoZSBlbmNvZGVyIHVzaW5nIHBvcnQgaW4gZ2V0X3NhdmVkX2VuY29kZXIo KQ0KPiANCj4gSXQgc2VlbXMgaXQgc3RpbGwgY2FuJ3QgZ2V0IHRoZSBlbmNvZGVyIGZvciBTU1Qv SERNSSBhcw0KPiBwaXBlIG1heSBhbHdheXMgYmUgLTEgb3IgMCBmb3IgU1NUL0hETUk/DQo+IA0K PiBSZWdhcmRzLA0KPiBMaWJpbg0KPiANCg0KVGhlIGF1ZGlvIGRyaXZlciBzZW5kcyBkZXZfaWQ9 LTEsIGJ1dCB0aGUgY29ycmVjdCAicG9ydCIgZm9yIFNTVC4gU28sIHdlDQpsb29wIHRocm91Z2gg YWxsIHRoZSBzYXZlZCBlbmNvZGVycyBhbmQgY2hvb3NlIHRoZSBvbmUgdGhhdCBpcyB0aWVkIHRv DQoicG9ydCINCg0KZm9yIChwaXBlID0gUElQRV9BOyBwaXBlIDwgSTkxNV9NQVhfUElQRVM7IHBp cGUrKykgew0KDQoJCWlmICghYXZfZW5jX21hcFtwaXBlXSkNCgkJCWNvbnRpbnVlOw0KDQoJCWVu Y29kZXIgPSAmYXZfZW5jX21hcFtwaXBlXS0+YmFzZTsNCgkJaWYgKHBvcnQgPT0gZW5jX3RvX2Rp Z19wb3J0KGVuY29kZXIpLT5wb3J0KQ0KCQkJcmV0dXJuIGF2X2VuY19tYXBbcGlwZV07DQoJfQ0K DQoNCg0KPiA+ID4gPg0KPiA+ID4gPiAgCS8qDQo+ID4gPiA+ICAJICogTk9URTogVGhpcyBpcyB0 aGUgZHJpMS91bXMgZHVuZ2VvbiwgZG9uJ3QgYWRkIHN0dWZmIGhlcmUuIFlvdXINCj4gPiA+ID4g cGF0Y2ggZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F1ZGlvLmMNCj4g PiA+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5jDQo+ID4gPiA+IGluZGV4 IDhjNDkzZGUuLmNiZTQ0YzggMTAwNjQ0DQo+ID4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2F1ZGlvLmMNCj4gPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfYXVkaW8uYw0KPiA+ID4gPiBAQCAtNTAwLDYgKzUwMCw5IEBAIHZvaWQgaW50ZWxfYXVkaW9f Y29kZWNfZW5hYmxlKHN0cnVjdA0KPiA+ID4gPiBpbnRlbF9lbmNvZGVyDQo+ID4gPiA+ICppbnRl bF9lbmNvZGVyKQ0KPiA+ID4gPiAgCXN0cnVjdCBpOTE1X2F1ZGlvX2NvbXBvbmVudCAqYWNvbXAg PSBkZXZfcHJpdi0+YXVkaW9fY29tcG9uZW50Ow0KPiA+ID4gPiAgCXN0cnVjdCBpbnRlbF9kaWdp dGFsX3BvcnQgKmludGVsX2RpZ19wb3J0ID0gZW5jX3RvX2RpZ19wb3J0KGVuY29kZXIpOw0KPiA+ ID4gPiAgCWVudW0gcG9ydCBwb3J0ID0gaW50ZWxfZGlnX3BvcnQtPnBvcnQ7DQo+ID4gPiA+ICsJ ZW51bSBwaXBlIHBpcGUgPSBjcnRjLT5waXBlOw0KPiA+ID4gPiArCWludCBkZXZfaWQgPSAtMTsN Cj4gPiA+ID4gKw0KPiA+ID4gPg0KPiA+ID4gPiAgCWNvbm5lY3RvciA9IGRybV9zZWxlY3RfZWxk KGVuY29kZXIpOw0KPiA+ID4gPiAgCWlmICghY29ubmVjdG9yKQ0KPiA+ID4gPiBAQCAtNTIyLDE0 ICs1MjUsMTkgQEAgdm9pZCBpbnRlbF9hdWRpb19jb2RlY19lbmFibGUoc3RydWN0DQo+ID4gPiA+ IGludGVsX2VuY29kZXINCj4gPiA+ID4gKmludGVsX2VuY29kZXIpDQo+ID4gPiA+ICAJCWRldl9w cml2LT5kaXNwbGF5LmF1ZGlvX2NvZGVjX2VuYWJsZShjb25uZWN0b3IsDQo+ID4gPiA+IGludGVs X2VuY29kZXIsDQo+ID4gPiA+ICAJCQkJCQkgICAgIGFkanVzdGVkX21vZGUpOw0KPiA+ID4gPg0K PiA+ID4gPiArCWlmIChpbnRlbF9lbmNvZGVyLT50eXBlID09IElOVEVMX09VVFBVVF9EUF9NU1Qp DQo+ID4gPiA+ICsJCWRldl9pZCA9IHBpcGU7DQo+ID4gPiA+ICsNCj4gPiA+ID4gIAltdXRleF9s b2NrKCZkZXZfcHJpdi0+YXZfbXV0ZXgpOw0KPiA+ID4gPiAgCWludGVsX2VuY29kZXItPmF1ZGlv X2Nvbm5lY3RvciA9IGNvbm5lY3RvcjsNCj4gPiA+ID4gKw0KPiA+ID4gPiAgCS8qIHJlZmVycmVk IGluIGF1ZGlvIGNhbGxiYWNrcyAqLw0KPiA+ID4gPiAtCWRldl9wcml2LT5kaWdfcG9ydF9tYXBb cG9ydF0gPSBpbnRlbF9lbmNvZGVyOw0KPiA+ID4gPiArCWRldl9wcml2LT5hdl9lbmNfbWFwW3Bp cGVdID0gaW50ZWxfZW5jb2RlcjsNCj4gPiA+ID4gIAltdXRleF91bmxvY2soJmRldl9wcml2LT5h dl9tdXRleCk7DQo+ID4gPiA+DQo+ID4gPiA+ICAJaWYgKGFjb21wICYmIGFjb21wLT5hdWRpb19v cHMgJiYgYWNvbXAtPmF1ZGlvX29wcy0NCj4gPiA+ID4gPnBpbl9lbGRfbm90aWZ5KQ0KPiA+ID4g PiAtCQlhY29tcC0+YXVkaW9fb3BzLT5waW5fZWxkX25vdGlmeShhY29tcC0+YXVkaW9fb3BzLQ0K PiA+ID4gPiA+YXVkaW9fcHRyLCAoaW50KSBwb3J0KTsNCj4gPiA+ID4gKwkJYWNvbXAtPmF1ZGlv X29wcy0+cGluX2VsZF9ub3RpZnkoYWNvbXAtPmF1ZGlvX29wcy0NCj4gPiA+ID4gPmF1ZGlvX3B0 ciwNCj4gPiA+ID4gKwkJCQkJCSAoaW50KSBwb3J0LCBkZXZfaWQpOw0KPiA+ID4gPiAgfQ0KPiA+ ID4gPg0KPiA+ID4gPiAgLyoqDQo+ID4gPiA+IEBAIC01NDIsMjIgKzU1MCwyOSBAQCB2b2lkIGlu dGVsX2F1ZGlvX2NvZGVjX2VuYWJsZShzdHJ1Y3QNCj4gPiA+ID4gaW50ZWxfZW5jb2Rlcg0KPiA+ ID4gPiAqaW50ZWxfZW5jb2RlcikgIHZvaWQgaW50ZWxfYXVkaW9fY29kZWNfZGlzYWJsZShzdHJ1 Y3QgaW50ZWxfZW5jb2Rlcg0KPiA+ID4gPiAqaW50ZWxfZW5jb2RlcikgIHsNCj4gPiA+ID4gIAlz dHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIgPSAmaW50ZWxfZW5jb2Rlci0+YmFzZTsNCj4gPiA+ ID4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoZW5jb2Rlci0+Y3J0 Yyk7DQo+ID4gPiA+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGVuY29kZXItPmRldjsNCj4g PiA+ID4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7 DQo+ID4gPiA+ICAJc3RydWN0IGk5MTVfYXVkaW9fY29tcG9uZW50ICphY29tcCA9IGRldl9wcml2 LT5hdWRpb19jb21wb25lbnQ7DQo+ID4gPiA+ICAJc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAq aW50ZWxfZGlnX3BvcnQgPSBlbmNfdG9fZGlnX3BvcnQoZW5jb2Rlcik7DQo+ID4gPiA+ICAJZW51 bSBwb3J0IHBvcnQgPSBpbnRlbF9kaWdfcG9ydC0+cG9ydDsNCj4gPiA+ID4gKwllbnVtIHBpcGUg cGlwZSA9IGNydGMtPnBpcGU7DQo+ID4gPiA+ICsJaW50IGRldl9pZCA9IC0xOw0KPiA+ID4gPiAr DQo+ID4gPiA+ICsJaWYgKGludGVsX2VuY29kZXItPnR5cGUgPT0gSU5URUxfT1VUUFVUX0RQX01T VCkNCj4gPiA+ID4gKwkJZGV2X2lkID0gcGlwZTsNCj4gPiA+ID4NCj4gPiA+ID4gIAlpZiAoZGV2 X3ByaXYtPmRpc3BsYXkuYXVkaW9fY29kZWNfZGlzYWJsZSkNCj4gPiA+ID4gIAkJZGV2X3ByaXYt PmRpc3BsYXkuYXVkaW9fY29kZWNfZGlzYWJsZShpbnRlbF9lbmNvZGVyKTsNCj4gPiA+ID4NCj4g PiA+ID4gIAltdXRleF9sb2NrKCZkZXZfcHJpdi0+YXZfbXV0ZXgpOw0KPiA+ID4gPiAgCWludGVs X2VuY29kZXItPmF1ZGlvX2Nvbm5lY3RvciA9IE5VTEw7DQo+ID4gPiA+IC0JZGV2X3ByaXYtPmRp Z19wb3J0X21hcFtwb3J0XSA9IE5VTEw7DQo+ID4gPiA+ICsJZGV2X3ByaXYtPmF2X2VuY19tYXBb cGlwZV0gPSBOVUxMOw0KPiA+ID4gPiAgCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmF2X211dGV4 KTsNCj4gPiA+ID4NCj4gPiA+ID4gIAlpZiAoYWNvbXAgJiYgYWNvbXAtPmF1ZGlvX29wcyAmJiBh Y29tcC0+YXVkaW9fb3BzLQ0KPiA+ID4gPiA+cGluX2VsZF9ub3RpZnkpDQo+ID4gPiA+IC0JCWFj b21wLT5hdWRpb19vcHMtPnBpbl9lbGRfbm90aWZ5KGFjb21wLT5hdWRpb19vcHMtDQo+ID4gPiA+ ID5hdWRpb19wdHIsIChpbnQpIHBvcnQpOw0KPiA+ID4gPiArCQlhY29tcC0+YXVkaW9fb3BzLT5w aW5fZWxkX25vdGlmeShhY29tcC0+YXVkaW9fb3BzLQ0KPiA+ID4gPiA+YXVkaW9fcHRyLA0KPiA+ ID4gPiArCQkJCQkJIChpbnQpIHBvcnQsIGRldl9pZCk7DQo+ID4gPiA+ICB9DQo+ID4gPiA+DQo+ ID4gPiA+ICAvKioNCj4gPiA+ID4gQEAgLTYyOCw4ICs2NDMsMzIgQEAgc3RhdGljIGludA0KPiA+ ID4gPiBpOTE1X2F1ZGlvX2NvbXBvbmVudF9nZXRfY2RjbGtfZnJlcShzdHJ1Y3QgZGV2aWNlICpk ZXYpDQo+ID4gPiA+ICAJcmV0dXJuIGRldl9wcml2LT5jZGNsa19mcmVxOw0KPiA+ID4gPiAgfQ0K PiA+ID4gPg0KPiA+ID4gPiAtc3RhdGljIGludCBpOTE1X2F1ZGlvX2NvbXBvbmVudF9zeW5jX2F1 ZGlvX3JhdGUoc3RydWN0IGRldmljZSAqZGV2LA0KPiA+ID4gPiAtCQkJCQkJaW50IHBvcnQsIGlu dCByYXRlKQ0KPiA+ID4gPiArc3RhdGljIHN0cnVjdCBpbnRlbF9lbmNvZGVyICpnZXRfc2F2ZWRf ZW5jb2RlcihzdHJ1Y3QgaW50ZWxfZW5jb2Rlcg0KPiA+ID4gPiAqYXZfZW5jX21hcFtdLA0KPiA+ ID4gPiArCQkJCQkgICAgICAgaW50IHBvcnQsIGludCBkZXZfaWQpDQo+ID4gPiA+ICt7DQo+ID4g PiA+ICsNCj4gPiA+ID4gKwllbnVtIHBpcGUgcGlwZTsNCj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX2Vu Y29kZXIgKmVuY29kZXI7DQo+ID4gPiA+ICsNCj4gPiA+ID4gKwlpZiAoZGV2X2lkID49IDAgJiYg ZGV2X2lkIDwgSTkxNV9NQVhfUElQRVMpDQo+ID4gPiA+ICsJCXJldHVybiBhdl9lbmNfbWFwW2Rl dl9pZF07DQo+ID4gPiA+ICsNCj4gPiA+ID4gKwlmb3IgKHBpcGUgPSBQSVBFX0E7IHBpcGUgPCBJ OTE1X01BWF9QSVBFUzsgcGlwZSsrKSB7DQo+ID4gPiA+ICsNCj4gPiA+ID4gKwkJaWYgKCFhdl9l bmNfbWFwW3BpcGVdKQ0KPiA+ID4gPiArCQkJY29udGludWU7DQo+ID4gPiA+ICsNCj4gPiA+ID4g KwkJZW5jb2RlciA9ICZhdl9lbmNfbWFwW3BpcGVdLT5iYXNlOw0KPiA+ID4gPiArCQlpZiAocG9y dCA9PSBlbmNfdG9fZGlnX3BvcnQoZW5jb2RlciktPnBvcnQpDQo+ID4gPiA+ICsJCQlyZXR1cm4g YXZfZW5jX21hcFtwaXBlXTsNCj4gPiA+ID4gKwl9DQo+ID4gPiA+ICsNCj4gPiA+ID4gKwlyZXR1 cm4gTlVMTDsNCj4gPiA+ID4gKw0KPiA+ID4gPiArfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICtzdGF0 aWMgaW50IGk5MTVfYXVkaW9fY29tcG9uZW50X3N5bmNfYXVkaW9fcmF0ZShzdHJ1Y3QgZGV2aWNl ICpkZXYsDQo+ID4gPiA+ICtpbnQNCj4gPiA+ID4gcG9ydCwNCj4gPiA+ID4gKwkJCQkJCWludCBk ZXZfaWQsIGludCByYXRlKQ0KPiA+ID4gPiAgew0KPiA+ID4gPiAgCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IGRldl90b19pOTE1KGRldik7DQo+ID4gPiA+ICAJc3RydWN0IGlu dGVsX2VuY29kZXIgKmludGVsX2VuY29kZXI7IEBAIC02NDksMTUgKzY4OCwxNiBAQCBzdGF0aWMN Cj4gPiA+ID4gaW50IGk5MTVfYXVkaW9fY29tcG9uZW50X3N5bmNfYXVkaW9fcmF0ZShzdHJ1Y3Qg ZGV2aWNlICpkZXYsDQo+ID4gPiA+ICAJCXJldHVybiAwOw0KPiA+ID4gPg0KPiA+ID4gPiAgCW11 dGV4X2xvY2soJmRldl9wcml2LT5hdl9tdXRleCk7DQo+ID4gPiA+ICsNCj4gPiA+ID4gIAkvKiAx LiBnZXQgdGhlIHBpcGUgKi8NCj4gPiA+ID4gLQlpbnRlbF9lbmNvZGVyID0gZGV2X3ByaXYtPmRp Z19wb3J0X21hcFtwb3J0XTsNCj4gPiA+ID4gLQkvKiBpbnRlbF9lbmNvZGVyIG1pZ2h0IGJlIE5V TEwgZm9yIERQIE1TVCAqLw0KPiA+ID4gPiArCWludGVsX2VuY29kZXIgPSBnZXRfc2F2ZWRfZW5j b2RlcihkZXZfcHJpdi0+YXZfZW5jX21hcCwgcG9ydCwNCj4gPiA+ID4gZGV2X2lkKTsNCj4gPiA+ ID4gIAlpZiAoIWludGVsX2VuY29kZXIgfHwgIWludGVsX2VuY29kZXItPmJhc2UuY3J0YyB8fA0K PiA+ID4gPiAgCSAgICBpbnRlbF9lbmNvZGVyLT50eXBlICE9IElOVEVMX09VVFBVVF9IRE1JKSB7 DQo+ID4gPiA+ICAJCURSTV9ERUJVR19LTVMoIm5vIHZhbGlkIHBvcnQgJWNcbiIsIHBvcnRfbmFt ZShwb3J0KSk7DQo+ID4gPiA+ICAJCWVyciA9IC1FTk9ERVY7DQo+ID4gPiA+ICAJCWdvdG8gdW5s b2NrOw0KPiA+ID4gPiAgCX0NCj4gPiA+ID4gKw0KPiA+ID4gPiAgCWNydGMgPSB0b19pbnRlbF9j cnRjKGludGVsX2VuY29kZXItPmJhc2UuY3J0Yyk7DQo+ID4gPiA+ICAJcGlwZSA9IGNydGMtPnBp cGU7DQo+ID4gPiA+ICAJaWYgKHBpcGUgPT0gSU5WQUxJRF9QSVBFKSB7DQo+ID4gPiA+IEBAIC03 MDIsNyArNzQyLDcgQEAgc3RhdGljIGludA0KPiA+ID4gPiBpOTE1X2F1ZGlvX2NvbXBvbmVudF9z eW5jX2F1ZGlvX3JhdGUoc3RydWN0IGRldmljZSAqZGV2LCAgfQ0KPiA+ID4gPg0KPiA+ID4gPiAg c3RhdGljIGludCBpOTE1X2F1ZGlvX2NvbXBvbmVudF9nZXRfZWxkKHN0cnVjdCBkZXZpY2UgKmRl diwgaW50IHBvcnQsDQo+ID4gPiA+IC0JCQkJCWJvb2wgKmVuYWJsZWQsDQo+ID4gPiA+ICsJCQkJ CWludCBkZXZfaWQsIGJvb2wgKmVuYWJsZWQsDQo+ID4gPiA+ICAJCQkJCXVuc2lnbmVkIGNoYXIg KmJ1ZiwgaW50IG1heF9ieXRlcykgIHsNCj4gPiA+ID4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSBkZXZfdG9faTkxNShkZXYpOyBAQCAtNzEwLDE3DQo+ID4gPiA+ICs3NTAs MjEgQEAgc3RhdGljIGludCBpOTE1X2F1ZGlvX2NvbXBvbmVudF9nZXRfZWxkKHN0cnVjdCBkZXZp Y2UNCj4gPiA+ID4gKypkZXYsIGludA0KPiA+ID4gPiBwb3J0LA0KPiA+ID4gPiAgCWNvbnN0IHU4 ICplbGQ7DQo+ID4gPiA+ICAJaW50IHJldCA9IC1FSU5WQUw7DQo+ID4gPiA+DQo+ID4gPiA+ICsN Cj4gPiA+ID4gIAltdXRleF9sb2NrKCZkZXZfcHJpdi0+YXZfbXV0ZXgpOw0KPiA+ID4gPiAtCWlu dGVsX2VuY29kZXIgPSBkZXZfcHJpdi0+ZGlnX3BvcnRfbWFwW3BvcnRdOw0KPiA+ID4gPiAtCS8q IGludGVsX2VuY29kZXIgbWlnaHQgYmUgTlVMTCBmb3IgRFAgTVNUICovDQo+ID4gPiA+IC0JaWYg KGludGVsX2VuY29kZXIpIHsNCj4gPiA+ID4gLQkJcmV0ID0gMDsNCj4gPiA+ID4gLQkJKmVuYWJs ZWQgPSBpbnRlbF9lbmNvZGVyLT5hdWRpb19jb25uZWN0b3IgIT0gTlVMTDsNCj4gPiA+ID4gLQkJ aWYgKCplbmFibGVkKSB7DQo+ID4gPiA+IC0JCQllbGQgPSBpbnRlbF9lbmNvZGVyLT5hdWRpb19j b25uZWN0b3ItPmVsZDsNCj4gPiA+ID4gLQkJCXJldCA9IGRybV9lbGRfc2l6ZShlbGQpOw0KPiA+ ID4gPiAtCQkJbWVtY3B5KGJ1ZiwgZWxkLCBtaW4obWF4X2J5dGVzLCByZXQpKTsNCj4gPiA+ID4g LQkJfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsJaW50ZWxfZW5jb2RlciA9IGdldF9zYXZlZF9lbmNv ZGVyKGRldl9wcml2LT5hdl9lbmNfbWFwLCBwb3J0LA0KPiA+ID4gPiBkZXZfaWQpOw0KPiA+ID4g PiArCWlmICghaW50ZWxfZW5jb2Rlcikgew0KPiA+ID4gPiArCQltdXRleF91bmxvY2soJmRldl9w cml2LT5hdl9tdXRleCk7DQo+ID4gPiA+ICsJCXJldHVybiByZXQ7DQo+ID4gPiA+ICsJfQ0KPiA+ ID4gPiArDQo+ID4gPiA+ICsJcmV0ID0gMDsNCj4gPiA+ID4gKwkqZW5hYmxlZCA9IGludGVsX2Vu Y29kZXItPmF1ZGlvX2Nvbm5lY3RvciAhPSBOVUxMOw0KPiA+ID4gPiArCWlmICgqZW5hYmxlZCkg ew0KPiA+ID4gPiArCQllbGQgPSBpbnRlbF9lbmNvZGVyLT5hdWRpb19jb25uZWN0b3ItPmVsZDsN Cj4gPiA+ID4gKwkJcmV0ID0gZHJtX2VsZF9zaXplKGVsZCk7DQo+ID4gPiA+ICsJCW1lbWNweShi dWYsIGVsZCwgbWluKG1heF9ieXRlcywgcmV0KSk7DQo+ID4gPiA+ICAJfQ0KPiA+ID4gPg0KPiA+ ID4gPiAgCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmF2X211dGV4KTsNCj4gPiA+ID4gZGlmZiAt LWdpdCBhL2luY2x1ZGUvZHJtL2k5MTVfY29tcG9uZW50LmgNCj4gPiA+ID4gYi9pbmNsdWRlL2Ry bS9pOTE1X2NvbXBvbmVudC5oIGluZGV4IGI0NmZhMGUuLjE0MTljOTggMTAwNjQ0DQo+ID4gPiA+ IC0tLSBhL2luY2x1ZGUvZHJtL2k5MTVfY29tcG9uZW50LmgNCj4gPiA+ID4gKysrIGIvaW5jbHVk ZS9kcm0vaTkxNV9jb21wb25lbnQuaA0KPiA+ID4gPiBAQCAtNjQsNyArNjQsNyBAQCBzdHJ1Y3Qg aTkxNV9hdWRpb19jb21wb25lbnRfb3BzIHsNCj4gPiA+ID4gIAkgKiBDYWxsZWQgZnJvbSBhdWRp byBkcml2ZXIuIEFmdGVyIGF1ZGlvIGRyaXZlciBzZXRzIHRoZQ0KPiA+ID4gPiAgCSAqIHNhbXBs ZSByYXRlLCBpdCB3aWxsIGNhbGwgdGhpcyBmdW5jdGlvbiB0byBzZXQgbi9jdHMNCj4gPiA+ID4g IAkgKi8NCj4gPiA+ID4gLQlpbnQgKCpzeW5jX2F1ZGlvX3JhdGUpKHN0cnVjdCBkZXZpY2UgKiwg aW50IHBvcnQsIGludCByYXRlKTsNCj4gPiA+ID4gKwlpbnQgKCpzeW5jX2F1ZGlvX3JhdGUpKHN0 cnVjdCBkZXZpY2UgKiwgaW50IHBvcnQsIGludCBkZXZfaWQsIGludA0KPiA+ID4gPiArcmF0ZSk7 DQo+ID4gPiA+ICAJLyoqDQo+ID4gPiA+ICAJICogQGdldF9lbGQ6IGZpbGwgdGhlIGF1ZGlvIHN0 YXRlIGFuZCBFTEQgYnl0ZXMgZm9yIHRoZSBnaXZlbiBwb3J0DQo+ID4gPiA+ICAJICoNCj4gPiA+ ID4gQEAgLTc3LDcgKzc3LDcgQEAgc3RydWN0IGk5MTVfYXVkaW9fY29tcG9uZW50X29wcyB7DQo+ ID4gPiA+ICAJICogTm90ZSB0aGF0IHRoZSByZXR1cm5lZCBzaXplIG1heSBiZSBvdmVyIEBtYXhf Ynl0ZXMuICBUaGVuIGl0DQo+ID4gPiA+ICAJICogaW1wbGllcyB0aGF0IG9ubHkgYSBwYXJ0IG9m IEVMRCBoYXMgYmVlbiBjb3BpZWQgdG8gdGhlIGJ1ZmZlci4NCj4gPiA+ID4gIAkgKi8NCj4gPiA+ ID4gLQlpbnQgKCpnZXRfZWxkKShzdHJ1Y3QgZGV2aWNlICosIGludCBwb3J0LCBib29sICplbmFi bGVkLA0KPiA+ID4gPiArCWludCAoKmdldF9lbGQpKHN0cnVjdCBkZXZpY2UgKiwgaW50IHBvcnQs IGludCBkZXZfaWQsIGJvb2wNCj4gPiA+ID4gKyplbmFibGVkLA0KPiA+ID4gPiAgCQkgICAgICAg dW5zaWduZWQgY2hhciAqYnVmLCBpbnQgbWF4X2J5dGVzKTsgIH07DQo+ID4gPiA+DQo+ID4gPiA+ IEBAIC05Nyw3ICs5Nyw3IEBAIHN0cnVjdCBpOTE1X2F1ZGlvX2NvbXBvbmVudF9hdWRpb19vcHMg ew0KPiA+ID4gPiAgCSAqIHN0YXR1cyBhY2NvcmRpbmdseSAoZXZlbiB3aGVuIHRoZSBIREEgY29u dHJvbGxlciBpcyBpbiBwb3dlciBzYXZlDQo+ID4gPiA+ICAJICogbW9kZSkuDQo+ID4gPiA+ICAJ ICovDQo+ID4gPiA+IC0Jdm9pZCAoKnBpbl9lbGRfbm90aWZ5KSh2b2lkICphdWRpb19wdHIsIGlu dCBwb3J0KTsNCj4gPiA+ID4gKwl2b2lkICgqcGluX2VsZF9ub3RpZnkpKHZvaWQgKmF1ZGlvX3B0 ciwgaW50IHBvcnQsIGludCBkZXZfaWQpOw0KPiA+ID4gPiAgfTsNCj4gPiA+ID4NCj4gPiA+ID4g IC8qKg0KPiA+ID4gPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zb3VuZC9oZGFfaTkxNS5oIGIvaW5j bHVkZS9zb3VuZC9oZGFfaTkxNS5oDQo+ID4gPiA+IGluZGV4IDc5NmNhYmYuLjVhYjk3MmUgMTAw NjQ0DQo+ID4gPiA+IC0tLSBhL2luY2x1ZGUvc291bmQvaGRhX2k5MTUuaA0KPiA+ID4gPiArKysg Yi9pbmNsdWRlL3NvdW5kL2hkYV9pOTE1LmgNCj4gPiA+ID4gQEAgLTEwLDggKzEwLDkgQEANCj4g PiA+ID4gIGludCBzbmRfaGRhY19zZXRfY29kZWNfd2FrZXVwKHN0cnVjdCBoZGFjX2J1cyAqYnVz LCBib29sIGVuYWJsZSk7DQo+ID4gPiA+IGludCBzbmRfaGRhY19kaXNwbGF5X3Bvd2VyKHN0cnVj dCBoZGFjX2J1cyAqYnVzLCBib29sIGVuYWJsZSk7ICB2b2lkDQo+ID4gPiA+IHNuZF9oZGFjX2k5 MTVfc2V0X2JjbGsoc3RydWN0IGhkYWNfYnVzICpidXMpOyAtaW50DQo+ID4gPiA+IHNuZF9oZGFj X3N5bmNfYXVkaW9fcmF0ZShzdHJ1Y3QgaGRhY19kZXZpY2UgKmNvZGVjLCBoZGFfbmlkX3Qgbmlk LA0KPiA+ID4gPiBpbnQgcmF0ZSk7IC1pbnQgc25kX2hkYWNfYWNvbXBfZ2V0X2VsZChzdHJ1Y3Qg aGRhY19kZXZpY2UgKmNvZGVjLA0KPiA+ID4gPiBoZGFfbmlkX3QgbmlkLA0KPiA+ID4gPiAraW50 IHNuZF9oZGFjX3N5bmNfYXVkaW9fcmF0ZShzdHJ1Y3QgaGRhY19kZXZpY2UgKmNvZGVjLCBoZGFf bmlkX3QgbmlkLA0KPiA+ID4gPiArCQkJICAgICBpbnQgZGV2X2lkLCBpbnQgcmF0ZSk7DQo+ID4g PiA+ICtpbnQgc25kX2hkYWNfYWNvbXBfZ2V0X2VsZChzdHJ1Y3QgaGRhY19kZXZpY2UgKmNvZGVj LCBoZGFfbmlkX3QNCj4gPiA+ID4gK25pZCwgaW50IGRldl9pZCwNCj4gPiA+ID4gIAkJCSAgIGJv b2wgKmF1ZGlvX2VuYWJsZWQsIGNoYXIgKmJ1ZmZlciwgaW50IG1heF9ieXRlcyk7DQo+ID4gaW50 DQo+ID4gPiA+IHNuZF9oZGFjX2k5MTVfaW5pdChzdHJ1Y3QgaGRhY19idXMgKmJ1cyk7ICBpbnQN Cj4gPiA+ID4gc25kX2hkYWNfaTkxNV9leGl0KHN0cnVjdCBoZGFjX2J1cyAqYnVzKTsgQEAgLTI5 LDEzICszMCwxMyBAQCBzdGF0aWMNCj4gPiA+ID4gaW5saW5lIHZvaWQgc25kX2hkYWNfaTkxNV9z ZXRfYmNsayhzdHJ1Y3QgaGRhY19idXMgKmJ1cykgIHsgIH0NCj4gPiA+ID4gc3RhdGljIGlubGlu ZSBpbnQgc25kX2hkYWNfc3luY19hdWRpb19yYXRlKHN0cnVjdCBoZGFjX2RldmljZSAqY29kZWMs DQo+ID4gPiA+IC0JCQkJCSAgIGhkYV9uaWRfdCBuaWQsIGludCByYXRlKQ0KPiA+ID4gPiArCQkJ CQkgICBoZGFfbmlkX3QgbmlkLCBpbnQgZGV2X2lkLCBpbnQgcmF0ZSkNCj4gPiA+ID4gIHsNCj4g PiA+ID4gIAlyZXR1cm4gMDsNCj4gPiA+ID4gIH0NCj4gPiA+ID4gIHN0YXRpYyBpbmxpbmUgaW50 IHNuZF9oZGFjX2Fjb21wX2dldF9lbGQoc3RydWN0IGhkYWNfZGV2aWNlICpjb2RlYywNCj4gPiA+ ID4gaGRhX25pZF90IG5pZCwNCj4gPiA+ID4gLQkJCQkJIGJvb2wgKmF1ZGlvX2VuYWJsZWQsIGNo YXIgKmJ1ZmZlciwNCj4gPiA+ID4gLQkJCQkJIGludCBtYXhfYnl0ZXMpDQo+ID4gPiA+ICsJCQkJ CSBpbnQgZGV2X2lkLCBib29sICphdWRpb19lbmFibGVkLA0KPiA+ID4gPiArCQkJCQkgY2hhciAq YnVmZmVyLCBpbnQgbWF4X2J5dGVzKQ0KPiA+ID4gPiAgew0KPiA+ID4gPiAgCXJldHVybiAtRU5P REVWOw0KPiA+ID4gPiAgfQ0KPiA+ID4gPiBkaWZmIC0tZ2l0IGEvc291bmQvaGRhL2hkYWNfaTkx NS5jIGIvc291bmQvaGRhL2hkYWNfaTkxNS5jIGluZGV4DQo+ID4gPiA+IGM5YWYwMjIuLjZlYTYz YWMgMTAwNjQ0DQo+ID4gPiA+IC0tLSBhL3NvdW5kL2hkYS9oZGFjX2k5MTUuYw0KPiA+ID4gPiAr KysgYi9zb3VuZC9oZGEvaGRhY19pOTE1LmMNCj4gPiA+ID4gQEAgLTIwMSw3ICsyMDEsOCBAQCBz dGF0aWMgaW50IHBpbjJwb3J0KHN0cnVjdCBoZGFjX2RldmljZSAqY29kZWMsDQo+ID4gPiA+IGhk YV9uaWRfdCBwaW5fbmlkKQ0KPiA+ID4gPiAgICogVGhpcyBmdW5jdGlvbiBzZXRzIE4vQ1RTIHZh bHVlIGJhc2VkIG9uIHRoZSBnaXZlbiBzYW1wbGUgcmF0ZS4NCj4gPiA+ID4gICAqIFJldHVybnMg emVybyBmb3Igc3VjY2Vzcywgb3IgYSBuZWdhdGl2ZSBlcnJvciBjb2RlLg0KPiA+ID4gPiAgICov DQo+ID4gPiA+IC1pbnQgc25kX2hkYWNfc3luY19hdWRpb19yYXRlKHN0cnVjdCBoZGFjX2Rldmlj ZSAqY29kZWMsIGhkYV9uaWRfdA0KPiA+ID4gPiBuaWQsIGludA0KPiA+ID4gPiByYXRlKQ0KPiA+ ID4gPiAraW50IHNuZF9oZGFjX3N5bmNfYXVkaW9fcmF0ZShzdHJ1Y3QgaGRhY19kZXZpY2UgKmNv ZGVjLCBoZGFfbmlkX3QgbmlkLA0KPiA+ID4gPiArCQkJICAgICBpbnQgZGV2X2lkLCBpbnQgcmF0 ZSkNCj4gPiA+ID4gIHsNCj4gPiA+ID4gIAlzdHJ1Y3QgaGRhY19idXMgKmJ1cyA9IGNvZGVjLT5i dXM7DQo+ID4gPiA+ICAJc3RydWN0IGk5MTVfYXVkaW9fY29tcG9uZW50ICphY29tcCA9IGJ1cy0+ YXVkaW9fY29tcG9uZW50OyBAQA0KPiA+ID4gPiAtMjEyLDcgKzIxMyw3IEBAIGludCBzbmRfaGRh Y19zeW5jX2F1ZGlvX3JhdGUoc3RydWN0IGhkYWNfZGV2aWNlDQo+ID4gPiA+ICpjb2RlYywgaGRh X25pZF90IG5pZCwgaW50IHJhdGUpDQo+ID4gPiA+ICAJcG9ydCA9IHBpbjJwb3J0KGNvZGVjLCBu aWQpOw0KPiA+ID4gPiAgCWlmIChwb3J0IDwgMCkNCj4gPiA+ID4gIAkJcmV0dXJuIC1FSU5WQUw7 DQo+ID4gPiA+IC0JcmV0dXJuIGFjb21wLT5vcHMtPnN5bmNfYXVkaW9fcmF0ZShhY29tcC0+ZGV2 LCBwb3J0LCByYXRlKTsNCj4gPiA+ID4gKwlyZXR1cm4gYWNvbXAtPm9wcy0+c3luY19hdWRpb19y YXRlKGFjb21wLT5kZXYsIHBvcnQsIGRldl9pZCwNCj4gPiA+ID4gK3JhdGUpOw0KPiA+ID4gPiAg fQ0KPiA+ID4gPiAgRVhQT1JUX1NZTUJPTF9HUEwoc25kX2hkYWNfc3luY19hdWRpb19yYXRlKTsN Cj4gPiA+ID4NCj4gPiA+ID4gQEAgLTIzNiw3ICsyMzcsNyBAQCBFWFBPUlRfU1lNQk9MX0dQTChz bmRfaGRhY19zeW5jX2F1ZGlvX3JhdGUpOw0KPiA+ID4gPiAgICogdGh1cyBpdCBtYXkgYmUgb3Zl ciBAbWF4X2J5dGVzLiAgSWYgaXQncyBvdmVyIEBtYXhfYnl0ZXMsIGl0IGltcGxpZXMNCj4gPiA+ ID4gICAqIHRoYXQgb25seSBhIHBhcnQgb2YgRUxEIGJ5dGVzIGhhdmUgYmVlbiBmZXRjaGVkLg0K PiA+ID4gPiAgICovDQo+ID4gPiA+IC1pbnQgc25kX2hkYWNfYWNvbXBfZ2V0X2VsZChzdHJ1Y3Qg aGRhY19kZXZpY2UgKmNvZGVjLCBoZGFfbmlkX3QNCj4gPiA+ID4gbmlkLA0KPiA+ID4gPiAraW50 IHNuZF9oZGFjX2Fjb21wX2dldF9lbGQoc3RydWN0IGhkYWNfZGV2aWNlICpjb2RlYywgaGRhX25p ZF90DQo+ID4gPiA+ICtuaWQsIGludCBkZXZfaWQsDQo+ID4gPiA+ICAJCQkgICBib29sICphdWRp b19lbmFibGVkLCBjaGFyICpidWZmZXIsIGludCBtYXhfYnl0ZXMpICB7DQo+ID4gPiA+ICAJc3Ry dWN0IGhkYWNfYnVzICpidXMgPSBjb2RlYy0+YnVzOyBAQCAtMjQ5LDcgKzI1MCw3IEBAIGludA0K PiA+ID4gPiBzbmRfaGRhY19hY29tcF9nZXRfZWxkKHN0cnVjdCBoZGFjX2RldmljZSAqY29kZWMs IGhkYV9uaWRfdCBuaWQsDQo+ID4gPiA+ICAJcG9ydCA9IHBpbjJwb3J0KGNvZGVjLCBuaWQpOw0K PiA+ID4gPiAgCWlmIChwb3J0IDwgMCkNCj4gPiA+ID4gIAkJcmV0dXJuIC1FSU5WQUw7DQo+ID4g PiA+IC0JcmV0dXJuIGFjb21wLT5vcHMtPmdldF9lbGQoYWNvbXAtPmRldiwgcG9ydCwgYXVkaW9f ZW5hYmxlZCwNCj4gPiA+ID4gKwlyZXR1cm4gYWNvbXAtPm9wcy0+Z2V0X2VsZChhY29tcC0+ZGV2 LCBwb3J0LCBkZXZfaWQsDQo+ID4gPiA+IGF1ZGlvX2VuYWJsZWQsDQo+ID4gPiA+ICAJCQkJICAg YnVmZmVyLCBtYXhfYnl0ZXMpOw0KPiA+ID4gPiAgfQ0KPiA+ID4gPiAgRVhQT1JUX1NZTUJPTF9H UEwoc25kX2hkYWNfYWNvbXBfZ2V0X2VsZCk7DQo+ID4gPiA+IGRpZmYgLS1naXQgYS9zb3VuZC9w Y2kvaGRhL3BhdGNoX2hkbWkuYyBiL3NvdW5kL3BjaS9oZGEvcGF0Y2hfaGRtaS5jDQo+ID4gPiA+ IGluZGV4IGQwZDVhZDguLjA3N2Q0OGEgMTAwNjQ0DQo+ID4gPiA+IC0tLSBhL3NvdW5kL3BjaS9o ZGEvcGF0Y2hfaGRtaS5jDQo+ID4gPiA+ICsrKyBiL3NvdW5kL3BjaS9oZGEvcGF0Y2hfaGRtaS5j DQo+ID4gPiA+IEBAIC0xNDg1LDcgKzE0ODUsNyBAQCBzdGF0aWMgdm9pZCBzeW5jX2VsZF92aWFf YWNvbXAoc3RydWN0DQo+ID4gPiA+IGhkYV9jb2RlYyAqY29kZWMsDQo+ID4gPiA+DQo+ID4gPiA+ ICAJbXV0ZXhfbG9jaygmcGVyX3Bpbi0+bG9jayk7DQo+ID4gPiA+ICAJZWxkLT5tb25pdG9yX3By ZXNlbnQgPSBmYWxzZTsNCj4gPiA+ID4gLQlzaXplID0gc25kX2hkYWNfYWNvbXBfZ2V0X2VsZCgm Y29kZWMtPmNvcmUsIHBlcl9waW4tPnBpbl9uaWQsDQo+ID4gPiA+ICsJc2l6ZSA9IHNuZF9oZGFj X2Fjb21wX2dldF9lbGQoJmNvZGVjLT5jb3JlLCBwZXJfcGluLT5waW5fbmlkLCAtMSwNCj4gPiA+ ID4gIAkJCQkgICAgICAmZWxkLT5tb25pdG9yX3ByZXNlbnQsIGVsZC0+ZWxkX2J1ZmZlciwNCj4g PiA+ID4gIAkJCQkgICAgICBFTERfTUFYX1NJWkUpOw0KPiA+ID4gPiAgCWlmIChzaXplID4gMCkg ew0KPiA+ID4gPiBAQCAtMTczOSw3ICsxNzM5LDggQEAgc3RhdGljIGludA0KPiA+ID4gPiBnZW5l cmljX2hkbWlfcGxheWJhY2tfcGNtX3ByZXBhcmUoc3RydWN0IGhkYV9wY21fc3RyZWFtICpoaW5m bywNCj4gPiA+ID4gIAkvKiBDYWxsIHN5bmNfYXVkaW9fcmF0ZSB0byBzZXQgdGhlIE4vQ1RTL00g bWFudWFsbHkgaWYgbmVjZXNzYXJ5ICovDQo+ID4gPiA+ICAJLyogVG9kbzogYWRkIERQMS4yIE1T VCBhdWRpbyBzdXBwb3J0IGxhdGVyICovDQo+ID4gPiA+ICAJaWYgKGNvZGVjX2hhc19hY29tcChj b2RlYykpDQo+ID4gPiA+IC0JCXNuZF9oZGFjX3N5bmNfYXVkaW9fcmF0ZSgmY29kZWMtPmNvcmUs IHBpbl9uaWQsIHJ1bnRpbWUtDQo+ID4gPiA+ID5yYXRlKTsNCj4gPiA+ID4gKwkJc25kX2hkYWNf c3luY19hdWRpb19yYXRlKCZjb2RlYy0+Y29yZSwgcGluX25pZCwgLTEsDQo+ID4gPiA+ICsJCQkJ CSBydW50aW1lLT5yYXRlKTsNCj4gPiA+ID4NCj4gPiA+ID4gIAlub25fcGNtID0gY2hlY2tfbm9u X3BjbV9wZXJfY3Z0KGNvZGVjLCBjdnRfbmlkKTsNCj4gPiA+ID4gIAltdXRleF9sb2NrKCZwZXJf cGluLT5sb2NrKTsNCj4gPiA+ID4gQEAgLTIyODUsNyArMjI4Niw3IEBAIHN0YXRpYyB2b2lkIGhh c3dlbGxfc2V0X3Bvd2VyX3N0YXRlKHN0cnVjdA0KPiA+ID4gPiBoZGFfY29kZWMgKmNvZGVjLCBo ZGFfbmlkX3QgZmcsDQo+ID4gPiA+ICAJc25kX2hkYV9jb2RlY19zZXRfcG93ZXJfdG9fYWxsKGNv ZGVjLCBmZywgcG93ZXJfc3RhdGUpOyAgfQ0KPiA+ID4gPg0KPiA+ID4gPiAtc3RhdGljIHZvaWQg aW50ZWxfcGluX2VsZF9ub3RpZnkodm9pZCAqYXVkaW9fcHRyLCBpbnQgcG9ydCkNCj4gPiA+ID4g K3N0YXRpYyB2b2lkIGludGVsX3Bpbl9lbGRfbm90aWZ5KHZvaWQgKmF1ZGlvX3B0ciwgaW50IHBv cnQsIGludA0KPiA+ID4gPiArZGV2X2lkKQ0KPiA+ID4gPiAgew0KPiA+ID4gPiAgCXN0cnVjdCBo ZGFfY29kZWMgKmNvZGVjID0gYXVkaW9fcHRyOw0KPiA+ID4gPiAgCWludCBwaW5fbmlkOw0KPiA+ ID4gPiAtLQ0KPiA+ID4gPiAyLjUuMA0KPiA+ID4gPg0KPiA+ID4gPiBfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KPiA+ID4gPiBJbnRlbC1nZnggbWFpbGlu ZyBsaXN0DQo+ID4gPiA+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcNCj4gPiA+ID4g aHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngN Cj4gPiA+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQo+ ID4gPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0DQo+ID4gPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRl c2t0b3Aub3JnDQo+ID4gPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2ludGVsLWdmeA0KPiANCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18NCj4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdA0KPiBJbnRlbC1nZnhAbGlz dHMuZnJlZWRlc2t0b3Aub3JnDQo+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vaW50ZWwtZ2Z4DQoNCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2ludGVsLWdmeAo=