From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rodrigo Siqueira Subject: Re: [RFC] drm/vkms: Add writeback support Date: Mon, 29 Oct 2018 11:03:30 -0300 Message-ID: <20181029140330.5sapil5e7tad22gi@smtp.gmail.com> References: <20181022122718.girdp4ybkw3wrsmn@smtp.gmail.com> <20181024110248.GA36@DESKTOP-E1NTVVP.localdomain> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-qt1-x842.google.com (mail-qt1-x842.google.com [IPv6:2607:f8b0:4864:20::842]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7065789DA3 for ; Mon, 29 Oct 2018 14:03:35 +0000 (UTC) Received: by mail-qt1-x842.google.com with SMTP id l41-v6so9264936qtl.8 for ; Mon, 29 Oct 2018 07:03:35 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20181024110248.GA36@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: Simon Ser , Alexandru-Cosmin Gheorghe , "dri-devel@lists.freedesktop.org" , nd List-Id: dri-devel@lists.freedesktop.org T24gMTAvMjQsIEJyaWFuIFN0YXJrZXkgd3JvdGU6Cj4gSGkgUm9kcmlnbywKCkhpIEJyaWFuLAoK VGhhbmtzIGEgbG90IGZvciB5b3VyIGZlZWRiYWNrISBJIGxlYXJuZWQgYSBsb3Qgd2l0aCBhbGwg b2YgdGhlbSA6KQoKSSB3aWxsIHdvcmsgZm9yIG1ha2UgYSByZWFsIFBBVENIIHNvb24uCgpBZ2Fp biwgdGhhbmtzIGEgbG90LgoKQmVzdCBSZWdhcmRzCgo+IE9uIE1vbiwgT2N0IDIyLCAyMDE4IGF0 IDA5OjI3OjE4QU0gLTAzMDAsIFJvZHJpZ28gU2lxdWVpcmEgd3JvdGU6Cj4gPkhpLAo+ID4KPiA+ SSBzdGFydGVkIHRvIHdvcmsgZm9yIGFkZCB0aGUgd3JpdGViYWNrIGZlYXR1cmUgaW50byB0aGUg VktNUywgYW5kIHRoaXMKPiA+UkZDIHJlcHJlc2VudHMgbXkgZmlyc3QgZHJhZnQuIEFzIGEgcmVz dWx0LCBJIGhhdmUgc29tZSBxdWVzdGlvbnMgd2hpY2gKPiA+SSBsaXN0IGJlbG93Lgo+ID4KPiA+ MS4gSW4gdGhpcyBwYXRjaCwgSSByZXBsYWNlZCB0aGUgdmlydHVhbCBjb25uZWN0b3IgYnkgdGhl IHdyaXRlYmFjawo+ID5jb25uZWN0b3IuIElzIGl0IGEgZ29vZCBpZGVhPyBPciBzaG91bGQgSSBr ZWVwIGJvdGggY29ubmVjdG9ycz8gSWYgSQo+ID5rZWVwIGJvdGggY29ubmVjdG9ycywgc2hvdWxk IEkgYWRkIGEgbW9kdWxlIHBhcmFtZXRlciB0byBlbmFibGUgdGhlCj4gPndyaXRlYmFjaz8KPiA+ Cj4gPjIuIFdoZW4gSSBhZGRlZCB0aGUgd3JpdGViYWNrIGNvbm5lY3RvciAoaW4KPiA+ZHJtX3dy aXRlYmFja19jb25uZWN0b3JfaW5pdCgpKSwgSSBub3RpY2VkIHRoYXQgSSBoYWQgdG8gaW5kaWNh dGUgdGhlCj4gPnN0cnVjdCBkcm1fZW5jb2Rlcl9oZWxwZXJfZnVuY3MuIEhvd2V2ZXIsIEkgdGhp bmsgdGhhdCBWS01TIGRvZXMgbm90Cj4gPm5lZWQgYW55dGhpbmcgc29waGlzdGljYXRlZCByZWxh dGVkIHRvIGVuY29kZXJzIGF0IHRoZSB3cml0ZWJhY2sKPiA+cGVyc3BlY3RpdmUuIEFtIEkgcmln aHQ/IE9yIGRpZCBJIG1pc3NlZCBzb21ldGhpbmc/Cj4gPgo+ID4zLiBJIGp1c3QgZGlzY292ZXJl ZCB0aGF0IHRoZSB3cml0ZWJhY2sgY29ubmVjdG9ycyBhcmUgbm90IGV4cG9zZWQgYXMgYQo+ID5j b25uZWN0b3IgZm9yIHRoZSB1c2Vyc3BhY2UsIGFzIGEgcmVzdWx0LCBJR1QgdGVzdHMgZG8gbm90 IHdvcmsgYW5kCj4gPldheWxhbmQgaXMgdW5hYmxlIHRvIHJ1biBhcyB3ZWxsLiBTaW1vbiBTZXIg YW5kIERhbmllbCBTdG9uZSwgZXhwbGFpbmVkCj4gPnRvIG1lIHRoYXQgSSBoYXZlIHRvIHVwZGF0 ZSB0aGUgY29tcG9zaXRvciAoaW4gbXkgY2FzZSBXZXN0b24pIHRvIHNldAo+ID5EUk1fQ0xJRU5U X0NBUF9XUklURUJBQ0tfQ09OTkVDVE9SUyB2aWEgZHJtU2V0Q2xpZW50Q2FwKCkuIFNpbmNlIEkg ZG8KPiA+bm90IGhhdmUgZXhwZXJpZW5jZSB3aXRoIHVzZXJzcGFjZSwgYW55b25lIGNhbiBwb2lu dCBtZSBvdXQgYW5vdGhlcgo+ID5hc3BlY3QgdGhhdCBJIGhhdmUgdG8gdGFrZSBhIGxvb2sgdG8g bWFrZSB0aGUgd3JpdGViYWNrIHdvcmsgaW4gdGhlIHVzZXIKPiA+c3BhY2U/IEFsc28sIElzIGl0 IHBvc3NpYmxlIHRvIHVwZGF0ZSB0aGUgSUdUIHRlc3Qgb3IgZG8gSSBuZWVkIHRvCj4gPmNyZWF0 ZSBhIG5ldyBzZXQgb2YgdGVzdHM/Cj4gCj4gQWxleCBhZGRlZCBzdXBwb3J0IGZvciB3cml0ZWJh Y2sgY29ubmVjdG9ycyBpbnRvIGRybV9od2NvbXBvc2VyIC0geW91Cj4gY2FuIHNlZSB0aGF0IGhl cmVbMV0KPiAKPiBUaGVyZSdzIGFsc28gc29tZSBpZ3QgdGVzdHMgbGlrZSBEYW5pZWwgbWVudGlv bmVkIC0gSSB0aGluayBMaXZpdQo+IGFscmVhZHkgcG9pbnRlZCB5b3UgYXQgdGhvc2UuCj4gCj4g U29tZSBtb3JlIHJldmlldyBiZWxvdywKPiAKPiBDaGVlcnMhCj4gLUJyaWFuCj4gCj4gWzFdIGh0 dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9kcm0taHdjb21wb3Nlci9kcm0taHdjb21wb3Nl ci9tZXJnZV9yZXF1ZXN0cy8zCj4gCj4gPgo+ID5UaGFua3MhCj4gPgo+ID5TaWduZWQtb2ZmLWJ5 OiBSb2RyaWdvIFNpcXVlaXJhIDxyb2RyaWdvc2lxdWVpcmFtZWxvQGdtYWlsLmNvbT4KPiA+LS0t Cj4gPiBkcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX2NyYy5jICAgIHwgICA5ICsrLQo+ID4gZHJp dmVycy9ncHUvZHJtL3ZrbXMvdmttc19jcnRjLmMgICB8ICAgMiArCj4gPiBkcml2ZXJzL2dwdS9k cm0vdmttcy92a21zX2Rydi5oICAgIHwgICAzICstCj4gPiBkcml2ZXJzL2dwdS9kcm0vdmttcy92 a21zX291dHB1dC5jIHwgMTA3ICsrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tCj4gPiA0IGZp bGVzIGNoYW5nZWQsIDg5IGluc2VydGlvbnMoKyksIDMyIGRlbGV0aW9ucygtKQo+ID4KPiA+ZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfY3JjLmMgYi9kcml2ZXJzL2dwdS9k cm0vdmttcy92a21zX2NyYy5jCj4gPmluZGV4IDlkOWU4MTQ2ZGI5MC4uNWQ5YWM0NWUwMGYyIDEw MDY0NAo+ID4tLS0gYS9kcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX2NyYy5jCj4gPisrKyBiL2Ry aXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfY3JjLmMKPiA+QEAgLTEwOSw3ICsxMDksOCBAQCBzdGF0 aWMgdm9pZCBjb21wb3NlX2N1cnNvcihzdHJ1Y3Qgdmttc19jcmNfZGF0YSAqY3Vyc29yX2NyYywK PiA+IH0KPiA+Cj4gPiBzdGF0aWMgdWludDMyX3QgX3ZrbXNfZ2V0X2NyYyhzdHJ1Y3Qgdmttc19j cmNfZGF0YSAqcHJpbWFyeV9jcmMsCj4gPi0JCQkgICAgICBzdHJ1Y3Qgdmttc19jcmNfZGF0YSAq Y3Vyc29yX2NyYykKPiA+KwkJCSAgICAgIHN0cnVjdCB2a21zX2NyY19kYXRhICpjdXJzb3JfY3Jj LAo+ID4rCQkJICAgICAgc3RydWN0IHZrbXNfb3V0cHV0ICpvdXQpCj4gPiB7Cj4gPiAJc3RydWN0 IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSAmcHJpbWFyeV9jcmMtPmZiOwo+ID4gCXN0cnVjdCBkcm1f Z2VtX29iamVjdCAqZ2VtX29iaiA9IGRybV9nZW1fZmJfZ2V0X29iaihmYiwgMCk7Cj4gPkBAIC0x MzAsNiArMTMxLDEwIEBAIHN0YXRpYyB1aW50MzJfdCBfdmttc19nZXRfY3JjKHN0cnVjdCB2a21z X2NyY19kYXRhICpwcmltYXJ5X2NyYywKPiA+IAl9Cj4gPgo+ID4gCW1lbWNweSh2YWRkcl9vdXQs IHZrbXNfb2JqLT52YWRkciwgdmttc19vYmotPmdlbS5zaXplKTsKPiA+KwkvLyBUT0RPOiBSZW1v dmUgdGhpcyBjb3B5IGZyb20gY3JjLCBhbmQgbWFrZSB0aGlzIHNvcnQgb2Ygb3BlcmF0aW9uCj4g PisJLy8gZ2VuZXJpYyBzaW5jZSB3ZSBjYW4gdXNlIGluIGRpZmZlcmVudCBwbGFjZXMKPiA+Kwlt ZW1jcHkob3V0LT5jb25uZWN0b3IuYmFzZS5zdGF0ZS0+d3JpdGViYWNrX2pvYi0+ZmIsCj4gPisJ ICAgICAgIHZrbXNfb2JqLT52YWRkciwgdmttc19vYmotPmdlbS5zaXplKTsKPiAKPiBUaGlzIGxv b2tzIGxpa2UgaXQgd291bGQgY3Jhc2ggdGVycmlibHksIHlvdSdyZSBjb3B5aW5nIHRoZSBwaXhl bCBkYXRhCj4gKGZyb20gdmttc19vYmotPnZhZGRyKSBpbnRvIGEgInN0cnVjdCBkcm1fZnJhbWVi dWZmZXIgKiIgd2hpY2ggaXMgYQo+IHBvaW50ZXIgdG8gdGhlIHN0cnVjdCwgcmF0aGVyIHRoYW4g c29tZXdoZXJlIHRvIHB1dCB0aGUgYWN0dWFsCj4gcGl4ZWxzLgo+IAo+IFRoZSBzYW1lIHdheSB5 b3UgZ2V0IHRoZSB2YWRkciBmb3IgdGhlIGlucHV0IGZyYW1lYnVmZmVyLCB5b3UgbmVlZCB0bwo+ IGdldCB0aGUgdmFkZHIgZm9yIHRoZSBvdXRwdXQgZnJhbWVidWZmZXIgdG9vIC0gdmlhCj4gZHJt X2dlbV9mYl9nZXRfb2JqKCkgYW5kIHRoZW4gY29udmVydGluZyB0aGF0IHRvIGEgdmttc19nZW1f b2JqZWN0Lgo+IFRoZW4gdXNlIHRoYXQgdmFkZHIgYXMgdGhlIGRlc3RpbmF0aW9uIG9mIHRoZSBt ZW1jcHkuIEhvd2V2ZXIsIHNlZSBteQo+IGNvbW1lbnRzIGF0IHRoZSBib3R0b20gYWJvdXQgZHJt X3dyaXRlYmFja19xdWV1ZV9qb2IoKS4gWW91IG1pZ2h0IGJlCj4gYmV0dGVyIGdldHRpbmcgYW5k IHN0b3JpbmcgdGhlIHZhZGRyIGR1cmluZyBhdG9taWNfY29tbWl0KCksIHJhdGhlcgo+IHRoYW4g aW4gdGhpcyBmdW5jdGlvbi4KPiAKPiBJbiBvcmRlciBmb3IgdGhpcyB0byBiZSBhIHN0cmFpZ2h0 IG1lbWNweSwgeW91IG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQKPiB0aGUgaW5wdXQgYW5kIG91dHB1 dCBidWZmZXJzIGhhdmUgdGhlIHNhbWUgc2l6ZSwgcGl4ZWwgZm9ybWF0LCBzYW1lCj4gc3RyaWRl IGV0Yy4gYXMgd2VsbCBzbyB5b3UnbGwgbmVlZCB0byBjaGVjayB0aGF0IGluIGF0b21pY19jaGVj aygpLgo+IE9uY2UgaXQncyB3b3JraW5nIHlvdSBjYW4gcmVsYXggdGhvc2UgcmVzdHJpY3Rpb25z IGJ5IGNvcHlpbmcgYSBsaW5lCj4gYXQgYSB0aW1lIG9yIGRvaW5nIHBpeGVsIGZvcm1hdCBjb252 ZXJzaW9uIC0gYnV0IEkgZG9uJ3QgdGhpbmsgaXQncwo+IG5lY2Vzc2FyeSB0byBzdGFydCB3aXRo Lgo+IAo+IFRoZXJlIG1pZ2h0IGJlIGFuIG9wcG9ydHVuaXR5IHRvIHNraXAgYSBjb3B5IGhlcmUg dG9vIC0gaWYgeW91IGhhdmUgYQo+IGZyYW1lYnVmZmVyIGF0dGFjaGVkIHRvIHRoZSB3cml0ZWJh Y2sgY29ubmVjdG9yLCB5b3UgY2FuIHNraXAKPiBhbGxvY2F0aW5nICJ2YWRkcl9vdXQiIGFuZCBq dXN0IGNvbXBvc2UgdGhlIGN1cnNvciBkaXJlY3RseSBpbnRvIHRoZQo+IG91dHB1dCBmcmFtZWJ1 ZmZlciwgYW5kIGNhbGN1bGF0ZSB0aGUgQ1JDIG9uIHRoYXQuIFRoYXQncyBkZWZpbml0ZWx5Cj4g YW4gb3B0aW1pc2F0aW9uIHJhdGhlciB0aGFuIGEgcmVxdWlyZW1lbnQgdGhvdWdoLgo+IAo+ID4g CW11dGV4X3VubG9jaygmdmttc19vYmotPnBhZ2VzX2xvY2spOwo+ID4KPiA+IAlpZiAoY3Vyc29y X2NyYykKPiA+QEAgLTE5Myw3ICsxOTgsNyBAQCB2b2lkIHZrbXNfY3JjX3dvcmtfaGFuZGxlKHN0 cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKPiA+IAl9Cj4gPgo+ID4gCWlmIChwcmltYXJ5X2NyYykK PiA+LQkJY3JjMzIgPSBfdmttc19nZXRfY3JjKHByaW1hcnlfY3JjLCBjdXJzb3JfY3JjKTsKPiA+ KwkJY3JjMzIgPSBfdmttc19nZXRfY3JjKHByaW1hcnlfY3JjLCBjdXJzb3JfY3JjLCBvdXQpOwo+ ID4KPiA+IAlmcmFtZV9lbmQgPSBkcm1fY3J0Y19hY2N1cmF0ZV92YmxhbmtfY291bnQoY3J0Yyk7 Cj4gPgo+ID5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19jcnRjLmMgYi9k cml2ZXJzL2dwdS9kcm0vdmttcy92a21zX2NydGMuYwo+ID5pbmRleCAxNzdiYmNiMzgzMDYuLmQz M2RkY2M0MGEyOSAxMDA2NDQKPiA+LS0tIGEvZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19jcnRj LmMKPiA+KysrIGIvZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19jcnRjLmMKPiA+QEAgLTQ4LDYg KzQ4LDggQEAgc3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IHZrbXNfdmJsYW5rX3NpbXVsYXRl KHN0cnVjdCBocnRpbWVyICp0aW1lcikKPiA+Cj4gPiAJX3ZibGFua19oYW5kbGUob3V0cHV0KTsK PiA+Cj4gPisJZHJtX3dyaXRlYmFja19zaWduYWxfY29tcGxldGlvbigmb3V0cHV0LT5jb25uZWN0 b3IsIDApOwo+ID4rCj4gPiAJcmV0X292ZXJydW4gPSBocnRpbWVyX2ZvcndhcmRfbm93KCZvdXRw dXQtPnZibGFua19ocnRpbWVyLAo+ID4gCQkJCQkgIG91dHB1dC0+cGVyaW9kX25zKTsKPiA+Cj4g PmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX2Rydi5oIGIvZHJpdmVycy9n cHUvZHJtL3ZrbXMvdmttc19kcnYuaAo+ID5pbmRleCAxYzkzOTkwNjkzZTMuLjFlODE4NGFkODcy ZiAxMDA2NDQKPiA+LS0tIGEvZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19kcnYuaAo+ID4rKysg Yi9kcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX2Rydi5oCj4gPkBAIC01LDYgKzUsNyBAQAo+ID4g I2luY2x1ZGUgPGRybS9kcm0uaD4KPiA+ICNpbmNsdWRlIDxkcm0vZHJtX2dlbS5oPgo+ID4gI2lu Y2x1ZGUgPGRybS9kcm1fZW5jb2Rlci5oPgo+ID4rI2luY2x1ZGUgPGRybS9kcm1fd3JpdGViYWNr Lmg+Cj4gPiAjaW5jbHVkZSA8bGludXgvaHJ0aW1lci5oPgo+ID4KPiA+ICNkZWZpbmUgWFJFU19N SU4gICAgMjAKPiA+QEAgLTYxLDcgKzYyLDcgQEAgc3RydWN0IHZrbXNfY3J0Y19zdGF0ZSB7Cj4g PiBzdHJ1Y3Qgdmttc19vdXRwdXQgewo+ID4gCXN0cnVjdCBkcm1fY3J0YyBjcnRjOwo+ID4gCXN0 cnVjdCBkcm1fZW5jb2RlciBlbmNvZGVyOwo+ID4tCXN0cnVjdCBkcm1fY29ubmVjdG9yIGNvbm5l Y3RvcjsKPiA+KwlzdHJ1Y3QgZHJtX3dyaXRlYmFja19jb25uZWN0b3IgY29ubmVjdG9yOwo+ID4g CXN0cnVjdCBocnRpbWVyIHZibGFua19ocnRpbWVyOwo+ID4gCWt0aW1lX3QgcGVyaW9kX25zOwo+ ID4gCXN0cnVjdCBkcm1fcGVuZGluZ192YmxhbmtfZXZlbnQgKmV2ZW50Owo+ID5kaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19vdXRwdXQuYyBiL2RyaXZlcnMvZ3B1L2RybS92 a21zL3ZrbXNfb3V0cHV0LmMKPiA+aW5kZXggMjcxYTBlYjkwNDJjLi40NjYyMmQwMTIxMDcgMTAw NjQ0Cj4gPi0tLSBhL2RyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfb3V0cHV0LmMKPiA+KysrIGIv ZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19vdXRwdXQuYwo+ID5AQCAtOSw2ICs5LDEzIEBACj4g PiAjaW5jbHVkZSAidmttc19kcnYuaCIKPiA+ICNpbmNsdWRlIDxkcm0vZHJtX2NydGNfaGVscGVy Lmg+Cj4gPiAjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWNfaGVscGVyLmg+Cj4gPisjaW5jbHVkZSA8 ZHJtL2RybV93cml0ZWJhY2suaD4KPiA+Kwo+ID4rI2RlZmluZSB0b193Yl9zdGF0ZShfc3RhdGUp IChzdHJ1Y3Qgdmttc193cml0ZWJhY2tfY29ubmVjdG9yX3N0YXRlICopKF9zdGF0ZSkKPiA+Kwo+ ID4rc3RydWN0IHZrbXNfd3JpdGViYWNrX2Nvbm5lY3Rvcl9zdGF0ZSB7Cj4gPisJc3RydWN0IGRy bV9jb25uZWN0b3Jfc3RhdGUgYmFzZTsKPiA+K307Cj4gPgo+ID4gc3RhdGljIHZvaWQgdmttc19j b25uZWN0b3JfZGVzdHJveShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ID4gewo+ ID5AQCAtMTYsMTEgKzIzLDQ4IEBAIHN0YXRpYyB2b2lkIHZrbXNfY29ubmVjdG9yX2Rlc3Ryb3ko c3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiA+IAlkcm1fY29ubmVjdG9yX2NsZWFu dXAoY29ubmVjdG9yKTsKPiA+IH0KPiA+Cj4gPitzdGF0aWMgdm9pZCB2a21zX2Nvbm5lY3Rvcl9y ZXNldChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ID4rewo+ID4rCXN0cnVjdCB2 a21zX3dyaXRlYmFja19jb25uZWN0b3Jfc3RhdGUgKndiX3N0YXRlID0KPiA+KwkJa3phbGxvYyhz aXplb2YoKndiX3N0YXRlKSwgR0ZQX0tFUk5FTCk7Cj4gPisKPiA+KwlpZiAoY29ubmVjdG9yLT5z dGF0ZSkKPiA+KwkJX19kcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfZGVzdHJveV9zdGF0ZShj b25uZWN0b3ItPnN0YXRlKTsKPiA+Kwo+ID4rCWtmcmVlKGNvbm5lY3Rvci0+c3RhdGUpOwo+ID4r CV9fZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX3Jlc2V0KGNvbm5lY3RvciwgJndiX3N0YXRl LT5iYXNlKTsKPiA+K30KPiA+Kwo+ID4rc3RhdGljIHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRl ICoKPiA+K3ZrbXNfY29ubmVjdG9yX2R1cGxpY2F0ZV9zdGF0ZShzdHJ1Y3QgZHJtX2Nvbm5lY3Rv ciAqY29ubmVjdG9yKQo+ID4rewo+ID4rCXN0cnVjdCB2a21zX3dyaXRlYmFja19jb25uZWN0b3Jf c3RhdGUgKndiX3N0YXRlOwo+ID4rCj4gPisJaWYgKFdBUk5fT04oIWNvbm5lY3Rvci0+c3RhdGUp KQo+ID4rCQlyZXR1cm4gTlVMTDsKPiA+Kwo+ID4rCXdiX3N0YXRlID0ga3phbGxvYyhzaXplb2Yo KndiX3N0YXRlKSwgR0ZQX0tFUk5FTCk7Cj4gPisJaWYgKCF3Yl9zdGF0ZSkKPiA+KwkJcmV0dXJu IE5VTEw7Cj4gPisKPiA+KwlfX2RybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9kdXBsaWNhdGVf c3RhdGUoY29ubmVjdG9yLAo+ID4rCQkJCQkJICAgICAgJndiX3N0YXRlLT5iYXNlKTsKPiA+Kwo+ ID4rCXJldHVybiAmd2Jfc3RhdGUtPmJhc2U7Cj4gPit9Cj4gPisKPiA+K3N0YXRpYyBlbnVtIGRy bV9jb25uZWN0b3Jfc3RhdHVzCj4gPit2a21zX2Nvbm5lY3Rvcl9kZXRlY3Qoc3RydWN0IGRybV9j b25uZWN0b3IgKmNvbm5lY3RvciwgYm9vbCBmb3JjZSkKPiA+K3sKPiA+KwlyZXR1cm4gY29ubmVj dG9yX3N0YXR1c19jb25uZWN0ZWQ7Cj4gPit9Cj4gPisKPiA+IHN0YXRpYyBjb25zdCBzdHJ1Y3Qg ZHJtX2Nvbm5lY3Rvcl9mdW5jcyB2a21zX2Nvbm5lY3Rvcl9mdW5jcyA9IHsKPiA+KwkucmVzZXQg PSB2a21zX2Nvbm5lY3Rvcl9yZXNldCwKPiA+KwkuZGV0ZWN0ID0gdmttc19jb25uZWN0b3JfZGV0 ZWN0LAo+ID4gCS5maWxsX21vZGVzID0gZHJtX2hlbHBlcl9wcm9iZV9zaW5nbGVfY29ubmVjdG9y X21vZGVzLAo+ID4gCS5kZXN0cm95ID0gdmttc19jb25uZWN0b3JfZGVzdHJveSwKPiA+LQkucmVz ZXQgPSBkcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfcmVzZXQsCj4gPi0JLmF0b21pY19kdXBs aWNhdGVfc3RhdGUgPSBkcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfZHVwbGljYXRlX3N0YXRl LAo+ID4rCS5hdG9taWNfZHVwbGljYXRlX3N0YXRlID0gdmttc19jb25uZWN0b3JfZHVwbGljYXRl X3N0YXRlLAo+ID4gCS5hdG9taWNfZGVzdHJveV9zdGF0ZSA9IGRybV9hdG9taWNfaGVscGVyX2Nv bm5lY3Rvcl9kZXN0cm95X3N0YXRlLAo+ID4gfTsKPiAKPiBZb3UncmUgbWlzc2luZyB0aGUgY2Fs bCB0byBkcm1fd3JpdGViYWNrX3F1ZXVlX2pvYigpLCB3aGljaCBpcwo+IHJlcXVpcmVkLiBZb3Vy IGNvbm5lY3RvciBuZWVkcyB0byBoYXZlIGFuIGF0b21pY19jb21taXQgY2FsbGJhY2sgaW4KPiBp dHMgZHJtX2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3MsIGFuZCBpbiB0aGVyZSB5b3UgbmVlZCB0byAi cXVldWUiIHRoZQo+IGpvYiwgc29tZXRoaW5nIGxpa2U6Cj4gCj4gICBzdHJ1Y3QgZHJtX3dyaXRl YmFja19jb25uZWN0b3IgKndiX2Nvbm4gPSAmb3V0LT5jb25uZWN0b3I7Cj4gICBkcm1fd3JpdGVi YWNrX3F1ZXVlX2pvYih3Yl9jb25uLCB3Yl9jb25uLT5iYXNlLnN0YXRlLT53cml0ZWJhY2tfam9i KTsKPiAgIHdiX2Nvbm4tPmJhc2Uuc3RhdGUtPndyaXRlYmFja19qb2IgPSBOVUxMOwo+IAo+IEJl Y2F1c2UgeW91IG5lZWQgdG8gc2V0IHRoZSBqb2IgcG9pbnRlciB0byBOVUxMIHRoZXJlLCBiZWZv cmUgdGhhdAo+IHlvdSdsbCBuZWVkIHRvIHN0YXNoIHRoZSBkZXN0aW5hdGlvbiBzb21ld2hlcmUg ZWxzZSwgdG8gYmUgdXNlZCBhcyB0aGUKPiBkZXN0aW5hdGlvbiBmb3IgdGhlIG1lbWNweSgpIGlu IF92a21zX2dldF9jcmMoKS4gVGhlIHNpbXBsZXN0IHRoaW5nIHRvCj4gZG8gaXMgcHJvYmFibHkg dG8ganVzdCBhZGQgYSBuZXcgdm9pZCAqd3JpdGViYWNrX3ZhZGRyIHRvCj4gdmttc193cml0ZWJh Y2tfY29ubmVjdG9yX3N0YXRlLCBhbmQgc2V0IGl0IHRvIHRoZSBvdXRwdXQgZnJhbWVidWZmZXIK PiB2YWRkciBiZWZvcmUgeW91IGNhbGwgX3F1ZXVlX2pvYigpLiBUaGUgY29yZSB3aWxsIG1ha2Ug c3VyZSB0aGUKPiBmcmFtZWJ1ZmZlciBpcyBwcm9wZXJseSByZWZjb3VudGVkIHVudGlsIHlvdSBj YWxsCj4gZHJtX3dyaXRlYmFja19zaWduYWxfY29tcGxldGlvbigpLCBzbyBhcyBsb25nIGFzIHlv dSBvbmx5IGNhbGwgdGhhdAo+IGFmdGVyIHlvdSd2ZSBmaW5pc2hlZCBjb3B5aW5nIHRoZSBkYXRh LCB5b3UncmUgc2FmZS4KPiAKPiBJbiBhICJyZWFsIiBIVyBkZXZpY2UsIHdlIHdyaXRlIHRoYXQg cG9pbnRlciBkaXJlY3RseSB0byBhIEhXCj4gcmVnaXN0ZXIsIHNvIHdlIGRvbid0IG5lZWQgdG8g dHJhY2sgaXQgaW4gb3VyIGNvbm5lY3RvciBzdGF0ZS4gQnV0IHlvdQo+IGRvbid0IGhhdmUgYSBI VyByZWdpc3RlciB0byBwdXQgaXQgaW4sIHNvIHlvdSdsbCBuZWVkIHRvIHRyYWNrIGl0Cj4geW91 cnNlbGYgOi0pCj4gCj4gPgo+ID5AQCAtNDIsMTIgKzg2LDM1IEBAIHN0YXRpYyBjb25zdCBzdHJ1 Y3QgZHJtX2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3Mgdmttc19jb25uX2hlbHBlcl9mdW5jcyA9IHsK PiA+IAkuZ2V0X21vZGVzICAgID0gdmttc19jb25uX2dldF9tb2RlcywKPiA+IH07Cj4gPgo+ID4r c3RhdGljIGludCB2a21zX2VuY29kZXJfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fZW5jb2RlciAq ZW5jb2RlciwKPiA+KwkJCQkgICAgIHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwK PiA+KwkJCQkgICAgIHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlKQo+ID4r ewo+ID4rCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiOwo+ID4rCj4gPisJaWYgKCFjb25uX3N0 YXRlLT53cml0ZWJhY2tfam9iIHx8ICFjb25uX3N0YXRlLT53cml0ZWJhY2tfam9iLT5mYikKPiA+ KwkJcmV0dXJuIDA7Cj4gPisKPiA+KwlmYiA9IGNvbm5fc3RhdGUtPndyaXRlYmFja19qb2ItPmZi Owo+ID4rCWlmIChmYi0+d2lkdGggIT0gY3J0Y19zdGF0ZS0+bW9kZS5oZGlzcGxheSB8fAo+ID4r CSAgICBmYi0+aGVpZ2h0ICE9IGNydGNfc3RhdGUtPm1vZGUudmRpc3BsYXkpIHsKPiA+KwkJRFJN X0RFQlVHX0tNUygiSW52YWxpZCBmcmFtZWJ1ZmZlciBzaXplICV1eCV1XG4iLAo+ID4rCQkJICAg ICAgZmItPndpZHRoLCBmYi0+aGVpZ2h0KTsKPiA+KwkJcmV0dXJuIC1FSU5WQUw7Cj4gPisJfQo+ ID4rCj4gPisJcmV0dXJuIDA7Cj4gPit9Cj4gPisKPiA+K3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJt X2VuY29kZXJfaGVscGVyX2Z1bmNzIHZrbXNfZW5jb2Rlcl9oZWxwZXJfZnVuY3MgPSB7Cj4gPisJ LmF0b21pY19jaGVjayA9IHZrbXNfZW5jb2Rlcl9hdG9taWNfY2hlY2ssCj4gPit9Owo+ID4rCj4g PiBpbnQgdmttc19vdXRwdXRfaW5pdChzdHJ1Y3Qgdmttc19kZXZpY2UgKnZrbXNkZXYpCj4gPiB7 Cj4gPiAJc3RydWN0IHZrbXNfb3V0cHV0ICpvdXRwdXQgPSAmdmttc2Rldi0+b3V0cHV0Owo+ID4g CXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSAmdmttc2Rldi0+ZHJtOwo+ID4tCXN0cnVjdCBkcm1f Y29ubmVjdG9yICpjb25uZWN0b3IgPSAmb3V0cHV0LT5jb25uZWN0b3I7Cj4gPi0Jc3RydWN0IGRy bV9lbmNvZGVyICplbmNvZGVyID0gJm91dHB1dC0+ZW5jb2RlcjsKPiA+KwlzdHJ1Y3QgZHJtX3dy aXRlYmFja19jb25uZWN0b3IgKmNvbm5lY3RvciA9ICZvdXRwdXQtPmNvbm5lY3RvcjsKPiA+IAlz dHJ1Y3QgZHJtX2NydGMgKmNydGMgPSAmb3V0cHV0LT5jcnRjOwo+ID4gCXN0cnVjdCBkcm1fcGxh bmUgKnByaW1hcnksICpjdXJzb3IgPSBOVUxMOwo+ID4gCWludCByZXQ7Cj4gPkBAIC02OCw0NyAr MTM1LDI5IEBAIGludCB2a21zX291dHB1dF9pbml0KHN0cnVjdCB2a21zX2RldmljZSAqdmttc2Rl dikKPiA+IAlpZiAocmV0KQo+ID4gCQlnb3RvIGVycl9jcnRjOwo+ID4KPiA+LQlyZXQgPSBkcm1f Y29ubmVjdG9yX2luaXQoZGV2LCBjb25uZWN0b3IsICZ2a21zX2Nvbm5lY3Rvcl9mdW5jcywKPiA+ LQkJCQkgRFJNX01PREVfQ09OTkVDVE9SX1ZJUlRVQUwpOwo+ID4rCXJldCA9IGRybV93cml0ZWJh Y2tfY29ubmVjdG9yX2luaXQoZGV2LCBjb25uZWN0b3IsCj4gPisJCQkJCSAgICZ2a21zX2Nvbm5l Y3Rvcl9mdW5jcywKPiA+KwkJCQkJICAgJnZrbXNfZW5jb2Rlcl9oZWxwZXJfZnVuY3MsCj4gPisJ CQkJCSAgIHZrbXNfZm9ybWF0cywgMSk7Cj4gPiAJaWYgKHJldCkgewo+ID4gCQlEUk1fRVJST1Io IkZhaWxlZCB0byBpbml0IGNvbm5lY3RvclxuIik7Cj4gPiAJCWdvdG8gZXJyX2Nvbm5lY3RvcjsK PiA+IAl9Cj4gPgo+ID4tCWRybV9jb25uZWN0b3JfaGVscGVyX2FkZChjb25uZWN0b3IsICZ2a21z X2Nvbm5faGVscGVyX2Z1bmNzKTsKPiA+Kwlkcm1fY29ubmVjdG9yX2hlbHBlcl9hZGQoJmNvbm5l Y3Rvci0+YmFzZSwgJnZrbXNfY29ubl9oZWxwZXJfZnVuY3MpOwo+ID4KPiA+LQlyZXQgPSBkcm1f Y29ubmVjdG9yX3JlZ2lzdGVyKGNvbm5lY3Rvcik7Cj4gPisJcmV0ID0gZHJtX2Nvbm5lY3Rvcl9y ZWdpc3RlcigmY29ubmVjdG9yLT5iYXNlKTsKPiA+IAlpZiAocmV0KSB7Cj4gPiAJCURSTV9FUlJP UigiRmFpbGVkIHRvIHJlZ2lzdGVyIGNvbm5lY3RvclxuIik7Cj4gPiAJCWdvdG8gZXJyX2Nvbm5l Y3Rvcl9yZWdpc3RlcjsKPiA+IAl9Cj4gPgo+ID4tCXJldCA9IGRybV9lbmNvZGVyX2luaXQoZGV2 LCBlbmNvZGVyLCAmdmttc19lbmNvZGVyX2Z1bmNzLAo+ID4tCQkJICAgICAgIERSTV9NT0RFX0VO Q09ERVJfVklSVFVBTCwgTlVMTCk7Cj4gPi0JaWYgKHJldCkgewo+ID4tCQlEUk1fRVJST1IoIkZh aWxlZCB0byBpbml0IGVuY29kZXJcbiIpOwo+ID4tCQlnb3RvIGVycl9lbmNvZGVyOwo+ID4tCX0K PiA+LQllbmNvZGVyLT5wb3NzaWJsZV9jcnRjcyA9IDE7Cj4gPi0KPiA+LQlyZXQgPSBkcm1fY29u bmVjdG9yX2F0dGFjaF9lbmNvZGVyKGNvbm5lY3RvciwgZW5jb2Rlcik7Cj4gPi0JaWYgKHJldCkg ewo+ID4tCQlEUk1fRVJST1IoIkZhaWxlZCB0byBhdHRhY2ggY29ubmVjdG9yIHRvIGVuY29kZXJc biIpOwo+ID4tCQlnb3RvIGVycl9hdHRhY2g7Cj4gPi0JfQo+ID4tCj4gPiAJZHJtX21vZGVfY29u ZmlnX3Jlc2V0KGRldik7Cj4gPgo+ID4gCXJldHVybiAwOwo+ID4KPiA+LWVycl9hdHRhY2g6Cj4g Pi0JZHJtX2VuY29kZXJfY2xlYW51cChlbmNvZGVyKTsKPiA+LQo+ID4tZXJyX2VuY29kZXI6Cj4g Pi0JZHJtX2Nvbm5lY3Rvcl91bnJlZ2lzdGVyKGNvbm5lY3Rvcik7Cj4gPi0KPiA+IGVycl9jb25u ZWN0b3JfcmVnaXN0ZXI6Cj4gPi0JZHJtX2Nvbm5lY3Rvcl9jbGVhbnVwKGNvbm5lY3Rvcik7Cj4g PisJZHJtX2Nvbm5lY3Rvcl9jbGVhbnVwKCZjb25uZWN0b3ItPmJhc2UpOwo+ID4KPiA+IGVycl9j b25uZWN0b3I6Cj4gPiAJZHJtX2NydGNfY2xlYW51cChjcnRjKTsKPiA+LS0gCj4gPjIuMTkuMQo+ ID4KPiA+Cj4gPi0tIAo+ID5Sb2RyaWdvIFNpcXVlaXJhCj4gPmh0dHBzOi8vc2lxdWVpcmEudGVj aAo+ID5odHRwczovL3R3aXR0ZXIuY29tL3NpcXVlaXJham9yZGFvCj4gPkdyYWR1YXRlIFN0dWRl bnQKPiA+RGVwYXJ0bWVudCBvZiBDb21wdXRlciBTY2llbmNlCj4gPlVuaXZlcnNpdHkgb2YgU8Oj byBQYXVsbwoKLS0gClJvZHJpZ28gU2lxdWVpcmEKaHR0cHM6Ly9zaXF1ZWlyYS50ZWNoCmh0dHBz Oi8vdHdpdHRlci5jb20vc2lxdWVpcmFqb3JkYW8KR3JhZHVhdGUgU3R1ZGVudApEZXBhcnRtZW50 IG9mIENvbXB1dGVyIFNjaWVuY2UKVW5pdmVyc2l0eSBvZiBTw6NvIFBhdWxvCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxp c3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=