From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rodrigo Siqueira Subject: Re: [PATCH 2/2] drm/vkms: Add support for writeback Date: Fri, 7 Jun 2019 11:58:04 -0300 Message-ID: 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-ua1-x944.google.com (mail-ua1-x944.google.com [IPv6:2607:f8b0:4864:20::944]) by gabe.freedesktop.org (Postfix) with ESMTPS id C1C7989D77 for ; Fri, 7 Jun 2019 14:58:16 +0000 (UTC) Received: by mail-ua1-x944.google.com with SMTP id r7so730921ual.2 for ; Fri, 07 Jun 2019 07:58:16 -0700 (PDT) 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 , Brian Starkey , Liviu Dudau , Haneen Mohammed , Simon Ser , dri-devel , Linux Kernel Mailing List List-Id: dri-devel@lists.freedesktop.org T24gRnJpLCBKdW4gNywgMjAxOSBhdCA0OjQ4IEFNIERhbmllbCBWZXR0ZXIgPGRhbmllbEBmZnds bC5jaD4gd3JvdGU6Cj4KPiBPbiBUaHUsIEp1biAwNiwgMjAxOSBhdCAwNzo0MTowMVBNIC0wMzAw LCBSb2RyaWdvIFNpcXVlaXJhIHdyb3RlOgo+ID4gVGhpcyBwYXRjaCBpbXBsZW1lbnRzIHRoZSBu ZWNlc3NhcnkgZnVuY3Rpb25zIHRvIGFkZCB3cml0ZWJhY2sgc3VwcG9ydAo+ID4gZm9yIHZrbXMu IFRoaXMgZmVhdHVyZSBpcyB1c2VmdWwgZm9yIHRlc3RpbmcgY29tcG9zaXRvcnMgaWYgeW91IGRv buKAmXQKPiA+IGhhdmUgaGFyZHdhcmUgd2l0aCB3cml0ZWJhY2sgc3VwcG9ydC4KPiA+Cj4gPiBT aWduZWQtb2ZmLWJ5OiBSb2RyaWdvIFNpcXVlaXJhIDxyb2RyaWdvc2lxdWVpcmFtZWxvQGdtYWls LmNvbT4KPiA+IC0tLQo+ID4gIGRyaXZlcnMvZ3B1L2RybS92a21zL01ha2VmaWxlICAgICAgICAg fCAgIDkgKy0KPiA+ICBkcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX2NydGMuYyAgICAgIHwgICA1 ICsKPiA+ICBkcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX2Rydi5jICAgICAgIHwgIDEwICsrCj4g PiAgZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19kcnYuaCAgICAgICB8ICAxMiArKwo+ID4gIGRy aXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfb3V0cHV0LmMgICAgfCAgIDYgKwo+ID4gIGRyaXZlcnMv Z3B1L2RybS92a21zL3ZrbXNfd3JpdGViYWNrLmMgfCAxNjUgKysrKysrKysrKysrKysrKysrKysr KysrKysKPiA+ICA2IGZpbGVzIGNoYW5nZWQsIDIwNiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9u KC0pCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfd3Jp dGViYWNrLmMKPiA+Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3ZrbXMvTWFrZWZp bGUgYi9kcml2ZXJzL2dwdS9kcm0vdmttcy9NYWtlZmlsZQo+ID4gaW5kZXggODlmMDliZWM3YjIz Li45MGViN2FjZDYxOGQgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vdmttcy9NYWtl ZmlsZQo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3ZrbXMvTWFrZWZpbGUKPiA+IEBAIC0xLDQg KzEsMTEgQEAKPiA+ICAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKPiA+ IC12a21zLXkgOj0gdmttc19kcnYubyB2a21zX3BsYW5lLm8gdmttc19vdXRwdXQubyB2a21zX2Ny dGMubyB2a21zX2dlbS5vIHZrbXNfY3JjLm8KPiA+ICt2a21zLXkgOj0gXAo+ID4gKyAgICAgdmtt c19kcnYubyBcCj4gPiArICAgICB2a21zX3BsYW5lLm8gXAo+ID4gKyAgICAgdmttc19vdXRwdXQu byBcCj4gPiArICAgICB2a21zX2NydGMubyBcCj4gPiArICAgICB2a21zX2dlbS5vIFwKPiA+ICsg ICAgIHZrbXNfY3JjLm8gXAo+ID4gKyAgICAgdmttc193cml0ZWJhY2subwo+ID4KPiA+ICBvYmot JChDT05GSUdfRFJNX1ZLTVMpICs9IHZrbXMubwo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS92a21zL3ZrbXNfY3J0Yy5jIGIvZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19jcnRjLmMK PiA+IGluZGV4IDFiYmUwOTliN2RiOC4uY2U3OTdlMjY1YjFiIDEwMDY0NAo+ID4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL3ZrbXMvdmttc19jcnRjLmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS92 a21zL3ZrbXNfY3J0Yy5jCj4gPiBAQCAtMjMsNiArMjMsMTEgQEAgc3RhdGljIGVudW0gaHJ0aW1l cl9yZXN0YXJ0IHZrbXNfdmJsYW5rX3NpbXVsYXRlKHN0cnVjdCBocnRpbWVyICp0aW1lcikKPiA+ ICAgICAgIGlmICghcmV0KQo+ID4gICAgICAgICAgICAgICBEUk1fRVJST1IoInZrbXMgZmFpbHVy ZSBvbiBoYW5kbGluZyB2YmxhbmsiKTsKPiA+Cj4gPiArICAgICBpZiAob3V0cHV0LT53cml0ZWJh Y2tfc3RhdHVzID09IFdCX1NUQVJUKSB7Cj4gPiArICAgICAgICAgICAgIGRybV93cml0ZWJhY2tf c2lnbmFsX2NvbXBsZXRpb24oJm91dHB1dC0+d2JfY29ubmVjdG9yLCAwKTsKPiA+ICsgICAgICAg ICAgICAgb3V0cHV0LT53cml0ZWJhY2tfc3RhdHVzID0gV0JfU1RPUDsKPiA+ICsgICAgIH0KPiA+ ICsKPiA+ICAgICAgIGlmIChzdGF0ZSAmJiBvdXRwdXQtPmNyY19lbmFibGVkKSB7Cj4gPiAgICAg ICAgICAgICAgIHU2NCBmcmFtZSA9IGRybV9jcnRjX2FjY3VyYXRlX3ZibGFua19jb3VudChjcnRj KTsKPiA+Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19kcnYuYyBi L2RyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfZHJ2LmMKPiA+IGluZGV4IDkyMjk2YmQ4ZjYyMy4u ZDU5MTdkNWE0NWUzIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19k cnYuYwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19kcnYuYwo+ID4gQEAgLTI5 LDYgKzI5LDEwIEBAIGJvb2wgZW5hYmxlX2N1cnNvcjsKPiA+ICBtb2R1bGVfcGFyYW1fbmFtZWQo ZW5hYmxlX2N1cnNvciwgZW5hYmxlX2N1cnNvciwgYm9vbCwgMDQ0NCk7Cj4gPiAgTU9EVUxFX1BB Uk1fREVTQyhlbmFibGVfY3Vyc29yLCAiRW5hYmxlL0Rpc2FibGUgY3Vyc29yIHN1cHBvcnQiKTsK PiA+Cj4gPiAraW50IGVuYWJsZV93cml0ZWJhY2s7Cj4gPiArbW9kdWxlX3BhcmFtX25hbWVkKGVu YWJsZV93cml0ZWJhY2ssIGVuYWJsZV93cml0ZWJhY2ssIGludCwgMDQ0NCk7Cj4gPiArTU9EVUxF X1BBUk1fREVTQyhlbmFibGVfd3JpdGViYWNrLCAiRW5hYmxlL0Rpc2FibGUgd3JpdGViYWNrIGNv bm5lY3RvciIpOwo+ID4gKwo+ID4gIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25z IHZrbXNfZHJpdmVyX2ZvcHMgPSB7Cj4gPiAgICAgICAub3duZXIgICAgICAgICAgPSBUSElTX01P RFVMRSwKPiA+ICAgICAgIC5vcGVuICAgICAgICAgICA9IGRybV9vcGVuLAo+ID4gQEAgLTEyMyw2 ICsxMjcsMTIgQEAgc3RhdGljIGludCBfX2luaXQgdmttc19pbml0KHZvaWQpCj4gPiAgICAgICAg ICAgICAgIGdvdG8gb3V0X2Zpbmk7Cj4gPiAgICAgICB9Cj4gPgo+ID4gKyAgICAgdmttc19kZXZp Y2UtPm91dHB1dC53cml0ZWJhY2tfc3RhdHVzID0gV0JfRElTQUJMRUQ7Cj4gPiArICAgICBpZiAo ZW5hYmxlX3dyaXRlYmFjaykgewo+ID4gKyAgICAgICAgICAgICB2a21zX2RldmljZS0+b3V0cHV0 LndyaXRlYmFja19zdGF0dXMgPSBXQl9TVE9QOwo+ID4gKyAgICAgICAgICAgICBEUk1fSU5GTygi V3JpdGViYWNrIGNvbm5lY3RvciBlbmFibGVkIik7Cj4gPiArICAgICB9Cj4gPiArCj4gPiAgICAg ICByZXQgPSB2a21zX21vZGVzZXRfaW5pdCh2a21zX2RldmljZSk7Cj4gPiAgICAgICBpZiAocmV0 KQo+ID4gICAgICAgICAgICAgICBnb3RvIG91dF9maW5pOwo+ID4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS92a21zL3ZrbXNfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX2Ry di5oCj4gPiBpbmRleCBlODEwNzNkZWExNTQuLmNhMWY5ZWU2M2VjOCAxMDA2NDQKPiA+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfZHJ2LmgKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS92a21zL3ZrbXNfZHJ2LmgKPiA+IEBAIC03LDYgKzcsNyBAQAo+ID4gICNpbmNsdWRlIDxkcm0v ZHJtLmg+Cj4gPiAgI2luY2x1ZGUgPGRybS9kcm1fZ2VtLmg+Cj4gPiAgI2luY2x1ZGUgPGRybS9k cm1fZW5jb2Rlci5oPgo+ID4gKyNpbmNsdWRlIDxkcm0vZHJtX3dyaXRlYmFjay5oPgo+ID4gICNp bmNsdWRlIDxsaW51eC9ocnRpbWVyLmg+Cj4gPgo+ID4gICNkZWZpbmUgWFJFU19NSU4gICAgMjAK PiA+IEBAIC02MCwxNCArNjEsMjIgQEAgc3RydWN0IHZrbXNfY3J0Y19zdGF0ZSB7Cj4gPiAgICAg ICB1NjQgZnJhbWVfZW5kOwo+ID4gIH07Cj4gPgo+ID4gK2VudW0gd2Jfc3RhdHVzIHsKPiA+ICsg ICAgIFdCX0RJU0FCTEVELAo+ID4gKyAgICAgV0JfU1RBUlQsCj4gPiArICAgICBXQl9TVE9QLAo+ ID4gK307Cj4gPiArCj4gPiAgc3RydWN0IHZrbXNfb3V0cHV0IHsKPiA+ICAgICAgIHN0cnVjdCBk cm1fY3J0YyBjcnRjOwo+ID4gICAgICAgc3RydWN0IGRybV9lbmNvZGVyIGVuY29kZXI7Cj4gPiAg ICAgICBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciBjb25uZWN0b3I7Cj4gPiArICAgICBzdHJ1Y3QgZHJt X3dyaXRlYmFja19jb25uZWN0b3Igd2JfY29ubmVjdG9yOwo+ID4gICAgICAgc3RydWN0IGhydGlt ZXIgdmJsYW5rX2hydGltZXI7Cj4gPiAgICAgICBrdGltZV90IHBlcmlvZF9uczsKPiA+ICAgICAg IHN0cnVjdCBkcm1fcGVuZGluZ192YmxhbmtfZXZlbnQgKmV2ZW50Owo+ID4gICAgICAgYm9vbCBj cmNfZW5hYmxlZDsKPiA+ICsgICAgIGVudW0gd2Jfc3RhdHVzIHdyaXRlYmFja19zdGF0dXM7Cj4g PiAgICAgICAvKiBvcmRlcmVkIHdxIGZvciBjcmNfd29yayAqLwo+ID4gICAgICAgc3RydWN0IHdv cmtxdWV1ZV9zdHJ1Y3QgKmNyY193b3JrcTsKPiA+ICAgICAgIC8qIHByb3RlY3RzIGNvbmN1cnJl bnQgYWNjZXNzIHRvIGNyY19kYXRhICovCj4gPiBAQCAtMTQxLDQgKzE1MCw3IEBAIGludCB2a21z X3ZlcmlmeV9jcmNfc291cmNlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywgY29uc3QgY2hhciAqc291 cmNlX25hbWUsCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICp2YWx1ZXNfY250 KTsKPiA+ICB2b2lkIHZrbXNfY3JjX3dvcmtfaGFuZGxlKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29y ayk7Cj4gPgo+ID4gKy8qIFdyaXRlYmFjayAqLwo+ID4gK2ludCBlbmFibGVfd3JpdGViYWNrX2Nv bm5lY3RvcihzdHJ1Y3Qgdmttc19kZXZpY2UgKnZrbXNkZXYpOwo+ID4gKwo+ID4gICNlbmRpZiAv KiBfVktNU19EUlZfSF8gKi8KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdmttcy92 a21zX291dHB1dC5jIGIvZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19vdXRwdXQuYwo+ID4gaW5k ZXggMTQ0MmI0NDdjNzA3Li4xZmMxZDRlOTU4NWMgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vdmttcy92a21zX291dHB1dC5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vdmttcy92 a21zX291dHB1dC5jCj4gPiBAQCAtOTEsNiArOTEsMTIgQEAgaW50IHZrbXNfb3V0cHV0X2luaXQo c3RydWN0IHZrbXNfZGV2aWNlICp2a21zZGV2LCBpbnQgaW5kZXgpCj4gPiAgICAgICAgICAgICAg IGdvdG8gZXJyX2F0dGFjaDsKPiA+ICAgICAgIH0KPiA+Cj4gPiArICAgICBpZiAodmttc2Rldi0+ b3V0cHV0LndyaXRlYmFja19zdGF0dXMgIT0gV0JfRElTQUJMRUQpIHsKPiA+ICsgICAgICAgICAg ICAgcmV0ID0gZW5hYmxlX3dyaXRlYmFja19jb25uZWN0b3Iodmttc2Rldik7Cj4gPiArICAgICAg ICAgICAgIGlmIChyZXQpCj4gPiArICAgICAgICAgICAgICAgICAgICAgRFJNX0VSUk9SKCJGYWls ZWQgdG8gaW5pdCB3cml0ZWJhY2sgY29ubmVjdG9yXG4iKTsKPiA+ICsgICAgIH0KPiA+ICsKPiA+ ICAgICAgIGRybV9tb2RlX2NvbmZpZ19yZXNldChkZXYpOwo+ID4KPiA+ICAgICAgIHJldHVybiAw Owo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfd3JpdGViYWNrLmMg Yi9kcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX3dyaXRlYmFjay5jCj4gPiBuZXcgZmlsZSBtb2Rl IDEwMDY0NAo+ID4gaW5kZXggMDAwMDAwMDAwMDAwLi5mN2I5NjJhZTU2NDYKPiA+IC0tLSAvZGV2 L251bGwKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfd3JpdGViYWNrLmMKPiA+ IEBAIC0wLDAgKzEsMTY1IEBACj4gPiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0y LjArCj4gPiArCj4gPiArI2luY2x1ZGUgInZrbXNfZHJ2LmgiCj4gPiArI2luY2x1ZGUgPGRybS9k cm1fd3JpdGViYWNrLmg+Cj4gPiArI2luY2x1ZGUgPGRybS9kcm1fcHJvYmVfaGVscGVyLmg+Cj4g PiArI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljX2hlbHBlci5oPgo+ID4gKyNpbmNsdWRlIDxkcm0v ZHJtX2dlbV9mcmFtZWJ1ZmZlcl9oZWxwZXIuaD4KPiA+ICsKPiA+ICtzdGF0aWMgY29uc3Qgc3Ry dWN0IGRybV9jb25uZWN0b3JfZnVuY3Mgdmttc193Yl9jb25uZWN0b3JfZnVuY3MgPSB7Cj4gPiAr ICAgICAuZmlsbF9tb2RlcyA9IGRybV9oZWxwZXJfcHJvYmVfc2luZ2xlX2Nvbm5lY3Rvcl9tb2Rl cywKPiA+ICsgICAgIC5kZXN0cm95ID0gZHJtX2Nvbm5lY3Rvcl9jbGVhbnVwLAo+ID4gKyAgICAg LnJlc2V0ID0gZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX3Jlc2V0LAo+ID4gKyAgICAgLmF0 b21pY19kdXBsaWNhdGVfc3RhdGUgPSBkcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfZHVwbGlj YXRlX3N0YXRlLAo+ID4gKyAgICAgLmF0b21pY19kZXN0cm95X3N0YXRlID0gZHJtX2F0b21pY19o ZWxwZXJfY29ubmVjdG9yX2Rlc3Ryb3lfc3RhdGUsCj4gPiArfTsKPiA+ICsKPiA+ICtzdGF0aWMg aW50IHZrbXNfd2JfZW5jb2Rlcl9hdG9taWNfY2hlY2soc3RydWN0IGRybV9lbmNvZGVyICplbmNv ZGVyLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJt X2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlKQo+ID4gK3sK PiA+ICsgICAgIHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiOwo+ID4gKyAgICAgY29uc3Qgc3Ry dWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUgPSAmY3J0Y19zdGF0ZS0+bW9kZTsKPiA+ICsKPiA+ ICsgICAgIGlmICghY29ubl9zdGF0ZS0+d3JpdGViYWNrX2pvYiB8fCAhY29ubl9zdGF0ZS0+d3Jp dGViYWNrX2pvYi0+ZmIpCj4gPiArICAgICAgICAgICAgIHJldHVybiAwOwo+ID4gKwo+ID4gKyAg ICAgZmIgPSBjb25uX3N0YXRlLT53cml0ZWJhY2tfam9iLT5mYjsKPiA+ICsgICAgIGlmIChmYi0+ d2lkdGggIT0gbW9kZS0+aGRpc3BsYXkgfHwgZmItPmhlaWdodCAhPSBtb2RlLT52ZGlzcGxheSkg ewo+ID4gKyAgICAgICAgICAgICBEUk1fREVCVUdfS01TKCJJbnZhbGlkIGZyYW1lYnVmZmVyIHNp emUgJXV4JXVcbiIsCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgZmItPndpZHRoLCBm Yi0+aGVpZ2h0KTsKPiA+ICsgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4gPiArICAgICB9 Cj4gPiArCj4gPiArICAgICBpZiAoZmItPmZvcm1hdC0+Zm9ybWF0ICE9IERSTV9GT1JNQVRfWFJH Qjg4ODgpIHsKPiA+ICsgICAgICAgICAgICAgc3RydWN0IGRybV9mb3JtYXRfbmFtZV9idWYgZm9y bWF0X25hbWU7Cj4gPiArCj4gPiArICAgICAgICAgICAgIERSTV9ERUJVR19LTVMoIkludmFsaWQg cGl4ZWwgZm9ybWF0ICVzXG4iLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGRybV9n ZXRfZm9ybWF0X25hbWUoZmItPmZvcm1hdC0+Zm9ybWF0LAo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZvcm1hdF9uYW1lKSk7Cj4gPiArICAgICAg ICAgICAgIHJldHVybiAtRUlOVkFMOwo+ID4gKyAgICAgfQo+ID4gKwo+ID4gKyAgICAgcmV0dXJu IDA7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2VuY29kZXJfaGVs cGVyX2Z1bmNzIHZrbXNfd2JfZW5jb2Rlcl9oZWxwZXJfZnVuY3MgPSB7Cj4gPiArICAgICAuYXRv bWljX2NoZWNrID0gdmttc193Yl9lbmNvZGVyX2F0b21pY19jaGVjaywKPiA+ICt9Owo+ID4gKwo+ ID4gK3N0YXRpYyBpbnQgdmttc193Yl9jb25uZWN0b3JfZ2V0X21vZGVzKHN0cnVjdCBkcm1fY29u bmVjdG9yICpjb25uZWN0b3IpCj4gPiArewo+ID4gKyAgICAgc3RydWN0IGRybV9kZXZpY2UgKmRl diA9IGNvbm5lY3Rvci0+ZGV2Owo+ID4gKwo+ID4gKyAgICAgcmV0dXJuIGRybV9hZGRfbW9kZXNf bm9lZGlkKGNvbm5lY3RvciwgZGV2LT5tb2RlX2NvbmZpZy5tYXhfd2lkdGgsCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2LT5tb2RlX2NvbmZpZy5tYXhfaGVpZ2h0KTsK PiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIGludCB2a21zX3diX3ByZXBhcmVfam9iKHN0cnVjdCBk cm1fd3JpdGViYWNrX2Nvbm5lY3RvciAqd2JfY29ubmVjdG9yLAo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzdHJ1Y3QgZHJtX3dyaXRlYmFja19qb2IgKmpvYikKPiA+ICt7Cj4gPiAr ICAgICBzdHJ1Y3Qgdmttc19nZW1fb2JqZWN0ICp2a21zX29iajsKPiA+ICsgICAgIHN0cnVjdCBk cm1fZ2VtX29iamVjdCAqZ2VtX29iajsKPiA+ICsgICAgIGludCByZXQ7Cj4gPiArCj4gPiArICAg ICBpZiAoIWpvYi0+ZmIpCj4gPiArICAgICAgICAgICAgIHJldHVybiAwOwo+ID4gKwo+ID4gKyAg ICAgZ2VtX29iaiA9IGRybV9nZW1fZmJfZ2V0X29iaihqb2ItPmZiLCAwKTsKPiA+ICsgICAgIHJl dCA9IHZrbXNfZ2VtX3ZtYXAoZ2VtX29iaik7Cj4gPiArICAgICBpZiAocmV0KSB7Cj4gPiArICAg ICAgICAgICAgIERSTV9FUlJPUigidm1hcCBmYWlsZWQ6ICVkXG4iLCByZXQpOwo+ID4gKyAgICAg ICAgICAgICByZXR1cm4gcmV0Owo+ID4gKyAgICAgfQo+ID4gKwo+ID4gKyAgICAgdmttc19vYmog PSBkcm1fZ2VtX3RvX3ZrbXNfZ2VtKGdlbV9vYmopOwo+ID4gKyAgICAgam9iLT5wcml2ID0gdmtt c19vYmotPnZhZGRyOwo+ID4gKwo+ID4gKyAgICAgcmV0dXJuIDA7Cj4gPiArfQo+ID4gKwo+ID4g K3N0YXRpYyB2b2lkIHZrbXNfd2JfY2xlYW51cF9qb2Ioc3RydWN0IGRybV93cml0ZWJhY2tfY29u bmVjdG9yICpjb25uZWN0b3IsCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1 Y3QgZHJtX3dyaXRlYmFja19qb2IgKmpvYikKPiA+ICt7Cj4gPiArICAgICBzdHJ1Y3QgZHJtX2dl bV9vYmplY3QgKmdlbV9vYmo7Cj4gPiArCj4gPiArICAgICBpZiAoIWpvYi0+ZmIpCj4gPiArICAg ICAgICAgICAgIHJldHVybjsKPiA+ICsKPiA+ICsgICAgIGdlbV9vYmogPSBkcm1fZ2VtX2ZiX2dl dF9vYmooam9iLT5mYiwgMCk7Cj4gPiArICAgICB2a21zX2dlbV92dW5tYXAoZ2VtX29iaik7Cj4g PiArfQo+ID4gKwo+ID4gK3N0YXRpYyB2b2lkIHZrbXNfd2JfYXRvbWljX2NvbW1pdChzdHJ1Y3Qg ZHJtX2Nvbm5lY3RvciAqY29ubiwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKnN0YXRlKQo+ID4gK3sKPiA+ICsgICAgIHN0cnVj dCB2a21zX2RldmljZSAqdmttc2RldiA9IGRybV9kZXZpY2VfdG9fdmttc19kZXZpY2UoY29ubi0+ ZGV2KTsKPiA+ICsgICAgIHN0cnVjdCB2a21zX291dHB1dCAqb3V0cHV0ID0gJnZrbXNkZXYtPm91 dHB1dDsKPiA+ICsgICAgIHN0cnVjdCBkcm1fd3JpdGViYWNrX2Nvbm5lY3RvciAqd2JfY29ubiA9 ICZvdXRwdXQtPndiX2Nvbm5lY3RvcjsKPiA+ICsgICAgIHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0 YXRlICpjb25uX3N0YXRlID0gd2JfY29ubi0+YmFzZS5zdGF0ZTsKPiA+ICsgICAgIHZvaWQgKnBy aXZfZGF0YSA9IGNvbm5fc3RhdGUtPndyaXRlYmFja19qb2ItPnByaXY7Cj4gPiArICAgICBzdHJ1 Y3Qgdmttc19jcmNfZGF0YSAqcHJpbWFyeV9kYXRhID0gTlVMTDsKPiA+ICsgICAgIHN0cnVjdCBk cm1fZnJhbWVidWZmZXIgKmZiID0gTlVMTDsKPiA+ICsgICAgIHN0cnVjdCB2a21zX2dlbV9vYmpl Y3QgKnZrbXNfb2JqOwo+ID4gKyAgICAgc3RydWN0IGRybV9nZW1fb2JqZWN0ICpnZW1fb2JqOwo+ ID4gKyAgICAgc3RydWN0IGRybV9wbGFuZSAqcGxhbmU7Cj4gPiArCj4gPiArICAgICBpZiAoIWNv bm5fc3RhdGUpCj4gPiArICAgICAgICAgICAgIHJldHVybjsKPiA+ICsKPiA+ICsgICAgIGlmICgh Y29ubl9zdGF0ZS0+d3JpdGViYWNrX2pvYiB8fCAhY29ubl9zdGF0ZS0+d3JpdGViYWNrX2pvYi0+ ZmIpIHsKPiA+ICsgICAgICAgICAgICAgb3V0cHV0LT53cml0ZWJhY2tfc3RhdHVzID0gV0JfU1RP UDsKPiA+ICsgICAgICAgICAgICAgRFJNX0RFQlVHX0RSSVZFUigiRGlzYWJsZSB3cml0ZWJhY2tc biIpOwo+ID4gKyAgICAgICAgICAgICByZXR1cm47Cj4gPiArICAgICB9Cj4gPiArCj4gPiArICAg ICBkcm1fZm9yX2VhY2hfcGxhbmUocGxhbmUsICZ2a21zZGV2LT5kcm0pIHsKPiA+ICsgICAgICAg ICAgICAgc3RydWN0IHZrbXNfcGxhbmVfc3RhdGUgKnZwbGFuZV9zdGF0ZTsKPiA+ICsgICAgICAg ICAgICAgc3RydWN0IHZrbXNfY3JjX2RhdGEgKnBsYW5lX2RhdGE7Cj4gPiArCj4gPiArICAgICAg ICAgICAgIHZwbGFuZV9zdGF0ZSA9IHRvX3ZrbXNfcGxhbmVfc3RhdGUocGxhbmUtPnN0YXRlKTsK PiA+ICsgICAgICAgICAgICAgcGxhbmVfZGF0YSA9IHZwbGFuZV9zdGF0ZS0+Y3JjX2RhdGE7Cj4g PiArCj4gPiArICAgICAgICAgICAgIGlmIChkcm1fZnJhbWVidWZmZXJfcmVhZF9yZWZjb3VudCgm cGxhbmVfZGF0YS0+ZmIpID09IDApCj4gPiArICAgICAgICAgICAgICAgICAgICAgY29udGludWU7 Cj4gPiArCj4gPiArICAgICAgICAgICAgIGlmIChwbGFuZS0+dHlwZSA9PSBEUk1fUExBTkVfVFlQ RV9QUklNQVJZKQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIHByaW1hcnlfZGF0YSA9IHBsYW5l X2RhdGE7Cj4gPiArICAgICB9Cj4gPiArCj4gPiArICAgICBpZiAoIXByaW1hcnlfZGF0YSkKPiA+ ICsgICAgICAgICAgICAgcmV0dXJuOwo+ID4gKwo+ID4gKyAgICAgZmIgPSAmcHJpbWFyeV9kYXRh LT5mYjsKPiA+ICsgICAgIGdlbV9vYmogPSBkcm1fZ2VtX2ZiX2dldF9vYmooZmIsIDApOwo+ID4g KyAgICAgdmttc19vYmogPSBkcm1fZ2VtX3RvX3ZrbXNfZ2VtKGdlbV9vYmopOwo+ID4gKwo+ID4g KyAgICAgaWYgKCF2a21zX29iai0+dmFkZHIgfHwgIXByaXZfZGF0YSkKPiA+ICsgICAgICAgICAg ICAgcmV0dXJuOwo+ID4gKwo+ID4gKyAgICAgbWVtY3B5KHByaXZfZGF0YSwgdmttc19vYmotPnZh ZGRyLCB2a21zX29iai0+Z2VtLnNpemUpOwo+ID4gKyAgICAgZHJtX3dyaXRlYmFja19xdWV1ZV9q b2Iod2JfY29ubiwgc3RhdGUpOwo+ID4gKyAgICAgb3V0cHV0LT53cml0ZWJhY2tfc3RhdHVzID0g V0JfU1RBUlQ7Cj4KPiBIbSwgaWYgdGhpcyBwYXNzZXMgdGhlIGN1cnJlbnQgd3JpdGViYWNrIHRl c3RzIHRoZW4gSSBndWVzcyB0aG9zZSB0ZXN0cwo+IGFyZSBhIGJpdCB0b28gc2ltcGxlLiBPciBt YXliZSB0aGUgdGVzdCBjYW4ndCB1c2UgdGhlIGN1cnNvciBwbGFuZSwgYW5kCj4gdGhhdCdzIHdo eSBpdCBkb2Vzbid0IG5vdGljZSB0aGF0IHdlIG9ubHkgd3JpdGUgYmFjayB0aGUgcHJpbWFyeSBw bGFuZS4KCkhpLAoKU29ycnksIEkga25ldyBhYm91dCB0aGF0LCBhbmQgSSBzaG91bGQgaGF2ZSBo aWdobGlnaHRlZCB0aGlzCmluZm9ybWF0aW9uIGluIHRoZSBjb3ZlciBsZXR0ZXIuIEluIG15IG9y aWdpbmFsIHBsYW4sIEkgd2FudGVkIHRvIGxhbmQKYSBiYXNpYyB2ZXJzaW9uIG9mIHdyaXRlYmFj ayBpbiB0aGUgdmttcyB0byB0cnkgdG8gdXBzdHJlYW0gdGhlCmttc193cml0ZWJhY2s7IHRoZW4g SSB3aXNoIHRoYXQgSSBjb3VsZCBpbXByb3ZlIHZrbXMgYW5kIHRoZSB0ZXN0cyBpbgpwYXJhbGxl bC4KCkluIHN1bW1hcnksIHRoZSBrbXNfd3JpdGViYWNrIGlzIG5vdCB1cHN0cmVhbSB5ZXQsIGFu ZCBpdCBuZWVkcyBzb21lCmltcHJvdmVtZW50cy4gSUhNTywgd2Ugc2hvdWxkIHRyeSB0byB1cHN0 cmVhbSB0aGUgY3VycmVudCB2ZXJzaW9uIGFuZAppbXByb3ZlIGl0IHN0ZXAtYnktc3RlcCBieSB1 c2luZyBWS01TLiBJZiBCcmlhbiBhbmQgTGl2aXUgYWdyZWUsIEkKd291bGQgbGlrZSB0byB0cnkg dG8gc2VuZCBhIG5ldyB2ZXJzaW9uIG9mIHRoZWlyIHBhdGNoc2V0LiBXaGF0IGRvIHlvdQp0aGlu az8KCkRhbmllbCwgYWJvdXQgeW91ciBwYXRjaHNldCAoZHJtL3ZrbXM6IHJld29yayBjcmMgd29y a2VyKSwganVzdCBnaXZlCm1lIGEgdGltZSB0byBnbyB0aHJvdWdoIHlvdXIgcGF0Y2hzZXQuIEFm dGVyIHRoYXQsIEknbGwgbWFrZSB0aGUKcmVxdWlyZWQgY2hhbmdlcyBhbmQgdXBkYXRlIHRoZSB3 cml0ZWJhY2suCgpUaGFuayB5b3UgYWxsIGZvciB0aGUgZmVlZGJhY2suIEknbGwgcHJlcGFyZSBh IFYyIHdpdGggYWxsIHRoZSBzdWdnZXN0aW9ucy4KCj4gV3JpdGViYWNrIGlzIHN1cHBvc2VkIHRv IHdyaXRlIGJhY2sgdGhlIHNhbWUgaW1hZ2UgeW91J2Qgc2VlIG9uIHRoZQo+IHNjcmVlbiwgaS5l LiB3aXRoIGN1cnNvciwgb3RoZXIgcGxhbmVzLCBhbnkgY29sb3IgY29ycmVjdGlvbiBhcHBsaWVk IGFuZAo+IGFueXRoaW5nIGVsc2UgcmVhbGx5LiBUaGF0IG1lYW5zIHZrbXMgd3JpdGViYWNrIG5l ZWRzIHRvIGJlIGludGVncmF0ZWQKPiBpbnRvIHRoZSBjcmMgY29tcHV0YXRpb24uIFdlIG5lZWQg dG8gcnVuIHRoYXQgd29yayBlaXRoZXIgd2hlbiB0aGVyZSdzIGEKPiB3cml0ZWJhY2sgam9iIG9y IHdoZW4gd2UgbmVlZCBhIGNyYy4gQ3JjIHdvdWxkIGJlIG9ubHkgY29tcHV0ZWQgd2hlbgo+IG5l ZWRlZCwgYW5kIGZvciB3cml0ZWJhY2sgd2UgbmVlZCB0byBwdXQgdGhlIGVudGlyZSBjb21wb3Np dGVkL2JsZW5kZWQKPiBidWZmZXIgaW50byB0aGUgd3JpdGViYWNrIGJ1ZmZlci4KPgo+IFRoYXQn cyB3aHkgSSBzYWlkIHllc3RlcmRheSB0aGF0IHlvdXIgd29yayB3aWxsIGNvbmZsaWN0IHdpdGgg bXkgd29yayB0bwo+IHJlb3JnIGNyYyB3b3JrIGhhbmRsaW5nLCBhc2lkZSBmcm9tIHRoZSBmaW5h bCBzdGVwIGl0IG5lZWRzIHRvIGRvIGFsbCB0aGUKPiBzYW1lIHRoaW5ncy4KPgo+IEkgZ3Vlc3Mg d291bGQgYmUgZ29vZCB0byBpbXByb3ZlIGlndCBhbmQgYWRkIGEgY3Vyc29yIHRlc3RjYXNlIGZv ciB3cml0ZQo+IChzaW1pbGFyIHRvIHRoZSBjcmMgY3Vyc29yIHRlc3RzIHdlIGhhdmUpLCBvciBt YXliZSBjcmVhdGUgc3VwcG9ydCBpbiBpZ3QKPiB0byB1c2Ugd3JpdGViYWNrIGluc3RlYWQgb2Yg Y3JjLCBzbyB0aGF0IHdlIGNvdWxkIGJldHRlciBjaGVjayB0aGlzLgo+IC1EYW5pZWwKPgo+ID4g K30KPiA+ICsKPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3JfaGVscGVyX2Z1 bmNzIHZrbXNfd2JfY29ubl9oZWxwZXJfZnVuY3MgPSB7Cj4gPiArICAgICAuZ2V0X21vZGVzID0g dmttc193Yl9jb25uZWN0b3JfZ2V0X21vZGVzLAo+ID4gKyAgICAgLnByZXBhcmVfd3JpdGViYWNr X2pvYiA9IHZrbXNfd2JfcHJlcGFyZV9qb2IsCj4gPiArICAgICAuY2xlYW51cF93cml0ZWJhY2tf am9iID0gdmttc193Yl9jbGVhbnVwX2pvYiwKPiA+ICsgICAgIC5hdG9taWNfY29tbWl0ID0gdmtt c193Yl9hdG9taWNfY29tbWl0LAo+ID4gK307Cj4gPiArCj4gPiAraW50IGVuYWJsZV93cml0ZWJh Y2tfY29ubmVjdG9yKHN0cnVjdCB2a21zX2RldmljZSAqdmttc2RldikKPiA+ICt7Cj4gPiArICAg ICBzdHJ1Y3QgZHJtX3dyaXRlYmFja19jb25uZWN0b3IgKndiID0gJnZrbXNkZXYtPm91dHB1dC53 Yl9jb25uZWN0b3I7Cj4gPiArCj4gPiArICAgICB2a21zZGV2LT5vdXRwdXQud2JfY29ubmVjdG9y LmVuY29kZXIucG9zc2libGVfY3J0Y3MgPSAxOwo+ID4gKyAgICAgZHJtX2Nvbm5lY3Rvcl9oZWxw ZXJfYWRkKCZ3Yi0+YmFzZSwgJnZrbXNfd2JfY29ubl9oZWxwZXJfZnVuY3MpOwo+ID4gKwo+ID4g KyAgICAgcmV0dXJuIGRybV93cml0ZWJhY2tfY29ubmVjdG9yX2luaXQoJnZrbXNkZXYtPmRybSwg d2IsCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdmttc193 Yl9jb25uZWN0b3JfZnVuY3MsCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAmdmttc193Yl9lbmNvZGVyX2hlbHBlcl9mdW5jcywKPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZrbXNfZm9ybWF0cywKPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFSUkFZX1NJWkUodmttc19mb3JtYXRzKSk7 Cj4gPiArfQo+ID4gKwo+ID4gLS0KPiA+IDIuMjEuMAo+Cj4KPgo+IC0tCj4gRGFuaWVsIFZldHRl cgo+IFNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgo+IGh0dHA6Ly9ibG9nLmZm d2xsLmNoCgoKCi0tIAoKUm9kcmlnbyBTaXF1ZWlyYQpodHRwczovL3NpcXVlaXJhLnRlY2gKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1h aWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs