From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 2/2] drm/vkms: Add support for writeback Date: Fri, 7 Jun 2019 09:53:11 +0200 Message-ID: <20190607075311.GD21222@phenom.ffwll.local> References: <0acd74232d988970668298be0111c485bc68ec87.1559860606.git.rodrigosiqueiramelo@gmail.com> <20190607074808.GC21222@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-ed1-x544.google.com (mail-ed1-x544.google.com [IPv6:2a00:1450:4864:20::544]) by gabe.freedesktop.org (Postfix) with ESMTPS id 073AB89CDE for ; Fri, 7 Jun 2019 07:53:15 +0000 (UTC) Received: by mail-ed1-x544.google.com with SMTP id f20so1657901edt.12 for ; Fri, 07 Jun 2019 00:53:14 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20190607074808.GC21222@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Rodrigo Siqueira Cc: Haneen Mohammed , Simon Ser , Liviu Dudau , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gRnJpLCBKdW4gMDcsIDIwMTkgYXQgMDk6NDg6MDhBTSArMDIwMCwgRGFuaWVsIFZldHRlciB3 cm90ZToKPiBPbiBUaHUsIEp1biAwNiwgMjAxOSBhdCAwNzo0MTowMVBNIC0wMzAwLCBSb2RyaWdv IFNpcXVlaXJhIHdyb3RlOgo+ID4gVGhpcyBwYXRjaCBpbXBsZW1lbnRzIHRoZSBuZWNlc3Nhcnkg ZnVuY3Rpb25zIHRvIGFkZCB3cml0ZWJhY2sgc3VwcG9ydAo+ID4gZm9yIHZrbXMuIFRoaXMgZmVh dHVyZSBpcyB1c2VmdWwgZm9yIHRlc3RpbmcgY29tcG9zaXRvcnMgaWYgeW91IGRvbuKAmXQKPiA+ IGhhdmUgaGFyZHdhcmUgd2l0aCB3cml0ZWJhY2sgc3VwcG9ydC4KPiA+IAo+ID4gU2lnbmVkLW9m Zi1ieTogUm9kcmlnbyBTaXF1ZWlyYSA8cm9kcmlnb3NpcXVlaXJhbWVsb0BnbWFpbC5jb20+Cj4g PiAtLS0KPiA+ICBkcml2ZXJzL2dwdS9kcm0vdmttcy9NYWtlZmlsZSAgICAgICAgIHwgICA5ICst Cj4gPiAgZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19jcnRjLmMgICAgICB8ICAgNSArCj4gPiAg ZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19kcnYuYyAgICAgICB8ICAxMCArKwo+ID4gIGRyaXZl cnMvZ3B1L2RybS92a21zL3ZrbXNfZHJ2LmggICAgICAgfCAgMTIgKysKPiA+ICBkcml2ZXJzL2dw dS9kcm0vdmttcy92a21zX291dHB1dC5jICAgIHwgICA2ICsKPiA+ICBkcml2ZXJzL2dwdS9kcm0v dmttcy92a21zX3dyaXRlYmFjay5jIHwgMTY1ICsrKysrKysrKysrKysrKysrKysrKysrKysrCj4g PiAgNiBmaWxlcyBjaGFuZ2VkLCAyMDYgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQo+ID4g IGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX3dyaXRlYmFjay5j Cj4gPiAKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdmttcy9NYWtlZmlsZSBiL2Ry aXZlcnMvZ3B1L2RybS92a21zL01ha2VmaWxlCj4gPiBpbmRleCA4OWYwOWJlYzdiMjMuLjkwZWI3 YWNkNjE4ZCAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS92a21zL01ha2VmaWxlCj4g PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vdmttcy9NYWtlZmlsZQo+ID4gQEAgLTEsNCArMSwxMSBA QAo+ID4gICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQo+ID4gLXZrbXMt eSA6PSB2a21zX2Rydi5vIHZrbXNfcGxhbmUubyB2a21zX291dHB1dC5vIHZrbXNfY3J0Yy5vIHZr bXNfZ2VtLm8gdmttc19jcmMubwo+ID4gK3ZrbXMteSA6PSBcCj4gPiArCXZrbXNfZHJ2Lm8gXAo+ ID4gKwl2a21zX3BsYW5lLm8gXAo+ID4gKwl2a21zX291dHB1dC5vIFwKPiA+ICsJdmttc19jcnRj Lm8gXAo+ID4gKwl2a21zX2dlbS5vIFwKPiA+ICsJdmttc19jcmMubyBcCj4gPiArCXZrbXNfd3Jp dGViYWNrLm8KPiA+ICAKPiA+ICBvYmotJChDT05GSUdfRFJNX1ZLTVMpICs9IHZrbXMubwo+ID4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfY3J0Yy5jIGIvZHJpdmVycy9n cHUvZHJtL3ZrbXMvdmttc19jcnRjLmMKPiA+IGluZGV4IDFiYmUwOTliN2RiOC4uY2U3OTdlMjY1 YjFiIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19jcnRjLmMKPiA+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfY3J0Yy5jCj4gPiBAQCAtMjMsNiArMjMs MTEgQEAgc3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IHZrbXNfdmJsYW5rX3NpbXVsYXRlKHN0 cnVjdCBocnRpbWVyICp0aW1lcikKPiA+ICAJaWYgKCFyZXQpCj4gPiAgCQlEUk1fRVJST1IoInZr bXMgZmFpbHVyZSBvbiBoYW5kbGluZyB2YmxhbmsiKTsKPiA+ICAKPiA+ICsJaWYgKG91dHB1dC0+ d3JpdGViYWNrX3N0YXR1cyA9PSBXQl9TVEFSVCkgewo+ID4gKwkJZHJtX3dyaXRlYmFja19zaWdu YWxfY29tcGxldGlvbigmb3V0cHV0LT53Yl9jb25uZWN0b3IsIDApOwo+ID4gKwkJb3V0cHV0LT53 cml0ZWJhY2tfc3RhdHVzID0gV0JfU1RPUDsKPiA+ICsJfQo+ID4gKwo+ID4gIAlpZiAoc3RhdGUg JiYgb3V0cHV0LT5jcmNfZW5hYmxlZCkgewo+ID4gIAkJdTY0IGZyYW1lID0gZHJtX2NydGNfYWNj dXJhdGVfdmJsYW5rX2NvdW50KGNydGMpOwo+ID4gIAo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS92a21zL3ZrbXNfZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX2Rydi5j Cj4gPiBpbmRleCA5MjI5NmJkOGY2MjMuLmQ1OTE3ZDVhNDVlMyAxMDA2NDQKPiA+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfZHJ2LmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS92 a21zL3ZrbXNfZHJ2LmMKPiA+IEBAIC0yOSw2ICsyOSwxMCBAQCBib29sIGVuYWJsZV9jdXJzb3I7 Cj4gPiAgbW9kdWxlX3BhcmFtX25hbWVkKGVuYWJsZV9jdXJzb3IsIGVuYWJsZV9jdXJzb3IsIGJv b2wsIDA0NDQpOwo+ID4gIE1PRFVMRV9QQVJNX0RFU0MoZW5hYmxlX2N1cnNvciwgIkVuYWJsZS9E aXNhYmxlIGN1cnNvciBzdXBwb3J0Iik7Cj4gPiAgCj4gPiAraW50IGVuYWJsZV93cml0ZWJhY2s7 Cj4gPiArbW9kdWxlX3BhcmFtX25hbWVkKGVuYWJsZV93cml0ZWJhY2ssIGVuYWJsZV93cml0ZWJh Y2ssIGludCwgMDQ0NCk7Cj4gPiArTU9EVUxFX1BBUk1fREVTQyhlbmFibGVfd3JpdGViYWNrLCAi RW5hYmxlL0Rpc2FibGUgd3JpdGViYWNrIGNvbm5lY3RvciIpOwo+ID4gKwo+ID4gIHN0YXRpYyBj b25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHZrbXNfZHJpdmVyX2ZvcHMgPSB7Cj4gPiAgCS5v d25lcgkJPSBUSElTX01PRFVMRSwKPiA+ICAJLm9wZW4JCT0gZHJtX29wZW4sCj4gPiBAQCAtMTIz LDYgKzEyNywxMiBAQCBzdGF0aWMgaW50IF9faW5pdCB2a21zX2luaXQodm9pZCkKPiA+ICAJCWdv dG8gb3V0X2Zpbmk7Cj4gPiAgCX0KPiA+ICAKPiA+ICsJdmttc19kZXZpY2UtPm91dHB1dC53cml0 ZWJhY2tfc3RhdHVzID0gV0JfRElTQUJMRUQ7Cj4gPiArCWlmIChlbmFibGVfd3JpdGViYWNrKSB7 Cj4gPiArCQl2a21zX2RldmljZS0+b3V0cHV0LndyaXRlYmFja19zdGF0dXMgPSBXQl9TVE9QOwo+ ID4gKwkJRFJNX0lORk8oIldyaXRlYmFjayBjb25uZWN0b3IgZW5hYmxlZCIpOwo+ID4gKwl9Cj4g PiArCj4gPiAgCXJldCA9IHZrbXNfbW9kZXNldF9pbml0KHZrbXNfZGV2aWNlKTsKPiA+ICAJaWYg KHJldCkKPiA+ICAJCWdvdG8gb3V0X2Zpbmk7Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL3ZrbXMvdmttc19kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfZHJ2LmgKPiA+ IGluZGV4IGU4MTA3M2RlYTE1NC4uY2ExZjllZTYzZWM4IDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL3ZrbXMvdmttc19kcnYuaAo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3ZrbXMv dmttc19kcnYuaAo+ID4gQEAgLTcsNiArNyw3IEBACj4gPiAgI2luY2x1ZGUgPGRybS9kcm0uaD4K PiA+ICAjaW5jbHVkZSA8ZHJtL2RybV9nZW0uaD4KPiA+ICAjaW5jbHVkZSA8ZHJtL2RybV9lbmNv ZGVyLmg+Cj4gPiArI2luY2x1ZGUgPGRybS9kcm1fd3JpdGViYWNrLmg+Cj4gPiAgI2luY2x1ZGUg PGxpbnV4L2hydGltZXIuaD4KPiA+ICAKPiA+ICAjZGVmaW5lIFhSRVNfTUlOICAgIDIwCj4gPiBA QCAtNjAsMTQgKzYxLDIyIEBAIHN0cnVjdCB2a21zX2NydGNfc3RhdGUgewo+ID4gIAl1NjQgZnJh bWVfZW5kOwo+ID4gIH07Cj4gPiAgCj4gPiArZW51bSB3Yl9zdGF0dXMgewo+ID4gKwlXQl9ESVNB QkxFRCwKPiA+ICsJV0JfU1RBUlQsCj4gPiArCVdCX1NUT1AsCj4gPiArfTsKPiA+ICsKPiA+ICBz dHJ1Y3Qgdmttc19vdXRwdXQgewo+ID4gIAlzdHJ1Y3QgZHJtX2NydGMgY3J0YzsKPiA+ICAJc3Ry dWN0IGRybV9lbmNvZGVyIGVuY29kZXI7Cj4gPiAgCXN0cnVjdCBkcm1fY29ubmVjdG9yIGNvbm5l Y3RvcjsKPiA+ICsJc3RydWN0IGRybV93cml0ZWJhY2tfY29ubmVjdG9yIHdiX2Nvbm5lY3RvcjsK PiA+ICAJc3RydWN0IGhydGltZXIgdmJsYW5rX2hydGltZXI7Cj4gPiAgCWt0aW1lX3QgcGVyaW9k X25zOwo+ID4gIAlzdHJ1Y3QgZHJtX3BlbmRpbmdfdmJsYW5rX2V2ZW50ICpldmVudDsKPiA+ICAJ Ym9vbCBjcmNfZW5hYmxlZDsKPiA+ICsJZW51bSB3Yl9zdGF0dXMgd3JpdGViYWNrX3N0YXR1czsK PiA+ICAJLyogb3JkZXJlZCB3cSBmb3IgY3JjX3dvcmsgKi8KPiA+ICAJc3RydWN0IHdvcmtxdWV1 ZV9zdHJ1Y3QgKmNyY193b3JrcTsKPiA+ICAJLyogcHJvdGVjdHMgY29uY3VycmVudCBhY2Nlc3Mg dG8gY3JjX2RhdGEgKi8KPiA+IEBAIC0xNDEsNCArMTUwLDcgQEAgaW50IHZrbXNfdmVyaWZ5X2Ny Y19zb3VyY2Uoc3RydWN0IGRybV9jcnRjICpjcnRjLCBjb25zdCBjaGFyICpzb3VyY2VfbmFtZSwK PiA+ICAJCQkgICBzaXplX3QgKnZhbHVlc19jbnQpOwo+ID4gIHZvaWQgdmttc19jcmNfd29ya19o YW5kbGUoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTsKPiA+ICAKPiA+ICsvKiBXcml0ZWJhY2sg Ki8KPiA+ICtpbnQgZW5hYmxlX3dyaXRlYmFja19jb25uZWN0b3Ioc3RydWN0IHZrbXNfZGV2aWNl ICp2a21zZGV2KTsKPiA+ICsKPiA+ICAjZW5kaWYgLyogX1ZLTVNfRFJWX0hfICovCj4gPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19vdXRwdXQuYyBiL2RyaXZlcnMvZ3B1 L2RybS92a21zL3ZrbXNfb3V0cHV0LmMKPiA+IGluZGV4IDE0NDJiNDQ3YzcwNy4uMWZjMWQ0ZTk1 ODVjIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19vdXRwdXQuYwo+ ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19vdXRwdXQuYwo+ID4gQEAgLTkxLDYg KzkxLDEyIEBAIGludCB2a21zX291dHB1dF9pbml0KHN0cnVjdCB2a21zX2RldmljZSAqdmttc2Rl diwgaW50IGluZGV4KQo+ID4gIAkJZ290byBlcnJfYXR0YWNoOwo+ID4gIAl9Cj4gPiAgCj4gPiAr CWlmICh2a21zZGV2LT5vdXRwdXQud3JpdGViYWNrX3N0YXR1cyAhPSBXQl9ESVNBQkxFRCkgewo+ ID4gKwkJcmV0ID0gZW5hYmxlX3dyaXRlYmFja19jb25uZWN0b3Iodmttc2Rldik7Cj4gPiArCQlp ZiAocmV0KQo+ID4gKwkJCURSTV9FUlJPUigiRmFpbGVkIHRvIGluaXQgd3JpdGViYWNrIGNvbm5l Y3RvclxuIik7Cj4gPiArCX0KPiA+ICsKPiA+ICAJZHJtX21vZGVfY29uZmlnX3Jlc2V0KGRldik7 Cj4gPiAgCj4gPiAgCXJldHVybiAwOwo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92 a21zL3ZrbXNfd3JpdGViYWNrLmMgYi9kcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX3dyaXRlYmFj ay5jCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi5mN2I5 NjJhZTU2NDYKPiA+IC0tLSAvZGV2L251bGwKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS92a21z L3ZrbXNfd3JpdGViYWNrLmMKPiA+IEBAIC0wLDAgKzEsMTY1IEBACj4gPiArLy8gU1BEWC1MaWNl bnNlLUlkZW50aWZpZXI6IEdQTC0yLjArCj4gPiArCj4gPiArI2luY2x1ZGUgInZrbXNfZHJ2Lmgi Cj4gPiArI2luY2x1ZGUgPGRybS9kcm1fd3JpdGViYWNrLmg+Cj4gPiArI2luY2x1ZGUgPGRybS9k cm1fcHJvYmVfaGVscGVyLmg+Cj4gPiArI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljX2hlbHBlci5o Pgo+ID4gKyNpbmNsdWRlIDxkcm0vZHJtX2dlbV9mcmFtZWJ1ZmZlcl9oZWxwZXIuaD4KPiA+ICsK PiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3JfZnVuY3Mgdmttc193Yl9jb25u ZWN0b3JfZnVuY3MgPSB7Cj4gPiArCS5maWxsX21vZGVzID0gZHJtX2hlbHBlcl9wcm9iZV9zaW5n bGVfY29ubmVjdG9yX21vZGVzLAo+ID4gKwkuZGVzdHJveSA9IGRybV9jb25uZWN0b3JfY2xlYW51 cCwKPiA+ICsJLnJlc2V0ID0gZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX3Jlc2V0LAo+ID4g KwkuYXRvbWljX2R1cGxpY2F0ZV9zdGF0ZSA9IGRybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9k dXBsaWNhdGVfc3RhdGUsCj4gPiArCS5hdG9taWNfZGVzdHJveV9zdGF0ZSA9IGRybV9hdG9taWNf aGVscGVyX2Nvbm5lY3Rvcl9kZXN0cm95X3N0YXRlLAo+ID4gK307Cj4gPiArCj4gPiArc3RhdGlj IGludCB2a21zX3diX2VuY29kZXJfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5j b2RlciwKPiA+ICsJCQkJCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiA+ICsJ CQkJCXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlKQo+ID4gK3sKPiA+ICsJ c3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmI7Cj4gPiArCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxh eV9tb2RlICptb2RlID0gJmNydGNfc3RhdGUtPm1vZGU7Cj4gPiArCj4gPiArCWlmICghY29ubl9z dGF0ZS0+d3JpdGViYWNrX2pvYiB8fCAhY29ubl9zdGF0ZS0+d3JpdGViYWNrX2pvYi0+ZmIpCj4g PiArCQlyZXR1cm4gMDsKPiA+ICsKPiA+ICsJZmIgPSBjb25uX3N0YXRlLT53cml0ZWJhY2tfam9i LT5mYjsKPiA+ICsJaWYgKGZiLT53aWR0aCAhPSBtb2RlLT5oZGlzcGxheSB8fCBmYi0+aGVpZ2h0 ICE9IG1vZGUtPnZkaXNwbGF5KSB7Cj4gPiArCQlEUk1fREVCVUdfS01TKCJJbnZhbGlkIGZyYW1l YnVmZmVyIHNpemUgJXV4JXVcbiIsCj4gPiArCQkJICAgICAgZmItPndpZHRoLCBmYi0+aGVpZ2h0 KTsKPiA+ICsJCXJldHVybiAtRUlOVkFMOwo+ID4gKwl9Cj4gPiArCj4gPiArCWlmIChmYi0+Zm9y bWF0LT5mb3JtYXQgIT0gRFJNX0ZPUk1BVF9YUkdCODg4OCkgewo+ID4gKwkJc3RydWN0IGRybV9m b3JtYXRfbmFtZV9idWYgZm9ybWF0X25hbWU7Cj4gPiArCj4gPiArCQlEUk1fREVCVUdfS01TKCJJ bnZhbGlkIHBpeGVsIGZvcm1hdCAlc1xuIiwKPiA+ICsJCQkgICAgICBkcm1fZ2V0X2Zvcm1hdF9u YW1lKGZiLT5mb3JtYXQtPmZvcm1hdCwKPiA+ICsJCQkJCQkgICZmb3JtYXRfbmFtZSkpOwo+ID4g KwkJcmV0dXJuIC1FSU5WQUw7Cj4gPiArCX0KPiA+ICsKPiA+ICsJcmV0dXJuIDA7Cj4gPiArfQo+ ID4gKwo+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2VuY29kZXJfaGVscGVyX2Z1bmNzIHZr bXNfd2JfZW5jb2Rlcl9oZWxwZXJfZnVuY3MgPSB7Cj4gPiArCS5hdG9taWNfY2hlY2sgPSB2a21z X3diX2VuY29kZXJfYXRvbWljX2NoZWNrLAo+ID4gK307Cj4gPiArCj4gPiArc3RhdGljIGludCB2 a21zX3diX2Nvbm5lY3Rvcl9nZXRfbW9kZXMoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rv cikKPiA+ICt7Cj4gPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjb25uZWN0b3ItPmRldjsK PiA+ICsKPiA+ICsJcmV0dXJuIGRybV9hZGRfbW9kZXNfbm9lZGlkKGNvbm5lY3RvciwgZGV2LT5t b2RlX2NvbmZpZy5tYXhfd2lkdGgsCj4gPiArCQkJCSAgICBkZXYtPm1vZGVfY29uZmlnLm1heF9o ZWlnaHQpOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgaW50IHZrbXNfd2JfcHJlcGFyZV9qb2Io c3RydWN0IGRybV93cml0ZWJhY2tfY29ubmVjdG9yICp3Yl9jb25uZWN0b3IsCj4gPiArCQkJICAg ICAgIHN0cnVjdCBkcm1fd3JpdGViYWNrX2pvYiAqam9iKQo+ID4gK3sKPiA+ICsJc3RydWN0IHZr bXNfZ2VtX29iamVjdCAqdmttc19vYmo7Cj4gPiArCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqZ2Vt X29iajsKPiA+ICsJaW50IHJldDsKPiA+ICsKPiA+ICsJaWYgKCFqb2ItPmZiKQo+ID4gKwkJcmV0 dXJuIDA7Cj4gPiArCj4gPiArCWdlbV9vYmogPSBkcm1fZ2VtX2ZiX2dldF9vYmooam9iLT5mYiwg MCk7Cj4gPiArCXJldCA9IHZrbXNfZ2VtX3ZtYXAoZ2VtX29iaik7Cj4gPiArCWlmIChyZXQpIHsK PiA+ICsJCURSTV9FUlJPUigidm1hcCBmYWlsZWQ6ICVkXG4iLCByZXQpOwo+ID4gKwkJcmV0dXJu IHJldDsKPiA+ICsJfQo+ID4gKwo+ID4gKwl2a21zX29iaiA9IGRybV9nZW1fdG9fdmttc19nZW0o Z2VtX29iaik7Cj4gPiArCWpvYi0+cHJpdiA9IHZrbXNfb2JqLT52YWRkcjsKPiA+ICsKPiA+ICsJ cmV0dXJuIDA7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyB2b2lkIHZrbXNfd2JfY2xlYW51cF9q b2Ioc3RydWN0IGRybV93cml0ZWJhY2tfY29ubmVjdG9yICpjb25uZWN0b3IsCj4gPiArCQkJCXN0 cnVjdCBkcm1fd3JpdGViYWNrX2pvYiAqam9iKQo+ID4gK3sKPiA+ICsJc3RydWN0IGRybV9nZW1f b2JqZWN0ICpnZW1fb2JqOwo+ID4gKwo+ID4gKwlpZiAoIWpvYi0+ZmIpCj4gPiArCQlyZXR1cm47 Cj4gPiArCj4gPiArCWdlbV9vYmogPSBkcm1fZ2VtX2ZiX2dldF9vYmooam9iLT5mYiwgMCk7Cj4g PiArCXZrbXNfZ2VtX3Z1bm1hcChnZW1fb2JqKTsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIHZv aWQgdmttc193Yl9hdG9taWNfY29tbWl0KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uLAo+ID4g KwkJCQkgIHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpzdGF0ZSkKPiA+ICt7Cj4gPiArCXN0 cnVjdCB2a21zX2RldmljZSAqdmttc2RldiA9IGRybV9kZXZpY2VfdG9fdmttc19kZXZpY2UoY29u bi0+ZGV2KTsKPiA+ICsJc3RydWN0IHZrbXNfb3V0cHV0ICpvdXRwdXQgPSAmdmttc2Rldi0+b3V0 cHV0Owo+ID4gKwlzdHJ1Y3QgZHJtX3dyaXRlYmFja19jb25uZWN0b3IgKndiX2Nvbm4gPSAmb3V0 cHV0LT53Yl9jb25uZWN0b3I7Cj4gPiArCXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25u X3N0YXRlID0gd2JfY29ubi0+YmFzZS5zdGF0ZTsKPiA+ICsJdm9pZCAqcHJpdl9kYXRhID0gY29u bl9zdGF0ZS0+d3JpdGViYWNrX2pvYi0+cHJpdjsKPiA+ICsJc3RydWN0IHZrbXNfY3JjX2RhdGEg KnByaW1hcnlfZGF0YSA9IE5VTEw7Cj4gPiArCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0g TlVMTDsKPiA+ICsJc3RydWN0IHZrbXNfZ2VtX29iamVjdCAqdmttc19vYmo7Cj4gPiArCXN0cnVj dCBkcm1fZ2VtX29iamVjdCAqZ2VtX29iajsKPiA+ICsJc3RydWN0IGRybV9wbGFuZSAqcGxhbmU7 Cj4gPiArCj4gPiArCWlmICghY29ubl9zdGF0ZSkKPiA+ICsJCXJldHVybjsKPiA+ICsKPiA+ICsJ aWYgKCFjb25uX3N0YXRlLT53cml0ZWJhY2tfam9iIHx8ICFjb25uX3N0YXRlLT53cml0ZWJhY2tf am9iLT5mYikgewo+ID4gKwkJb3V0cHV0LT53cml0ZWJhY2tfc3RhdHVzID0gV0JfU1RPUDsKPiA+ ICsJCURSTV9ERUJVR19EUklWRVIoIkRpc2FibGUgd3JpdGViYWNrXG4iKTsKPiA+ICsJCXJldHVy bjsKPiA+ICsJfQo+ID4gKwo+ID4gKwlkcm1fZm9yX2VhY2hfcGxhbmUocGxhbmUsICZ2a21zZGV2 LT5kcm0pIHsKPiA+ICsJCXN0cnVjdCB2a21zX3BsYW5lX3N0YXRlICp2cGxhbmVfc3RhdGU7Cj4g PiArCQlzdHJ1Y3Qgdmttc19jcmNfZGF0YSAqcGxhbmVfZGF0YTsKPiA+ICsKPiA+ICsJCXZwbGFu ZV9zdGF0ZSA9IHRvX3ZrbXNfcGxhbmVfc3RhdGUocGxhbmUtPnN0YXRlKTsKPiA+ICsJCXBsYW5l X2RhdGEgPSB2cGxhbmVfc3RhdGUtPmNyY19kYXRhOwo+ID4gKwo+ID4gKwkJaWYgKGRybV9mcmFt ZWJ1ZmZlcl9yZWFkX3JlZmNvdW50KCZwbGFuZV9kYXRhLT5mYikgPT0gMCkKPiA+ICsJCQljb250 aW51ZTsKPiA+ICsKPiA+ICsJCWlmIChwbGFuZS0+dHlwZSA9PSBEUk1fUExBTkVfVFlQRV9QUklN QVJZKQo+ID4gKwkJCXByaW1hcnlfZGF0YSA9IHBsYW5lX2RhdGE7Cj4gPiArCX0KPiA+ICsKPiA+ ICsJaWYgKCFwcmltYXJ5X2RhdGEpCj4gPiArCQlyZXR1cm47Cj4gPiArCj4gPiArCWZiID0gJnBy aW1hcnlfZGF0YS0+ZmI7Cj4gPiArCWdlbV9vYmogPSBkcm1fZ2VtX2ZiX2dldF9vYmooZmIsIDAp Owo+ID4gKwl2a21zX29iaiA9IGRybV9nZW1fdG9fdmttc19nZW0oZ2VtX29iaik7Cj4gPiArCj4g PiArCWlmICghdmttc19vYmotPnZhZGRyIHx8ICFwcml2X2RhdGEpCj4gPiArCQlyZXR1cm47Cj4g PiArCj4gPiArCW1lbWNweShwcml2X2RhdGEsIHZrbXNfb2JqLT52YWRkciwgdmttc19vYmotPmdl bS5zaXplKTsKPiA+ICsJZHJtX3dyaXRlYmFja19xdWV1ZV9qb2Iod2JfY29ubiwgc3RhdGUpOwo+ ID4gKwlvdXRwdXQtPndyaXRlYmFja19zdGF0dXMgPSBXQl9TVEFSVDsKPiAKPiBIbSwgaWYgdGhp cyBwYXNzZXMgdGhlIGN1cnJlbnQgd3JpdGViYWNrIHRlc3RzIHRoZW4gSSBndWVzcyB0aG9zZSB0 ZXN0cwo+IGFyZSBhIGJpdCB0b28gc2ltcGxlLiBPciBtYXliZSB0aGUgdGVzdCBjYW4ndCB1c2Ug dGhlIGN1cnNvciBwbGFuZSwgYW5kCj4gdGhhdCdzIHdoeSBpdCBkb2Vzbid0IG5vdGljZSB0aGF0 IHdlIG9ubHkgd3JpdGUgYmFjayB0aGUgcHJpbWFyeSBwbGFuZS4KPiAKPiBXcml0ZWJhY2sgaXMg c3VwcG9zZWQgdG8gd3JpdGUgYmFjayB0aGUgc2FtZSBpbWFnZSB5b3UnZCBzZWUgb24gdGhlCj4g c2NyZWVuLCBpLmUuIHdpdGggY3Vyc29yLCBvdGhlciBwbGFuZXMsIGFueSBjb2xvciBjb3JyZWN0 aW9uIGFwcGxpZWQgYW5kCj4gYW55dGhpbmcgZWxzZSByZWFsbHkuIFRoYXQgbWVhbnMgdmttcyB3 cml0ZWJhY2sgbmVlZHMgdG8gYmUgaW50ZWdyYXRlZAo+IGludG8gdGhlIGNyYyBjb21wdXRhdGlv bi4gV2UgbmVlZCB0byBydW4gdGhhdCB3b3JrIGVpdGhlciB3aGVuIHRoZXJlJ3MgYQo+IHdyaXRl YmFjayBqb2Igb3Igd2hlbiB3ZSBuZWVkIGEgY3JjLiBDcmMgd291bGQgYmUgb25seSBjb21wdXRl ZCB3aGVuCj4gbmVlZGVkLCBhbmQgZm9yIHdyaXRlYmFjayB3ZSBuZWVkIHRvIHB1dCB0aGUgZW50 aXJlIGNvbXBvc2l0ZWQvYmxlbmRlZAo+IGJ1ZmZlciBpbnRvIHRoZSB3cml0ZWJhY2sgYnVmZmVy Lgo+IAo+IFRoYXQncyB3aHkgSSBzYWlkIHllc3RlcmRheSB0aGF0IHlvdXIgd29yayB3aWxsIGNv bmZsaWN0IHdpdGggbXkgd29yayB0bwo+IHJlb3JnIGNyYyB3b3JrIGhhbmRsaW5nLCBhc2lkZSBm cm9tIHRoZSBmaW5hbCBzdGVwIGl0IG5lZWRzIHRvIGRvIGFsbCB0aGUKPiBzYW1lIHRoaW5ncy4K PiAKPiBJIGd1ZXNzIHdvdWxkIGJlIGdvb2QgdG8gaW1wcm92ZSBpZ3QgYW5kIGFkZCBhIGN1cnNv ciB0ZXN0Y2FzZSBmb3Igd3JpdGUKPiAoc2ltaWxhciB0byB0aGUgY3JjIGN1cnNvciB0ZXN0cyB3 ZSBoYXZlKSwgb3IgbWF5YmUgY3JlYXRlIHN1cHBvcnQgaW4gaWd0Cj4gdG8gdXNlIHdyaXRlYmFj ayBpbnN0ZWFkIG9mIGNyYywgc28gdGhhdCB3ZSBjb3VsZCBiZXR0ZXIgY2hlY2sgdGhpcy4KCkZv ciB0aGUgaW50ZWdyYXRpb24gd2l0aCBteSByZXdvcms6IEkndmUgYWRkZWQgbmV3IGFjdGl2ZV9w bGFuZXMgcG9pbnRlcgp0byB2a21zX2NydGNfc3RhdGUsIHNvIHRoYXQgdGhlIGNyYyB3b3JrZXIg Y2FuIGdldCBhdCB0aGUgcGxhbmUgc3RhdGUgaXQKbmVlZHMuIEkgdGhpbmsgd2UgY2FuIGFsc28g YWRkIGFuIGFjdGl2ZV93cml0ZWJhY2sgcG9pbnRlciBsaWtlIHRoaXMKCglzdHJ1Y3QgZHJtX3dy aXRlYmFja19zdGF0ZSAqYWN0aXZlX3dyaXRlYmFjazsKCnVzaW5nIHRoZSBzYW1lIGRlc2lnbiBh cyB3aXRoIHRoZSBwbGFuZXMuIEFsc28sIG1pZ2h0IGJlIGdvb2QgdG8gcmVuYW1lCnZrbXNfb3V0 cHV0LmNyY19lbmFibGVkIHRvIHZrbXNfb3V0cHV0LmNvbXBvc2VyX2VuYWJsZWQsIHNpbmNlIHRo YXQgd29yawp3aWxsIGRvIG1vcmUgdGhhbiBqdXN0IGNvbXB1dGUgYSBjcmMgaW4gdGhlIGZ1dHVy ZS4gV2UgbWlnaHQgZXZlbiB3YW50IHRvCnJlbmFtZSB2a21zX2NyYy5jIHRvIHZrbXNfY29tcG9z ZXIuYyBhbmQgcmVuYW1lIHRoZSB3b3JrZXJzIGFuZCBhbGwgdGhhdC4KSWYgeW91IHdhbnQgSSBn dWVzcyB5b3UgY291bGQgbGFuZCB0aGF0IGFzIHByZXAgKGJ1dCBwcm9iYWJseSBiYXNlZCBvbiBt eQpzZXJpZXMgdG8gYXZvaWQgdG9vIG1hbnkgY29uZmxpY3RzKS4KLURhbmllbAoKPiAtRGFuaWVs Cj4gCj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9o ZWxwZXJfZnVuY3Mgdmttc193Yl9jb25uX2hlbHBlcl9mdW5jcyA9IHsKPiA+ICsJLmdldF9tb2Rl cyA9IHZrbXNfd2JfY29ubmVjdG9yX2dldF9tb2RlcywKPiA+ICsJLnByZXBhcmVfd3JpdGViYWNr X2pvYiA9IHZrbXNfd2JfcHJlcGFyZV9qb2IsCj4gPiArCS5jbGVhbnVwX3dyaXRlYmFja19qb2Ig PSB2a21zX3diX2NsZWFudXBfam9iLAo+ID4gKwkuYXRvbWljX2NvbW1pdCA9IHZrbXNfd2JfYXRv bWljX2NvbW1pdCwKPiA+ICt9Owo+ID4gKwo+ID4gK2ludCBlbmFibGVfd3JpdGViYWNrX2Nvbm5l Y3RvcihzdHJ1Y3Qgdmttc19kZXZpY2UgKnZrbXNkZXYpCj4gPiArewo+ID4gKwlzdHJ1Y3QgZHJt X3dyaXRlYmFja19jb25uZWN0b3IgKndiID0gJnZrbXNkZXYtPm91dHB1dC53Yl9jb25uZWN0b3I7 Cj4gPiArCj4gPiArCXZrbXNkZXYtPm91dHB1dC53Yl9jb25uZWN0b3IuZW5jb2Rlci5wb3NzaWJs ZV9jcnRjcyA9IDE7Cj4gPiArCWRybV9jb25uZWN0b3JfaGVscGVyX2FkZCgmd2ItPmJhc2UsICZ2 a21zX3diX2Nvbm5faGVscGVyX2Z1bmNzKTsKPiA+ICsKPiA+ICsJcmV0dXJuIGRybV93cml0ZWJh Y2tfY29ubmVjdG9yX2luaXQoJnZrbXNkZXYtPmRybSwgd2IsCj4gPiArCQkJCQkgICAgJnZrbXNf d2JfY29ubmVjdG9yX2Z1bmNzLAo+ID4gKwkJCQkJICAgICZ2a21zX3diX2VuY29kZXJfaGVscGVy X2Z1bmNzLAo+ID4gKwkJCQkJICAgIHZrbXNfZm9ybWF0cywKPiA+ICsJCQkJCSAgICBBUlJBWV9T SVpFKHZrbXNfZm9ybWF0cykpOwo+ID4gK30KPiA+ICsKPiA+IC0tIAo+ID4gMi4yMS4wCj4gCj4g Cj4gCj4gLS0gCj4gRGFuaWVsIFZldHRlcgo+IFNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jw b3JhdGlvbgo+IGh0dHA6Ly9ibG9nLmZmd2xsLmNoCgotLSAKRGFuaWVsIFZldHRlcgpTb2Z0d2Fy ZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KaHR0cDovL2Jsb2cuZmZ3bGwuY2gKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxp bmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs