From mboxrd@z Thu Jan 1 00:00:00 1970 From: Takashi Iwai Subject: Re: [PATCH 3/4] snd: add support for displayport multi-stream to hda codec. Date: Fri, 19 Jun 2015 13:15:57 +0200 Message-ID: References: <1434513719-3580-1-git-send-email-airlied@gmail.com> <1434513719-3580-4-git-send-email-airlied@gmail.com> Mime-Version: 1.0 (generated by SEMI 1.14.6 - "Maruoka") Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Dave Airlie Cc: alsa-devel@alsa-project.org, "intel-gfx@lists.freedesktop.org" , "Girdwood, Liam R" , "Lu, Han" List-Id: alsa-devel@alsa-project.org QXQgRnJpLCAxOSBKdW4gMjAxNSAyMDozMzozOSArMTAwMCwKRGF2ZSBBaXJsaWUgd3JvdGU6Cj4g Cj4gT24gMTkgSnVuZSAyMDE1IGF0IDE5OjU0LCBMaW4sIE1lbmdkb25nIDxtZW5nZG9uZy5saW5A aW50ZWwuY29tPiB3cm90ZToKPiA+IEhpIFRha2FzaGkvRGF2ZSwKPiA+Cj4gPiBTaGFsbCB3ZSBt b3ZlIG9yIGNjIHRoaXMgZGlzY3Vzc2lvbiBvbiBhdWRpbyBkcml2ZXIgc2lkZSB0byBBTFNBIE1M Pwo+IAo+IE9vcHMgSSB0aG91Z2h0IEkgaGFkIGNjJ2VkIHRoZXNlIHBhdGNoZXMgdG8gYWxzYS1k ZXZlbCBhcyB3ZWxsIHdoZW4gSSBzZW50IHRoZW0uCj4gCj4gPiBJIHRoaW5rIHdlIGFsc28gbmVl ZCB0byBkZWNpZGUgaG93IHRvIG1hbmFnZSBQQ00gZGV2aWNlcyBmb3IgRFAgTVNULgo+ID4gTm93 IHRoZSBIRC1BIGRyaXZlciBjcmVhdGUgYSBQQ00gZGV2aWNlIGZvciBlYWNoIHBpbiwgYW5kIHRo ZSBzdWJzdHJlYW0KPiA+IG51bWJlciBpcyAxIGZvciBlYWNoIFBDTS4gTm93IHdpdGggRFAgTVNU IGVuYWJsZWQsIGVhY2ggcGluIGNhbiBzdXBwb3J0Cj4gPiBtdWx0aXBsZSBzdHJlYW1zIChlLmcu IDMgb24gSW50ZWwgSFNXL0JEVy9TS0wpLgo+ID4KPiA+IFRoZXJlIG1heSBiZSAyIG9wdGlvbnM6 Cj4gPiAtIzE6IExldCBhbiBIRE1JIGNvZGVjIHNwZWNpZnkgbnVtYmVyIG9mIHN1YnN0cmVhbXMs IHNhbWUgYXMgdGhlIG51bWJlcgo+ID4gb2YgZGV2aWNlIGVudHJpZXMgb24gYSBwaW4uIFdlIGNh biBzcGVjaWZ5IDMgZm9yIEhTVy9CRFcvU0tMLiBPdGhlcgo+ID4gdmVuZG9ycyBjYW4gYWxzbyBz cGVjaWZ5IGEgdmFsdWUgYWNjb3JkaW5nIHRvIGFjdHVhbCBIVyBjYXBhYmlsaXRpZXMuCj4gPgo+ ID4gU28gZm9yIEhTVywgd2UgaGF2ZSAzeDMgc3VidHJlYW1zIHRvdGFsbHkuIEJ1dCB3ZSBvbmx5 IGhhdmUgMyBjb252ZXJ0b3JzCj4gPiAoZm9yIDMgZGlzcGxheSBwaXBlbGluZXMpLCBzbyB3ZSBj YW4gb3BlbiB1cCB0byAzIHN1YnN0cmVhbXMgYXQgdGhlIHNhbWUKPiA+IHRpbWUuIFdoZW4gdGhl IGF1ZGlvIGRyaXZlciBmaW5kcyBhbGwgMyBjb252ZXJ0b3JzIGFyZSB1c2VkIHdoZW4gb3Blbmlu Zwo+ID4gYSBuZXcgc3Vic3RyZWFtLCBpdCB3aWxsIGZhaWwuCj4gCj4gT25lIHRoaW5nIEkgbm90 aWNlZCBpcyB0aGUgbnVtYmVyIG9mIGRldmljZXMgb24gYSBQSU4gaXMgb25seSB1cGRhdGVkIHdo ZW4KPiB0aGUgTVNUIGRldmljZSBpcyBwbHVnZ2VkIGluIHNvIG5vcm1hbGx5IHBpbnMgNSw2LDcg aGF2ZSAwIGRldmljZXMsIGFuZCB3aGVuCj4gSSBwbHVnIGluIE1TVCBkZXZpY2UsIEkgZ2V0IHRo ZSAzIGRldmljZXMgb24gcG9ydCA2LiBTbyBpdCBzZWVtcyBkeW5hbWljCj4gZW5vdWdoIGF0IHRo aXMgcG9pbnQsIHRob3VnaCBJIGd1ZXNzIGl0J2xsIGFsd2F5cyBiZSAwIG9yIDMuCj4gPgo+ID4g LSAjMjogQ3JlYXRlIFBDTSBkZXZpY2UgZHluYW1pY2FsbHkuIE9ubHkgY3JlYXRlIGEgUENNIGRl dmljZXMgZm9yIGEgZGV2aWNlCj4gPiBlbnRyeSB3aGljaCBjb25uZWN0cyB0byBtb25pdG9yIHdp dGggYXVkaW8gc3VwcG9ydC4gV2hlbiB0aGUgbW9uaXRvcgo+ID4gaXMgcmVtb3ZlZCwgdGhlIFBD TSBkZXZpY2Ugd2lsbCBiZSBkaXNjb25uZWN0ZWQsIGNsb3NlZCBhbmQgcmVtb3ZlZCwKPiA+IHNp bWlsYXIgdG8gdGhlIFVTQiBjYXNlLgo+ID4KPiA+IFRoaXMgd2lsbCBjaGFuZ2UgQUxTQSBjb3Jl LiBCdXQgdGhlcmUgd2lsbCBiZSBsZXNzIFBDTSBkZXZpY2VzIGFuZAo+ID4gc3Vic3RyZWFtcywg c2luY2UgdGhlIG51bWJlciBvZiBjb25uZWN0ZWQgbW9uaXRvcnMgSXMgZGVjaWRlZCBieSB0aGUK PiA+IGFjdHVhbCBHUFUgZGlzcGxheSBwaXBlbGluZS4KPiAKPiBJIGxpa2UgdGhpcyBvcHRpb24g bW9yZSwgc2luY2UgSSB0aGluayBpdCBzaG91bGQgYmUgbW9yZSBsaWtlIFVTQiwgYnV0IEkndmUK PiBubyBpZGVhIGhvdyBtdWNoIHdvcmsgaXQgd291bGQgYmUgZnJvbSB0aGUgYWxzYSBzaWRlLCB0 aGlzIHBhdGNoIHdhcwo+IHByb2JhYmx5IGFzIGRlZXAgaW50byBhbHNhIGFzIEkndmUgZ29uZS4K ClR3byB0aGluZ3MgaGF2ZSB0byBiZSBjb25zaWRlcmVkIGZvciBjb21wYXRpYmlsaXR5OgotIEVM RCwgY2hhbm5lbCBtYXAgYW5kIGphY2sgZGV0ZWN0aW9uOiB0aGVzZSBhcmUgY3JlYXRlZCBwZXIg UENNCiAgZGV2aWNlLCBhbmQgZXh0ZW5kaW5nIHRvIHN1YnN0cmVhbSB3b3VsZCBjb25mdXNlIHVz ZXIgc3BhY2UgYSBsb3QuCiAgSW4gdGhlb3J5LCBpdCBjYW4gYmUgZXh0ZW5kZWQgdXNpbmcgc3Vi ZGV2aWNlIG51bWJlciwgYnV0IGluIGFueXdheQogIHRoaXMgd29uJ3Qgd29yayB3aXRoIFB1bHNl QXVkaW8gYXMgaXMuCgotIFRoZSBwZXItcGluIGFzc2lnbm1lbnQgcHJvdmlkZXMgYSBtb3JlIG9y IGxlc3MgcGVyc2lzdGVudCByb3V0ZSB0byBhCiAgY2VydGFpbiBkZXZpY2UuICBDaGFuZ2luZyB0 aGUgYXNzaWdubWVudCBtZXRob2QgbWF5IGJyZWFrIHRoZQogIHByZXZpb3VzIHNldHVwLgoKQWxz bywgdGhlIGR5bmFtaWMgUENNIGNyZWF0aW9uIC8gcmVtb3ZhbCBpcyBhbiBpc3N1ZSB0aGF0IGhh cyBiZWVuCmRpc2N1c3NlZCBtYW55IHRpbWVzLiAgVW5mb3J0dW5hdGVseSBpdCB3b24ndCB3b3Jr IGFzIGlzLCBhdCBsZXN0IGZvcgpQQS4gIEN1cnJlbnRseSBQQSBkb2VzIHByb2Jpbmcgb2YgZGV2 aWNlcyBvbmx5IGF0IHRoZSBjYXJkIHByb2JlIHRpbWUuClRoZSBob3RwbHVnIG9mIFVTQi1hdWRp byB3b3JrcyBiZWNhdXNlIGl0J3MgYWx3YXlzIHRpZWQgd2l0aCB0aGUKY2FyZC4gIEJ1dCBpbiB0 aGlzIGNhc2UsIHRoZSBjYXJkIHJlbWFpbnMgd2hpbGUgb25seSB0aGUgUENNIGRldmljZXMKd2ls bCBiZSBjcmVhdGVkIC8gcmVtb3ZlZCwgdGh1cyB0aGUgcHJvYmUgaW4gUEEgd29uJ3QgYmUgdHJp Z2dlcmVkLgoKClRha2FzaGkKCj4gCj4gRGF2ZS4KPiAKPiA+PiBTaWduZWQtb2ZmLWJ5OiBEYXZl IEFpcmxpZSA8YWlybGllZEByZWRoYXQuY29tPgo+ID4+IC0tLQo+ID4+ICBpbmNsdWRlL3NvdW5k L2hkYV92ZXJicy5oICB8ICAgMiArCj4gPj4gIHNvdW5kL3BjaS9oZGEvaGRhX2NvZGVjLmMgIHwg ICAxICsKPiA+PiAgc291bmQvcGNpL2hkYS9oZGFfcHJvYy5jICAgfCAgIDUgKy0KPiA+PiAgc291 bmQvcGNpL2hkYS9wYXRjaF9oZG1pLmMgfCAxODEKPiA+PiArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrLS0tLS0tLS0tLS0tLS0KPiA+PiAgNCBmaWxlcyBjaGFuZ2VkLCAxMzEgaW5zZXJ0 aW9ucygrKSwgNTggZGVsZXRpb25zKC0pCj4gPj4KPiA+PiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9z b3VuZC9oZGFfdmVyYnMuaCBiL2luY2x1ZGUvc291bmQvaGRhX3ZlcmJzLmggaW5kZXgKPiA+PiBk MDUwOWRiLi4zYjYyYWM1IDEwMDY0NAo+ID4+IC0tLSBhL2luY2x1ZGUvc291bmQvaGRhX3ZlcmJz LmgKPiA+PiArKysgYi9pbmNsdWRlL3NvdW5kL2hkYV92ZXJicy5oCj4gPj4gQEAgLTc1LDYgKzc1 LDcgQEAgZW51bSB7Cj4gPj4gICNkZWZpbmUgQUNfVkVSQl9HRVRfSERNSV9DSEFOX1NMT1QgICAg ICAgICAgIDB4MGYzNAo+ID4+ICAjZGVmaW5lIEFDX1ZFUkJfR0VUX0RFVklDRV9TRUwgICAgICAg ICAgICAgICAgICAgICAgIDB4ZjM1Cj4gPj4gICNkZWZpbmUgQUNfVkVSQl9HRVRfREVWSUNFX0xJ U1QgICAgICAgICAgICAgICAgICAgICAgMHhmMzYKPiA+PiArI2RlZmluZSBBQ19WRVJCX0dFVF9E UF9TVFJFQU1fSUQgICAgICAgICAgICAgMHhmM2MKPiA+Pgo+ID4+ICAvKgo+ID4+ICAgKiBTRVQg dmVyYnMKPiA+PiBAQCAtMTE1LDYgKzExNiw3IEBAIGVudW0gewo+ID4+ICAjZGVmaW5lIEFDX1ZF UkJfU0VUX0hETUlfQ1BfQ1RSTCAgICAgICAgICAgICAweDczMwo+ID4+ICAjZGVmaW5lIEFDX1ZF UkJfU0VUX0hETUlfQ0hBTl9TTE9UICAgICAgICAgICAweDczNAo+ID4+ICAjZGVmaW5lIEFDX1ZF UkJfU0VUX0RFVklDRV9TRUwgICAgICAgICAgICAgICAgICAgICAgIDB4NzM1Cj4gPj4gKyNkZWZp bmUgQUNfVkVSQl9TRVRfRFBfU1RSRUFNX0lEICAgICAgICAgICAgIDB4NzNDCj4gPj4KPiA+PiAg LyoKPiA+PiAgICogUGFyYW1ldGVyIElEcwo+ID4+IGRpZmYgLS1naXQgYS9zb3VuZC9wY2kvaGRh L2hkYV9jb2RlYy5jIGIvc291bmQvcGNpL2hkYS9oZGFfY29kZWMuYyBpbmRleAo+ID4+IDU2NDU0 ODEuLjM5ODFjNjMgMTAwNjQ0Cj4gPj4gLS0tIGEvc291bmQvcGNpL2hkYS9oZGFfY29kZWMuYwo+ ID4+ICsrKyBiL3NvdW5kL3BjaS9oZGEvaGRhX2NvZGVjLmMKPiA+PiBAQCAtNDgyLDYgKzQ4Miw3 IEBAIGludCBzbmRfaGRhX2dldF9kZXZpY2VzKHN0cnVjdCBoZGFfY29kZWMgKmNvZGVjLAo+ID4+ IGhkYV9uaWRfdCBuaWQsCj4gPj4gICAgICAgfQo+ID4+ICAgICAgIHJldHVybiBkZXZpY2VzOwo+ ID4+ICB9Cj4gPj4gK0VYUE9SVF9TWU1CT0xfR1BMKHNuZF9oZGFfZ2V0X2RldmljZXMpOwo+ID4+ Cj4gPj4gIC8qCj4gPj4gICAqIGRlc3RydWN0b3IKPiA+PiBkaWZmIC0tZ2l0IGEvc291bmQvcGNp L2hkYS9oZGFfcHJvYy5jIGIvc291bmQvcGNpL2hkYS9oZGFfcHJvYy5jIGluZGV4Cj4gPj4gYmFh ZjdlZDAuLjM5ZmFjNTMgMTAwNjQ0Cj4gPj4gLS0tIGEvc291bmQvcGNpL2hkYS9oZGFfcHJvYy5j Cj4gPj4gKysrIGIvc291bmQvcGNpL2hkYS9oZGFfcHJvYy5jCj4gPj4gQEAgLTY0NCwxMCArNjQ0 LDEzIEBAIHN0YXRpYyB2b2lkIHByaW50X2RldmljZV9saXN0KHN0cnVjdCBzbmRfaW5mb19idWZm ZXIKPiA+PiAqYnVmZmVyLAo+ID4+ICAgICAgIGludCBpLCBjdXJyID0gLTE7Cj4gPj4gICAgICAg dTggZGV2X2xpc3RbQUNfTUFYX0RFVl9MSVNUX0xFTl07Cj4gPj4gICAgICAgaW50IGRldmxpc3Rf bGVuOwo+ID4+ICsgICAgIGludCBkcF9zX2lkOwo+ID4+Cj4gPj4gKyAgICAgZHBfc19pZCA9IHNu ZF9oZGFfY29kZWNfcmVhZChjb2RlYywgbmlkLCAwLAo+ID4+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEFDX1ZFUkJfR0VUX0RQX1NUUkVBTV9JRCwgMCk7Cj4gPj4gICAgICAgZGV2bGlz dF9sZW4gPSBzbmRfaGRhX2dldF9kZXZpY2VzKGNvZGVjLCBuaWQsIGRldl9saXN0LAo+ID4+ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQUNfTUFYX0RFVl9MSVNUX0xFTik7 Cj4gPj4gLSAgICAgc25kX2lwcmludGYoYnVmZmVyLCAiICBEZXZpY2VzOiAlZFxuIiwgZGV2bGlz dF9sZW4pOwo+ID4+ICsgICAgIHNuZF9pcHJpbnRmKGJ1ZmZlciwgIiAgRGV2aWNlczogJWQ6IDB4 JXhcbiIsIGRldmxpc3RfbGVuLCBkcF9zX2lkKTsKPiA+PiAgICAgICBpZiAoZGV2bGlzdF9sZW4g PD0gMCkKPiA+PiAgICAgICAgICAgICAgIHJldHVybjsKPiA+Pgo+ID4+IGRpZmYgLS1naXQgYS9z b3VuZC9wY2kvaGRhL3BhdGNoX2hkbWkuYyBiL3NvdW5kL3BjaS9oZGEvcGF0Y2hfaGRtaS5jIGlu ZGV4Cj4gPj4gNWY0NGY2MC4uODI3MjY1NiAxMDA2NDQKPiA+PiAtLS0gYS9zb3VuZC9wY2kvaGRh L3BhdGNoX2hkbWkuYwo+ID4+ICsrKyBiL3NvdW5kL3BjaS9oZGEvcGF0Y2hfaGRtaS5jCj4gPj4g QEAgLTY4LDYgKzY4LDE3IEBAIHN0cnVjdCBoZG1pX3NwZWNfcGVyX2N2dCB7Cj4gPj4gIC8qIG1h eC4gY29ubmVjdGlvbnMgdG8gYSB3aWRnZXQgKi8KPiA+PiAgI2RlZmluZSBIREFfTUFYX0NPTk5F Q1RJT05TICAzMgo+ID4+Cj4gPj4gK3N0cnVjdCBoZG1pX3NwZWNfcGVyX3BpbjsKPiA+PiArI2Rl ZmluZSBIREFfTUFYX0RFVklDRVMgMwo+ID4+ICtzdHJ1Y3QgaGRtaV9zcGVjX3Blcl9kZXZpY2Ug ewo+ID4+ICsgICAgIHN0cnVjdCBoZG1pX3NwZWNfcGVyX3BpbiAqcGluOwo+ID4+ICsgICAgIGlu dCBkZXZpY2VfaWR4Owo+ID4+ICsgICAgIHN0cnVjdCBoZG1pX2VsZCBzaW5rX2VsZDsKPiA+PiAr I2lmZGVmIENPTkZJR19QUk9DX0ZTCj4gPj4gKyAgICAgc3RydWN0IHNuZF9pbmZvX2VudHJ5ICpw cm9jX2VudHJ5Owo+ID4+ICsjZW5kaWYKPiA+PiArfTsKPiA+PiArCj4gPj4gIHN0cnVjdCBoZG1p X3NwZWNfcGVyX3BpbiB7Cj4gPj4gICAgICAgaGRhX25pZF90IHBpbl9uaWQ7Cj4gPj4gICAgICAg aW50IG51bV9tdXhfbmlkczsKPiA+PiBAQCAtNzYsNyArODcsMTEgQEAgc3RydWN0IGhkbWlfc3Bl Y19wZXJfcGluIHsKPiA+PiAgICAgICBoZGFfbmlkX3QgY3Z0X25pZDsKPiA+Pgo+ID4+ICAgICAg IHN0cnVjdCBoZGFfY29kZWMgKmNvZGVjOwo+ID4+IC0gICAgIHN0cnVjdCBoZG1pX2VsZCBzaW5r X2VsZDsKPiA+PiArCj4gPj4gKyAgICAgaW50IG51bV9kZXZpY2VzOwo+ID4+ICsgICAgIHU4IGRl dl9saXN0W0FDX01BWF9ERVZfTElTVF9MRU5dOwo+ID4+ICsgICAgIHN0cnVjdCBoZG1pX3NwZWNf cGVyX2RldmljZSBkZXZpY2VzW0hEQV9NQVhfREVWSUNFU107Cj4gPj4gKwo+ID4+ICAgICAgIHN0 cnVjdCBtdXRleCBsb2NrOwo+ID4+ICAgICAgIHN0cnVjdCBkZWxheWVkX3dvcmsgd29yazsKPiA+ PiAgICAgICBzdHJ1Y3Qgc25kX2tjb250cm9sICplbGRfY3RsOwo+ID4+IEBAIC04Niw5ICsxMDEs NiBAQCBzdHJ1Y3QgaGRtaV9zcGVjX3Blcl9waW4gewo+ID4+ICAgICAgIGJvb2wgbm9uX3BjbTsK PiA+PiAgICAgICBib29sIGNobWFwX3NldDsgICAgICAgICAvKiBjaGFubmVsLW1hcCBvdmVycmlk ZSBieSBBTFNBIEFQST8gKi8KPiA+PiAgICAgICB1bnNpZ25lZCBjaGFyIGNobWFwWzhdOyAvKiBB TFNBIEFQSSBjaGFubmVsLW1hcCAqLyAtI2lmZGVmCj4gPj4gQ09ORklHX1BST0NfRlMKPiA+PiAt ICAgICBzdHJ1Y3Qgc25kX2luZm9fZW50cnkgKnByb2NfZW50cnk7Cj4gPj4gLSNlbmRpZgo+ID4+ ICB9Owo+ID4+Cj4gPj4gIHN0cnVjdCBjZWFfY2hhbm5lbF9zcGVha2VyX2FsbG9jYXRpb247Cj4g Pj4gQEAgLTQwOSw3ICs0MjEsNyBAQCBzdGF0aWMgaW50IGhkbWlfZWxkX2N0bF9pbmZvKHN0cnVj dCBzbmRfa2NvbnRyb2wKPiA+PiAqa2NvbnRyb2wsCj4gPj4KPiA+PiAgICAgICBwaW5faWR4ID0g a2NvbnRyb2wtPnByaXZhdGVfdmFsdWU7Cj4gPj4gICAgICAgcGVyX3BpbiA9IGdldF9waW4oc3Bl YywgcGluX2lkeCk7Cj4gPj4gLSAgICAgZWxkID0gJnBlcl9waW4tPnNpbmtfZWxkOwo+ID4+ICsg ICAgIGVsZCA9ICZwZXJfcGluLT5kZXZpY2VzWzBdLnNpbmtfZWxkOwo+ID4+Cj4gPj4gICAgICAg bXV0ZXhfbG9jaygmcGVyX3Bpbi0+bG9jayk7Cj4gPj4gICAgICAgdWluZm8tPmNvdW50ID0gZWxk LT5lbGRfdmFsaWQgPyBlbGQtPmVsZF9zaXplIDogMDsgQEAgLTQyOSw3ICs0NDEsNyBAQAo+ID4+ IHN0YXRpYyBpbnQgaGRtaV9lbGRfY3RsX2dldChzdHJ1Y3Qgc25kX2tjb250cm9sICprY29udHJv bCwKPiA+Pgo+ID4+ICAgICAgIHBpbl9pZHggPSBrY29udHJvbC0+cHJpdmF0ZV92YWx1ZTsKPiA+ PiAgICAgICBwZXJfcGluID0gZ2V0X3BpbihzcGVjLCBwaW5faWR4KTsKPiA+PiAtICAgICBlbGQg PSAmcGVyX3Bpbi0+c2lua19lbGQ7Cj4gPj4gKyAgICAgZWxkID0gJnBlcl9waW4tPmRldmljZXNb MF0uc2lua19lbGQ7Cj4gPj4KPiA+PiAgICAgICBtdXRleF9sb2NrKCZwZXJfcGluLT5sb2NrKTsK PiA+PiAgICAgICBpZiAoZWxkLT5lbGRfc2l6ZSA+IEFSUkFZX1NJWkUodWNvbnRyb2wtPnZhbHVl LmJ5dGVzLmRhdGEpKSB7IEBAIC01NDksNjAKPiA+PiArNTYxLDYzIEBAIHN0YXRpYyB2b2lkIGhk bWlfc2V0X2NoYW5uZWxfY291bnQoc3RydWN0IGhkYV9jb2RlYyAqY29kZWMsCj4gPj4gICAqLwo+ ID4+Cj4gPj4gICNpZmRlZiBDT05GSUdfUFJPQ19GUwo+ID4+IC1zdGF0aWMgdm9pZCBwcmludF9l bGRfaW5mbyhzdHJ1Y3Qgc25kX2luZm9fZW50cnkgKmVudHJ5LAo+ID4+IC0gICAgICAgICAgICAg ICAgICAgICAgICBzdHJ1Y3Qgc25kX2luZm9fYnVmZmVyICpidWZmZXIpCj4gPj4gK3N0YXRpYyB2 b2lkIHByaW50X2VsZF9pbmZvX2RldmljZShzdHJ1Y3Qgc25kX2luZm9fZW50cnkgKmVudHJ5LAo+ ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNuZF9pbmZvX2J1ZmZl ciAqYnVmZmVyKQo+ID4+ICB7Cj4gPj4gLSAgICAgc3RydWN0IGhkbWlfc3BlY19wZXJfcGluICpw ZXJfcGluID0gZW50cnktPnByaXZhdGVfZGF0YTsKPiA+PiArICAgICBzdHJ1Y3QgaGRtaV9zcGVj X3Blcl9kZXZpY2UgKnBlcl9kZXZpY2UgPSBlbnRyeS0+cHJpdmF0ZV9kYXRhOwo+ID4+Cj4gPj4g LSAgICAgbXV0ZXhfbG9jaygmcGVyX3Bpbi0+bG9jayk7Cj4gPj4gLSAgICAgc25kX2hkbWlfcHJp bnRfZWxkX2luZm8oJnBlcl9waW4tPnNpbmtfZWxkLCBidWZmZXIpOwo+ID4+IC0gICAgIG11dGV4 X3VubG9jaygmcGVyX3Bpbi0+bG9jayk7Cj4gPj4gKyAgICAgbXV0ZXhfbG9jaygmcGVyX2Rldmlj ZS0+cGluLT5sb2NrKTsKPiA+PiArICAgICBzbmRfaGRtaV9wcmludF9lbGRfaW5mbygmcGVyX2Rl dmljZS0+c2lua19lbGQsIGJ1ZmZlcik7Cj4gPj4gKyAgICAgbXV0ZXhfdW5sb2NrKCZwZXJfZGV2 aWNlLT5waW4tPmxvY2spOwo+ID4+ICB9Cj4gPj4KPiA+PiAtc3RhdGljIHZvaWQgd3JpdGVfZWxk X2luZm8oc3RydWN0IHNuZF9pbmZvX2VudHJ5ICplbnRyeSwKPiA+PiAtICAgICAgICAgICAgICAg ICAgICAgICAgc3RydWN0IHNuZF9pbmZvX2J1ZmZlciAqYnVmZmVyKQo+ID4+ICtzdGF0aWMgdm9p ZCB3cml0ZV9lbGRfaW5mb19kZXZpY2Uoc3RydWN0IHNuZF9pbmZvX2VudHJ5ICplbnRyeSwKPiA+ PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzbmRfaW5mb19idWZmZXIg KmJ1ZmZlcikKPiA+PiAgewo+ID4+IC0gICAgIHN0cnVjdCBoZG1pX3NwZWNfcGVyX3BpbiAqcGVy X3BpbiA9IGVudHJ5LT5wcml2YXRlX2RhdGE7Cj4gPj4gKyAgICAgc3RydWN0IGhkbWlfc3BlY19w ZXJfZGV2aWNlICpwZXJfZGV2aWNlID0gZW50cnktPnByaXZhdGVfZGF0YTsKPiA+Pgo+ID4+IC0g ICAgIG11dGV4X2xvY2soJnBlcl9waW4tPmxvY2spOwo+ID4+IC0gICAgIHNuZF9oZG1pX3dyaXRl X2VsZF9pbmZvKCZwZXJfcGluLT5zaW5rX2VsZCwgYnVmZmVyKTsKPiA+PiAtICAgICBtdXRleF91 bmxvY2soJnBlcl9waW4tPmxvY2spOwo+ID4+ICsgICAgIG11dGV4X2xvY2soJnBlcl9kZXZpY2Ut PnBpbi0+bG9jayk7Cj4gPj4gKyAgICAgc25kX2hkbWlfd3JpdGVfZWxkX2luZm8oJnBlcl9kZXZp Y2UtPnNpbmtfZWxkLCBidWZmZXIpOwo+ID4+ICsgICAgIG11dGV4X3VubG9jaygmcGVyX2Rldmlj ZS0+cGluLT5sb2NrKTsKPiA+PiAgfQo+ID4+Cj4gPj4gLXN0YXRpYyBpbnQgZWxkX3Byb2NfbmV3 KHN0cnVjdCBoZG1pX3NwZWNfcGVyX3BpbiAqcGVyX3BpbiwgaW50IGluZGV4KQo+ID4+ICtzdGF0 aWMgaW50IGVsZF9kZXZpY2VfcHJvY19uZXcoc3RydWN0IGhkbWlfc3BlY19wZXJfZGV2aWNlICpw ZXJfZGV2aWNlLAo+ID4+ICtpbnQgcGluX2lkeCwgaW50IGRldl9pZHgpCj4gPj4gIHsKPiA+PiAg ICAgICBjaGFyIG5hbWVbMzJdOwo+ID4+IC0gICAgIHN0cnVjdCBoZGFfY29kZWMgKmNvZGVjID0g cGVyX3Bpbi0+Y29kZWM7Cj4gPj4gKyAgICAgc3RydWN0IGhkYV9jb2RlYyAqY29kZWMgPSBwZXJf ZGV2aWNlLT5waW4tPmNvZGVjOwo+ID4+ICAgICAgIHN0cnVjdCBzbmRfaW5mb19lbnRyeSAqZW50 cnk7Cj4gPj4gICAgICAgaW50IGVycjsKPiA+Pgo+ID4+IC0gICAgIHNucHJpbnRmKG5hbWUsIHNp emVvZihuYW1lKSwgImVsZCMlZC4lZCIsIGNvZGVjLT5hZGRyLCBpbmRleCk7Cj4gPj4gKyAgICAg aWYgKGRldl9pZHggPT0gLTEpCj4gPj4gKyAgICAgICAgICAgICBzbnByaW50ZihuYW1lLCBzaXpl b2YobmFtZSksICJlbGQjJWQuJWQiLCBjb2RlYy0+YWRkciwgcGluX2lkeCk7Cj4gPj4gKyAgICAg ZWxzZQo+ID4+ICsgICAgICAgICAgICAgc25wcmludGYobmFtZSwgc2l6ZW9mKG5hbWUpLCAiZWxk IyVkLiVkLiVkIiwgY29kZWMtPmFkZHIsCj4gPj4gcGluX2lkeCwKPiA+PiArZGV2X2lkeCk7Cj4g Pj4gICAgICAgZXJyID0gc25kX2NhcmRfcHJvY19uZXcoY29kZWMtPmNhcmQsIG5hbWUsICZlbnRy eSk7Cj4gPj4gICAgICAgaWYgKGVyciA8IDApCj4gPj4gICAgICAgICAgICAgICByZXR1cm4gZXJy Owo+ID4+Cj4gPj4gLSAgICAgc25kX2luZm9fc2V0X3RleHRfb3BzKGVudHJ5LCBwZXJfcGluLCBw cmludF9lbGRfaW5mbyk7Cj4gPj4gLSAgICAgZW50cnktPmMudGV4dC53cml0ZSA9IHdyaXRlX2Vs ZF9pbmZvOwo+ID4+ICsgICAgIHNuZF9pbmZvX3NldF90ZXh0X29wcyhlbnRyeSwgcGVyX2Rldmlj ZSwgcHJpbnRfZWxkX2luZm9fZGV2aWNlKTsKPiA+PiArICAgICBlbnRyeS0+Yy50ZXh0LndyaXRl ID0gd3JpdGVfZWxkX2luZm9fZGV2aWNlOwo+ID4+ICAgICAgIGVudHJ5LT5tb2RlIHw9IFNfSVdV U1I7Cj4gPj4gLSAgICAgcGVyX3Bpbi0+cHJvY19lbnRyeSA9IGVudHJ5Owo+ID4+ICsgICAgIHBl cl9kZXZpY2UtPnByb2NfZW50cnkgPSBlbnRyeTsKPiA+Pgo+ID4+ICAgICAgIHJldHVybiAwOwo+ ID4+ICB9Cj4gPj4KPiA+PiAtc3RhdGljIHZvaWQgZWxkX3Byb2NfZnJlZShzdHJ1Y3QgaGRtaV9z cGVjX3Blcl9waW4gKnBlcl9waW4pCj4gPj4gK3N0YXRpYyB2b2lkIGVsZF9kZXZpY2VfcHJvY19m cmVlKHN0cnVjdCBoZG1pX3NwZWNfcGVyX2RldmljZQo+ID4+ICsqcGVyX2RldmljZSkKPiA+PiAg ewo+ID4+IC0gICAgIGlmICghcGVyX3Bpbi0+Y29kZWMtPmJ1cy0+c2h1dGRvd24gJiYgcGVyX3Bp bi0+cHJvY19lbnRyeSkgewo+ID4+IC0gICAgICAgICAgICAgc25kX2RldmljZV9mcmVlKHBlcl9w aW4tPmNvZGVjLT5jYXJkLCBwZXJfcGluLT5wcm9jX2VudHJ5KTsKPiA+PiAtICAgICAgICAgICAg IHBlcl9waW4tPnByb2NfZW50cnkgPSBOVUxMOwo+ID4+ICsgICAgIGlmICghcGVyX2RldmljZS0+ cGluLT5jb2RlYy0+YnVzLT5zaHV0ZG93biAmJiBwZXJfZGV2aWNlLT5wcm9jX2VudHJ5KQo+ID4+ IHsKPiA+PiArICAgICAgICAgICAgIHNuZF9kZXZpY2VfZnJlZShwZXJfZGV2aWNlLT5waW4tPmNv ZGVjLT5jYXJkLAo+ID4+IHBlcl9kZXZpY2UtPnByb2NfZW50cnkpOwo+ID4+ICsgICAgICAgICAg ICAgcGVyX2RldmljZS0+cHJvY19lbnRyeSA9IE5VTEw7Cj4gPj4gICAgICAgfQo+ID4+ICB9Cj4g Pj4gICNlbHNlCj4gPj4gLXN0YXRpYyBpbmxpbmUgaW50IGVsZF9wcm9jX25ldyhzdHJ1Y3QgaGRt aV9zcGVjX3Blcl9waW4gKnBlcl9waW4sCj4gPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpbnQgaW5kZXgpCj4gPj4gK3N0YXRpYyBpbmxpbmUgaW50IGVsZF9kZXZpY2VfcHJvY19uZXco c3RydWN0IGhkbWlfc3BlY19wZXJfZGV2aWNlCj4gPj4gKnBlcl9kZXZpY2UsCj4gPj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHBpbl9pZHgsIGludCBkZXZfaWR4KQo+ ID4+ICB7Cj4gPj4gICAgICAgcmV0dXJuIDA7Cj4gPj4gIH0KPiA+PiAtc3RhdGljIGlubGluZSB2 b2lkIGVsZF9wcm9jX2ZyZWUoc3RydWN0IGhkbWlfc3BlY19wZXJfcGluICpwZXJfcGluKQo+ID4+ ICtzdGF0aWMgaW5saW5lIHZvaWQgZWxkX2RldmljZV9wcm9jX2ZyZWUoc3RydWN0IGhkbWlfc3Bl Y19wZXJfZGV2aWNlCj4gPj4gKypwZXJfZGV2aWNlKQo+ID4+ICB7Cj4gPj4gIH0KPiA+PiAgI2Vu ZGlmCj4gPj4gQEAgLTExMTIsMTMgKzExMjcsMTMgQEAgc3RhdGljIHZvaWQgaGRtaV9waW5fc2V0 dXBfaW5mb2ZyYW1lKHN0cnVjdAo+ID4+IGhkYV9jb2RlYyAqY29kZWMsCj4gPj4KPiA+PiAgc3Rh dGljIHZvaWQgaGRtaV9zZXR1cF9hdWRpb19pbmZvZnJhbWUoc3RydWN0IGhkYV9jb2RlYyAqY29k ZWMsCj4gPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBoZG1p X3NwZWNfcGVyX3BpbiAqcGVyX3BpbiwKPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc3RydWN0IGhkbWlfZWxkICplbGQsCj4gPj4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGJvb2wgbm9uX3BjbSkKPiA+PiAgewo+ID4+ICAgICAgIHN0cnVjdCBo ZG1pX3NwZWMgKnNwZWMgPSBjb2RlYy0+c3BlYzsKPiA+PiAgICAgICBoZGFfbmlkX3QgcGluX25p ZCA9IHBlcl9waW4tPnBpbl9uaWQ7Cj4gPj4gICAgICAgaW50IGNoYW5uZWxzID0gcGVyX3Bpbi0+ Y2hhbm5lbHM7Cj4gPj4gICAgICAgaW50IGFjdGl2ZV9jaGFubmVsczsKPiA+PiAtICAgICBzdHJ1 Y3QgaGRtaV9lbGQgKmVsZDsKPiA+PiAgICAgICBpbnQgY2EsIG9yZGVyZWRfY2E7Cj4gPj4KPiA+ PiAgICAgICBpZiAoIWNoYW5uZWxzKQo+ID4+IEBAIC0xMTI5LDcgKzExNDQsOCBAQCBzdGF0aWMg dm9pZCBoZG1pX3NldHVwX2F1ZGlvX2luZm9mcmFtZShzdHJ1Y3QKPiA+PiBoZGFfY29kZWMgKmNv ZGVjLAo+ID4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFDX1ZF UkJfU0VUX0FNUF9HQUlOX01VVEUsCj4gPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgQU1QX09VVF9VTk1VVEUpOwo+ID4+Cj4gPj4gLSAgICAgZWxkID0gJnBlcl9w aW4tPnNpbmtfZWxkOwo+ID4+ICsgICAgIGlmICghZWxkKQo+ID4+ICsgICAgICAgICAgICAgZWxk ID0gJnBlcl9waW4tPmRldmljZXNbMF0uc2lua19lbGQ7Cj4gPj4KPiA+PiAgICAgICBpZiAoIW5v bl9wY20gJiYgcGVyX3Bpbi0+Y2htYXBfc2V0KQo+ID4+ICAgICAgICAgICAgICAgY2EgPSBoZG1p X21hbnVhbF9jaGFubmVsX2FsbG9jYXRpb24oY2hhbm5lbHMsIHBlcl9waW4tPmNobWFwKTsKPiA+ PiBAQCAtMTE5MSw3ICsxMjA3LDcgQEAgc3RhdGljIHZvaWQgaGRtaV9pbnRyaW5zaWNfZXZlbnQo c3RydWN0IGhkYV9jb2RlYwo+ID4+ICpjb2RlYywgdW5zaWduZWQgaW50IHJlcykKPiA+PiAgICAg ICAgICAgICAgIHJldHVybjsKPiA+PiAgICAgICBqYWNrLT5qYWNrX2RpcnR5ID0gMTsKPiA+Pgo+ ID4+IC0gICAgIGNvZGVjX2RiZyhjb2RlYywKPiA+PiArICAgICBjb2RlY19pbmZvKGNvZGVjLAo+ ID4+ICAgICAgICAgICAgICAgIkhETUkgaG90IHBsdWcgZXZlbnQ6IENvZGVjPSVkIFBpbj0lZCBE ZXZpY2U9JWQgSW5hY3RpdmU9JWQKPiA+PiBQcmVzZW5jZV9EZXRlY3Q9JWQgRUxEX1ZhbGlkPSVk XG4iLAo+ID4+ICAgICAgICAgICAgICAgY29kZWMtPmFkZHIsIGphY2stPm5pZCwgZGV2X2VudHJ5 LCAhIShyZXMgJiBBQ19VTlNPTF9SRVNfSUEpLAo+ID4+ICAgICAgICAgICAgICAgISEocmVzICYg QUNfVU5TT0xfUkVTX1BEKSwgISEocmVzICYgQUNfVU5TT0xfUkVTX0VMRFYpKTsgQEAKPiA+PiAt MTQ0OSw3ICsxNDY1LDcgQEAgc3RhdGljIGludCBoZG1pX3BjbV9vcGVuKHN0cnVjdCBoZGFfcGNt X3N0cmVhbQo+ID4+ICpoaW5mbywKPiA+PiAgICAgICBpZiAoc25kX0JVR19PTihwaW5faWR4IDwg MCkpCj4gPj4gICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPiA+PiAgICAgICBwZXJfcGlu ID0gZ2V0X3BpbihzcGVjLCBwaW5faWR4KTsKPiA+PiAtICAgICBlbGQgPSAmcGVyX3Bpbi0+c2lu a19lbGQ7Cj4gPj4gKyAgICAgZWxkID0gJnBlcl9waW4tPmRldmljZXNbMF0uc2lua19lbGQ7Cj4g Pj4KPiA+PiAgICAgICBlcnIgPSBoZG1pX2Nob29zZV9jdnQoY29kZWMsIHBpbl9pZHgsICZjdnRf aWR4LCAmbXV4X2lkeCk7Cj4gPj4gICAgICAgaWYgKGVyciA8IDApCj4gPj4gQEAgLTE1MzAsNyAr MTU0Niw3IEBAIHN0YXRpYyBib29sIGhkbWlfcHJlc2VudF9zZW5zZShzdHJ1Y3QKPiA+PiBoZG1p X3NwZWNfcGVyX3BpbiAqcGVyX3BpbiwgaW50IHJlcG9sbCkKPiA+PiAgICAgICBzdHJ1Y3QgaGRh X2NvZGVjICpjb2RlYyA9IHBlcl9waW4tPmNvZGVjOwo+ID4+ICAgICAgIHN0cnVjdCBoZG1pX3Nw ZWMgKnNwZWMgPSBjb2RlYy0+c3BlYzsKPiA+PiAgICAgICBzdHJ1Y3QgaGRtaV9lbGQgKmVsZCA9 ICZzcGVjLT50ZW1wX2VsZDsKPiA+PiAtICAgICBzdHJ1Y3QgaGRtaV9lbGQgKnBpbl9lbGQgPSAm cGVyX3Bpbi0+c2lua19lbGQ7Cj4gPj4gKyAgICAgc3RydWN0IGhkbWlfZWxkICpwaW5fZWxkOwo+ ID4+ICAgICAgIGhkYV9uaWRfdCBwaW5fbmlkID0gcGVyX3Bpbi0+cGluX25pZDsKPiA+PiAgICAg ICAvKgo+ID4+ICAgICAgICAqIEFsd2F5cyBleGVjdXRlIGEgR2V0UGluU2Vuc2UgdmVyYiBoZXJl LCBldmVuIHdoZW4gY2FsbGVkIGZyb20gQEAKPiA+PiAtMTU0NCwyMCArMTU2MCw0MSBAQCBzdGF0 aWMgYm9vbCBoZG1pX3ByZXNlbnRfc2Vuc2Uoc3RydWN0Cj4gPj4gaGRtaV9zcGVjX3Blcl9waW4g KnBlcl9waW4sIGludCByZXBvbGwpCj4gPj4gICAgICAgYm9vbCB1cGRhdGVfZWxkID0gZmFsc2U7 Cj4gPj4gICAgICAgYm9vbCBlbGRfY2hhbmdlZCA9IGZhbHNlOwo+ID4+ICAgICAgIGJvb2wgcmV0 Owo+ID4+ICsgICAgIGludCBkZXZpY2VfbnVtID0gMDsKPiA+PiArICAgICBib29sIG5lZWRfcmVw b2xsID0gZmFsc2U7Cj4gPj4gKyAgICAgYm9vbCBhbnlfZWxkX3ZhbGlkID0gZmFsc2U7Cj4gPj4K PiA+PiAgICAgICBzbmRfaGRhX3Bvd2VyX3VwX3BtKGNvZGVjKTsKPiA+PiAgICAgICBwcmVzZW50 ID0gc25kX2hkYV9waW5fc2Vuc2UoY29kZWMsIHBpbl9uaWQpOwo+ID4+Cj4gPj4gICAgICAgbXV0 ZXhfbG9jaygmcGVyX3Bpbi0+bG9jayk7Cj4gPj4gLSAgICAgcGluX2VsZC0+bW9uaXRvcl9wcmVz ZW50ID0gISEocHJlc2VudCAmIEFDX1BJTlNFTlNFX1BSRVNFTkNFKTsKPiA+PiAtICAgICBpZiAo cGluX2VsZC0+bW9uaXRvcl9wcmVzZW50KQo+ID4+IC0gICAgICAgICAgICAgZWxkLT5lbGRfdmFs aWQgID0gISEocHJlc2VudCAmIEFDX1BJTlNFTlNFX0VMRFYpOwo+ID4+IC0gICAgIGVsc2UKPiA+ PiAtICAgICAgICAgICAgIGVsZC0+ZWxkX3ZhbGlkID0gZmFsc2U7Cj4gPj4KPiA+PiAtICAgICBj b2RlY19kYmcoY29kZWMsCj4gPj4gLSAgICAgICAgICAgICAiSERNSSBzdGF0dXM6IENvZGVjPSVk IFBpbj0lZCBQcmVzZW5jZV9EZXRlY3Q9JWQKPiA+PiBFTERfVmFsaWQ9JWRcbiIsCj4gPj4gLSAg ICAgICAgICAgICBjb2RlYy0+YWRkciwgcGluX25pZCwgcGluX2VsZC0+bW9uaXRvcl9wcmVzZW50 LCBlbGQtPmVsZF92YWxpZCk7Cj4gPj4gKyAgICAgaWYgKGNvZGVjLT5kcF9tc3QpCj4gPj4gKyAg ICAgICAgICAgICBwZXJfcGluLT5udW1fZGV2aWNlcyA9IHNuZF9oZGFfZ2V0X2RldmljZXMoY29k ZWMsIHBpbl9uaWQsCj4gPj4gcGVyX3Bpbi0+ZGV2X2xpc3QsCj4gPj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQUNfTUFYX0RFVl9MSVNU X0xFTik7Cj4gPj4gK25leHRfZGV2aWNlOgo+ID4+ICsgICAgIHBpbl9lbGQgPSAmcGVyX3Bpbi0+ ZGV2aWNlc1tkZXZpY2VfbnVtXS5zaW5rX2VsZDsKPiA+PiArICAgICBlbGRfY2hhbmdlZCA9IGZh bHNlOwo+ID4+ICsgICAgIHVwZGF0ZV9lbGQgPSBmYWxzZTsKPiA+PiArICAgICBpZiAocGVyX3Bp bi0+bnVtX2RldmljZXMpIHsKPiA+PiArICAgICAgICAgICAgIHBpbl9lbGQtPm1vbml0b3JfcHJl c2VudCA9ICEhKHBlcl9waW4tPmRldl9saXN0W2RldmljZV9udW1dICYKPiA+PiBBQ19ERV9QRCk7 Cj4gPj4gKyAgICAgICAgICAgICBpZiAocGluX2VsZC0+bW9uaXRvcl9wcmVzZW50KQo+ID4+ICsg ICAgICAgICAgICAgICAgICAgICBlbGQtPmVsZF92YWxpZCA9ICEhKHBlcl9waW4tPmRldl9saXN0 W2RldmljZV9udW1dICYKPiA+PiBBQ19ERV9FTERWKTsKPiA+PiArICAgICAgICAgICAgIGVsc2UK PiA+PiArICAgICAgICAgICAgICAgICAgICAgZWxkLT5lbGRfdmFsaWQgPSBmYWxzZTsKPiA+PiAr ICAgICAgICAgICAgIGlmIChlbGQtPmVsZF92YWxpZCkKPiA+PiArICAgICAgICAgICAgICAgICAg ICAgc25kX2hkYV9jb2RlY193cml0ZShjb2RlYywgcGluX25pZCwgMCwKPiA+PiBBQ19WRVJCX1NF VF9ERVZJQ0VfU0VMLCBkZXZpY2VfbnVtKTsKPiA+PiArICAgICB9IGVsc2Ugewo+ID4+ICsgICAg ICAgICAgICAgcGluX2VsZC0+bW9uaXRvcl9wcmVzZW50ID0gISEocHJlc2VudCAmIEFDX1BJTlNF TlNFX1BSRVNFTkNFKTsKPiA+PiArICAgICAgICAgICAgIGlmIChwaW5fZWxkLT5tb25pdG9yX3By ZXNlbnQpCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgIGVsZC0+ZWxkX3ZhbGlkICA9ICEhKHBy ZXNlbnQgJiBBQ19QSU5TRU5TRV9FTERWKTsKPiA+PiArICAgICAgICAgICAgIGVsc2UKPiA+PiAr ICAgICAgICAgICAgICAgICAgICAgZWxkLT5lbGRfdmFsaWQgPSBmYWxzZTsKPiA+PiArICAgICB9 Cj4gPj4gKwo+ID4+ICsgICAgIGNvZGVjX2luZm8oY29kZWMsCj4gPj4gKyAgICAgICAgICAgICAi SERNSSBzdGF0dXM6IENvZGVjPSVkIFBpbj0lZCBEZXZpY2U9JWQgUHJlc2VuY2VfRGV0ZWN0PSVk Cj4gPj4gRUxEX1ZhbGlkPSVkXG4iLAo+ID4+ICsgICAgICAgICAgICAgICAgY29kZWMtPmFkZHIs IHBpbl9uaWQsIGRldmljZV9udW0sIHBpbl9lbGQtPm1vbml0b3JfcHJlc2VudCwKPiA+PiArZWxk LT5lbGRfdmFsaWQpOwo+ID4+Cj4gPj4gICAgICAgaWYgKGVsZC0+ZWxkX3ZhbGlkKSB7Cj4gPj4g ICAgICAgICAgICAgICBpZiAoc3BlYy0+b3BzLnBpbl9nZXRfZWxkKGNvZGVjLCBwaW5fbmlkLCBl bGQtPmVsZF9idWZmZXIsIEBACj4gPj4gLTE1NzMsMTEgKzE2MTAsMTEgQEAgc3RhdGljIGJvb2wg aGRtaV9wcmVzZW50X3NlbnNlKHN0cnVjdAo+ID4+IGhkbWlfc3BlY19wZXJfcGluICpwZXJfcGlu LCBpbnQgcmVwb2xsKQo+ID4+ICAgICAgICAgICAgICAgaWYgKGVsZC0+ZWxkX3ZhbGlkKSB7Cj4g Pj4gICAgICAgICAgICAgICAgICAgICAgIHNuZF9oZG1pX3Nob3dfZWxkKGNvZGVjLCAmZWxkLT5p bmZvKTsKPiA+PiAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlX2VsZCA9IHRydWU7Cj4gPj4g KyAgICAgICAgICAgICAgICAgICAgIGFueV9lbGRfdmFsaWQgPSB0cnVlOwo+ID4+ICAgICAgICAg ICAgICAgfQo+ID4+ICAgICAgICAgICAgICAgZWxzZSBpZiAocmVwb2xsKSB7Cj4gPj4gLSAgICAg ICAgICAgICAgICAgICAgIHNjaGVkdWxlX2RlbGF5ZWRfd29yaygmcGVyX3Bpbi0+d29yaywKPiA+ PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZWNzX3RvX2pp ZmZpZXMoMzAwKSk7Cj4gPj4gLSAgICAgICAgICAgICAgICAgICAgIGdvdG8gdW5sb2NrOwo+ID4+ ICsgICAgICAgICAgICAgICAgICAgICBuZWVkX3JlcG9sbCA9IHRydWU7Cj4gPj4gKyAgICAgICAg ICAgICAgICAgICAgIGdvdG8gc2tpcF90b19uZXh0X2RldmljZTsKPiA+PiAgICAgICAgICAgICAg IH0KPiA+PiAgICAgICB9Cj4gPj4KPiA+PiBAQCAtMTYxNCw3ICsxNjUxLDcgQEAgc3RhdGljIGJv b2wgaGRtaV9wcmVzZW50X3NlbnNlKHN0cnVjdAo+ID4+IGhkbWlfc3BlY19wZXJfcGluICpwZXJf cGluLCBpbnQgcmVwb2xsKQo+ID4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHBlcl9waW4tPm11eF9pZHgpOwo+ID4+ICAgICAgICAgICAgICAg ICAgICAgICB9Cj4gPj4KPiA+PiAtICAgICAgICAgICAgICAgICAgICAgaGRtaV9zZXR1cF9hdWRp b19pbmZvZnJhbWUoY29kZWMsIHBlcl9waW4sCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgIGhk bWlfc2V0dXBfYXVkaW9faW5mb2ZyYW1lKGNvZGVjLCBwZXJfcGluLCBlbGQsCj4gPj4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcl9waW4tPm5vbl9w Y20pOwo+ID4+ICAgICAgICAgICAgICAgfQo+ID4+ICAgICAgIH0KPiA+PiBAQCAtMTYyMyw4ICsx NjYwLDE5IEBAIHN0YXRpYyBib29sIGhkbWlfcHJlc2VudF9zZW5zZShzdHJ1Y3QKPiA+PiBoZG1p X3NwZWNfcGVyX3BpbiAqcGVyX3BpbiwgaW50IHJlcG9sbCkKPiA+PiAgICAgICAgICAgICAgIHNu ZF9jdGxfbm90aWZ5KGNvZGVjLT5jYXJkLAo+ID4+ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgU05EUlZfQ1RMX0VWRU5UX01BU0tfVkFMVUUgfAo+ID4+IFNORFJWX0NUTF9FVkVOVF9NQVNL X0lORk8sCj4gPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcGVyX3Bpbi0+ZWxkX2N0 bC0+aWQpOwo+ID4+IC0gdW5sb2NrOgo+ID4+IC0gICAgIHJldCA9ICFyZXBvbGwgfHwgIXBpbl9l bGQtPm1vbml0b3JfcHJlc2VudCB8fCBwaW5fZWxkLT5lbGRfdmFsaWQ7Cj4gPj4gK3NraXBfdG9f bmV4dF9kZXZpY2U6Cj4gPj4gKyAgICAgaWYgKGNvZGVjLT5kcF9tc3QpIHsKPiA+PiArICAgICAg ICAgICAgIGRldmljZV9udW0rKzsKPiA+PiArICAgICAgICAgICAgIGlmIChkZXZpY2VfbnVtIDwg cGVyX3Bpbi0+bnVtX2RldmljZXMpCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgIGdvdG8gbmV4 dF9kZXZpY2U7Cj4gPj4gKyAgICAgfQo+ID4+ICsKPiA+PiArICAgICBpZiAobmVlZF9yZXBvbGwp IHsKPiA+PiArICAgICAgICAgICAgIHNjaGVkdWxlX2RlbGF5ZWRfd29yaygmcGVyX3Bpbi0+d29y aywKPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2Vjc190b19qaWZm aWVzKDMwMCkpOwo+ID4+ICsgICAgICAgICAgICAgcmVwb2xsID0gdHJ1ZTsKPiA+PiArICAgICB9 Cj4gPj4gKyAgICAgcmV0ID0gIXJlcG9sbCB8fCBhbnlfZWxkX3ZhbGlkOwo+ID4+Cj4gPj4gICAg ICAgamFjayA9IHNuZF9oZGFfamFja190YmxfZ2V0KGNvZGVjLCBwaW5fbmlkKTsKPiA+PiAgICAg ICBpZiAoamFjaykKPiA+PiBAQCAtMTgwNyw3ICsxODU1LDcgQEAgc3RhdGljIGludAo+ID4+IGdl bmVyaWNfaGRtaV9wbGF5YmFja19wY21fcHJlcGFyZShzdHJ1Y3QgaGRhX3BjbV9zdHJlYW0gKmhp bmZvLAo+ID4+ICAgICAgIHBlcl9waW4tPmNoYW5uZWxzID0gc3Vic3RyZWFtLT5ydW50aW1lLT5j aGFubmVsczsKPiA+PiAgICAgICBwZXJfcGluLT5zZXR1cCA9IHRydWU7Cj4gPj4KPiA+PiAtICAg ICBoZG1pX3NldHVwX2F1ZGlvX2luZm9mcmFtZShjb2RlYywgcGVyX3Bpbiwgbm9uX3BjbSk7Cj4g Pj4gKyAgICAgaGRtaV9zZXR1cF9hdWRpb19pbmZvZnJhbWUoY29kZWMsIHBlcl9waW4sIE5VTEws IG5vbl9wY20pOwo+ID4+ICAgICAgIG11dGV4X3VubG9jaygmcGVyX3Bpbi0+bG9jayk7Cj4gPj4K PiA+PiAgICAgICBpZiAoc3BlYy0+ZHluX3Bpbl9vdXQpIHsKPiA+PiBAQCAtMjAzNSw3ICsyMDgz LDcgQEAgc3RhdGljIGludCBoZG1pX2NobWFwX2N0bF9wdXQoc3RydWN0IHNuZF9rY29udHJvbAo+ ID4+ICprY29udHJvbCwKPiA+PiAgICAgICBwZXJfcGluLT5jaG1hcF9zZXQgPSB0cnVlOwo+ID4+ ICAgICAgIG1lbWNweShwZXJfcGluLT5jaG1hcCwgY2htYXAsIHNpemVvZihjaG1hcCkpOwo+ID4+ ICAgICAgIGlmIChwcmVwYXJlZCkKPiA+PiAtICAgICAgICAgICAgIGhkbWlfc2V0dXBfYXVkaW9f aW5mb2ZyYW1lKGNvZGVjLCBwZXJfcGluLCBwZXJfcGluLT5ub25fcGNtKTsKPiA+PiArICAgICAg ICAgICAgIGhkbWlfc2V0dXBfYXVkaW9faW5mb2ZyYW1lKGNvZGVjLCBwZXJfcGluLCBOVUxMLAo+ ID4+IHBlcl9waW4tPm5vbl9wY20pOwo+ID4+ICAgICAgIG11dGV4X3VubG9jaygmcGVyX3Bpbi0+ bG9jayk7Cj4gPj4KPiA+PiAgICAgICByZXR1cm4gMDsKPiA+PiBAQCAtMjE0Nyw3ICsyMTk1LDcg QEAgc3RhdGljIGludCBnZW5lcmljX2hkbWlfYnVpbGRfY29udHJvbHMoc3RydWN0Cj4gPj4gaGRh X2NvZGVjICpjb2RlYykgIHN0YXRpYyBpbnQgZ2VuZXJpY19oZG1pX2luaXRfcGVyX3BpbnMoc3Ry dWN0IGhkYV9jb2RlYwo+ID4+ICpjb2RlYykgIHsKPiA+PiAgICAgICBzdHJ1Y3QgaGRtaV9zcGVj ICpzcGVjID0gY29kZWMtPnNwZWM7Cj4gPj4gLSAgICAgaW50IHBpbl9pZHg7Cj4gPj4gKyAgICAg aW50IHBpbl9pZHgsIGRldl9pZHg7Cj4gPj4KPiA+PiAgICAgICBmb3IgKHBpbl9pZHggPSAwOyBw aW5faWR4IDwgc3BlYy0+bnVtX3BpbnM7IHBpbl9pZHgrKykgewo+ID4+ICAgICAgICAgICAgICAg c3RydWN0IGhkbWlfc3BlY19wZXJfcGluICpwZXJfcGluID0gZ2V0X3BpbihzcGVjLCBwaW5faWR4 KTsgQEAKPiA+PiAtMjE1NSw3ICsyMjAzLDIwIEBAIHN0YXRpYyBpbnQgZ2VuZXJpY19oZG1pX2lu aXRfcGVyX3BpbnMoc3RydWN0IGhkYV9jb2RlYwo+ID4+ICpjb2RlYykKPiA+PiAgICAgICAgICAg ICAgIHBlcl9waW4tPmNvZGVjID0gY29kZWM7Cj4gPj4gICAgICAgICAgICAgICBtdXRleF9pbml0 KCZwZXJfcGluLT5sb2NrKTsKPiA+PiAgICAgICAgICAgICAgIElOSVRfREVMQVlFRF9XT1JLKCZw ZXJfcGluLT53b3JrLCBoZG1pX3JlcG9sbF9lbGQpOwo+ID4+IC0gICAgICAgICAgICAgZWxkX3By b2NfbmV3KHBlcl9waW4sIHBpbl9pZHgpOwo+ID4+ICsKPiA+PiArICAgICAgICAgICAgIGlmIChj b2RlYy0+ZHBfbXN0KSB7Cj4gPj4gKyAgICAgICAgICAgICAgICAgICAgIGZvciAoZGV2X2lkeCA9 IDA7IGRldl9pZHggPCBIREFfTUFYX0RFVklDRVM7IGRldl9pZHgrKykgewo+ID4+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHBlcl9waW4tPmRldmljZXNbZGV2X2lkeF0uZGV2aWNlX2lk eCA9IGRldl9pZHg7Cj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVyX3Bpbi0+ ZGV2aWNlc1tkZXZfaWR4XS5waW4gPSBwZXJfcGluOwo+ID4+ICsKPiA+PiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBlbGRfZGV2aWNlX3Byb2NfbmV3KCZwZXJfcGluLT5kZXZpY2VzW2Rl dl9pZHhdLCBwaW5faWR4LAo+ID4+IGRldl9pZHgpOwo+ID4+ICsgICAgICAgICAgICAgICAgICAg ICB9Cj4gPj4gKyAgICAgICAgICAgICB9IGVsc2Ugewo+ID4+ICsgICAgICAgICAgICAgICAgICAg ICBwZXJfcGluLT5udW1fZGV2aWNlcyA9IDA7Cj4gPj4gKyAgICAgICAgICAgICAgICAgICAgIHBl cl9waW4tPmRldmljZXNbMF0uZGV2aWNlX2lkeCA9IDA7Cj4gPj4gKyAgICAgICAgICAgICAgICAg ICAgIHBlcl9waW4tPmRldmljZXNbMF0ucGluID0gcGVyX3BpbjsKPiA+PiArICAgICAgICAgICAg ICAgICAgICAgZWxkX2RldmljZV9wcm9jX25ldygmcGVyX3Bpbi0+ZGV2aWNlc1swXSwgcGluX2lk eCwgLTEpOwo+ID4+ICsgICAgICAgICAgICAgfQo+ID4+ICAgICAgIH0KPiA+PiAgICAgICByZXR1 cm4gMDsKPiA+PiAgfQo+ID4+IEBAIC0yMTkxLDEzICsyMjUyLDE5IEBAIHN0YXRpYyB2b2lkIGhk bWlfYXJyYXlfZnJlZShzdHJ1Y3QgaGRtaV9zcGVjCj4gPj4gKnNwZWMpICBzdGF0aWMgdm9pZCBn ZW5lcmljX2hkbWlfZnJlZShzdHJ1Y3QgaGRhX2NvZGVjICpjb2RlYykgIHsKPiA+PiAgICAgICBz dHJ1Y3QgaGRtaV9zcGVjICpzcGVjID0gY29kZWMtPnNwZWM7Cj4gPj4gLSAgICAgaW50IHBpbl9p ZHg7Cj4gPj4gKyAgICAgaW50IHBpbl9pZHgsIGRldl9pZHg7Cj4gPj4KPiA+PiAgICAgICBmb3Ig KHBpbl9pZHggPSAwOyBwaW5faWR4IDwgc3BlYy0+bnVtX3BpbnM7IHBpbl9pZHgrKykgewo+ID4+ ICAgICAgICAgICAgICAgc3RydWN0IGhkbWlfc3BlY19wZXJfcGluICpwZXJfcGluID0gZ2V0X3Bp bihzcGVjLCBwaW5faWR4KTsKPiA+Pgo+ID4+ICAgICAgICAgICAgICAgY2FuY2VsX2RlbGF5ZWRf d29ya19zeW5jKCZwZXJfcGluLT53b3JrKTsKPiA+PiAtICAgICAgICAgICAgIGVsZF9wcm9jX2Zy ZWUocGVyX3Bpbik7Cj4gPj4gKyAgICAgICAgICAgICBpZiAocGVyX3Bpbi0+bnVtX2RldmljZXMp IHsKPiA+PiArICAgICAgICAgICAgICAgICAgICAgZm9yIChkZXZfaWR4ID0gMDsgZGV2X2lkeCA8 IHBlcl9waW4tPm51bV9kZXZpY2VzOyBkZXZfaWR4KyspIHsKPiA+PiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzdHJ1Y3QgaGRtaV9zcGVjX3Blcl9kZXZpY2UgKnBlcl9kZXZpY2UgPQo+ ID4+ICZwZXJfcGluLT5kZXZpY2VzW2Rldl9pZHhdOwo+ID4+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGVsZF9kZXZpY2VfcHJvY19mcmVlKHBlcl9kZXZpY2UpOwo+ID4+ICsgICAgICAg ICAgICAgICAgICAgICB9Cj4gPj4gKyAgICAgICAgICAgICB9IGVsc2UKPiA+PiArICAgICAgICAg ICAgICAgICAgICAgICBlbGRfZGV2aWNlX3Byb2NfZnJlZSgmcGVyX3Bpbi0+ZGV2aWNlc1swXSk7 Cj4gPj4gICAgICAgfQo+ID4+Cj4gPj4gICAgICAgaGRtaV9hcnJheV9mcmVlKHNwZWMpOwo+ID4+ IEBAIC0yMzMzLDYgKzI0MDAsNyBAQCBzdGF0aWMgaW50IHBhdGNoX2dlbmVyaWNfaGRtaShzdHJ1 Y3QgaGRhX2NvZGVjCj4gPj4gKmNvZGVjKQo+ID4+ICAgICAgIGlmIChpc19oYXN3ZWxsX3BsdXMo Y29kZWMpKSB7Cj4gPj4gICAgICAgICAgICAgICBpbnRlbF9oYXN3ZWxsX2VuYWJsZV9hbGxfcGlu cyhjb2RlYywgdHJ1ZSk7Cj4gPj4gICAgICAgICAgICAgICBpbnRlbF9oYXN3ZWxsX2ZpeHVwX2Vu YWJsZV9kcDEyKGNvZGVjKTsKPiA+PiArICAgICAgICAgICAgIGNvZGVjLT5kcF9tc3QgPSB0cnVl Owo+ID4+ICAgICAgIH0KPiA+Pgo+ID4+ICAgICAgIGlmIChpc19oYXN3ZWxsX3BsdXMoY29kZWMp IHx8IGlzX3ZhbGxleXZpZXdfcGx1cyhjb2RlYykpIEBAIC0yMzQ2LDcKPiA+PiArMjQxNCw2IEBA IHN0YXRpYyBpbnQgcGF0Y2hfZ2VuZXJpY19oZG1pKHN0cnVjdCBoZGFfY29kZWMgKmNvZGVjKQo+ ID4+ICAgICAgIGNvZGVjLT5wYXRjaF9vcHMgPSBnZW5lcmljX2hkbWlfcGF0Y2hfb3BzOwo+ID4+ ICAgICAgIGlmIChpc19oYXN3ZWxsX3BsdXMoY29kZWMpKSB7Cj4gPj4gICAgICAgICAgICAgICBj b2RlYy0+cGF0Y2hfb3BzLnNldF9wb3dlcl9zdGF0ZSA9IGhhc3dlbGxfc2V0X3Bvd2VyX3N0YXRl Owo+ID4+IC0gICAgICAgICAgICAgY29kZWMtPmRwX21zdCA9IHRydWU7Cj4gPj4gICAgICAgfQo+ ID4+Cj4gPj4gICAgICAgZ2VuZXJpY19oZG1pX2luaXRfcGVyX3BpbnMoY29kZWMpOwo+ID4+IC0t Cj4gPj4gMi40LjEKPiA+Pgo+ID4+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCj4gPj4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+ID4+IEludGVsLWdmeEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKPiA+PiBodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cj4gCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vaW50ZWwtZ2Z4Cg==