From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?Q?Christian_K=c3=b6nig?= Subject: Re: [PATCH] drm/amdgpu:implement CONTEXT_CONTROL (v3) Date: Mon, 5 Sep 2016 11:51:03 +0200 Message-ID: References: <1472615341-3847-1-git-send-email-Monk.Liu@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: "Liu, Monk" , Bas Nieuwenhuizen Cc: "amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" QW0gMDUuMDkuMjAxNiB1bSAwNjowOSBzY2hyaWViIExpdSwgTW9uazoKPiBPa2F5LCBqdXN0IHB1 dCBpdCBzaW1wbGUKPgo+IFRoZSBhcHByb2FjaCBteSBwYXRjaCBwcm92aWRlZCBpcyBhYnNvbHV0 ZWx5IGNvcnJlY3QsIGFuZCBJJ20gcHJldHR5IHN1cmUgb2YgaXQsIG90aGVyd2lzZSBvdXIgY2xv c2UgT0dMIFVNRCAmIHdpbmRvd3MgZDNkIGdhbWUgYWxyZWFkeSBjcmFzaGVkIGZvciBtaWxsaW9u IHRpbWVzLgoKV2VsbCB0aGF0IGl0IHdvcmtzIGFuZCBkb2Vzbid0IGNyYXNoIG9mIGhhbmQgZG9l c24ndCBtZWFuIHRoYXQgaXQgaXMgCmNvcnJlY3QuIFdlIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUg dGVjaG5pY2FsIGJhY2tncm91bmQgYW5kIGFsbCAKaW1wbGljYXRpb25zIHRvIGp1ZGdlIGlmIHdl IGNhbiBjb21taXQgdGhlIHBhdGNoIG9yIG5vdCBhbmQgSSBjbGVhcmx5IApkb24ndCBzZWUgdGhh dCByaWdodCBub3cuCgo+IEZpcnN0IG9mIGFsbDogTW92ZSBDT05URVhUX0NPTlRST0wgaW50byBS QiBpcyBhIG11c3QgYW5kIHRoZSBjb3JyZWN0IHRoaW5nLCBhbmQgdGhpcyBpcyBub3QgYSBxdWVz dGlvbmFibGUgcGF0Y2guCgpJIGFncmVlIHRoYXQgd2Ugc2hvdWxkIG1vdmUgQ09OVEVYVF9DT05U Uk9MIHVuZGVyIGtlcm5lbCBjb250cm9sLCBidXQgSSAKZG9uJ3QgYWdyZWUgZG9pbmcgaXQgbGlr ZSB5b3UgcHJvcG9zZWQgd2l0aCB5b3VyIHBhdGNoLgoKPgo+IFRoZW4gZ2l2ZSBzb21lIGRlZmlu aXRpb246Cj4KPiBVTUQgaXMgYXdhcmUgb2YgY29udGV4dCBzd2l0Y2ggd2l0aGluIHRoZSBwcm9j ZXNzLAo+IEtNRCBpcyBhd2FyZSBvZiBjb250ZXh0IHN3aXRjaCBjcm9zcyBwcm9jZXNzZXMsIGJl Y2F1c2UgS01EIGdpdmUgZWFjaCBjb250ZXh0IGEgdW5pcXVlIElEIGdsb2JhbGx5LCBzbyB0aGlz IElEIGNhbiBkZXRlY3QgcHJvY2VzcyBzd2l0Y2ggYXMgd2VsbCBhcyBjb250ZXh0IHN3aXRjaCAo d2l0aGluIGEgcHJvY2VzcykgZWFzaWx5Lgo+Cj4KPiBOb3cgYmFjayB0byB5b3VyIHF1ZXN0aW9u czoKPgo+ICMxCj4gICBTbyBpZiBJIHVuZGVyc3RhbmQgY29ycmVjdGx5LCB0aGUgbmV3IGJlaGF2 aW9yIGlzIHRoYXQgdGhlIGZpcnN0IHN1Ym1pdCBjb250YWluaW5nIGEgcHJlYW1ibGUgYWx3YXlz IGV4ZWN1dGVzIHRoZSBsb2FkcyBpbiB0aGUgcHJlYW1ibGUgZXZlbiBpZiB0aGVyZSBpcyBubyBj b250ZXh0IHN3aXRjaC4gVGhlIG9sZCBiZWhhdmlvciBpcyB0aGF0IGluIHRoYXQgc2l0dWF0aW9u IHRoIHByZWFtYmxlIHdvdWxkIGJlIHNraXBwZWQgaW4gdGhlIG5ldyBzaXR1YXRpb24uIFdoeSBk byB3ZSB3YW50IHRoZSBuZXcgYmVoYXZpb3I/PklmIHRoZSBhcHBsaWNhdGlvbiB3YW50cyB0aGUg bG9hZHMgdG8gZXhlY3V0ZSBldmVuIHdpdGhvdXQgYSBjb250ZXh0IHN3aXRjaCwgaXQgc2hvdWxk IG5vdCBtYXJrIHRoZSBJQiBhcyBhIHByZWFtYmxlIHdpdGggQU1ER1BVX0lCX0ZMQUdfUFJFQU1C TEUuCj4KPiBbTUxdIHRoZXJlIGlzIG5vIGhhcm0ga21kIHRvIHRoYXQsIGlzbid0IGl0ID8gYmVz aWRlcywgbm8gIHNraXAgdGhlIGZpcnN0IFByZWFtYmxlIENFSUIgaXMgdGhlIGNvcnJlY3QgY2hv aWNlIGNvbXBhcmVkIHdpdGggc2tpcCBpdCwgbm8gbWF0dGVyIHdoeSBVTUQgbWFyayBpdCBhcyBG TEFHX1BSRUFNQkxFLgoKV2VsbCBpdCBpcyBhIGJlaGF2aW9yIGNoYW5nZSBhbmQgYXMgc3VjaCBt dXN0IGJlIGp1c3RpZmllZCBzb21laG93LiAKU2luY2UgTWVzYSBkb2Vzbid0IG5lZWQgdGhhdCB3 ZSBkb24ndCBoYXZlIGEganVzdGlmaWNhdGlvbiBmb3IgdGhpcyAKY2hhbmdlIGFzIGZhciBhcyBJ IGNhbiBzZWUuCgpXaGF0IHdlIGNhbiBkbyBpcyBhIG1vcmUgZ2VuZXJhbCBhcHByb2FjaCB0byBm aWx0ZXIgb3V0IHRoZSBwcmVhbWJsZSAKYml0cyBpbiB0aGUgZmlyc3QgY29tbWFuZCBzdWJtaXNz aW9uIHdlIHNlZSBmb3IgZWFjaCBjb250ZXh0IChlLmcuIAphbHJlYWR5IGluIGFtZGdwdV9jcy5j KS4gVGhhdCB3b3VsZCBmb3IgZXhhbXBsZSBiZSB1c2VmdWwgd2hlbiB3ZSByZXBsYXkgCnBhcnRz IG9mIGNhcHR1cmVkIElCcyBhbmQgc28gaXMgdXNlZnVsL2p1c3RpZmllZCBvbiBpdCdzIG93bi4K Cj4KPiAjMgo+IElmIHRoZXJlIGlzIG5vIElCIHdpdGggQU1ER1BVX0lCX0ZMQUdfUFJFQU1CTEUs IHRoZW4gdGhlIENFX0xPQUQgYml0IGFsd2F5cyBnZXRzIGRpc2FibGVkLiBGdXJ0aGVybW9yZSBp ZiB0aGVyZSBpcyBhIENFX0xPQUQgYml0LCBhbmQgbm8gY29udGV4dCBzd2l0Y2ggdGhlIENFX0xP QUQgYml0IGFsc28gZ2V0cyBkaXNhYmxlZCBmb3IgSUIncyB3aXRob3V0IEFNREdQVV9JQl9GTEFH X1BSRUFNQkxFLgo+Cj4gSSB0aGluayB0aGlzIGlzIGEgYmFkIG1vdmUsIGFzIHRoZXJlIGFyZSBz b21lIHVzZXMgZm9yIGxvYWRpbmcgQ0UgUkFNIHRoYXQgYXJlIG5vdCBkZXBlbmRlbnQgb24gY29u dGV4dCBzd2l0Y2hlcywgc3VjaCBhcyBwcmVsb2FkaW5nIHRoaW5ncyBpbnRvIEwyIGNhY2hlLCBv ciBzd2l0Y2hpbmcgc2hhZGVyIHVuaWZvcm1zIGluIENFIFJBTSB3aGVuIGEgZGlmZmVyZW50IHNo YWRlciBnZXRzIGJvdW5kLiBUaGVyZWZvcmUgSSB0aGluayB0aGF0IHRoZSBDRV9MT0FEIGJpdCBz aG91bGQgYWx3YXlzIGJlIGVuYWJsZWQgZm9yIElCJ3Mgd2l0aG91dCBBTURHUFVfSUJfRkxBR19Q UkVBTUJMRS4KPgo+IFtNTF0gd2h5IG15IHBhdGNoL3NjaGVtZSBkb2VzbuKAmXQgc2hvdyBhbnl0 aGluZyB3cm9uZyB3aGVuIEkgcnVuIGJlbmNobWFyayAgKFVuaWdpbmUgaGVhdmVuKSA/CgpBZ2Fp biBhcyBJIHdyb3RlIGFib3ZlIGl0IGlzIGlycmVsZXZhbnQgaWYgeW91ciBwYXRjaCB3b3JrcyBu b3cgd2l0aCAKY3VycmVudCBNZXNhLiBXZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBpbnRl cmZhY2UgaXMgY29uc2lzdGVudCBhbmQgCmRvZXNuJ3QgZXZlbiBicmVhayBvbGQgYW5kIHBvc3Np YmxlIGZ1dHVyZSB1c2UgY2FzZXMuCgpCYXMgY29tbWVudHMgb24gdGhpcyBhcmUgcmlnaHQgYW5k IHNvIEkgdGhpbmsgdGhhdCB0aGUgcGF0Y2ggc2hvdWxkIGJlIApjaGFuZ2VkIHNvIHRoYXQgdGhl IHByZWFtYmxlIGZsYWcgaXMgaG9ub3JlZCBjb3JyZWN0bHkgb24gYSBwZXIgSUIgYmFzaXMuCgpK dXN0IGVtaXR0aW5nIG11bHRpcGxlIENPTlRFWFRfQ09OVFJPTCBwYWNrZXRzIHRvIHJlc2V0IHRo ZSBwcmVhbWJsZSAKZmxhZ3MgZm9yIHRoZSBJQnMgd2hvIGRvbid0IGhhdmUgdGhlIHByZWFtYmxl IGJpdCBzZXQgc291bmRzIGxpa2UgYSAKcG9zc2libGUgYW5kIGNsZWFuIHNvbHV0aW9uIHRvIG1l LgoKPiBJIGFkbWl0IEkgdXNlcyBBTUQgY2xvc2Ugc291cmNlIE9HTCBVTUQsICBJZiBLTUQgZGV0 ZWN0cyBhIGNvbnRleHQgc3dpdGNoIChpbmNsdWRpbmcgY29udGV4dCBzd2l0Y2ggd2l0aGluIG9u ZSBwcm9jZXNzIG9yIHByb2Nlc3Mgc3dpdGNoKSB0aGVuIExPQURfQ0VfUkFNIGlzIGFsc28ga2Vw dC4KPgo+IEZvciBwdXJwb3NlIG9mICAiIHN1Y2ggYXMgcHJlbG9hZGluZyB0aGluZ3MgaW50byBM MiBjYWNoZSwgb3Igc3dpdGNoaW5nIHNoYWRlciB1bmlmb3JtcyBpbiBDRSBSQU0gd2hlbiBhIGRp ZmZlcmVudCBzaGFkZXIgZ2V0cyBib3VuZC4iLi4uLiB0aGF0IGNvdWxkIGJlIGRvbmUgYnkgQ0Ug SUIgKCBpbnN0ZWFkIG9mIFByZWFtYmxlIENFSUIpIHZpYSBjb21tYW5kcyBsaWtlICJ3cml0ZV9j b25zdF9yYW0sIGR1bXBfY29uc3RfcmFtIgo+Cj4gIzMKPiBGdXJ0aGVybW9yZSwgd2l0aCB0aGlz IHBhdGNoIHRoZSBwcmVhbWJsZSBJQidzIGFsd2F5cyBnZXQgZXhlY3V0ZWQgYW5kIGxvYWRzIGRp c2FibGVkIHdpdGggQ09OVEVYVF9DT05UUk9MLiBBcyBlLmcuIG1lc2EgdXNlcyBpdHMgb3duIENP TlRFWFRfQ09OVFJPTCAoYW5kIHdlIGNhbid0IGNoYW5nZSB0aGF0IGZvciBvbGQgdmVyc2lvbnMg b2YgbWVzYSkgdGhpcyB3b3VsZCBvdmVycmlkZSB0aGUga2VybmVsIENPTlRFWFRfQ09OVFJPTCBh bmQgYWx3YXlzIGV4ZWN1dGUgdGhlIGxvYWRzLgo+Cj4gW01MXSBJIG11c3Qgc2F5IE1FU0EgdXNl IENPTlRFWFRfQ09OVFJPTCBpcyByZWFsbHkgYmFkIGlkZWEsIE1FU0EgY291bGRuJ3QgZGV0ZWN0 IHRoZSBjb250ZXh0IHN3aXRjaCB0cmlnZ2VyZWQgYnkgcHJvY2VzcyBzd2l0Y2guCj4gTm8gbWF0 dGVyIHdoYXQgcmVhc29uLCB0aGlzIHdyb25nIGFwcHJvYWNoIG5lZWQgYmUgZml4ZWQuCgpBZ2Fp biBJIGhhdmUgdG8gYWdyZWUgd2l0aCBCYXMgaGVyZS4gV2UgbmVlZCB0byBtYWludGFpbiB0aGUg b2xkIApiZWhhdmlvciBmb3Igb2xkIE1lc2EgZXZlbiB3aGVuIHRoYXQgZG9lc24ndCBzZWVtIHRv IGJlIHRoZSBjb3JyZWN0IAp0aGluZ3MgdG8gZG8uCgo+Cj4gIzQKPiBJIGFsc28gbWlzcyB0aGUg Q0VfTE9BRCBiaXQgaW4gdGhlIENPTlRFWFRfQ09OVFJPTCBmb3IgZ2Z4Ny4gRG9lcyBpdCBub3Qg bmVlZCBpdD8KPgo+IFtNTF0gZm9yIEdGWDcsIHRoZSBDT05URVhUX0NPTlRST0wgZG9lc24ndCBz dXBwb3J0IENFX0xPQUQgYml0LiBTbyBDRV9MT0FEX1JBTSB3aWxsIGFsd2F5cyBiZSBrZXB0IGZy b20gS01EIHBlcnNwZWN0aXZlICh3aGljaCBtYXkgc2FjcmlmaWNlIHBlcmZvcm1hbmNlIGNvbXBh cmVkIHdpdGggR0ZYOCkuCj4KPiAjNQo+IEkgd291bGQgcHJlZmVyIGtlZXBpbmcgdGhlIG9sZCBz eXN0ZW0gZm9yIHByZWFtYmxlIElCJ3MgYW5kIGp1c3QgYWRkaW5nIGEgZ2VuZXJpYyBDT05URVhU X0NPTlRST0wgdGhhdCBhbHdheXMgZW5hYmxlcyB0aGUgQ0UgbG9hZHMuIEkgZG9uJ3QgaGF2ZSBh biBvcGluaW9uIHRoZSBub24tQ0UgbG9hZHMgdGhvdWdoLCBhcyBJJ3ZlIG5ldmVyIGZvdW5kIGEg cmVhc29uIHRvIHVzZSB0aGVtLgo+Cj4gW01MXSBObywgdGhhdCB3YXkgb3VyIGNsb3NlIFVNRCB3 b24ndCB3b3JrIGNvcnJlY3RseS4KPiBZb3UgY2FuIGluc2lzdCB0aGUgd3Jvbmcgd2F5IGFsdGhv dWdoLCAgYW5kIGlmIHlvdSBjYW5ub3QgYWNjZXB0IHRoZSBjb3JyZWN0IHNjaGVtZSBvZiBDT05U RVhUX0NPTlRST0wgYW5kIGNoYW5nZSBNRVNBJ3Mgd3JvbmcgYmVoYXZpb3IsCgpJIHdvdWxkbid0 IGNhbGwgTWVzYSBiZWhhdmlvciB3cm9uZy4gSXQgaXMganVzdCB1c2luZyB0aGUgaGFyZHdhcmUg CmRpZmZlcmVudGx5IHRoYW4gdGhlIGNsb3NlZCBzb3VyY2UgVU1EIGFuZCBzaW5jZSBNZXNhIGlz IHRoZSBvbmx5IApyZWxldmFudCBVTUQgZm9yIHVwc3RyZWFtaW5nIHdlIG5lZWQgdG8gZm9sbG93 IGl0cyByZXF1aXJlbWVudHMuCgo+IEknbGwgY29uc2lkZXIgdXBzdHJlYW0gYW1kZ3B1IEtNRCBy ZWZ1c2UgdG8gc3VwcG9ydCBTUi1JT1YvdmlydHVhbGl6YXRpb24uCj4gWW91IG5lZWQgdGhpbmsg aXQgdHdpY2UsIHlvdSBhcmUgaW5zaXN0aW5nIGEgd3JvbmcgZGVzaWduL2FwcHJvYWNoIGFsdGhv dWdoIGl0IHJ1bnMgZm9yIHllYXJzLgoKT25seSBjb21taXR0aW5nIGl0IHRvIHRoZSBoeWJyaWQg YnJhbmNoIGlzIGEgY2xlYXIgTkFLIGZyb20gbXkgc2lkZSAKY2F1c2UgdGhhdCBjYW4gcmVzdWx0 IGluIHByb2JsZW1zIHdoZW4gd2UgcnVuIE1lc2Egb3ZlciB0aGUgaHlicmlkIAprZXJuZWwgYXMg d2VsbCAod2hpY2ggaXMgYSBkb2N1bWVudGVkIHJlcXVpcmVtZW50IG9mIHRoZSBoeWJyaWQgYnJh bmNoKS4KClBsZWFzZSB3b3JrIHRvZ2V0aGVyIHdpdGggQmFzIHRvIHByb3Blcmx5IGNsZWFuIHVw IHRoaXMgZmVhdHVyZSB3aGlsZSAKbWFpbnRhaW5pbmcgYmFja3dhcmQgYW5kIGZvcndhcmQgY29t cGF0aWJpbGl0eS4KClJlZ2FyZHMsCkNocmlzdGlhbi4KCj4KPiBCUiBNb25rCj4KPgo+Cj4KPgo+ Cj4KPgo+Cj4KPgo+Cj4gQlIgTW9uawo+Cj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0KPiBG cm9tOiBCYXMgTmlldXdlbmh1aXplbiBbbWFpbHRvOmJhc0BiYXNuaWV1d2VuaHVpemVuLm5sXQo+ IFNlbnQ6IEZyaWRheSwgU2VwdGVtYmVyIDAyLCAyMDE2IDEyOjA5IEFNCj4gVG86IExpdSwgTW9u ayA8TW9uay5MaXVAYW1kLmNvbT4KPiBDYzogQ2hyaXN0aWFuIEvDtm5pZyA8ZGVhdGhzaW1wbGVA dm9kYWZvbmUuZGU+OyBhbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IFN1YmplY3Q6IFJl OiBbUEFUQ0hdIGRybS9hbWRncHU6aW1wbGVtZW50IENPTlRFWFRfQ09OVFJPTCAodjMpCj4KPiBP biBUaHUsIFNlcCAxLCAyMDE2IGF0IDEyOjU1IFBNLCBMaXUsIE1vbmsgPE1vbmsuTGl1QGFtZC5j b20+IHdyb3RlOgo+Pj4gV2h5IGRvZXMgdGhhdCBtYWtlcyBhIGRpZmZlcmVuY2UgaWYgaXQgaXMg c2VlbiBmb3IgdGhlIGZpcnN0IHRpbWU/Cj4+Pgo+Pj4gW21sXSBpZiBpdCBpcyBwcmVzZW50ZWQg Zm9yIHRoZSBmaXJzdCB0aW1lIGZvciBiZWxvbmdpbmcgY3R4LCBtZWFucyBldmVuIGN1cnJlbnQg Q1MgZG8gbm90IGludm9sdmUgY29udGV4dCBzd2l0Y2gsIHdlIHN0aWxsIG5lZWQga2VlcCB0aGUg YWN0aW9ucyBpbiBwcmVhbWJsZSBJQi4KPj4+IFVzdWFsbHkgaWYgY3VycmVudCBDUyBpcyBmcm9t IHRoZSBzYW1lIGNudHggb2YgcHJldmlvdXMgQ1MsIHRoYXQgbWVhbnMgbm8gY3R4IHN3aXRjaCBv Y2N1cnMsIHNvIHdlIGNhbiBza2lwIHRoZSBhY3Rpb25zIGluIHByZWFtYmxlIElCLiBidXQgYWJv dmUgY2FzZSBpcyB0aGUgZXhjZXB0aW9uLgo+PiBDYW4ndCB1c2Vyc3BhY2UganVzdCBub3Qgc2V0 IHRoZSBwcmVhbWJsZSBmbGFnIGZvciB0aGUgZmlyc3Qgc3VibWl0IHdpdGggYSBwcmVhbWJsZT8g SSB0aGluayB0aGF0IHdvdWxkIHJlc3VsdCBpbiB0aGUgc2FtZSBiZWhhdmlvciwgdW5sZXNzIGhh dmluZyB0d28gbm9uLXByZWFtYmxlIENFIElCJ3MgaW4gYSBzaW5nbGUgc3VibWl0IGlzIGFuIGlz c3VlLgo+Pgo+PiAtIEJhcwo+Pgo+Pgo+PiBbTUxdIEknbSBjb25mdXNlZCwgd2hhdCdzIHlvdXIg cG9pbnQ/Cj4gU28gaWYgSSB1bmRlcnN0YW5kIGNvcnJlY3RseSwgdGhlIG5ldyBiZWhhdmlvciBp cyB0aGF0IHRoZSBmaXJzdCBzdWJtaXQgY29udGFpbmluZyBhIHByZWFtYmxlIGFsd2F5cyBleGVj dXRlcyB0aGUgbG9hZHMgaW4gdGhlIHByZWFtYmxlIGV2ZW4gaWYgdGhlcmUgaXMgbm8gY29udGV4 dCBzd2l0Y2guIFRoZSBvbGQgYmVoYXZpb3IgaXMgdGhhdCBpbiB0aGF0IHNpdHVhdGlvbiB0aGUg cHJlYW1ibGUgd291bGQgYmUgc2tpcHBlZCBpbiB0aGUgbmV3IHNpdHVhdGlvbi4gV2h5IGRvIHdl IHdhbnQgdGhlIG5ldyBiZWhhdmlvcj8gSWYgdGhlIGFwcGxpY2F0aW9uIHdhbnRzIHRoZSBsb2Fk cyB0byBleGVjdXRlIGV2ZW4gd2l0aG91dCBhIGNvbnRleHQgc3dpdGNoLCBpdCBzaG91bGQgbm90 IG1hcmsgdGhlIElCIGFzIGEgcHJlYW1ibGUgd2l0aCBBTURHUFVfSUJfRkxBR19QUkVBTUJMRS4K Pgo+IE9uIGluc3BlY3RpbmcgdGhlIHBhdGNoIG1vcmUgY2xvc2VseSBJIHRoaW5rIHRoZXJlIGFy ZSBtb3JlIGlzc3VlcyB3aXRoIHRoaXMgcGF0Y2guCj4KPiBJZiB0aGVyZSBpcyBubyBJQiB3aXRo IEFNREdQVV9JQl9GTEFHX1BSRUFNQkxFLCB0aGVuIHRoZSBDRV9MT0FEIGJpdCBhbHdheXMgZ2V0 cyBkaXNhYmxlZC4gRnVydGhlcm1vcmUgaWYgdGhlcmUgaXMgYSBDRV9MT0FEIGJpdCwgYW5kIG5v IGNvbnRleHQgc3dpdGNoIHRoZSBDRV9MT0FEIGJpdCBhbHNvIGdldHMgZGlzYWJsZWQgZm9yIElC J3Mgd2l0aG91dCBBTURHUFVfSUJfRkxBR19QUkVBTUJMRS4KPgo+IEkgdGhpbmsgdGhpcyBpcyBh IGJhZCBtb3ZlLCBhcyB0aGVyZSBhcmUgc29tZSB1c2VzIGZvciBsb2FkaW5nIENFIFJBTSB0aGF0 IGFyZSBub3QgZGVwZW5kZW50IG9uIGNvbnRleHQgc3dpdGNoZXMsIHN1Y2ggYXMgcHJlbG9hZGlu ZyB0aGluZ3MgaW50byBMMiBjYWNoZSwgb3Igc3dpdGNoaW5nIHNoYWRlciB1bmlmb3JtcyBpbiBD RSBSQU0gd2hlbiBhIGRpZmZlcmVudCBzaGFkZXIgZ2V0cyBib3VuZC4gVGhlcmVmb3JlIEkgdGhp bmsgdGhhdCB0aGUgQ0VfTE9BRCBiaXQgc2hvdWxkIGFsd2F5cyBiZSBlbmFibGVkIGZvciBJQidz IHdpdGhvdXQgQU1ER1BVX0lCX0ZMQUdfUFJFQU1CTEUuCj4KPiBGdXJ0aGVybW9yZSwgd2l0aCB0 aGlzIHBhdGNoIHRoZSBwcmVhbWJsZSBJQidzIGFsd2F5cyBnZXQgZXhlY3V0ZWQgYW5kIGxvYWRz IGRpc2FibGVkIHdpdGggQ09OVEVYVF9DT05UUk9MLiBBcyBlLmcuIG1lc2EgdXNlcyBpdHMgb3du IENPTlRFWFRfQ09OVFJPTCAoYW5kIHdlIGNhbid0IGNoYW5nZSB0aGF0IGZvciBvbGQgdmVyc2lv bnMgb2YgbWVzYSkgdGhpcyB3b3VsZCBvdmVycmlkZSB0aGUga2VybmVsIENPTlRFWFRfQ09OVFJP TCBhbmQgYWx3YXlzIGV4ZWN1dGUgdGhlIGxvYWRzLgo+Cj4gSSBhbHNvIG1pc3MgdGhlIENFX0xP QUQgYml0IGluIHRoZSBDT05URVhUX0NPTlRST0wgZm9yIGdmeDcuIERvZXMgaXQgbm90IG5lZWQg aXQ/Cj4KPiBJIHdvdWxkIHByZWZlciBrZWVwaW5nIHRoZSBvbGQgc3lzdGVtIGZvciBwcmVhbWJs ZSBJQidzIGFuZCBqdXN0IGFkZGluZyBhIGdlbmVyaWMgQ09OVEVYVF9DT05UUk9MIHRoYXQgYWx3 YXlzIGVuYWJsZXMgdGhlIENFIGxvYWRzLiBJIGRvbid0IGhhdmUgYW4gb3BpbmlvbiB0aGUgbm9u LUNFIGxvYWRzIHRob3VnaCwgYXMgSSd2ZSBuZXZlciBmb3VuZCBhIHJlYXNvbiB0byB1c2UgdGhl bS4KPgo+IC0gQmFzCj4KPj4gV2l0aCB0aGlzIHBhdGNoLCBwcmVhbWJsZV9mbGFnIGlzIG5vdCBu ZWVkZWQgYXQgYWxsLgo+PiBXaXRob3V0IHRoaXMgcGF0Y2gsICBtYW55IG9yaWdpbmFsIGFzc3Vt cHRpb24gYW5kIGxvZ2ljIGlzIG5vdCBjb3JyZWN0Lgo+PiBCZXNpZGVzLCBDT05URVhUX0NPTlRS T0wgbm90IG9ubHkgZGVhbHMgQ0UgYnV0IGFsc28gZGVhbCBERS4KPgo+PiBCUiBNb25rCj4+Cj4+ Cj4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tCj4+IEZyb206IEJhcyBOaWV1d2VuaHVpemVu IFttYWlsdG86YmFzQGJhc25pZXV3ZW5odWl6ZW4ubmxdCj4+IFNlbnQ6IFRodXJzZGF5LCBTZXB0 ZW1iZXIgMDEsIDIwMTYgNDoxOSBQTQo+PiBUbzogTGl1LCBNb25rIDxNb25rLkxpdUBhbWQuY29t Pgo+PiBDYzogQ2hyaXN0aWFuIEvDtm5pZyA8ZGVhdGhzaW1wbGVAdm9kYWZvbmUuZGU+Owo+PiBh bWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+PiBTdWJqZWN0OiBSZTogW1BBVENIXSBkcm0v YW1kZ3B1OmltcGxlbWVudCBDT05URVhUX0NPTlRST0wgKHYzKQo+Pgo+PiBPbiBUaHUsIFNlcCAx LCAyMDE2IGF0IDk6MzcgQU0sIExpdSwgTW9uayA8TW9uay5MaXVAYW1kLmNvbT4gd3JvdGU6Cj4+ Pgo+Pj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0KPj4+IEZyb206IGFtZC1nZnggW21haWx0 bzphbWQtZ2Z4LWJvdW5jZXNAbGlzdHMuZnJlZWRlc2t0b3Aub3JnXSBPbgo+Pj4gQmVoYWxmIE9m IENocmlzdGlhbiBLP25pZwo+Pj4gU2VudDogV2VkbmVzZGF5LCBBdWd1c3QgMzEsIDIwMTYgNzo1 MyBQTQo+Pj4gVG86IExpdSwgTW9uayA8TW9uay5MaXVAYW1kLmNvbT47IGFtZC1nZnhAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCj4+PiBTdWJqZWN0OiBSZTogW1BBVENIXSBkcm0vYW1kZ3B1OmltcGxl bWVudCBDT05URVhUX0NPTlRST0wgKHYzKQo+Pj4KPj4+IExvb2tzIGdvb2QgdG8gbWUgaW4gZ2Vu ZXJhbCwgYSBmZXcgbml0IHBpY2tzIGFuZCBzdWdlZ3N0aW9ucyBiZWxvdy4KPj4+Cj4+PiBBbSAz MS4wOC4yMDE2IHVtIDA1OjQ5IHNjaHJpZWIgTW9uayBMaXU6Cj4+Pj4gdjE6Cj4+Pj4gZm9yIGdm eDgsIHVzZSBDT05URVhUX0NPTlRST0wgcGFja2FnZSB0byBkeW5hbWljYWxseSBza2lwIHByZWFt YmxlCj4+Pj4gQ0VJQiBhbmQgb3RoZXIgbG9hZF94eHggY29tbWFuZCBpbiBzZXF1ZW5jZS4KPj4+ Pgo+Pj4+IHYyOgo+Pj4+IHN1cHBvcnQgR0ZYNyBhcyB3ZWxsLCBhbmQgYnVtcCB1cCB2ZXJzaW9u Lgo+Pj4+IHJlbW92ZSBjbnR4Y250bCBpbiBjb21wdXRlIHJpbmcgZnVuY3MgYmVjYXVzZSBDUEMg ZG9lc24ndCBzdXBwb3J0Cj4+Pj4gdGhpcyBwYWNrZXQuCj4+Pj4KPj4+PiB2MzogZml4IHJlZHVu dGFudCBqdWRnZW1lbnQgaW4gY250eGNudGwuCj4+Pj4KPj4+PiBDaGFuZ2UtSWQ6IEk0Yjg3Y2E4 NGVhOGMxMWJhNGY3ZmI0YzBlOGE1YmU1MzdjY2RlODUxCj4+Pj4gU2lnbmVkLW9mZi1ieTogTW9u ayBMaXUgPE1vbmsuTGl1QGFtZC5jb20+Cj4+Pj4KPj4+PiBDaGFuZ2UtSWQ6IEk1ZDI0YzFiYjVj MTQxOTBjZTRhZGViNmEzMzFlZTNkOTJiM2Q1YzgzCj4+Pj4gU2lnbmVkLW9mZi1ieTogTW9uayBM aXUgPE1vbmsuTGl1QGFtZC5jb20+Cj4+PiBPbmx5IG9uZSBzaWduZWQgb2YgYnkgbGluZSBpcyBl bm91Z2ggYW5kIHJlbW92ZSB0aGUgY2hhbmdlLWlkcy4KPj4+Cj4+Pj4gLS0tCj4+Pj4gICAgZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1LmggICAgIHwgIDkgKysrKysrKysrCj4+Pj4g ICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmMgIHwgMTIgKysrKysrKysr KysrCj4+Pj4gICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rydi5jIHwgIDMg KystCj4+Pj4gICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2liLmMgIHwgMTYg KysrKysrKysrLS0tLS0tLQo+Pj4+ICAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dmeF92 N18wLmMgICB8IDIwICsrKysrKysrKysrKysrKysrKysrCj4+Pj4gICAgZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvZ2Z4X3Y4XzAuYyAgIHwgMzAgKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrCj4+Pj4gICAgNiBmaWxlcyBjaGFuZ2VkLCA4MiBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9u cygtKQo+Pj4+Cj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Ft ZGdwdS5oCj4+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUuaAo+Pj4+IGlu ZGV4IDEyNTQ0MTAuLjBkZTVmMDggMTAwNjQ0Cj4+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvYW1kZ3B1LmgKPj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9h bWRncHUuaAo+Pj4+IEBAIC0zMjEsNiArMzIxLDcgQEAgc3RydWN0IGFtZGdwdV9yaW5nX2Z1bmNz IHsKPj4+PiAgICAgICAgdm9pZCAoKmJlZ2luX3VzZSkoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5n KTsKPj4+PiAgICAgICAgdm9pZCAoKmVuZF91c2UpKHN0cnVjdCBhbWRncHVfcmluZyAqcmluZyk7 Cj4+Pj4gICAgICAgIHZvaWQgKCplbWl0X3N3aXRjaF9idWZmZXIpIChzdHJ1Y3QgYW1kZ3B1X3Jp bmcgKnJpbmcpOwo+Pj4+ICsgICAgIHZvaWQgKCplbWl0X2NudHhjbnRsKSAoc3RydWN0IGFtZGdw dV9yaW5nICpyaW5nLCB1aW50MzJfdAo+Pj4+ICsgZmxhZ3MpOwo+Pj4+ICAgIH07Cj4+Pj4KPj4+ PiAgICAvKgo+Pj4+IEBAIC05NjUsNiArOTY2LDcgQEAgc3RydWN0IGFtZGdwdV9jdHggewo+Pj4+ ICAgICAgICBzcGlubG9ja190ICAgICAgICAgICAgICByaW5nX2xvY2s7Cj4+Pj4gICAgICAgIHN0 cnVjdCBmZW5jZSAgICAgICAgICAgICoqZmVuY2VzOwo+Pj4+ICAgICAgICBzdHJ1Y3QgYW1kZ3B1 X2N0eF9yaW5nICByaW5nc1tBTURHUFVfTUFYX1JJTkdTXTsKPj4+PiArICAgICBib29sIHByZWFt YmxlX3ByZXNlbnRlZDsKPj4+PiAgICB9Owo+Pj4+Cj4+Pj4gICAgc3RydWN0IGFtZGdwdV9jdHhf bWdyIHsKPj4+PiBAQCAtMTIyNyw4ICsxMjI5LDEzIEBAIHN0cnVjdCBhbWRncHVfY3NfcGFyc2Vy IHsKPj4+Pgo+Pj4+ICAgICAgICAvKiB1c2VyIGZlbmNlICovCj4+Pj4gICAgICAgIHN0cnVjdCBh bWRncHVfYm9fbGlzdF9lbnRyeSAgICAgdWZfZW50cnk7Cj4+Pj4gKyAgICAgYm9vbCBwcmVhbWJs ZV9wcmVzZW50OyAvKiBUcnVlIG1lYW5zIHRoaXMgY29tbWFuZCBzdWJtaXQKPj4+PiAraW52b2x2 ZXMgYSBwcmVhbWJsZSBJQiAqLwo+Pj4gV2Ugb25seSBuZWVkIHRoaXMgaW4gYW1kZ3B1X2NzX2li X2ZpbGwoKSBkb24ndCB3ZT8gU2VlIGJlbG93IGFzIHdlbGwuCj4+Pgo+Pj4gW01MXSBzZWVtcyBn b29kIGFkdmljZQo+Pj4KPj4+PiAgICB9Owo+Pj4+Cj4+Pj4gKyNkZWZpbmUgUFJFQU1CTEVfSUJf UFJFU0VOVCAgICAgICAgICAoMSA8PCAwKSAvKiBiaXQgc2V0IG1lYW5zIGNvbW1hbmQgc3VibWl0 IGludm9sdmVzIGEgcHJlYW1ibGUgSUIgKi8KPj4+PiArI2RlZmluZSBQUkVBTUJMRV9JQl9QUkVT RU5UX0ZJUlNUICAgICgxIDw8IDEpIC8qIGJpdCBzZXQgbWVhbnMgcHJlYW1ibGUgSUIgaXMgZmly c3QgcHJlc2VudGVkIGluIGJlbG9uZ2luZyBjb250ZXh0ICovCj4+PiBXaHkgZG9lcyB0aGF0IG1h a2VzIGEgZGlmZmVyZW5jZSBpZiBpdCBpcyBzZWVuIGZvciB0aGUgZmlyc3QgdGltZT8KPj4+Cj4+ PiBbbWxdIGlmIGl0IGlzIHByZXNlbnRlZCBmb3IgdGhlIGZpcnN0IHRpbWUgZm9yIGJlbG9uZ2lu ZyBjdHgsIG1lYW5zIGV2ZW4gY3VycmVudCBDUyBkbyBub3QgaW52b2x2ZSBjb250ZXh0IHN3aXRj aCwgd2Ugc3RpbGwgbmVlZCBrZWVwIHRoZSBhY3Rpb25zIGluIHByZWFtYmxlIElCLgo+Pj4gVXN1 YWxseSBpZiBjdXJyZW50IENTIGlzIGZyb20gdGhlIHNhbWUgY250eCBvZiBwcmV2aW91cyBDUywg dGhhdCBtZWFucyBubyBjdHggc3dpdGNoIG9jY3Vycywgc28gd2UgY2FuIHNraXAgdGhlIGFjdGlv bnMgaW4gcHJlYW1ibGUgSUIuIGJ1dCBhYm92ZSBjYXNlIGlzIHRoZSBleGNlcHRpb24uCj4+IENh bid0IHVzZXJzcGFjZSBqdXN0IG5vdCBzZXQgdGhlIHByZWFtYmxlIGZsYWcgZm9yIHRoZSBmaXJz dCBzdWJtaXQgd2l0aCBhIHByZWFtYmxlPyBJIHRoaW5rIHRoYXQgd291bGQgcmVzdWx0IGluIHRo ZSBzYW1lIGJlaGF2aW9yLCB1bmxlc3MgaGF2aW5nIHR3byBub24tcHJlYW1ibGUgQ0UgSUIncyBp biBhIHNpbmdsZSBzdWJtaXQgaXMgYW4gaXNzdWUuCj4+Cj4+IC0gQmFzCj4+Cj4+Pj4gKyNkZWZp bmUgSEFWRV9DVFhfU1dJVENIICAgICAgICAgICAgICAoMSA8PCAyKSAvKiBiaXQgc2V0IG1lYW5z IGNvbnRleHQgc3dpdGNoIG9jY3VyZWQgKi8KPj4+PiArCj4+Pj4gICAgc3RydWN0IGFtZGdwdV9q b2Igewo+Pj4+ICAgICAgICBzdHJ1Y3QgYW1kX3NjaGVkX2pvYiAgICBiYXNlOwo+Pj4+ICAgICAg ICBzdHJ1Y3QgYW1kZ3B1X2RldmljZSAgICAqYWRldjsKPj4+PiBAQCAtMTIzNyw2ICsxMjQ0LDcg QEAgc3RydWN0IGFtZGdwdV9qb2Igewo+Pj4+ICAgICAgICBzdHJ1Y3QgYW1kZ3B1X3N5bmMgICAg ICBzeW5jOwo+Pj4+ICAgICAgICBzdHJ1Y3QgYW1kZ3B1X2liICAgICAgICAqaWJzOwo+Pj4+ICAg ICAgICBzdHJ1Y3QgZmVuY2UgICAgICAgICAgICAqZmVuY2U7IC8qIHRoZSBodyBmZW5jZSAqLwo+ Pj4+ICsgICAgIHVpbnQzMl90ICAgICAgICAgICAgICAgIHByZWFtYmxlX3N0YXR1czsKPj4+PiAg ICAgICAgdWludDMyX3QgICAgICAgICAgICAgICAgbnVtX2liczsKPj4+PiAgICAgICAgdm9pZCAg ICAgICAgICAgICAgICAgICAgKm93bmVyOwo+Pj4+ICAgICAgICB1aW50NjRfdCAgICAgICAgICAg ICAgICBmZW5jZV9jdHg7IC8qIHRoZSBmZW5jZV9jb250ZXh0IHRoaXMgam9iIHVzZXMgKi8KPj4+ PiBAQCAtMjI2NCw2ICsyMjcyLDcgQEAgYW1kZ3B1X2dldF9zZG1hX2luc3RhbmNlKHN0cnVjdCBh bWRncHVfcmluZyAqcmluZykKPj4+PiAgICAjZGVmaW5lIGFtZGdwdV9yaW5nX2VtaXRfaGRwX2Zs dXNoKHIpIChyKS0+ZnVuY3MtPmVtaXRfaGRwX2ZsdXNoKChyKSkKPj4+PiAgICAjZGVmaW5lIGFt ZGdwdV9yaW5nX2VtaXRfaGRwX2ludmFsaWRhdGUocikgKHIpLT5mdW5jcy0+ZW1pdF9oZHBfaW52 YWxpZGF0ZSgocikpCj4+Pj4gICAgI2RlZmluZSBhbWRncHVfcmluZ19lbWl0X3N3aXRjaF9idWZm ZXIocikKPj4+PiAociktPmZ1bmNzLT5lbWl0X3N3aXRjaF9idWZmZXIoKHIpKQo+Pj4+ICsjZGVm aW5lIGFtZGdwdV9yaW5nX2VtaXRfY250eGNudGwociwgZCkKPj4+PiArKHIpLT5mdW5jcy0+ZW1p dF9jbnR4Y250bCgociksIChkKSkKPj4+PiAgICAjZGVmaW5lIGFtZGdwdV9yaW5nX3BhZF9pYihy LCBpYikgKChyKS0+ZnVuY3MtPnBhZF9pYigociksIChpYikpKQo+Pj4+ICAgICNkZWZpbmUgYW1k Z3B1X3JpbmdfaW5pdF9jb25kX2V4ZWMocikgKHIpLT5mdW5jcy0+aW5pdF9jb25kX2V4ZWMoKHIp KQo+Pj4+ICAgICNkZWZpbmUgYW1kZ3B1X3JpbmdfcGF0Y2hfY29uZF9leGVjKHIsbykKPj4+PiAo ciktPmZ1bmNzLT5wYXRjaF9jb25kX2V4ZWMoKHIpLChvKSkKPj4+PiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmMKPj4+PiBiL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jCj4+Pj4gaW5kZXggMmQ0ZTAwNS4uNmQ4YzA1MCAxMDA2 NDQKPj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYwo+Pj4+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jCj4+Pj4gQEAgLTc5 Miw2ICs3OTIsOSBAQCBzdGF0aWMgaW50IGFtZGdwdV9jc19pYl9maWxsKHN0cnVjdCBhbWRncHVf ZGV2aWNlICphZGV2LAo+Pj4+ICAgICAgICAgICAgICAgIGlmIChyKQo+Pj4+ICAgICAgICAgICAg ICAgICAgICAgICAgcmV0dXJuIHI7Cj4+Pj4KPj4+PiArICAgICAgICAgICAgIGlmIChpYi0+Zmxh Z3MgJiBBTURHUFVfSUJfRkxBR19QUkVBTUJMRSkKPj4+PiArICAgICAgICAgICAgICAgICAgICAg cGFyc2VyLT5wcmVhbWJsZV9wcmVzZW50ID0gdHJ1ZTsKPj4+PiArCj4+Pj4gICAgICAgICAgICAg ICAgaWYgKHBhcnNlci0+am9iLT5yaW5nICYmIHBhcnNlci0+am9iLT5yaW5nICE9IHJpbmcpCj4+ Pj4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPj4+Pgo+Pj4+IEBAIC05 MzAsNiArOTMzLDEyIEBAIHN0YXRpYyBpbnQgYW1kZ3B1X2NzX3N1Ym1pdChzdHJ1Y3QgYW1kZ3B1 X2NzX3BhcnNlciAqcCwKPj4+PiAgICAgICAgICAgICAgICByZXR1cm4gcjsKPj4+PiAgICAgICAg fQo+Pj4+Cj4+Pj4gKyAgICAgaWYgKHAtPnByZWFtYmxlX3ByZXNlbnQpIHsKPj4+PiArICAgICAg ICAgICAgIGpvYi0+cHJlYW1ibGVfc3RhdHVzIHw9IFBSRUFNQkxFX0lCX1BSRVNFTlQ7Cj4+Pj4g KyAgICAgICAgICAgICBpZiAoIXAtPmN0eC0+cHJlYW1ibGVfcHJlc2VudGVkKQo+Pj4+ICsgICAg ICAgICAgICAgICAgICAgICBqb2ItPnByZWFtYmxlX3N0YXR1cyB8PSBQUkVBTUJMRV9JQl9QUkVT RU5UX0ZJUlNUOwo+Pj4+ICsgICAgIH0KPj4+PiArCj4+PiBCZXR0ZXIgbW92ZSB0aGlzIHRvIHRo ZSBlbmQgb2YgYW1kZ3B1X2NzX2liX2ZpbGwoKSB3aGVyZSB3ZSBhbGxvY2F0ZSB0aGUgSUJzIGFz IHdlbGwuCj4+PiBbTUxdIG9rYXksIGdvb2QgY2hhbmdlLgo+Pj4KPj4+Cj4+Pgo+Pj4+ICAgICAg ICBqb2ItPm93bmVyID0gcC0+ZmlscDsKPj4+PiAgICAgICAgam9iLT5mZW5jZV9jdHggPSBlbnRp dHktPmZlbmNlX2NvbnRleHQ7Cj4+Pj4gICAgICAgIHAtPmZlbmNlID0gZmVuY2VfZ2V0KCZqb2It PmJhc2Uuc19mZW5jZS0+ZmluaXNoZWQpOwo+Pj4+IEBAIC05NDAsNiArOTQ5LDkgQEAgc3RhdGlj IGludCBhbWRncHVfY3Nfc3VibWl0KHN0cnVjdCBhbWRncHVfY3NfcGFyc2VyICpwLAo+Pj4+ICAg ICAgICB0cmFjZV9hbWRncHVfY3NfaW9jdGwoam9iKTsKPj4+PiAgICAgICAgYW1kX3NjaGVkX2Vu dGl0eV9wdXNoX2pvYigmam9iLT5iYXNlKTsKPj4+Pgo+Pj4+ICsgICAgIGlmIChwLT5wcmVhbWJs ZV9wcmVzZW50KQo+Pj4+ICsgICAgICAgICAgICAgcC0+Y3R4LT5wcmVhbWJsZV9wcmVzZW50ZWQg PSB0cnVlOwo+Pj4+ICsKPj4+PiAgICAgICAgcmV0dXJuIDA7Cj4+Pj4gICAgfQo+Pj4+Cj4+Pj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kcnYuYwo+Pj4+ IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rydi5jCj4+Pj4gaW5kZXggNTZj ODVlNi4uNDRkYjBhYiAxMDA2NDQKPj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9hbWRncHVfZHJ2LmMKPj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRn cHVfZHJ2LmMKPj4+PiBAQCAtNTUsOSArNTUsMTAgQEAKPj4+PiAgICAgKiAtIDMuMy4wIC0gQWRk IFZNIHN1cHBvcnQgZm9yIFVWRCBvbiBzdXBwb3J0ZWQgaGFyZHdhcmUuCj4+Pj4gICAgICogLSAz LjQuMCAtIEFkZCBBTURHUFVfSU5GT19OVU1fRVZJQ1RJT05TLgo+Pj4+ICAgICAqIC0gMy41LjAg LSBBZGQgc3VwcG9ydCBmb3IgbmV3IFVWRF9OT19PUCByZWdpc3Rlci4KPj4+PiArICogLSAzLjYu MCAtIFVNRCBkb2Vzbid0L3Nob3VsZG4ndCBuZWVkIHRvIHVzZSBDT05URVhUX0NPTlRST0wgaW4K Pj4+PiArIElCLCBLTUQgc2hvdWxkIGRvIGl0Cj4+Pj4gICAgICovCj4+Pj4gICAgI2RlZmluZSBL TVNfRFJJVkVSX01BSk9SICAgIDMKPj4+PiAtI2RlZmluZSBLTVNfRFJJVkVSX01JTk9SICAgICA1 Cj4+Pj4gKyNkZWZpbmUgS01TX0RSSVZFUl9NSU5PUiAgICAgNgo+Pj4+ICAgICNkZWZpbmUgS01T X0RSSVZFUl9QQVRDSExFVkVMICAgICAgIDAKPj4+Pgo+Pj4+ICAgIGludCBhbWRncHVfdnJhbV9s aW1pdCA9IDA7Cj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Ft ZGdwdV9pYi5jCj4+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfaWIuYwo+ Pj4+IGluZGV4IDA0MjYzZjAuLmIxMmI1YmEgMTAwNjQ0Cj4+Pj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2liLmMKPj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9hbWRncHVfaWIuYwo+Pj4+IEBAIC0xMjEsMTAgKzEyMSwxMSBAQCBpbnQgYW1kZ3B1 X2liX3NjaGVkdWxlKHN0cnVjdCBhbWRncHVfcmluZyAqcmluZywgdW5zaWduZWQgbnVtX2licywK Pj4+PiAgICB7Cj4+Pj4gICAgICAgIHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gcmluZy0+ YWRldjsKPj4+PiAgICAgICAgc3RydWN0IGFtZGdwdV9pYiAqaWIgPSAmaWJzWzBdOwo+Pj4+IC0g ICAgIGJvb2wgc2tpcF9wcmVhbWJsZSwgbmVlZF9jdHhfc3dpdGNoOwo+Pj4+ICsgICAgIGJvb2wg bmVlZF9jdHhfc3dpdGNoOwo+Pj4+ICAgICAgICB1bnNpZ25lZCBwYXRjaF9vZmZzZXQgPSB+MDsK Pj4+PiAgICAgICAgc3RydWN0IGFtZGdwdV92bSAqdm07Cj4+Pj4gICAgICAgIHVpbnQ2NF90IGZl bmNlX2N0eDsKPj4+PiArICAgICB1aW50MzJfdCBzdGF0dXMgPSAwOwo+Pj4+Cj4+Pj4gICAgICAg IHVuc2lnbmVkIGk7Cj4+Pj4gICAgICAgIGludCByID0gMDsKPj4+PiBAQCAtMTc0LDE1ICsxNzUs MTYgQEAgaW50IGFtZGdwdV9pYl9zY2hlZHVsZShzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcsIHVu c2lnbmVkIG51bV9pYnMsCj4+Pj4gICAgICAgIC8qIGFsd2F5cyBzZXQgY29uZF9leGVjX3BvbGxp bmcgdG8gQ09OVElOVUUgKi8KPj4+PiAgICAgICAgKnJpbmctPmNvbmRfZXhlX2NwdV9hZGRyID0g MTsKPj4+Pgo+Pj4+IC0gICAgIHNraXBfcHJlYW1ibGUgPSByaW5nLT5jdXJyZW50X2N0eCA9PSBm ZW5jZV9jdHg7Cj4+Pj4gICAgICAgIG5lZWRfY3R4X3N3aXRjaCA9IHJpbmctPmN1cnJlbnRfY3R4 ICE9IGZlbmNlX2N0eDsKPj4+PiArICAgICBpZiAoam9iICYmIHJpbmctPmZ1bmNzLT5lbWl0X2Nu dHhjbnRsKSB7Cj4+Pj4gKyAgICAgICAgICAgICBpZiAobmVlZF9jdHhfc3dpdGNoKQo+Pj4+ICsg ICAgICAgICAgICAgICAgICAgICBzdGF0dXMgfD0gSEFWRV9DVFhfU1dJVENIOwo+Pj4+ICsgICAg ICAgICAgICAgc3RhdHVzIHw9IGpvYi0+cHJlYW1ibGVfc3RhdHVzOwo+Pj4+ICsgICAgICAgICAg ICAgYW1kZ3B1X3JpbmdfZW1pdF9jbnR4Y250bChyaW5nLCBzdGF0dXMpOwo+Pj4+ICsgICAgIH0K Pj4+PiArCj4+Pj4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBudW1faWJzOyArK2kpIHsKPj4+PiAg ICAgICAgICAgICAgICBpYiA9ICZpYnNbaV07Cj4+Pj4gLQo+Pj4+IC0gICAgICAgICAgICAgLyog ZHJvcCBwcmVhbWJsZSBJQnMgaWYgd2UgZG9uJ3QgaGF2ZSBhIGNvbnRleHQgc3dpdGNoICovCj4+ Pj4gLSAgICAgICAgICAgICBpZiAoKGliLT5mbGFncyAmIEFNREdQVV9JQl9GTEFHX1BSRUFNQkxF KSAmJiBza2lwX3ByZWFtYmxlKQo+Pj4+IC0gICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK Pj4+PiAtCj4+PiBXb3VsZCBiZSBuaWNlIHRvIGtlZXAgdGhpcyBmdW5jdGlvbmFsaXR5IGZvciBj YXNlcyB3aGVyZSB3ZSBkb24ndCBzdXBwb3J0IGVtaXRfY250eGNudGwgKGUuZy4gU0k/KS4KPj4+ IFtNTF0gU0kgc3VwcG9ydCBDT05URVhUX0NPTlRST0wgYXMgd2VsbCwgYW5kIHRoZSBwYWNrYWdl IHN0cnVjdHVyZSBpcyBleGFjdGx5IHRoZSBzYW1lIGFzIENJLgo+Pj4KPj4+PiAgICAgICAgICAg ICAgICBhbWRncHVfcmluZ19lbWl0X2liKHJpbmcsIGliLCBqb2IgPyBqb2ItPnZtX2lkIDogMCwK Pj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5lZWRfY3R4X3N3aXRjaCk7 Cj4+Pj4gICAgICAgICAgICAgICAgbmVlZF9jdHhfc3dpdGNoID0gZmFsc2U7IGRpZmYgLS1naXQK Pj4+PiBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dmeF92N18wLmMKPj4+PiBiL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dmeF92N18wLmMKPj4+PiBpbmRleCBmMDU1ZDQ5Li4wZDVh ZGRiIDEwMDY0NAo+Pj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dmeF92N18w LmMKPj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhfdjdfMC5jCj4+Pj4g QEAgLTIwOTYsNiArMjA5NiwyNSBAQCBzdGF0aWMgdm9pZCBnZnhfdjdfMF9yaW5nX2VtaXRfaWJf Y29tcHV0ZShzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcsCj4+Pj4gICAgICAgIGFtZGdwdV9yaW5n X3dyaXRlKHJpbmcsIGNvbnRyb2wpOwo+Pj4+ICAgIH0KPj4+Pgo+Pj4+ICtzdGF0aWMgdm9pZCBn ZnhfdjdfcmluZ19lbWl0X2NudHhjbnRsKHN0cnVjdCBhbWRncHVfcmluZyAqcmluZywKPj4+PiAr dWludDMyX3QgZmxhZ3MpIHsKPj4+PiArICAgICB1aW50MzJfdCBkdzIgPSAwOwo+Pj4+ICsKPj4+ PiArICAgICBkdzIgfD0gMHg4MDAwMDAwMDsgLyogc2V0IGxvYWRfZW5hYmxlIG90aGVyd2lzZSB0 aGlzIHBhY2thZ2UgaXMganVzdCBOT1BzICovCj4+Pj4gKyAgICAgaWYgKGZsYWdzICYgSEFWRV9D VFhfU1dJVENIKSB7Cj4+Pj4gKyAgICAgICAgICAgICAvKiBzZXQgbG9hZF9nbG9iYWxfY29uZmln ICYgbG9hZF9nbG9iYWxfdWNvbmZpZyAqLwo+Pj4+ICsgICAgICAgICAgICAgZHcyIHw9IDB4ODAw MTsKPj4+PiArICAgICAgICAgICAgIC8qIHNldCBsb2FkX2NzX3NoX3JlZ3MgKi8KPj4+PiArICAg ICAgICAgICAgIGR3MiB8PSAweDAxMDAwMDAwOwo+Pj4+ICsgICAgICAgICAgICAgLyogc2V0IGxv YWRfcGVyX2NvbnRleHRfc3RhdGUgJiBsb2FkX2dmeF9zaF9yZWdzICovCj4+Pj4gKyAgICAgICAg ICAgICBkdzIgfD0gMHgxMDAwMjsKPj4+IEJldHRlciBkZWZpbmUgc29tZSBjb25zdGFudHMgZm9y IHRob3NlLgo+Pj4KPj4+IFtNTF0gSSdsbCBsZWF2ZSBpdCB0byBvdGhlciBndXlzIHdoZW4gZG9p bmcgY2xlYW51cHMsIGEgbGl0dGxlIGh1cnJ5IGZvciBvdGhlciBqb2JzIG5vdyAuLi4KPj4+Cj4+ PiBSZWdhcmRzLAo+Pj4gQ2hyaXN0aWFuLgo+Pj4KPj4+PiArICAgICB9Cj4+Pj4gKwo+Pj4+ICsg ICAgIGFtZGdwdV9yaW5nX3dyaXRlKHJpbmcsIFBBQ0tFVDMoUEFDS0VUM19DT05URVhUX0NPTlRS T0wsIDEpKTsKPj4+PiArICAgICBhbWRncHVfcmluZ193cml0ZShyaW5nLCBkdzIpOwo+Pj4+ICsg ICAgIGFtZGdwdV9yaW5nX3dyaXRlKHJpbmcsIDApOwo+Pj4+ICt9Cj4+Pj4gKwo+Pj4+ICAgIC8q Kgo+Pj4+ICAgICAqIGdmeF92N18wX3JpbmdfdGVzdF9pYiAtIGJhc2ljIHJpbmcgSUIgdGVzdAo+ Pj4+ICAgICAqCj4+Pj4gQEAgLTQ5MjksNiArNDk0OCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg YW1kZ3B1X3JpbmdfZnVuY3MgZ2Z4X3Y3XzBfcmluZ19mdW5jc19nZnggPSB7Cj4+Pj4gICAgICAg IC50ZXN0X2liID0gZ2Z4X3Y3XzBfcmluZ190ZXN0X2liLAo+Pj4+ICAgICAgICAuaW5zZXJ0X25v cCA9IGFtZGdwdV9yaW5nX2luc2VydF9ub3AsCj4+Pj4gICAgICAgIC5wYWRfaWIgPSBhbWRncHVf cmluZ19nZW5lcmljX3BhZF9pYiwKPj4+PiArICAgICAuZW1pdF9jbnR4Y250bCA9IGdmeF92N19y aW5nX2VtaXRfY250eGNudGwsCj4+Pj4gICAgfTsKPj4+Pgo+Pj4+ICAgIHN0YXRpYyBjb25zdCBz dHJ1Y3QgYW1kZ3B1X3JpbmdfZnVuY3MgZ2Z4X3Y3XzBfcmluZ19mdW5jc19jb21wdXRlCj4+Pj4g PSB7IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhfdjhfMC5jCj4+ Pj4gYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhfdjhfMC5jCj4+Pj4gaW5kZXggOGJh OGU0Mi4uNzNmNmZmYSAxMDA2NDQKPj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9nZnhfdjhfMC5jCj4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ2Z4X3Y4 XzAuYwo+Pj4+IEBAIC02MDg1LDYgKzYwODUsMzUgQEAgc3RhdGljIHZvaWQgZ2Z4X3Y4X3Jpbmdf ZW1pdF9zYihzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcpCj4+Pj4gICAgICAgIGFtZGdwdV9yaW5n X3dyaXRlKHJpbmcsIDApOwo+Pj4+ICAgIH0KPj4+Pgo+Pj4+ICtzdGF0aWMgdm9pZCBnZnhfdjhf cmluZ19lbWl0X2NudHhjbnRsKHN0cnVjdCBhbWRncHVfcmluZyAqcmluZywKPj4+PiArdWludDMy X3QgZmxhZ3MpIHsKPj4+PiArICAgICB1aW50MzJfdCBkdzIgPSAwOwo+Pj4+ICsKPj4+PiArICAg ICBkdzIgfD0gMHg4MDAwMDAwMDsgLyogc2V0IGxvYWRfZW5hYmxlIG90aGVyd2lzZSB0aGlzIHBh Y2thZ2UgaXMganVzdCBOT1BzICovCj4+Pj4gKyAgICAgaWYgKGZsYWdzICYgSEFWRV9DVFhfU1dJ VENIKSB7Cj4+Pj4gKyAgICAgICAgICAgICAvKiBzZXQgbG9hZF9nbG9iYWxfY29uZmlnICYgbG9h ZF9nbG9iYWxfdWNvbmZpZyAqLwo+Pj4+ICsgICAgICAgICAgICAgZHcyIHw9IDB4ODAwMTsKPj4+ PiArICAgICAgICAgICAgIC8qIHNldCBsb2FkX2NzX3NoX3JlZ3MgKi8KPj4+PiArICAgICAgICAg ICAgIGR3MiB8PSAweDAxMDAwMDAwOwo+Pj4+ICsgICAgICAgICAgICAgLyogc2V0IGxvYWRfcGVy X2NvbnRleHRfc3RhdGUgJiBsb2FkX2dmeF9zaF9yZWdzIGZvciBHRlggKi8KPj4+PiArICAgICAg ICAgICAgIGR3MiB8PSAweDEwMDAyOwo+Pj4+ICsKPj4+PiArICAgICAgICAgICAgIC8qIHNldCBs b2FkX2NlX3JhbSBpZiBwcmVhbWJsZSBwcmVzZW50ZWQgKi8KPj4+PiArICAgICAgICAgICAgIGlm IChQUkVBTUJMRV9JQl9QUkVTRU5UICYgZmxhZ3MpCj4+Pj4gKyAgICAgICAgICAgICAgICAgICAg IGR3MiB8PSAweDEwMDAwMDAwOwo+Pj4+ICsgICAgIH0gZWxzZSB7Cj4+Pj4gKyAgICAgICAgICAg ICAvKiBzdGlsbCBsb2FkX2NlX3JhbSBpZiB0aGlzIGlzIHRoZSBmaXJzdCB0aW1lIHByZWFtYmxl IHByZXNlbnRlZAo+Pj4+ICsgICAgICAgICAgICAgICogYWx0aG91Z2ggdGhlcmUgaXMgbm8gY29u dGV4dCBzd2l0Y2ggaGFwcGVucy4KPj4+PiArICAgICAgICAgICAgICAqLwo+Pj4+ICsgICAgICAg ICAgICAgaWYgKFBSRUFNQkxFX0lCX1BSRVNFTlRfRklSU1QgJiBmbGFncykKPj4+PiArICAgICAg ICAgICAgICAgICAgICAgZHcyIHw9IDB4MTAwMDAwMDA7Cj4+Pj4gKyAgICAgfQo+Pj4+ICsKPj4+ PiArICAgICBhbWRncHVfcmluZ193cml0ZShyaW5nLCBQQUNLRVQzKFBBQ0tFVDNfQ09OVEVYVF9D T05UUk9MLCAxKSk7Cj4+Pj4gKyAgICAgYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywgZHcyKTsKPj4+ PiArICAgICBhbWRncHVfcmluZ193cml0ZShyaW5nLCAwKTsKPj4+PiArfQo+Pj4+ICsKPj4+PiAg ICBzdGF0aWMgdm9pZCBnZnhfdjhfMF9zZXRfZ2Z4X2VvcF9pbnRlcnJ1cHRfc3RhdGUoc3RydWN0 IGFtZGdwdV9kZXZpY2UgKmFkZXYsCj4+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgZW51bSBhbWRncHVfaW50ZXJydXB0X3N0YXRlIHN0YXRlKQo+Pj4+ ICAgIHsKPj4+PiBAQCAtNjI2Nyw2ICs2Mjk2LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBhbWRn cHVfcmluZ19mdW5jcyBnZnhfdjhfMF9yaW5nX2Z1bmNzX2dmeCA9IHsKPj4+PiAgICAgICAgLmlu c2VydF9ub3AgPSBhbWRncHVfcmluZ19pbnNlcnRfbm9wLAo+Pj4+ICAgICAgICAucGFkX2liID0g YW1kZ3B1X3JpbmdfZ2VuZXJpY19wYWRfaWIsCj4+Pj4gICAgICAgIC5lbWl0X3N3aXRjaF9idWZm ZXIgPSBnZnhfdjhfcmluZ19lbWl0X3NiLAo+Pj4+ICsgICAgIC5lbWl0X2NudHhjbnRsID0gZ2Z4 X3Y4X3JpbmdfZW1pdF9jbnR4Y250bCwKPj4+PiAgICB9Owo+Pj4+Cj4+Pj4gICAgc3RhdGljIGNv bnN0IHN0cnVjdCBhbWRncHVfcmluZ19mdW5jcyBnZnhfdjhfMF9yaW5nX2Z1bmNzX2NvbXB1dGUK Pj4+PiA9IHsKPj4+Cj4+PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwo+Pj4gYW1kLWdmeCBtYWlsaW5nIGxpc3QKPj4+IGFtZC1nZnhAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCj4+PiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2FtZC1nZngKPj4+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCj4+PiBhbWQtZ2Z4IG1haWxpbmcgbGlzdAo+Pj4gYW1kLWdmeEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKPj4+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vYW1kLWdmeAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCj4gYW1kLWdmeCBtYWlsaW5nIGxpc3QKPiBhbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9y Zwo+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vYW1kLWdm eAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmFtZC1n ZnggbWFpbGluZyBsaXN0CmFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vYW1kLWdmeAo=