From mboxrd@z Thu Jan 1 00:00:00 1970 From: Laurent Pinchart Subject: Re: [PATCH v5 14/19] drm: writeback: Add job prepare and cleanup operations Date: Fri, 22 Feb 2019 00:12:00 +0200 Message-ID: <20190221221200.GC3485@pendragon.ideasonboard.com> References: <20190221103212.28764-1-laurent.pinchart+renesas@ideasonboard.com> <20190221103212.28764-15-laurent.pinchart+renesas@ideasonboard.com> <20190221181203.u3da7csxpikym5xv@DESKTOP-E1NTVVP.localdomain> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by gabe.freedesktop.org (Postfix) with ESMTPS id 91384893DB for ; Thu, 21 Feb 2019 22:12:06 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20190221181203.u3da7csxpikym5xv@DESKTOP-E1NTVVP.localdomain> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Brian Starkey Cc: Laurent Pinchart , Liviu Dudau , Kieran Bingham , "dri-devel@lists.freedesktop.org" , "james qian wang (Arm Technology China)" , nd List-Id: dri-devel@lists.freedesktop.org SGkgQnJpYW4sCgpPbiBUaHUsIEZlYiAyMSwgMjAxOSBhdCAwNjoxMjowM1BNICswMDAwLCBCcmlh biBTdGFya2V5IHdyb3RlOgo+IE9uIFRodSwgRmViIDIxLCAyMDE5IGF0IDEyOjMyOjA3UE0gKzAy MDAsIExhdXJlbnQgUGluY2hhcnQgd3JvdGU6Cj4gPiBBcyB3cml0ZWJhY2sgam9icyBjb250YWlu IGEgZnJhbWVidWZmZXIsIGRyaXZlcnMgbWF5IG5lZWQgdG8gcHJlcGFyZSBhbmQKPiA+IGNsZWFu dXAgdGhlbSB0aGUgc2FtZSB3YXkgdGhleSBjYW4gcHJlcGFyZSBhbmQgY2xlYW51cCBmcmFtZWJ1 ZmZlcnMgZm9yCj4gPiBwbGFuZXMuIEFkZCB0d28gbmV3IG9wdGlvbmFsIGNvbm5lY3RvciBoZWxw ZXIgb3BlcmF0aW9ucywKPiA+IC5wcmVwYXJlX3dyaXRlYmFja19qb2IoKSBhbmQgLmNsZWFudXBf d3JpdGViYWNrX2pvYigpIHRvIHN1cHBvcnQgdGhpcy4KPiA+IAo+ID4gVGhlIGpvYiBwcmVwYXJl IG9wZXJhdGlvbiBpcyBjYWxsZWQgZnJvbQo+ID4gZHJtX2F0b21pY19oZWxwZXJfcHJlcGFyZV9w bGFuZXMoKSB0byBhdm9pZCBhIG5ldyBhdG9taWMgY29tbWl0IGhlbHBlcgo+ID4gdGhhdCB3b3Vs ZCBuZWVkIHRvIGJlIGNhbGxlZCBieSBhbGwgZHJpdmVycyBub3QgdXNpbmcKPiA+IGRybV9hdG9t aWNfaGVscGVyX2NvbW1pdCgpLiBUaGUgam9iIGNsZWFudXAgb3BlcmF0aW9uIGlzIGNhbGxlZCBm cm9tIHRoZQo+ID4gZXhpc3RpbmcgZHJtX3dyaXRlYmFja19jbGVhbnVwX2pvYigpIGZ1bmN0aW9u LCBpbnZva2VkIGJvdGggd2hlbgo+ID4gZGVzdHJveWluZyB0aGUgam9iIGFzIHBhcnQgb2YgYSBh Ym9ydGVkIGNvbW1pdCwgb3Igd2hlbiB0aGUgam9iCj4gPiBjb21wbGV0ZXMuCj4gPiAKPiA+IFRo ZSBkcm1fd3JpdGViYWNrX2pvYiBzdHJ1Y3R1cmUgaXMgZXh0ZW5kZWQgd2l0aCBhIHByaXYgZmll bGQgdG8gbGV0Cj4gPiBkcml2ZXJzIHN0b3JlIHBlci1qb2IgZGF0YSwgc3VjaCBhcyBtYXBwaW5n cyByZWxhdGVkIHRvIHRoZSB3cml0ZWJhY2sKPiA+IGZyYW1lYnVmZmVyLgo+ID4gCj4gPiBGb3Ig aW50ZXJuYWwgcGx1bWJpbmcgcmVhc29ucyB0aGUgZHJtX3dyaXRlYmFja19qb2Igc3RydWN0dXJl IG5lZWRzIHRvCj4gPiBzdG9yZSBhIGJhY2stcG9pbnRlciB0byB0aGUgZHJtX3dyaXRlYmFja19j b25uZWN0b3IuIFRvIGF2b2lkIHB1c2hpbmcKPiA+IHRvbyBtdWNoIHdyaXRlYmFjay1zcGVjaWZp YyBrbm93bGVkZ2UgdG8gZHJtX2F0b21pY191YXBpLmMsIGNyZWF0ZSBhCj4gPiBkcm1fd3JpdGVi YWNrX3NldF9mYigpIGZ1bmN0aW9uLCBtb3ZlIHRoZSB3cml0ZWJhY2sgam9iIHNldHVwIGNvZGUK PiA+IHRoZXJlLCBhbmQgc2V0IHRoZSBjb25uZWN0b3IgYmFja3BvaW50ZXIuIFRoZSBwcmVwYXJl X3NpZ25hbGluZygpCj4gPiBmdW5jdGlvbiBkb2Vzbid0IG5lZWQgdG8gYWxsb2NhdGUgd3JpdGVi YWNrIGpvYnMgYW5kIGNhbiBpZ25vcmUKPiA+IGNvbm5lY3RvcnMgd2l0aG91dCBhIGpvYiwgYXMg aXQgaXMgY2FsbGVkIGFmdGVyIHRoZSB3cml0ZWJhY2sgam9icyBhcmUKPiA+IGFsbG9jYXRlZCB0 byBzdG9yZSBmcmFtZWJ1ZmZlcnMsIGFuZCBhIHdyaXRlYmFjayBmZW5jZSB3aXRoIGEKPiA+IGZy YW1lYnVmZmVyIGlzIGFuIGludmFsaWQgY29uZmlndXJhdGlvbiB0aGF0IGdldHMgcmVqZWN0ZWQg YnkgdGhlIGNvbW1pdAo+ID4gY2hlY2suCj4gPiAKPiA+IFNpZ25lZC1vZmYtYnk6IExhdXJlbnQg UGluY2hhcnQgPGxhdXJlbnQucGluY2hhcnQrcmVuZXNhc0BpZGVhc29uYm9hcmQuY29tPgo+IAo+ IEkgcHJvYmFibHkgbmVlZCB0byByZXZpc2l0IHRoaXMgd2l0aCBmcmVzaCBleWVzIHRvbW9ycm93 LCBidXQgaG93IGNvbWUKPiB0aGUgcHJlcGFyZWQtbmVzcyBhbmQgd2hhdGV2ZXIgaXMgYmVpbmcg cHJlcGFyZWQgY2FuJ3QgYmUgcHV0IGludG8gYQo+IHN1YmNsYXNzZWQgZnJhbWVidWZmZXI/IFRo YXQgc2VlbXMgbW9yZSBuYXR1cmFsIHRvIG1lLCB0aGFuIHRyYWNraW5nCj4gaXQgd2l0aCB0aGUg am9iLiBJdCdzIHJlYWxseSB0aGUgZnJhbWVidWZmZXIgd2UncmUgcHJlcGFyaW5nIGFmdGVyCj4g YWxsLgoKSW4gbXkgcGF0Y2ggc2VyaWVzIEkgaW5kZWVkIG5lZWQgdG8gdHJhY2sgaW5mb3JtYXRp b24gcmVsYXRlZCB0byB0aGUKZnJhbWVidWZmZXIgb25seSwgYnV0IGlzIGl0IGEgZ29vZCBpZGVh IHRvIGxpbWl0IHdyaXRlYmFjawpwcmVwYXJlL2NsZWFudXAgdG8gdGhhdCA/IE90aGVyIGRyaXZl cnMgbWF5IGhhdmUgZGlmZmVyZW50IG5lZWRzLgoKRnVydGhlcm1vcmUsIHRoZSBtYXBwaW5nIG5l ZWRzIHRvIGV4aXN0IGZvciB0aGUgbGlmZXRpbWUgb2YgdGhlCndyaXRlYmFjayBqb2IsIHNvIEkn ZCBoYXZlIHRvIGFkZCBhIGNvdW50ZXIgdG8gdGhlIGZyYW1lYnVmZmVyIHN1YmNsYXNzCnRvIHRy YWNrIHRoZXNlIHRvby4gV2hpbGUgZG9hYmxlLCBpdCBzdGFydHMgc291bmRpbmcgYSBiaXQgbGlr ZSBhIGhhY2ssCmFuZCBtYXkgY3JlYXRlIHJhY2UgY29uZGl0aW9ucy4KCj4gSSBndWVzcyBpZiB5 b3UgaGF2ZSB0aGUgc2FtZSBmcmFtZWJ1ZmZlciBpbiB1c2UgZm9yIG11bHRpcGxlIHRoaW5ncywK PiB5b3UgbWlnaHQgbmVlZCB0byB0cmFjayBpdCBzZXBhcmF0ZWx5PyBDYW4gdGhlIG1hcHBpbmdz IGJlIHNoYXJlZCBpbgo+IHRoYXQgY2FzZT8KClNwZWFraW5nIGFib3V0IG15IGNhc2UsIHRoZSBt YXBwaW5nIGlzIHBlci1DUlRDLCBzbyBpZiBJIHVzZSB0aGUgc2FtZQpmcmFtZWJ1ZmZlciBmb3Ig bXVsdGlwbGUgQ1JUQ3MgSSdkIG5lZWQgc2VwYXJhdGUgbWFwcGluZ3MuIE90aGVyIGRyaXZlcnMK bWF5IGhhdmUgc2ltcGxlciBvciBtb3JlIGNvbXBsZXggbmVlZHMuCgpXaGVuIHlvdSdsbCByZXZp c2l0IHRoaXMgd2l0aCBmcmVzaCBleWVzLCBJJ2QgbGlrZSB0byBrbm93IGlmIHlvdSB0aGluawpp dCB3b3VsZCBiZSB3b3J0aCBpdCByZXBsYWNpbmcgdGhlIHByaXYgcG9pbnRlciB3aXRoIGFsbG9j YXRlL2Rlc3Ryb3kKb3BlcmF0aW9ucyB0byBhbGxvdyBzdWJjbGFzc2luZyB0aGUgd3JpdGViYWNr IGpvYi4gV2UgY291bGQgcG9zc2libHkgZG8Kd2l0aG91dCB0aGUgZGVzdHJveSBvcGVyYXRpb24g aWYgd2UgbWFuZGF0ZSBlbWJlZGRpbmcgdGhlIHdyaXRlYmFjayBqb2IKYXMgdGhlIGZpcnN0IGZp ZWxkIG9mIHRoZSBzdWJjbGFzcyBhbmQgdXNhZ2Ugb2Yga21hbGxvYyAoJiBmcmllbmRzKSB0bwph bGxvY2F0ZSB0aGUgc3ViY2xhc3Mgc3RydWN0dXJlLiBXZSBjb3VsZCBldmVuIGRvIHdpdGhvdXQg dGhlIGFsbG9jYXRlCm9wZXJhdGlvbiBpZiB3ZSBqdXN0IHN0b3JlZCB0aGUgc2l6ZSBvZiB0aGUg c3ViY2xhc3MgaW4gdGhlIHdyaXRlYmFjawpjb25uZWN0b3IgaXRzZWxmLCBidXQgdGhhdCB3b3Vs ZCBkZXBhcnQgZnJvbSB3aGF0IHdlIHVzdWFsbHkgZG8gaW4gRFJNLgoKSSB3b3VsZCBhbHNvIGxp a2UgdG8ga25vdyBpZiBJIHNob3VsZCBjcmVhdGUgYSB3cml0ZWJhY2sgY29ubmVjdG9yCm9wZXJh dGlvbnMgc3RydWN0dXJlIHRvIHN0b3JlIHRoZSBwcmVwYXJlL2NsZWFudXAgYW5kIHBlcmhhcHMK YWxsb2NhdGUvZGVzdHJveSBvcGVyYXRpb25zIGluc3RlYWQgb2YgYWRkaW5nIHRoZW0gdG8gdGhl IGNvbm5lY3RvcgpoZWxwZXIgZnVuY3MuCgo+ID4gLS0tCj4gPiAgZHJpdmVycy9ncHUvZHJtL2Ry bV9hdG9taWNfaGVscGVyLmMgICAgICB8IDExICsrKysrKwo+ID4gIGRyaXZlcnMvZ3B1L2RybS9k cm1fYXRvbWljX3VhcGkuYyAgICAgICAgfCAzMSArKysrKy0tLS0tLS0tLS0tLQo+ID4gIGRyaXZl cnMvZ3B1L2RybS9kcm1fd3JpdGViYWNrLmMgICAgICAgICAgfCA0MyArKysrKysrKysrKysrKysr KysrKysrKysKPiA+ICBpbmNsdWRlL2RybS9kcm1fbW9kZXNldF9oZWxwZXJfdnRhYmxlcy5oIHwg IDcgKysrKwo+ID4gIGluY2x1ZGUvZHJtL2RybV93cml0ZWJhY2suaCAgICAgICAgICAgICAgfCAy OCArKysrKysrKysrKysrKy0KPiA+ICA1IGZpbGVzIGNoYW5nZWQsIDk2IGluc2VydGlvbnMoKyks IDI0IGRlbGV0aW9ucygtKQo+ID4gCj4gPiBUaGlzIHBhdGNoIGlzIGN1cnJlbnRseSBtaXNzaW5n IGRvY3VtZW50YXRpb24gZm9yIHRoZQo+ID4gLnByZXBhcmVfd3JpdGViYWNrX2pvYigpIGFuZCAu Y2xlYW51cF93cml0ZWJhY2tfam9iKCkgb3BlcmF0aW9ucy4gSSBwbGFuCj4gPiB0byBmaXggdGhp cywgYnV0IGZpcnN0IHdhbnRlZCBmZWVkYmFjayBvbiB0aGUgZGlyZWN0aW9uIHRha2VuLiBJJ20g bm90Cj4gPiBlbnRpcmVseSBoYXBweSB3aXRoIHRoZSBwcml2IHBvaW50ZXIgaW4gdGhlIGRybV93 cml0ZWJhY2tfam9iIHN0cnVjdHVyZSwKPiA+IGJ1dCBhZGRpbmcgYSBmdWxsIHN0YXRlIGR1cGxp Y2F0ZS9kZXN0cm95IG1hY2hpbmVyeSBmb3IgdGhhdCBzdHJ1Y3R1cmUKPiA+IHdhcyBlcXVhbGx5 IHVuYXBwZWFsaW5nIHRvIG1lLgo+ID4gCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2RybV9hdG9taWNfaGVscGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIu Ywo+ID4gaW5kZXggNmZlMjMwM2ZjY2Q5Li43MGE0ODg2YzZlNjUgMTAwNjQ0Cj4gPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYwo+ID4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2RybV9hdG9taWNfaGVscGVyLmMKPiA+IEBAIC0yMjQ1LDEwICsyMjQ1LDIxIEBAIEVYUE9S VF9TWU1CT0woZHJtX2F0b21pY19oZWxwZXJfY29tbWl0X2NsZWFudXBfZG9uZSk7Cj4gPiAgaW50 IGRybV9hdG9taWNfaGVscGVyX3ByZXBhcmVfcGxhbmVzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs Cj4gPiAgCQkJCSAgICAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ID4gIHsKPiA+ ICsJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcjsKPiA+ICsJc3RydWN0IGRybV9jb25u ZWN0b3Jfc3RhdGUgKm5ld19jb25uX3N0YXRlOwo+ID4gIAlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFu ZTsKPiA+ICAJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqbmV3X3BsYW5lX3N0YXRlOwo+ID4gIAlp bnQgcmV0LCBpLCBqOwo+ID4gIAo+ID4gKwlmb3JfZWFjaF9uZXdfY29ubmVjdG9yX2luX3N0YXRl KHN0YXRlLCBjb25uZWN0b3IsIG5ld19jb25uX3N0YXRlLCBpKSB7Cj4gPiArCQlpZiAoIW5ld19j b25uX3N0YXRlLT53cml0ZWJhY2tfam9iKQo+ID4gKwkJCWNvbnRpbnVlOwo+ID4gKwo+ID4gKwkJ cmV0ID0gZHJtX3dyaXRlYmFja19wcmVwYXJlX2pvYihuZXdfY29ubl9zdGF0ZS0+d3JpdGViYWNr X2pvYik7Cj4gPiArCQlpZiAocmV0IDwgMCkKPiA+ICsJCQlyZXR1cm4gcmV0Owo+ID4gKwl9Cj4g PiArCj4gPiAgCWZvcl9lYWNoX25ld19wbGFuZV9pbl9zdGF0ZShzdGF0ZSwgcGxhbmUsIG5ld19w bGFuZV9zdGF0ZSwgaSkgewo+ID4gIAkJY29uc3Qgc3RydWN0IGRybV9wbGFuZV9oZWxwZXJfZnVu Y3MgKmZ1bmNzOwo+ID4gIAo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRv bWljX3VhcGkuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX3VhcGkuYwo+ID4gaW5kZXgg YzQwODg5ODg4YTE2Li5lODAyMTUyYTAxYWQgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vZHJtX2F0b21pY191YXBpLmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWlj X3VhcGkuYwo+ID4gQEAgLTY0NywyOCArNjQ3LDE1IEBAIGRybV9hdG9taWNfcGxhbmVfZ2V0X3By b3BlcnR5KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ID4gIAlyZXR1cm4gMDsKPiA+ICB9Cj4g PiAgCj4gPiAtc3RhdGljIHN0cnVjdCBkcm1fd3JpdGViYWNrX2pvYiAqCj4gPiAtZHJtX2F0b21p Y19nZXRfd3JpdGViYWNrX2pvYihzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0 ZSkKPiA+IC17Cj4gPiAtCVdBUk5fT04oY29ubl9zdGF0ZS0+Y29ubmVjdG9yLT5jb25uZWN0b3Jf dHlwZSAhPSBEUk1fTU9ERV9DT05ORUNUT1JfV1JJVEVCQUNLKTsKPiA+IC0KPiA+IC0JaWYgKCFj b25uX3N0YXRlLT53cml0ZWJhY2tfam9iKQo+ID4gLQkJY29ubl9zdGF0ZS0+d3JpdGViYWNrX2pv YiA9Cj4gPiAtCQkJa3phbGxvYyhzaXplb2YoKmNvbm5fc3RhdGUtPndyaXRlYmFja19qb2IpLCBH RlBfS0VSTkVMKTsKPiA+IC0KPiA+IC0JcmV0dXJuIGNvbm5fc3RhdGUtPndyaXRlYmFja19qb2I7 Cj4gPiAtfQo+ID4gLQo+ID4gIHN0YXRpYyBpbnQgZHJtX2F0b21pY19zZXRfd3JpdGViYWNrX2Zi X2Zvcl9jb25uZWN0b3IoCj4gPiAgCQlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9z dGF0ZSwKPiA+ICAJCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiKQo+ID4gIHsKPiA+IC0Jc3Ry dWN0IGRybV93cml0ZWJhY2tfam9iICpqb2IgPQo+ID4gLQkJZHJtX2F0b21pY19nZXRfd3JpdGVi YWNrX2pvYihjb25uX3N0YXRlKTsKPiA+IC0JaWYgKCFqb2IpCj4gPiAtCQlyZXR1cm4gLUVOT01F TTsKPiA+ICsJaW50IHJldDsKPiA+ICAKPiA+IC0JZHJtX2ZyYW1lYnVmZmVyX2Fzc2lnbigmam9i LT5mYiwgZmIpOwo+ID4gKwlyZXQgPSBkcm1fd3JpdGViYWNrX3NldF9mYihjb25uX3N0YXRlLCBm Yik7Cj4gPiArCWlmIChyZXQgPCAwKQo+ID4gKwkJcmV0dXJuIHJldDsKPiA+ICAKPiA+ICAJaWYg KGZiKQo+ID4gIAkJRFJNX0RFQlVHX0FUT01JQygiU2V0IFtGQjolZF0gZm9yIGNvbm5lY3RvciBz dGF0ZSAlcFxuIiwKPiA+IEBAIC0xMTU4LDE5ICsxMTQ1LDE3IEBAIHN0YXRpYyBpbnQgcHJlcGFy ZV9zaWduYWxpbmcoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiA+ICAKPiA+ICAJZm9yX2VhY2hf bmV3X2Nvbm5lY3Rvcl9pbl9zdGF0ZShzdGF0ZSwgY29ubiwgY29ubl9zdGF0ZSwgaSkgewo+ID4g IAkJc3RydWN0IGRybV93cml0ZWJhY2tfY29ubmVjdG9yICp3Yl9jb25uOwo+ID4gLQkJc3RydWN0 IGRybV93cml0ZWJhY2tfam9iICpqb2I7Cj4gPiAgCQlzdHJ1Y3QgZHJtX291dF9mZW5jZV9zdGF0 ZSAqZjsKPiA+ICAJCXN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlOwo+ID4gIAkJczMyIF9fdXNlciAq ZmVuY2VfcHRyOwo+ID4gIAo+ID4gKwkJaWYgKCFjb25uX3N0YXRlLT53cml0ZWJhY2tfam9iKQo+ ID4gKwkJCWNvbnRpbnVlOwo+ID4gKwo+ID4gIAkJZmVuY2VfcHRyID0gZ2V0X291dF9mZW5jZV9m b3JfY29ubmVjdG9yKHN0YXRlLCBjb25uKTsKPiA+ICAJCWlmICghZmVuY2VfcHRyKQo+ID4gIAkJ CWNvbnRpbnVlOwo+ID4gIAo+ID4gLQkJam9iID0gZHJtX2F0b21pY19nZXRfd3JpdGViYWNrX2pv Yihjb25uX3N0YXRlKTsKPiA+IC0JCWlmICgham9iKQo+ID4gLQkJCXJldHVybiAtRU5PTUVNOwo+ ID4gLQo+ID4gIAkJZiA9IGtyZWFsbG9jKCpmZW5jZV9zdGF0ZSwgc2l6ZW9mKCoqZmVuY2Vfc3Rh dGUpICoKPiA+ICAJCQkgICAgICgqbnVtX2ZlbmNlcyArIDEpLCBHRlBfS0VSTkVMKTsKPiA+ICAJ CWlmICghZikKPiA+IEBAIC0xMTkyLDcgKzExNzcsNyBAQCBzdGF0aWMgaW50IHByZXBhcmVfc2ln bmFsaW5nKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gPiAgCQkJcmV0dXJuIHJldDsKPiA+ICAJ CX0KPiA+ICAKPiA+IC0JCWpvYi0+b3V0X2ZlbmNlID0gZmVuY2U7Cj4gPiArCQljb25uX3N0YXRl LT53cml0ZWJhY2tfam9iLT5vdXRfZmVuY2UgPSBmZW5jZTsKPiA+ICAJfQo+ID4gIAo+ID4gIAkv Kgo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fd3JpdGViYWNrLmMgYi9kcml2 ZXJzL2dwdS9kcm0vZHJtX3dyaXRlYmFjay5jCj4gPiBpbmRleCBhZmIxYWU2ZTBlY2IuLjQ2Nzhk NjFkNjM0YSAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fd3JpdGViYWNrLmMK PiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fd3JpdGViYWNrLmMKPiA+IEBAIC0yMzksNiAr MjM5LDQyIEBAIGludCBkcm1fd3JpdGViYWNrX2Nvbm5lY3Rvcl9pbml0KHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsCj4gPiAgfQo+ID4gIEVYUE9SVF9TWU1CT0woZHJtX3dyaXRlYmFja19jb25uZWN0 b3JfaW5pdCk7Cj4gPiAgCj4gPiAraW50IGRybV93cml0ZWJhY2tfc2V0X2ZiKHN0cnVjdCBkcm1f Y29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlLAo+ID4gKwkJCSBzdHJ1Y3QgZHJtX2ZyYW1lYnVm ZmVyICpmYikKPiA+ICt7Cj4gPiArCVdBUk5fT04oY29ubl9zdGF0ZS0+Y29ubmVjdG9yLT5jb25u ZWN0b3JfdHlwZSAhPSBEUk1fTU9ERV9DT05ORUNUT1JfV1JJVEVCQUNLKTsKPiA+ICsKPiA+ICsJ aWYgKCFjb25uX3N0YXRlLT53cml0ZWJhY2tfam9iKSB7Cj4gPiArCQljb25uX3N0YXRlLT53cml0 ZWJhY2tfam9iID0KPiA+ICsJCQlremFsbG9jKHNpemVvZigqY29ubl9zdGF0ZS0+d3JpdGViYWNr X2pvYiksIEdGUF9LRVJORUwpOwo+ID4gKwkJaWYgKCFjb25uX3N0YXRlLT53cml0ZWJhY2tfam9i KQo+ID4gKwkJCXJldHVybiAtRU5PTUVNOwo+ID4gKwo+ID4gKwkJY29ubl9zdGF0ZS0+d3JpdGVi YWNrX2pvYi0+Y29ubmVjdG9yID0KPiA+ICsJCQlkcm1fY29ubmVjdG9yX3RvX3dyaXRlYmFjayhj b25uX3N0YXRlLT5jb25uZWN0b3IpOwo+ID4gKwl9Cj4gPiArCj4gPiArCWRybV9mcmFtZWJ1ZmZl cl9hc3NpZ24oJmNvbm5fc3RhdGUtPndyaXRlYmFja19qb2ItPmZiLCBmYik7Cj4gPiArCXJldHVy biAwOwo+ID4gK30KPiA+ICsKPiA+ICtpbnQgZHJtX3dyaXRlYmFja19wcmVwYXJlX2pvYihzdHJ1 Y3QgZHJtX3dyaXRlYmFja19qb2IgKmpvYikKPiA+ICt7Cj4gPiArCXN0cnVjdCBkcm1fd3JpdGVi YWNrX2Nvbm5lY3RvciAqY29ubmVjdG9yID0gam9iLT5jb25uZWN0b3I7Cj4gPiArCWNvbnN0IHN0 cnVjdCBkcm1fY29ubmVjdG9yX2hlbHBlcl9mdW5jcyAqZnVuY3MgPQo+ID4gKwkJY29ubmVjdG9y LT5iYXNlLmhlbHBlcl9wcml2YXRlOwo+ID4gKwlpbnQgcmV0Owo+ID4gKwo+ID4gKwlpZiAoZnVu Y3MtPmNsZWFudXBfd3JpdGViYWNrX2pvYikgewo+ID4gKwkJcmV0ID0gZnVuY3MtPnByZXBhcmVf d3JpdGViYWNrX2pvYihjb25uZWN0b3IsIGpvYik7Cj4gPiArCQlpZiAocmV0IDwgMCkKPiA+ICsJ CQlyZXR1cm4gcmV0Owo+ID4gKwl9Cj4gPiArCj4gPiArCWpvYi0+cHJlcGFyZWQgPSB0cnVlOwo+ ID4gKwlyZXR1cm4gMDsKPiA+ICt9Cj4gPiArCj4gPiAgLyoqCj4gPiAgICogZHJtX3dyaXRlYmFj a19xdWV1ZV9qb2IgLSBRdWV1ZSBhIHdyaXRlYmFjayBqb2IgZm9yIGxhdGVyIHNpZ25hbGxpbmcK PiA+ICAgKiBAd2JfY29ubmVjdG9yOiBUaGUgd3JpdGViYWNrIGNvbm5lY3RvciB0byBxdWV1ZSBh IGpvYiBvbgo+ID4gQEAgLTI3NSw2ICszMTEsMTMgQEAgRVhQT1JUX1NZTUJPTChkcm1fd3JpdGVi YWNrX3F1ZXVlX2pvYik7Cj4gPiAgCj4gPiAgdm9pZCBkcm1fd3JpdGViYWNrX2NsZWFudXBfam9i KHN0cnVjdCBkcm1fd3JpdGViYWNrX2pvYiAqam9iKQo+ID4gIHsKPiA+ICsJc3RydWN0IGRybV93 cml0ZWJhY2tfY29ubmVjdG9yICpjb25uZWN0b3IgPSBqb2ItPmNvbm5lY3RvcjsKPiA+ICsJY29u c3Qgc3RydWN0IGRybV9jb25uZWN0b3JfaGVscGVyX2Z1bmNzICpmdW5jcyA9Cj4gPiArCQljb25u ZWN0b3ItPmJhc2UuaGVscGVyX3ByaXZhdGU7Cj4gPiArCj4gPiArCWlmIChqb2ItPnByZXBhcmVk ICYmIGZ1bmNzLT5jbGVhbnVwX3dyaXRlYmFja19qb2IpCj4gPiArCQlmdW5jcy0+Y2xlYW51cF93 cml0ZWJhY2tfam9iKGNvbm5lY3Rvciwgam9iKTsKPiA+ICsKPiA+ICAJaWYgKGpvYi0+ZmIpCj4g PiAgCQlkcm1fZnJhbWVidWZmZXJfcHV0KGpvYi0+ZmIpOwo+ID4gIAo+ID4gZGlmZiAtLWdpdCBh L2luY2x1ZGUvZHJtL2RybV9tb2Rlc2V0X2hlbHBlcl92dGFibGVzLmggYi9pbmNsdWRlL2RybS9k cm1fbW9kZXNldF9oZWxwZXJfdnRhYmxlcy5oCj4gPiBpbmRleCA2MTE0MmFhMGFiMjMuLjczZDAz ZmU2Njc5OSAxMDA2NDQKPiA+IC0tLSBhL2luY2x1ZGUvZHJtL2RybV9tb2Rlc2V0X2hlbHBlcl92 dGFibGVzLmgKPiA+ICsrKyBiL2luY2x1ZGUvZHJtL2RybV9tb2Rlc2V0X2hlbHBlcl92dGFibGVz LmgKPiA+IEBAIC00OSw2ICs0OSw4IEBACj4gPiAgICovCj4gPiAgCj4gPiAgZW51bSBtb2RlX3Nl dF9hdG9taWM7Cj4gPiArc3RydWN0IGRybV93cml0ZWJhY2tfY29ubmVjdG9yOwo+ID4gK3N0cnVj dCBkcm1fd3JpdGViYWNrX2pvYjsKPiA+ICAKPiA+ICAvKioKPiA+ICAgKiBzdHJ1Y3QgZHJtX2Ny dGNfaGVscGVyX2Z1bmNzIC0gaGVscGVyIG9wZXJhdGlvbnMgZm9yIENSVENzCj4gPiBAQCAtOTg5 LDYgKzk5MSwxMSBAQCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3Mgewo+ID4gIAkg Ki8KPiA+ICAJdm9pZCAoKmF0b21pY19jb21taXQpKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25u ZWN0b3IsCj4gPiAgCQkJICAgICAgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKnN0YXRlKTsK PiA+ICsKPiA+ICsJaW50ICgqcHJlcGFyZV93cml0ZWJhY2tfam9iKShzdHJ1Y3QgZHJtX3dyaXRl YmFja19jb25uZWN0b3IgKmNvbm5lY3RvciwKPiA+ICsJCQkJICAgICBzdHJ1Y3QgZHJtX3dyaXRl YmFja19qb2IgKmpvYik7Cj4gPiArCXZvaWQgKCpjbGVhbnVwX3dyaXRlYmFja19qb2IpKHN0cnVj dCBkcm1fd3JpdGViYWNrX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ID4gKwkJCQkgICAgICBzdHJ1 Y3QgZHJtX3dyaXRlYmFja19qb2IgKmpvYik7Cj4gPiAgfTsKPiA+ICAKPiA+ICAvKioKPiA+IGRp ZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fd3JpdGViYWNrLmggYi9pbmNsdWRlL2RybS9kcm1f d3JpdGViYWNrLmgKPiA+IGluZGV4IDQ3NjYyYzM2Mjc0My4uNzc3YzE0Yzg0N2YwIDEwMDY0NAo+ ID4gLS0tIGEvaW5jbHVkZS9kcm0vZHJtX3dyaXRlYmFjay5oCj4gPiArKysgYi9pbmNsdWRlL2Ry bS9kcm1fd3JpdGViYWNrLmgKPiA+IEBAIC03OSw2ICs3OSwyMCBAQCBzdHJ1Y3QgZHJtX3dyaXRl YmFja19jb25uZWN0b3Igewo+ID4gIH07Cj4gPiAgCj4gPiAgc3RydWN0IGRybV93cml0ZWJhY2tf am9iIHsKPiA+ICsJLyoqCj4gPiArCSAqIEBjb25uZWN0b3I6Cj4gPiArCSAqCj4gPiArCSAqIEJh Y2stcG9pbnRlciB0byB0aGUgd3JpdGViYWNrIGNvbm5lY3RvciBhc3NvY2lhdGVkIHdpdGggdGhl IGpvYgo+ID4gKwkgKi8KPiA+ICsJc3RydWN0IGRybV93cml0ZWJhY2tfY29ubmVjdG9yICpjb25u ZWN0b3I7Cj4gCj4gSXQga2luZC1vZiBmZWVscyBsaWtlIHRoaXMgc2hvdWxkbid0IGJlIG5lY2Vz c2FyeSwgYnV0IEkgdGhpbmsKPiBhdm9pZGluZyBpdCB3b3VsZCBtZWFuIGVpdGhlciBhbGxvY2F0 aW5nIHRoZSB3b3JrX3N0cnVjdCBvdXRzaWRlIG9mCj4gdGhlIGpvYiwgYW5kIHRyYWNraW5nIHRo ZSBjb25uZWN0b3IgdGhlcmUgaW5zdGVhZCBvZiBpbiB0aGUgam9iLCBvcgo+IGhhdmluZyB0d28g Y2FsbHMgdG8gdW5wcmVwYXJlIC0gb25lIGluIHNpZ25hbF9jb21wbGV0aW9uIGFuZCBvbmUgaW4K PiBkZXN0cm95X3N0YXRlLgoKSSBkb24ndCBsaWtlIHRoZSBzZWNvbmQgb3B0aW9uIGFzIHVucHJl cGFyZSBjb3VsZCBwb3RlbnRpYWxseSBiZSBjb3N0bHksCmFuZCBzaG91bGQgdGh1cyBub3QgYmUg Y2FsbGVkIGZyb20gc2lnbmFsX2NvbXBsZXRpb24gdGhhdCBtYXkgcnVuIGluCmludGVycnVwdCBj b250ZXh0LiBUaGUgZmlyc3Qgb3B0aW9uIGlzIGRvYWJsZSwgYnV0IEkgdGhpbmsgaXQgd2lsbApy ZXN1bHQgaW4gZXZlbiB3b3JzZSBjb2RlLgoKPiBJdCdzIHByb2JhYmx5IG5vdCB3b3J0aCB0aGUg Z3ltbmFzdGljcyB0byBhdm9pZCB0aGUgYmFja3BvaW50ZXIuLi4gYnV0Cj4gZm9yIHNvbWUgcmVh c29uIHRoZSBiYWNrcG9pbnRlciBmZWVscyBpbnRhbmdpYmx5IGRpcnR5IHRvIG1lLgoKQSB3cml0 ZWJhY2sgam9iIGV4aXN0cyBpbiB0aGUgY29udGV4dCBvZiBhIHdyaXRlYmFjayBjb25uZWN0b3Is IHdoeSBkbwp5b3UgZmVlbCB0aGUgYmFja3BvaW50ZXIgaXMgZGlydHkgPwoKPiA+ICsKPiA+ICsJ LyoqCj4gPiArCSAqIEBwcmVwYXJlZDoKPiA+ICsJICoKPiA+ICsJICogU2V0IHdoZW4gdGhlIGpv YiBoYXMgYmVlbiBwcmVwYXJlZCB3aXRoIGRybV93cml0ZWJhY2tfcHJlcGFyZV9qb2IoKQo+ID4g KwkgKi8KPiA+ICsJYm9vbCBwcmVwYXJlZDsKPiA+ICsKPiA+ICAJLyoqCj4gPiAgCSAqIEBjbGVh bnVwX3dvcms6Cj4gPiAgCSAqCj4gPiBAQCAtOTgsNyArMTEyLDcgQEAgc3RydWN0IGRybV93cml0 ZWJhY2tfam9iIHsKPiA+ICAJICogQGZiOgo+ID4gIAkgKgo+ID4gIAkgKiBGcmFtZWJ1ZmZlciB0 byBiZSB3cml0dGVuIHRvIGJ5IHRoZSB3cml0ZWJhY2sgY29ubmVjdG9yLiBEbyBub3Qgc2V0Cj4g PiAtCSAqIGRpcmVjdGx5LCB1c2UgZHJtX2F0b21pY19zZXRfd3JpdGViYWNrX2ZiX2Zvcl9jb25u ZWN0b3IoKQo+ID4gKwkgKiBkaXJlY3RseSwgdXNlIGRybV93cml0ZWJhY2tfc2V0X2ZiKCkKPiA+ ICAJICovCj4gPiAgCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiOwo+ID4gIAo+ID4gQEAgLTEw OCw2ICsxMjIsMTMgQEAgc3RydWN0IGRybV93cml0ZWJhY2tfam9iIHsKPiA+ICAJICogRmVuY2Ug d2hpY2ggd2lsbCBzaWduYWwgb25jZSB0aGUgd3JpdGViYWNrIGhhcyBjb21wbGV0ZWQKPiA+ICAJ ICovCj4gPiAgCXN0cnVjdCBkbWFfZmVuY2UgKm91dF9mZW5jZTsKPiA+ICsKPiA+ICsJLyoqCj4g PiArCSAqIEBwcml2Ogo+ID4gKwkgKgo+ID4gKwkgKiBEcml2ZXItcHJpdmF0ZSBkYXRhCj4gPiAr CSAqLwo+ID4gKwl2b2lkICpwcml2Owo+ID4gIH07Cj4gPiAgCj4gPiAgc3RhdGljIGlubGluZSBz dHJ1Y3QgZHJtX3dyaXRlYmFja19jb25uZWN0b3IgKgo+ID4gQEAgLTEyMiw2ICsxNDMsMTEgQEAg aW50IGRybV93cml0ZWJhY2tfY29ubmVjdG9yX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwK PiA+ICAJCQkJIGNvbnN0IHN0cnVjdCBkcm1fZW5jb2Rlcl9oZWxwZXJfZnVuY3MgKmVuY19oZWxw ZXJfZnVuY3MsCj4gPiAgCQkJCSBjb25zdCB1MzIgKmZvcm1hdHMsIGludCBuX2Zvcm1hdHMpOwo+ ID4gIAo+ID4gK2ludCBkcm1fd3JpdGViYWNrX3NldF9mYihzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9z dGF0ZSAqY29ubl9zdGF0ZSwKPiA+ICsJCQkgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIpOwo+ ID4gKwo+ID4gK2ludCBkcm1fd3JpdGViYWNrX3ByZXBhcmVfam9iKHN0cnVjdCBkcm1fd3JpdGVi YWNrX2pvYiAqam9iKTsKPiA+ICsKPiA+ICB2b2lkIGRybV93cml0ZWJhY2tfcXVldWVfam9iKHN0 cnVjdCBkcm1fd3JpdGViYWNrX2Nvbm5lY3RvciAqd2JfY29ubmVjdG9yLAo+ID4gIAkJCSAgICAg c3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGUpOwo+ID4gIAoKLS0gClJlZ2Fy ZHMsCgpMYXVyZW50IFBpbmNoYXJ0Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2RyaS1kZXZlbA==