From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [RFC] drm/vkms: Add writeback support Date: Mon, 22 Oct 2018 20:34:30 +0200 Message-ID: <20181022183430.GI324@phenom.ffwll.local> References: <20181022122718.girdp4ybkw3wrsmn@smtp.gmail.com> 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 45B4989257 for ; Mon, 22 Oct 2018 18:34:34 +0000 (UTC) Received: by mail-ed1-x544.google.com with SMTP id y20-v6so38900825eds.10 for ; Mon, 22 Oct 2018 11:34:34 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20181022122718.girdp4ybkw3wrsmn@smtp.gmail.com> 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: Simon Ser , dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gTW9uLCBPY3QgMjIsIDIwMTggYXQgMDk6Mjc6MThBTSAtMDMwMCwgUm9kcmlnbyBTaXF1ZWly YSB3cm90ZToKPiBIaSwKPiAKPiBJIHN0YXJ0ZWQgdG8gd29yayBmb3IgYWRkIHRoZSB3cml0ZWJh Y2sgZmVhdHVyZSBpbnRvIHRoZSBWS01TLCBhbmQgdGhpcwo+IFJGQyByZXByZXNlbnRzIG15IGZp cnN0IGRyYWZ0LiBBcyBhIHJlc3VsdCwgSSBoYXZlIHNvbWUgcXVlc3Rpb25zIHdoaWNoCj4gSSBs aXN0IGJlbG93Lgo+IAo+IDEuIEluIHRoaXMgcGF0Y2gsIEkgcmVwbGFjZWQgdGhlIHZpcnR1YWwg Y29ubmVjdG9yIGJ5IHRoZSB3cml0ZWJhY2sKPiBjb25uZWN0b3IuIElzIGl0IGEgZ29vZCBpZGVh PyBPciBzaG91bGQgSSBrZWVwIGJvdGggY29ubmVjdG9ycz8gSWYgSQo+IGtlZXAgYm90aCBjb25u ZWN0b3JzLCBzaG91bGQgSSBhZGQgYSBtb2R1bGUgcGFyYW1ldGVyIHRvIGVuYWJsZSB0aGUKPiB3 cml0ZWJhY2s/CgpZZWFoIHNlcGFyYXRlIGNvbm5lY3RvciBpcyBpbW8gYmV0dGVyLCB3aXRoIG1v ZHVsZSBjb25maWcga25vYi4gRXZlbnR1YWxseQp3ZSBjYW4gbW92ZSB0aGF0IGludG8gY29uZmln ZnMgb3Igc2ltaWxhci4KCj4gMi4gV2hlbiBJIGFkZGVkIHRoZSB3cml0ZWJhY2sgY29ubmVjdG9y IChpbgo+IGRybV93cml0ZWJhY2tfY29ubmVjdG9yX2luaXQoKSksIEkgbm90aWNlZCB0aGF0IEkg aGFkIHRvIGluZGljYXRlIHRoZQo+IHN0cnVjdCBkcm1fZW5jb2Rlcl9oZWxwZXJfZnVuY3MuIEhv d2V2ZXIsIEkgdGhpbmsgdGhhdCBWS01TIGRvZXMgbm90Cj4gbmVlZCBhbnl0aGluZyBzb3BoaXN0 aWNhdGVkIHJlbGF0ZWQgdG8gZW5jb2RlcnMgYXQgdGhlIHdyaXRlYmFjawo+IHBlcnNwZWN0aXZl LiBBbSBJIHJpZ2h0PyBPciBkaWQgSSBtaXNzZWQgc29tZXRoaW5nPwoKWWVhaCwgeW91IGRvbid0 IG5lZWQgYW55dGhpbmcgZmFuY3kgaW4gdGhlIGRybV9lbmNvZGVyLiBJIHRoaW5rIHlvdSBjb3Vs ZApyZXVzZSB0aGUgc2FtZSBkdW1teSBkcm1fZW5jb2RlciBhcyB3ZSB1c2UgZm9yIHRoZSBub3Jt YWwgY29ubmVjdG9yLgoKPiAzLiBJIGp1c3QgZGlzY292ZXJlZCB0aGF0IHRoZSB3cml0ZWJhY2sg Y29ubmVjdG9ycyBhcmUgbm90IGV4cG9zZWQgYXMgYQo+IGNvbm5lY3RvciBmb3IgdGhlIHVzZXJz cGFjZSwgYXMgYSByZXN1bHQsIElHVCB0ZXN0cyBkbyBub3Qgd29yayBhbmQKPiBXYXlsYW5kIGlz IHVuYWJsZSB0byBydW4gYXMgd2VsbC4gU2ltb24gU2VyIGFuZCBEYW5pZWwgU3RvbmUsIGV4cGxh aW5lZAo+IHRvIG1lIHRoYXQgSSBoYXZlIHRvIHVwZGF0ZSB0aGUgY29tcG9zaXRvciAoaW4gbXkg Y2FzZSBXZXN0b24pIHRvIHNldAo+IERSTV9DTElFTlRfQ0FQX1dSSVRFQkFDS19DT05ORUNUT1JT IHZpYSBkcm1TZXRDbGllbnRDYXAoKS4gU2luY2UgSSBkbwo+IG5vdCBoYXZlIGV4cGVyaWVuY2Ug d2l0aCB1c2Vyc3BhY2UsIGFueW9uZSBjYW4gcG9pbnQgbWUgb3V0IGFub3RoZXIKPiBhc3BlY3Qg dGhhdCBJIGhhdmUgdG8gdGFrZSBhIGxvb2sgdG8gbWFrZSB0aGUgd3JpdGViYWNrIHdvcmsgaW4g dGhlIHVzZXIKPiBzcGFjZT8gQWxzbywgSXMgaXQgcG9zc2libGUgdG8gdXBkYXRlIHRoZSBJR1Qg dGVzdCBvciBkbyBJIG5lZWQgdG8KPiBjcmVhdGUgYSBuZXcgc2V0IG9mIHRlc3RzPwoKWWVhaCwg d3JpdGViYWNrIGNvbm5lY3RvciBkb2Vzbid0IHdvcmsgbGlrZSBhIG5vcm1hbCBjb25uZWN0b3Is IHNvIGl0J3MKaGlkZGVuIGJ5IGRlZmF1bHQuIFRoZXJlIHNob3VsZCBiZSBzcGVjaWFsIHdyaXRl YmFjayBjb25uZWN0b3IgdGVzdHMgaW4KaWd0IHRob3VnaCwgYnV0IEkgZ3Vlc3MgdGhvc2UgaGF2 ZW4ndCBiZWVuIG1lcmdlZCB5ZXQuIEFzayBMaXZpdSBhbmQgQnJpYW4KZnJvbSBhcm0gd2hlcmUg dGhleSdyZSBzdHVjay4gV2l0aG91dCB0aG9zZSBpdCdzIGdvaW5nIHRvIGJlIHJhdGhlciBoYXJk CnRvIG1ha2UgdGhpcyB3b3JrIGNvcnJlY3RseS4KCkNoZWVycywgRGFuaWVsCgo+IAo+IFRoYW5r cyEKPiAKPiBTaWduZWQtb2ZmLWJ5OiBSb2RyaWdvIFNpcXVlaXJhIDxyb2RyaWdvc2lxdWVpcmFt ZWxvQGdtYWlsLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19jcmMuYyAg ICB8ICAgOSArKy0KPiAgZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19jcnRjLmMgICB8ICAgMiAr Cj4gIGRyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfZHJ2LmggICAgfCAgIDMgKy0KPiAgZHJpdmVy cy9ncHUvZHJtL3ZrbXMvdmttc19vdXRwdXQuYyB8IDEwNyArKysrKysrKysrKysrKysrKysrKyst LS0tLS0tLQo+ICA0IGZpbGVzIGNoYW5nZWQsIDg5IGluc2VydGlvbnMoKyksIDMyIGRlbGV0aW9u cygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX2NyYy5jIGIv ZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19jcmMuYwo+IGluZGV4IDlkOWU4MTQ2ZGI5MC4uNWQ5 YWM0NWUwMGYyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfY3JjLmMK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX2NyYy5jCj4gQEAgLTEwOSw3ICsxMDks OCBAQCBzdGF0aWMgdm9pZCBjb21wb3NlX2N1cnNvcihzdHJ1Y3Qgdmttc19jcmNfZGF0YSAqY3Vy c29yX2NyYywKPiAgfQo+ICAKPiAgc3RhdGljIHVpbnQzMl90IF92a21zX2dldF9jcmMoc3RydWN0 IHZrbXNfY3JjX2RhdGEgKnByaW1hcnlfY3JjLAo+IC0JCQkgICAgICBzdHJ1Y3Qgdmttc19jcmNf ZGF0YSAqY3Vyc29yX2NyYykKPiArCQkJICAgICAgc3RydWN0IHZrbXNfY3JjX2RhdGEgKmN1cnNv cl9jcmMsCj4gKwkJCSAgICAgIHN0cnVjdCB2a21zX291dHB1dCAqb3V0KQo+ICB7Cj4gIAlzdHJ1 Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9ICZwcmltYXJ5X2NyYy0+ZmI7Cj4gIAlzdHJ1Y3QgZHJt X2dlbV9vYmplY3QgKmdlbV9vYmogPSBkcm1fZ2VtX2ZiX2dldF9vYmooZmIsIDApOwo+IEBAIC0x MzAsNiArMTMxLDEwIEBAIHN0YXRpYyB1aW50MzJfdCBfdmttc19nZXRfY3JjKHN0cnVjdCB2a21z X2NyY19kYXRhICpwcmltYXJ5X2NyYywKPiAgCX0KPiAgCj4gIAltZW1jcHkodmFkZHJfb3V0LCB2 a21zX29iai0+dmFkZHIsIHZrbXNfb2JqLT5nZW0uc2l6ZSk7Cj4gKwkvLyBUT0RPOiBSZW1vdmUg dGhpcyBjb3B5IGZyb20gY3JjLCBhbmQgbWFrZSB0aGlzIHNvcnQgb2Ygb3BlcmF0aW9uCj4gKwkv LyBnZW5lcmljIHNpbmNlIHdlIGNhbiB1c2UgaW4gZGlmZmVyZW50IHBsYWNlcwo+ICsJbWVtY3B5 KG91dC0+Y29ubmVjdG9yLmJhc2Uuc3RhdGUtPndyaXRlYmFja19qb2ItPmZiLAo+ICsJICAgICAg IHZrbXNfb2JqLT52YWRkciwgdmttc19vYmotPmdlbS5zaXplKTsKPiAgCW11dGV4X3VubG9jaygm dmttc19vYmotPnBhZ2VzX2xvY2spOwo+ICAKPiAgCWlmIChjdXJzb3JfY3JjKQo+IEBAIC0xOTMs NyArMTk4LDcgQEAgdm9pZCB2a21zX2NyY193b3JrX2hhbmRsZShzdHJ1Y3Qgd29ya19zdHJ1Y3Qg KndvcmspCj4gIAl9Cj4gIAo+ICAJaWYgKHByaW1hcnlfY3JjKQo+IC0JCWNyYzMyID0gX3ZrbXNf Z2V0X2NyYyhwcmltYXJ5X2NyYywgY3Vyc29yX2NyYyk7Cj4gKwkJY3JjMzIgPSBfdmttc19nZXRf Y3JjKHByaW1hcnlfY3JjLCBjdXJzb3JfY3JjLCBvdXQpOwo+ICAKPiAgCWZyYW1lX2VuZCA9IGRy bV9jcnRjX2FjY3VyYXRlX3ZibGFua19jb3VudChjcnRjKTsKPiAgCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfY3J0Yy5jIGIvZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmtt c19jcnRjLmMKPiBpbmRleCAxNzdiYmNiMzgzMDYuLmQzM2RkY2M0MGEyOSAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX2NydGMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS92a21zL3ZrbXNfY3J0Yy5jCj4gQEAgLTQ4LDYgKzQ4LDggQEAgc3RhdGljIGVudW0gaHJ0aW1l cl9yZXN0YXJ0IHZrbXNfdmJsYW5rX3NpbXVsYXRlKHN0cnVjdCBocnRpbWVyICp0aW1lcikKPiAg Cj4gIAlfdmJsYW5rX2hhbmRsZShvdXRwdXQpOwo+ICAKPiArCWRybV93cml0ZWJhY2tfc2lnbmFs X2NvbXBsZXRpb24oJm91dHB1dC0+Y29ubmVjdG9yLCAwKTsKPiArCj4gIAlyZXRfb3ZlcnJ1biA9 IGhydGltZXJfZm9yd2FyZF9ub3coJm91dHB1dC0+dmJsYW5rX2hydGltZXIsCj4gIAkJCQkJICBv dXRwdXQtPnBlcmlvZF9ucyk7Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdmtt cy92a21zX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19kcnYuaAo+IGluZGV4IDFj OTM5OTA2OTNlMy4uMWU4MTg0YWQ4NzJmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS92 a21zL3ZrbXNfZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX2Rydi5oCj4g QEAgLTUsNiArNSw3IEBACj4gICNpbmNsdWRlIDxkcm0vZHJtLmg+Cj4gICNpbmNsdWRlIDxkcm0v ZHJtX2dlbS5oPgo+ICAjaW5jbHVkZSA8ZHJtL2RybV9lbmNvZGVyLmg+Cj4gKyNpbmNsdWRlIDxk cm0vZHJtX3dyaXRlYmFjay5oPgo+ICAjaW5jbHVkZSA8bGludXgvaHJ0aW1lci5oPgo+ICAKPiAg I2RlZmluZSBYUkVTX01JTiAgICAyMAo+IEBAIC02MSw3ICs2Miw3IEBAIHN0cnVjdCB2a21zX2Ny dGNfc3RhdGUgewo+ICBzdHJ1Y3Qgdmttc19vdXRwdXQgewo+ICAJc3RydWN0IGRybV9jcnRjIGNy dGM7Cj4gIAlzdHJ1Y3QgZHJtX2VuY29kZXIgZW5jb2RlcjsKPiAtCXN0cnVjdCBkcm1fY29ubmVj dG9yIGNvbm5lY3RvcjsKPiArCXN0cnVjdCBkcm1fd3JpdGViYWNrX2Nvbm5lY3RvciBjb25uZWN0 b3I7Cj4gIAlzdHJ1Y3QgaHJ0aW1lciB2YmxhbmtfaHJ0aW1lcjsKPiAgCWt0aW1lX3QgcGVyaW9k X25zOwo+ICAJc3RydWN0IGRybV9wZW5kaW5nX3ZibGFua19ldmVudCAqZXZlbnQ7Cj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfb3V0cHV0LmMgYi9kcml2ZXJzL2dwdS9k cm0vdmttcy92a21zX291dHB1dC5jCj4gaW5kZXggMjcxYTBlYjkwNDJjLi40NjYyMmQwMTIxMDcg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19vdXRwdXQuYwo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfb3V0cHV0LmMKPiBAQCAtOSw2ICs5LDEzIEBACj4g ICNpbmNsdWRlICJ2a21zX2Rydi5oIgo+ICAjaW5jbHVkZSA8ZHJtL2RybV9jcnRjX2hlbHBlci5o Pgo+ICAjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWNfaGVscGVyLmg+Cj4gKyNpbmNsdWRlIDxkcm0v ZHJtX3dyaXRlYmFjay5oPgo+ICsKPiArI2RlZmluZSB0b193Yl9zdGF0ZShfc3RhdGUpIChzdHJ1 Y3Qgdmttc193cml0ZWJhY2tfY29ubmVjdG9yX3N0YXRlICopKF9zdGF0ZSkKPiArCj4gK3N0cnVj dCB2a21zX3dyaXRlYmFja19jb25uZWN0b3Jfc3RhdGUgewo+ICsJc3RydWN0IGRybV9jb25uZWN0 b3Jfc3RhdGUgYmFzZTsKPiArfTsKPiAgCj4gIHN0YXRpYyB2b2lkIHZrbXNfY29ubmVjdG9yX2Rl c3Ryb3koc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiAgewo+IEBAIC0xNiwxMSAr MjMsNDggQEAgc3RhdGljIHZvaWQgdmttc19jb25uZWN0b3JfZGVzdHJveShzdHJ1Y3QgZHJtX2Nv bm5lY3RvciAqY29ubmVjdG9yKQo+ICAJZHJtX2Nvbm5lY3Rvcl9jbGVhbnVwKGNvbm5lY3Rvcik7 Cj4gIH0KPiAgCj4gK3N0YXRpYyB2b2lkIHZrbXNfY29ubmVjdG9yX3Jlc2V0KHN0cnVjdCBkcm1f Y29ubmVjdG9yICpjb25uZWN0b3IpCj4gK3sKPiArCXN0cnVjdCB2a21zX3dyaXRlYmFja19jb25u ZWN0b3Jfc3RhdGUgKndiX3N0YXRlID0KPiArCQlremFsbG9jKHNpemVvZigqd2Jfc3RhdGUpLCBH RlBfS0VSTkVMKTsKPiArCj4gKwlpZiAoY29ubmVjdG9yLT5zdGF0ZSkKPiArCQlfX2RybV9hdG9t aWNfaGVscGVyX2Nvbm5lY3Rvcl9kZXN0cm95X3N0YXRlKGNvbm5lY3Rvci0+c3RhdGUpOwo+ICsK PiArCWtmcmVlKGNvbm5lY3Rvci0+c3RhdGUpOwo+ICsJX19kcm1fYXRvbWljX2hlbHBlcl9jb25u ZWN0b3JfcmVzZXQoY29ubmVjdG9yLCAmd2Jfc3RhdGUtPmJhc2UpOwo+ICt9Cj4gKwo+ICtzdGF0 aWMgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKgo+ICt2a21zX2Nvbm5lY3Rvcl9kdXBsaWNh dGVfc3RhdGUoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiArewo+ICsJc3RydWN0 IHZrbXNfd3JpdGViYWNrX2Nvbm5lY3Rvcl9zdGF0ZSAqd2Jfc3RhdGU7Cj4gKwo+ICsJaWYgKFdB Uk5fT04oIWNvbm5lY3Rvci0+c3RhdGUpKQo+ICsJCXJldHVybiBOVUxMOwo+ICsKPiArCXdiX3N0 YXRlID0ga3phbGxvYyhzaXplb2YoKndiX3N0YXRlKSwgR0ZQX0tFUk5FTCk7Cj4gKwlpZiAoIXdi X3N0YXRlKQo+ICsJCXJldHVybiBOVUxMOwo+ICsKPiArCV9fZHJtX2F0b21pY19oZWxwZXJfY29u bmVjdG9yX2R1cGxpY2F0ZV9zdGF0ZShjb25uZWN0b3IsCj4gKwkJCQkJCSAgICAgICZ3Yl9zdGF0 ZS0+YmFzZSk7Cj4gKwo+ICsJcmV0dXJuICZ3Yl9zdGF0ZS0+YmFzZTsKPiArfQo+ICsKPiArc3Rh dGljIGVudW0gZHJtX2Nvbm5lY3Rvcl9zdGF0dXMKPiArdmttc19jb25uZWN0b3JfZGV0ZWN0KHN0 cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsIGJvb2wgZm9yY2UpCj4gK3sKPiArCXJldHVy biBjb25uZWN0b3Jfc3RhdHVzX2Nvbm5lY3RlZDsKPiArfQo+ICsKPiAgc3RhdGljIGNvbnN0IHN0 cnVjdCBkcm1fY29ubmVjdG9yX2Z1bmNzIHZrbXNfY29ubmVjdG9yX2Z1bmNzID0gewo+ICsJLnJl c2V0ID0gdmttc19jb25uZWN0b3JfcmVzZXQsCj4gKwkuZGV0ZWN0ID0gdmttc19jb25uZWN0b3Jf ZGV0ZWN0LAo+ICAJLmZpbGxfbW9kZXMgPSBkcm1faGVscGVyX3Byb2JlX3NpbmdsZV9jb25uZWN0 b3JfbW9kZXMsCj4gIAkuZGVzdHJveSA9IHZrbXNfY29ubmVjdG9yX2Rlc3Ryb3ksCj4gLQkucmVz ZXQgPSBkcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfcmVzZXQsCj4gLQkuYXRvbWljX2R1cGxp Y2F0ZV9zdGF0ZSA9IGRybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9kdXBsaWNhdGVfc3RhdGUs Cj4gKwkuYXRvbWljX2R1cGxpY2F0ZV9zdGF0ZSA9IHZrbXNfY29ubmVjdG9yX2R1cGxpY2F0ZV9z dGF0ZSwKPiAgCS5hdG9taWNfZGVzdHJveV9zdGF0ZSA9IGRybV9hdG9taWNfaGVscGVyX2Nvbm5l Y3Rvcl9kZXN0cm95X3N0YXRlLAo+ICB9Owo+ICAKPiBAQCAtNDIsMTIgKzg2LDM1IEBAIHN0YXRp YyBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3Mgdmttc19jb25uX2hlbHBl cl9mdW5jcyA9IHsKPiAgCS5nZXRfbW9kZXMgICAgPSB2a21zX2Nvbm5fZ2V0X21vZGVzLAo+ICB9 Owo+ICAKPiArc3RhdGljIGludCB2a21zX2VuY29kZXJfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1f ZW5jb2RlciAqZW5jb2RlciwKPiArCQkJCSAgICAgc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRj X3N0YXRlLAo+ICsJCQkJICAgICBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0 ZSkKPiArewo+ICsJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmI7Cj4gKwo+ICsJaWYgKCFjb25u X3N0YXRlLT53cml0ZWJhY2tfam9iIHx8ICFjb25uX3N0YXRlLT53cml0ZWJhY2tfam9iLT5mYikK PiArCQlyZXR1cm4gMDsKPiArCj4gKwlmYiA9IGNvbm5fc3RhdGUtPndyaXRlYmFja19qb2ItPmZi Owo+ICsJaWYgKGZiLT53aWR0aCAhPSBjcnRjX3N0YXRlLT5tb2RlLmhkaXNwbGF5IHx8Cj4gKwkg ICAgZmItPmhlaWdodCAhPSBjcnRjX3N0YXRlLT5tb2RlLnZkaXNwbGF5KSB7Cj4gKwkJRFJNX0RF QlVHX0tNUygiSW52YWxpZCBmcmFtZWJ1ZmZlciBzaXplICV1eCV1XG4iLAo+ICsJCQkgICAgICBm Yi0+d2lkdGgsIGZiLT5oZWlnaHQpOwo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsJfQo+ICsKPiAr CXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9lbmNvZGVyX2hl bHBlcl9mdW5jcyB2a21zX2VuY29kZXJfaGVscGVyX2Z1bmNzID0gewo+ICsJLmF0b21pY19jaGVj ayA9IHZrbXNfZW5jb2Rlcl9hdG9taWNfY2hlY2ssCj4gK307Cj4gKwo+ICBpbnQgdmttc19vdXRw dXRfaW5pdChzdHJ1Y3Qgdmttc19kZXZpY2UgKnZrbXNkZXYpCj4gIHsKPiAgCXN0cnVjdCB2a21z X291dHB1dCAqb3V0cHV0ID0gJnZrbXNkZXYtPm91dHB1dDsKPiAgCXN0cnVjdCBkcm1fZGV2aWNl ICpkZXYgPSAmdmttc2Rldi0+ZHJtOwo+IC0Jc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rv ciA9ICZvdXRwdXQtPmNvbm5lY3RvcjsKPiAtCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciA9 ICZvdXRwdXQtPmVuY29kZXI7Cj4gKwlzdHJ1Y3QgZHJtX3dyaXRlYmFja19jb25uZWN0b3IgKmNv bm5lY3RvciA9ICZvdXRwdXQtPmNvbm5lY3RvcjsKPiAgCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9 ICZvdXRwdXQtPmNydGM7Cj4gIAlzdHJ1Y3QgZHJtX3BsYW5lICpwcmltYXJ5LCAqY3Vyc29yID0g TlVMTDsKPiAgCWludCByZXQ7Cj4gQEAgLTY4LDQ3ICsxMzUsMjkgQEAgaW50IHZrbXNfb3V0cHV0 X2luaXQoc3RydWN0IHZrbXNfZGV2aWNlICp2a21zZGV2KQo+ICAJaWYgKHJldCkKPiAgCQlnb3Rv IGVycl9jcnRjOwo+ICAKPiAtCXJldCA9IGRybV9jb25uZWN0b3JfaW5pdChkZXYsIGNvbm5lY3Rv ciwgJnZrbXNfY29ubmVjdG9yX2Z1bmNzLAo+IC0JCQkJIERSTV9NT0RFX0NPTk5FQ1RPUl9WSVJU VUFMKTsKPiArCXJldCA9IGRybV93cml0ZWJhY2tfY29ubmVjdG9yX2luaXQoZGV2LCBjb25uZWN0 b3IsCj4gKwkJCQkJICAgJnZrbXNfY29ubmVjdG9yX2Z1bmNzLAo+ICsJCQkJCSAgICZ2a21zX2Vu Y29kZXJfaGVscGVyX2Z1bmNzLAo+ICsJCQkJCSAgIHZrbXNfZm9ybWF0cywgMSk7Cj4gIAlpZiAo cmV0KSB7Cj4gIAkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gaW5pdCBjb25uZWN0b3JcbiIpOwo+ICAJ CWdvdG8gZXJyX2Nvbm5lY3RvcjsKPiAgCX0KPiAgCj4gLQlkcm1fY29ubmVjdG9yX2hlbHBlcl9h ZGQoY29ubmVjdG9yLCAmdmttc19jb25uX2hlbHBlcl9mdW5jcyk7Cj4gKwlkcm1fY29ubmVjdG9y X2hlbHBlcl9hZGQoJmNvbm5lY3Rvci0+YmFzZSwgJnZrbXNfY29ubl9oZWxwZXJfZnVuY3MpOwo+ ICAKPiAtCXJldCA9IGRybV9jb25uZWN0b3JfcmVnaXN0ZXIoY29ubmVjdG9yKTsKPiArCXJldCA9 IGRybV9jb25uZWN0b3JfcmVnaXN0ZXIoJmNvbm5lY3Rvci0+YmFzZSk7Cj4gIAlpZiAocmV0KSB7 Cj4gIAkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gcmVnaXN0ZXIgY29ubmVjdG9yXG4iKTsKPiAgCQln b3RvIGVycl9jb25uZWN0b3JfcmVnaXN0ZXI7Cj4gIAl9Cj4gIAo+IC0JcmV0ID0gZHJtX2VuY29k ZXJfaW5pdChkZXYsIGVuY29kZXIsICZ2a21zX2VuY29kZXJfZnVuY3MsCj4gLQkJCSAgICAgICBE Uk1fTU9ERV9FTkNPREVSX1ZJUlRVQUwsIE5VTEwpOwo+IC0JaWYgKHJldCkgewo+IC0JCURSTV9F UlJPUigiRmFpbGVkIHRvIGluaXQgZW5jb2RlclxuIik7Cj4gLQkJZ290byBlcnJfZW5jb2RlcjsK PiAtCX0KPiAtCWVuY29kZXItPnBvc3NpYmxlX2NydGNzID0gMTsKPiAtCj4gLQlyZXQgPSBkcm1f Y29ubmVjdG9yX2F0dGFjaF9lbmNvZGVyKGNvbm5lY3RvciwgZW5jb2Rlcik7Cj4gLQlpZiAocmV0 KSB7Cj4gLQkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gYXR0YWNoIGNvbm5lY3RvciB0byBlbmNvZGVy XG4iKTsKPiAtCQlnb3RvIGVycl9hdHRhY2g7Cj4gLQl9Cj4gLQo+ICAJZHJtX21vZGVfY29uZmln X3Jlc2V0KGRldik7Cj4gIAo+ICAJcmV0dXJuIDA7Cj4gIAo+IC1lcnJfYXR0YWNoOgo+IC0JZHJt X2VuY29kZXJfY2xlYW51cChlbmNvZGVyKTsKPiAtCj4gLWVycl9lbmNvZGVyOgo+IC0JZHJtX2Nv bm5lY3Rvcl91bnJlZ2lzdGVyKGNvbm5lY3Rvcik7Cj4gLQo+ICBlcnJfY29ubmVjdG9yX3JlZ2lz dGVyOgo+IC0JZHJtX2Nvbm5lY3Rvcl9jbGVhbnVwKGNvbm5lY3Rvcik7Cj4gKwlkcm1fY29ubmVj dG9yX2NsZWFudXAoJmNvbm5lY3Rvci0+YmFzZSk7Cj4gIAo+ICBlcnJfY29ubmVjdG9yOgo+ICAJ ZHJtX2NydGNfY2xlYW51cChjcnRjKTsKPiAtLSAKPiAyLjE5LjEKPiAKPiAKPiAtLSAKPiBSb2Ry aWdvIFNpcXVlaXJhCj4gaHR0cHM6Ly9zaXF1ZWlyYS50ZWNoCj4gaHR0cHM6Ly90d2l0dGVyLmNv bS9zaXF1ZWlyYWpvcmRhbwo+IEdyYWR1YXRlIFN0dWRlbnQKPiBEZXBhcnRtZW50IG9mIENvbXB1 dGVyIFNjaWVuY2UKPiBVbml2ZXJzaXR5IG9mIFPDo28gUGF1bG8KCi0tIApEYW5pZWwgVmV0dGVy ClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgpodHRwOi8vYmxvZy5mZndsbC5j aApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2 ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK