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: Wed, 3 Aug 2016 21:42:53 +0000 Message-ID: <1470261422.6362.25.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> <20160803190812.GO4329@intel.com> <1470254234.6362.15.camel@dk-H97M-D3H> <20160803202808.GP4329@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20160803202808.GP4329@intel.com> Content-Language: en-US Content-ID: <32BC36FF6CA64B4A9BF21C4FB306E8DB@intel.com> 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: alsa-devel@alsa-project.org T24gV2VkLCAyMDE2LTA4LTAzIGF0IDIzOjI4ICswMzAwLCBWaWxsZSBTeXJqw6Rsw6Qgd3JvdGU6 DQo+IE9uIFdlZCwgQXVnIDAzLCAyMDE2IGF0IDA3OjQzOjA2UE0gKzAwMDAsIFBhbmRpeWFuLCBE aGluYWthcmFuIHdyb3RlOg0KPiA+IE9uIFdlZCwgMjAxNi0wOC0wMyBhdCAyMjowOCArMDMwMCwg VmlsbGUgU3lyasOkbMOkIHdyb3RlOg0KPiA+ID4gT24gVHVlLCBBdWcgMDIsIDIwMTYgYXQgMDc6 MTQ6MzBQTSAtMDcwMCwgRGhpbmFrYXJhbiBQYW5kaXlhbiB3cm90ZToNCj4gPiA+ID4gRFAgTVNU IHByb3ZpZGVzIHRoZSBjYXBhYmlsaXR5IHRvIHNlbmQgbXVsdGlwbGUgdmlkZW8gYW5kIGF1ZGlv IHN0cmVhbXMgdmlhDQo+ID4gPiA+IG9uZSBzaW5nbGUgcG9ydC4gVGhpcyByZXF1aXJlcyB0aGUg QVBJJ3MgYmV0d2VlbiBpOTE1IGFuZCBhdWRpbyBkcml2ZXJzIHRvDQo+ID4gPiA+IGRpc3Rpbmd1 aXNoIGJldHdlZW4gYXVkaW8gY2FwYWJsZSBkaXNwbGF5cyBjb25uZWN0ZWQgdG8gYSBwb3J0LiBU aGlzIHBhdGNoDQo+ID4gPiA+IGFkZHMgdGhpcyBzdXBwb3J0IHZpYSBhbiBhZGRpdGlvbmFsIHBh cmFtZXRlciAnaW50IGRldl9pZCcuIFRoZSBleGlzdGluZw0KPiA+ID4gPiBwYXJhbWV0ZXIgJ3Bv cnQnIGRvZXMgbm90IGNoYW5nZSBpdCdzIG1lYW5pbmcuDQo+ID4gPiA+IA0KPiA+ID4gPiBkZXZf aWQgPQ0KPiA+ID4gPiAJTVNUCTogcGlwZSB0aGF0IHRoZSBzdHJlYW0gb3JpZ2luYXRlcyBmcm9t DQo+ID4gPiA+IAlOb24tTVNUCTogLTENCj4gPiA+ID4gDQo+ID4gPiA+IEFmZmVjdGVkIEFQSXM6 DQo+ID4gPiA+IHN0cnVjdCBpOTE1X2F1ZGlvX2NvbXBvbmVudF9vcHMNCj4gPiA+ID4gLSAgICAg ICBpbnQgKCpzeW5jX2F1ZGlvX3JhdGUpKHN0cnVjdCBkZXZpY2UgKiwgaW50IHBvcnQsIGludCBy YXRlKTsNCj4gPiA+ID4gKwlpbnQgKCpzeW5jX2F1ZGlvX3JhdGUpKHN0cnVjdCBkZXZpY2UgKiwg aW50IHBvcnQsIGludCBkZXZfaWQsDQo+ID4gPiANCj4gPiA+IERvZXMgdGhlIHRlcm0gJ2Rldl9p ZCcgaGF2ZSBzb21lIHNwZWNpYWwgbWVhbmluZyBvbiB0aGUgYXVkaW8gc2lkZT8gT24NCj4gPiA+ IHRoZSBpOTE1IHNpZGUgdGhpbmdzIHdvdWxkIGJlIGxlc3MgY29uZnVzaW5nIGlmIHdlIGp1c3Qg Y2FsbGVkIGl0DQo+ID4gPiAncGlwZScuDQo+ID4gPiANCj4gPiANCj4gPiBUaGVyZSB3YXMgcXVp dGUgYSBiaXQgb2YgYmFjayBhbmQgZm9ydGggb24gdGhpcy4gInBpcGUiIHNlZW1lZCB0byB0aWUg dXMNCj4gPiB0byB0aGUgZ2Z4IGhhcmR3YXJlIGFyY2hpdGVjdHVyZS4gSW4gY2FzZSwgdGhlcmUg aXMgbm8gMToxIG1hcHBpbmcgZnJvbQ0KPiA+IHBpcGVzIHRvIGVuY29kZXJzLCB0aGlzIHdpbGwg Z2V0IGNvbmZ1c2luZyBhcyBpOTE1IGF1ZGlvIHJlZ2lzdGVycw0KPiA+IChFLmcuSFNXX0FVRF9Q SU5fRUxEX0NQX1ZMRCkgYXJlIGVuY29kZXIgYmFzZWQuDQo+IA0KPiBJJ20gbm90IGZvbGxvd2lu Zy4gTG9va2luZyBhdCB0aGUgY3VycmVudCBpOTE1IGF1ZGlvIGNvZGUsIG9uIEhTVysNCj4gZXZl cnl0aGluZyBpcyBwaXBlIGJhc2VkLg0KPiANCkFsdGhvdWdoIHdlIHBhc3MgInBpcGUiIHRvIHRo ZXNlIG1hY3JvcywgdGhlIGRlZmluaXRpb24gaGVyZSBhbmQgaW4gdGhlDQpCU3BlYyBzZWVtIHRv IGluZGljYXRlIHRoZXkgYXJlIGJhc2VkIG9uIHRoZSBlbmNvZGVyLg0KDQpFZzogI2RlZmluZSBI U1dfQVVEX1BJTl9FTERfQ1BfVkxEICAgICAgICAgIF9NTUlPKDB4NjUwYzApDQojZGVmaW5lICAg QVVESU9fSU5BQ1RJVkUodHJhbnMpICAgICAgICAgKCgxIDw8IDMpIDw8ICgodHJhbnMpICogNCkp DQojZGVmaW5lICAgQVVESU9fT1VUUFVUX0VOQUJMRSh0cmFucykgICAgKCgxIDw8IDIpIDw8ICgo dHJhbnMpICogNCkpDQojZGVmaW5lICAgQVVESU9fQ1BfUkVBRFkodHJhbnMpICAgICAgICAgKCgx IDw8IDEpIDw8ICgodHJhbnMpICogNCkpDQojZGVmaW5lICAgQVVESU9fRUxEX1ZBTElEKHRyYW5z KSAgICAgICAgKCgxIDw8IDApIDw8ICgodHJhbnMpICogNCkpDQoNCg0KPiA+IFdoZXJlYXMsIGRl dl9pZCBpcw0KPiA+IGdlbmVyaWMgLSBIREEgc3BlYyBjYWxscyB0aGVtICJkZXZpY2VzIiBvciAi ZGV2aWNlIGVudHJ5Ig0KPiANCj4gR2VuZXJpYyBhbmQgdG90YWxseSB1bmNsZWFyIHdoYXQgaXQg bWVhbnMgZnJvbSBncmFwaGljcyBzaWRlLg0KPiANCj4gcGlwZSBhbmQgcG9ydCBhcmUgdGhlIG9u bHkgdGhpbmdzIHdlIHJlYWxseSBoYXZlIGluIGk5MTUuIElmIHRob3NlIGFyZW4ndA0KPiBnb29k IGVub3VnaCBmb3IgdGhlIGF1ZGlvIHNpZGUsIHRoZW4gSSB0aGluayB3ZSBzaG91bGQgaGF2ZSBz b21lIGRlY2VudA0KPiBjb2RlIHRvIHJlbWFwIGJldHdlZW4gdGhlIHBpcGUrcG9ydCB2cy4gd2hh dGV2ZXIgYXVkaW8gc2lkZSBpZCBpcyBuZWVkZWQuDQo+IEkgZG9uJ3QgcmVhbGx5IGNhcmUgb24g d2hpY2ggc2lkZSBvZiB0aGUgYm9yZGVyIHN1Y2ggY29kZSB3b3VsZCBsaXZlLCBhcw0KPiBsb25n IGFzIGl0J3MgY2xlYXIgd2hhdCBpdCdzIGRvaW5nLg0KPiANCg0KSSBhZ3JlZSwgZGV2X2lkIGNh biBiZSBtaXNsZWFkaW5nIHdpdGhpbiBpOTE1Lg0KPiA+IA0KPiA+ID4gPiArCSAgICAgaW50IHJh dGUpOw0KPiA+ID4gPiANCj4gPiA+ID4gLSAgICAgICBpbnQgKCpnZXRfZWxkKShzdHJ1Y3QgZGV2 aWNlICosIGludCBwb3J0LCBib29sICplbmFibGVkLA0KPiA+ID4gPiAtICAgICAgICAgICAgICAg ICAgICAgICB1bnNpZ25lZCBjaGFyICpidWYsIGludCBtYXhfYnl0ZXMpOw0KPiA+ID4gPiArICAg ICAgIGludCAoKmdldF9lbGQpKHN0cnVjdCBkZXZpY2UgKiwgaW50IHBvcnQsIGludCBkZXZfaWQs DQo+ID4gPiA+ICsJCSAgICAgICBib29sICplbmFibGVkLCB1bnNpZ25lZCBjaGFyICpidWYsIGlu dCBtYXhfYnl0ZXMpOw0KPiA+ID4gPiANCj4gPiA+ID4gc3RydWN0IGk5MTVfYXVkaW9fY29tcG9u ZW50X2F1ZGlvX29wcw0KPiA+ID4gPiAtICAgICAgIHZvaWQgKCpwaW5fZWxkX25vdGlmeSkodm9p ZCAqYXVkaW9fcHRyLCBpbnQgcG9ydCk7DQo+ID4gPiA+ICsgICAgICAgdm9pZCAoKnBpbl9lbGRf bm90aWZ5KSh2b2lkICphdWRpb19wdHIsIGludCBwb3J0LCBpbnQgZGV2X2lkKTsNCj4gPiA+ID4g DQo+ID4gPiA+IFRoaXMgcGF0Y2ggbWFrZXMgZHVtbXkgY2hhbmdlcyBpbiB0aGUgYXVkaW8gZHJp dmVycyBmb3IgYnVpbGQgdG8gc3VjY2VlZC4NCj4gPiA+ID4gDQo+ID4gPiA+IFNpZ25lZC1vZmYt Ynk6IERoaW5ha2FyYW4gUGFuZGl5YW4gPGRoaW5ha2FyYW4ucGFuZGl5YW5AaW50ZWwuY29tPg0K PiA+ID4gPiAtLS0NCj4gPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAg fCAgMiArLQ0KPiA+ID4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXVkaW8uYyB8IDgy ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tDQo+ID4gPiA+ICBpbmNsdWRl L2RybS9pOTE1X2NvbXBvbmVudC5oICAgICAgIHwgIDYgKy0tDQo+ID4gPiA+ICBpbmNsdWRlL3Nv dW5kL2hkYV9pOTE1LmggICAgICAgICAgIHwgMTEgKystLS0NCj4gPiA+ID4gIHNvdW5kL2hkYS9o ZGFjX2k5MTUuYyAgICAgICAgICAgICAgfCAgOSArKystLQ0KPiA+ID4gPiAgc291bmQvcGNpL2hk YS9wYXRjaF9oZG1pLmMgICAgICAgICB8ICA3ICsrLS0NCj4gPiA+ID4gIDYgZmlsZXMgY2hhbmdl ZCwgODIgaW5zZXJ0aW9ucygrKSwgMzUgZGVsZXRpb25zKC0pDQo+ID4gPiA+IA0KPiA+ID4gPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmgNCj4gPiA+ID4gaW5kZXggNjVhZGE1ZC4uOGU0YzhjOCAxMDA2 NDQNCj4gPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaA0KPiA+ID4g PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oDQo+ID4gPiA+IEBAIC0yMDU0 LDcgKzIwNTQsNyBAQCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7DQo+ID4gPiA+ICAJLyogcGVy Zm9ybSBQSFkgc3RhdGUgc2FuaXR5IGNoZWNrcz8gKi8NCj4gPiA+ID4gIAlib29sIGNodl9waHlf YXNzZXJ0WzJdOw0KPiA+ID4gPiAgDQo+ID4gPiA+IC0Jc3RydWN0IGludGVsX2VuY29kZXIgKmRp Z19wb3J0X21hcFtJOTE1X01BWF9QT1JUU107DQo+ID4gPiA+ICsJc3RydWN0IGludGVsX2VuY29k ZXIgKmF2X2VuY19tYXBbSTkxNV9NQVhfUElQRVNdOw0KPiA+ID4gPiAgDQo+ID4gPiA+ICAJLyoN Cj4gPiA+ID4gIAkgKiBOT1RFOiBUaGlzIGlzIHRoZSBkcmkxL3VtcyBkdW5nZW9uLCBkb24ndCBh ZGQgc3R1ZmYgaGVyZS4gWW91ciBwYXRjaA0KPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfYXVkaW8uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F1 ZGlvLmMNCj4gPiA+ID4gaW5kZXggOGM0OTNkZS4uY2JlNDRjOCAxMDA2NDQNCj4gPiA+ID4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXVkaW8uYw0KPiA+ID4gPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5jDQo+ID4gPiA+IEBAIC01MDAsNiArNTAwLDkg QEAgdm9pZCBpbnRlbF9hdWRpb19jb2RlY19lbmFibGUoc3RydWN0IGludGVsX2VuY29kZXIgKmlu dGVsX2VuY29kZXIpDQo+ID4gPiA+ICAJc3RydWN0IGk5MTVfYXVkaW9fY29tcG9uZW50ICphY29t cCA9IGRldl9wcml2LT5hdWRpb19jb21wb25lbnQ7DQo+ID4gPiA+ICAJc3RydWN0IGludGVsX2Rp Z2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQgPSBlbmNfdG9fZGlnX3BvcnQoZW5jb2Rlcik7DQo+ ID4gPiA+ICAJZW51bSBwb3J0IHBvcnQgPSBpbnRlbF9kaWdfcG9ydC0+cG9ydDsNCj4gPiA+ID4g KwllbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7DQo+ID4gPiA+ICsJaW50IGRldl9pZCA9IC0x Ow0KPiA+ID4gPiArDQo+ID4gPiA+ICANCj4gPiA+ID4gIAljb25uZWN0b3IgPSBkcm1fc2VsZWN0 X2VsZChlbmNvZGVyKTsNCj4gPiA+ID4gIAlpZiAoIWNvbm5lY3RvcikNCj4gPiA+ID4gQEAgLTUy MiwxNCArNTI1LDE5IEBAIHZvaWQgaW50ZWxfYXVkaW9fY29kZWNfZW5hYmxlKHN0cnVjdCBpbnRl bF9lbmNvZGVyICppbnRlbF9lbmNvZGVyKQ0KPiA+ID4gPiAgCQlkZXZfcHJpdi0+ZGlzcGxheS5h dWRpb19jb2RlY19lbmFibGUoY29ubmVjdG9yLCBpbnRlbF9lbmNvZGVyLA0KPiA+ID4gPiAgCQkJ CQkJICAgICBhZGp1c3RlZF9tb2RlKTsNCj4gPiA+ID4gIA0KPiA+ID4gPiArCWlmIChpbnRlbF9l bmNvZGVyLT50eXBlID09IElOVEVMX09VVFBVVF9EUF9NU1QpDQo+ID4gPiA+ICsJCWRldl9pZCA9 IHBpcGU7DQo+ID4gPiA+ICsNCj4gPiA+ID4gIAltdXRleF9sb2NrKCZkZXZfcHJpdi0+YXZfbXV0 ZXgpOw0KPiA+ID4gPiAgCWludGVsX2VuY29kZXItPmF1ZGlvX2Nvbm5lY3RvciA9IGNvbm5lY3Rv cjsNCj4gPiA+ID4gKw0KPiA+ID4gPiAgCS8qIHJlZmVycmVkIGluIGF1ZGlvIGNhbGxiYWNrcyAq Lw0KPiA+ID4gPiAtCWRldl9wcml2LT5kaWdfcG9ydF9tYXBbcG9ydF0gPSBpbnRlbF9lbmNvZGVy Ow0KPiA+ID4gPiArCWRldl9wcml2LT5hdl9lbmNfbWFwW3BpcGVdID0gaW50ZWxfZW5jb2RlcjsN Cj4gPiA+ID4gIAltdXRleF91bmxvY2soJmRldl9wcml2LT5hdl9tdXRleCk7DQo+ID4gPiA+ICAN Cj4gPiA+ID4gIAlpZiAoYWNvbXAgJiYgYWNvbXAtPmF1ZGlvX29wcyAmJiBhY29tcC0+YXVkaW9f b3BzLT5waW5fZWxkX25vdGlmeSkNCj4gPiA+ID4gLQkJYWNvbXAtPmF1ZGlvX29wcy0+cGluX2Vs ZF9ub3RpZnkoYWNvbXAtPmF1ZGlvX29wcy0+YXVkaW9fcHRyLCAoaW50KSBwb3J0KTsNCj4gPiA+ ID4gKwkJYWNvbXAtPmF1ZGlvX29wcy0+cGluX2VsZF9ub3RpZnkoYWNvbXAtPmF1ZGlvX29wcy0+ YXVkaW9fcHRyLA0KPiA+ID4gPiArCQkJCQkJIChpbnQpIHBvcnQsIGRldl9pZCk7DQo+ID4gPiA+ ICB9DQo+ID4gPiA+ICANCj4gPiA+ID4gIC8qKg0KPiA+ID4gPiBAQCAtNTQyLDIyICs1NTAsMjkg QEAgdm9pZCBpbnRlbF9hdWRpb19jb2RlY19lbmFibGUoc3RydWN0IGludGVsX2VuY29kZXIgKmlu dGVsX2VuY29kZXIpDQo+ID4gPiA+ICB2b2lkIGludGVsX2F1ZGlvX2NvZGVjX2Rpc2FibGUoc3Ry dWN0IGludGVsX2VuY29kZXIgKmludGVsX2VuY29kZXIpDQo+ID4gPiA+ICB7DQo+ID4gPiA+ICAJ c3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyID0gJmludGVsX2VuY29kZXItPmJhc2U7DQo+ID4g PiA+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGVuY29kZXItPmNy dGMpOw0KPiA+ID4gPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBlbmNvZGVyLT5kZXY7DQo+ ID4gPiA+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYp Ow0KPiA+ID4gPiAgCXN0cnVjdCBpOTE1X2F1ZGlvX2NvbXBvbmVudCAqYWNvbXAgPSBkZXZfcHJp di0+YXVkaW9fY29tcG9uZW50Ow0KPiA+ID4gPiAgCXN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQg KmludGVsX2RpZ19wb3J0ID0gZW5jX3RvX2RpZ19wb3J0KGVuY29kZXIpOw0KPiA+ID4gPiAgCWVu dW0gcG9ydCBwb3J0ID0gaW50ZWxfZGlnX3BvcnQtPnBvcnQ7DQo+ID4gPiA+ICsJZW51bSBwaXBl IHBpcGUgPSBjcnRjLT5waXBlOw0KPiA+ID4gPiArCWludCBkZXZfaWQgPSAtMTsNCj4gPiA+ID4g Kw0KPiA+ID4gPiArCWlmIChpbnRlbF9lbmNvZGVyLT50eXBlID09IElOVEVMX09VVFBVVF9EUF9N U1QpDQo+ID4gPiA+ICsJCWRldl9pZCA9IHBpcGU7DQo+ID4gPiA+ICANCj4gPiA+ID4gIAlpZiAo ZGV2X3ByaXYtPmRpc3BsYXkuYXVkaW9fY29kZWNfZGlzYWJsZSkNCj4gPiA+ID4gIAkJZGV2X3By aXYtPmRpc3BsYXkuYXVkaW9fY29kZWNfZGlzYWJsZShpbnRlbF9lbmNvZGVyKTsNCj4gPiA+ID4g IA0KPiA+ID4gPiAgCW11dGV4X2xvY2soJmRldl9wcml2LT5hdl9tdXRleCk7DQo+ID4gPiA+ICAJ aW50ZWxfZW5jb2Rlci0+YXVkaW9fY29ubmVjdG9yID0gTlVMTDsNCj4gPiA+ID4gLQlkZXZfcHJp di0+ZGlnX3BvcnRfbWFwW3BvcnRdID0gTlVMTDsNCj4gPiA+ID4gKwlkZXZfcHJpdi0+YXZfZW5j X21hcFtwaXBlXSA9IE5VTEw7DQo+ID4gPiA+ICAJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+YXZf bXV0ZXgpOw0KPiA+ID4gPiAgDQo+ID4gPiA+ICAJaWYgKGFjb21wICYmIGFjb21wLT5hdWRpb19v cHMgJiYgYWNvbXAtPmF1ZGlvX29wcy0+cGluX2VsZF9ub3RpZnkpDQo+ID4gPiA+IC0JCWFjb21w LT5hdWRpb19vcHMtPnBpbl9lbGRfbm90aWZ5KGFjb21wLT5hdWRpb19vcHMtPmF1ZGlvX3B0ciwg KGludCkgcG9ydCk7DQo+ID4gPiA+ICsJCWFjb21wLT5hdWRpb19vcHMtPnBpbl9lbGRfbm90aWZ5 KGFjb21wLT5hdWRpb19vcHMtPmF1ZGlvX3B0ciwNCj4gPiA+ID4gKwkJCQkJCSAoaW50KSBwb3J0 LCBkZXZfaWQpOw0KPiA+ID4gPiAgfQ0KPiA+ID4gPiAgDQo+ID4gPiA+ICAvKioNCj4gPiA+ID4g QEAgLTYyOCw4ICs2NDMsMzIgQEAgc3RhdGljIGludCBpOTE1X2F1ZGlvX2NvbXBvbmVudF9nZXRf Y2RjbGtfZnJlcShzdHJ1Y3QgZGV2aWNlICpkZXYpDQo+ID4gPiA+ICAJcmV0dXJuIGRldl9wcml2 LT5jZGNsa19mcmVxOw0KPiA+ID4gPiAgfQ0KPiA+ID4gPiAgDQo+ID4gPiA+IC1zdGF0aWMgaW50 IGk5MTVfYXVkaW9fY29tcG9uZW50X3N5bmNfYXVkaW9fcmF0ZShzdHJ1Y3QgZGV2aWNlICpkZXYs DQo+ID4gPiA+IC0JCQkJCQlpbnQgcG9ydCwgaW50IHJhdGUpDQo+ID4gPiA+ICtzdGF0aWMgc3Ry dWN0IGludGVsX2VuY29kZXIgKmdldF9zYXZlZF9lbmNvZGVyKHN0cnVjdCBpbnRlbF9lbmNvZGVy ICphdl9lbmNfbWFwW10sDQo+ID4gPiA+ICsJCQkJCSAgICAgICBpbnQgcG9ydCwgaW50IGRldl9p ZCkNCj4gPiA+ID4gK3sNCj4gPiA+ID4gKw0KPiA+ID4gPiArCWVudW0gcGlwZSBwaXBlOw0KPiA+ ID4gPiArCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcjsNCj4gPiA+ID4gKw0KPiA+ID4gPiAr CWlmIChkZXZfaWQgPj0gMCAmJiBkZXZfaWQgPCBJOTE1X01BWF9QSVBFUykNCj4gPiA+ID4gKwkJ cmV0dXJuIGF2X2VuY19tYXBbZGV2X2lkXTsNCj4gPiA+ID4gKw0KPiA+ID4gPiArCWZvciAocGlw ZSA9IFBJUEVfQTsgcGlwZSA8IEk5MTVfTUFYX1BJUEVTOyBwaXBlKyspIHsNCj4gPiA+ID4gKw0K PiA+ID4gPiArCQlpZiAoIWF2X2VuY19tYXBbcGlwZV0pDQo+ID4gPiA+ICsJCQljb250aW51ZTsN Cj4gPiA+ID4gKw0KPiA+ID4gPiArCQllbmNvZGVyID0gJmF2X2VuY19tYXBbcGlwZV0tPmJhc2U7 DQo+ID4gPiA+ICsJCWlmIChwb3J0ID09IGVuY190b19kaWdfcG9ydChlbmNvZGVyKS0+cG9ydCkN Cj4gPiA+ID4gKwkJCXJldHVybiBhdl9lbmNfbWFwW3BpcGVdOw0KPiA+ID4gPiArCX0NCj4gPiA+ ID4gKw0KPiA+ID4gPiArCXJldHVybiBOVUxMOw0KPiA+ID4gPiArDQo+ID4gPiA+ICt9DQo+ID4g PiA+ICsNCj4gPiA+ID4gK3N0YXRpYyBpbnQgaTkxNV9hdWRpb19jb21wb25lbnRfc3luY19hdWRp b19yYXRlKHN0cnVjdCBkZXZpY2UgKmRldiwgaW50IHBvcnQsDQo+ID4gPiA+ICsJCQkJCQlpbnQg ZGV2X2lkLCBpbnQgcmF0ZSkNCj4gPiA+ID4gIHsNCj4gPiA+ID4gIAlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXZfdG9faTkxNShkZXYpOw0KPiA+ID4gPiAgCXN0cnVjdCBp bnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyOw0KPiA+ID4gPiBAQCAtNjQ5LDE1ICs2ODgsMTYg QEAgc3RhdGljIGludCBpOTE1X2F1ZGlvX2NvbXBvbmVudF9zeW5jX2F1ZGlvX3JhdGUoc3RydWN0 IGRldmljZSAqZGV2LA0KPiA+ID4gPiAgCQlyZXR1cm4gMDsNCj4gPiA+ID4gIA0KPiA+ID4gPiAg CW11dGV4X2xvY2soJmRldl9wcml2LT5hdl9tdXRleCk7DQo+ID4gPiA+ICsNCj4gPiA+ID4gIAkv KiAxLiBnZXQgdGhlIHBpcGUgKi8NCj4gPiA+ID4gLQlpbnRlbF9lbmNvZGVyID0gZGV2X3ByaXYt PmRpZ19wb3J0X21hcFtwb3J0XTsNCj4gPiA+ID4gLQkvKiBpbnRlbF9lbmNvZGVyIG1pZ2h0IGJl IE5VTEwgZm9yIERQIE1TVCAqLw0KPiA+ID4gPiArCWludGVsX2VuY29kZXIgPSBnZXRfc2F2ZWRf ZW5jb2RlcihkZXZfcHJpdi0+YXZfZW5jX21hcCwgcG9ydCwgZGV2X2lkKTsNCj4gPiA+ID4gIAlp ZiAoIWludGVsX2VuY29kZXIgfHwgIWludGVsX2VuY29kZXItPmJhc2UuY3J0YyB8fA0KPiA+ID4g PiAgCSAgICBpbnRlbF9lbmNvZGVyLT50eXBlICE9IElOVEVMX09VVFBVVF9IRE1JKSB7DQo+ID4g PiA+ICAJCURSTV9ERUJVR19LTVMoIm5vIHZhbGlkIHBvcnQgJWNcbiIsIHBvcnRfbmFtZShwb3J0 KSk7DQo+ID4gPiA+ICAJCWVyciA9IC1FTk9ERVY7DQo+ID4gPiA+ICAJCWdvdG8gdW5sb2NrOw0K PiA+ID4gPiAgCX0NCj4gPiA+ID4gKw0KPiA+ID4gPiAgCWNydGMgPSB0b19pbnRlbF9jcnRjKGlu dGVsX2VuY29kZXItPmJhc2UuY3J0Yyk7DQo+ID4gPiA+ICAJcGlwZSA9IGNydGMtPnBpcGU7DQo+ ID4gPiA+ICAJaWYgKHBpcGUgPT0gSU5WQUxJRF9QSVBFKSB7DQo+ID4gPiA+IEBAIC03MDIsNyAr NzQyLDcgQEAgc3RhdGljIGludCBpOTE1X2F1ZGlvX2NvbXBvbmVudF9zeW5jX2F1ZGlvX3JhdGUo c3RydWN0IGRldmljZSAqZGV2LA0KPiA+ID4gPiAgfQ0KPiA+ID4gPiAgDQo+ID4gPiA+ICBzdGF0 aWMgaW50IGk5MTVfYXVkaW9fY29tcG9uZW50X2dldF9lbGQoc3RydWN0IGRldmljZSAqZGV2LCBp bnQgcG9ydCwNCj4gPiA+ID4gLQkJCQkJYm9vbCAqZW5hYmxlZCwNCj4gPiA+ID4gKwkJCQkJaW50 IGRldl9pZCwgYm9vbCAqZW5hYmxlZCwNCj4gPiA+ID4gIAkJCQkJdW5zaWduZWQgY2hhciAqYnVm LCBpbnQgbWF4X2J5dGVzKQ0KPiA+ID4gPiAgew0KPiA+ID4gPiAgCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IGRldl90b19pOTE1KGRldik7DQo+ID4gPiA+IEBAIC03MTAsMTcg Kzc1MCwyMSBAQCBzdGF0aWMgaW50IGk5MTVfYXVkaW9fY29tcG9uZW50X2dldF9lbGQoc3RydWN0 IGRldmljZSAqZGV2LCBpbnQgcG9ydCwNCj4gPiA+ID4gIAljb25zdCB1OCAqZWxkOw0KPiA+ID4g PiAgCWludCByZXQgPSAtRUlOVkFMOw0KPiA+ID4gPiAgDQo+ID4gPiA+ICsNCj4gPiA+ID4gIAlt dXRleF9sb2NrKCZkZXZfcHJpdi0+YXZfbXV0ZXgpOw0KPiA+ID4gPiAtCWludGVsX2VuY29kZXIg PSBkZXZfcHJpdi0+ZGlnX3BvcnRfbWFwW3BvcnRdOw0KPiA+ID4gPiAtCS8qIGludGVsX2VuY29k ZXIgbWlnaHQgYmUgTlVMTCBmb3IgRFAgTVNUICovDQo+ID4gPiA+IC0JaWYgKGludGVsX2VuY29k ZXIpIHsNCj4gPiA+ID4gLQkJcmV0ID0gMDsNCj4gPiA+ID4gLQkJKmVuYWJsZWQgPSBpbnRlbF9l bmNvZGVyLT5hdWRpb19jb25uZWN0b3IgIT0gTlVMTDsNCj4gPiA+ID4gLQkJaWYgKCplbmFibGVk KSB7DQo+ID4gPiA+IC0JCQllbGQgPSBpbnRlbF9lbmNvZGVyLT5hdWRpb19jb25uZWN0b3ItPmVs ZDsNCj4gPiA+ID4gLQkJCXJldCA9IGRybV9lbGRfc2l6ZShlbGQpOw0KPiA+ID4gPiAtCQkJbWVt Y3B5KGJ1ZiwgZWxkLCBtaW4obWF4X2J5dGVzLCByZXQpKTsNCj4gPiA+ID4gLQkJfQ0KPiA+ID4g PiArDQo+ID4gPiA+ICsJaW50ZWxfZW5jb2RlciA9IGdldF9zYXZlZF9lbmNvZGVyKGRldl9wcml2 LT5hdl9lbmNfbWFwLCBwb3J0LCBkZXZfaWQpOw0KPiA+ID4gPiArCWlmICghaW50ZWxfZW5jb2Rl cikgew0KPiA+ID4gPiArCQltdXRleF91bmxvY2soJmRldl9wcml2LT5hdl9tdXRleCk7DQo+ID4g PiA+ICsJCXJldHVybiByZXQ7DQo+ID4gPiA+ICsJfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsJcmV0 ID0gMDsNCj4gPiA+ID4gKwkqZW5hYmxlZCA9IGludGVsX2VuY29kZXItPmF1ZGlvX2Nvbm5lY3Rv ciAhPSBOVUxMOw0KPiA+ID4gPiArCWlmICgqZW5hYmxlZCkgew0KPiA+ID4gPiArCQllbGQgPSBp bnRlbF9lbmNvZGVyLT5hdWRpb19jb25uZWN0b3ItPmVsZDsNCj4gPiA+ID4gKwkJcmV0ID0gZHJt X2VsZF9zaXplKGVsZCk7DQo+ID4gPiA+ICsJCW1lbWNweShidWYsIGVsZCwgbWluKG1heF9ieXRl cywgcmV0KSk7DQo+ID4gPiA+ICAJfQ0KPiA+ID4gPiAgDQo+ID4gPiA+ICAJbXV0ZXhfdW5sb2Nr KCZkZXZfcHJpdi0+YXZfbXV0ZXgpOw0KPiA+ID4gPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0v aTkxNV9jb21wb25lbnQuaCBiL2luY2x1ZGUvZHJtL2k5MTVfY29tcG9uZW50LmgNCj4gPiA+ID4g aW5kZXggYjQ2ZmEwZS4uMTQxOWM5OCAxMDA2NDQNCj4gPiA+ID4gLS0tIGEvaW5jbHVkZS9kcm0v aTkxNV9jb21wb25lbnQuaA0KPiA+ID4gPiArKysgYi9pbmNsdWRlL2RybS9pOTE1X2NvbXBvbmVu dC5oDQo+ID4gPiA+IEBAIC02NCw3ICs2NCw3IEBAIHN0cnVjdCBpOTE1X2F1ZGlvX2NvbXBvbmVu dF9vcHMgew0KPiA+ID4gPiAgCSAqIENhbGxlZCBmcm9tIGF1ZGlvIGRyaXZlci4gQWZ0ZXIgYXVk aW8gZHJpdmVyIHNldHMgdGhlDQo+ID4gPiA+ICAJICogc2FtcGxlIHJhdGUsIGl0IHdpbGwgY2Fs bCB0aGlzIGZ1bmN0aW9uIHRvIHNldCBuL2N0cw0KPiA+ID4gPiAgCSAqLw0KPiA+ID4gPiAtCWlu dCAoKnN5bmNfYXVkaW9fcmF0ZSkoc3RydWN0IGRldmljZSAqLCBpbnQgcG9ydCwgaW50IHJhdGUp Ow0KPiA+ID4gPiArCWludCAoKnN5bmNfYXVkaW9fcmF0ZSkoc3RydWN0IGRldmljZSAqLCBpbnQg cG9ydCwgaW50IGRldl9pZCwgaW50IHJhdGUpOw0KPiA+ID4gPiAgCS8qKg0KPiA+ID4gPiAgCSAq IEBnZXRfZWxkOiBmaWxsIHRoZSBhdWRpbyBzdGF0ZSBhbmQgRUxEIGJ5dGVzIGZvciB0aGUgZ2l2 ZW4gcG9ydA0KPiA+ID4gPiAgCSAqDQo+ID4gPiA+IEBAIC03Nyw3ICs3Nyw3IEBAIHN0cnVjdCBp OTE1X2F1ZGlvX2NvbXBvbmVudF9vcHMgew0KPiA+ID4gPiAgCSAqIE5vdGUgdGhhdCB0aGUgcmV0 dXJuZWQgc2l6ZSBtYXkgYmUgb3ZlciBAbWF4X2J5dGVzLiAgVGhlbiBpdA0KPiA+ID4gPiAgCSAq IGltcGxpZXMgdGhhdCBvbmx5IGEgcGFydCBvZiBFTEQgaGFzIGJlZW4gY29waWVkIHRvIHRoZSBi dWZmZXIuDQo+ID4gPiA+ICAJICovDQo+ID4gPiA+IC0JaW50ICgqZ2V0X2VsZCkoc3RydWN0IGRl dmljZSAqLCBpbnQgcG9ydCwgYm9vbCAqZW5hYmxlZCwNCj4gPiA+ID4gKwlpbnQgKCpnZXRfZWxk KShzdHJ1Y3QgZGV2aWNlICosIGludCBwb3J0LCBpbnQgZGV2X2lkLCBib29sICplbmFibGVkLA0K PiA+ID4gPiAgCQkgICAgICAgdW5zaWduZWQgY2hhciAqYnVmLCBpbnQgbWF4X2J5dGVzKTsNCj4g PiA+ID4gIH07DQo+ID4gPiA+ICANCj4gPiA+ID4gQEAgLTk3LDcgKzk3LDcgQEAgc3RydWN0IGk5 MTVfYXVkaW9fY29tcG9uZW50X2F1ZGlvX29wcyB7DQo+ID4gPiA+ICAJICogc3RhdHVzIGFjY29y ZGluZ2x5IChldmVuIHdoZW4gdGhlIEhEQSBjb250cm9sbGVyIGlzIGluIHBvd2VyIHNhdmUNCj4g PiA+ID4gIAkgKiBtb2RlKS4NCj4gPiA+ID4gIAkgKi8NCj4gPiA+ID4gLQl2b2lkICgqcGluX2Vs ZF9ub3RpZnkpKHZvaWQgKmF1ZGlvX3B0ciwgaW50IHBvcnQpOw0KPiA+ID4gPiArCXZvaWQgKCpw aW5fZWxkX25vdGlmeSkodm9pZCAqYXVkaW9fcHRyLCBpbnQgcG9ydCwgaW50IGRldl9pZCk7DQo+ ID4gPiA+ICB9Ow0KPiA+ID4gPiAgDQo+ID4gPiA+ICAvKioNCj4gPiA+ID4gZGlmZiAtLWdpdCBh L2luY2x1ZGUvc291bmQvaGRhX2k5MTUuaCBiL2luY2x1ZGUvc291bmQvaGRhX2k5MTUuaA0KPiA+ ID4gPiBpbmRleCA3OTZjYWJmLi41YWI5NzJlIDEwMDY0NA0KPiA+ID4gPiAtLS0gYS9pbmNsdWRl L3NvdW5kL2hkYV9pOTE1LmgNCj4gPiA+ID4gKysrIGIvaW5jbHVkZS9zb3VuZC9oZGFfaTkxNS5o DQo+ID4gPiA+IEBAIC0xMCw4ICsxMCw5IEBADQo+ID4gPiA+ICBpbnQgc25kX2hkYWNfc2V0X2Nv ZGVjX3dha2V1cChzdHJ1Y3QgaGRhY19idXMgKmJ1cywgYm9vbCBlbmFibGUpOw0KPiA+ID4gPiAg aW50IHNuZF9oZGFjX2Rpc3BsYXlfcG93ZXIoc3RydWN0IGhkYWNfYnVzICpidXMsIGJvb2wgZW5h YmxlKTsNCj4gPiA+ID4gIHZvaWQgc25kX2hkYWNfaTkxNV9zZXRfYmNsayhzdHJ1Y3QgaGRhY19i dXMgKmJ1cyk7DQo+ID4gPiA+IC1pbnQgc25kX2hkYWNfc3luY19hdWRpb19yYXRlKHN0cnVjdCBo ZGFjX2RldmljZSAqY29kZWMsIGhkYV9uaWRfdCBuaWQsIGludCByYXRlKTsNCj4gPiA+ID4gLWlu dCBzbmRfaGRhY19hY29tcF9nZXRfZWxkKHN0cnVjdCBoZGFjX2RldmljZSAqY29kZWMsIGhkYV9u aWRfdCBuaWQsDQo+ID4gPiA+ICtpbnQgc25kX2hkYWNfc3luY19hdWRpb19yYXRlKHN0cnVjdCBo ZGFjX2RldmljZSAqY29kZWMsIGhkYV9uaWRfdCBuaWQsDQo+ID4gPiA+ICsJCQkgICAgIGludCBk ZXZfaWQsIGludCByYXRlKTsNCj4gPiA+ID4gK2ludCBzbmRfaGRhY19hY29tcF9nZXRfZWxkKHN0 cnVjdCBoZGFjX2RldmljZSAqY29kZWMsIGhkYV9uaWRfdCBuaWQsIGludCBkZXZfaWQsDQo+ID4g PiA+ICAJCQkgICBib29sICphdWRpb19lbmFibGVkLCBjaGFyICpidWZmZXIsIGludCBtYXhfYnl0 ZXMpOw0KPiA+ID4gPiAgaW50IHNuZF9oZGFjX2k5MTVfaW5pdChzdHJ1Y3QgaGRhY19idXMgKmJ1 cyk7DQo+ID4gPiA+ICBpbnQgc25kX2hkYWNfaTkxNV9leGl0KHN0cnVjdCBoZGFjX2J1cyAqYnVz KTsNCj4gPiA+ID4gQEAgLTI5LDEzICszMCwxMyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgc25kX2hk YWNfaTkxNV9zZXRfYmNsayhzdHJ1Y3QgaGRhY19idXMgKmJ1cykNCj4gPiA+ID4gIHsNCj4gPiA+ ID4gIH0NCj4gPiA+ID4gIHN0YXRpYyBpbmxpbmUgaW50IHNuZF9oZGFjX3N5bmNfYXVkaW9fcmF0 ZShzdHJ1Y3QgaGRhY19kZXZpY2UgKmNvZGVjLA0KPiA+ID4gPiAtCQkJCQkgICBoZGFfbmlkX3Qg bmlkLCBpbnQgcmF0ZSkNCj4gPiA+ID4gKwkJCQkJICAgaGRhX25pZF90IG5pZCwgaW50IGRldl9p ZCwgaW50IHJhdGUpDQo+ID4gPiA+ICB7DQo+ID4gPiA+ICAJcmV0dXJuIDA7DQo+ID4gPiA+ICB9 DQo+ID4gPiA+ICBzdGF0aWMgaW5saW5lIGludCBzbmRfaGRhY19hY29tcF9nZXRfZWxkKHN0cnVj dCBoZGFjX2RldmljZSAqY29kZWMsIGhkYV9uaWRfdCBuaWQsDQo+ID4gPiA+IC0JCQkJCSBib29s ICphdWRpb19lbmFibGVkLCBjaGFyICpidWZmZXIsDQo+ID4gPiA+IC0JCQkJCSBpbnQgbWF4X2J5 dGVzKQ0KPiA+ID4gPiArCQkJCQkgaW50IGRldl9pZCwgYm9vbCAqYXVkaW9fZW5hYmxlZCwNCj4g PiA+ID4gKwkJCQkJIGNoYXIgKmJ1ZmZlciwgaW50IG1heF9ieXRlcykNCj4gPiA+ID4gIHsNCj4g PiA+ID4gIAlyZXR1cm4gLUVOT0RFVjsNCj4gPiA+ID4gIH0NCj4gPiA+ID4gZGlmZiAtLWdpdCBh L3NvdW5kL2hkYS9oZGFjX2k5MTUuYyBiL3NvdW5kL2hkYS9oZGFjX2k5MTUuYw0KPiA+ID4gPiBp bmRleCBjOWFmMDIyLi42ZWE2M2FjIDEwMDY0NA0KPiA+ID4gPiAtLS0gYS9zb3VuZC9oZGEvaGRh Y19pOTE1LmMNCj4gPiA+ID4gKysrIGIvc291bmQvaGRhL2hkYWNfaTkxNS5jDQo+ID4gPiA+IEBA IC0yMDEsNyArMjAxLDggQEAgc3RhdGljIGludCBwaW4ycG9ydChzdHJ1Y3QgaGRhY19kZXZpY2Ug KmNvZGVjLCBoZGFfbmlkX3QgcGluX25pZCkNCj4gPiA+ID4gICAqIFRoaXMgZnVuY3Rpb24gc2V0 cyBOL0NUUyB2YWx1ZSBiYXNlZCBvbiB0aGUgZ2l2ZW4gc2FtcGxlIHJhdGUuDQo+ID4gPiA+ICAg KiBSZXR1cm5zIHplcm8gZm9yIHN1Y2Nlc3MsIG9yIGEgbmVnYXRpdmUgZXJyb3IgY29kZS4NCj4g PiA+ID4gICAqLw0KPiA+ID4gPiAtaW50IHNuZF9oZGFjX3N5bmNfYXVkaW9fcmF0ZShzdHJ1Y3Qg aGRhY19kZXZpY2UgKmNvZGVjLCBoZGFfbmlkX3QgbmlkLCBpbnQgcmF0ZSkNCj4gPiA+ID4gK2lu dCBzbmRfaGRhY19zeW5jX2F1ZGlvX3JhdGUoc3RydWN0IGhkYWNfZGV2aWNlICpjb2RlYywgaGRh X25pZF90IG5pZCwNCj4gPiA+ID4gKwkJCSAgICAgaW50IGRldl9pZCwgaW50IHJhdGUpDQo+ID4g PiA+ICB7DQo+ID4gPiA+ICAJc3RydWN0IGhkYWNfYnVzICpidXMgPSBjb2RlYy0+YnVzOw0KPiA+ ID4gPiAgCXN0cnVjdCBpOTE1X2F1ZGlvX2NvbXBvbmVudCAqYWNvbXAgPSBidXMtPmF1ZGlvX2Nv bXBvbmVudDsNCj4gPiA+ID4gQEAgLTIxMiw3ICsyMTMsNyBAQCBpbnQgc25kX2hkYWNfc3luY19h dWRpb19yYXRlKHN0cnVjdCBoZGFjX2RldmljZSAqY29kZWMsIGhkYV9uaWRfdCBuaWQsIGludCBy YXRlKQ0KPiA+ID4gPiAgCXBvcnQgPSBwaW4ycG9ydChjb2RlYywgbmlkKTsNCj4gPiA+ID4gIAlp ZiAocG9ydCA8IDApDQo+ID4gPiA+ICAJCXJldHVybiAtRUlOVkFMOw0KPiA+ID4gPiAtCXJldHVy biBhY29tcC0+b3BzLT5zeW5jX2F1ZGlvX3JhdGUoYWNvbXAtPmRldiwgcG9ydCwgcmF0ZSk7DQo+ ID4gPiA+ICsJcmV0dXJuIGFjb21wLT5vcHMtPnN5bmNfYXVkaW9fcmF0ZShhY29tcC0+ZGV2LCBw b3J0LCBkZXZfaWQsIHJhdGUpOw0KPiA+ID4gPiAgfQ0KPiA+ID4gPiAgRVhQT1JUX1NZTUJPTF9H UEwoc25kX2hkYWNfc3luY19hdWRpb19yYXRlKTsNCj4gPiA+ID4gIA0KPiA+ID4gPiBAQCAtMjM2 LDcgKzIzNyw3IEBAIEVYUE9SVF9TWU1CT0xfR1BMKHNuZF9oZGFjX3N5bmNfYXVkaW9fcmF0ZSk7 DQo+ID4gPiA+ICAgKiB0aHVzIGl0IG1heSBiZSBvdmVyIEBtYXhfYnl0ZXMuICBJZiBpdCdzIG92 ZXIgQG1heF9ieXRlcywgaXQgaW1wbGllcw0KPiA+ID4gPiAgICogdGhhdCBvbmx5IGEgcGFydCBv ZiBFTEQgYnl0ZXMgaGF2ZSBiZWVuIGZldGNoZWQuDQo+ID4gPiA+ICAgKi8NCj4gPiA+ID4gLWlu dCBzbmRfaGRhY19hY29tcF9nZXRfZWxkKHN0cnVjdCBoZGFjX2RldmljZSAqY29kZWMsIGhkYV9u aWRfdCBuaWQsDQo+ID4gPiA+ICtpbnQgc25kX2hkYWNfYWNvbXBfZ2V0X2VsZChzdHJ1Y3QgaGRh Y19kZXZpY2UgKmNvZGVjLCBoZGFfbmlkX3QgbmlkLCBpbnQgZGV2X2lkLA0KPiA+ID4gPiAgCQkJ ICAgYm9vbCAqYXVkaW9fZW5hYmxlZCwgY2hhciAqYnVmZmVyLCBpbnQgbWF4X2J5dGVzKQ0KPiA+ ID4gPiAgew0KPiA+ID4gPiAgCXN0cnVjdCBoZGFjX2J1cyAqYnVzID0gY29kZWMtPmJ1czsNCj4g PiA+ID4gQEAgLTI0OSw3ICsyNTAsNyBAQCBpbnQgc25kX2hkYWNfYWNvbXBfZ2V0X2VsZChzdHJ1 Y3QgaGRhY19kZXZpY2UgKmNvZGVjLCBoZGFfbmlkX3QgbmlkLA0KPiA+ID4gPiAgCXBvcnQgPSBw aW4ycG9ydChjb2RlYywgbmlkKTsNCj4gPiA+ID4gIAlpZiAocG9ydCA8IDApDQo+ID4gPiA+ICAJ CXJldHVybiAtRUlOVkFMOw0KPiA+ID4gPiAtCXJldHVybiBhY29tcC0+b3BzLT5nZXRfZWxkKGFj b21wLT5kZXYsIHBvcnQsIGF1ZGlvX2VuYWJsZWQsDQo+ID4gPiA+ICsJcmV0dXJuIGFjb21wLT5v cHMtPmdldF9lbGQoYWNvbXAtPmRldiwgcG9ydCwgZGV2X2lkLCBhdWRpb19lbmFibGVkLA0KPiA+ ID4gPiAgCQkJCSAgIGJ1ZmZlciwgbWF4X2J5dGVzKTsNCj4gPiA+ID4gIH0NCj4gPiA+ID4gIEVY UE9SVF9TWU1CT0xfR1BMKHNuZF9oZGFjX2Fjb21wX2dldF9lbGQpOw0KPiA+ID4gPiBkaWZmIC0t Z2l0IGEvc291bmQvcGNpL2hkYS9wYXRjaF9oZG1pLmMgYi9zb3VuZC9wY2kvaGRhL3BhdGNoX2hk bWkuYw0KPiA+ID4gPiBpbmRleCBkMGQ1YWQ4Li4wNzdkNDhhIDEwMDY0NA0KPiA+ID4gPiAtLS0g YS9zb3VuZC9wY2kvaGRhL3BhdGNoX2hkbWkuYw0KPiA+ID4gPiArKysgYi9zb3VuZC9wY2kvaGRh L3BhdGNoX2hkbWkuYw0KPiA+ID4gPiBAQCAtMTQ4NSw3ICsxNDg1LDcgQEAgc3RhdGljIHZvaWQg c3luY19lbGRfdmlhX2Fjb21wKHN0cnVjdCBoZGFfY29kZWMgKmNvZGVjLA0KPiA+ID4gPiAgDQo+ ID4gPiA+ICAJbXV0ZXhfbG9jaygmcGVyX3Bpbi0+bG9jayk7DQo+ID4gPiA+ICAJZWxkLT5tb25p dG9yX3ByZXNlbnQgPSBmYWxzZTsNCj4gPiA+ID4gLQlzaXplID0gc25kX2hkYWNfYWNvbXBfZ2V0 X2VsZCgmY29kZWMtPmNvcmUsIHBlcl9waW4tPnBpbl9uaWQsDQo+ID4gPiA+ICsJc2l6ZSA9IHNu ZF9oZGFjX2Fjb21wX2dldF9lbGQoJmNvZGVjLT5jb3JlLCBwZXJfcGluLT5waW5fbmlkLCAtMSwN Cj4gPiA+ID4gIAkJCQkgICAgICAmZWxkLT5tb25pdG9yX3ByZXNlbnQsIGVsZC0+ZWxkX2J1ZmZl ciwNCj4gPiA+ID4gIAkJCQkgICAgICBFTERfTUFYX1NJWkUpOw0KPiA+ID4gPiAgCWlmIChzaXpl ID4gMCkgew0KPiA+ID4gPiBAQCAtMTczOSw3ICsxNzM5LDggQEAgc3RhdGljIGludCBnZW5lcmlj X2hkbWlfcGxheWJhY2tfcGNtX3ByZXBhcmUoc3RydWN0IGhkYV9wY21fc3RyZWFtICpoaW5mbywN Cj4gPiA+ID4gIAkvKiBDYWxsIHN5bmNfYXVkaW9fcmF0ZSB0byBzZXQgdGhlIE4vQ1RTL00gbWFu dWFsbHkgaWYgbmVjZXNzYXJ5ICovDQo+ID4gPiA+ICAJLyogVG9kbzogYWRkIERQMS4yIE1TVCBh dWRpbyBzdXBwb3J0IGxhdGVyICovDQo+ID4gPiA+ICAJaWYgKGNvZGVjX2hhc19hY29tcChjb2Rl YykpDQo+ID4gPiA+IC0JCXNuZF9oZGFjX3N5bmNfYXVkaW9fcmF0ZSgmY29kZWMtPmNvcmUsIHBp bl9uaWQsIHJ1bnRpbWUtPnJhdGUpOw0KPiA+ID4gPiArCQlzbmRfaGRhY19zeW5jX2F1ZGlvX3Jh dGUoJmNvZGVjLT5jb3JlLCBwaW5fbmlkLCAtMSwNCj4gPiA+ID4gKwkJCQkJIHJ1bnRpbWUtPnJh dGUpOw0KPiA+ID4gPiAgDQo+ID4gPiA+ICAJbm9uX3BjbSA9IGNoZWNrX25vbl9wY21fcGVyX2N2 dChjb2RlYywgY3Z0X25pZCk7DQo+ID4gPiA+ICAJbXV0ZXhfbG9jaygmcGVyX3Bpbi0+bG9jayk7 DQo+ID4gPiA+IEBAIC0yMjg1LDcgKzIyODYsNyBAQCBzdGF0aWMgdm9pZCBoYXN3ZWxsX3NldF9w b3dlcl9zdGF0ZShzdHJ1Y3QgaGRhX2NvZGVjICpjb2RlYywgaGRhX25pZF90IGZnLA0KPiA+ID4g PiAgCXNuZF9oZGFfY29kZWNfc2V0X3Bvd2VyX3RvX2FsbChjb2RlYywgZmcsIHBvd2VyX3N0YXRl KTsNCj4gPiA+ID4gIH0NCj4gPiA+ID4gIA0KPiA+ID4gPiAtc3RhdGljIHZvaWQgaW50ZWxfcGlu X2VsZF9ub3RpZnkodm9pZCAqYXVkaW9fcHRyLCBpbnQgcG9ydCkNCj4gPiA+ID4gK3N0YXRpYyB2 b2lkIGludGVsX3Bpbl9lbGRfbm90aWZ5KHZvaWQgKmF1ZGlvX3B0ciwgaW50IHBvcnQsIGludCBk ZXZfaWQpDQo+ID4gPiA+ICB7DQo+ID4gPiA+ICAJc3RydWN0IGhkYV9jb2RlYyAqY29kZWMgPSBh dWRpb19wdHI7DQo+ID4gPiA+ICAJaW50IHBpbl9uaWQ7DQo+ID4gPiA+IC0tIA0KPiA+ID4gPiAy LjUuMA0KPiA+ID4gDQo+ID4gDQo+IA0KDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9pbnRlbC1nZngK