From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [alsa-devel] HDMI codec, way forward? Date: Thu, 22 Oct 2015 09:18:09 +0200 Message-ID: <20151022071809.GK16848@phenom.ffwll.local> References: <20151021140307.GE32532@n2100.arm.linux.org.uk> <20151021143747.GG32532@n2100.arm.linux.org.uk> <20151021161927.GG27370@localhost> <20151021173437.GK32532@n2100.arm.linux.org.uk> <20151021181938.GL32532@n2100.arm.linux.org.uk> <20151021210415.GP32532@n2100.arm.linux.org.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20151021210415.GP32532@n2100.arm.linux.org.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Russell King - ARM Linux Cc: alsa-devel@alsa-project.org, broonie@kernel.org, Arnaud Pouliquen , lgirdwood@gmail.com, dri-devel@lists.freedesktop.org, peter.ujfalusi@ti.com, Vinod Koul , tomi.valkeinen@ti.com, Jyri Sarha List-Id: alsa-devel@alsa-project.org T24gV2VkLCBPY3QgMjEsIDIwMTUgYXQgMTA6MDQ6MTVQTSArMDEwMCwgUnVzc2VsbCBLaW5nIC0g QVJNIExpbnV4IHdyb3RlOgo+IE9uIFdlZCwgT2N0IDIxLCAyMDE1IGF0IDEwOjM3OjI3UE0gKzAy MDAsIFRha2FzaGkgSXdhaSB3cm90ZToKPiA+IE9uIFdlZCwgMjEgT2N0IDIwMTUgMjA6MTk6Mzgg KzAyMDAsCj4gPiBSdXNzZWxsIEtpbmcgLSBBUk0gTGludXggd3JvdGU6Cj4gPiA+IAo+ID4gPiBP biBXZWQsIE9jdCAyMSwgMjAxNSBhdCAwNzo1OTowNlBNICswMjAwLCBUYWthc2hpIEl3YWkgd3Jv dGU6Cj4gPiA+ID4gT24gV2VkLCAyMSBPY3QgMjAxNSAxOTozNDozNyArMDIwMCwKPiA+ID4gPiBS dXNzZWxsIEtpbmcgLSBBUk0gTGludXggd3JvdGU6Cj4gPiA+ID4gPiAKPiA+ID4gPiA+IE9uIFdl ZCwgT2N0IDIxLCAyMDE1IGF0IDA5OjQ5OjI4UE0gKzA1MzAsIFZpbm9kIEtvdWwgd3JvdGU6Cj4g PiA+ID4gPiA+IE9uIFdlZCwgT2N0IDIxLCAyMDE1IGF0IDAzOjM3OjQ3UE0gKzAxMDAsIFJ1c3Nl bGwgS2luZyAtIEFSTSBMaW51eCB3cm90ZToKPiA+ID4gPiA+ID4gPiBJbiBhbnkgY2FzZSwgdGhp cyBkb2Vzbid0IChhbmQgY2FuJ3QpIHNvbHZlIHRoZSBDRUMgcHJvYmxlbSwgc28gaXQncyBub3QK PiA+ID4gPiA+ID4gPiBhIHNvbHV0aW9uIHRvIHRoZSBwcm9ibGVtIGF0IGhhbmQuCj4gPiA+ID4g PiA+IAo+ID4gPiA+ID4gPiBTb3JyeSBhbSBub3Qgc3VyZSBJIGZvbGxvdyB0aGUgcmVhc29ucyBm b3IgdGhhdCwgd291bGRuJ3QgQ0VDIGJlIGFub3RoZXIKPiA+ID4gPiA+ID4gc2xhdmUgaW4gc3Vj aCBhbiBpbnRlcmZhY2U/IEkgdGhvdWdoIGNvbXBvbmVudCBmd2sgZGlkIGFsbG93IHVzIHRvIGhh dmUKPiA+ID4gPiA+ID4gbXVsdGlwbGUgc2xhdmVzLi4KPiA+ID4gPiA+IAo+ID4gPiA+ID4gTm90 IHdpdGggdGhlIHdheSB5b3UncmUgdXNpbmcgdGhlIGNvbXBvbmVudCBoZWxwZXIgaGVyZS4KPiA+ ID4gPiA+IAo+ID4gPiA+ID4gSSBndWVzcyB0aGF0IG5vdCBhbGwgbXkgbWVzc2FnZSBpcyBiZWlu ZyByZWFkLCBiZWNhdXNlIHBlb3BsZSBrZWVwCj4gPiA+ID4gPiByZXBseWluZyBoYWxmLXdheSBk b3duIG15IG1lc3NhZ2VzLi4uCj4gPiA+ID4gPiAKPiA+ID4gPiA+IFlvdSBjYW4gb25seSByZWdp c3RlciBhIHN0cnVjdCBkZXZpY2UgX29uY2VfIGFzIGEgc2xhdmUgZGV2aWNlLgo+ID4gPiA+ID4g Cj4gPiA+ID4gPiBXaXRoIHRoZSB3YXkgeW91J3JlIHVzaW5nIGl0IGhlcmUgZm9yIGF1ZGlvLCB5 b3UncmUgcmVnaXN0ZXJpbmcgdGhlCj4gPiA+ID4gPiBpOTE1IERSTSBkZXZpY2UgYXMgYSBzbGF2 ZSBjb21wb25lbnQgZGV2aWNlLCBhbmQgdGhlIGF1ZGlvIHNpZGUgYXMKPiA+ID4gPiA+IHRoZSBt YXN0ZXIuICBUaGF0IG1lYW5zIHRoZSBhdWRpbyBtYXN0ZXIgY2FuIGJpbmQgdG8gdGhlIERSTSBz bGF2ZQo+ID4gPiA+ID4gY29tcG9uZW50IGRldmljZS4KPiA+ID4gPiA+IAo+ID4gPiA+ID4gWW91 IGNhbid0IHRoZW4gaGF2ZSBhIENFQyBtYXN0ZXIgYmluZCB0byB0aGUgaTkxNSBEUk0gc2xhdmUg ZGV2aWNlCj4gPiA+ID4gPiAoaXQncyBhbHJlYWR5IGJvdW5kIHRvIHRoZSBhdWRpbyBtYXN0ZXIg ZGV2aWNlKSwgYW5kIHlvdSBjYW4ndAo+ID4gPiA+ID4gcmVnaXN0ZXIgdGhlIGk5MTUgRFJNIGRl dmljZSBhcyBhIHNlY29uZCBzbGF2ZSBjb21wb25lbnQgZGV2aWNlLgo+ID4gPiA+ID4gSXQgYmVj b21lcyBpbmRpc3Rpbmd1aXNoYWJsZSBmcm9tIHRoZSBmaXJzdCwgYW5kIHRoZXJlJ3Mgbm8gd2F5 Cj4gPiA+ID4gPiB0byB0ZWxsIHdoaWNoIG9mIHRoZSB0d28gZGlmZmVyZW50ICdvcHMnIHN0cnVj dHVyZXMgc2hvdWxkIGJlIHVzZWQKPiA+ID4gPiA+IHdpdGggd2hpY2ggbWFzdGVyLgo+ID4gPiA+ ID4gCj4gPiA+ID4gPiBJIHNhaWQgdGhpcyBpbiBteSBtZXNzYWdlIDIwMTUxMDIxMTQwMzA3LkdF MzI1MzJAbjIxMDAuYXJtLmxpbnV4Lm9yZy51awo+ID4gPiA+ID4gd2hpY2ggd2FzIHR3byBvZiBt eSByZXBsaWVzIGFnbyBpbiB0aGlzIHN1Yi10aHJlYWQuCj4gPiA+ID4gCj4gPiA+ID4gQ2FuJ3Qg dGhlIGxpbWl0YXRpb24gb2Ygc2luZ2xlIHNsYXZlIGRldiBiZSBleHRlbmRlZCBzaW1wbHk/ICBl LmcuIGFkZAo+ID4gPiA+IHNvbWUgbWF0Y2hpbmcgc2VtYW50aWNzIHRvIGNvbXBvbmVudF9tYXN0 ZXJfYWRkX2NoaWxkKCkgbGlrZSBhIHNoYXJlZAo+ID4gPiA+IGtleSBpbiBib3RoIG1hc3RlciBh bmQgc2xhdmUsIGFuZCBsZXQgYXNzaWduIG9ubHkgdGhlIG1hdGNoZWQgc2xhdmUuCj4gPiA+IAo+ ID4gPiBJJ3ZlIGFscmVhZHkgZXhwbGFpbmVkIHRoYXQgaW4gdGhlIGVtYWlsIG1lc3NhZ2UgSSBy ZWZlcnJlZCB0byBieQo+ID4gPiBtZXNzYWdlIElEIGFib3ZlICh3aGljaCB3YXMgYSByZXBseSB0 byBvbmUgb2YgeW91ciBwcmV2aW91cyBtZXNzYWdlcykKPiA+ID4gCj4gPiA+IFRoaXMgaXMgd2h5 IEkgZmluZCBlbWFpbCBzdWNoIGEgcG9vciBjb21tdW5pY2F0aW9uIG1lZGl1bSAtIEknbSBxdWl0 ZQo+ID4gPiBzdXJlIG1vc3QgcGVvcGxlIG9ubHkgcmVhZCBoYWxmIGFuIGVtYWlsIG1lc3NhZ2Ug YmVmb3JlIGhpdHRpbmcgcmVwbHksCj4gPiA+IGFuZCB0aGVuIHRoZXkgc3RpY2sgdGhlaXIgcmVw bHkgYWZ0ZXIgd2hlcmUgdGhleSBzdG9wcGVkIHJlYWRpbmcgYW5kCj4gPiA+IG5ldmVyIGJvdGhl ciByZWFkaW5nIHRoZSByZXN0IG9mIHRoZSBtZXNzYWdlLiAgTm9ybWFsbHksIGF0IHRoaXMgcG9p bnQsCj4gPiA+IEknbGwgc3RhcnQgZ2V0dGluZyBncnVtcHkgYW5kIHNlbmRpbmcgZnJ1c3RyYXRl ZCBlbWFpbHMuLi4gd2hpY2ggd291bGQKPiA+ID4gZXZlbnR1YWxseSBkZXJpZGUgaW50byBmbGFt ZXMsIGJ1dCBsZXQncyBfdHJ5XyB0byBrZWVwIHRoaXMgY2l2aWwuCj4gPiAKPiA+IFRoYW5rIHlv dSBmb3IgcGF0aWVuY2UhCj4gPiAKPiA+ID4gSGVyZSdzIHRoZSByZWxldmFudCBwYXJhZ3JhcGgg ZnJvbSB0aGUgYWJvdmUgcmVmZXJlbmNlZCBtZXNzYWdlLCBhbmQKPiA+ID4gdG8gbWFrZSB0aGUg YXBwcm9wcmlhdGUgYml0IHN0YW5kIG91dCwgSSd2ZSB1bmRlcmxpbmVkIGl0IHdpdGggXi4KPiA+ ID4gCj4gPiA+ID4gSG93ZXZlciwgdGhlcmUncyBhIGx1cmtpbmcgcHJvYmxlbTogeW91IGNhbid0 IHJlZ2lzdGVyIHRoZSBzYW1lIHN0cnVjdAo+ID4gPiA+IGRldmljZSBhcyBhIHNsYXZlIG1vcmUg dGhhbiBvbmNlIGludG8gdGhlIGNvbXBvbmVudCBoZWxwZXJzIC0gdGhhdCdzCj4gPiA+ID4gYmVj YXVzZSBpdCdzIGRlc2lnbmVkIHRvIGxvb2sgZm9yIGRldmljZXMuICBUaGVyZSdzIGludGVudGlv bmFsbHkgbm8KPiA+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIF5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgo+ID4gPiA+IGxpbmthZ2UgYmV0d2VlbiB0aGUg c2xhdmUgb3BzIGFuZCBtYXN0ZXIgb3BzIHRvIGFsbG93IGZvciBnZW5lcmljCj4gPiA+ICAgXl5e Xl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5e Xl5eXl4KPiA+ID4gPiBzbGF2ZSBkcml2ZXJzIChsaWtlIHRkYTk5OHgpIHRvIGJlIHVzZWQgd2l0 aCBkaWZmZXJlbnQgbWFzdGVyIGRyaXZlcnMKPiA+ID4gICBeXl5eXl5eXl5eXl5eXl5eXl5eXl5e Xl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KPiA+ID4gPiAo YXJtYWRhLCB0aWxjZGMsIGV0YykuICBJbiB0aGVvcnksIHlvdSBjYW4gcmVnaXN0ZXIgdGhlIG1h c3RlciBkZXZpY2UKPiA+ID4gICBeXl5eXl5eXl5eXl5eXl5eXl5eXl4KPiA+ID4gPiBvZiBvbmUg Y29tcG9uZW50aXNlZCBzeXN0ZW0gYXMgYSBzbGF2ZSBkZXZpY2Ugb2YgYW5vdGhlciwgYnV0IHRo YXQKPiA+ID4gPiByZXF1aXJlcyBhIG11Y2ggbW9yZSBjb21wbGljYXRlZCBsb2NraW5nIHNldHVw IGluIGNvbXBvbmVudC5jIChJIGhhdmUKPiA+ID4gPiBwYXRjaGVzIGZvciB0aGF0LCBidXQgSSd2 ZSByZXNpc3RlZCBzZW5kaW5nIHRoZW0gYmVjYXVzZSBpdCBtYWtlcyB0aGUKPiA+ID4gPiBsb2Nr aW5nIHZlcnkgbWVzc3kuKQo+ID4gPiAKPiA+ID4gSW4gYSBzdWJzZXF1ZW50IHNlbnRlbmNlLCBJ IGFsc28gYWRkcmVzcyB0aGUgaXNzdWUgdGhhdCB3b3VsZCBvY2N1cgo+ID4gPiBpZiBhbnkgb2Yg dGhlIGFscmVhZHkgY29tcG9uZW50aXNlZCBEUk0gZHJpdmVycyB3ZXJlIHRvIGF0dGVtcHQgd2hh dAo+ID4gPiB5b3UncmUgZG9pbmcgaW4gaTkxNSAtIGFsdGhvdWdoIEkgc2F5IGl0J3Mgc29sdmFi bGUsIEkndmUgcmVzaXN0ZWQKPiA+ID4gdGhhdCBiZWNhdXNlIGl0IG1ha2VzIHRoZSBsb2NraW5n IGluIHRoZXJlIF9tdWNoXyBtb3JlIGhhaXJ5LCBhbmQgSSdtCj4gPiA+IG5vdyBub3QgY2VydGFp biB0aGF0IG15IG1vcmUgY29tcGxleCBsb2NraW5nIGltcGxlbWVudGF0aW9uIHdvdWxkCj4gPiA+ IGV2ZW4gY29wZSB3aXRoIHRoYXQgc2NlbmFyaW8uCj4gPiAKPiA+IEkgdW5kZXJzdG9vZCB0aGF0 IHRoZSBvcmlnaW5hbCBjb21wb25lbnQgZGVzaWduIHdhc24ndCBmb3IgY3Jvc3MKPiA+IHN1YnN5 c3RlbXMuICBPVE9IIEkgd29uZGVyZWQgd2h5IGl0IGNhbid0IGJlIGV4dGVuZGVkIGZvciB3aWRl ciB1c2UgLS0KPiA+IHRoYXQgd2FzIHRoZSBzaW1wbGUgcXVlc3Rpb247IEkgaGF2ZW4ndCBzZWVu IHNvIGNvbXBsZXggbG9ja2luZyBpbgo+ID4gc29tZSB1cHN0cmVhbSBkcm0gZHJpdmVycyBjb2Rl IHRocm91Z2ggYSBxdWljayBnbGFuY2UsIHNvIHRoZSBtZXNzCj4gPiBhYm91dCBsb2NraW5nIHlv dSBtZW50aW9uZWQgd2Fzbid0IGNsZWFyIHRvIG1lLiAgTm93IHBvaW50IHRha2VuLgo+IAo+IFlv dSBjYW4gZmluZCBteSBwYXRjaCBmb3IgdGhlICJtb3JlIGNvbXBsZXggbG9ja2luZyIgcHJvYmxl bSBhdCB0aGUKPiBlbmQgb2YgdGhpcyBtYWlsLiAgVGhpcyBtYXkgbm90IGFwcGx5IHRvIHRoZSBj dXJyZW50IHZlcnNpb24gb2YKPiBjb21wb25lbnQuYywgYnV0IGlsbHVzdHJhdGVzIGF0IGxlYXN0 IHNvbWUgb2YgdGhlIHByb2JsZW0gb2YgZ2V0dGluZwo+IHJpZCBvZiB0aGUgZ2xvYmFsIGNvbXBv bmVudF9tdXRleCBsb2NrLCB3aGljaCB3b3VsZCBiZSBuZWNlc3NhcnkgdG8KPiBhbGxvdyBhIGJp bmRpbmcgbWFzdGVyIHRvIGNhbGwgYmFjayBpbnRvIHRoZSBjb21wb25lbnQgaGVscGVyIHRvCj4g dGhlbiByZWdpc3RlciBhIHNsYXZlLiAgVG9kYXksIHRoYXQgYWN0aW9uIHdvdWxkIGRlYWRsb2Nr IG9uCj4gY29tcG9uZW50X211dGV4Lgo+IAo+IEknbSBub3QgYWN0dWFsbHkgY29udmluY2VkIHRo YXQgZXZlbiB0aGlzIHBhdGNoIGlzIGNvcnJlY3QgYXMgaXQKPiBzdGFuZHMuLi4KPiAKPiA+IFRv IGJlIG5vdGVkLCBhIHdlYWsgZGVwZW5kZW5jeSBpcyBzdGlsbCBuZWNlc3NhcnkgZm9yIGk5MTUg YXVkaW8gY2FzZSwKPiA+IGFuZCBhIHNpbXBsZSBub3RpZmllciB0eXBlIHJlZ2lzdHJhdGlvbiB3 b24ndCB3b3JrLCB1bmZvcnR1bmF0ZWx5Lgo+ID4gR1BVIHBvd2VyIGFkanVzdG1lbnQgaXMgbWFu ZGF0b3J5IGV2ZW4gYXQgcHJvYmluZyB0aGUgYXVkaW8gaGFyZHdhcmUKPiA+IHRvIGp1ZGdlIHdo ZXRoZXIgSERNSSBjb2RlYyBpcyBwcmVzZW50IG9yIG5vdC4gIE1lYW53aGlsZSB0aGUKPiA+IGRl cGVuZGVuY3kgdG8gdGhlIGdyYXBoaWNzIG11c3Qgbm90IGJlIHRpZ2h0LCBlaXRoZXIuICBUaGUg dmVyeSBzYW1lCj4gPiBhdWRpbyBkcml2ZXIgaXMgZm9yIGEgY29udHJvbGxlciB3aXRob3V0IGdy YXBoaWNzLCB0b28uICBUaGF0J3MgdGhlCj4gPiByZWFzb24gd2UgdG9vayB0aGUgY29tcG9uZW50 IGFzIGFuIGFsdGVybmF0aXZlIGltcGxlbWVudGF0aW9uLCB3aGljaAo+ID4gaXMgYSBiaXQgY2xl YW5lciB0aGFuIHRoZSBkaXJlY3Qgc3ltYm9sIHJlc29sdmluZyBpbiB0aGUgZWFybGllcgo+ID4g Y29kZS4KPiA+IAo+ID4gU28sIGlmIGFueSBiZXR0ZXIgc29sdXRpb24gdGhhdCBjb3ZlcnMgYSB1 c2UgY2FzZSBsaWtlIGk5MTUvaGRhIGlzCj4gPiBwcmVzZW50LCB3ZSdyZSB3aWxsaW5nIHRvIHN3 aXRjaC4gIEFzIHJlcGVhdGVkbHkgd3JpdHRlbiwgdGhlIGN1cnJlbnQKPiA+IGltcGxlbWVudGF0 aW9uIGlzIGEgc3RvcCBnYXAuICBBbHRob3VnaCB0aGlzIGRvZXNuJ3QgbG9vayB0b28gYmFkLAo+ ID4gdGhlcmUgYXJlIHN0aWxsIHNvbWUgb2J2aW91cyBwaXRmYWxscyBhcyB5b3UgcG9pbnRlZCBv dXQuICBXZSBjYW4KPiA+IHBhcGVyIG92ZXIgdGhlbSAobWF5YmUgSSdsbCBkbyBmb3IgNC40KSwg YnV0IGEgZnVuZGFtZW50YWxseSBiZXR0ZXIKPiA+IHNvbHV0aW9uIHdvdWxkIGJlIG1vcmUgd2Vs Y29tZSwgb2YgY291cnNlLgo+IAo+IFdlbGwsIEkgZ3Vlc3MgaXQncyBmaW5lIGFzIGEgdGVtcG9y YXJ5IHN0b3AtZ2FwLCBidXQgd2hhdCBJIGRvbid0IHdhbnQKPiB0byBzZWUgaXMgdGhpcyBzdG9w LWdhcCBiZWNvbWluZyBtb3JlIGNvbW1vbi4gIEl0IG1heSB3b3JrIGZvciB5b3VyCj4gaTkxNSBj YXNlLCBidXQgaXQgd29uJ3Qgd29yayBldmVyeXdoZXJlLCBzbyBpdCBjYW4ndCBiZWNvbWUgYSBn ZW5lcmljCj4gc29sdXRpb24gdG8gdGhpcyBwcm9ibGVtLgoKTXkgZ3V0IGZlZWxpbmcgaXMgdGhh dCBjb21wb25lbnQgaXNuJ3QgdGhlIHJpZ2h0IGZyYW1ld29yayBmb3Igc29tZXRoaW5nCmdlbmVy aWMuIEl0J3MgcmVhbGx5IGdvb2QgdG8gYnVpbGQgc29tZXRoaW5nIHZlcnkgc3BlY2lmaWMgKGFu ZCBpOTE1LmtvCmJpbmRpbmcgdG8gdGhlIGk5MTUtc3BlY2lmaWMgc2lkZSBvZiBzbmQtaGRhIGlz IHN1Y2ggYSBjYXNlIEkgdGhpbmspLiBCdXQKZm9yIGEgZ2VuZXJpYyBhdWRpby1vdmVyLWhkbWkg ZnJhbWV3b3JrIEkgdGhpbmsgd2UgbmVlZCB0byBoYXZlIHByb3BlcgphYnN0cmFjdGlvbiBhdCB0 aGF0IGxldmVsLCB3aXRoIGEgc2V0IG9mICJnaXZlIG1lIHRoZSBoZG1pIGVuZHBvaW50IEkKd2Fu dCIgZnVuY3Rpb25zIGZvciB0aGUgYXVkaW8gc2lkZSwgYW5kIGNvcnJlc3BvbmRpbmcgcmVnaXN0 ZXIgZnVuY3Rpb25zCmZvciB0aGUgZ2Z4IHNpZGUuIFNpbWlsYXIgdG8gaG93IHlvdSBnZXQgeW91 ciBncGlvcywgcmVndWxhdG9ycyBhbmQKd2hhdGV2ZXIgZWxzZS4KLURhbmllbAoKCj4gCj4gCj4g IGRyaXZlcnMvYmFzZS9jb21wb25lbnQuYyB8IDE0MiArKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKy0tLS0tLS0tLQo+ICAxIGZpbGUgY2hhbmdlZCwgMTE2IGluc2VydGlvbnMo KyksIDI2IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2Jhc2UvY29tcG9u ZW50LmMgYi9kcml2ZXJzL2Jhc2UvY29tcG9uZW50LmMKPiBpbmRleCBmNzQ4NDMwYmI2NTQuLmQ3 MmZlOWJjNzAzMyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2Jhc2UvY29tcG9uZW50LmMKPiArKysg Yi9kcml2ZXJzL2Jhc2UvY29tcG9uZW50LmMKPiBAQCAtMzAsNyArMzAsMTAgQEAgc3RydWN0IGNv bXBvbmVudF9tYXRjaCB7Cj4gIHN0cnVjdCBtYXN0ZXIgewo+ICAJc3RydWN0IGxpc3RfaGVhZCBu b2RlOwo+ICAJc3RydWN0IGxpc3RfaGVhZCBjb21wb25lbnRzOwo+ICsJc3RydWN0IGtyZWYga3Jl ZjsKPiArCXN0cnVjdCBtdXRleCBtdXRleDsKPiAgCWJvb2wgYm91bmQ7Cj4gKwlib29sIGRlYWQ7 Cj4gIAo+ICAJY29uc3Qgc3RydWN0IGNvbXBvbmVudF9tYXN0ZXJfb3BzICpvcHM7Cj4gIAlzdHJ1 Y3QgZGV2aWNlICpkZXY7Cj4gQEAgLTQ5LDggKzUyLDMzIEBAIHN0cnVjdCBjb21wb25lbnQgewo+ ICAKPiAgc3RhdGljIERFRklORV9NVVRFWChjb21wb25lbnRfbXV0ZXgpOwo+ICBzdGF0aWMgTElT VF9IRUFEKGNvbXBvbmVudF9saXN0KTsKPiArc3RhdGljIERFRklORV9NVVRFWChtYXN0ZXJfbXV0 ZXgpOwo+ICBzdGF0aWMgTElTVF9IRUFEKG1hc3RlcnMpOwo+ICAKPiArc3RhdGljIHZvaWQgbWFz dGVyX3JlbGVhc2Uoc3RydWN0IGtyZWYgKmtyZWYpIF9fcmVsZWFzZXMobWFzdGVyX211dGV4KQo+ ICt7Cj4gKwlzdHJ1Y3QgbWFzdGVyICptYXN0ZXIgPSBjb250YWluZXJfb2Yoa3JlZiwgc3RydWN0 IG1hc3Rlciwga3JlZik7Cj4gKwo+ICsJbGlzdF9kZWwoJm1hc3Rlci0+bm9kZSk7Cj4gKwltdXRl eF91bmxvY2soJm1hc3Rlcl9tdXRleCk7Cj4gKwlXQVJOX09OKCFsaXN0X2VtcHR5KCZtYXN0ZXIt PmNvbXBvbmVudHMpKTsKPiArCWtmcmVlKG1hc3Rlcik7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lk IG1hc3Rlcl9yZWxlYXNlX25vbG9jayhzdHJ1Y3Qga3JlZiAqa3JlZikKPiArewo+ICsJc3RydWN0 IG1hc3RlciAqbWFzdGVyID0gY29udGFpbmVyX29mKGtyZWYsIHN0cnVjdCBtYXN0ZXIsIGtyZWYp Owo+ICsKPiArCWxpc3RfZGVsKCZtYXN0ZXItPm5vZGUpOwo+ICsJV0FSTl9PTighbGlzdF9lbXB0 eSgmbWFzdGVyLT5jb21wb25lbnRzKSk7Cj4gKwlrZnJlZShtYXN0ZXIpOwo+ICt9Cj4gKwo+ICtz dGF0aWMgdm9pZCBtYXN0ZXJfbm9yZWxlYXNlKHN0cnVjdCBrcmVmICprcmVmKQo+ICt7Cj4gKwlX QVJOX09OKGtyZWYpOwo+ICt9Cj4gKwo+ICBzdGF0aWMgc3RydWN0IG1hc3RlciAqX19tYXN0ZXJf ZmluZChzdHJ1Y3QgZGV2aWNlICpkZXYsCj4gIAljb25zdCBzdHJ1Y3QgY29tcG9uZW50X21hc3Rl cl9vcHMgKm9wcykKPiAgewo+IEBAIC02Myw5ICs5MSwzMCBAQCBzdGF0aWMgc3RydWN0IG1hc3Rl ciAqX19tYXN0ZXJfZmluZChzdHJ1Y3QgZGV2aWNlICpkZXYsCj4gIAlyZXR1cm4gTlVMTDsKPiAg fQo+ICAKPiArLyoKPiArICogRmluZCB0aGUgbWFzdGVyIHN0cnVjdHVyZSBmb3IgdGhpcyBkZXZp Y2UsIGFuZCBtYWtlIHN1cmUgdGhhdCB0aGUKPiArICogcGVyLW1hc3RlciBsb2NrIGlzIGhlbGQu ICBUaGlzIGlzIHVzZWQgZnJvbSB3aXRoaW4gdGhlIG1hc3RlciBkZXZpY2UKPiArICogZHJpdmVy cyBiaW5kIGFuZCB1bmJpbmQgY2FsbGJhY2tzLCB3aGljaCBzaG91bGQgb25seSBiZSBjYWxsZWQg ZnJvbQo+ICsgKiBwYXRocyB3aGVyZSB0aGUgcGVyLW1hc3RlciBsb2NrIGlzIGFscmVhZHkgaGVs ZC4KPiArICovCj4gK3N0YXRpYyBzdHJ1Y3QgbWFzdGVyICptYXN0ZXJfZmluZF9sb2NrZWQoc3Ry dWN0IGRldmljZSAqZGV2LAo+ICsJY29uc3Qgc3RydWN0IGNvbXBvbmVudF9tYXN0ZXJfb3BzICpv cHMpCj4gK3sKPiArCXN0cnVjdCBtYXN0ZXIgKm1hc3RlcjsKPiArCj4gKwltdXRleF9sb2NrKCZt YXN0ZXJfbXV0ZXgpOwo+ICsJbWFzdGVyID0gX19tYXN0ZXJfZmluZChkZXYsIE5VTEwpOwo+ICsJ V0FSTl9PTihtYXN0ZXIgJiYgIW11dGV4X2lzX2xvY2tlZCgmbWFzdGVyLT5tdXRleCkpOwo+ICsJ bXV0ZXhfdW5sb2NrKCZtYXN0ZXJfbXV0ZXgpOwo+ICsKPiArCXJldHVybiBtYXN0ZXI7Cj4gK30K PiArCj4gIC8qIEF0dGFjaCBhbiB1bmF0dGFjaGVkIGNvbXBvbmVudCB0byBhIG1hc3Rlci4gKi8K PiAgc3RhdGljIHZvaWQgY29tcG9uZW50X2F0dGFjaF9tYXN0ZXIoc3RydWN0IG1hc3RlciAqbWFz dGVyLCBzdHJ1Y3QgY29tcG9uZW50ICpjKQo+ICB7Cj4gKwlrcmVmX2dldCgmbWFzdGVyLT5rcmVm KTsKPiArCj4gIAljLT5tYXN0ZXIgPSBtYXN0ZXI7Cj4gIAo+ICAJbGlzdF9hZGRfdGFpbCgmYy0+ bWFzdGVyX25vZGUsICZtYXN0ZXItPmNvbXBvbmVudHMpOwo+IEBAIC03Nyw2ICsxMjYsOSBAQCBz dGF0aWMgdm9pZCBjb21wb25lbnRfZGV0YWNoX21hc3RlcihzdHJ1Y3QgbWFzdGVyICptYXN0ZXIs IHN0cnVjdCBjb21wb25lbnQgKmMpCj4gIAlsaXN0X2RlbCgmYy0+bWFzdGVyX25vZGUpOwo+ICAK PiAgCWMtPm1hc3RlciA9IE5VTEw7Cj4gKwo+ICsJLyogVGhpcyBrcmVmX3B1dCBzaG91bGQgbmV2 ZXIgcmVsZWFzZSB0aGUgbWFzdGVyICovCj4gKwlrcmVmX3B1dCgmbWFzdGVyLT5rcmVmLCBtYXN0 ZXJfbm9yZWxlYXNlKTsKPiAgfQo+ICAKPiAgLyoKPiBAQCAtOTAsNiArMTQyLDcgQEAgaW50IGNv bXBvbmVudF9tYXN0ZXJfYWRkX2NoaWxkKHN0cnVjdCBtYXN0ZXIgKm1hc3RlciwKPiAgCXN0cnVj dCBjb21wb25lbnQgKmM7Cj4gIAlpbnQgcmV0ID0gLUVOWElPOwo+ICAKPiArCW11dGV4X2xvY2so JmNvbXBvbmVudF9tdXRleCk7Cj4gIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KGMsICZjb21wb25lbnRf bGlzdCwgbm9kZSkgewo+ICAJCWlmIChjLT5tYXN0ZXIgJiYgYy0+bWFzdGVyICE9IG1hc3RlcikK PiAgCQkJY29udGludWU7Cj4gQEAgLTEwMSw2ICsxNTQsNyBAQCBpbnQgY29tcG9uZW50X21hc3Rl cl9hZGRfY2hpbGQoc3RydWN0IG1hc3RlciAqbWFzdGVyLAo+ICAJCQlicmVhazsKPiAgCQl9Cj4g IAl9Cj4gKwltdXRleF91bmxvY2soJmNvbXBvbmVudF9tdXRleCk7Cj4gIAo+ICAJcmV0dXJuIHJl dDsKPiAgfQo+IEBAIC0xMzcsNiArMTkxLDcgQEAgc3RhdGljIGludCBmaW5kX2NvbXBvbmVudHMo c3RydWN0IG1hc3RlciAqbWFzdGVyKQo+ICAvKiBEZXRhY2ggYWxsIGF0dGFjaGVkIGNvbXBvbmVu dHMgZnJvbSB0aGlzIG1hc3RlciAqLwo+ICBzdGF0aWMgdm9pZCBtYXN0ZXJfcmVtb3ZlX2NvbXBv bmVudHMoc3RydWN0IG1hc3RlciAqbWFzdGVyKQo+ICB7Cj4gKwltdXRleF9sb2NrKCZjb21wb25l bnRfbXV0ZXgpOwo+ICAJd2hpbGUgKCFsaXN0X2VtcHR5KCZtYXN0ZXItPmNvbXBvbmVudHMpKSB7 Cj4gIAkJc3RydWN0IGNvbXBvbmVudCAqYyA9IGxpc3RfZmlyc3RfZW50cnkoJm1hc3Rlci0+Y29t cG9uZW50cywKPiAgCQkJCQlzdHJ1Y3QgY29tcG9uZW50LCBtYXN0ZXJfbm9kZSk7Cj4gQEAgLTE0 NSw2ICsyMDAsNyBAQCBzdGF0aWMgdm9pZCBtYXN0ZXJfcmVtb3ZlX2NvbXBvbmVudHMoc3RydWN0 IG1hc3RlciAqbWFzdGVyKQo+ICAKPiAgCQljb21wb25lbnRfZGV0YWNoX21hc3RlcihtYXN0ZXIs IGMpOwo+ICAJfQo+ICsJbXV0ZXhfdW5sb2NrKCZjb21wb25lbnRfbXV0ZXgpOwo+ICB9Cj4gIAo+ ICAvKgo+IEBAIC0yMDEsMjAgKzI1Nyw0MyBAQCBzdGF0aWMgaW50IHRyeV90b19icmluZ191cF9t YXN0ZXIoc3RydWN0IG1hc3RlciAqbWFzdGVyLAo+ICAKPiAgc3RhdGljIGludCB0cnlfdG9fYnJp bmdfdXBfbWFzdGVycyhzdHJ1Y3QgY29tcG9uZW50ICpjb21wb25lbnQpCj4gIHsKPiAtCXN0cnVj dCBtYXN0ZXIgKm07Cj4gKwlzdHJ1Y3QgbWFzdGVyICptLCAqbGFzdCA9IE5VTEw7Cj4gIAlpbnQg cmV0ID0gMDsKPiAgCj4gKwltdXRleF9sb2NrKCZtYXN0ZXJfbXV0ZXgpOwo+ICAJbGlzdF9mb3Jf ZWFjaF9lbnRyeShtLCAmbWFzdGVycywgbm9kZSkgewo+ICsJCWlmIChsYXN0KSB7Cj4gKwkJCWty ZWZfcHV0KCZsYXN0LT5rcmVmLCBtYXN0ZXJfcmVsZWFzZV9ub2xvY2spOwo+ICsJCQlsYXN0ID0g TlVMTDsKPiArCQl9Cj4gKwo+ICsJCWlmIChtLT5kZWFkIHx8IG0tPmJvdW5kKQo+ICsJCQljb250 aW51ZTsKPiArCj4gKwkJa3JlZl9nZXQoJm0tPmtyZWYpOwo+ICsJCW11dGV4X3VubG9jaygmbWFz dGVyX211dGV4KTsKPiArCj4gKwkJbXV0ZXhfbG9jaygmbS0+bXV0ZXgpOwo+ICAJCXJldCA9IHRy eV90b19icmluZ191cF9tYXN0ZXIobSwgY29tcG9uZW50KTsKPiArCQltdXRleF91bmxvY2soJm0t Pm11dGV4KTsKPiArCj4gKwkJbXV0ZXhfbG9jaygmbWFzdGVyX211dGV4KTsKPiArCQlsYXN0ID0g bTsKPiArCj4gIAkJaWYgKHJldCAhPSAwKQo+ICAJCQlicmVhazsKPiAgCX0KPiAgCj4gKwlpZiAo bGFzdCkKPiArCQlrcmVmX3B1dCgmbGFzdC0+a3JlZiwgbWFzdGVyX3JlbGVhc2Vfbm9sb2NrKTsK PiArCW11dGV4X3VubG9jaygmbWFzdGVyX211dGV4KTsKPiArCj4gIAlyZXR1cm4gcmV0Owo+ICB9 Cj4gIAo+ICBzdGF0aWMgdm9pZCB0YWtlX2Rvd25fbWFzdGVyKHN0cnVjdCBtYXN0ZXIgKm1hc3Rl cikKPiAgewo+ICsJbXV0ZXhfbG9jaygmbWFzdGVyLT5tdXRleCk7Cj4gIAlpZiAobWFzdGVyLT5i b3VuZCkgewo+ICAJCW1hc3Rlci0+b3BzLT51bmJpbmQobWFzdGVyLT5kZXYpOwo+ICAJCWRldnJl c19yZWxlYXNlX2dyb3VwKG1hc3Rlci0+ZGV2LCBOVUxMKTsKPiBAQCAtMjIyLDYgKzMwMSw3IEBA IHN0YXRpYyB2b2lkIHRha2VfZG93bl9tYXN0ZXIoc3RydWN0IG1hc3RlciAqbWFzdGVyKQo+ICAJ fQo+ICAKPiAgCW1hc3Rlcl9yZW1vdmVfY29tcG9uZW50cyhtYXN0ZXIpOwo+ICsJbXV0ZXhfdW5s b2NrKCZtYXN0ZXItPm11dGV4KTsKPiAgfQo+ICAKPiAgc3RhdGljIHNpemVfdCBjb21wb25lbnRf bWF0Y2hfc2l6ZShzaXplX3QgbnVtKQo+IEBAIC0zMDcsMjAgKzM4NywyNSBAQCBpbnQgY29tcG9u ZW50X21hc3Rlcl9hZGRfd2l0aF9tYXRjaChzdHJ1Y3QgZGV2aWNlICpkZXYsCj4gIAltYXN0ZXIt PmRldiA9IGRldjsKPiAgCW1hc3Rlci0+b3BzID0gb3BzOwo+ICAJbWFzdGVyLT5tYXRjaCA9IG1h dGNoOwo+ICsJbXV0ZXhfaW5pdCgmbWFzdGVyLT5tdXRleCk7Cj4gIAlJTklUX0xJU1RfSEVBRCgm bWFzdGVyLT5jb21wb25lbnRzKTsKPiArCWtyZWZfaW5pdCgmbWFzdGVyLT5rcmVmKTsKPiAgCj4g LQkvKiBBZGQgdG8gdGhlIGxpc3Qgb2YgYXZhaWxhYmxlIG1hc3RlcnMuICovCj4gLQltdXRleF9s b2NrKCZjb21wb25lbnRfbXV0ZXgpOwo+ICsJLyoKPiArCSAqIEFkZCB0byB0aGUgbGlzdCBvZiBh dmFpbGFibGUgbWFzdGVycy4gIFRoaXMgaXMgc28KPiArCSAqIHRoZSBjb21wb25lbnQgY29kZSBi ZWxvdyBjYW4gZmluZCB0aGlzIG1hc3Rlci4KPiArCSAqLwo+ICsJbXV0ZXhfbG9jaygmbWFzdGVy X211dGV4KTsKPiAgCWxpc3RfYWRkKCZtYXN0ZXItPm5vZGUsICZtYXN0ZXJzKTsKPiArCW11dGV4 X3VubG9jaygmbWFzdGVyX211dGV4KTsKPiAgCj4gKwltdXRleF9sb2NrKCZtYXN0ZXItPm11dGV4 KTsKPiAgCXJldCA9IHRyeV90b19icmluZ191cF9tYXN0ZXIobWFzdGVyLCBOVUxMKTsKPiArCW11 dGV4X3VubG9jaygmbWFzdGVyLT5tdXRleCk7Cj4gIAo+IC0JaWYgKHJldCA8IDApIHsKPiAtCQkv KiBEZWxldGUgb2ZmIHRoZSBsaXN0IGlmIHdlIHdlcmVuJ3Qgc3VjY2Vzc2Z1bCAqLwo+IC0JCWxp c3RfZGVsKCZtYXN0ZXItPm5vZGUpOwo+IC0JCWtmcmVlKG1hc3Rlcik7Cj4gLQl9Cj4gLQltdXRl eF91bmxvY2soJmNvbXBvbmVudF9tdXRleCk7Cj4gKwkvKiBEZWxldGUgb2ZmIHRoZSBsaXN0IGlm IHdlIHdlcmVuJ3Qgc3VjY2Vzc2Z1bCAqLwo+ICsJaWYgKHJldCA8IDApCj4gKwkJa3JlZl9wdXRf bXV0ZXgoJm1hc3Rlci0+a3JlZiwgbWFzdGVyX3JlbGVhc2UsICZtYXN0ZXJfbXV0ZXgpOwo+ICAK PiAgCXJldHVybiByZXQgPCAwID8gcmV0IDogMDsKPiAgfQo+IEBAIC0zMzgsMTUgKzQyMywxNyBA QCB2b2lkIGNvbXBvbmVudF9tYXN0ZXJfZGVsKHN0cnVjdCBkZXZpY2UgKmRldiwKPiAgewo+ICAJ c3RydWN0IG1hc3RlciAqbWFzdGVyOwo+ICAKPiAtCW11dGV4X2xvY2soJmNvbXBvbmVudF9tdXRl eCk7Cj4gKwltdXRleF9sb2NrKCZtYXN0ZXJfbXV0ZXgpOwo+ICAJbWFzdGVyID0gX19tYXN0ZXJf ZmluZChkZXYsIG9wcyk7Cj4gKwlpZiAobWFzdGVyKQo+ICsJCW1hc3Rlci0+ZGVhZCA9IHRydWU7 Cj4gKwltdXRleF91bmxvY2soJm1hc3Rlcl9tdXRleCk7Cj4gKwo+ICAJaWYgKG1hc3Rlcikgewo+ ICAJCXRha2VfZG93bl9tYXN0ZXIobWFzdGVyKTsKPiAgCj4gLQkJbGlzdF9kZWwoJm1hc3Rlci0+ bm9kZSk7Cj4gLQkJa2ZyZWUobWFzdGVyKTsKPiArCQlrcmVmX3B1dF9tdXRleCgmbWFzdGVyLT5r cmVmLCBtYXN0ZXJfcmVsZWFzZSwgJm1hc3Rlcl9tdXRleCk7Cj4gIAl9Cj4gLQltdXRleF91bmxv Y2soJmNvbXBvbmVudF9tdXRleCk7Cj4gIH0KPiAgRVhQT1JUX1NZTUJPTF9HUEwoY29tcG9uZW50 X21hc3Rlcl9kZWwpOwo+ICAKPiBAQCAtMzY0LDEyICs0NTEsOSBAQCBzdGF0aWMgdm9pZCBjb21w b25lbnRfdW5iaW5kKHN0cnVjdCBjb21wb25lbnQgKmNvbXBvbmVudCwKPiAgCj4gIHZvaWQgY29t cG9uZW50X3VuYmluZF9hbGwoc3RydWN0IGRldmljZSAqbWFzdGVyX2Rldiwgdm9pZCAqZGF0YSkK PiAgewo+IC0Jc3RydWN0IG1hc3RlciAqbWFzdGVyOwo+ICsJc3RydWN0IG1hc3RlciAqbWFzdGVy ID0gbWFzdGVyX2ZpbmRfbG9ja2VkKG1hc3Rlcl9kZXYsIE5VTEwpOwo+ICAJc3RydWN0IGNvbXBv bmVudCAqYzsKPiAgCj4gLQlXQVJOX09OKCFtdXRleF9pc19sb2NrZWQoJmNvbXBvbmVudF9tdXRl eCkpOwo+IC0KPiAtCW1hc3RlciA9IF9fbWFzdGVyX2ZpbmQobWFzdGVyX2RldiwgTlVMTCk7Cj4g IAlpZiAoIW1hc3RlcikKPiAgCQlyZXR1cm47Cj4gIAo+IEBAIC00MzIsMTMgKzUxNiwxMCBAQCBz dGF0aWMgaW50IGNvbXBvbmVudF9iaW5kKHN0cnVjdCBjb21wb25lbnQgKmNvbXBvbmVudCwgc3Ry dWN0IG1hc3RlciAqbWFzdGVyLAo+ICAKPiAgaW50IGNvbXBvbmVudF9iaW5kX2FsbChzdHJ1Y3Qg ZGV2aWNlICptYXN0ZXJfZGV2LCB2b2lkICpkYXRhKQo+ICB7Cj4gLQlzdHJ1Y3QgbWFzdGVyICpt YXN0ZXI7Cj4gKwlzdHJ1Y3QgbWFzdGVyICptYXN0ZXIgPSBtYXN0ZXJfZmluZF9sb2NrZWQobWFz dGVyX2RldiwgTlVMTCk7Cj4gIAlzdHJ1Y3QgY29tcG9uZW50ICpjOwo+ICAJaW50IHJldCA9IDA7 Cj4gIAo+IC0JV0FSTl9PTighbXV0ZXhfaXNfbG9ja2VkKCZjb21wb25lbnRfbXV0ZXgpKTsKPiAt Cj4gLQltYXN0ZXIgPSBfX21hc3Rlcl9maW5kKG1hc3Rlcl9kZXYsIE5VTEwpOwo+ICAJaWYgKCFt YXN0ZXIpCj4gIAkJcmV0dXJuIC1FSU5WQUw7Cj4gIAo+IEBAIC00NzQsMTQgKzU1NSwxNiBAQCBp bnQgY29tcG9uZW50X2FkZChzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IHN0cnVjdCBjb21wb25l bnRfb3BzICpvcHMpCj4gIAo+ICAJbXV0ZXhfbG9jaygmY29tcG9uZW50X211dGV4KTsKPiAgCWxp c3RfYWRkX3RhaWwoJmNvbXBvbmVudC0+bm9kZSwgJmNvbXBvbmVudF9saXN0KTsKPiArCW11dGV4 X3VubG9jaygmY29tcG9uZW50X211dGV4KTsKPiAgCj4gIAlyZXQgPSB0cnlfdG9fYnJpbmdfdXBf bWFzdGVycyhjb21wb25lbnQpOwo+ICAJaWYgKHJldCA8IDApIHsKPiArCQltdXRleF9sb2NrKCZj b21wb25lbnRfbXV0ZXgpOwo+ICAJCWxpc3RfZGVsKCZjb21wb25lbnQtPm5vZGUpOwo+ICsJCW11 dGV4X3VubG9jaygmY29tcG9uZW50X211dGV4KTsKPiAgCj4gIAkJa2ZyZWUoY29tcG9uZW50KTsK PiAgCX0KPiAtCW11dGV4X3VubG9jaygmY29tcG9uZW50X211dGV4KTsKPiAgCj4gIAlyZXR1cm4g cmV0IDwgMCA/IHJldCA6IDA7Cj4gIH0KPiBAQCAtNDkwLDIxICs1NzMsMjggQEAgRVhQT1JUX1NZ TUJPTF9HUEwoY29tcG9uZW50X2FkZCk7Cj4gIHZvaWQgY29tcG9uZW50X2RlbChzdHJ1Y3QgZGV2 aWNlICpkZXYsIGNvbnN0IHN0cnVjdCBjb21wb25lbnRfb3BzICpvcHMpCj4gIHsKPiAgCXN0cnVj dCBjb21wb25lbnQgKmMsICpjb21wb25lbnQgPSBOVUxMOwo+ICsJc3RydWN0IG1hc3RlciAqbWFz dGVyID0gTlVMTDsKPiAgCj4gIAltdXRleF9sb2NrKCZjb21wb25lbnRfbXV0ZXgpOwo+ICAJbGlz dF9mb3JfZWFjaF9lbnRyeShjLCAmY29tcG9uZW50X2xpc3QsIG5vZGUpCj4gIAkJaWYgKGMtPmRl diA9PSBkZXYgJiYgYy0+b3BzID09IG9wcykgewo+ICsJCQltYXN0ZXIgPSBjLT5tYXN0ZXI7Cj4g KwkJCWlmIChtYXN0ZXIpCj4gKwkJCQlrcmVmX2dldCgmbWFzdGVyLT5rcmVmKTsKPiAgCQkJbGlz dF9kZWwoJmMtPm5vZGUpOwo+ICAJCQljb21wb25lbnQgPSBjOwo+ICAJCQlicmVhazsKPiAgCQl9 Cj4gKwltdXRleF91bmxvY2soJmNvbXBvbmVudF9tdXRleCk7Cj4gIAo+IC0JaWYgKGNvbXBvbmVu dCAmJiBjb21wb25lbnQtPm1hc3RlcikKPiAtCQl0YWtlX2Rvd25fbWFzdGVyKGNvbXBvbmVudC0+ bWFzdGVyKTsKPiArCWlmIChXQVJOX09OKCFjb21wb25lbnQpKQo+ICsJCXJldHVybjsKPiAgCj4g LQltdXRleF91bmxvY2soJmNvbXBvbmVudF9tdXRleCk7Cj4gKwlpZiAobWFzdGVyKSB7Cj4gKwkJ dGFrZV9kb3duX21hc3RlcihtYXN0ZXIpOwo+ICsJCWtyZWZfcHV0X211dGV4KCZtYXN0ZXItPmty ZWYsIG1hc3Rlcl9yZWxlYXNlLCAmbWFzdGVyX211dGV4KTsKPiArCX0KPiAgCj4gLQlXQVJOX09O KCFjb21wb25lbnQpOwo+ICAJa2ZyZWUoY29tcG9uZW50KTsKPiAgfQo+ICBFWFBPUlRfU1lNQk9M X0dQTChjb21wb25lbnRfZGVsKTsKPiAKPiAKPiAtLSAKPiBGVFRDIGJyb2FkYmFuZCBmb3IgMC44 bWlsZSBsaW5lOiBjdXJyZW50bHkgYXQgOS42TWJwcyBkb3duIDQwMGticHMgdXAKPiBhY2NvcmRp bmcgdG8gc3BlZWR0ZXN0Lm5ldC4KPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwo+IGRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKPiBkcmktZGV2ZWxAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCj4gaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2RyaS1kZXZlbAoKLS0gCkRhbmllbCBWZXR0ZXIKU29mdHdhcmUgRW5naW5lZXIsIElu dGVsIENvcnBvcmF0aW9uCmh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRl dmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==