From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?Q?Christian_K=c3=b6nig?= Subject: Re: [PATCH 1/5] drm/amdgpu:keep ctx alive till all job finished Date: Wed, 3 May 2017 19:40:46 +0200 Message-ID: References: <1493623371-32614-1-git-send-email-Monk.Liu@amd.com> <1493623371-32614-2-git-send-email-Monk.Liu@amd.com> <059fe927-90c8-0cf3-336c-56818d9277f0@vodafone.de> <200bd9aa-1374-69be-c155-689013ba49c5@vodafone.de> <44d1cc5a-a064-322a-15a6-08015378311c@vodafone.de> 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" , "amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" U2VlIHR0bV9ib19yZWxlYXNlKCksIHRoYXQgb25lIGlzIGNhbGxlZCB3aGVuIHRoZSBsYXN0IHJl ZmVyZW5jZSB0byB0aGUgCkJPIGdvZXMgYXdheS4KCkl0IGlzIHRoZSBmaXJzdCBzdGFnZSBvZiBj bGVhbnVwIGFuZCByZW1vdmVzIHRoZSBWTUEgbWFwcGluZyAobm8gbW9yZSAKQ1BVIGFjY2VzcyB0 byB0aGUgQk8pLCBhbmQgY2FsbHMgdHRtX2JvX2NsZWFudXBfcmVmc19vcl9xdWV1ZSgpLgoKdHRt X2JvX2NsZWFudXBfcmVmc19vcl9xdWV1ZSgpIHRoZW4gY2hlY2tzIGlmIHRoZSBCTyBpcyBpZGxl LCBlLmcuIGlmIGl0IApkb2Vzbid0IGhhdmUgYW55IGZlbmNlIGFueSBtb3JlIGFzc2lnbmVkIHRv IGl0LgoKSWYgaXQgc3RpbGwgaGFzIGZlbmNlcyBvbiBpdCB0aGUgQk8gaXMgcXVldWUgdG8gdGhl IGRlbGF5ZWQgZGVzdHJ1Y3Rpb24gCnF1ZXVlLgoKUmVnYXJkcywKQ2hyaXN0aWFuLgoKQW0gMDMu MDUuMjAxNyB1bSAxNzoxNyBzY2hyaWViIExpdSwgTW9uazoKPj4gTmVlZCB0byBkaWcgdGhyb3Vn aCB0aGUgVFRNIGNvZGUgYXMgd2VsbCB0byBmaW5kIHRoYXQsIGJ1dCBpdCBpcyBzb21ldGhpbmcg dmVyeSBiYXNpYyBvZiBUVE0gc28gSSdtIHByZXR0eSBzdXJlIGl0IHNob3VsZCB3b3JrIGFzIGV4 cGVjdGVkLgo+IFRoYXQncyB3aGF0IG1ha2UgbWUgZmVlbCBhIGxpdHRsZSBjb25mdXNlZDAsCj4g aWYgYSBCTyBpcyBkZXN0cm95ZWQsIHRoZW4gaG93IFRUTSBzeXN0ZW0gdHJhY2sgaXRzIHJlc3Yg cG9pbnRlciAsIHdpdGhvdXQgdGhpcyByZXN2IHBvaW50ZXIsIGhvdyBUVE0gd2FpdCBvbiB0aGUg ZmVuY2UgaG9va2VkIG9uIHRoaXMgcmVzdiBiZWZvcmUgcmV1c2luZyB0aGUgbWVtb3J5IG9mIGl0 Cj4KPgo+IEJSIE1vbmsKPgo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tCj4gRnJvbTogQ2hy aXN0aWFuIEvDtm5pZyBbbWFpbHRvOmRlYXRoc2ltcGxlQHZvZGFmb25lLmRlXQo+IFNlbnQ6IFdl ZG5lc2RheSwgTWF5IDMsIDIwMTcgMTA6MDUgUE0KPiBUbzogTGl1LCBNb25rIDxNb25rLkxpdUBh bWQuY29tPjsgYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBTdWJqZWN0OiBSZTogW1BB VENIIDEvNV0gZHJtL2FtZGdwdTprZWVwIGN0eCBhbGl2ZSB0aWxsIGFsbCBqb2IgZmluaXNoZWQK Pgo+PiBJZiBrcmVmIG9mIG9uZSBCTyBnbyBkb3ducyB0byAwLCB0aGlzIEJvIHdpbGwgYmUgZGVz dHJveQo+PiAoYW1kZ3B1X2JvX2Rlc3RvcnkpLCBJIGRvbid0IHNlZSB3aGF0IGNvZGUgdG8gcHJl dmVudCB0aGlzIGRlc3Ryb3kgaW52b2tlZCBpZiB0aGUgcmVzdiBvZiB0aGlzIEJPIFN0aWxsIGhh dmUgZmVuY2Ugbm90IHNpZ25hbGluZywgY2FuIHlvdSBzaGFyZSB0aGlzIHRyaWNrcyA/Cj4gSUlS QyB0aGUgZGVzdHJveSBpdHNlbGYgaXMgbm90IHByZXZlbnRlZCwgYnV0IFRUTSBwcmV2ZW50cyBy ZXVzaW5nIG9mIHRoZSBtZW1vcnkgaW4gcXVlc3Rpb24gdW50aWwgdGhlIGxhc3QgZmVuY2UgaXMg c2lnbmFsZWQuCj4KPiBOZWVkIHRvIGRpZyB0aHJvdWdoIHRoZSBUVE0gY29kZSBhcyB3ZWxsIHRv IGZpbmQgdGhhdCwgYnV0IGl0IGlzIHNvbWV0aGluZyB2ZXJ5IGJhc2ljIG9mIFRUTSBzbyBJJ20g cHJldHR5IHN1cmUgaXQgc2hvdWxkIHdvcmsgYXMgZXhwZWN0ZWQuCj4KPj4gQmVjYXVzZSBJIGZv dW5kIGlmIGEgam9iIGhhbmcsIGFuZCBhZnRlciBteSBjb2RlIGtpY2sgaXQgb3V0IGZyb20gc2No ZWR1bGVyLCAoSSBtYW51YWxseSBjYWxsIGFtZF9zY2hlZF9mZW5jZV9maW5pc2hlZCgpIG9uIHRo ZSBzY2hlZF9mZW5jZSBvZiB0aGUgdGltZWRvdXQgam9iICksIHRoZSBwYWdlX2RpciB3b24ndCBn ZXQgZGVzdHJveSAuLi4uCj4gUHVoLCBnb29kIHF1ZXN0aW9uLiBTb3VuZHMgbGlrZSB3ZSBzb21l aG93IG1lc3NlZCB1cCB0aGUgcmVmZXJlbmNlIGNvdW50IG9yIGEgZmVuY2UgaXNuJ3Qgc2lnbmFs ZWQgYXMgaXQgc2hvdWxkLgo+Cj4+IEJ1dCB0aGUgQk8gY3JlYXRlZCB0aHJvdWdoIEdFTSBieSBh cHAgY2FuIGJlIGRlc3Ryb3kgYXMgZXhwZWN0ZWQKPiBNaG0sIHRoZXJlIGlzbid0IG11Y2ggZGlm ZmVyZW5jZSBiZXR3ZWVuIHRoZSB0d28gcmVnYXJkaW5nIHRoaXMuCj4KPiBObyBpZGVhIG9mIGhh bmQgd2hhdCB0aGF0IGNvdWxkIGJlLCBJIHdvdWxkIG5lZWQgdG8gcmVjcmVhdGUgdGhlIGlzc3Vl IGFuZCB0YWtlIGEgbG9vayBteXNlbGYuCj4KPiBSZWdhcmRzLAo+IENocmlzdGlhbi4KPgo+IEFt IDAzLjA1LjIwMTcgdW0gMTU6NDIgc2NocmllYiBMaXUsIE1vbms6Cj4+IFRoYXQgc2hvdWxkIGJl IHdheSB5b3Ugc2FpZCAsIGJ1dCBJIGRpZG4ndCBzZWUgdGhlIGxvZ2ljIHRvIGFzc3VyZQo+PiB0 aGF0LAo+Pgo+PiBJZiBrcmVmIG9mIG9uZSBCTyBnbyBkb3ducyB0byAwLCB0aGlzIEJvIHdpbGwg YmUgZGVzdHJveQo+PiAoYW1kZ3B1X2JvX2Rlc3RvcnkpLCBJIGRvbid0IHNlZSB3aGF0IGNvZGUg dG8gcHJldmVudCB0aGlzIGRlc3Ryb3kgaW52b2tlZCBpZiB0aGUgcmVzdiBvZiB0aGlzIEJPIFN0 aWxsIGhhdmUgZmVuY2Ugbm90IHNpZ25hbGluZywgY2FuIHlvdSBzaGFyZSB0aGlzIHRyaWNrcyA/ Cj4+Cj4+IEJlY2F1c2UgSSBmb3VuZCBpZiBhIGpvYiBoYW5nLCBhbmQgYWZ0ZXIgbXkgY29kZSBr aWNrIGl0IG91dCBmcm9tIHNjaGVkdWxlciwgKEkgbWFudWFsbHkgY2FsbCBhbWRfc2NoZWRfZmVu Y2VfZmluaXNoZWQoKSBvbiB0aGUgc2NoZWRfZmVuY2Ugb2YgdGhlIHRpbWVkb3V0IGpvYiApLCB0 aGUgcGFnZV9kaXIgd29uJ3QgZ2V0IGRlc3Ryb3kgLi4uLgo+Pgo+PiBCdXQgdGhlIEJPIGNyZWF0 ZWQgdGhyb3VnaCBHRU0gYnkgYXBwIGNhbiBiZSBkZXN0cm95IGFzIGV4cGVjdGVkCj4+Cj4+IEJS IE1vbmsKPj4KPj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0KPj4gRnJvbTogQ2hyaXN0aWFu IEvDtm5pZyBbbWFpbHRvOmRlYXRoc2ltcGxlQHZvZGFmb25lLmRlXQo+PiBTZW50OiBXZWRuZXNk YXksIE1heSAwMywgMjAxNyA5OjM0IFBNCj4+IFRvOiBMaXUsIE1vbmsgPE1vbmsuTGl1QGFtZC5j b20+OyBhbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+PiBTdWJqZWN0OiBSZTogW1BBVENI IDEvNV0gZHJtL2FtZGdwdTprZWVwIGN0eCBhbGl2ZSB0aWxsIGFsbCBqb2IKPj4gZmluaXNoZWQK Pj4KPj4+IENhbiB3ZSBndWFyYW50ZWUgdGhlIHBkZS9wdGUgYW5kIFBSVC9DU0EgYXJlIGFsbCBh bGl2ZSAoQk8sIG1hcHBpbmdzKSB3aGVuIHJlc3VibWl0dGluZyB0aGUgdGltZW91dCBqb2IgKGFz c3VtZSB0aGlzIHRpbWUgb3V0IGpvYiBjYW4gc2lnbmFsIGFmdGVyIHRoZSByZXN1Ym1pdCk/Cj4+ IFllcywgdGhhdCdzIHdoeSB3ZSBhZGQgYWxsIGZlbmNlcyBvZiBlYWNoIGNvbW1hbmQgc3VibWlz c2lvbiB0byB0aGUgUEQvUFQgQk9zLgo+Pgo+PiBSZWdhcmRzLAo+PiBDaHJpc3RpYW4uCj4+Cj4+ IEFtIDAzLjA1LjIwMTcgdW0gMTU6MzEgc2NocmllYiBMaXUsIE1vbms6Cj4+PiBFdmVuIHdlIHJl bGVhc2UgdGhlIGN0eCBhcyB1c3VhbCB3YXksIENhbiB3ZSBndWFyYW50ZWUgdGhlIHBkZS9wdGUK Pj4+IGFuZCBQUlQvQ1NBIGFyZSBhbGwgYWxpdmUgKEJPLCBtYXBwaW5ncykgd2hlbiByZXN1Ym1p dHRpbmcgdGhlIHRpbWVvdXQgam9iIChhc3N1bWUgdGhpcyB0aW1lIG91dCBqb2IgY2FuIHNpZ25h bCBhZnRlciB0aGUgcmVzdWJtaXQpPwo+Pj4KPj4+IFlvdSBrbm93IEFwcCBjYW4gc3VibWl0IGEg Y29tbWFuZCBhIHJlbGVhc2UgYWxsIEJPIGFuZCBmcmVlX2N0eCwKPj4+IGNsb3NlIEZEL1ZNLCBh bmQgZXhpdCB2ZXJ5IHNvb24sIGl0IGp1c3QgZG9lc24ndCB3YWl0IGZvciB0aGUgIGZlbmNlCj4+ PiBzaWduYWwKPj4+Cj4+PiBCUiBNb25rCj4+Pgo+Pj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0t LS0KPj4+IEZyb206IENocmlzdGlhbiBLw7ZuaWcgW21haWx0bzpkZWF0aHNpbXBsZUB2b2RhZm9u ZS5kZV0KPj4+IFNlbnQ6IFdlZG5lc2RheSwgTWF5IDAzLCAyMDE3IDg6NTAgUE0KPj4+IFRvOiBM aXUsIE1vbmsgPE1vbmsuTGl1QGFtZC5jb20+OyBhbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9y Zwo+Pj4gU3ViamVjdDogUmU6IFtQQVRDSCAxLzVdIGRybS9hbWRncHU6a2VlcCBjdHggYWxpdmUg dGlsbCBhbGwgam9iCj4+PiBmaW5pc2hlZAo+Pj4KPj4+PiBhbmQgdGhlIGlyb25pYyB0aGluZyBp cyBJIHdhbnQgdG8gYWxpdmUgYXMgd2VsbCAoZXNwZWNpYWxseSBDU0EsCj4+Pj4gUFRSKQo+Pj4g WWVzLCBhbmQgZXhhY3RseSB0aGF0IGlzIHRoZSBkYW5nZXIgSSB3YXMgdGFsa2luZyBhYm91dC4g V2UgbWVzc2VkIHVwIHRoZSB0ZWFyIGRvd24gb2RlciB3aXRoIHRoYXQgYW5kIHRyeSB0byBhY2Nl c3MgcmVzb3VyY2VzIHdoaWNoIGFyZSBhbHJlYWR5IGZyZWVkIHdoZW4gdGhlIGpvYiBpcyBub3cg c2NoZWR1bGVkLgo+Pj4KPj4+IEkgd291bGQgcmF0aGVyIHNheSB3ZSBzaG91bGQgZ2V0IGNvbXBs ZXRlbHkgcmlkIG9mIHRoZSBjdHgga3JlZiBjb3VudGluZywgdGhhdCB3YXMgYSByYXRoZXIgYmFk IGlkZWEgaW4gdGhlIGZpcnN0IHBsYWNlLgo+Pj4KPj4+IFJlZ2FyZHMsCj4+PiBDaHJpc3RpYW4u Cj4+Pgo+Pj4gQW0gMDMuMDUuMjAxNyB1bSAxMTozNiBzY2hyaWViIExpdSwgTW9uazoKPj4+PiBT aW5jZSBJIGdldCBvbmUgbW9yZSBrcmVmIGZvciBjdHggd2hlbiBjcmVhdGluZyBqb2JzLCBzbyBh bWRncHVfY3R4X21ncl9maW5pKCZmcHJpdi0+Y3R4X21ncikgaGVyZSB3b24ndCBhY3R1YWxseSB3 YWl0aW5nIC4uLiBiZWNhdXNlIHRoZSAiIGFtZGdwdV9jdHhfZG9fcmVsZWFzZSIKPj4+PiBXb24n dCBnb2luZyB0byBydW4gKGtyZWYgPiAwIGJlZm9yZSBhbGwgam9iIHNpZ25hbGVkKS4KPj4+Pgo+ Pj4+IFRoYXQgd2F5IGFtZGdwdV9kcml2ZXJfcG9zdGNsb3NlX2ttcygpIGNhbiBjb250aW51ZSBn byBvbiAsIFNvCj4+Pj4gYWN0dWFsbHkgIiBVVkQgYW5kIFZDRSBoYW5kbGUsIHRoZSBQUlQgVkFz LCB0aGUgQ1NBIGFuZCBldmVuIHRoZQo+Pj4+IHdob2xlIFZNIHN0cnVjdHVyZSIgd29uJ3QgYmUg a2VwdCBhbGl2ZSAsIGFuZCB0aGUgaXJvbmljIHRoaW5nIGlzIEkKPj4+PiB3YW50IHRvIGFsaXZl IGFzIHdlbGwgKGVzcGVjaWFsbHkgQ1NBLCBQVFIpCj4+Pj4KPj4+Pgo+Pj4+IEJSIE1vbmsKPj4+ Pgo+Pj4+Cj4+Pj4KPj4+Pgo+Pj4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tCj4+Pj4gRnJv bTogQ2hyaXN0aWFuIEvDtm5pZyBbbWFpbHRvOmRlYXRoc2ltcGxlQHZvZGFmb25lLmRlXQo+Pj4+ IFNlbnQ6IFdlZG5lc2RheSwgTWF5IDAzLCAyMDE3IDU6MTkgUE0KPj4+PiBUbzogTGl1LCBNb25r IDxNb25rLkxpdUBhbWQuY29tPjsgYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPj4+PiBT dWJqZWN0OiBSZTogW1BBVENIIDEvNV0gZHJtL2FtZGdwdTprZWVwIGN0eCBhbGl2ZSB0aWxsIGFs bCBqb2IKPj4+PiBmaW5pc2hlZAo+Pj4+Cj4+Pj4+PiBJJ20gYWZyYWlkIG5vdDogIENTQSBpcyBn b25lIHdpdGggdGhlIFZNLCBhbmQgVk0gaXMgZ29uZSBhZnRlciBhcHAgY2xvc2Ugb3VyIEZELCBJ IGRvbid0IHNlZSBhbWRncHVfdm1fZmluaSgpIGlzIGRlcGVuZGVkIG9uIGNvbnRleHQgbGl2aW5n IG9yIG5vdCAuLi4KPj4+PiBTZWUgdGhlIHRlYXJkb3duIG9yZGVyIGluIGFtZGdwdV9kcml2ZXJf cG9zdGNsb3NlX2ttcygpOgo+Pj4+PiBhbWRncHVfY3R4X21ncl9maW5pKCZmcHJpdi0+Y3R4X21n cik7Cj4+Pj4+Cj4+Pj4+ICAgICAgICAgICAgIGFtZGdwdV91dmRfZnJlZV9oYW5kbGVzKGFkZXYs IGZpbGVfcHJpdik7Cj4+Pj4+ICAgICAgICAgICAgIGFtZGdwdV92Y2VfZnJlZV9oYW5kbGVzKGFk ZXYsIGZpbGVfcHJpdik7Cj4+Pj4+Cj4+Pj4+ICAgICAgICAgICAgIGFtZGdwdV92bV9ib19ybXYo YWRldiwgZnByaXYtPnBydF92YSk7Cj4+Pj4+Cj4+Pj4+ICAgICAgICAgICAgIGlmIChhbWRncHVf c3Jpb3ZfdmYoYWRldikpIHsKPj4+Pj4gICAgICAgICAgICAgICAgICAgICAvKiBUT0RPOiBob3cg dG8gaGFuZGxlIHJlc2VydmUgZmFpbHVyZSAqLwo+Pj4+PiAgICAgICAgICAgICAgICAgICAgIEJV R19PTihhbWRncHVfYm9fcmVzZXJ2ZShhZGV2LT52aXJ0LmNzYV9vYmosIGZhbHNlKSk7Cj4+Pj4+ ICAgICAgICAgICAgICAgICAgICAgYW1kZ3B1X3ZtX2JvX3JtdihhZGV2LCBmcHJpdi0+dm0uY3Nh X2JvX3ZhKTsKPj4+Pj4gICAgICAgICAgICAgICAgICAgICBmcHJpdi0+dm0uY3NhX2JvX3ZhID0g TlVMTDsKPj4+Pj4gICAgICAgICAgICAgICAgICAgICBhbWRncHVfYm9fdW5yZXNlcnZlKGFkZXYt PnZpcnQuY3NhX29iaik7Cj4+Pj4+ICAgICAgICAgICAgIH0KPj4+Pj4KPj4+Pj4gICAgICAgICAg ICAgYW1kZ3B1X3ZtX2ZpbmkoYWRldiwgJmZwcml2LT52bSk7Cj4+Pj4gYW1kZ3B1X2N0eF9tZ3Jf ZmluaSgpIHdhaXRzIGZvciBzY2hlZHVsaW5nIHRvIGZpbmlzaCBhbmQgcmVsZWFzZXMgYWxsIGNv bnRleHRzIG9mIHRoZSBjdXJyZW50IGZkLgo+Pj4+Cj4+Pj4gSWYgd2UgZG9uJ3QgcmVsZWFzZSB0 aGUgY29udGV4dCBoZXJlIGJlY2F1c2Ugc29tZSBqb2JzIGFyZSBzdGlsbCBleGVjdXRlZCB3ZSBu ZWVkIHRvIGtlZXAgdGhlIFVWRCBhbmQgVkNFIGhhbmRsZSwgdGhlIFBSVCBWQXMsIHRoZSBDU0Eg YW5kIGV2ZW4gdGhlIHdob2xlIFZNIHN0cnVjdHVyZSBhbGl2ZS4KPj4+Pgo+Pj4+PiBJJ2xsIHNl ZSBpZiBkbWFfZmVuY2UgY291bGQgc29sdmUgbXkgaXNzdWUsIGJ1dCBJIHdpc2ggeW91IGNhbiBn aXZlCj4+Pj4+IG1lIHlvdXIgZGV0YWlsIGlkZWEKPj4+PiBQbGVhc2UgdGFrZSBhIGxvb2sgYXQg RGF2aWQncyBpZGVhIG9mIHVzaW5nIHRoZSBmZW5jZV9jb250ZXh0IHRvIGZpbmQgd2hpY2ggam9i cyBhbmQgZW50aXR5IHRvIHNraXAsIHRoYXQgaXMgZXZlbiBiZXR0ZXIgdGhhbiBtaW5lIGFib3V0 IHRoZSBmZW5jZSBzdGF0dXMgYW5kIHNob3VsZCBiZSB0cml2aWFsIHRvIGltcGxlbWVudCBiZWNh dXNlIGFsbCB0aGUgZGF0YSBpcyBhbHJlYWR5IHByZXNlbnQgd2UganVzdCBuZWVkIHRvIHVzZSBp dC4KPj4+Pgo+Pj4+IFJlZ2FyZHMsCj4+Pj4gQ2hyaXN0aWFuLgo+Pj4+Cj4+Pj4gQW0gMDMuMDUu MjAxNyB1bSAxMTowOCBzY2hyaWViIExpdSwgTW9uazoKPj4+Pj4gMSxNeSBpZGVhIGlzIHRoYXQg dXNlcnNwYWNlIHNob3VsZCByYXRoZXIgZ2F0aGVyIHRoZSBmZWVkYmFjayBkdXJpbmcgdGhlIG5l eHQgY29tbWFuZCBzdWJtaXNzaW9uLiBUaGlzIGhhcyB0aGUgYWR2YW50YWdlIHRoYXQgeW91IGRv bid0IG5lZWQgdG8ga2VlcCB1c2Vyc3BhY2UgYWxpdmUgdGlsbCBhbGwgam9icyBhcmUgZG9uZS4K Pj4+Pj4KPj4+Pj4+IE5vLCB3ZSBuZWVkIHRvIGNsZWFuIHRoZSBodyByaW5nIChjaGVycnktcGlj ayBvdXQgZ3VpbHR5IGVudGl0aWVzJyBqb2IgaW4gYWxsIHJpbmdzKSBhZnRlciBncHUgcmVzZXQs IGFuZCB3ZSBuZWVkIGZhY2tseSBzaWduYWwgYWxsIHNjaGVkX2ZlbmNlIGluIHRoZSBndWl0eSBl bnRpdHkgYXMgd2VsbCwgYW5kIHdlIG5lZWQgbWFyayBjb250ZXh0IGFzIGd1aWx0eSBzbyB0aGUg bmV4dCBJT0NUTCBvbiBpdCB3aWxsIHJldHVybiAtRU5PREVWLgo+Pj4+Pj4gSSBkb24ndCB1bmRl cnN0YW5kIGhvdyB5b3VyIGlkZWEgY2FuIHNvbHZlIG15IHJlcXVlc3QgLi4uCj4+Pj4+IDIsWW91 IG5lZWQgdG8ga2VlcCBxdWl0ZSBhIGJ1bmNoIG9mIHN0dWZmIGFsaXZlIChWTSwgQ1NBKSB3aGVu IHlvdSBkb24ndCB0ZWFyIGRvd24gdGhlIGN0eCBpbW1lZGlhdGVseS4KPj4+Pj4KPj4+Pj4+IEkn bSBhZnJhaWQgbm90OiAgQ1NBIGlzIGdvbmUgd2l0aCB0aGUgVk0sIGFuZCBWTSBpcyBnb25lIGFm dGVyIGFwcCBjbG9zZSBvdXIgRkQsIEkgZG9uJ3Qgc2VlIGFtZGdwdV92bV9maW5pKCkgaXMgZGVw ZW5kZWQgb24gY29udGV4dCBsaXZpbmcgb3Igbm90IC4uLgo+Pj4+PiAzLCBzdHJ1Y3QgZmVuY2Ug d2FzIHJlbmFtZWQgdG8gc3RydWN0IGRtYV9mZW5jZSBvbiBuZXdlciBrZXJuZWxzIGFuZCBhIHN0 YXR1cyBmaWVsZCBhZGRlZCB0byBleGFjdGx5IHRoaXMgcHVycG9zZS4KPj4+Pj4KPj4+Pj4gVGhl IEludGVsIGd1eXMgZGlkIHRoaXMgYmVjYXVzZSB0aGV5IHJhbiBpbnRvIHRoZSBleGFjdGx5IHNh bWUgcHJvYmxlbS4KPj4+Pj4KPj4+Pj4+IEknbGwgc2VlIGlmIGRtYV9mZW5jZSBjb3VsZCBzb2x2 ZSBteSBpc3N1ZSwgYnV0IEkgd2lzaCB5b3UgY2FuCj4+Pj4+PiBnaXZlIG1lIHlvdXIgZGV0YWls IGlkZWEKPj4+Pj4gQlIgTW9uawo+Pj4+Pgo+Pj4+Pgo+Pj4+Pgo+Pj4+PiAtLS0tLU9yaWdpbmFs IE1lc3NhZ2UtLS0tLQo+Pj4+PiBGcm9tOiBDaHJpc3RpYW4gS8O2bmlnIFttYWlsdG86ZGVhdGhz aW1wbGVAdm9kYWZvbmUuZGVdCj4+Pj4+IFNlbnQ6IFdlZG5lc2RheSwgTWF5IDAzLCAyMDE3IDQ6 NTkgUE0KPj4+Pj4gVG86IExpdSwgTW9uayA8TW9uay5MaXVAYW1kLmNvbT47IGFtZC1nZnhAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCj4+Pj4+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggMS81XSBkcm0vYW1k Z3B1OmtlZXAgY3R4IGFsaXZlIHRpbGwgYWxsIGpvYgo+Pj4+PiBmaW5pc2hlZAo+Pj4+Pgo+Pj4+ Pj4gMSwgVGhpcyBpcyBuZWNlc3Nhcnkgb3RoZXJ3aXNlIGhvdyBjYW4gSSBhY2Nlc3MgZW50aXR5 IHBvaW50ZXIKPj4+Pj4+IGFmdGVyIGEgam9iIHRpbWVkb3V0Cj4+Pj4+IE5vIHRoYXQgaXNuJ3Qg bmVjZXNzYXJ5Lgo+Pj4+Pgo+Pj4+PiBUaGUgcHJvYmxlbSB3aXRoIHlvdXIgaWRlYSBpcyB0aGF0 IHlvdSB3YW50IHRvIGFjdGl2ZWx5IHB1c2ggdGhlCj4+Pj4+IGZlZWRiYWNrL3N0YXR1cyBmcm9t IHRoZSBqb2IgZXhlY3V0aW9uIGJhY2sgdG8gdXNlcnNwYWNlIHdoZW4gYW4KPj4+Pj4gZXJyb3IK Pj4+Pj4gKHRpbWVvdXQpIGhhcHBlbnMuCj4+Pj4+Cj4+Pj4+IE15IGlkZWEgaXMgdGhhdCB1c2Vy c3BhY2Ugc2hvdWxkIHJhdGhlciBnYXRoZXIgdGhlIGZlZWRiYWNrIGR1cmluZyB0aGUgbmV4dCBj b21tYW5kIHN1Ym1pc3Npb24uIFRoaXMgaGFzIHRoZSBhZHZhbnRhZ2UgdGhhdCB5b3UgZG9uJ3Qg bmVlZCB0byBrZWVwIHVzZXJzcGFjZSBhbGl2ZSB0aWxsIGFsbCBqb2JzIGFyZSBkb25lLgo+Pj4+ Pgo+Pj4+Pj4gICAgICAgICwgYW5kIHdoeSBpdCBpcyBkYW5nZXJvdXMgPwo+Pj4+PiBZb3UgbmVl ZCB0byBrZWVwIHF1aXRlIGEgYnVuY2ggb2Ygc3R1ZmYgYWxpdmUgKFZNLCBDU0EpIHdoZW4geW91 IGRvbid0IHRlYXIgZG93biB0aGUgY3R4IGltbWVkaWF0ZWx5Lgo+Pj4+Pgo+Pj4+PiBXZSBjb3Vs ZCBzcGxpdCBjdHggdGVhciBkb3duIGludG8gZnJlZWluZyB0aGUgcmVzb3VyY2VzIGFuZCBmcmVl aW5nIHRoZSBzdHJ1Y3R1cmUsIGJ1dCBJIHRoaW5rIGp1c3QgZ2F0aGVyaW5nIHRoZSBpbmZvcm1h dGlvbiBuZWVkZWQgb24gQ1MgaXMgZWFzaWVyIHRvIGRvLgo+Pj4+Pgo+Pj4+Pj4gMiwgd2hhdCdz IHRoZSBzdGF0dXMgZmllbGQgaW4gdGhlIGZlbmNlcyB5b3Ugd2VyZSByZWZlcnJpbmcgdG8gPyBJ Cj4+Pj4+PiBuZWVkIHRvIGp1ZGdlIGlmIGl0IGNvdWxkIHNhdGlzZnkgbXkgcmVxdWlyZW1lbnQK Pj4+Pj4gc3RydWN0IGZlbmNlIHdhcyByZW5hbWVkIHRvIHN0cnVjdCBkbWFfZmVuY2Ugb24gbmV3 ZXIga2VybmVscyBhbmQgYSBzdGF0dXMgZmllbGQgYWRkZWQgdG8gZXhhY3RseSB0aGlzIHB1cnBv c2UuCj4+Pj4+Cj4+Pj4+IFRoZSBJbnRlbCBndXlzIGRpZCB0aGlzIGJlY2F1c2UgdGhleSByYW4g aW50byB0aGUgZXhhY3RseSBzYW1lIHByb2JsZW0uCj4+Pj4+Cj4+Pj4+IFJlZ2FyZHMsCj4+Pj4+ IENocmlzdGlhbi4KPj4+Pj4KPj4+Pj4gQW0gMDMuMDUuMjAxNyB1bSAwNTozMCBzY2hyaWViIExp dSwgTW9uazoKPj4+Pj4+IDEsIFRoaXMgaXMgbmVjZXNzYXJ5IG90aGVyd2lzZSBob3cgY2FuIEkg YWNjZXNzIGVudGl0eSBwb2ludGVyIGFmdGVyIGEgam9iIHRpbWVkb3V0ICwgYW5kIHdoeSBpdCBp cyBkYW5nZXJvdXMgPwo+Pj4+Pj4gMiwgd2hhdCdzIHRoZSBzdGF0dXMgZmllbGQgaW4gdGhlIGZl bmNlcyB5b3Ugd2VyZSByZWZlcnJpbmcgdG8gPyBJCj4+Pj4+PiBuZWVkIHRvIGp1ZGdlIGlmIGl0 IGNvdWxkIHNhdGlzZnkgbXkgcmVxdWlyZW1lbnQKPj4+Pj4+Cj4+Pj4+Pgo+Pj4+Pj4KPj4+Pj4+ IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tCj4+Pj4+PiBGcm9tOiBDaHJpc3RpYW4gS8O2bmln IFttYWlsdG86ZGVhdGhzaW1wbGVAdm9kYWZvbmUuZGVdCj4+Pj4+PiBTZW50OiBNb25kYXksIE1h eSAwMSwgMjAxNyAxMDo0OCBQTQo+Pj4+Pj4gVG86IExpdSwgTW9uayA8TW9uay5MaXVAYW1kLmNv bT47IGFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4+Pj4+PiBTdWJqZWN0OiBSZTogW1BB VENIIDEvNV0gZHJtL2FtZGdwdTprZWVwIGN0eCBhbGl2ZSB0aWxsIGFsbCBqb2IKPj4+Pj4+IGZp bmlzaGVkCj4+Pj4+Pgo+Pj4+Pj4gQW0gMDEuMDUuMjAxNyB1bSAwOToyMiBzY2hyaWViIE1vbmsg TGl1Ogo+Pj4+Pj4+IGZvciBURFIgZ3VpbHR5IGNvbnRleHQgZmVhdHVyZSwgd2UgbmVlZCBhY2Nl c3MgY3R4L3NfZW50aXR5IGZpZWxkCj4+Pj4+Pj4gbWVtYmVyIHRocm91Z2ggc2NoZWQgam9iIHBv aW50ZXIsc28gY3R4IG11c3Qga2VlcCBhbGl2ZSB0aWxsIGFsbAo+Pj4+Pj4+IGpvYiBmcm9tIGl0 IHNpZ25hbGVkLgo+Pj4+Pj4gTkFLLCB0aGF0IGlzIHVubmVjZXNzYXJ5IGFuZCBxdWl0ZSBkYW5n ZXJvdXMuCj4+Pj4+Pgo+Pj4+Pj4gSW5zdGVhZCB3ZSBoYXZlIHRoZSBkZXNpZ25lZCBzdGF0dXMg ZmllbGQgaW4gdGhlIGZlbmNlcyB3aGljaCBzaG91bGQgYmUgY2hlY2tlZCBmb3IgdGhhdC4KPj4+ Pj4+Cj4+Pj4+PiBSZWdhcmRzLAo+Pj4+Pj4gQ2hyaXN0aWFuLgo+Pj4+Pj4KPj4+Pj4+PiBDaGFu Z2UtSWQ6IEliODdlOTUwMmY3YTVjOGMwNTRjN2U1Njk1NmQ3ZjdhZDc1OTk4ZTQzCj4+Pj4+Pj4g U2lnbmVkLW9mZi1ieTogTW9uayBMaXUgPE1vbmsuTGl1QGFtZC5jb20+Cj4+Pj4+Pj4gLS0tCj4+ Pj4+Pj4gICAgICAgICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUuaCAgICAgICAg ICAgfCA2ICsrKysrLQo+Pj4+Pj4+ICAgICAgICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv YW1kZ3B1X2NzLmMgICAgICAgIHwgMiArLQo+Pj4+Pj4+ICAgICAgICAgZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvYW1kZ3B1X2N0eC5jICAgICAgIHwgOSArKysrKysrKysKPj4+Pj4+PiAgICAg ICAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9qb2IuYyAgICAgICB8IDkgKysr KysrKy0tCj4+Pj4+Pj4gICAgICAgICBkcml2ZXJzL2dwdS9kcm0vYW1kL3NjaGVkdWxlci9ncHVf c2NoZWR1bGVyLmMgfCA2IC0tLS0tLQo+Pj4+Pj4+ICAgICAgICAgZHJpdmVycy9ncHUvZHJtL2Ft ZC9zY2hlZHVsZXIvZ3B1X3NjaGVkdWxlci5oIHwgMSArCj4+Pj4+Pj4gICAgICAgICA2IGZpbGVz IGNoYW5nZWQsIDIzIGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQo+Pj4+Pj4+Cj4+Pj4+ Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oCj4+Pj4+ Pj4gYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUuaAo+Pj4+Pj4+IGluZGV4IGUz MzAwMDkuLjhlMDMxZDYgMTAwNjQ0Cj4+Pj4+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvYW1kZ3B1LmgKPj4+Pj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9h bWRncHUuaAo+Pj4+Pj4+IEBAIC03NjAsMTAgKzc2MCwxMiBAQCBzdHJ1Y3QgYW1kZ3B1X2liIHsK Pj4+Pj4+PiAgICAgICAgIAl1aW50MzJfdAkJCWZsYWdzOwo+Pj4+Pj4+ICAgICAgICAgfTsKPj4+ Pj4+PiAgICAgICAgIAo+Pj4+Pj4+ICtzdHJ1Y3QgYW1kZ3B1X2N0eDsKPj4+Pj4+PiArCj4+Pj4+ Pj4gICAgICAgICBleHRlcm4gY29uc3Qgc3RydWN0IGFtZF9zY2hlZF9iYWNrZW5kX29wcwo+Pj4+ Pj4+IGFtZGdwdV9zY2hlZF9vcHM7Cj4+Pj4+Pj4gICAgICAgICAKPj4+Pj4+PiAgICAgICAgIGlu dCBhbWRncHVfam9iX2FsbG9jKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCB1bnNpZ25lZCBu dW1faWJzLAo+Pj4+Pj4+IC0JCSAgICAgc3RydWN0IGFtZGdwdV9qb2IgKipqb2IsIHN0cnVjdCBh bWRncHVfdm0gKnZtKTsKPj4+Pj4+PiArCQkgICAgIHN0cnVjdCBhbWRncHVfam9iICoqam9iLCBz dHJ1Y3QgYW1kZ3B1X3ZtICp2bSwgc3RydWN0Cj4+Pj4+Pj4gK2FtZGdwdV9jdHggKmN0eCk7Cj4+ Pj4+Pj4gICAgICAgICBpbnQgYW1kZ3B1X2pvYl9hbGxvY193aXRoX2liKHN0cnVjdCBhbWRncHVf ZGV2aWNlICphZGV2LCB1bnNpZ25lZCBzaXplLAo+Pj4+Pj4+ICAgICAgICAgCQkJICAgICBzdHJ1 Y3QgYW1kZ3B1X2pvYiAqKmpvYik7Cj4+Pj4+Pj4gICAgICAgICAKPj4+Pj4+PiBAQCAtODAyLDYg KzgwNCw3IEBAIHN0cnVjdCBhbWRncHVfY3R4X21nciB7Cj4+Pj4+Pj4gICAgICAgICAKPj4+Pj4+ PiAgICAgICAgIHN0cnVjdCBhbWRncHVfY3R4ICphbWRncHVfY3R4X2dldChzdHJ1Y3QgYW1kZ3B1 X2Zwcml2ICpmcHJpdiwgdWludDMyX3QgaWQpOwo+Pj4+Pj4+ICAgICAgICAgaW50IGFtZGdwdV9j dHhfcHV0KHN0cnVjdCBhbWRncHVfY3R4ICpjdHgpOwo+Pj4+Pj4+ICtzdHJ1Y3QgYW1kZ3B1X2N0 eCAqYW1kZ3B1X2N0eF9rcmVmX2dldChzdHJ1Y3QgYW1kZ3B1X2N0eCAqY3R4KTsKPj4+Pj4+PiAg ICAgICAgIAo+Pj4+Pj4+ICAgICAgICAgdWludDY0X3QgYW1kZ3B1X2N0eF9hZGRfZmVuY2Uoc3Ry dWN0IGFtZGdwdV9jdHggKmN0eCwgc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nLAo+Pj4+Pj4+ICAg ICAgICAgCQkJICAgICAgc3RydWN0IGZlbmNlICpmZW5jZSk7IEBAIC0xMTI5LDYgKzExMzIsNyBA QAo+Pj4+Pj4+IHN0cnVjdCBhbWRncHVfam9iIHsKPj4+Pj4+PiAgICAgICAgIAlzdHJ1Y3QgYW1k Z3B1X3N5bmMJc3luYzsKPj4+Pj4+PiAgICAgICAgIAlzdHJ1Y3QgYW1kZ3B1X2liCSppYnM7Cj4+ Pj4+Pj4gICAgICAgICAJc3RydWN0IGZlbmNlCQkqZmVuY2U7IC8qIHRoZSBodyBmZW5jZSAqLwo+ Pj4+Pj4+ICsJc3RydWN0IGFtZGdwdV9jdHggKmN0eDsKPj4+Pj4+PiAgICAgICAgIAl1aW50MzJf dAkJcHJlYW1ibGVfc3RhdHVzOwo+Pj4+Pj4+ICAgICAgICAgCXVpbnQzMl90CQludW1faWJzOwo+ Pj4+Pj4+ICAgICAgICAgCXZvaWQJCQkqb3duZXI7Cj4+Pj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jCj4+Pj4+Pj4gYi9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYwo+Pj4+Pj4+IGluZGV4IDY5OWY1ZmUuLjI2N2ZiNjUg MTAwNjQ0Cj4+Pj4+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Nz LmMKPj4+Pj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYwo+ Pj4+Pj4+IEBAIC0yMzQsNyArMjM0LDcgQEAgaW50IGFtZGdwdV9jc19wYXJzZXJfaW5pdChzdHJ1 Y3QgYW1kZ3B1X2NzX3BhcnNlciAqcCwgdm9pZCAqZGF0YSkKPj4+Pj4+PiAgICAgICAgIAkJfQo+ Pj4+Pj4+ICAgICAgICAgCX0KPj4+Pj4+PiAgICAgICAgIAo+Pj4+Pj4+IC0JcmV0ID0gYW1kZ3B1 X2pvYl9hbGxvYyhwLT5hZGV2LCBudW1faWJzLCAmcC0+am9iLCB2bSk7Cj4+Pj4+Pj4gKwlyZXQg PSBhbWRncHVfam9iX2FsbG9jKHAtPmFkZXYsIG51bV9pYnMsICZwLT5qb2IsIHZtLCBwLT5jdHgp Owo+Pj4+Pj4+ICAgICAgICAgCWlmIChyZXQpCj4+Pj4+Pj4gICAgICAgICAJCWdvdG8gZnJlZV9h bGxfa2RhdGE7Cj4+Pj4+Pj4gICAgICAgICAKPj4+Pj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2N0eC5jCj4+Pj4+Pj4gYi9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9hbWRncHVfY3R4LmMKPj4+Pj4+PiBpbmRleCBiNGJiYmIzLi44MTQzOGFmIDEw MDY0NAo+Pj4+Pj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jdHgu Ywo+Pj4+Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jdHguYwo+ Pj4+Pj4+IEBAIC0yNSw2ICsyNSwxMyBAQAo+Pj4+Pj4+ICAgICAgICAgI2luY2x1ZGUgPGRybS9k cm1QLmg+Cj4+Pj4+Pj4gICAgICAgICAjaW5jbHVkZSAiYW1kZ3B1LmgiCj4+Pj4+Pj4gICAgICAg ICAKPj4+Pj4+PiArc3RydWN0IGFtZGdwdV9jdHggKmFtZGdwdV9jdHhfa3JlZl9nZXQoc3RydWN0 IGFtZGdwdV9jdHggKmN0eCkgewo+Pj4+Pj4+ICsJaWYgKGN0eCkKPj4+Pj4+PiArCQlrcmVmX2dl dCgmY3R4LT5yZWZjb3VudCk7Cj4+Pj4+Pj4gKwlyZXR1cm4gY3R4Owo+Pj4+Pj4+ICt9Cj4+Pj4+ Pj4gKwo+Pj4+Pj4+ICAgICAgICAgc3RhdGljIGludCBhbWRncHVfY3R4X2luaXQoc3RydWN0IGFt ZGdwdV9kZXZpY2UgKmFkZXYsIHN0cnVjdCBhbWRncHVfY3R4ICpjdHgpCj4+Pj4+Pj4gICAgICAg ICB7Cj4+Pj4+Pj4gICAgICAgICAJdW5zaWduZWQgaSwgajsKPj4+Pj4+PiBAQCAtNTYsNiArNjMs OCBAQCBzdGF0aWMgaW50IGFtZGdwdV9jdHhfaW5pdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRl diwgc3RydWN0IGFtZGdwdV9jdHggKmN0eCkKPj4+Pj4+PiAgICAgICAgIAkJCQkJICBycSwgYW1k Z3B1X3NjaGVkX2pvYnMpOwo+Pj4+Pj4+ICAgICAgICAgCQlpZiAocikKPj4+Pj4+PiAgICAgICAg IAkJCWdvdG8gZmFpbGVkOwo+Pj4+Pj4+ICsKPj4+Pj4+PiArCQljdHgtPnJpbmdzW2ldLmVudGl0 eS5wdHJfZ3VpbHR5ID0gJmN0eC0+Z3VpbHR5OyAvKiBrZXJuZWwKPj4+Pj4+PiArZW50aXR5IGRv ZXNuJ3QgaGF2ZSBwdHJfZ3VpbHR5ICovCj4+Pj4+Pj4gICAgICAgICAJfQo+Pj4+Pj4+ICAgICAg ICAgCj4+Pj4+Pj4gICAgICAgICAJcmV0dXJuIDA7Cj4+Pj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9qb2IuYwo+Pj4+Pj4+IGIvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2pvYi5jCj4+Pj4+Pj4gaW5kZXggNjkwZWYzZC4uMjA4ZGEx MSAxMDA2NDQKPj4+Pj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVf am9iLmMKPj4+Pj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfam9i LmMKPj4+Pj4+PiBAQCAtNDAsNyArNDAsNyBAQCBzdGF0aWMgdm9pZCBhbWRncHVfam9iX3RpbWVk b3V0KHN0cnVjdCBhbWRfc2NoZWRfam9iICpzX2pvYikKPj4+Pj4+PiAgICAgICAgIH0KPj4+Pj4+ PiAgICAgICAgIAo+Pj4+Pj4+ICAgICAgICAgaW50IGFtZGdwdV9qb2JfYWxsb2Moc3RydWN0IGFt ZGdwdV9kZXZpY2UgKmFkZXYsIHVuc2lnbmVkIG51bV9pYnMsCj4+Pj4+Pj4gLQkJICAgICBzdHJ1 Y3QgYW1kZ3B1X2pvYiAqKmpvYiwgc3RydWN0IGFtZGdwdV92bSAqdm0pCj4+Pj4+Pj4gKwkJICAg ICBzdHJ1Y3QgYW1kZ3B1X2pvYiAqKmpvYiwgc3RydWN0IGFtZGdwdV92bSAqdm0sIHN0cnVjdAo+ Pj4+Pj4+ICthbWRncHVfY3R4ICpjdHgpCj4+Pj4+Pj4gICAgICAgICB7Cj4+Pj4+Pj4gICAgICAg ICAJc2l6ZV90IHNpemUgPSBzaXplb2Yoc3RydWN0IGFtZGdwdV9qb2IpOwo+Pj4+Pj4+ICAgICAg ICAgCj4+Pj4+Pj4gQEAgLTU3LDYgKzU3LDcgQEAgaW50IGFtZGdwdV9qb2JfYWxsb2Moc3RydWN0 IGFtZGdwdV9kZXZpY2UgKmFkZXYsIHVuc2lnbmVkIG51bV9pYnMsCj4+Pj4+Pj4gICAgICAgICAJ KCpqb2IpLT52bSA9IHZtOwo+Pj4+Pj4+ICAgICAgICAgCSgqam9iKS0+aWJzID0gKHZvaWQgKikm KCpqb2IpWzFdOwo+Pj4+Pj4+ICAgICAgICAgCSgqam9iKS0+bnVtX2licyA9IG51bV9pYnM7Cj4+ Pj4+Pj4gKwkoKmpvYiktPmN0eCA9IGFtZGdwdV9jdHhfa3JlZl9nZXQoY3R4KTsKPj4+Pj4+PiAg ICAgICAgIAo+Pj4+Pj4+ICAgICAgICAgCWFtZGdwdV9zeW5jX2NyZWF0ZSgmKCpqb2IpLT5zeW5j KTsKPj4+Pj4+PiAgICAgICAgIAo+Pj4+Pj4+IEBAIC02OCw3ICs2OSw3IEBAIGludCBhbWRncHVf am9iX2FsbG9jX3dpdGhfaWIoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIHVuc2lnbmVkIHNp emUsCj4+Pj4+Pj4gICAgICAgICB7Cj4+Pj4+Pj4gICAgICAgICAJaW50IHI7Cj4+Pj4+Pj4gICAg ICAgICAKPj4+Pj4+PiAtCXIgPSBhbWRncHVfam9iX2FsbG9jKGFkZXYsIDEsIGpvYiwgTlVMTCk7 Cj4+Pj4+Pj4gKwlyID0gYW1kZ3B1X2pvYl9hbGxvYyhhZGV2LCAxLCBqb2IsIE5VTEwsIE5VTEwp Owo+Pj4+Pj4+ICAgICAgICAgCWlmIChyKQo+Pj4+Pj4+ICAgICAgICAgCQlyZXR1cm4gcjsKPj4+ Pj4+PiAgICAgICAgIAo+Pj4+Pj4+IEBAIC05NCw2ICs5NSwxMCBAQCB2b2lkIGFtZGdwdV9qb2Jf ZnJlZV9yZXNvdXJjZXMoc3RydWN0IGFtZGdwdV9qb2IgKmpvYikKPj4+Pj4+PiAgICAgICAgIHN0 YXRpYyB2b2lkIGFtZGdwdV9qb2JfZnJlZV9jYihzdHJ1Y3QgYW1kX3NjaGVkX2pvYiAqc19qb2Ip Cj4+Pj4+Pj4gICAgICAgICB7Cj4+Pj4+Pj4gICAgICAgICAJc3RydWN0IGFtZGdwdV9qb2IgKmpv YiA9IGNvbnRhaW5lcl9vZihzX2pvYiwgc3RydWN0Cj4+Pj4+Pj4gYW1kZ3B1X2pvYiwgYmFzZSk7 Cj4+Pj4+Pj4gKwlzdHJ1Y3QgYW1kZ3B1X2N0eCAqY3R4ID0gam9iLT5jdHg7Cj4+Pj4+Pj4gKwo+ Pj4+Pj4+ICsJaWYgKGN0eCkKPj4+Pj4+PiArCQlhbWRncHVfY3R4X3B1dChjdHgpOwo+Pj4+Pj4+ ICAgICAgICAgCj4+Pj4+Pj4gICAgICAgICAJZmVuY2VfcHV0KGpvYi0+ZmVuY2UpOwo+Pj4+Pj4+ ICAgICAgICAgCWFtZGdwdV9zeW5jX2ZyZWUoJmpvYi0+c3luYyk7IGRpZmYgLS1naXQKPj4+Pj4+ PiBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvc2NoZWR1bGVyL2dwdV9zY2hlZHVsZXIuYwo+Pj4+Pj4+ IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9zY2hlZHVsZXIvZ3B1X3NjaGVkdWxlci5jCj4+Pj4+Pj4g aW5kZXggNmY0ZTMxZi4uOTEwMGNhOCAxMDA2NDQKPj4+Pj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vYW1kL3NjaGVkdWxlci9ncHVfc2NoZWR1bGVyLmMKPj4+Pj4+PiArKysgYi9kcml2ZXJzL2dw dS9kcm0vYW1kL3NjaGVkdWxlci9ncHVfc2NoZWR1bGVyLmMKPj4+Pj4+PiBAQCAtMjA4LDEyICsy MDgsNiBAQCB2b2lkIGFtZF9zY2hlZF9lbnRpdHlfZmluaShzdHJ1Y3QgYW1kX2dwdV9zY2hlZHVs ZXIgKnNjaGVkLAo+Pj4+Pj4+ICAgICAgICAgCWlmICghYW1kX3NjaGVkX2VudGl0eV9pc19pbml0 aWFsaXplZChzY2hlZCwgZW50aXR5KSkKPj4+Pj4+PiAgICAgICAgIAkJcmV0dXJuOwo+Pj4+Pj4+ ICAgICAgICAgCj4+Pj4+Pj4gLQkvKioKPj4+Pj4+PiAtCSAqIFRoZSBjbGllbnQgd2lsbCBub3Qg cXVldWUgbW9yZSBJQnMgZHVyaW5nIHRoaXMgZmluaSwgY29uc3VtZSBleGlzdGluZwo+Pj4+Pj4+ IC0JICogcXVldWVkIElCcwo+Pj4+Pj4+IC0JKi8KPj4+Pj4+PiAtCXdhaXRfZXZlbnQoc2NoZWQt PmpvYl9zY2hlZHVsZWQsIGFtZF9zY2hlZF9lbnRpdHlfaXNfaWRsZShlbnRpdHkpKTsKPj4+Pj4+ PiAtCj4+Pj4+Pj4gICAgICAgICAJYW1kX3NjaGVkX3JxX3JlbW92ZV9lbnRpdHkocnEsIGVudGl0 eSk7Cj4+Pj4+Pj4gICAgICAgICAJa2ZpZm9fZnJlZSgmZW50aXR5LT5qb2JfcXVldWUpOwo+Pj4+ Pj4+ICAgICAgICAgfQo+Pj4+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL3Nj aGVkdWxlci9ncHVfc2NoZWR1bGVyLmgKPj4+Pj4+PiBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvc2No ZWR1bGVyL2dwdV9zY2hlZHVsZXIuaAo+Pj4+Pj4+IGluZGV4IDhjYjQxZDMuLmNjYmJjYjAgMTAw NjQ0Cj4+Pj4+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9zY2hlZHVsZXIvZ3B1X3NjaGVk dWxlci5oCj4+Pj4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9zY2hlZHVsZXIvZ3B1X3Nj aGVkdWxlci5oCj4+Pj4+Pj4gQEAgLTQ5LDYgKzQ5LDcgQEAgc3RydWN0IGFtZF9zY2hlZF9lbnRp dHkgewo+Pj4+Pj4+ICAgICAgICAgCj4+Pj4+Pj4gICAgICAgICAJc3RydWN0IGZlbmNlCQkJKmRl cGVuZGVuY3k7Cj4+Pj4+Pj4gICAgICAgICAJc3RydWN0IGZlbmNlX2NiCQkJY2I7Cj4+Pj4+Pj4g Kwlib29sICpwdHJfZ3VpbHR5Owo+Pj4+Pj4+ICAgICAgICAgfTsKPj4+Pj4+PiAgICAgICAgIAo+ Pj4+Pj4+ICAgICAgICAgLyoqCj4+Pj4+PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwo+Pj4+Pj4gYW1kLWdmeCBtYWlsaW5nIGxpc3QKPj4+Pj4+IGFtZC1n ZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4+Pj4+PiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2FtZC1nZngKPj4+Pj4gX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KPj4+Pj4gYW1kLWdmeCBtYWlsaW5nIGxpc3QKPj4+ Pj4gYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPj4+Pj4gaHR0cHM6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4Cj4+Pj4gX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPj4+PiBhbWQtZ2Z4IG1haWxpbmcgbGlz dAo+Pj4+IGFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4+Pj4gaHR0cHM6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4Cj4+PiBfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+Pj4gYW1kLWdmeCBtYWlsaW5nIGxp c3QKPj4+IGFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4+PiBodHRwczovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2FtZC1nZngKCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwphbWQtZ2Z4IG1haWxpbmcgbGlzdAphbWQt Z2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2FtZC1nZngK