From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v3] drm/i915/dp: DP audio API changes for MST Date: Thu, 11 Aug 2016 10:39:11 +0300 Message-ID: <20160811073911.GE4329@intel.com> 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> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <1470900299.21929.14.camel@dk-H97M-D3H> 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" , "Kp, Jeeja" , "intel-gfx@lists.freedesktop.org" , "alsa-devel@alsa-project.org" , "libin.yang@linux.intel.com" List-Id: alsa-devel@alsa-project.org T24gVGh1LCBBdWcgMTEsIDIwMTYgYXQgMDc6MTA6MzlBTSArMDAwMCwgUGFuZGl5YW4sIERoaW5h a2FyYW4gd3JvdGU6Cj4gT24gVGh1LCAyMDE2LTA4LTExIGF0IDA5OjI2ICswMzAwLCBWaWxsZSBT eXJqw6Rsw6Qgd3JvdGU6Cj4gPiBPbiBXZWQsIEF1ZyAxMCwgMjAxNiBhdCAxMjo0MTo1N1BNIC0w NzAwLCBEaGluYWthcmFuIFBhbmRpeWFuIHdyb3RlOgo+ID4gPiBEUCBNU1QgcHJvdmlkZXMgdGhl IGNhcGFiaWxpdHkgdG8gc2VuZCBtdWx0aXBsZSB2aWRlbyBhbmQgYXVkaW8gc3RyZWFtcwo+ID4g PiB0aHJvdWdoIGEgc2luZ2xlIHBvcnQuIFRoaXMgcmVxdWlyZXMgdGhlIEFQSSdzIGJldHdlZW4g aTkxNSBhbmQgYXVkaW8KPiA+ID4gZHJpdmVycyB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuIG11bHRp cGxlIGF1ZGlvIGNhcGFibGUgZGlzcGxheXMgdGhhdCBjYW4gYmUKPiA+ID4gY29ubmVjdGVkIHRv IGEgcG9ydC4gQ3VycmVudGx5IG9ubHkgdGhlIHBvcnQgaWRlbnRpdHkgaXMgc2hhcmVkIGluIHRo ZQo+ID4gPiBBUElzLiBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgTVNUIHdpdGggYW4gYWRk aXRpb25hbCBwYXJhbWV0ZXIKPiA+ID4gJ2ludCBwaXBlJy4gIFRoZSBleGlzdGluZyBwYXJhbWV0 ZXIgJ3BvcnQnIGRvZXMgbm90IGNoYW5nZSBpdCdzIG1lYW5pbmcuCj4gPiA+IAo+ID4gPiBwaXBl ID0KPiA+ID4gCU1TVAk6IGRpc3BsYXkgcGlwZSB0aGF0IHRoZSBzdHJlYW0gb3JpZ2luYXRlcyBm cm9tCj4gPiA+IAlOb24tTVNUCTogLTEKPiA+ID4gCj4gPiA+IEFmZmVjdGVkIEFQSXM6Cj4gPiA+ IHN0cnVjdCBpOTE1X2F1ZGlvX2NvbXBvbmVudF9vcHMKPiA+ID4gLSAgICAgICBpbnQgKCpzeW5j X2F1ZGlvX3JhdGUpKHN0cnVjdCBkZXZpY2UgKiwgaW50IHBvcnQsIGludCByYXRlKTsKPiA+ID4g KwlpbnQgKCpzeW5jX2F1ZGlvX3JhdGUpKHN0cnVjdCBkZXZpY2UgKiwgaW50IHBvcnQsIGludCBw aXBlLAo+ID4gPiArCSAgICAgaW50IHJhdGUpOwo+ID4gPiAKPiA+ID4gLSAgICAgICBpbnQgKCpn ZXRfZWxkKShzdHJ1Y3QgZGV2aWNlICosIGludCBwb3J0LCBib29sICplbmFibGVkLAo+ID4gPiAt ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpidWYsIGludCBtYXhfYnl0ZXMp Owo+ID4gPiArICAgICAgIGludCAoKmdldF9lbGQpKHN0cnVjdCBkZXZpY2UgKiwgaW50IHBvcnQs IGludCBwaXBlLAo+ID4gPiArCQkgICAgICAgYm9vbCAqZW5hYmxlZCwgdW5zaWduZWQgY2hhciAq YnVmLCBpbnQgbWF4X2J5dGVzKTsKPiA+ID4gCj4gPiA+IHN0cnVjdCBpOTE1X2F1ZGlvX2NvbXBv bmVudF9hdWRpb19vcHMKPiA+ID4gLSAgICAgICB2b2lkICgqcGluX2VsZF9ub3RpZnkpKHZvaWQg KmF1ZGlvX3B0ciwgaW50IHBvcnQpOwo+ID4gPiArICAgICAgIHZvaWQgKCpwaW5fZWxkX25vdGlm eSkodm9pZCAqYXVkaW9fcHRyLCBpbnQgcG9ydCwgaW50IHBpcGUpOwo+ID4gPiAKPiA+ID4gVGhp cyBwYXRjaCBtYWtlcyBkdW1teSBjaGFuZ2VzIGluIHRoZSBhdWRpbyBkcml2ZXJzIChMaWJpbikg Zm9yIGJ1aWxkIHRvCj4gPiA+IHN1Y2NlZWQuIFRoZSBhdWRpbyBzaWRlIGRyaXZlcnMgd2lsbCBz ZW5kIHRoZSByaWdodCAncGlwZScgdmFsdWVzIGluCj4gPiA+IHBhdGNoZXMgdGhhdCB3aWxsIGZv bGxvdy4KPiA+ID4gCj4gPiA+IHYyOgo+ID4gPiBSZW5hbWVkIHRoZSBuZXcgQVBJIHBhcmFtZXRl ciBmcm9tICdkZXZfaWQnIHRvICdwaXBlJy4gKEppbSwgVmlsbGUpCj4gPiA+IEluY2x1ZGVkIEFz b2MgZHJpdmVyIEFQSSBjb21wYXRpYmlsaXR5IGNoYW5nZXMgZnJvbSBKZWVqYS4KPiA+ID4gQWRk ZWQgV0FSTl9PTigpIGZvciBpbnZhbGlkIHBpcGUgaW4gZ2V0X3NhdmVkX2VuY29kZXIoKS4gKFRh a2FzaGkpCj4gPiA+IEFkZGVkIGNvbW1lbnQgZm9yIGF2X2VuY19tYXBbXSBkZWZpbml0aW9uLiAo VGFrYXNoaSkKPiA+ID4gCj4gPiA+IHYzOgo+ID4gPiBGaXhlZCBsb2dpYyBlcnJvciBpbnRyb2R1 Y2VkIHdoaWxlIHJlbmFtaW5nICdkZXZfaWQnIGFzICdwaXBlJyAoVmlsbGUpCj4gPiA+IFJlbmFt ZWQgZ2V0X3NhdmVkX2VuY29kZXIoKSB0byBnZXRfc2F2ZWRfZW5jKCkgdG8gcmVkdWNlIGxpbmUg bGVuZ3RoCj4gPiA+IAo+ID4gPiBTaWduZWQtb2ZmLWJ5OiBEaGluYWthcmFuIFBhbmRpeWFuIDxk aGluYWthcmFuLnBhbmRpeWFuQGludGVsLmNvbT4KPiA+ID4gLS0tCj4gPiA+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgIHwgIDMgKy0KPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2F1ZGlvLmMgfCA5MyArKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0t LS0tLQo+ID4gPiAgaW5jbHVkZS9kcm0vaTkxNV9jb21wb25lbnQuaCAgICAgICB8ICA2ICstLQo+ ID4gPiAgaW5jbHVkZS9zb3VuZC9oZGFfaTkxNS5oICAgICAgICAgICB8IDExICsrKy0tCj4gPiA+ ICBzb3VuZC9oZGEvaGRhY19pOTE1LmMgICAgICAgICAgICAgIHwgIDkgKystLQo+ID4gPiAgc291 bmQvcGNpL2hkYS9wYXRjaF9oZG1pLmMgICAgICAgICB8ICA3ICstLQo+ID4gPiAgc291bmQvc29j L2NvZGVjcy9oZGFjX2hkbWkuYyAgICAgICB8ICAyICstCj4gPiA+ICA3IGZpbGVzIGNoYW5nZWQs IDg2IGluc2VydGlvbnMoKyksIDQ1IGRlbGV0aW9ucygtKQo+ID4gPiAKPiA+ID4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5oCj4gPiA+IGluZGV4IGMzNmQxNzYuLjhlNGE4OGYgMTAwNjQ0Cj4gPiA+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiA+ID4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ID4gPiBAQCAtMjAzNiw3ICsyMDM2LDggQEAgc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgewo+ID4gPiAgCS8qIHBlcmZvcm0gUEhZIHN0YXRlIHNhbml0eSBj aGVja3M/ICovCj4gPiA+ICAJYm9vbCBjaHZfcGh5X2Fzc2VydFsyXTsKPiA+ID4gIAo+ID4gPiAt CXN0cnVjdCBpbnRlbF9lbmNvZGVyICpkaWdfcG9ydF9tYXBbSTkxNV9NQVhfUE9SVFNdOwo+ID4g PiArCS8qIFVzZWQgdG8gc2F2ZSB0aGUgcGlwZS10by1lbmNvZGVyIG1hcHBpbmcgZm9yIGF1ZGlv ICovCj4gPiA+ICsJc3RydWN0IGludGVsX2VuY29kZXIgKmF2X2VuY19tYXBbSTkxNV9NQVhfUElQ RVNdOwo+ID4gPiAgCj4gPiA+ICAJLyoKPiA+ID4gIAkgKiBOT1RFOiBUaGlzIGlzIHRoZSBkcmkx L3VtcyBkdW5nZW9uLCBkb24ndCBhZGQgc3R1ZmYgaGVyZS4gWW91ciBwYXRjaAo+ID4gPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXVkaW8uYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2F1ZGlvLmMKPiA+ID4gaW5kZXggZWYyMDg3NS4uYTc0NjdlYSAxMDA2 NDQKPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXVkaW8uYwo+ID4gPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5jCj4gPiA+IEBAIC01MDAsNiAr NTAwLDcgQEAgdm9pZCBpbnRlbF9hdWRpb19jb2RlY19lbmFibGUoc3RydWN0IGludGVsX2VuY29k ZXIgKmludGVsX2VuY29kZXIpCj4gPiA+ICAJc3RydWN0IGk5MTVfYXVkaW9fY29tcG9uZW50ICph Y29tcCA9IGRldl9wcml2LT5hdWRpb19jb21wb25lbnQ7Cj4gPiA+ICAJc3RydWN0IGludGVsX2Rp Z2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQgPSBlbmNfdG9fZGlnX3BvcnQoZW5jb2Rlcik7Cj4g PiA+ICAJZW51bSBwb3J0IHBvcnQgPSBpbnRlbF9kaWdfcG9ydC0+cG9ydDsKPiA+ID4gKwllbnVt IHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7Cj4gPiA+ICAKPiA+ID4gIAljb25uZWN0b3IgPSBkcm1f c2VsZWN0X2VsZChlbmNvZGVyKTsKPiA+ID4gIAlpZiAoIWNvbm5lY3RvcikKPiA+ID4gQEAgLTUy NCwxMiArNTI1LDE4IEBAIHZvaWQgaW50ZWxfYXVkaW9fY29kZWNfZW5hYmxlKHN0cnVjdCBpbnRl bF9lbmNvZGVyICppbnRlbF9lbmNvZGVyKQo+ID4gPiAgCj4gPiA+ICAJbXV0ZXhfbG9jaygmZGV2 X3ByaXYtPmF2X211dGV4KTsKPiA+ID4gIAlpbnRlbF9lbmNvZGVyLT5hdWRpb19jb25uZWN0b3Ig PSBjb25uZWN0b3I7Cj4gPiA+ICsKPiA+ID4gIAkvKiByZWZlcnJlZCBpbiBhdWRpbyBjYWxsYmFj a3MgKi8KPiA+ID4gLQlkZXZfcHJpdi0+ZGlnX3BvcnRfbWFwW3BvcnRdID0gaW50ZWxfZW5jb2Rl cjsKPiA+ID4gKwlkZXZfcHJpdi0+YXZfZW5jX21hcFtwaXBlXSA9IGludGVsX2VuY29kZXI7Cj4g PiA+ICAJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+YXZfbXV0ZXgpOwo+ID4gPiAgCj4gPiA+ICsJ LyogYXVkaW8gZHJpdmVycyBleHBlY3QgcGlwZSA9IC0xIHRvIGluZGljYXRlIE5vbi1NU1QgY2Fz ZXMgKi8KPiA+ID4gKwlpZiAoaW50ZWxfZW5jb2Rlci0+dHlwZSAhPSBJTlRFTF9PVVRQVVRfRFBf TVNUKQo+ID4gPiArCQlwaXBlID0gLTE7Cj4gPiA+ICsKPiA+ID4gIAlpZiAoYWNvbXAgJiYgYWNv bXAtPmF1ZGlvX29wcyAmJiBhY29tcC0+YXVkaW9fb3BzLT5waW5fZWxkX25vdGlmeSkKPiA+ID4g LQkJYWNvbXAtPmF1ZGlvX29wcy0+cGluX2VsZF9ub3RpZnkoYWNvbXAtPmF1ZGlvX29wcy0+YXVk aW9fcHRyLCAoaW50KSBwb3J0KTsKPiA+ID4gKwkJYWNvbXAtPmF1ZGlvX29wcy0+cGluX2VsZF9u b3RpZnkoYWNvbXAtPmF1ZGlvX29wcy0+YXVkaW9fcHRyLAo+ID4gPiArCQkJCQkJIChpbnQpIHBv cnQsIChpbnQpIHBpcGUpOwo+ID4gPiAgfQo+ID4gPiAgCj4gPiA+ICAvKioKPiA+ID4gQEAgLTU0 MiwyMiArNTQ5LDI5IEBAIHZvaWQgaW50ZWxfYXVkaW9fY29kZWNfZW5hYmxlKHN0cnVjdCBpbnRl bF9lbmNvZGVyICppbnRlbF9lbmNvZGVyKQo+ID4gPiAgdm9pZCBpbnRlbF9hdWRpb19jb2RlY19k aXNhYmxlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyKQo+ID4gPiAgewo+ID4g PiAgCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciA9ICZpbnRlbF9lbmNvZGVyLT5iYXNlOwo+ ID4gPiArCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhlbmNvZGVyLT5j cnRjKTsKPiA+ID4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZW5jb2Rlci0+ZGV2Owo+ID4g PiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiA+ ID4gIAlzdHJ1Y3QgaTkxNV9hdWRpb19jb21wb25lbnQgKmFjb21wID0gZGV2X3ByaXYtPmF1ZGlv X2NvbXBvbmVudDsKPiA+ID4gIAlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdf cG9ydCA9IGVuY190b19kaWdfcG9ydChlbmNvZGVyKTsKPiA+ID4gIAllbnVtIHBvcnQgcG9ydCA9 IGludGVsX2RpZ19wb3J0LT5wb3J0Owo+ID4gPiArCWVudW0gcGlwZSBwaXBlID0gY3J0Yy0+cGlw ZTsKPiA+ID4gIAo+ID4gPiAgCWlmIChkZXZfcHJpdi0+ZGlzcGxheS5hdWRpb19jb2RlY19kaXNh YmxlKQo+ID4gPiAgCQlkZXZfcHJpdi0+ZGlzcGxheS5hdWRpb19jb2RlY19kaXNhYmxlKGludGVs X2VuY29kZXIpOwo+ID4gPiAgCj4gPiA+ICAJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPmF2X211dGV4 KTsKPiA+ID4gIAlpbnRlbF9lbmNvZGVyLT5hdWRpb19jb25uZWN0b3IgPSBOVUxMOwo+ID4gPiAt CWRldl9wcml2LT5kaWdfcG9ydF9tYXBbcG9ydF0gPSBOVUxMOwo+ID4gPiArCWRldl9wcml2LT5h dl9lbmNfbWFwW3BpcGVdID0gTlVMTDsKPiA+ID4gIAltdXRleF91bmxvY2soJmRldl9wcml2LT5h dl9tdXRleCk7Cj4gPiA+ICAKPiA+ID4gKwkvKiBhdWRpbyBkcml2ZXJzIGV4cGVjdCBwaXBlID0g LTEgdG8gaW5kaWNhdGUgTm9uLU1TVCBjYXNlcyAqLwo+ID4gPiArCWlmIChpbnRlbF9lbmNvZGVy LT50eXBlICE9IElOVEVMX09VVFBVVF9EUF9NU1QpCj4gPiA+ICsJCXBpcGUgPSAtMTsKPiA+ID4g Kwo+ID4gPiAgCWlmIChhY29tcCAmJiBhY29tcC0+YXVkaW9fb3BzICYmIGFjb21wLT5hdWRpb19v cHMtPnBpbl9lbGRfbm90aWZ5KQo+ID4gPiAtCQlhY29tcC0+YXVkaW9fb3BzLT5waW5fZWxkX25v dGlmeShhY29tcC0+YXVkaW9fb3BzLT5hdWRpb19wdHIsIChpbnQpIHBvcnQpOwo+ID4gPiArCQlh Y29tcC0+YXVkaW9fb3BzLT5waW5fZWxkX25vdGlmeShhY29tcC0+YXVkaW9fb3BzLT5hdWRpb19w dHIsCj4gPiA+ICsJCQkJCQkgKGludCkgcG9ydCwgKGludCkgcGlwZSk7Cj4gPiA+ICB9Cj4gPiA+ ICAKPiA+ID4gIC8qKgo+ID4gPiBAQCAtNjMyLDE1ICs2NDYsMzkgQEAgc3RhdGljIGludCBpOTE1 X2F1ZGlvX2NvbXBvbmVudF9nZXRfY2RjbGtfZnJlcShzdHJ1Y3QgZGV2aWNlICpkZXYpCj4gPiA+ ICAJcmV0dXJuIGRldl9wcml2LT5jZGNsa19mcmVxOwo+ID4gPiAgfQo+ID4gPiAgCj4gPiA+IC1z dGF0aWMgaW50IGk5MTVfYXVkaW9fY29tcG9uZW50X3N5bmNfYXVkaW9fcmF0ZShzdHJ1Y3QgZGV2 aWNlICpkZXYsCj4gPiA+IC0JCQkJCQlpbnQgcG9ydCwgaW50IHJhdGUpCj4gPiA+ICtzdGF0aWMg c3RydWN0IGludGVsX2VuY29kZXIgKmdldF9zYXZlZF9lbmMoc3RydWN0IGludGVsX2VuY29kZXIg KmF2X2VuY19tYXBbXSwKPiA+ID4gKwkJCQkJICAgICAgIGludCBwb3J0LCBpbnQgcGlwZSkKPiA+ ID4gK3sKPiA+ID4gKwlzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXI7Cj4gPiA+ICsKPiA+ID4g KwlpZiAoV0FSTl9PTihwaXBlID49IEk5MTVfTUFYX1BJUEVTKSkKPiA+ID4gKwkJcmV0dXJuIE5V TEw7Cj4gPiA+ICsKPiA+ID4gKwkvKiBNU1QgKi8KPiA+ID4gKwlpZiAocGlwZSAhPSAtMSkKPiA+ IAo+ID4gSSdkIG1ha2UgdGhhdCA8IDAKPiA+IAo+IFRoYW5rcyBmb3IgcmV2aWV3aW5nLgo+IERv IHlvdSBtZWFuIHRoaXM/IC0gaGFuZGxlIHRoZSBub24tTVNUIGJyYW5jaCBmaXJzdCB3aXRoIAo+ IAo+IGlmIChwaXBlIDwgMCl7IAo+IAlmb3JfZWFjaF9waXBlKCl7Cj4gCj4gCQkuLi4KPiAJfQo+ IH0KPiBlbHNlIAo+IAlyZXR1cm4gYXZfZW5jX21hcFtwaXBlXTsKClNvcnJ5LCBuby4gSSBsaWtl IHlvdXIgY3VycmVudCBjb2RlIHN0cnVjdHVyZSwgc28gd2hhdCBJIHJlYWxseSBtZWFudAp3YXMg J3BpcGUgPj0gMCcsIHNvOgoKaWYgKHBpcGUgPj0gMCkKCXJldHVybiAuLi4KCmZvcl9lYWNoX3Bp cGUoKQoJLi4uCgkKCj4gCj4gPiA+ICsJCXJldHVybiBhdl9lbmNfbWFwW3BpcGVdOwo+ID4gPiAr Cj4gPiA+ICsJLyogTm9uLU1TVCAqLwo+ID4gPiArCWZvciAocGlwZSA9IFBJUEVfQTsgcGlwZSA8 IEk5MTVfTUFYX1BJUEVTOyBwaXBlKyspIHsKPiA+IAo+ID4gZm9yX2VhY2hfcGlwZSgpIHdvdWxk IGJlIG5pY2VyLgo+ID4gCj4gPiA+ICsJCWlmICghYXZfZW5jX21hcFtwaXBlXSkKPiA+ID4gKwkJ CWNvbnRpbnVlOwo+ID4gPiArCj4gPiA+ICsJCWVuY29kZXIgPSAmYXZfZW5jX21hcFtwaXBlXS0+ YmFzZTsKPiA+ID4gKwkJaWYgKHBvcnQgPT0gZW5jX3RvX2RpZ19wb3J0KGVuY29kZXIpLT5wb3J0 KQo+ID4gPiArCQkJcmV0dXJuIGF2X2VuY19tYXBbcGlwZV07Cj4gPiA+ICsJfQo+ID4gPiArCj4g PiA+ICsJcmV0dXJuIE5VTEw7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyBpbnQgaTkx NV9hdWRpb19jb21wb25lbnRfc3luY19hdWRpb19yYXRlKHN0cnVjdCBkZXZpY2UgKmRldiwgaW50 IHBvcnQsCj4gPiA+ICsJCQkJCQlpbnQgcGlwZSwgaW50IHJhdGUpCj4gPiA+ICB7Cj4gPiA+ICAJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2X3RvX2k5MTUoZGV2KTsKPiA+ ID4gIAlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlcjsKPiA+ID4gIAlzdHJ1Y3Qg aW50ZWxfY3J0YyAqY3J0YzsKPiA+ID4gIAlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZTsK PiA+ID4gIAlzdHJ1Y3QgaTkxNV9hdWRpb19jb21wb25lbnQgKmFjb21wID0gZGV2X3ByaXYtPmF1 ZGlvX2NvbXBvbmVudDsKPiA+ID4gLQllbnVtIHBpcGUgcGlwZSA9IElOVkFMSURfUElQRTsKPiA+ ID4gIAl1MzIgdG1wOwo+ID4gPiAgCWludCBuOwo+ID4gPiAgCWludCBlcnIgPSAwOwo+ID4gPiBA QCAtNjU0LDI1ICs2OTIsMjAgQEAgc3RhdGljIGludCBpOTE1X2F1ZGlvX2NvbXBvbmVudF9zeW5j X2F1ZGlvX3JhdGUoc3RydWN0IGRldmljZSAqZGV2LAo+ID4gPiAgCj4gPiA+ICAJaTkxNV9hdWRp b19jb21wb25lbnRfZ2V0X3Bvd2VyKGRldik7Cj4gPiA+ICAJbXV0ZXhfbG9jaygmZGV2X3ByaXYt PmF2X211dGV4KTsKPiA+ID4gKwo+ID4gPiAgCS8qIDEuIGdldCB0aGUgcGlwZSAqLwo+ID4gPiAt CWludGVsX2VuY29kZXIgPSBkZXZfcHJpdi0+ZGlnX3BvcnRfbWFwW3BvcnRdOwo+ID4gPiAtCS8q IGludGVsX2VuY29kZXIgbWlnaHQgYmUgTlVMTCBmb3IgRFAgTVNUICovCj4gPiA+ICsJaW50ZWxf ZW5jb2RlciA9IGdldF9zYXZlZF9lbmMoZGV2X3ByaXYtPmF2X2VuY19tYXAsIHBvcnQsIHBpcGUp Owo+ID4gPiAgCWlmICghaW50ZWxfZW5jb2RlciB8fCAhaW50ZWxfZW5jb2Rlci0+YmFzZS5jcnRj IHx8Cj4gPiA+ICAJICAgIGludGVsX2VuY29kZXItPnR5cGUgIT0gSU5URUxfT1VUUFVUX0hETUkp IHsKPiA+IAo+ID4gRGlkIHdlIGhhdmUgYSBmb2xsb3d1cCBwbGFubmVkIHRvIGRlYWwgd2l0aCBN U1QgaGVyZT8gSSBrbm93IHRoZXJlJ3MKPiA+IHRoYXQgU1NUIE0vTiBwYXRjaCBmbG9hdGluZyBh cm91bmQsIGJ1dCBJIHRoaW5rIHdlJ2xsIHdhbnQgaXQgZm9yIE1TVAo+ID4gdG9vLgo+ID4gCj4g TG9va3MgbGlrZSBMaWJpbiBZYW5nIGlzIHdvcmtpbmcgb24gdGhlIERQIHBhdGNoLCBJIHdpbGwg Y2hlY2sgd2l0aCBoaW0uCj4gCj4gPiA+IC0JCURSTV9ERUJVR19LTVMoIm5vIHZhbGlkIHBvcnQg JWNcbiIsIHBvcnRfbmFtZShwb3J0KSk7Cj4gPiA+ICsJCURSTV9ERUJVR19LTVMoIk5vdCB2YWxp ZCBmb3IgcG9ydCAlY1xuIiwgcG9ydF9uYW1lKHBvcnQpKTsKPiA+ID4gIAkJZXJyID0gLUVOT0RF VjsKPiA+ID4gIAkJZ290byB1bmxvY2s7Cj4gPiA+ICAJfQo+ID4gPiArCj4gPiA+ICsJLyogcGlw ZSBwYXNzZWQgZnJvbSB0aGUgYXVkaW8gZHJpdmVyIHdpbGwgYmUgLTEgZm9yIE5vbi1NU1QgY2Fz ZSAqLwo+ID4gPiAgCWNydGMgPSB0b19pbnRlbF9jcnRjKGludGVsX2VuY29kZXItPmJhc2UuY3J0 Yyk7Cj4gPiA+ICAJcGlwZSA9IGNydGMtPnBpcGU7Cj4gPiA+IC0JaWYgKHBpcGUgPT0gSU5WQUxJ RF9QSVBFKSB7Cj4gPiA+IC0JCURSTV9ERUJVR19LTVMoIm5vIHBpcGUgZm9yIHRoZSBwb3J0ICVj XG4iLCBwb3J0X25hbWUocG9ydCkpOwo+ID4gPiAtCQllcnIgPSAtRU5PREVWOwo+ID4gPiAtCQln b3RvIHVubG9jazsKPiA+ID4gLQl9Cj4gPiA+ICAKPiA+ID4gLQlEUk1fREVCVUdfS01TKCJwaXBl ICVjIGNvbm5lY3RzIHBvcnQgJWNcbiIsCj4gPiA+IC0JCQkJICBwaXBlX25hbWUocGlwZSksIHBv cnRfbmFtZShwb3J0KSk7Cj4gPiA+ICAJbW9kZSA9ICZjcnRjLT5jb25maWctPmJhc2UuYWRqdXN0 ZWRfbW9kZTsKPiA+ID4gIAo+ID4gPiAgCS8qIHBvcnQgbXVzdCBiZSB2YWxpZCBub3csIG90aGVy d2lzZSB0aGUgcGlwZSB3aWxsIGJlIGludmFsaWQgKi8KPiA+ID4gQEAgLTcwOCw3ICs3NDEsNyBA QCBzdGF0aWMgaW50IGk5MTVfYXVkaW9fY29tcG9uZW50X3N5bmNfYXVkaW9fcmF0ZShzdHJ1Y3Qg ZGV2aWNlICpkZXYsCj4gPiA+ICB9Cj4gPiA+ICAKPiA+ID4gIHN0YXRpYyBpbnQgaTkxNV9hdWRp b19jb21wb25lbnRfZ2V0X2VsZChzdHJ1Y3QgZGV2aWNlICpkZXYsIGludCBwb3J0LAo+ID4gPiAt CQkJCQlib29sICplbmFibGVkLAo+ID4gPiArCQkJCQlpbnQgcGlwZSwgYm9vbCAqZW5hYmxlZCwK PiA+ID4gIAkJCQkJdW5zaWduZWQgY2hhciAqYnVmLCBpbnQgbWF4X2J5dGVzKQo+ID4gPiAgewo+ ID4gPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldl90b19pOTE1KGRl dik7Cj4gPiA+IEBAIC03MTcsMTYgKzc1MCwyMCBAQCBzdGF0aWMgaW50IGk5MTVfYXVkaW9fY29t cG9uZW50X2dldF9lbGQoc3RydWN0IGRldmljZSAqZGV2LCBpbnQgcG9ydCwKPiA+ID4gIAlpbnQg cmV0ID0gLUVJTlZBTDsKPiA+ID4gIAo+ID4gPiAgCW11dGV4X2xvY2soJmRldl9wcml2LT5hdl9t dXRleCk7Cj4gPiA+IC0JaW50ZWxfZW5jb2RlciA9IGRldl9wcml2LT5kaWdfcG9ydF9tYXBbcG9y dF07Cj4gPiA+IC0JLyogaW50ZWxfZW5jb2RlciBtaWdodCBiZSBOVUxMIGZvciBEUCBNU1QgKi8K PiA+ID4gLQlpZiAoaW50ZWxfZW5jb2Rlcikgewo+ID4gPiAtCQlyZXQgPSAwOwo+ID4gPiAtCQkq ZW5hYmxlZCA9IGludGVsX2VuY29kZXItPmF1ZGlvX2Nvbm5lY3RvciAhPSBOVUxMOwo+ID4gPiAt CQlpZiAoKmVuYWJsZWQpIHsKPiA+ID4gLQkJCWVsZCA9IGludGVsX2VuY29kZXItPmF1ZGlvX2Nv bm5lY3Rvci0+ZWxkOwo+ID4gPiAtCQkJcmV0ID0gZHJtX2VsZF9zaXplKGVsZCk7Cj4gPiA+IC0J CQltZW1jcHkoYnVmLCBlbGQsIG1pbihtYXhfYnl0ZXMsIHJldCkpOwo+ID4gPiAtCQl9Cj4gPiA+ ICsKPiA+ID4gKwlpbnRlbF9lbmNvZGVyID0gZ2V0X3NhdmVkX2VuYyhkZXZfcHJpdi0+YXZfZW5j X21hcCwgcG9ydCwgcGlwZSk7Cj4gPiA+ICsJaWYgKCFpbnRlbF9lbmNvZGVyKSB7Cj4gPiA+ICsJ CURSTV9ERUJVR19LTVMoIk5vdCB2YWxpZCBmb3IgcG9ydCAlY1xuIiwgcG9ydF9uYW1lKHBvcnQp KTsKPiA+IAo+ID4gUHJpbnQgdGhlIHBpcGUgbmFtZSB0b28sIGlmIHdlIGhhdmUgYSB2YWxpZCBw aXBlPwo+ID4gCj4gPiA+ICsJCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmF2X211dGV4KTsKPiA+ ID4gKwkJcmV0dXJuIHJldDsKPiA+ID4gKwl9Cj4gPiA+ICsKPiA+ID4gKwlyZXQgPSAwOwo+ID4g PiArCSplbmFibGVkID0gaW50ZWxfZW5jb2Rlci0+YXVkaW9fY29ubmVjdG9yICE9IE5VTEw7Cj4g PiA+ICsJaWYgKCplbmFibGVkKSB7Cj4gPiA+ICsJCWVsZCA9IGludGVsX2VuY29kZXItPmF1ZGlv X2Nvbm5lY3Rvci0+ZWxkOwo+ID4gPiArCQlyZXQgPSBkcm1fZWxkX3NpemUoZWxkKTsKPiA+ID4g KwkJbWVtY3B5KGJ1ZiwgZWxkLCBtaW4obWF4X2J5dGVzLCByZXQpKTsKPiA+ID4gIAl9Cj4gPiA+ ICAKPiA+ID4gIAltdXRleF91bmxvY2soJmRldl9wcml2LT5hdl9tdXRleCk7Cj4gPiA+IGRpZmYg LS1naXQgYS9pbmNsdWRlL2RybS9pOTE1X2NvbXBvbmVudC5oIGIvaW5jbHVkZS9kcm0vaTkxNV9j b21wb25lbnQuaAo+ID4gPiBpbmRleCBiNDZmYTBlLi41NDVjNmUwIDEwMDY0NAo+ID4gPiAtLS0g YS9pbmNsdWRlL2RybS9pOTE1X2NvbXBvbmVudC5oCj4gPiA+ICsrKyBiL2luY2x1ZGUvZHJtL2k5 MTVfY29tcG9uZW50LmgKPiA+ID4gQEAgLTY0LDcgKzY0LDcgQEAgc3RydWN0IGk5MTVfYXVkaW9f Y29tcG9uZW50X29wcyB7Cj4gPiA+ICAJICogQ2FsbGVkIGZyb20gYXVkaW8gZHJpdmVyLiBBZnRl ciBhdWRpbyBkcml2ZXIgc2V0cyB0aGUKPiA+ID4gIAkgKiBzYW1wbGUgcmF0ZSwgaXQgd2lsbCBj YWxsIHRoaXMgZnVuY3Rpb24gdG8gc2V0IG4vY3RzCj4gPiA+ICAJICovCj4gPiA+IC0JaW50ICgq c3luY19hdWRpb19yYXRlKShzdHJ1Y3QgZGV2aWNlICosIGludCBwb3J0LCBpbnQgcmF0ZSk7Cj4g PiA+ICsJaW50ICgqc3luY19hdWRpb19yYXRlKShzdHJ1Y3QgZGV2aWNlICosIGludCBwb3J0LCBp bnQgcGlwZSwgaW50IHJhdGUpOwo+ID4gPiAgCS8qKgo+ID4gPiAgCSAqIEBnZXRfZWxkOiBmaWxs IHRoZSBhdWRpbyBzdGF0ZSBhbmQgRUxEIGJ5dGVzIGZvciB0aGUgZ2l2ZW4gcG9ydAo+ID4gPiAg CSAqCj4gPiA+IEBAIC03Nyw3ICs3Nyw3IEBAIHN0cnVjdCBpOTE1X2F1ZGlvX2NvbXBvbmVudF9v cHMgewo+ID4gPiAgCSAqIE5vdGUgdGhhdCB0aGUgcmV0dXJuZWQgc2l6ZSBtYXkgYmUgb3ZlciBA bWF4X2J5dGVzLiAgVGhlbiBpdAo+ID4gPiAgCSAqIGltcGxpZXMgdGhhdCBvbmx5IGEgcGFydCBv ZiBFTEQgaGFzIGJlZW4gY29waWVkIHRvIHRoZSBidWZmZXIuCj4gPiA+ICAJICovCj4gPiA+IC0J aW50ICgqZ2V0X2VsZCkoc3RydWN0IGRldmljZSAqLCBpbnQgcG9ydCwgYm9vbCAqZW5hYmxlZCwK PiA+ID4gKwlpbnQgKCpnZXRfZWxkKShzdHJ1Y3QgZGV2aWNlICosIGludCBwb3J0LCBpbnQgcGlw ZSwgYm9vbCAqZW5hYmxlZCwKPiA+ID4gIAkJICAgICAgIHVuc2lnbmVkIGNoYXIgKmJ1ZiwgaW50 IG1heF9ieXRlcyk7Cj4gPiA+ICB9Owo+ID4gPiAgCj4gPiA+IEBAIC05Nyw3ICs5Nyw3IEBAIHN0 cnVjdCBpOTE1X2F1ZGlvX2NvbXBvbmVudF9hdWRpb19vcHMgewo+ID4gPiAgCSAqIHN0YXR1cyBh Y2NvcmRpbmdseSAoZXZlbiB3aGVuIHRoZSBIREEgY29udHJvbGxlciBpcyBpbiBwb3dlciBzYXZl Cj4gPiA+ICAJICogbW9kZSkuCj4gPiA+ICAJICovCj4gPiA+IC0Jdm9pZCAoKnBpbl9lbGRfbm90 aWZ5KSh2b2lkICphdWRpb19wdHIsIGludCBwb3J0KTsKPiA+ID4gKwl2b2lkICgqcGluX2VsZF9u b3RpZnkpKHZvaWQgKmF1ZGlvX3B0ciwgaW50IHBvcnQsIGludCBwaXBlKTsKPiA+ID4gIH07Cj4g PiA+ICAKPiA+ID4gIC8qKgo+ID4gPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zb3VuZC9oZGFfaTkx NS5oIGIvaW5jbHVkZS9zb3VuZC9oZGFfaTkxNS5oCj4gPiA+IGluZGV4IDc5NmNhYmYuLjA3ZmQ2 NGUgMTAwNjQ0Cj4gPiA+IC0tLSBhL2luY2x1ZGUvc291bmQvaGRhX2k5MTUuaAo+ID4gPiArKysg Yi9pbmNsdWRlL3NvdW5kL2hkYV9pOTE1LmgKPiA+ID4gQEAgLTEwLDggKzEwLDkgQEAKPiA+ID4g IGludCBzbmRfaGRhY19zZXRfY29kZWNfd2FrZXVwKHN0cnVjdCBoZGFjX2J1cyAqYnVzLCBib29s IGVuYWJsZSk7Cj4gPiA+ICBpbnQgc25kX2hkYWNfZGlzcGxheV9wb3dlcihzdHJ1Y3QgaGRhY19i dXMgKmJ1cywgYm9vbCBlbmFibGUpOwo+ID4gPiAgdm9pZCBzbmRfaGRhY19pOTE1X3NldF9iY2xr KHN0cnVjdCBoZGFjX2J1cyAqYnVzKTsKPiA+ID4gLWludCBzbmRfaGRhY19zeW5jX2F1ZGlvX3Jh dGUoc3RydWN0IGhkYWNfZGV2aWNlICpjb2RlYywgaGRhX25pZF90IG5pZCwgaW50IHJhdGUpOwo+ ID4gPiAtaW50IHNuZF9oZGFjX2Fjb21wX2dldF9lbGQoc3RydWN0IGhkYWNfZGV2aWNlICpjb2Rl YywgaGRhX25pZF90IG5pZCwKPiA+ID4gK2ludCBzbmRfaGRhY19zeW5jX2F1ZGlvX3JhdGUoc3Ry dWN0IGhkYWNfZGV2aWNlICpjb2RlYywgaGRhX25pZF90IG5pZCwKPiA+ID4gKwkJCSAgICAgaW50 IHBpcGUsIGludCByYXRlKTsKPiA+ID4gK2ludCBzbmRfaGRhY19hY29tcF9nZXRfZWxkKHN0cnVj dCBoZGFjX2RldmljZSAqY29kZWMsIGhkYV9uaWRfdCBuaWQsIGludCBwaXBlLAo+ID4gPiAgCQkJ ICAgYm9vbCAqYXVkaW9fZW5hYmxlZCwgY2hhciAqYnVmZmVyLCBpbnQgbWF4X2J5dGVzKTsKPiA+ ID4gIGludCBzbmRfaGRhY19pOTE1X2luaXQoc3RydWN0IGhkYWNfYnVzICpidXMpOwo+ID4gPiAg aW50IHNuZF9oZGFjX2k5MTVfZXhpdChzdHJ1Y3QgaGRhY19idXMgKmJ1cyk7Cj4gPiA+IEBAIC0y OSwxMyArMzAsMTMgQEAgc3RhdGljIGlubGluZSB2b2lkIHNuZF9oZGFjX2k5MTVfc2V0X2JjbGso c3RydWN0IGhkYWNfYnVzICpidXMpCj4gPiA+ICB7Cj4gPiA+ICB9Cj4gPiA+ICBzdGF0aWMgaW5s aW5lIGludCBzbmRfaGRhY19zeW5jX2F1ZGlvX3JhdGUoc3RydWN0IGhkYWNfZGV2aWNlICpjb2Rl YywKPiA+ID4gLQkJCQkJICAgaGRhX25pZF90IG5pZCwgaW50IHJhdGUpCj4gPiA+ICsJCQkJCSAg IGhkYV9uaWRfdCBuaWQsIGludCBwaXBlLCBpbnQgcmF0ZSkKPiA+ID4gIHsKPiA+ID4gIAlyZXR1 cm4gMDsKPiA+ID4gIH0KPiA+ID4gIHN0YXRpYyBpbmxpbmUgaW50IHNuZF9oZGFjX2Fjb21wX2dl dF9lbGQoc3RydWN0IGhkYWNfZGV2aWNlICpjb2RlYywgaGRhX25pZF90IG5pZCwKPiA+ID4gLQkJ CQkJIGJvb2wgKmF1ZGlvX2VuYWJsZWQsIGNoYXIgKmJ1ZmZlciwKPiA+ID4gLQkJCQkJIGludCBt YXhfYnl0ZXMpCj4gPiA+ICsJCQkJCSBpbnQgcGlwZSwgYm9vbCAqYXVkaW9fZW5hYmxlZCwKPiA+ ID4gKwkJCQkJIGNoYXIgKmJ1ZmZlciwgaW50IG1heF9ieXRlcykKPiA+ID4gIHsKPiA+ID4gIAly ZXR1cm4gLUVOT0RFVjsKPiA+ID4gIH0KPiA+ID4gZGlmZiAtLWdpdCBhL3NvdW5kL2hkYS9oZGFj X2k5MTUuYyBiL3NvdW5kL2hkYS9oZGFjX2k5MTUuYwo+ID4gPiBpbmRleCBjOWFmMDIyLi5iOTk5 OTRiIDEwMDY0NAo+ID4gPiAtLS0gYS9zb3VuZC9oZGEvaGRhY19pOTE1LmMKPiA+ID4gKysrIGIv c291bmQvaGRhL2hkYWNfaTkxNS5jCj4gPiA+IEBAIC0yMDEsNyArMjAxLDggQEAgc3RhdGljIGlu dCBwaW4ycG9ydChzdHJ1Y3QgaGRhY19kZXZpY2UgKmNvZGVjLCBoZGFfbmlkX3QgcGluX25pZCkK PiA+ID4gICAqIFRoaXMgZnVuY3Rpb24gc2V0cyBOL0NUUyB2YWx1ZSBiYXNlZCBvbiB0aGUgZ2l2 ZW4gc2FtcGxlIHJhdGUuCj4gPiA+ICAgKiBSZXR1cm5zIHplcm8gZm9yIHN1Y2Nlc3MsIG9yIGEg bmVnYXRpdmUgZXJyb3IgY29kZS4KPiA+ID4gICAqLwo+ID4gPiAtaW50IHNuZF9oZGFjX3N5bmNf YXVkaW9fcmF0ZShzdHJ1Y3QgaGRhY19kZXZpY2UgKmNvZGVjLCBoZGFfbmlkX3QgbmlkLCBpbnQg cmF0ZSkKPiA+ID4gK2ludCBzbmRfaGRhY19zeW5jX2F1ZGlvX3JhdGUoc3RydWN0IGhkYWNfZGV2 aWNlICpjb2RlYywgaGRhX25pZF90IG5pZCwKPiA+ID4gKwkJCSAgICAgaW50IHBpcGUsIGludCBy YXRlKQo+ID4gCj4gPiBJIHRob3VnaHQgeW91J2Qgc3RpbGwgd2FudCB0byBjYWxsIGl0ICdkZXZf aWQnIG9uIHRoZSBoZGEgc2lkZSwgYW5kIGp1c3QKPiA+IGRvIHRoZSBkZXZfaWQtPnBpcGUgY29u dmVyc2lvbiBoZXJlIG5leHQgdG8gdGhlIHBpbi0+cG9ydCBjb252ZXJzaW9uPwo+ID4gSnVzdCBm aWd1cmVkIHRoYXQgd291bGQgYmUgbGVzcyBjb25mdXNpbmcgZm9yIHBlb3BsZSB3aG8gYXJlIGp1 c3QgZmFtaWxpYXIKPiA+IHdpdGggaGRhIGFuZCBub3QgaTkxNS4KPiA+IAo+IFllYWgsIHRoYXQg bWFrZXMgc2Vuc2UuIAo+IAo+ID4gQW55d2F5cywgdGhlIHBhdGNoIGxvb2tzIHByZXR0eSBnb29k IHRvIG1lIGZyb20gdGhlIGk5MTUgUE9WLiBXaGV0aGVyCj4gPiB5b3Ugd2FudCB0byBkbyB0aG9z ZSBzbWFsbCBjaGFuZ2VzIEkgcHJvcG9zZWQgaXMgdXAgdG8geW91LCBhbmQgZWl0aGVyCj4gPiB3 YXkgdGhlIGk5MTUgcGFydHMgYXJlCj4gPiBSZXZpZXdlZC1ieTogVmlsbGUgU3lyasOkbMOkIDx2 aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KPiA+IAo+IAo+IEkgaGF2ZSBhc3N1bWVkIGVu Y190b19kaWdfcG9ydCgpIHdvcmtzIGZvciBNU1QgZW5jb2RlcnMuIERvIHlvdSB0aGluawo+IGl0 J3MgZ29vZCBpZGVhIHRvIGhhdmUgdGhpcwo+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L2FyY2hpdmVzL2ludGVsLWdmeC8yMDE2LUF1Z3VzdC8xMDI5OTQuaHRtbAo+IG5vdz8KCk9oIEkg Zm9yZ290IGFib3V0IHRoYXQgcGFydC4gSSdtIG5vdCByZWFsbHkgZXhjaXRlZCBhYm91dCB0aGF0 IHBhdGNoLgpJJ2QgcHJlZmVyIHRoYXQgcGVvcGxlIGhhdmUgdG8gdGhpbmsgYSBiaXQgd2hlbiBk ZWFsaW5nIHdpdGggTVNUCmVuY29kZXJzLCBvdGhlcndpc2UgdGhleSBtaWdodCBhc3N1bWUgdGhl eSB3b3JrIGp1c3QgbGlrZSBhbnkgb3RoZXIKZW5jb2Rlci4KClNvIEknZCBwcmVmZXIgdGhhdCB5 b3UgZXhwbGljaXRseSBoYW5kbGUgdGhlIE1TVCBjYXNlIHdoZW4gbG9va2luZyB1cAp0aGUgZW5j b2Rlci4gRm9yIHlvdXIgYXVkaW8gdXNlIGNhc2UsIEkgdGhpbmsgeW91IGp1c3QgbmVlZCB0aGUg J3BvcnQnCmluZm9ybWF0aW9uIGZyb20gdGhlIGRpZ19wb3J0LCBubz8gSSB0aGluayBtYWtpbmcg dGhhdCBwYXJ0IGdlbmVyaWMgaXNuJ3QKYSBodWdlIHByb2JsZW0gc2luY2UgdGhhdCB3YXkgYXQg bGVhc3QgeW91J3JlIG5vdCBnZXR0aW5nIHlvdXIgaGFuZHMKIG9uIGEgZGlnX3BvcnQgc3RydWN0 dXJlIHRoYXQgeW91IGRvbid0IHJlYWxseSBvd24uCgpTbyB5b3UgY291bGQgYWxtb3N0IHVzZSBp bnRlbF9kZGlfZ2V0X2VuY29kZXJfcG9ydCgpLCBleGNlcHQgdXNpbmcgYQpEREkgc3BlY2lmaWMg ZnVuY3Rpb24gaW4gZ2VuZXJpYyBjb2RlIGlzbid0IHZlcnkgbmljZS4gV2UgY291bGQgZXh0cmFj dAp0aGUgZ2VuZXJpYyBwYXJ0IHRvIGEgc2VwYXJhdGUgZnVuY3Rpb24sIGxpa2Ugc286CgplbnVt IHBvcnQgaW50ZWxfZW5jb2Rlcl9nZXRfcG9ydChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2Rl cikKewogICAgICAgIHN3aXRjaCAoZW5jb2Rlci0+dHlwZSkgewogICAgICAgIGNhc2UgSU5URUxf T1VUUFVUX0RQX01TVDoKICAgICAgICAgICAgICAgIHJldHVybiBlbmNfdG9fbXN0KCZlbmNvZGVy LT5iYXNlKS0+cHJpbWFyeS0+cG9ydDsKICAgICAgICBjYXNlIElOVEVMX09VVFBVVF9EUDoKICAg ICAgICBjYXNlIElOVEVMX09VVFBVVF9FRFA6CiAgICAgICAgY2FzZSBJTlRFTF9PVVRQVVRfSERN SToKICAgICAgICBjYXNlIElOVEVMX09VVFBVVF9VTktOT1dOOgogICAgICAgICAgICAgICAgcmV0 dXJuIGVuY190b19kaWdfcG9ydCgmZW5jb2Rlci0+YmFzZSktPnBvcnQ7CiAgICAgICAgZGVmYXVs dDoKICAgICAgICAgICAgICAgIE1JU1NJTkdfQ0FTRShlbmNvZGVyLT50eXBlKTsKICAgICAgICAg ICAgICAgIHJldHVybiBQT1JUX0E7CiAgICAgICAgfQp9CgplbnVtIHBvcnQgaW50ZWxfZGRpX2dl dF9lbmNvZGVyX3BvcnQoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCnsKICAgICAgICBz d2l0Y2ggKGVuY29kZXItPnR5cGUpIHsKICAgICAgICBjYXNlIElOVEVMX09VVFBVVF9BTkFMT0c6 CgkJcmV0dXJuIFBPUlRfRTsKICAgICAgICBkZWZhdWx0OgoJCXJldHVybiBpbnRlbF9lbmNvZGVy X2dldF9wb3J0KGVuY29kZXIpOwogICAgICAgIH0KfQoKb3IgeW91IGNvdWxkIGp1c3QgeW91ciBv d24gZnVuY3Rpb24gZm9yIGludGVsX2F1ZGlvLmMgYXQgdGhpcyB0aW1lLCBsaWtlOgoKc3RhdGlj IGVudW0gcG9ydCBlbmNvZGVyX2dldF9wb3J0KGVuY29kZXIpCnsKCWlmIChlbmNvZGVyLT50eXBl ID09IE1TVDsKCQlyZXR1cm4gZW5jX3RvX21zdCgpLi4uOwoJZWxzZQoJCXJldHVybiBlbmNfdG9f ZGlnX3BvcnQoKS4uLjsKfQoJCgoKPiAgCj4gPiA+ICB7Cj4gPiA+ICAJc3RydWN0IGhkYWNfYnVz ICpidXMgPSBjb2RlYy0+YnVzOwo+ID4gPiAgCXN0cnVjdCBpOTE1X2F1ZGlvX2NvbXBvbmVudCAq YWNvbXAgPSBidXMtPmF1ZGlvX2NvbXBvbmVudDsKPiA+ID4gQEAgLTIxMiw3ICsyMTMsNyBAQCBp bnQgc25kX2hkYWNfc3luY19hdWRpb19yYXRlKHN0cnVjdCBoZGFjX2RldmljZSAqY29kZWMsIGhk YV9uaWRfdCBuaWQsIGludCByYXRlKQo+ID4gPiAgCXBvcnQgPSBwaW4ycG9ydChjb2RlYywgbmlk KTsKPiA+ID4gIAlpZiAocG9ydCA8IDApCj4gPiA+ICAJCXJldHVybiAtRUlOVkFMOwo+ID4gPiAt CXJldHVybiBhY29tcC0+b3BzLT5zeW5jX2F1ZGlvX3JhdGUoYWNvbXAtPmRldiwgcG9ydCwgcmF0 ZSk7Cj4gPiA+ICsJcmV0dXJuIGFjb21wLT5vcHMtPnN5bmNfYXVkaW9fcmF0ZShhY29tcC0+ZGV2 LCBwb3J0LCBwaXBlLCByYXRlKTsKPiA+ID4gIH0KPiA+ID4gIEVYUE9SVF9TWU1CT0xfR1BMKHNu ZF9oZGFjX3N5bmNfYXVkaW9fcmF0ZSk7Cj4gPiA+ICAKPiA+ID4gQEAgLTIzNiw3ICsyMzcsNyBA QCBFWFBPUlRfU1lNQk9MX0dQTChzbmRfaGRhY19zeW5jX2F1ZGlvX3JhdGUpOwo+ID4gPiAgICog dGh1cyBpdCBtYXkgYmUgb3ZlciBAbWF4X2J5dGVzLiAgSWYgaXQncyBvdmVyIEBtYXhfYnl0ZXMs IGl0IGltcGxpZXMKPiA+ID4gICAqIHRoYXQgb25seSBhIHBhcnQgb2YgRUxEIGJ5dGVzIGhhdmUg YmVlbiBmZXRjaGVkLgo+ID4gPiAgICovCj4gPiA+IC1pbnQgc25kX2hkYWNfYWNvbXBfZ2V0X2Vs ZChzdHJ1Y3QgaGRhY19kZXZpY2UgKmNvZGVjLCBoZGFfbmlkX3QgbmlkLAo+ID4gPiAraW50IHNu ZF9oZGFjX2Fjb21wX2dldF9lbGQoc3RydWN0IGhkYWNfZGV2aWNlICpjb2RlYywgaGRhX25pZF90 IG5pZCwgaW50IHBpcGUsCj4gPiA+ICAJCQkgICBib29sICphdWRpb19lbmFibGVkLCBjaGFyICpi dWZmZXIsIGludCBtYXhfYnl0ZXMpCj4gPiA+ICB7Cj4gPiA+ICAJc3RydWN0IGhkYWNfYnVzICpi dXMgPSBjb2RlYy0+YnVzOwo+ID4gPiBAQCAtMjQ5LDcgKzI1MCw3IEBAIGludCBzbmRfaGRhY19h Y29tcF9nZXRfZWxkKHN0cnVjdCBoZGFjX2RldmljZSAqY29kZWMsIGhkYV9uaWRfdCBuaWQsCj4g PiA+ICAJcG9ydCA9IHBpbjJwb3J0KGNvZGVjLCBuaWQpOwo+ID4gPiAgCWlmIChwb3J0IDwgMCkK PiA+ID4gIAkJcmV0dXJuIC1FSU5WQUw7Cj4gPiA+IC0JcmV0dXJuIGFjb21wLT5vcHMtPmdldF9l bGQoYWNvbXAtPmRldiwgcG9ydCwgYXVkaW9fZW5hYmxlZCwKPiA+ID4gKwlyZXR1cm4gYWNvbXAt Pm9wcy0+Z2V0X2VsZChhY29tcC0+ZGV2LCBwb3J0LCBwaXBlLCBhdWRpb19lbmFibGVkLAo+ID4g PiAgCQkJCSAgIGJ1ZmZlciwgbWF4X2J5dGVzKTsKPiA+ID4gIH0KPiA+ID4gIEVYUE9SVF9TWU1C T0xfR1BMKHNuZF9oZGFjX2Fjb21wX2dldF9lbGQpOwo+ID4gPiBkaWZmIC0tZ2l0IGEvc291bmQv cGNpL2hkYS9wYXRjaF9oZG1pLmMgYi9zb3VuZC9wY2kvaGRhL3BhdGNoX2hkbWkuYwo+ID4gPiBp bmRleCBkMGQ1YWQ4Li42Nzg5MGRmIDEwMDY0NAo+ID4gPiAtLS0gYS9zb3VuZC9wY2kvaGRhL3Bh dGNoX2hkbWkuYwo+ID4gPiArKysgYi9zb3VuZC9wY2kvaGRhL3BhdGNoX2hkbWkuYwo+ID4gPiBA QCAtMTQ4NSw3ICsxNDg1LDcgQEAgc3RhdGljIHZvaWQgc3luY19lbGRfdmlhX2Fjb21wKHN0cnVj dCBoZGFfY29kZWMgKmNvZGVjLAo+ID4gPiAgCj4gPiA+ICAJbXV0ZXhfbG9jaygmcGVyX3Bpbi0+ bG9jayk7Cj4gPiA+ICAJZWxkLT5tb25pdG9yX3ByZXNlbnQgPSBmYWxzZTsKPiA+ID4gLQlzaXpl ID0gc25kX2hkYWNfYWNvbXBfZ2V0X2VsZCgmY29kZWMtPmNvcmUsIHBlcl9waW4tPnBpbl9uaWQs Cj4gPiA+ICsJc2l6ZSA9IHNuZF9oZGFjX2Fjb21wX2dldF9lbGQoJmNvZGVjLT5jb3JlLCBwZXJf cGluLT5waW5fbmlkLCAtMSwKPiA+ID4gIAkJCQkgICAgICAmZWxkLT5tb25pdG9yX3ByZXNlbnQs IGVsZC0+ZWxkX2J1ZmZlciwKPiA+ID4gIAkJCQkgICAgICBFTERfTUFYX1NJWkUpOwo+ID4gPiAg CWlmIChzaXplID4gMCkgewo+ID4gPiBAQCAtMTczOSw3ICsxNzM5LDggQEAgc3RhdGljIGludCBn ZW5lcmljX2hkbWlfcGxheWJhY2tfcGNtX3ByZXBhcmUoc3RydWN0IGhkYV9wY21fc3RyZWFtICpo aW5mbywKPiA+ID4gIAkvKiBDYWxsIHN5bmNfYXVkaW9fcmF0ZSB0byBzZXQgdGhlIE4vQ1RTL00g bWFudWFsbHkgaWYgbmVjZXNzYXJ5ICovCj4gPiA+ICAJLyogVG9kbzogYWRkIERQMS4yIE1TVCBh dWRpbyBzdXBwb3J0IGxhdGVyICovCj4gPiA+ICAJaWYgKGNvZGVjX2hhc19hY29tcChjb2RlYykp Cj4gPiA+IC0JCXNuZF9oZGFjX3N5bmNfYXVkaW9fcmF0ZSgmY29kZWMtPmNvcmUsIHBpbl9uaWQs IHJ1bnRpbWUtPnJhdGUpOwo+ID4gPiArCQlzbmRfaGRhY19zeW5jX2F1ZGlvX3JhdGUoJmNvZGVj LT5jb3JlLCBwaW5fbmlkLCAtMSwKPiA+ID4gKwkJCQkJIHJ1bnRpbWUtPnJhdGUpOwo+ID4gPiAg Cj4gPiA+ICAJbm9uX3BjbSA9IGNoZWNrX25vbl9wY21fcGVyX2N2dChjb2RlYywgY3Z0X25pZCk7 Cj4gPiA+ICAJbXV0ZXhfbG9jaygmcGVyX3Bpbi0+bG9jayk7Cj4gPiA+IEBAIC0yMjg1LDcgKzIy ODYsNyBAQCBzdGF0aWMgdm9pZCBoYXN3ZWxsX3NldF9wb3dlcl9zdGF0ZShzdHJ1Y3QgaGRhX2Nv ZGVjICpjb2RlYywgaGRhX25pZF90IGZnLAo+ID4gPiAgCXNuZF9oZGFfY29kZWNfc2V0X3Bvd2Vy X3RvX2FsbChjb2RlYywgZmcsIHBvd2VyX3N0YXRlKTsKPiA+ID4gIH0KPiA+ID4gIAo+ID4gPiAt c3RhdGljIHZvaWQgaW50ZWxfcGluX2VsZF9ub3RpZnkodm9pZCAqYXVkaW9fcHRyLCBpbnQgcG9y dCkKPiA+ID4gK3N0YXRpYyB2b2lkIGludGVsX3Bpbl9lbGRfbm90aWZ5KHZvaWQgKmF1ZGlvX3B0 ciwgaW50IHBvcnQsIGludCBwaXBlKQo+ID4gPiAgewo+ID4gPiAgCXN0cnVjdCBoZGFfY29kZWMg KmNvZGVjID0gYXVkaW9fcHRyOwo+ID4gPiAgCWludCBwaW5fbmlkOwo+ID4gPiBkaWZmIC0tZ2l0 IGEvc291bmQvc29jL2NvZGVjcy9oZGFjX2hkbWkuYyBiL3NvdW5kL3NvYy9jb2RlY3MvaGRhY19o ZG1pLmMKPiA+ID4gaW5kZXggMmFiYjc0Mi4uY2Y1N2FiMyAxMDA2NDQKPiA+ID4gLS0tIGEvc291 bmQvc29jL2NvZGVjcy9oZGFjX2hkbWkuYwo+ID4gPiArKysgYi9zb3VuZC9zb2MvY29kZWNzL2hk YWNfaGRtaS5jCj4gPiA+IEBAIC0xMzY2LDcgKzEzNjYsNyBAQCBzdGF0aWMgaW50IGhkYWNfaGRt aV9wYXJzZV9hbmRfbWFwX25pZChzdHJ1Y3QgaGRhY19leHRfZGV2aWNlICplZGV2LAo+ID4gPiAg CXJldHVybiBoZGFjX2hkbWlfaW5pdF9kYWlfbWFwKGVkZXYpOwo+ID4gPiAgfQo+ID4gPiAgCj4g PiA+IC1zdGF0aWMgdm9pZCBoZGFjX2hkbWlfZWxkX25vdGlmeV9jYih2b2lkICphcHRyLCBpbnQg cG9ydCkKPiA+ID4gK3N0YXRpYyB2b2lkIGhkYWNfaGRtaV9lbGRfbm90aWZ5X2NiKHZvaWQgKmFw dHIsIGludCBwb3J0LCBpbnQgcGlwZSkKPiA+ID4gIHsKPiA+ID4gIAlzdHJ1Y3QgaGRhY19leHRf ZGV2aWNlICplZGV2ID0gYXB0cjsKPiA+ID4gIAlzdHJ1Y3QgaGRhY19oZG1pX3ByaXYgKmhkbWkg PSBlZGV2LT5wcml2YXRlX2RhdGE7Cj4gPiA+IC0tIAo+ID4gPiAyLjUuMAo+ID4gCj4gCgotLSAK VmlsbGUgU3lyasOkbMOkCkludGVsIE9UQwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9pbnRlbC1nZngK