From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [RFC] drm/atomic+msm: add helper to implement legacy dirtyfb Date: Wed, 4 Apr 2018 14:18:43 +0200 Message-ID: <20180404121843.GL3881@phenom.ffwll.local> References: <20180403224225.26776-1-robdclark@gmail.com> <20180404100300.GE3881@phenom.ffwll.local> <20180404102108.GF3881@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: Rob Clark Cc: Thomas Hellstrom , David Airlie , linux-arm-msm , Maarten Lankhorst , Linux Kernel Mailing List , dri-devel , Sean Paul , Ville =?iso-8859-1?Q?Syrj=E4l=E4?= , Daniel Vetter , Gustavo Padovan , Deepak Singh Rawat , freedreno , Lukasz Spintzyk List-Id: linux-arm-msm@vger.kernel.org T24gV2VkLCBBcHIgMDQsIDIwMTggYXQgMDc6MzU6NThBTSAtMDQwMCwgUm9iIENsYXJrIHdyb3Rl Ogo+IE9uIFdlZCwgQXByIDQsIDIwMTggYXQgNjoyMSBBTSwgRGFuaWVsIFZldHRlciA8ZGFuaWVs QGZmd2xsLmNoPiB3cm90ZToKPiA+IE9uIFdlZCwgQXByIDA0LCAyMDE4IGF0IDEyOjAzOjAwUE0g KzAyMDAsIERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4gPj4gT24gVHVlLCBBcHIgMDMsIDIwMTggYXQg MDY6NDI6MjNQTSAtMDQwMCwgUm9iIENsYXJrIHdyb3RlOgo+ID4+ID4gQWRkIGFuIGF0b21pYyBo ZWxwZXIgdG8gaW1wbGVtZW50IGRpcnR5ZmIgc3VwcG9ydC4gIFRoaXMgaXMgbmVlZGVkIHRvCj4g Pj4gPiBzdXBwb3J0IERTSSBjb21tYW5kLW1vZGUgcGFuZWxzIHdpdGggeDExIHVzZXJzcGFjZSAo aWUuIHdoZW4gd2UgY2FuJ3QKPiA+PiA+IHJlbHkgb24gcGFnZWZsaXBzIHRvIHRyaWdnZXIgYSBm bHVzaCB0byB0aGUgcGFuZWwpLgo+ID4+ID4KPiA+PiA+IFRvIHNpZ25hbCB0byB0aGUgZHJpdmVy IHRoYXQgdGhlIGFzeW5jIGF0b21pYyB1cGRhdGUgbmVlZHMgdG8KPiA+PiA+IHN5bmNocm9uaXpl IHdpdGggZmVuY2VzLCBldmVuIHRob3VnaCB0aGUgZmIgZGlkbid0IGNoYW5nZSwgdGhlCj4gPj4g PiBkcm1fYXRvbWljX3N0YXRlOjpkaXJ0eSBmbGFnIGlzIGFkZGVkLgo+ID4+ID4KPiA+PiA+IFNp Z25lZC1vZmYtYnk6IFJvYiBDbGFyayA8cm9iZGNsYXJrQGdtYWlsLmNvbT4KPiA+PiA+IC0tLQo+ ID4+ID4gQmFja2dyb3VuZDogdGhlcmUgYXJlIGEgbnVtYmVyIG9mIGRpZmZlcmVudCBmb2xrcyB3 b3JraW5nIG9uIGdldHRpbmcKPiA+PiA+IHVwc3RyZWFtIGtlcm5lbCB3b3JraW5nIG9uIHZhcmlv dXMgZGlmZmVyZW50IHBob25lcy90YWJsZXRzIHdpdGggcWNvbQo+ID4+ID4gU29DJ3MuLiBtYW55 IG9mIHRoZW0gaGF2ZSBjb21tYW5kIG1vZGUgcGFuZWxzLCBzbyB3ZSBraW5kIG9mIG5lZWQgYQo+ ID4+ID4gd2F5IHRvIHN1cHBvcnQgdGhlIGxlZ2FjeSBkaXJ0eWZiIGlvY3RsIGZvciB4MTEgc3Vw cG9ydC4KPiA+PiA+Cj4gPj4gPiBJIGtub3cgdGhlcmUgaXMgd29yayBvbiBhIHByb3ByZXIgbm9u LWxlZ2FjeSBhdG9taWMgcHJvcGVydHkgZm9yCj4gPj4gPiB1c2Vyc3BhY2UgdG8gY29tbXVuaWNh dGUgZGlydHktcmVjdChzKSB0byB0aGUga2VybmVsLCBzbyB0aGlzIGNhbgo+ID4+ID4gYmUgaW1w cm92ZWQgZnJvbSB0cmlnZ2VyaW5nIGEgZnVsbC1mcmFtZSBmbHVzaCBvbmNlIHRoYXQgaXMgaW4K PiA+PiA+IHBsYWNlLiAgQnV0IHdlIGtpbmRhIG5lZWRhIGEgc3RvcC1nYXAgc29sdXRpb24uCj4g Pj4gPgo+ID4+ID4gSSBoYWQgY29uc2lkZXJlZCBhbiBpbi1kcml2ZXIgc29sdXRpb24gZm9yIHRo aXMsIGJ1dCB0aGluZ3MgZ2V0IGEKPiA+PiA+IGJpdCB0cmlja3kgaWYgdXNlcnNwYWNlIGFuZHMg dXAgY29tYmluaW5nIGRpcnR5ZmIgaW9jdGxzIHdpdGggcGFnZS0KPiA+PiA+IGZsaXBzLCBiZWNh dXNlIHdlIG5lZWQgdG8gc3luY2hyb25pemUgc2V0dGluZyB2YXJpb3VzIENUTC5GTFVTSCBiaXRz Cj4gPj4gPiB3aXRoIHNldHRpbmcgdGhlIENUTC5TVEFSVCBiaXQuICAoaWUuIHJlYWxseSBhbGwg d2UgbmVlZCB0byBkbyBmb3IKPiA+PiA+IGNtZCBtb2RlIHBhbmVscyBpcyBiYW5nIENUTC5TVEFS VCwgYnV0IGlzIHRoaXMgZW5kcyB1cCByYWNpbmcgd2l0aAo+ID4+ID4gcGFnZWZsaXBzIHNldHRp bmcgRkxVU0ggYml0cywgdGhlbiBiYWQgdGhpbmdzLikgIFRoZSBlYXNpZXN0IHNvbG4KPiA+PiA+ IGlzIHRvIHdyYXAgdGhpcyB1cCBhcyBhbiBhdG9taWMgY29tbWl0IGFuZCByZWx5IG9uIHRoZSB3 b3JrZXIgdG8KPiA+PiA+IHNlcmlhbGl6ZSB0aGluZ3MuICBIZW5jZSBhZGRpbmcgYW4gYXRvbWlj IGRpcnR5ZmIgaGVscGVyLgo+ID4+ID4KPiA+PiA+IEkgZ3Vlc3MgYXQgbGVhc3QgdGhlIGhlbHBl ciwgd2l0aCBzb21lIHNtYWxsIGFkZGl0aW9uIHRvIHRyYW5zbGF0ZQo+ID4+ID4gYW5kIHBhc3Mt dGhydSB0aGUgZGlydHkgcmVjdChzKSBpcyB1c2VmdWwgdG8gdGhlIGZpbmFsIGF0b21pYyBkaXJ0 eS0KPiA+PiA+IHJlY3QgcHJvcGVydHkgc29sdXRpb24uICBEZXBlbmRpbmcgb24gaG93IGZhciBv ZmYgdGhhdCBpcywgYSBzdG9wLQo+ID4+ID4gZ2FwIHNvbHV0aW9uIGNvdWxkIGJlIHVzZWZ1bC4K PiA+PiA+Cj4gPj4gPiAgZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMgfCA2NiAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gPj4gPiAgZHJpdmVycy9ncHUv ZHJtL21zbS9tc21fYXRvbWljLmMgICAgfCAgNSArKy0KPiA+PiA+ICBkcml2ZXJzL2dwdS9kcm0v bXNtL21zbV9mYi5jICAgICAgICB8ICAxICsKPiA+PiA+ICBpbmNsdWRlL2RybS9kcm1fYXRvbWlj X2hlbHBlci5oICAgICB8ICA0ICsrKwo+ID4+ID4gIGluY2x1ZGUvZHJtL2RybV9wbGFuZS5oICAg ICAgICAgICAgIHwgIDkgKysrKysKPiA+PiA+ICA1IGZpbGVzIGNoYW5nZWQsIDg0IGluc2VydGlv bnMoKyksIDEgZGVsZXRpb24oLSkKPiA+PiA+Cj4gPj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19o ZWxwZXIuYwo+ID4+ID4gaW5kZXggYzM1NjU0NTkxYzEyLi5hNTc4ZGM2ODFiMjcgMTAwNjQ0Cj4g Pj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYwo+ID4+ID4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMKPiA+PiA+IEBAIC0zNTA0LDYg KzM1MDQsNyBAQCB2b2lkIF9fZHJtX2F0b21pY19oZWxwZXJfcGxhbmVfZHVwbGljYXRlX3N0YXRl KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ID4+ID4gICAgIGlmIChzdGF0ZS0+ZmIpCj4gPj4g PiAgICAgICAgICAgICBkcm1fZnJhbWVidWZmZXJfZ2V0KHN0YXRlLT5mYik7Cj4gPj4gPgo+ID4+ ID4gKyAgIHN0YXRlLT5kaXJ0eSA9IGZhbHNlOwo+ID4+ID4gICAgIHN0YXRlLT5mZW5jZSA9IE5V TEw7Cj4gPj4gPiAgICAgc3RhdGUtPmNvbW1pdCA9IE5VTEw7Cj4gPj4gPiAgfQo+ID4+ID4gQEAg LTM4NDcsNiArMzg0OCw3MSBAQCBpbnQgZHJtX2F0b21pY19oZWxwZXJfbGVnYWN5X2dhbW1hX3Nl dChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gPj4gPiAgfQo+ID4+ID4gIEVYUE9SVF9TWU1CT0wo ZHJtX2F0b21pY19oZWxwZXJfbGVnYWN5X2dhbW1hX3NldCk7Cj4gPj4gPgo+ID4+ID4gKy8qKgo+ ID4+ID4gKyAqIGRybV9hdG9taWNfaGVscGVyX2RpcnR5ZmIgLSBoZWxwZXIgZm9yIGRpcnR5ZmIK PiA+PiA+ICsgKgo+ID4+ID4gKyAqIEEgaGVscGVyIHRvIGltcGxlbWVudCBkcm1fZnJhbWVidWZm ZXJfZnVuY3M6OmRpcnR5Cj4gPj4gPiArICovCj4gPj4gPiAraW50IGRybV9hdG9taWNfaGVscGVy X2RpcnR5ZmIoc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsCj4gPj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2LCB1bnNpZ25lZCBmbGFncywK PiA+PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY29sb3IsIHN0cnVjdCBk cm1fY2xpcF9yZWN0ICpjbGlwcywKPiA+PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgdW5z aWduZWQgbnVtX2NsaXBzKQo+ID4+ID4gK3sKPiA+PiA+ICsgICBzdHJ1Y3QgZHJtX21vZGVzZXRf YWNxdWlyZV9jdHggY3R4Owo+ID4+ID4gKyAgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0 ZTsKPiA+PiA+ICsgICBzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZTsKPiA+PiA+ICsgICBpbnQgcmV0 ID0gMDsKPiA+PiA+ICsKPiA+PiA+ICsgICAvKgo+ID4+ID4gKyAgICAqIFdoZW4gY2FsbGVkIGZy b20gaW9jdGwsIHdlIGFyZSBpbnRlcnJ1cHRhYmxlLCBidXQgbm90IHdoZW4KPiA+PiA+ICsgICAg KiBjYWxsZWQgaW50ZXJuYWxseSAoaWUuIGRlZmlvIHdvcmtlcikKPiA+PiA+ICsgICAgKi8KPiA+ PiA+ICsgICBkcm1fbW9kZXNldF9hY3F1aXJlX2luaXQoJmN0eCwKPiA+PiA+ICsgICAgICAgICAg IGZpbGVfcHJpdiA/IERSTV9NT0RFU0VUX0FDUVVJUkVfSU5URVJSVVBUSUJMRSA6IDApOwo+ID4+ ID4gKwo+ID4+ID4gKyAgIHN0YXRlID0gZHJtX2F0b21pY19zdGF0ZV9hbGxvYyhmYi0+ZGV2KTsK PiA+PiA+ICsgICBpZiAoIXN0YXRlKSB7Cj4gPj4gPiArICAgICAgICAgICByZXQgPSAtRU5PTUVN Owo+ID4+ID4gKyAgICAgICAgICAgZ290byBvdXQ7Cj4gPj4gPiArICAgfQo+ID4+ID4gKyAgIHN0 YXRlLT5hY3F1aXJlX2N0eCA9ICZjdHg7Cj4gPj4gPiArCj4gPj4gPiArcmV0cnk6Cj4gPj4gPiAr ICAgZHJtX2Zvcl9lYWNoX3BsYW5lKHBsYW5lLCBmYi0+ZGV2KSB7Cj4gPj4gPiArICAgICAgICAg ICBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZTsKPiA+PiA+ICsKPiA+PiA+ICsg ICAgICAgICAgIGlmIChwbGFuZS0+c3RhdGUtPmZiICE9IGZiKQo+ID4+ID4gKyAgICAgICAgICAg ICAgICAgICBjb250aW51ZTsKPiA+PiA+ICsKPiA+PiA+ICsgICAgICAgICAgIHBsYW5lX3N0YXRl ID0gZHJtX2F0b21pY19nZXRfcGxhbmVfc3RhdGUoc3RhdGUsIHBsYW5lKTsKPiA+PiA+ICsgICAg ICAgICAgIGlmIChJU19FUlIocGxhbmVfc3RhdGUpKSB7Cj4gPj4gPiArICAgICAgICAgICAgICAg ICAgIHJldCA9IFBUUl9FUlIocGxhbmVfc3RhdGUpOwo+ID4+ID4gKyAgICAgICAgICAgICAgICAg ICBnb3RvIG91dDsKPiA+PiA+ICsgICAgICAgICAgIH0KPiA+PiA+ICsKPiA+PiA+ICsgICAgICAg ICAgIHBsYW5lX3N0YXRlLT5kaXJ0eSA9IHRydWU7Cj4gPj4gPiArICAgfQo+ID4+ID4gKwo+ID4+ ID4gKyAgIHJldCA9IGRybV9hdG9taWNfbm9uYmxvY2tpbmdfY29tbWl0KHN0YXRlKTsKPiA+PiA+ ICsKPiA+PiA+ICtvdXQ6Cj4gPj4gPiArICAgaWYgKHJldCA9PSAtRURFQURMSykgewo+ID4+ID4g KyAgICAgICAgICAgZHJtX2F0b21pY19zdGF0ZV9jbGVhcihzdGF0ZSk7Cj4gPj4gPiArICAgICAg ICAgICByZXQgPSBkcm1fbW9kZXNldF9iYWNrb2ZmKCZjdHgpOwo+ID4+ID4gKyAgICAgICAgICAg aWYgKCFyZXQpCj4gPj4gPiArICAgICAgICAgICAgICAgICAgIGdvdG8gcmV0cnk7Cj4gPj4gPiAr ICAgfQo+ID4+ID4gKwo+ID4+ID4gKyAgIGRybV9hdG9taWNfc3RhdGVfcHV0KHN0YXRlKTsKPiA+ PiA+ICsKPiA+PiA+ICsgICBkcm1fbW9kZXNldF9kcm9wX2xvY2tzKCZjdHgpOwo+ID4+ID4gKyAg IGRybV9tb2Rlc2V0X2FjcXVpcmVfZmluaSgmY3R4KTsKPiA+PiA+ICsKPiA+PiA+ICsgICByZXR1 cm4gcmV0Owo+ID4+ID4gKwo+ID4+ID4gK30KPiA+PiA+ICtFWFBPUlRfU1lNQk9MKGRybV9hdG9t aWNfaGVscGVyX2RpcnR5ZmIpOwo+ID4+ID4gKwo+ID4+ID4gIC8qKgo+ID4+ID4gICAqIF9fZHJt X2F0b21pY19oZWxwZXJfcHJpdmF0ZV9kdXBsaWNhdGVfc3RhdGUgLSBjb3B5IGF0b21pYyBwcml2 YXRlIHN0YXRlCj4gPj4gPiAgICogQG9iajogQ1JUQyBvYmplY3QKPiA+PiA+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9hdG9taWMuYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20v bXNtX2F0b21pYy5jCj4gPj4gPiBpbmRleCBiZjVmOGMzOWYzNGQuLmJiNTVhMDQ4ZTk4YiAxMDA2 NDQKPiA+PiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2F0b21pYy5jCj4gPj4gPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9hdG9taWMuYwo+ID4+ID4gQEAgLTIwMSw3ICsy MDEsMTAgQEAgaW50IG1zbV9hdG9taWNfY29tbWl0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4g Pj4gPiAgICAgICogRmlndXJlIG91dCB3aGF0IGZlbmNlIHRvIHdhaXQgZm9yOgo+ID4+ID4gICAg ICAqLwo+ID4+ID4gICAgIGZvcl9lYWNoX29sZG5ld19wbGFuZV9pbl9zdGF0ZShzdGF0ZSwgcGxh bmUsIG9sZF9wbGFuZV9zdGF0ZSwgbmV3X3BsYW5lX3N0YXRlLCBpKSB7Cj4gPj4gPiAtICAgICAg ICAgICBpZiAoKG5ld19wbGFuZV9zdGF0ZS0+ZmIgIT0gb2xkX3BsYW5lX3N0YXRlLT5mYikgJiYg bmV3X3BsYW5lX3N0YXRlLT5mYikgewo+ID4+ID4gKyAgICAgICAgICAgYm9vbCBzeW5jX2ZiID0g bmV3X3BsYW5lX3N0YXRlLT5mYiAmJgo+ID4+ID4gKyAgICAgICAgICAgICAgICAgICAoKG5ld19w bGFuZV9zdGF0ZS0+ZmIgIT0gb2xkX3BsYW5lX3N0YXRlLT5mYikgfHwKPiA+PiA+ICsgICAgICAg ICAgICAgICAgICAgIG5ld19wbGFuZV9zdGF0ZS0+ZGlydHkpOwo+ID4+Cj4gPj4gV2h5IGRvIHlv dSBoYXZlIHRoaXMgb3B0aW1pemF0aW9uIGV2ZW4gaGVyZT8gSW1vIGZsaXBwaW5nIHRvIHRoZSBz YW1lIGZiCj4gPj4gc2hvdWxkIHJlc3VsdCBpbiB0aGUgZmIgZ2V0dGluZyBmdWxseSB1cGxvYWRl ZCwgd2hldGhlciB5b3UncmUgZG9pbmcgYQo+ID4+IGxlZ2FjeSBwYWdlX2ZsaXAsIGFuZCBhdG9t aWMgb25lIG9yIGp1c3QgYSBwbGFuZSB1cGRhdGUuCj4gPj4KPiA+PiBJaXJjIHNvbWUgdXNlcnNw YWNlIGRvZXMgdXNlIHRoYXQgYXMgZXNzZW50aWFsbHkgYSBmdWxsLXBsYW5lIGZyb250YnVmZmVy Cj4gPj4gcmVuZGVyaW5nIGZsdXNoIGFscmVhZHkuIElPVyBJIGRvbid0IHRoaW5rIHdlIG5lZWQg eW91cgo+ID4+IHBsYW5lX3N0YXRlLT5kaXJ0eSwgaXQncyBpbXBsaWVkIHRvIGFsd2F5cyBiZSB0 cnVlIC0gd2h5IHdvdWxkIHVzZXJzcGFjZQo+ID4+IGRvIGEgZmxpcCBvdGhlcndpc2U/Cj4gPj4K PiA+PiBUaGUgaGVscGVyIGl0c2VsZiB0byBtYXAgZGlydHlmYiB0byBhIG5vbmJsb2NraW5nIGF0 b21pYyBjb21taXQgbG9va3MKPiA+PiByZWFzb25hYmxlLCBidXQgbWlzc2VzIGEgYnVuY2ggb2Yg dGhlIHRyaWNrZXJ5IGRpc2N1c3NlZCB3aXRoIE5vcmFsZiBhbmQKPiA+PiBvdGhlcnMgSSB0aGlu ay4KPiA+Cj4gPiBPaywgSSd2ZSBkb25lIHNvbWUgaGlzdG9yeSBkaWdnaW5nOgo+ID4KPiA+IC0g aTkxNSBhbmQgbm91dmVhdSB1bmNvbmRpdGlvbmFsbHkgd2FpdCBmb3IgZmVuY2VzLCBldmVuIGZv ciBzYW1lLWZiCj4gPiAgIGZsaXBzLgo+ID4gLSBubyBpZGVhIHdoYXQgYW1kZ3B1IGFuZCB2bXdn ZnggYXJlIGRvaW5nLCB0aGV5J3JlIG5vdCB1c2luZwo+ID4gICBwbGFuZV9zdGF0ZS0+ZmVuY2Ug Zm9yIGltcGxpY2l0IGZlbmNlcy4KPiA+IC0gbW9zdCBhcm0tc29jIGRyaXZlcnMgZG8gaGF2ZSB0 aGlzICJvcHRpbWl6YXRpb24iIGluIHRoZWlyIGNvZGUsIGFuZCBpdAo+ID4gICBldmVuIG1hbmFn ZWQgdG8gZ2V0IGludG8gdGhlIG5ldyBkcm1fZ2VtX2ZiX3ByZXBhcmVfZmIgaGVscGVyICh3aGlj aCBJCj4gPiAgIHJldmlld2VkLCBvciB3ZWxsIGNsYWltZWQgdG8gaGF2ZSAuLi4gb29wcykuIEFm YWljdCBpdCBnb2VzIGJhY2sgdG8gdGhlCj4gPiAgIG9yaWdpbmFsIG1zbSBhdG9taWMgY29kZSwg YW5kIHdhcyB0aGVuIGR1dGlmdWxseSBjb3B5cGFzdGVkIGFsbCBvdmVyIHRoZQo+ID4gICBwbGFj ZS4KPiA+Cj4gPiBJZiBmb2xrcyBhcmUgb2sgSSdsbCBkbyBhIHBhdGNoIHNlcmllcyB0byBhbGln biBkcml2ZXJzIHdpdGggaTkxNS9ub3V2ZWF1Lgo+ID4gV2VsbCwgYW55IGRyaXZlciB1c2luZyBy ZXNlcnZhdGlvbl9vYmplY3RfZ2V0X2V4Y2xfcmN1ICsKPiA+IGRybV9hdG9taWNfc2V0X2ZlbmNl X2Zvcl9wbGFuZSBjb21ibywgc2luY2UgYW1kZ3B1IGFuZCB2bXdnZnggZG9uJ3QgSSBoYXZlCj4g PiBubyBpZGVhIHdoYXQgdGhleSdyZSBkb2luZyBvciB3aGV0aGVyIHRoZXkgbWlnaHQgaGF2ZSB0 aGUgc2FtZSBidWcuCj4gCj4gaWYgeW91IGRvIGEgcGF0Y2ggc2VyaWVzLCBJIHRoaW5rIGRvIGl0 IHRoZSBvdGhlciB3YXkgYXJvdW5kIGFuZCBhbGlnbgo+IHRvIG1zbSA7LSkKClRoZSBwcm9ibGVt IGlzIHRoYXQgdGhpcyB3b3VsZCBicmVhayBpOTE1IHVzZXJzcGFjZSBhZmFpaywgd2hpY2ggSSB0 aGluawppcyB1c2luZyBhIGZyb250YnVmZmVyIHBhZ2UgZmxpcCB0byBmbHVzaCBvdXQgdXBsb2Fk cyAoYW5kIHJlLWVuYWJsZSBzZWxmCnJlZnJlc2ggYW5kIHN0dWZmIGxpa2UgdGhhdCkuIFNvIHRo YXQgd2UgY2FuJ3QgZG8gZWFzaWx5LgoKPiBJIHRoaW5rIG90aGVyd2lzZSB3ZSBjb3VsZCBlbmQg dXAgc3RhbGxpbmcgd2hpbGUgeDExIGRvZXMgZnJvbnQgYnVmZmVyCj4gcmVuZGVyaW5nIGZvciBz b21ldGhpbmcgdW5yZWxhdGVkIChtYXliZSBJIHdhcyBoaXR0aW5nIHRoYXQgd2l0aAo+IGN1cnNv ciB1cGRhdGVzPykKCldoeSB3b3VsZCB5b3Ugc3RhbGwgb24gc29tZXRoaW5nIHVucmVsYXRlZCBp ZiB3ZSB1bmNvbmRpdGlvbmFsbHkgZmlzaCBvdXQKdGhlIGZlbmNlPyBFc3BlY2lhbGx5IGN1cnNv ciByZW5kZXJpbmcgaXNuJ3QgZG9uZSB0aHJvdWdoIHRoZSBncHUgYXQgYWxsCmFmYWlrLgotRGFu aWVsCgo+IAo+IEJSLAo+IC1SCj4gCj4gPiBGcm9tIGxvb2tpbmcgYXQgYXQgbGVhc3QgdGhlIHZh cmlvdXMgcHJlcGFyZV9mYiBjYWxsYmFja3MgSSBkb24ndCBzZWUgYW55Cj4gPiBvdGhlciBkcml2 ZXJzIGRvaW5nIGZ1bm55IHN0dWZmIGFyb3VuZCBpbXBsaWNpdCBmZW5jZXMuCj4gPiAtRGFuaWVs Cj4gPgo+ID4+ID4gKyAgICAgICAgICAgaWYgKHN5bmNfZmIpIHsKPiA+PiA+ICAgICAgICAgICAg ICAgICAgICAgc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmogPSBtc21fZnJhbWVidWZmZXJfYm8o bmV3X3BsYW5lX3N0YXRlLT5mYiwgMCk7Cj4gPj4gPiAgICAgICAgICAgICAgICAgICAgIHN0cnVj dCBtc21fZ2VtX29iamVjdCAqbXNtX29iaiA9IHRvX21zbV9ibyhvYmopOwo+ID4+ID4gICAgICAg ICAgICAgICAgICAgICBzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZSA9IHJlc2VydmF0aW9uX29iamVj dF9nZXRfZXhjbF9yY3UobXNtX29iai0+cmVzdik7Cj4gPj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL21zbS9tc21fZmIuYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2ZiLmMKPiA+ PiA+IGluZGV4IDBlMGM4NzI1MmFiMC4uYTVkODgyYTM0YTMzIDEwMDY0NAo+ID4+ID4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZmIuYwo+ID4+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJt L21zbS9tc21fZmIuYwo+ID4+ID4gQEAgLTYyLDYgKzYyLDcgQEAgc3RhdGljIHZvaWQgbXNtX2Zy YW1lYnVmZmVyX2Rlc3Ryb3koc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIpCj4gPj4gPiAgc3Rh dGljIGNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXJfZnVuY3MgbXNtX2ZyYW1lYnVmZmVyX2Z1 bmNzID0gewo+ID4+ID4gICAgIC5jcmVhdGVfaGFuZGxlID0gbXNtX2ZyYW1lYnVmZmVyX2NyZWF0 ZV9oYW5kbGUsCj4gPj4gPiAgICAgLmRlc3Ryb3kgPSBtc21fZnJhbWVidWZmZXJfZGVzdHJveSwK PiA+PiA+ICsgICAuZGlydHkgPSBkcm1fYXRvbWljX2hlbHBlcl9kaXJ0eWZiLAo+ID4+ID4gIH07 Cj4gPj4gPgo+ID4+ID4gICNpZmRlZiBDT05GSUdfREVCVUdfRlMKPiA+PiA+IGRpZmYgLS1naXQg YS9pbmNsdWRlL2RybS9kcm1fYXRvbWljX2hlbHBlci5oIGIvaW5jbHVkZS9kcm0vZHJtX2F0b21p Y19oZWxwZXIuaAo+ID4+ID4gaW5kZXggMjZhYWJhNThkNmNlLi45YjdhOTVjMjY0M2QgMTAwNjQ0 Cj4gPj4gPiAtLS0gYS9pbmNsdWRlL2RybS9kcm1fYXRvbWljX2hlbHBlci5oCj4gPj4gPiArKysg Yi9pbmNsdWRlL2RybS9kcm1fYXRvbWljX2hlbHBlci5oCj4gPj4gPiBAQCAtMTgzLDYgKzE4Mywx MCBAQCBpbnQgZHJtX2F0b21pY19oZWxwZXJfbGVnYWN5X2dhbW1hX3NldChzdHJ1Y3QgZHJtX2Ny dGMgKmNydGMsCj4gPj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUxNiAq cmVkLCB1MTYgKmdyZWVuLCB1MTYgKmJsdWUsCj4gPj4gPiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHVpbnQzMl90IHNpemUsCj4gPj4gPiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHN0cnVjdCBkcm1fbW9kZXNldF9hY3F1aXJlX2N0eCAqY3R4KTsKPiA+PiA+ ICtpbnQgZHJtX2F0b21pY19oZWxwZXJfZGlydHlmYihzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpm YiwKPiA+PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRybV9maWxlICpmaWxl X3ByaXYsIHVuc2lnbmVkIGZsYWdzLAo+ID4+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICB1 bnNpZ25lZCBjb2xvciwgc3RydWN0IGRybV9jbGlwX3JlY3QgKmNsaXBzLAo+ID4+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBudW1fY2xpcHMpOwo+ID4+ID4gIHZvaWQgX19k cm1fYXRvbWljX2hlbHBlcl9wcml2YXRlX29ial9kdXBsaWNhdGVfc3RhdGUoc3RydWN0IGRybV9w cml2YXRlX29iaiAqb2JqLAo+ID4+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHN0cnVjdCBkcm1fcHJpdmF0ZV9zdGF0ZSAqc3RhdGUpOwo+ID4+ID4K PiA+PiA+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fcGxhbmUuaCBiL2luY2x1ZGUvZHJt L2RybV9wbGFuZS5oCj4gPj4gPiBpbmRleCBmN2JmNGE0OGIxYzMuLjI5NmZhMjJiZGE3YSAxMDA2 NDQKPiA+PiA+IC0tLSBhL2luY2x1ZGUvZHJtL2RybV9wbGFuZS5oCj4gPj4gPiArKysgYi9pbmNs dWRlL2RybS9kcm1fcGxhbmUuaAo+ID4+ID4gQEAgLTc2LDYgKzc2LDE1IEBAIHN0cnVjdCBkcm1f cGxhbmVfc3RhdGUgewo+ID4+ID4gICAgICAqLwo+ID4+ID4gICAgIHN0cnVjdCBkcm1fZnJhbWVi dWZmZXIgKmZiOwo+ID4+ID4KPiA+PiA+ICsgICAvKioKPiA+PiA+ICsgICAgKiBAZGlydHk6Cj4g Pj4gPiArICAgICoKPiA+PiA+ICsgICAgKiBGbGFnIHRoYXQgaW5kaWNhdGVzIHRoZSBmYiBjb250 ZW50cyBoYXZlIGNoYW5nZWQgZXZlbiB0aG91Z2ggdGhlCj4gPj4gPiArICAgICogZmIgaGFzIG5v dC4gIFRoaXMgaXMgbW9zdGx5IGEgc3RvcC1nYXAgc29sdXRpb24gdW50aWwgd2UgaGF2ZQo+ID4+ ID4gKyAgICAqIGF0b21pYyBkaXJ0eS1yZWN0KHMpIHByb3BlcnR5Lgo+ID4+ID4gKyAgICAqLwo+ ID4+ID4gKyAgIGJvb2wgZGlydHk7Cj4gPj4gPiArCj4gPj4gPiAgICAgLyoqCj4gPj4gPiAgICAg ICogQGZlbmNlOgo+ID4+ID4gICAgICAqCj4gPj4gPiAtLQo+ID4+ID4gMi4xNC4zCj4gPj4gPgo+ ID4+Cj4gPj4gLS0KPiA+PiBEYW5pZWwgVmV0dGVyCj4gPj4gU29mdHdhcmUgRW5naW5lZXIsIElu dGVsIENvcnBvcmF0aW9uCj4gPj4gaHR0cDovL2Jsb2cuZmZ3bGwuY2gKPiA+Cj4gPiAtLQo+ID4g RGFuaWVsIFZldHRlcgo+ID4gU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCj4g PiBodHRwOi8vYmxvZy5mZndsbC5jaAoKLS0gCkRhbmllbCBWZXR0ZXIKU29mdHdhcmUgRW5naW5l ZXIsIEludGVsIENvcnBvcmF0aW9uCmh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkZyZWVkcmVubyBtYWlsaW5nIGxpc3QK RnJlZWRyZW5vQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZyZWVkcmVubwo=