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 11:45:55 -0800 Message-ID: <126d5b3a93c1827aaf10cd64486d4967@codeaurora.org> 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> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20181129221511.GI154160@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 T24gMjAxOC0xMS0yOSAxNDoxNSwgU2VhbiBQYXVsIHdyb3RlOgo+IE9uIFR1ZSwgTm92IDIwLCAy MDE4IGF0IDAyOjA0OjE0UE0gLTA4MDAsIEpleWt1bWFyIFNhbmthcmFuIHdyb3RlOgo+PiBPbiAy MDE4LTExLTA3IDA3OjU1LCBTZWFuIFBhdWwgd3JvdGU6Cj4+ID4gT24gVHVlLCBOb3YgMDYsIDIw MTggYXQgMDI6MzY6MzBQTSAtMDgwMCwgSmV5a3VtYXIgU2Fua2FyYW4gd3JvdGU6Cj4+ID4gPiBt c20gbWFpbnRhaW5zIGEgc2VwYXJhdGUgc3RydWN0dXJlIHRvIGRlZmluZSB2YmxhbmsKPj4gPiA+ IHdvcmsgZGVmaW5pdGlvbnMgYW5kIGEgbGlzdCB0byB0cmFjayBldmVudHMgc3VibWl0dGVkCj4+ ID4gPiB0byB0aGUgd29ya3F1ZXVlLiBXZSBjYW4gYXZvaWQgdGhpcyByZWR1bmRhbnQgbGlzdAo+ PiA+ID4gYW5kIGl0cyBwcm90ZWN0aW9uIG1lY2hhbmlzbSwgaWYgd2Ugc3ViY2xhc3MgdGhlCj4+ ID4gPiB3b3JrIG9iamVjdCB0byBlbmNhcHN1bGF0ZSB2YmxhbmsgZXZlbnQgcGFyYW1ldGVycy4K Pj4gPiA+Cj4+ID4gPiBjaGFuZ2VzIGluIHYyOgo+PiA+ID4gCS0gc3ViY2xhc3Mgb3B0aW1pemF0 aW9uIG9uIHN5c3RlbSB3cSAoU2VhbiBQYXVsKQo+PiA+Cj4+ID4gSSB3b3VsZG4ndCBkbyBpdCBs aWtlIHRoaXMsIHRiaC4gT25lIHByb2JsZW0gaXMgdGhhdCB5b3UndmUgbG9zdCB5b3VyCj4+ID4g Zmx1c2goKSBvbgo+PiA+IHVuYmluZCwgc28gdGhlcmUncyBubyB3YXkgdG8ga25vdyBpZiB5b3Ug aGF2ZSB3b3JrZXJzIGluIHRoZSB3aWxkCj4+ID4gd2FpdGluZwo+PiA+IHRvCj4+ID4gZW5hYmxl L2Rpc2FibGUgdmJsYW5rLgo+PiA+Cj4+ID4gQW5vdGhlciBpc3N1ZXMgaXMgdGhhdCBBRkFJQ1Qs IHdlIGRvbid0IG5lZWQgYSBxdWV1ZSBvZgo+PiA+IGVuYWJsZXMvZGlzYWJsZXMsCj4+ID4gYnV0 Cj4+ID4gcmF0aGVyIGp1c3QgdGhlIGxhc3QgcmVxdWVzdGVkIHN0YXRlIChpZTogc2hvdWxkIHdl IGJlIG9uIG9yIG9mZikuIFNvCj4+ID4gdGhpbmdzCj4+ID4gZG9uJ3QgbmVlZCB0byBiZSB0aGlz IGNvbXBsaWNhdGVkIChhbmQgd2UncmUgcG9zc2libHkgdGhyYXNoaW5nIHZibGFuawo+PiA+IG9u L29mZgo+PiA+IGZvciBubyByZWFzb24pLgo+PiA+Cj4+ID4gSSdtIHN0aWxsIG9mIHRoZSBtaW5k IHRoYXQgeW91IHNob3VsZCBqdXN0IG1ha2UgdGhpcyBzeW5jaHJvbm91cyBhbmQKPiBiZQo+PiA+ IGRvbmUKPj4gPiB3aXRoIHRoZSB0aHJlYWRzIChlc3BlY2lhbGx5IHNpbmNlIHdlJ3JlIHN0aWxs IHVuY292ZXJpbmcvaW50cm9kdWNpbmcKPj4gPiByYWNlcyEpLgo+PiA+Cj4+IFdoaWxlIHNjb3Bp bmcgb3V0IHRoZSBlZmZvcnQgdG8gbWFrZSB2YmxhbmsgZXZlbnRzIHN5bmNocm9ub3VzLCBJIAo+ PiBmb3VuZAo+PiB0aGF0IHRoZSBzcGlubG9jayBsb2NraW5nIG9yZGVyIG9mIHZibGFuayByZXF1 ZXN0IHNlcXVlbmNlIGFuZCB2YmxhbmsKPj4gY2FsbGJhY2sKPj4gc2VxdWVuY2VzIGFyZSB0aGUg b3Bwb3NpdGUuCj4+IAo+PiBJbiBEUFUsIGRybV92YmxhbmtfZW5hYmxlIGFjcXVpcmVzIHZibGFu a190aW1lX2xvY2sgYmVmb3JlIHJlZ2lzdGVyaW5nCj4+IHRoZSBjcnRjIHRvIGVuY29kZXIgd2hp Y2ggaGFwcGVucyBhZnRlciBhY3F1aXJpbmcgZW5jb2Rlcl9zcGlubG9jay4gCj4+IEJ1dAo+PiB0 aGUgdmJsYW5rX2NhbGxiYWNrIGFjcXVpcmVzIGVuY29kZXJfc3BpbmxvY2sgYmVmb3JlIGFjY2Vz c2luZyB0aGUKPj4gcmVnaXN0ZXJlZAo+PiBjcnRjIGFuZCBjYWxsaW5nIGludG8gZHJtX3ZibGFu a19oYW5kbGVyIHdoaWNoIHRyaWVzIHRvIGFjcXVpcmUKPj4gdmJsYW5rX3RpbWVfbG9jay4KPj4g QWNxdWlyaW5nIGJvdGggdmJsYW5rX3RpbWVfbG9jayBhbmQgZW5jb2Rlcl9zcGlubG9jayBpbiB0 aGUgc2FtZSAKPj4gdGhyZWFkCj4+IGlzIGxlYWRpbmcgdG8gZGVhZGxvY2suCj4gCj4gSG1tLCBJ J20gbm90IHN1cmUgSSBmb2xsb3cuIEFyZSB5b3Ugc2VlaW5nIGlzc3VlcyB3aGVyZSBpcnEgb3Zl cmxhcHMgCj4gd2l0aAo+IGVuYWJsZS9kaXNhYmxlPyBJIGhhY2tlZCBpbiBzeW5jIHZibGFuayBl bmFibGUvZGlzYWJsZSBxdWlja2x5IHRvIHNlZSAKPiBpZiBJCj4gY291bGQKPiByZXByb2R1Y2Ug d2hhdCB5b3UncmUgc2VlaW5nLCBidXQgdGhpbmdzIHNlZW1lZCB3ZWxsIGJlaGF2ZWQuCj4gCgpU aGUgcmFjZSBpcyBiZXR3ZWVuIGRybV92YmxhbmtfZ2V0L3B1dCBhbmQgdmJsYW5rX2hhbmRsZXIg Y29udGV4dHMuCgpXaGVuIG1hZGUgc3luY2hyb25vdXM6Cgp3aGlsZSBjYWxsaW5nIGRybV92Ymxh bmtfZ2V0LCB0aGUgY2FsbHN0YWNrIGxvb2tzIGxpa2UgYmVsb3c6CmRybV92YmxhbmtfZ2V0IC0+ IGRybV92YmxhbmtfZW5hYmxlIChhY3F1aXJlcyB2YmxhbmtfdGltZV9sb2NrKSAtPiAKX19lbmFi bGVfdmJsYW5rIC0+IGRwdV9jcnRjX3ZibGFuayAtPiBkcHVfZW5jb2Rlcl90b2dnbGVfdmJsYW5r X2Zvcl9jcnRjIAoodHJpZXMgdG8gYWNxdWlyZSBlbmNfc3BpbmxvY2spCgpJbiB2YmxhbmsgaGFu ZGxlciwgdGhlIGNhbGwgc3RhY2sgd2lsbCBiZToKZHB1X2VuY29kZXJfcGh5c192aWRfdmJsYW5r X2lycSAtPiBkcHVfZW5jb2Rlcl92YmxhbmtfY2FsbGJhY2sgKGFjcXVpcmVzIAplbmNfc3Bpbmxv Y2spIC0+IGRwdV9jcnRjX3ZibGFua19jYWxsYmFjayAtPiBkcm1faGFuZGxlX3ZibGFuayAodHJp ZXMgdG8gCmFjcXVpcmUgdmJsYW5rX3RpbWVfbG9jaykKCgo+IEkgZG8gc2VlIHRoYXQgdGhlcmUg aXMgYSBjaGFuY2UgdG8gY2FsbCBkcm1faGFuZGxlX3ZibGFuaygpIHdoaWxlIAo+IGhvbGRpbmcK PiBlbmNfc3BpbmxvY2ssIGJ1dCBjb3VsZG4ndCBmaW5kIGFueSBvYnZpb3VzIGxvY2sgcmVjdXJz aW9uIHRoZXJlLgo+IAo+IE1heWJlIGEgY2FsbHN0YWNrIG9yIGxvY2tkZXAgc3BsYXQgd291bGQg aGVscD8KPiAKPiBTZWFuCj4gCj4gCj4gSGVyZSdzIG15IGhhY2sgdG8gYnlwYXNzIHRoZSBkaXNw bGF5IHRocmVhZDoKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2 LmMgCj4gYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9kcnYuYwo+IGluZGV4IDljOWY3ZmY2OTYw YjM4Li41YTNjYWM1ODI1MzE5ZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21z bV9kcnYuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5jCj4gQEAgLTI0Miwy NCArMjQyLDE5IEBAIHN0YXRpYyB2b2lkIHZibGFua19jdHJsX3dvcmtlcihzdHJ1Y3QgCj4ga3Ro cmVhZF93b3JrCj4gKndvcmspCj4gIHN0YXRpYyBpbnQgdmJsYW5rX2N0cmxfcXVldWVfd29yayhz dHJ1Y3QgbXNtX2RybV9wcml2YXRlICpwcml2LAo+ICAJCQkJCWludCBjcnRjX2lkLCBib29sIGVu YWJsZSkKPiAgewo+ICsJc3RydWN0IG1zbV9rbXMgKmttcyA9IHByaXYtPmttczsKPiAgCXN0cnVj dCBtc21fdmJsYW5rX2N0cmwgKnZibF9jdHJsID0gJnByaXYtPnZibGFua19jdHJsOwo+IC0Jc3Ry dWN0IHZibGFua19ldmVudCAqdmJsX2V2Owo+ICAJdW5zaWduZWQgbG9uZyBmbGFnczsKPiAKPiAt CXZibF9ldiA9IGt6YWxsb2Moc2l6ZW9mKCp2YmxfZXYpLCBHRlBfQVRPTUlDKTsKPiAtCWlmICgh dmJsX2V2KQo+IC0JCXJldHVybiAtRU5PTUVNOwo+ICsJc3Bpbl9sb2NrX2lycXNhdmUoJnZibF9j dHJsLT5sb2NrLCBmbGFncyk7Cj4gCj4gLQl2YmxfZXYtPmNydGNfaWQgPSBjcnRjX2lkOwo+IC0J dmJsX2V2LT5lbmFibGUgPSBlbmFibGU7Cj4gKwlpZiAoZW5hYmxlKQo+ICsJCWttcy0+ZnVuY3Mt PmVuYWJsZV92Ymxhbmsoa21zLCBwcml2LT5jcnRjc1tjcnRjX2lkXSk7Cj4gKwllbHNlCj4gKwkJ a21zLT5mdW5jcy0+ZGlzYWJsZV92Ymxhbmsoa21zLCBwcml2LT5jcnRjc1tjcnRjX2lkXSk7Cj4g Cj4gLQlzcGluX2xvY2tfaXJxc2F2ZSgmdmJsX2N0cmwtPmxvY2ssIGZsYWdzKTsKPiAtCWxpc3Rf YWRkX3RhaWwoJnZibF9ldi0+bm9kZSwgJnZibF9jdHJsLT5ldmVudF9saXN0KTsKPiAgCXNwaW5f dW5sb2NrX2lycXJlc3RvcmUoJnZibF9jdHJsLT5sb2NrLCBmbGFncyk7Cj4gCj4gLQlrdGhyZWFk X3F1ZXVlX3dvcmsoJnByaXYtPmRpc3BfdGhyZWFkW2NydGNfaWRdLndvcmtlciwKPiAtCQkJJnZi bF9jdHJsLT53b3JrKTsKPiAtCj4gIAlyZXR1cm4gMDsKPiAgfQo+IApFdmVuIHdpdGggeW91ciBw YXRjaCBhYm92ZSwgSSBzZWUgZnJhbWUgaXMgZ2V0dGluZyBzdHVjayBidXQgaXQgcmVjb3ZlcnMg CmluIGEgd2hpbGUuClRoZSBwYXRjaCBJIHRyaWVkIHdhcyBhc3NpZ25pbmcgCmNydGMtPmZ1bmNz LT5lbmFibGVfdmJsYW5rL2Rpc2FibGVfdmJsYW5rIHNvIHRoYXQKX19lbmFibGVfdmJsYW5rIGNh biBjYWxsIGNydGMgZGlyZWN0bHkuIEJ1dCB0aGUgYWJvdmUgY2FsbHN0YWNrIGlzIHN0aWxsCnZh bGlkIGZvciB5b3VyIHBhdGNoLgoKVGhhbmtzLApKZXlrdW1hciBTLgo+IAo+IAo+PiAKPj4gSW4g TURQNSwgSSBzZWUgdGhlIHNhbWUgcGF0dGVybiBiZXR3ZWVuIHZibGFua190aW1lX2xvY2sgYW5k IGxpc3RfbG9jawo+IHdoaWNoCj4+IGlzIHVzZWQgdG8gdHJhY2sgdGhlIGlycSBoYW5kbGVycy4K Pj4gCj4+IEkgYmVsaWV2ZSB0aGF0IGV4cGxhaW5zIHdoeSBtc21fZHJ2IGlzIHF1ZXVpbmcgdGhl IHZibGFuayAKPj4gZW5hYmxlL2Rpc2FibGUKPj4gd29ya3MgdG8gV1EgYWZ0ZXIgYWNxdWlyaW5n IHZibGFua190aW1lX2xvY2suCj4+IAo+PiBUaGFua3MsCj4+IEpleWt1bWFyIFMuCj4+IAo+PiA+ IFNlYW4KPj4gPgo+PiA+ID4KPj4gPiA+IFNpZ25lZC1vZmYtYnk6IEpleWt1bWFyIFNhbmthcmFu IDxqc2Fua2FAY29kZWF1cm9yYS5vcmc+Cj4+ID4gPiAtLS0KPj4gPiA+ICBkcml2ZXJzL2dwdS9k cm0vbXNtL21zbV9kcnYuYyB8IDY3Cj4+ID4gKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQo+PiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5oIHwgIDcg LS0tLS0KPj4gPiA+ICAyIGZpbGVzIGNoYW5nZWQsIDIwIGluc2VydGlvbnMoKyksIDU0IGRlbGV0 aW9ucygtKQo+PiA+ID4KPj4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21z bV9kcnYuYwo+PiA+IGIvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmMKPj4gPiA+IGluZGV4 IDZkNmM3M2IuLjhkYTViZTIgMTAwNjQ0Cj4+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNt L21zbV9kcnYuYwo+PiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmMKPj4g PiA+IEBAIC0yMDMsNjEgKzIwMyw0NCBAQCB1MzIgbXNtX3JlYWRsKGNvbnN0IHZvaWQgX19pb21l bSAqYWRkcikKPj4gPiA+ICAJcmV0dXJuIHZhbDsKPj4gPiA+ICB9Cj4+ID4gPgo+PiA+ID4gLXN0 cnVjdCB2YmxhbmtfZXZlbnQgewo+PiA+ID4gLQlzdHJ1Y3QgbGlzdF9oZWFkIG5vZGU7Cj4+ID4g PiArc3RydWN0IG1zbV92Ymxhbmtfd29yayB7Cj4+ID4gPiArCXN0cnVjdCB3b3JrX3N0cnVjdCB3 b3JrOwo+PiA+ID4gIAlpbnQgY3J0Y19pZDsKPj4gPiA+ICAJYm9vbCBlbmFibGU7Cj4+ID4gPiAr CXN0cnVjdCBtc21fZHJtX3ByaXZhdGUgKnByaXY7Cj4+ID4gPiAgfTsKPj4gPiA+Cj4+ID4gPiAg c3RhdGljIHZvaWQgdmJsYW5rX2N0cmxfd29ya2VyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykK Pj4gPiA+ICB7Cj4+ID4gPiAtCXN0cnVjdCBtc21fdmJsYW5rX2N0cmwgKnZibF9jdHJsID0gY29u dGFpbmVyX29mKHdvcmssCj4+ID4gPiAtCQkJCQkJc3RydWN0IG1zbV92YmxhbmtfY3RybCwKPj4g PiB3b3JrKTsKPj4gPiA+IC0Jc3RydWN0IG1zbV9kcm1fcHJpdmF0ZSAqcHJpdiA9IGNvbnRhaW5l cl9vZih2YmxfY3RybCwKPj4gPiA+IC0JCQkJCXN0cnVjdCBtc21fZHJtX3ByaXZhdGUsCj4+ID4g dmJsYW5rX2N0cmwpOwo+PiA+ID4gKwlzdHJ1Y3QgbXNtX3ZibGFua193b3JrICp2Ymxfd29yayA9 IGNvbnRhaW5lcl9vZih3b3JrLAo+PiA+ID4gKwkJCQkJCXN0cnVjdCBtc21fdmJsYW5rX3dvcmss Cj4+ID4gd29yayk7Cj4+ID4gPiArCXN0cnVjdCBtc21fZHJtX3ByaXZhdGUgKnByaXYgPSB2Ymxf d29yay0+cHJpdjsKPj4gPiA+ICAJc3RydWN0IG1zbV9rbXMgKmttcyA9IHByaXYtPmttczsKPj4g PiA+IC0Jc3RydWN0IHZibGFua19ldmVudCAqdmJsX2V2LCAqdG1wOwo+PiA+ID4gLQl1bnNpZ25l ZCBsb25nIGZsYWdzOwo+PiA+ID4gLQo+PiA+ID4gLQlzcGluX2xvY2tfaXJxc2F2ZSgmdmJsX2N0 cmwtPmxvY2ssIGZsYWdzKTsKPj4gPiA+IC0JbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHZibF9l diwgdG1wLCAmdmJsX2N0cmwtPmV2ZW50X2xpc3QsIG5vZGUpCj4+ID4gewo+PiA+ID4gLQkJbGlz dF9kZWwoJnZibF9ldi0+bm9kZSk7Cj4+ID4gPiAtCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZ2 YmxfY3RybC0+bG9jaywgZmxhZ3MpOwo+PiA+ID4gLQo+PiA+ID4gLQkJaWYgKHZibF9ldi0+ZW5h YmxlKQo+PiA+ID4gLQkJCWttcy0+ZnVuY3MtPmVuYWJsZV92Ymxhbmsoa21zLAo+PiA+ID4gLQo+ PiA+IHByaXYtPmNydGNzW3ZibF9ldi0+Y3J0Y19pZF0pOwo+PiA+ID4gLQkJZWxzZQo+PiA+ID4g LQkJCWttcy0+ZnVuY3MtPmRpc2FibGVfdmJsYW5rKGttcywKPj4gPiA+IC0KPj4gPiBwcml2LT5j cnRjc1t2YmxfZXYtPmNydGNfaWRdKTsKPj4gPiA+Cj4+ID4gPiAtCQlrZnJlZSh2YmxfZXYpOwo+ PiA+ID4gLQo+PiA+ID4gLQkJc3Bpbl9sb2NrX2lycXNhdmUoJnZibF9jdHJsLT5sb2NrLCBmbGFn cyk7Cj4+ID4gPiAtCX0KPj4gPiA+ICsJaWYgKHZibF93b3JrLT5lbmFibGUpCj4+ID4gPiArCQlr bXMtPmZ1bmNzLT5lbmFibGVfdmJsYW5rKGttcywKPj4gPiBwcml2LT5jcnRjc1t2Ymxfd29yay0+ Y3J0Y19pZF0pOwo+PiA+ID4gKwllbHNlCj4+ID4gPiArCQlrbXMtPmZ1bmNzLT5kaXNhYmxlX3Zi bGFuayhrbXMsCj4+ID4gcHJpdi0+Y3J0Y3NbdmJsX3dvcmstPmNydGNfaWRdKTsKPj4gPiA+Cj4+ ID4gPiAtCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnZibF9jdHJsLT5sb2NrLCBmbGFncyk7Cj4+ ID4gPiArCWtmcmVlKHZibF93b3JrKTsKPj4gPiA+ICB9Cj4+ID4gPgo+PiA+ID4gIHN0YXRpYyBp bnQgdmJsYW5rX2N0cmxfcXVldWVfd29yayhzdHJ1Y3QgbXNtX2RybV9wcml2YXRlICpwcml2LAo+ PiA+ID4gIAkJCQkJaW50IGNydGNfaWQsIGJvb2wgZW5hYmxlKQo+PiA+ID4gIHsKPj4gPiA+IC0J c3RydWN0IG1zbV92YmxhbmtfY3RybCAqdmJsX2N0cmwgPSAmcHJpdi0+dmJsYW5rX2N0cmw7Cj4+ ID4gPiAtCXN0cnVjdCB2YmxhbmtfZXZlbnQgKnZibF9ldjsKPj4gPiA+IC0JdW5zaWduZWQgbG9u ZyBmbGFnczsKPj4gPiA+ICsJc3RydWN0IG1zbV92Ymxhbmtfd29yayAqdmJsX3dvcms7Cj4+ID4g Pgo+PiA+ID4gLQl2YmxfZXYgPSBremFsbG9jKHNpemVvZigqdmJsX2V2KSwgR0ZQX0FUT01JQyk7 Cj4+ID4gPiAtCWlmICghdmJsX2V2KQo+PiA+ID4gKwl2Ymxfd29yayA9IGt6YWxsb2Moc2l6ZW9m KCp2Ymxfd29yayksIEdGUF9BVE9NSUMpOwo+PiA+ID4gKwlpZiAoIXZibF93b3JrKQo+PiA+ID4g IAkJcmV0dXJuIC1FTk9NRU07Cj4+ID4gPgo+PiA+ID4gLQl2YmxfZXYtPmNydGNfaWQgPSBjcnRj X2lkOwo+PiA+ID4gLQl2YmxfZXYtPmVuYWJsZSA9IGVuYWJsZTsKPj4gPiA+ICsJSU5JVF9XT1JL KCZ2Ymxfd29yay0+d29yaywgdmJsYW5rX2N0cmxfd29ya2VyKTsKPj4gPiA+Cj4+ID4gPiAtCXNw aW5fbG9ja19pcnFzYXZlKCZ2YmxfY3RybC0+bG9jaywgZmxhZ3MpOwo+PiA+ID4gLQlsaXN0X2Fk ZF90YWlsKCZ2YmxfZXYtPm5vZGUsICZ2YmxfY3RybC0+ZXZlbnRfbGlzdCk7Cj4+ID4gPiAtCXNw aW5fdW5sb2NrX2lycXJlc3RvcmUoJnZibF9jdHJsLT5sb2NrLCBmbGFncyk7Cj4+ID4gPiArCXZi bF93b3JrLT5jcnRjX2lkID0gY3J0Y19pZDsKPj4gPiA+ICsJdmJsX3dvcmstPmVuYWJsZSA9IGVu YWJsZTsKPj4gPiA+ICsJdmJsX3dvcmstPnByaXYgPSBwcml2Owo+PiA+ID4KPj4gPiA+IC0Jc2No ZWR1bGVfd29yaygmdmJsX2N0cmwtPndvcmspOwo+PiA+ID4gKwlzY2hlZHVsZV93b3JrKCZ2Ymxf d29yay0+d29yayk7Cj4+ID4gPgo+PiA+ID4gIAlyZXR1cm4gMDsKPj4gPiA+ICB9Cj4+ID4gPiBA QCAtMjY5LDE0ICsyNTIsMTMgQEAgc3RhdGljIGludCBtc21fZHJtX3VuaW5pdChzdHJ1Y3QgZGV2 aWNlICpkZXYpCj4+ID4gPiAgCXN0cnVjdCBtc21fZHJtX3ByaXZhdGUgKnByaXYgPSBkZGV2LT5k ZXZfcHJpdmF0ZTsKPj4gPiA+ICAJc3RydWN0IG1zbV9rbXMgKmttcyA9IHByaXYtPmttczsKPj4g PiA+ICAJc3RydWN0IG1zbV9tZHNzICptZHNzID0gcHJpdi0+bWRzczsKPj4gPiA+IC0Jc3RydWN0 IG1zbV92YmxhbmtfY3RybCAqdmJsX2N0cmwgPSAmcHJpdi0+dmJsYW5rX2N0cmw7Cj4+ID4gPiAt CXN0cnVjdCB2YmxhbmtfZXZlbnQgKnZibF9ldiwgKnRtcDsKPj4gPiA+ICAJaW50IGk7Cj4+ID4g Pgo+PiA+ID4gIAkvKiBXZSBtdXN0IGNhbmNlbCBhbmQgY2xlYW51cCBhbnkgcGVuZGluZyB2Ymxh bmsgZW5hYmxlL2Rpc2FibGUKPj4gPiA+ICAJICogd29yayBiZWZvcmUgZHJtX2lycV91bmluc3Rh bGwoKSB0byBhdm9pZCB3b3JrIHJlLWVuYWJsaW5nIGFuCj4+ID4gPiAgCSAqIGlycSBhZnRlciB1 bmluc3RhbGwgaGFzIGRpc2FibGVkIGl0Lgo+PiA+ID4gIAkgKi8KPj4gPiA+ICsKPj4gPiA+ICAJ bXNtX2dlbV9zaHJpbmtlcl9jbGVhbnVwKGRkZXYpOwo+PiA+ID4KPj4gPiA+ICAJZHJtX2ttc19o ZWxwZXJfcG9sbF9maW5pKGRkZXYpOwo+PiA+ID4gQEAgLTI5MiwxMiArMjc0LDYgQEAgc3RhdGlj IGludCBtc21fZHJtX3VuaW5pdChzdHJ1Y3QgZGV2aWNlICpkZXYpCj4+ID4gPiAgI2VuZGlmCj4+ ID4gPiAgCWRybV9tb2RlX2NvbmZpZ19jbGVhbnVwKGRkZXYpOwo+PiA+ID4KPj4gPiA+IC0JZmx1 c2hfd29yaygmdmJsX2N0cmwtPndvcmspOwo+PiA+ID4gLQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3Nh ZmUodmJsX2V2LCB0bXAsICZ2YmxfY3RybC0+ZXZlbnRfbGlzdCwgbm9kZSkKPj4gPiB7Cj4+ID4g PiAtCQlsaXN0X2RlbCgmdmJsX2V2LT5ub2RlKTsKPj4gPiA+IC0JCWtmcmVlKHZibF9ldik7Cj4+ ID4gPiAtCX0KPj4gPiA+IC0KPj4gPiA+ICAJLyogY2xlYW4gdXAgZXZlbnQgd29ya2VyIHRocmVh ZHMgKi8KPj4gPiA+ICAJZm9yIChpID0gMDsgaSA8IHByaXYtPm51bV9jcnRjczsgaSsrKSB7Cj4+ ID4gPiAgCQlpZiAocHJpdi0+ZXZlbnRfdGhyZWFkW2ldLnRocmVhZCkgewo+PiA+ID4gQEAgLTQ2 OSw5ICs0NDUsNiBAQCBzdGF0aWMgaW50IG1zbV9kcm1faW5pdChzdHJ1Y3QgZGV2aWNlICpkZXYs Cj4gc3RydWN0Cj4+ID4gZHJtX2RyaXZlciAqZHJ2KQo+PiA+ID4gIAlwcml2LT53cSA9IGFsbG9j X29yZGVyZWRfd29ya3F1ZXVlKCJtc20iLCAwKTsKPj4gPiA+Cj4+ID4gPiAgCUlOSVRfTElTVF9I RUFEKCZwcml2LT5pbmFjdGl2ZV9saXN0KTsKPj4gPiA+IC0JSU5JVF9MSVNUX0hFQUQoJnByaXYt PnZibGFua19jdHJsLmV2ZW50X2xpc3QpOwo+PiA+ID4gLQlJTklUX1dPUksoJnByaXYtPnZibGFu a19jdHJsLndvcmssIHZibGFua19jdHJsX3dvcmtlcik7Cj4+ID4gPiAtCXNwaW5fbG9ja19pbml0 KCZwcml2LT52YmxhbmtfY3RybC5sb2NrKTsKPj4gPiA+Cj4+ID4gPiAgCWRybV9tb2RlX2NvbmZp Z19pbml0KGRkZXYpOwo+PiA+ID4KPj4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v bXNtL21zbV9kcnYuaAo+PiA+IGIvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2LmgKPj4gPiA+ IGluZGV4IDA1ZDMzYTcuLmQ0Y2JkZTIgMTAwNjQ0Cj4+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vbXNtL21zbV9kcnYuaAo+PiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZHJ2 LmgKPj4gPiA+IEBAIC03NywxMiArNzcsNiBAQCBlbnVtIG1zbV9tZHBfcGxhbmVfcHJvcGVydHkg ewo+PiA+ID4gIAlQTEFORV9QUk9QX01BWF9OVU0KPj4gPiA+ICB9Owo+PiA+ID4KPj4gPiA+IC1z dHJ1Y3QgbXNtX3ZibGFua19jdHJsIHsKPj4gPiA+IC0Jc3RydWN0IHdvcmtfc3RydWN0IHdvcms7 Cj4+ID4gPiAtCXN0cnVjdCBsaXN0X2hlYWQgZXZlbnRfbGlzdDsKPj4gPiA+IC0Jc3BpbmxvY2tf dCBsb2NrOwo+PiA+ID4gLX07Cj4+ID4gPiAtCj4+ID4gPiAgI2RlZmluZSBNU01fR1BVX01BWF9S SU5HUyA0Cj4+ID4gPiAgI2RlZmluZSBNQVhfSF9USUxFU19QRVJfRElTUExBWSAyCj4+ID4gPgo+ PiA+ID4gQEAgLTIyNSw3ICsyMTksNiBAQCBzdHJ1Y3QgbXNtX2RybV9wcml2YXRlIHsKPj4gPiA+ ICAJc3RydWN0IG5vdGlmaWVyX2Jsb2NrIHZtYXBfbm90aWZpZXI7Cj4+ID4gPiAgCXN0cnVjdCBz aHJpbmtlciBzaHJpbmtlcjsKPj4gPiA+Cj4+ID4gPiAtCXN0cnVjdCBtc21fdmJsYW5rX2N0cmwg dmJsYW5rX2N0cmw7Cj4+ID4gPiAgCXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpwbV9zdGF0ZTsK Pj4gPiA+ICB9Owo+PiA+ID4KPj4gPiA+IC0tCj4+ID4gPiBUaGUgUXVhbGNvbW0gSW5ub3ZhdGlv biBDZW50ZXIsIEluYy4gaXMgYSBtZW1iZXIgb2YgdGhlIENvZGUgQXVyb3JhCj4+ID4gRm9ydW0s Cj4+ID4gPiBhIExpbnV4IEZvdW5kYXRpb24gQ29sbGFib3JhdGl2ZSBQcm9qZWN0Cj4+ID4gPgo+ PiA+ID4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPj4g PiA+IEZyZWVkcmVubyBtYWlsaW5nIGxpc3QKPj4gPiA+IEZyZWVkcmVub0BsaXN0cy5mcmVlZGVz a3RvcC5vcmcKPj4gPiA+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vZnJlZWRyZW5vCj4+IAo+PiAtLQo+PiBKZXlrdW1hciBTCgotLSAKSmV5a3VtYXIgUwpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpGcmVlZHJlbm8g bWFpbGluZyBsaXN0CkZyZWVkcmVub0BsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9mcmVlZHJlbm8K