From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jeykumar Sankaran Subject: Re: [PATCH v2 5/5] drm/msm: subclass work object for vblank events Date: Fri, 30 Nov 2018 16:21:15 -0800 Message-ID: References: <1541543790-748-1-git-send-email-jsanka@codeaurora.org> <1541543790-748-5-git-send-email-jsanka@codeaurora.org> <20181107155551.GZ154160@art_vandelay> <86c75419b86da1a3f538638ef0004203@codeaurora.org> <20181129221511.GI154160@art_vandelay> <126d5b3a93c1827aaf10cd64486d4967@codeaurora.org> <20181130200711.GK154160@art_vandelay> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20181130200711.GK154160@art_vandelay> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: Sean Paul Cc: linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, robdclark-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, jcrouse-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org, seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org, hoegsberg-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org, freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org List-Id: linux-arm-msm@vger.kernel.org T24gMjAxOC0xMS0zMCAxMjowNywgU2VhbiBQYXVsIHdyb3RlOgo+IE9uIEZyaSwgTm92IDMwLCAy MDE4IGF0IDExOjQ1OjU1QU0gLTA4MDAsIEpleWt1bWFyIFNhbmthcmFuIHdyb3RlOgo+PiBPbiAy MDE4LTExLTI5IDE0OjE1LCBTZWFuIFBhdWwgd3JvdGU6Cj4+ID4gT24gVHVlLCBOb3YgMjAsIDIw MTggYXQgMDI6MDQ6MTRQTSAtMDgwMCwgSmV5a3VtYXIgU2Fua2FyYW4gd3JvdGU6Cj4+ID4gPiBP biAyMDE4LTExLTA3IDA3OjU1LCBTZWFuIFBhdWwgd3JvdGU6Cj4+ID4gPiA+IE9uIFR1ZSwgTm92 IDA2LCAyMDE4IGF0IDAyOjM2OjMwUE0gLTA4MDAsIEpleWt1bWFyIFNhbmthcmFuIHdyb3RlOgo+ PiA+ID4gPiA+IG1zbSBtYWludGFpbnMgYSBzZXBhcmF0ZSBzdHJ1Y3R1cmUgdG8gZGVmaW5lIHZi bGFuawo+PiA+ID4gPiA+IHdvcmsgZGVmaW5pdGlvbnMgYW5kIGEgbGlzdCB0byB0cmFjayBldmVu dHMgc3VibWl0dGVkCj4+ID4gPiA+ID4gdG8gdGhlIHdvcmtxdWV1ZS4gV2UgY2FuIGF2b2lkIHRo aXMgcmVkdW5kYW50IGxpc3QKPj4gPiA+ID4gPiBhbmQgaXRzIHByb3RlY3Rpb24gbWVjaGFuaXNt LCBpZiB3ZSBzdWJjbGFzcyB0aGUKPj4gPiA+ID4gPiB3b3JrIG9iamVjdCB0byBlbmNhcHN1bGF0 ZSB2YmxhbmsgZXZlbnQgcGFyYW1ldGVycy4KPj4gPiA+ID4gPgo+PiA+ID4gPiA+IGNoYW5nZXMg aW4gdjI6Cj4+ID4gPiA+ID4gCS0gc3ViY2xhc3Mgb3B0aW1pemF0aW9uIG9uIHN5c3RlbSB3cSAo U2VhbiBQYXVsKQo+PiA+ID4gPgo+PiA+ID4gPiBJIHdvdWxkbid0IGRvIGl0IGxpa2UgdGhpcywg dGJoLiBPbmUgcHJvYmxlbSBpcyB0aGF0IHlvdSd2ZSBsb3N0Cj4geW91cgo+PiA+ID4gPiBmbHVz aCgpIG9uCj4+ID4gPiA+IHVuYmluZCwgc28gdGhlcmUncyBubyB3YXkgdG8ga25vdyBpZiB5b3Ug aGF2ZSB3b3JrZXJzIGluIHRoZSB3aWxkCj4+ID4gPiA+IHdhaXRpbmcKPj4gPiA+ID4gdG8KPj4g PiA+ID4gZW5hYmxlL2Rpc2FibGUgdmJsYW5rLgo+PiA+ID4gPgo+PiA+ID4gPiBBbm90aGVyIGlz c3VlcyBpcyB0aGF0IEFGQUlDVCwgd2UgZG9uJ3QgbmVlZCBhIHF1ZXVlIG9mCj4+ID4gPiA+IGVu YWJsZXMvZGlzYWJsZXMsCj4+ID4gPiA+IGJ1dAo+PiA+ID4gPiByYXRoZXIganVzdCB0aGUgbGFz dCByZXF1ZXN0ZWQgc3RhdGUgKGllOiBzaG91bGQgd2UgYmUgb24gb3Igb2ZmKS4KPiBTbwo+PiA+ ID4gPiB0aGluZ3MKPj4gPiA+ID4gZG9uJ3QgbmVlZCB0byBiZSB0aGlzIGNvbXBsaWNhdGVkIChh bmQgd2UncmUgcG9zc2libHkgdGhyYXNoaW5nCj4gdmJsYW5rCj4+ID4gPiA+IG9uL29mZgo+PiA+ ID4gPiBmb3Igbm8gcmVhc29uKS4KPj4gPiA+ID4KPj4gPiA+ID4gSSdtIHN0aWxsIG9mIHRoZSBt aW5kIHRoYXQgeW91IHNob3VsZCBqdXN0IG1ha2UgdGhpcyBzeW5jaHJvbm91cwo+IGFuZAo+PiA+ IGJlCj4+ID4gPiA+IGRvbmUKPj4gPiA+ID4gd2l0aCB0aGUgdGhyZWFkcyAoZXNwZWNpYWxseSBz aW5jZSB3ZSdyZSBzdGlsbAo+IHVuY292ZXJpbmcvaW50cm9kdWNpbmcKPj4gPiA+ID4gcmFjZXMh KS4KPj4gPiA+ID4KPj4gPiA+IFdoaWxlIHNjb3Bpbmcgb3V0IHRoZSBlZmZvcnQgdG8gbWFrZSB2 YmxhbmsgZXZlbnRzIHN5bmNocm9ub3VzLCBJCj4+ID4gPiBmb3VuZAo+PiA+ID4gdGhhdCB0aGUg c3BpbmxvY2sgbG9ja2luZyBvcmRlciBvZiB2YmxhbmsgcmVxdWVzdCBzZXF1ZW5jZSBhbmQKPiB2 YmxhbmsKPj4gPiA+IGNhbGxiYWNrCj4+ID4gPiBzZXF1ZW5jZXMgYXJlIHRoZSBvcHBvc2l0ZS4K Pj4gPiA+Cj4+ID4gPiBJbiBEUFUsIGRybV92YmxhbmtfZW5hYmxlIGFjcXVpcmVzIHZibGFua190 aW1lX2xvY2sgYmVmb3JlCj4gcmVnaXN0ZXJpbmcKPj4gPiA+IHRoZSBjcnRjIHRvIGVuY29kZXIg d2hpY2ggaGFwcGVucyBhZnRlciBhY3F1aXJpbmcgZW5jb2Rlcl9zcGlubG9jay4KPj4gPiA+IEJ1 dAo+PiA+ID4gdGhlIHZibGFua19jYWxsYmFjayBhY3F1aXJlcyBlbmNvZGVyX3NwaW5sb2NrIGJl Zm9yZSBhY2Nlc3NpbmcgdGhlCj4+ID4gPiByZWdpc3RlcmVkCj4+ID4gPiBjcnRjIGFuZCBjYWxs aW5nIGludG8gZHJtX3ZibGFua19oYW5kbGVyIHdoaWNoIHRyaWVzIHRvIGFjcXVpcmUKPj4gPiA+ IHZibGFua190aW1lX2xvY2suCj4+ID4gPiBBY3F1aXJpbmcgYm90aCB2YmxhbmtfdGltZV9sb2Nr IGFuZCBlbmNvZGVyX3NwaW5sb2NrIGluIHRoZSBzYW1lCj4+ID4gPiB0aHJlYWQKPj4gPiA+IGlz IGxlYWRpbmcgdG8gZGVhZGxvY2suCj4+ID4KPj4gPiBIbW0sIEknbSBub3Qgc3VyZSBJIGZvbGxv dy4gQXJlIHlvdSBzZWVpbmcgaXNzdWVzIHdoZXJlIGlycSBvdmVybGFwcwo+PiA+IHdpdGgKPj4g PiBlbmFibGUvZGlzYWJsZT8gSSBoYWNrZWQgaW4gc3luYyB2YmxhbmsgZW5hYmxlL2Rpc2FibGUg cXVpY2tseSB0byBzZWUKPiBpZgo+PiA+IEkKPj4gPiBjb3VsZAo+PiA+IHJlcHJvZHVjZSB3aGF0 IHlvdSdyZSBzZWVpbmcsIGJ1dCB0aGluZ3Mgc2VlbWVkIHdlbGwgYmVoYXZlZC4KPj4gPgo+PiAK Pj4gVGhlIHJhY2UgaXMgYmV0d2VlbiBkcm1fdmJsYW5rX2dldC9wdXQgYW5kIHZibGFua19oYW5k bGVyIGNvbnRleHRzLgo+PiAKPj4gV2hlbiBtYWRlIHN5bmNocm9ub3VzOgo+PiAKPj4gd2hpbGUg Y2FsbGluZyBkcm1fdmJsYW5rX2dldCwgdGhlIGNhbGxzdGFjayBsb29rcyBsaWtlIGJlbG93Ogo+ PiBkcm1fdmJsYW5rX2dldCAtPiBkcm1fdmJsYW5rX2VuYWJsZSAoYWNxdWlyZXMgdmJsYW5rX3Rp bWVfbG9jaykgLT4KPj4gX19lbmFibGVfdmJsYW5rIC0+IGRwdV9jcnRjX3ZibGFuayAtPiAKPj4g ZHB1X2VuY29kZXJfdG9nZ2xlX3ZibGFua19mb3JfY3J0Ywo+PiAodHJpZXMgdG8gYWNxdWlyZSBl bmNfc3BpbmxvY2spCj4+IAo+PiBJbiB2YmxhbmsgaGFuZGxlciwgdGhlIGNhbGwgc3RhY2sgd2ls bCBiZToKPj4gZHB1X2VuY29kZXJfcGh5c192aWRfdmJsYW5rX2lycSAtPiBkcHVfZW5jb2Rlcl92 YmxhbmtfY2FsbGJhY2sgCj4+IChhY3F1aXJlcwo+PiBlbmNfc3BpbmxvY2spIC0+IGRwdV9jcnRj X3ZibGFua19jYWxsYmFjayAtPiBkcm1faGFuZGxlX3ZibGFuayAodHJpZXMgCj4+IHRvCj4+IGFj cXVpcmUgdmJsYW5rX3RpbWVfbG9jaykKPiAKPiBIbW0sIEknbSBub3Qgc3VyZSBob3cgdGhpcyBj YW4gaGFwcGVuLiBXZSBhY3F1aXJlIGFuZCByZWxlYXNlIHRoZQo+IGVuY19zcGlubG9jawo+IGJl Zm9yZSBlbmFibGluZyB0aGUgaXJxLCB5ZXMgd2Ugd2lsbCBob2xkIG9uIHRvIHRoZSB2YmxfdGlt ZV9sb2NrLCBidXQgCj4gd2UKPiBzaG91bGRuJ3QgYmUgdHJ5aW5nIHRvIHJlYWNxdWlyZSBhbiBl bmNvZGVyJ3Mgc3BpbmxvY2sgYWZ0ZXIgd2UndmUgCj4gZW5hYmxlZAo+IGl0LgpJbiB0aGUgc3lu Y2hyb25vdXMgYXBwcm9hY2ggZHB1X2VuY29kZXJfdG9nZ2xlX3ZibGFua19mb3JfY3J0Yyh3aGlj aCAKYWNxdWlyZXMgdGhlIGVuY19zcGlubG9jaykgd2lsbCBiZSBjYWxsZWQgd2hpbGUgd2UKYXJl IGhvbGRpbmcgdGhlIHZibF90aW1lX2xvY2suCgo+IEkgZG9uJ3Qga25vdyBob3cgdGhhdCBjYW4g ZGVhZGxvY2ssIHNpbmNlIHdlIHNob3VsZCBuZXZlciBiZSBydW5uaW5nCj4gZW5hYmxlIGFuZAo+ IHRoZSBoYW5kbGVyIGNvbmN1cnJlbnRseS4KPiAKSSBhZ3JlZSB0aGF0IHZibGFua19pcnEgaGFu ZGxlciBzaG91bGQgbm90IGJlIHJ1bm5pbmcgYmVmb3JlIHRoZSBlbmFibGUgCnNlcXVlbmNlLiBC dXQKZG9uJ3QgeW91IGV4cGVjdCB0aGUgaGFuZGxlciB0byBiZSBydW5uaW5nIHdoaWxlIGNhbGxp bmcgdGhlIAp2YmxhbmtfZGlzYWJsZSBzZXF1ZW5jZT8KdmJsIGRpc2FibGUgd2lsbCB0cnkgdG8g YWNxdWlyZSB0aGUgbG9ja3MgaW4gdGhlIG9wcG9zaXRlIG9yZGVyIHRvIHRoYXQgCm9mIGlycV9o YW5kbGVyIGFuZCB0aGUKc2FtZSBpc3N1ZSBpcyBib3VuZCB0byBoYXBwZW4uCgpXaXRoIHlvdXIg cGF0Y2gsIHlvdSBzaG91bGQgYmUgYWJsZSB0byBzaW11bGF0ZSB0aGlzIGRlYWRsb2NrIGlmIHlv dSBjYW4gCmluamVjdCBhIGRlbGF5CmJ5IGFkZGluZyBhIHByX2VyciBsb2cgaW4gdmJsYW5rX2N0 cmxfcXVldWVfd29yawoKVGhhbmtzLApKZXlrdW1hciBTLgoKPiBUaGUgb25seSB0aGluZyBJIGNh biB0aGluayBvZiBpcyB0aGF0IHRoZSB2YmxhbmsgaW50ZXJydXB0cyBhcmUgZmlyaW5nCj4gYWZ0 ZXIKPiB2YmxhbmsgaGFzIGJlZW4gZGlzYWJsZWQ/IEluIHRoYXQgY2FzZSwgaXQgc2VlbXMgbGlr ZSB3ZSBzaG91bGQgCj4gcHJvcGVybHkKPiBmbHVzaAo+IHRoZW0uCj4gCj4gU2Vhbgo+IAo+IAo+ PiAKPj4gCj4+ID4gSSBkbyBzZWUgdGhhdCB0aGVyZSBpcyBhIGNoYW5jZSB0byBjYWxsIGRybV9o YW5kbGVfdmJsYW5rKCkgd2hpbGUKPj4gPiBob2xkaW5nCj4+ID4gZW5jX3NwaW5sb2NrLCBidXQg Y291bGRuJ3QgZmluZCBhbnkgb2J2aW91cyBsb2NrIHJlY3Vyc2lvbiB0aGVyZS4KPj4gPgo+PiA+ IE1heWJlIGEgY2FsbHN0YWNrIG9yIGxvY2tkZXAgc3BsYXQgd291bGQgaGVscD8KPj4gPgo+PiA+ IFNlYW4KPj4gPgo+PiA+Cj4+ID4gSGVyZSdzIG15IGhhY2sgdG8gYnlwYXNzIHRoZSBkaXNwbGF5 IHRocmVhZDoKPj4gPgo+PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9k cnYuYwo+PiA+IGIvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmMKPj4gPiBpbmRleCA5Yzlm N2ZmNjk2MGIzOC4uNWEzY2FjNTgyNTMxOWUgMTAwNjQ0Cj4+ID4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL21zbS9tc21fZHJ2LmMKPj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9kcnYu Ywo+PiA+IEBAIC0yNDIsMjQgKzI0MiwxOSBAQCBzdGF0aWMgdm9pZCB2YmxhbmtfY3RybF93b3Jr ZXIoc3RydWN0Cj4ga3RocmVhZF93b3JrCj4+ID4gKndvcmspCj4+ID4gIHN0YXRpYyBpbnQgdmJs YW5rX2N0cmxfcXVldWVfd29yayhzdHJ1Y3QgbXNtX2RybV9wcml2YXRlICpwcml2LAo+PiA+ICAJ CQkJCWludCBjcnRjX2lkLCBib29sIGVuYWJsZSkKPj4gPiAgewo+PiA+ICsJc3RydWN0IG1zbV9r bXMgKmttcyA9IHByaXYtPmttczsKPj4gPiAgCXN0cnVjdCBtc21fdmJsYW5rX2N0cmwgKnZibF9j dHJsID0gJnByaXYtPnZibGFua19jdHJsOwo+PiA+IC0Jc3RydWN0IHZibGFua19ldmVudCAqdmJs X2V2Owo+PiA+ICAJdW5zaWduZWQgbG9uZyBmbGFnczsKPj4gPgo+PiA+IC0JdmJsX2V2ID0ga3ph bGxvYyhzaXplb2YoKnZibF9ldiksIEdGUF9BVE9NSUMpOwo+PiA+IC0JaWYgKCF2YmxfZXYpCj4+ ID4gLQkJcmV0dXJuIC1FTk9NRU07Cj4+ID4gKwlzcGluX2xvY2tfaXJxc2F2ZSgmdmJsX2N0cmwt PmxvY2ssIGZsYWdzKTsKPj4gPgo+PiA+IC0JdmJsX2V2LT5jcnRjX2lkID0gY3J0Y19pZDsKPj4g PiAtCXZibF9ldi0+ZW5hYmxlID0gZW5hYmxlOwo+PiA+ICsJaWYgKGVuYWJsZSkKPj4gPiArCQlr bXMtPmZ1bmNzLT5lbmFibGVfdmJsYW5rKGttcywgcHJpdi0+Y3J0Y3NbY3J0Y19pZF0pOwo+PiA+ ICsJZWxzZQo+PiA+ICsJCWttcy0+ZnVuY3MtPmRpc2FibGVfdmJsYW5rKGttcywgcHJpdi0+Y3J0 Y3NbY3J0Y19pZF0pOwo+PiA+Cj4+ID4gLQlzcGluX2xvY2tfaXJxc2F2ZSgmdmJsX2N0cmwtPmxv Y2ssIGZsYWdzKTsKPj4gPiAtCWxpc3RfYWRkX3RhaWwoJnZibF9ldi0+bm9kZSwgJnZibF9jdHJs LT5ldmVudF9saXN0KTsKPj4gPiAgCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnZibF9jdHJsLT5s b2NrLCBmbGFncyk7Cj4+ID4KPj4gPiAtCWt0aHJlYWRfcXVldWVfd29yaygmcHJpdi0+ZGlzcF90 aHJlYWRbY3J0Y19pZF0ud29ya2VyLAo+PiA+IC0JCQkmdmJsX2N0cmwtPndvcmspOwo+PiA+IC0K Pj4gPiAgCXJldHVybiAwOwo+PiA+ICB9Cj4+ID4KPj4gRXZlbiB3aXRoIHlvdXIgcGF0Y2ggYWJv dmUsIEkgc2VlIGZyYW1lIGlzIGdldHRpbmcgc3R1Y2sgYnV0IGl0IAo+PiByZWNvdmVycwo+IGlu Cj4+IGEgd2hpbGUuCj4+IFRoZSBwYXRjaCBJIHRyaWVkIHdhcyBhc3NpZ25pbmcKPiBjcnRjLT5m dW5jcy0+ZW5hYmxlX3ZibGFuay9kaXNhYmxlX3ZibGFuayBzbwo+PiB0aGF0Cj4+IF9fZW5hYmxl X3ZibGFuayBjYW4gY2FsbCBjcnRjIGRpcmVjdGx5LiBCdXQgdGhlIGFib3ZlIGNhbGxzdGFjayBp cyAKPj4gc3RpbGwKPj4gdmFsaWQgZm9yIHlvdXIgcGF0Y2guCj4+IAo+PiBUaGFua3MsCj4+IEpl eWt1bWFyIFMuCj4+ID4KPj4gPgo+PiA+ID4KPj4gPiA+IEluIE1EUDUsIEkgc2VlIHRoZSBzYW1l IHBhdHRlcm4gYmV0d2VlbiB2YmxhbmtfdGltZV9sb2NrIGFuZAo+IGxpc3RfbG9jawo+PiA+IHdo aWNoCj4+ID4gPiBpcyB1c2VkIHRvIHRyYWNrIHRoZSBpcnEgaGFuZGxlcnMuCj4+ID4gPgo+PiA+ ID4gSSBiZWxpZXZlIHRoYXQgZXhwbGFpbnMgd2h5IG1zbV9kcnYgaXMgcXVldWluZyB0aGUgdmJs YW5rCj4+ID4gPiBlbmFibGUvZGlzYWJsZQo+PiA+ID4gd29ya3MgdG8gV1EgYWZ0ZXIgYWNxdWly aW5nIHZibGFua190aW1lX2xvY2suCj4+ID4gPgo+PiA+ID4gVGhhbmtzLAo+PiA+ID4gSmV5a3Vt YXIgUy4KPj4gPiA+Cj4+ID4gPiA+IFNlYW4KPj4gPiA+ID4KPj4gPiA+ID4gPgo+PiA+ID4gPiA+ IFNpZ25lZC1vZmYtYnk6IEpleWt1bWFyIFNhbmthcmFuIDxqc2Fua2FAY29kZWF1cm9yYS5vcmc+ Cj4+ID4gPiA+ID4gLS0tCj4+ID4gPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5j IHwgNjcKPj4gPiA+ID4gKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQo+PiA+ID4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9kcnYuaCB8ICA3IC0tLS0tCj4+ ID4gPiA+ID4gIDIgZmlsZXMgY2hhbmdlZCwgMjAgaW5zZXJ0aW9ucygrKSwgNTQgZGVsZXRpb25z KC0pCj4+ID4gPiA+ID4KPj4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21z bS9tc21fZHJ2LmMKPj4gPiA+ID4gYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9kcnYuYwo+PiA+ ID4gPiA+IGluZGV4IDZkNmM3M2IuLjhkYTViZTIgMTAwNjQ0Cj4+ID4gPiA+ID4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmMKPj4gPiA+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vbXNtL21zbV9kcnYuYwo+PiA+ID4gPiA+IEBAIC0yMDMsNjEgKzIwMyw0NCBAQCB1MzIgbXNt X3JlYWRsKGNvbnN0IHZvaWQgX19pb21lbSAqYWRkcikKPj4gPiA+ID4gPiAgCXJldHVybiB2YWw7 Cj4+ID4gPiA+ID4gIH0KPj4gPiA+ID4gPgo+PiA+ID4gPiA+IC1zdHJ1Y3QgdmJsYW5rX2V2ZW50 IHsKPj4gPiA+ID4gPiAtCXN0cnVjdCBsaXN0X2hlYWQgbm9kZTsKPj4gPiA+ID4gPiArc3RydWN0 IG1zbV92Ymxhbmtfd29yayB7Cj4+ID4gPiA+ID4gKwlzdHJ1Y3Qgd29ya19zdHJ1Y3Qgd29yazsK Pj4gPiA+ID4gPiAgCWludCBjcnRjX2lkOwo+PiA+ID4gPiA+ICAJYm9vbCBlbmFibGU7Cj4+ID4g PiA+ID4gKwlzdHJ1Y3QgbXNtX2RybV9wcml2YXRlICpwcml2Owo+PiA+ID4gPiA+ICB9Owo+PiA+ ID4gPiA+Cj4+ID4gPiA+ID4gIHN0YXRpYyB2b2lkIHZibGFua19jdHJsX3dvcmtlcihzdHJ1Y3Qg d29ya19zdHJ1Y3QgKndvcmspCj4+ID4gPiA+ID4gIHsKPj4gPiA+ID4gPiAtCXN0cnVjdCBtc21f dmJsYW5rX2N0cmwgKnZibF9jdHJsID0gY29udGFpbmVyX29mKHdvcmssCj4+ID4gPiA+ID4gLQkJ CQkJCXN0cnVjdAo+IG1zbV92YmxhbmtfY3RybCwKPj4gPiA+ID4gd29yayk7Cj4+ID4gPiA+ID4g LQlzdHJ1Y3QgbXNtX2RybV9wcml2YXRlICpwcml2ID0gY29udGFpbmVyX29mKHZibF9jdHJsLAo+ PiA+ID4gPiA+IC0JCQkJCXN0cnVjdCBtc21fZHJtX3ByaXZhdGUsCj4+ID4gPiA+IHZibGFua19j dHJsKTsKPj4gPiA+ID4gPiArCXN0cnVjdCBtc21fdmJsYW5rX3dvcmsgKnZibF93b3JrID0gY29u dGFpbmVyX29mKHdvcmssCj4+ID4gPiA+ID4gKwkJCQkJCXN0cnVjdAo+IG1zbV92Ymxhbmtfd29y aywKPj4gPiA+ID4gd29yayk7Cj4+ID4gPiA+ID4gKwlzdHJ1Y3QgbXNtX2RybV9wcml2YXRlICpw cml2ID0gdmJsX3dvcmstPnByaXY7Cj4+ID4gPiA+ID4gIAlzdHJ1Y3QgbXNtX2ttcyAqa21zID0g cHJpdi0+a21zOwo+PiA+ID4gPiA+IC0Jc3RydWN0IHZibGFua19ldmVudCAqdmJsX2V2LCAqdG1w Owo+PiA+ID4gPiA+IC0JdW5zaWduZWQgbG9uZyBmbGFnczsKPj4gPiA+ID4gPiAtCj4+ID4gPiA+ ID4gLQlzcGluX2xvY2tfaXJxc2F2ZSgmdmJsX2N0cmwtPmxvY2ssIGZsYWdzKTsKPj4gPiA+ID4g PiAtCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZSh2YmxfZXYsIHRtcCwKPiAmdmJsX2N0cmwtPmV2 ZW50X2xpc3QsIG5vZGUpCj4+ID4gPiA+IHsKPj4gPiA+ID4gPiAtCQlsaXN0X2RlbCgmdmJsX2V2 LT5ub2RlKTsKPj4gPiA+ID4gPiAtCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZ2YmxfY3RybC0+ bG9jaywgZmxhZ3MpOwo+PiA+ID4gPiA+IC0KPj4gPiA+ID4gPiAtCQlpZiAodmJsX2V2LT5lbmFi bGUpCj4+ID4gPiA+ID4gLQkJCWttcy0+ZnVuY3MtPmVuYWJsZV92Ymxhbmsoa21zLAo+PiA+ID4g PiA+IC0KPj4gPiA+ID4gcHJpdi0+Y3J0Y3NbdmJsX2V2LT5jcnRjX2lkXSk7Cj4+ID4gPiA+ID4g LQkJZWxzZQo+PiA+ID4gPiA+IC0JCQlrbXMtPmZ1bmNzLT5kaXNhYmxlX3ZibGFuayhrbXMsCj4+ ID4gPiA+ID4gLQo+PiA+ID4gPiBwcml2LT5jcnRjc1t2YmxfZXYtPmNydGNfaWRdKTsKPj4gPiA+ ID4gPgo+PiA+ID4gPiA+IC0JCWtmcmVlKHZibF9ldik7Cj4+ID4gPiA+ID4gLQo+PiA+ID4gPiA+ IC0JCXNwaW5fbG9ja19pcnFzYXZlKCZ2YmxfY3RybC0+bG9jaywgZmxhZ3MpOwo+PiA+ID4gPiA+ IC0JfQo+PiA+ID4gPiA+ICsJaWYgKHZibF93b3JrLT5lbmFibGUpCj4+ID4gPiA+ID4gKwkJa21z LT5mdW5jcy0+ZW5hYmxlX3ZibGFuayhrbXMsCj4+ID4gPiA+IHByaXYtPmNydGNzW3ZibF93b3Jr LT5jcnRjX2lkXSk7Cj4+ID4gPiA+ID4gKwllbHNlCj4+ID4gPiA+ID4gKwkJa21zLT5mdW5jcy0+ ZGlzYWJsZV92Ymxhbmsoa21zLAo+PiA+ID4gPiBwcml2LT5jcnRjc1t2Ymxfd29yay0+Y3J0Y19p ZF0pOwo+PiA+ID4gPiA+Cj4+ID4gPiA+ID4gLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZ2Ymxf Y3RybC0+bG9jaywgZmxhZ3MpOwo+PiA+ID4gPiA+ICsJa2ZyZWUodmJsX3dvcmspOwo+PiA+ID4g PiA+ICB9Cj4+ID4gPiA+ID4KPj4gPiA+ID4gPiAgc3RhdGljIGludCB2YmxhbmtfY3RybF9xdWV1 ZV93b3JrKHN0cnVjdCBtc21fZHJtX3ByaXZhdGUgKnByaXYsCj4+ID4gPiA+ID4gIAkJCQkJaW50 IGNydGNfaWQsIGJvb2wgZW5hYmxlKQo+PiA+ID4gPiA+ICB7Cj4+ID4gPiA+ID4gLQlzdHJ1Y3Qg bXNtX3ZibGFua19jdHJsICp2YmxfY3RybCA9ICZwcml2LT52YmxhbmtfY3RybDsKPj4gPiA+ID4g PiAtCXN0cnVjdCB2YmxhbmtfZXZlbnQgKnZibF9ldjsKPj4gPiA+ID4gPiAtCXVuc2lnbmVkIGxv bmcgZmxhZ3M7Cj4+ID4gPiA+ID4gKwlzdHJ1Y3QgbXNtX3ZibGFua193b3JrICp2Ymxfd29yazsK Pj4gPiA+ID4gPgo+PiA+ID4gPiA+IC0JdmJsX2V2ID0ga3phbGxvYyhzaXplb2YoKnZibF9ldiks IEdGUF9BVE9NSUMpOwo+PiA+ID4gPiA+IC0JaWYgKCF2YmxfZXYpCj4+ID4gPiA+ID4gKwl2Ymxf d29yayA9IGt6YWxsb2Moc2l6ZW9mKCp2Ymxfd29yayksIEdGUF9BVE9NSUMpOwo+PiA+ID4gPiA+ ICsJaWYgKCF2Ymxfd29yaykKPj4gPiA+ID4gPiAgCQlyZXR1cm4gLUVOT01FTTsKPj4gPiA+ID4g Pgo+PiA+ID4gPiA+IC0JdmJsX2V2LT5jcnRjX2lkID0gY3J0Y19pZDsKPj4gPiA+ID4gPiAtCXZi bF9ldi0+ZW5hYmxlID0gZW5hYmxlOwo+PiA+ID4gPiA+ICsJSU5JVF9XT1JLKCZ2Ymxfd29yay0+ d29yaywgdmJsYW5rX2N0cmxfd29ya2VyKTsKPj4gPiA+ID4gPgo+PiA+ID4gPiA+IC0Jc3Bpbl9s b2NrX2lycXNhdmUoJnZibF9jdHJsLT5sb2NrLCBmbGFncyk7Cj4+ID4gPiA+ID4gLQlsaXN0X2Fk ZF90YWlsKCZ2YmxfZXYtPm5vZGUsICZ2YmxfY3RybC0+ZXZlbnRfbGlzdCk7Cj4+ID4gPiA+ID4g LQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZ2YmxfY3RybC0+bG9jaywgZmxhZ3MpOwo+PiA+ID4g PiA+ICsJdmJsX3dvcmstPmNydGNfaWQgPSBjcnRjX2lkOwo+PiA+ID4gPiA+ICsJdmJsX3dvcmst PmVuYWJsZSA9IGVuYWJsZTsKPj4gPiA+ID4gPiArCXZibF93b3JrLT5wcml2ID0gcHJpdjsKPj4g PiA+ID4gPgo+PiA+ID4gPiA+IC0Jc2NoZWR1bGVfd29yaygmdmJsX2N0cmwtPndvcmspOwo+PiA+ ID4gPiA+ICsJc2NoZWR1bGVfd29yaygmdmJsX3dvcmstPndvcmspOwo+PiA+ID4gPiA+Cj4+ID4g PiA+ID4gIAlyZXR1cm4gMDsKPj4gPiA+ID4gPiAgfQo+PiA+ID4gPiA+IEBAIC0yNjksMTQgKzI1 MiwxMyBAQCBzdGF0aWMgaW50IG1zbV9kcm1fdW5pbml0KHN0cnVjdCBkZXZpY2UKPiAqZGV2KQo+ PiA+ID4gPiA+ICAJc3RydWN0IG1zbV9kcm1fcHJpdmF0ZSAqcHJpdiA9IGRkZXYtPmRldl9wcml2 YXRlOwo+PiA+ID4gPiA+ICAJc3RydWN0IG1zbV9rbXMgKmttcyA9IHByaXYtPmttczsKPj4gPiA+ ID4gPiAgCXN0cnVjdCBtc21fbWRzcyAqbWRzcyA9IHByaXYtPm1kc3M7Cj4+ID4gPiA+ID4gLQlz dHJ1Y3QgbXNtX3ZibGFua19jdHJsICp2YmxfY3RybCA9ICZwcml2LT52YmxhbmtfY3RybDsKPj4g PiA+ID4gPiAtCXN0cnVjdCB2YmxhbmtfZXZlbnQgKnZibF9ldiwgKnRtcDsKPj4gPiA+ID4gPiAg CWludCBpOwo+PiA+ID4gPiA+Cj4+ID4gPiA+ID4gIAkvKiBXZSBtdXN0IGNhbmNlbCBhbmQgY2xl YW51cCBhbnkgcGVuZGluZyB2YmxhbmsKPiBlbmFibGUvZGlzYWJsZQo+PiA+ID4gPiA+ICAJICog d29yayBiZWZvcmUgZHJtX2lycV91bmluc3RhbGwoKSB0byBhdm9pZCB3b3JrCj4gcmUtZW5hYmxp bmcgYW4KPj4gPiA+ID4gPiAgCSAqIGlycSBhZnRlciB1bmluc3RhbGwgaGFzIGRpc2FibGVkIGl0 Lgo+PiA+ID4gPiA+ICAJICovCj4+ID4gPiA+ID4gKwo+PiA+ID4gPiA+ICAJbXNtX2dlbV9zaHJp bmtlcl9jbGVhbnVwKGRkZXYpOwo+PiA+ID4gPiA+Cj4+ID4gPiA+ID4gIAlkcm1fa21zX2hlbHBl cl9wb2xsX2ZpbmkoZGRldik7Cj4+ID4gPiA+ID4gQEAgLTI5MiwxMiArMjc0LDYgQEAgc3RhdGlj IGludCBtc21fZHJtX3VuaW5pdChzdHJ1Y3QgZGV2aWNlCj4gKmRldikKPj4gPiA+ID4gPiAgI2Vu ZGlmCj4+ID4gPiA+ID4gIAlkcm1fbW9kZV9jb25maWdfY2xlYW51cChkZGV2KTsKPj4gPiA+ID4g Pgo+PiA+ID4gPiA+IC0JZmx1c2hfd29yaygmdmJsX2N0cmwtPndvcmspOwo+PiA+ID4gPiA+IC0J bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHZibF9ldiwgdG1wLAo+ICZ2YmxfY3RybC0+ZXZlbnRf bGlzdCwgbm9kZSkKPj4gPiA+ID4gewo+PiA+ID4gPiA+IC0JCWxpc3RfZGVsKCZ2YmxfZXYtPm5v ZGUpOwo+PiA+ID4gPiA+IC0JCWtmcmVlKHZibF9ldik7Cj4+ID4gPiA+ID4gLQl9Cj4+ID4gPiA+ ID4gLQo+PiA+ID4gPiA+ICAJLyogY2xlYW4gdXAgZXZlbnQgd29ya2VyIHRocmVhZHMgKi8KPj4g PiA+ID4gPiAgCWZvciAoaSA9IDA7IGkgPCBwcml2LT5udW1fY3J0Y3M7IGkrKykgewo+PiA+ID4g PiA+ICAJCWlmIChwcml2LT5ldmVudF90aHJlYWRbaV0udGhyZWFkKSB7Cj4+ID4gPiA+ID4gQEAg LTQ2OSw5ICs0NDUsNiBAQCBzdGF0aWMgaW50IG1zbV9kcm1faW5pdChzdHJ1Y3QgZGV2aWNlICpk ZXYsCj4+ID4gc3RydWN0Cj4+ID4gPiA+IGRybV9kcml2ZXIgKmRydikKPj4gPiA+ID4gPiAgCXBy aXYtPndxID0gYWxsb2Nfb3JkZXJlZF93b3JrcXVldWUoIm1zbSIsIDApOwo+PiA+ID4gPiA+Cj4+ ID4gPiA+ID4gIAlJTklUX0xJU1RfSEVBRCgmcHJpdi0+aW5hY3RpdmVfbGlzdCk7Cj4+ID4gPiA+ ID4gLQlJTklUX0xJU1RfSEVBRCgmcHJpdi0+dmJsYW5rX2N0cmwuZXZlbnRfbGlzdCk7Cj4+ID4g PiA+ID4gLQlJTklUX1dPUksoJnByaXYtPnZibGFua19jdHJsLndvcmssIHZibGFua19jdHJsX3dv cmtlcik7Cj4+ID4gPiA+ID4gLQlzcGluX2xvY2tfaW5pdCgmcHJpdi0+dmJsYW5rX2N0cmwubG9j ayk7Cj4+ID4gPiA+ID4KPj4gPiA+ID4gPiAgCWRybV9tb2RlX2NvbmZpZ19pbml0KGRkZXYpOwo+ PiA+ID4gPiA+Cj4+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNt X2Rydi5oCj4+ID4gPiA+IGIvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmgKPj4gPiA+ID4g PiBpbmRleCAwNWQzM2E3Li5kNGNiZGUyIDEwMDY0NAo+PiA+ID4gPiA+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9tc20vbXNtX2Rydi5oCj4+ID4gPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21z bS9tc21fZHJ2LmgKPj4gPiA+ID4gPiBAQCAtNzcsMTIgKzc3LDYgQEAgZW51bSBtc21fbWRwX3Bs YW5lX3Byb3BlcnR5IHsKPj4gPiA+ID4gPiAgCVBMQU5FX1BST1BfTUFYX05VTQo+PiA+ID4gPiA+ ICB9Owo+PiA+ID4gPiA+Cj4+ID4gPiA+ID4gLXN0cnVjdCBtc21fdmJsYW5rX2N0cmwgewo+PiA+ ID4gPiA+IC0Jc3RydWN0IHdvcmtfc3RydWN0IHdvcms7Cj4+ID4gPiA+ID4gLQlzdHJ1Y3QgbGlz dF9oZWFkIGV2ZW50X2xpc3Q7Cj4+ID4gPiA+ID4gLQlzcGlubG9ja190IGxvY2s7Cj4+ID4gPiA+ ID4gLX07Cj4+ID4gPiA+ID4gLQo+PiA+ID4gPiA+ICAjZGVmaW5lIE1TTV9HUFVfTUFYX1JJTkdT IDQKPj4gPiA+ID4gPiAgI2RlZmluZSBNQVhfSF9USUxFU19QRVJfRElTUExBWSAyCj4+ID4gPiA+ ID4KPj4gPiA+ID4gPiBAQCAtMjI1LDcgKzIxOSw2IEBAIHN0cnVjdCBtc21fZHJtX3ByaXZhdGUg ewo+PiA+ID4gPiA+ICAJc3RydWN0IG5vdGlmaWVyX2Jsb2NrIHZtYXBfbm90aWZpZXI7Cj4+ID4g PiA+ID4gIAlzdHJ1Y3Qgc2hyaW5rZXIgc2hyaW5rZXI7Cj4+ID4gPiA+ID4KPj4gPiA+ID4gPiAt CXN0cnVjdCBtc21fdmJsYW5rX2N0cmwgdmJsYW5rX2N0cmw7Cj4+ID4gPiA+ID4gIAlzdHJ1Y3Qg ZHJtX2F0b21pY19zdGF0ZSAqcG1fc3RhdGU7Cj4+ID4gPiA+ID4gIH07Cj4+ID4gPiA+ID4KPj4g PiA+ID4gPiAtLQo+PiA+ID4gPiA+IFRoZSBRdWFsY29tbSBJbm5vdmF0aW9uIENlbnRlciwgSW5j LiBpcyBhIG1lbWJlciBvZiB0aGUgQ29kZQo+IEF1cm9yYQo+PiA+ID4gPiBGb3J1bSwKPj4gPiA+ ID4gPiBhIExpbnV4IEZvdW5kYXRpb24gQ29sbGFib3JhdGl2ZSBQcm9qZWN0Cj4+ID4gPiA+ID4K Pj4gPiA+ID4gPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f Xwo+PiA+ID4gPiA+IEZyZWVkcmVubyBtYWlsaW5nIGxpc3QKPj4gPiA+ID4gPiBGcmVlZHJlbm9A bGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4+ID4gPiA+ID4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9mcmVlZHJlbm8KPj4gPiA+Cj4+ID4gPiAtLQo+PiA+ID4g SmV5a3VtYXIgUwo+PiAKPj4gLS0KPj4gSmV5a3VtYXIgUwoKLS0gCkpleWt1bWFyIFMKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRnJlZWRyZW5vIG1haWxp bmcgbGlzdApGcmVlZHJlbm9AbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZnJlZWRyZW5vCg==