From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [RFC v2 3/8] drm: Add helper for simple kms drivers Date: Wed, 13 Apr 2016 13:05:53 +0200 Message-ID: <20160413110553.GY2510@phenom.ffwll.local> References: <1460135110-24121-1-git-send-email-noralf@tronnes.org> <1460135110-24121-4-git-send-email-noralf@tronnes.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x229.google.com (mail-wm0-x229.google.com [IPv6:2a00:1450:400c:c09::229]) by gabe.freedesktop.org (Postfix) with ESMTPS id 92AC86E3C4 for ; Wed, 13 Apr 2016 11:05:37 +0000 (UTC) Received: by mail-wm0-x229.google.com with SMTP id n3so70970793wmn.0 for ; Wed, 13 Apr 2016 04:05:37 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1460135110-24121-4-git-send-email-noralf@tronnes.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Noralf =?iso-8859-1?Q?Tr=F8nnes?= Cc: thomas.petazzoni@free-electrons.com, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gRnJpLCBBcHIgMDgsIDIwMTYgYXQgMDc6MDU6MDVQTSArMDIwMCwgTm9yYWxmIFRyw7hubmVz IHdyb3RlOgo+IFByb3ZpZGVzIGhlbHBlciBmdW5jdGlvbnMgZm9yIGRyaXZlcnMgdGhhdCBoYXZl IGEgc2ltcGxlIGRpc3BsYXkKPiBwaXBlbGluZS4gUGxhbmUsIGNydGMgYW5kIGVuY29kZXIgYXJl IGNvbGxhcHNlZCBpbnRvIG9uZSBlbnRpdHkuCj4gCj4gU2lnbmVkLW9mZi1ieTogTm9yYWxmIFRy w7hubmVzIDxub3JhbGZAdHJvbm5lcy5vcmc+CgpMb29rcyBnb29kLiBBIGZldyBjb21tZW50cyBi ZWxvdywgYnV0IHRoZSBiaWcgdGhpbmcgaXMgYWRkaW5nIGtlcm5lbGRvYwphbmQgY3Jvc3MtcmVm ZXJlbmNpbmcgaXQgKGUuZy4gZnJvbSBkcm1fcGFuZWwgdG8gZHJtX3BhbmVsX2Nvbm5lY3Rvciku Ci1EYW5pZWwKCj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9LY29uZmlnICAgICAgICAgICAgICAg ICB8ICAgNyArCj4gIGRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZSAgICAgICAgICAgICAgICB8ICAg MSArCj4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fc2ltcGxlX2ttc19oZWxwZXIuYyB8IDI2MiArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICBpbmNsdWRlL2RybS9kcm1fc2ltcGxlX2tt c19oZWxwZXIuaCAgICAgfCAgNDQgKysrKysrCj4gIDQgZmlsZXMgY2hhbmdlZCwgMzE0IGluc2Vy dGlvbnMoKykKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9kcm1fc2ltcGxl X2ttc19oZWxwZXIuYwo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9kcm0vZHJtX3NpbXBs ZV9rbXNfaGVscGVyLmgKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL0tjb25maWcg Yi9kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZwo+IGluZGV4IDhhZTdhYjYuLmNiNjJjZDkgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL0tjb25maWcKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v S2NvbmZpZwo+IEBAIC0zMSw2ICszMSwxMyBAQCBjb25maWcgRFJNX0tNU19IRUxQRVIKPiAgCWhl bHAKPiAgCSAgQ1JUQyBoZWxwZXJzIGZvciBLTVMgZHJpdmVycy4KPiAgCj4gK2NvbmZpZyBEUk1f U0lNUExFX0tNU19IRUxQRVIKPiArCXRyaXN0YXRlCj4gKwlkZXBlbmRzIG9uIERSTQo+ICsJc2Vs ZWN0IERSTV9LTVNfSEVMUEVSCj4gKwloZWxwCj4gKwkgIEhlbHBlcnMgZm9yIHZlcnkgc2ltcGxl IEtNUyBkcml2ZXJzLgo+ICsKPiAgY29uZmlnIERSTV9LTVNfRkJfSEVMUEVSCj4gIAlib29sCj4g IAlkZXBlbmRzIG9uIERSTV9LTVNfSEVMUEVSCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZQo+IGluZGV4IDYxNzY2ZGUuLmVh OWJmNTkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL01ha2VmaWxlCj4gQEAgLTI4LDYgKzI4LDcgQEAgZHJtX2ttc19oZWxwZXIt JChDT05GSUdfRFJNX0ZCREVWX0VNVUxBVElPTikgKz0gZHJtX2ZiX2hlbHBlci5vCj4gIGRybV9r bXNfaGVscGVyLSQoQ09ORklHX0RSTV9LTVNfQ01BX0hFTFBFUikgKz0gZHJtX2ZiX2NtYV9oZWxw ZXIubwo+ICAKPiAgb2JqLSQoQ09ORklHX0RSTV9LTVNfSEVMUEVSKSArPSBkcm1fa21zX2hlbHBl ci5vCj4gK29iai0kKENPTkZJR19EUk1fU0lNUExFX0tNU19IRUxQRVIpICs9IGRybV9zaW1wbGVf a21zX2hlbHBlci5vCj4gIAo+ICBDRkxBR1NfZHJtX3RyYWNlX3BvaW50cy5vIDo9IC1JJChzcmMp Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX3NpbXBsZV9rbXNfaGVscGVy LmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3NpbXBsZV9rbXNfaGVscGVyLmMKPiBuZXcgZmlsZSBt b2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLmUxOTNmN2RiCj4gLS0tIC9kZXYvbnVsbAo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fc2ltcGxlX2ttc19oZWxwZXIuYwo+IEBAIC0wLDAgKzEs MjYyIEBACj4gKy8qCj4gKyAqIENvcHlyaWdodCAoQykgMjAxNiBOb3JhbGYgVHLDuG5uZXMKPiAr ICoKPiArICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0IGFuZC9vciBtb2RpZnkKPiArICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKPiArICogdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKPiAr ICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KPiArICovCj4gKwo+ICsjaW5j bHVkZSA8ZHJtL2RybVAuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljX2hlbHBlci5oPgo+ ICsjaW5jbHVkZSA8ZHJtL2RybV9jcnRjX2hlbHBlci5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9w YW5lbC5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9wbGFuZV9oZWxwZXIuaD4KPiArI2luY2x1ZGUg PGRybS9kcm1fc2ltcGxlX2ttc19oZWxwZXIuaD4KPiArI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4K PiArCj4gK3N0cnVjdCBkcm1fc2ltcGxlX2ttc19jb25uZWN0b3Igewo+ICsJc3RydWN0IGRybV9j b25uZWN0b3IgYmFzZTsKPiArCXN0cnVjdCBkcm1fcGFuZWwgKnBhbmVsOwo+ICt9Owo+ICsKPiAr c3RhdGljIGlubGluZSBzdHJ1Y3QgZHJtX3NpbXBsZV9rbXNfY29ubmVjdG9yICoKPiArdG9fc2lt cGxlX2Nvbm5lY3RvcihzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ICt7Cj4gKwly ZXR1cm4gY29udGFpbmVyX29mKGNvbm5lY3Rvciwgc3RydWN0IGRybV9zaW1wbGVfa21zX2Nvbm5l Y3RvciwgYmFzZSk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgZHJtX3NpbXBsZV9rbXNfY29ubmVj dG9yX2dldF9tb2RlcyhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ICt7Cj4gKwly ZXR1cm4gZHJtX3BhbmVsX2dldF9tb2Rlcyh0b19zaW1wbGVfY29ubmVjdG9yKGNvbm5lY3Rvcikt PnBhbmVsKTsKPiArfQo+ICsKPiArc3RhdGljIHN0cnVjdCBkcm1fZW5jb2RlciAqCj4gK2RybV9z aW1wbGVfa21zX2Nvbm5lY3Rvcl9iZXN0X2VuY29kZXIoc3RydWN0IGRybV9jb25uZWN0b3IgKmNv bm5lY3RvcikKPiArewo+ICsJcmV0dXJuIGRybV9lbmNvZGVyX2ZpbmQoY29ubmVjdG9yLT5kZXYs IGNvbm5lY3Rvci0+ZW5jb2Rlcl9pZHNbMF0pOwo+ICt9CgpJIHRoaW5rIHRoaXMgd291bGQgYmUg dXNlZnVsIGZvciBhdG9taWMgZHJpdmVycyBpbiBnZW5lcmFsLiBJIGV2ZW4gdGhvdWdodAp3ZSBo YXZlIGl0IGFscmVhZHkgc29tZXdoZXJlIC4uLgoKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg ZHJtX2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3MgZHJtX3NpbXBsZV9rbXNfY29ubmVjdG9yX2hlbHBl cl9mdW5jcyA9IHsKPiArCS5nZXRfbW9kZXMgPSBkcm1fc2ltcGxlX2ttc19jb25uZWN0b3JfZ2V0 X21vZGVzLAo+ICsJLmJlc3RfZW5jb2RlciA9IGRybV9zaW1wbGVfa21zX2Nvbm5lY3Rvcl9iZXN0 X2VuY29kZXIsCj4gK307Cj4gKwo+ICtzdGF0aWMgZW51bSBkcm1fY29ubmVjdG9yX3N0YXR1cwo+ ICtkcm1fc2ltcGxlX2ttc19jb25uZWN0b3JfZGV0ZWN0KHN0cnVjdCBkcm1fY29ubmVjdG9yICpj b25uZWN0b3IsIGJvb2wgZm9yY2UpCj4gK3sKPiArCWlmIChkcm1fZGV2aWNlX2lzX3VucGx1Z2dl ZChjb25uZWN0b3ItPmRldikpCj4gKwkJcmV0dXJuIGNvbm5lY3Rvcl9zdGF0dXNfZGlzY29ubmVj dGVkOwo+ICsKPiArCXJldHVybiBjb25uZWN0b3ItPnN0YXR1czsKPiArfQo+ICsKPiArc3RhdGlj IHZvaWQgZHJtX3NpbXBsZV9rbXNfY29ubmVjdG9yX2Rlc3Ryb3koc3RydWN0IGRybV9jb25uZWN0 b3IgKmNvbm5lY3RvcikKPiArewo+ICsJc3RydWN0IGRybV9zaW1wbGVfa21zX2Nvbm5lY3RvciAq cGFuZWxfY29ubmVjdG9yOwo+ICsKPiArCXBhbmVsX2Nvbm5lY3RvciA9IHRvX3NpbXBsZV9jb25u ZWN0b3IoY29ubmVjdG9yKTsKPiArCWRybV9wYW5lbF9kZXRhY2gocGFuZWxfY29ubmVjdG9yLT5w YW5lbCk7Cj4gKwlkcm1fcGFuZWxfcmVtb3ZlKHBhbmVsX2Nvbm5lY3Rvci0+cGFuZWwpOwo+ICsJ ZHJtX2Nvbm5lY3Rvcl91bnJlZ2lzdGVyKGNvbm5lY3Rvcik7Cj4gKwlkcm1fY29ubmVjdG9yX2Ns ZWFudXAoY29ubmVjdG9yKTsKPiArCWtmcmVlKHBhbmVsX2Nvbm5lY3Rvcik7Cj4gK30KPiArCj4g K3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9mdW5jcyBkcm1fc2ltcGxlX2ttc19j b25uZWN0b3JfZnVuY3MgPSB7Cj4gKwkuZHBtcyA9IGRybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rv cl9kcG1zLAo+ICsJLnJlc2V0ID0gZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX3Jlc2V0LAo+ ICsJLmRldGVjdCA9IGRybV9zaW1wbGVfa21zX2Nvbm5lY3Rvcl9kZXRlY3QsCj4gKwkuZmlsbF9t b2RlcyA9IGRybV9oZWxwZXJfcHJvYmVfc2luZ2xlX2Nvbm5lY3Rvcl9tb2RlcywKPiArCS5kZXN0 cm95ID0gZHJtX3NpbXBsZV9rbXNfY29ubmVjdG9yX2Rlc3Ryb3ksCj4gKwkuYXRvbWljX2R1cGxp Y2F0ZV9zdGF0ZSA9IGRybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9kdXBsaWNhdGVfc3RhdGUs Cj4gKwkuYXRvbWljX2Rlc3Ryb3lfc3RhdGUgPSBkcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3Jf ZGVzdHJveV9zdGF0ZSwKPiArfTsKCmRybV9zaW1wbGVfa21zX3BhbmVsX2Nvbm5lY3RvciBpcyB0 b29vb29vb29vb29vIGxvbmcgOy0pIFdoYXQgYWJvdXQganVzdApkcm1fcGFuZWxfY29ubmVjdG9y IGluc3RlYWQ/IEFsc28gbm90IGVudGlyZWx5IHN1cmUgd2hldGhlciB0aGlzIGlzIGJlc3QKcGxh Y2VkIGhlcmUsIG9yIGJldHRlciBpbiBkcm1fcGFuZWwuYywgb3IgbWF5YmUgZXZlbiBpbiBhIG5l dwpkcm1fcGFuZWxfaGVscGVyLmMuCgpJbW8gZHJtX3BhbmVsX2Nvbm5lY3RvciBhbmQgZHJtX3Np bXBsZV9kaXNwbGF5X3BpcGUgc2hvdWxkIHdvcmsgYXMKb3J0aG9nb25hbCBoZWxwZXJzLgoKT3Ig M3JkIG9wdGlvbjogWW91IGp1c3QgZXhwb3NlIHRoZSBhYm92ZSBoZWxwZXJzIGZvciBkZXRlY3Qv Z2V0X21vZGVzCm9ubHkuCgo+ICsKPiArLyoqCj4gKyAqIGRybV9zaW1wbGVfa21zX3BhbmVsX2Nv bm5lY3Rvcl9jcmVhdGUgLSBDcmVhdGUgc2ltcGxlIGNvbm5lY3RvciBmb3IgcGFuZWwKPiArICog QGRldjogRFJNIGRldmljZQo+ICsgKiBAcGFuZWw6IERSTSBwYW5lbAo+ICsgKiBAY29ubmVjdG9y X3R5cGU6IHVzZXIgdmlzaWJsZSB0eXBlIG9mIHRoZSBjb25uZWN0b3IKPiArICoKPiArICogQ3Jl YXRlcyBhIHNpbXBsZSBjb25uZWN0b3IgZm9yIGEgcGFuZWwuCj4gKyAqIFRoZSBwYW5lbCBuZWVk cyB0byBwcm92aWRlIGEgZ2V0X21vZGVzKCkgZnVuY3Rpb24uCj4gKyAqCj4gKyAqIFJldHVybnM6 Cj4gKyAqIFBvaW50ZXIgdG8gbmV3IGNvbm5lY3RvciBvciBFUlJfUFRSIG9uIGZhaWx1cmUuCj4g KyAqLwo+ICtzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqCj4gK2RybV9zaW1wbGVfa21zX3BhbmVsX2Nv bm5lY3Rvcl9jcmVhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiArCQkJCSAgICAgIHN0cnVj dCBkcm1fcGFuZWwgKnBhbmVsLAo+ICsJCQkJICAgICAgaW50IGNvbm5lY3Rvcl90eXBlKQo+ICt7 Cj4gKwlzdHJ1Y3QgZHJtX3NpbXBsZV9rbXNfY29ubmVjdG9yICpwYW5lbF9jb25uZWN0b3I7Cj4g KwlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yOwo+ICsJaW50IHJldDsKPiArCj4gKwlw YW5lbF9jb25uZWN0b3IgPSBremFsbG9jKHNpemVvZigqcGFuZWxfY29ubmVjdG9yKSwgR0ZQX0tF Uk5FTCk7Cj4gKwlpZiAoIXBhbmVsX2Nvbm5lY3RvcikKPiArCQlyZXR1cm4gRVJSX1BUUigtRU5P TUVNKTsKPiArCj4gKwlwYW5lbF9jb25uZWN0b3ItPnBhbmVsID0gcGFuZWw7Cj4gKwljb25uZWN0 b3IgPSAmcGFuZWxfY29ubmVjdG9yLT5iYXNlOwo+ICsJZHJtX2Nvbm5lY3Rvcl9oZWxwZXJfYWRk KGNvbm5lY3RvciwgJmRybV9zaW1wbGVfa21zX2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3MpOwo+ICsJ cmV0ID0gZHJtX2Nvbm5lY3Rvcl9pbml0KGRldiwgY29ubmVjdG9yLCAmZHJtX3NpbXBsZV9rbXNf Y29ubmVjdG9yX2Z1bmNzLAo+ICsJCQkJIGNvbm5lY3Rvcl90eXBlKTsKPiArCWlmIChyZXQpIHsK PiArCQlrZnJlZShwYW5lbF9jb25uZWN0b3IpOwo+ICsJCXJldHVybiBFUlJfUFRSKHJldCk7Cj4g Kwl9Cj4gKwo+ICsJY29ubmVjdG9yLT5zdGF0dXMgPSBjb25uZWN0b3Jfc3RhdHVzX2Nvbm5lY3Rl ZDsKPiArCWRybV9wYW5lbF9pbml0KHBhbmVsKTsKPiArCWRybV9wYW5lbF9hZGQocGFuZWwpOwo+ ICsJZHJtX3BhbmVsX2F0dGFjaChwYW5lbCwgY29ubmVjdG9yKTsKPiArCj4gKwlyZXR1cm4gY29u bmVjdG9yOwo+ICt9Cj4gK0VYUE9SVF9TWU1CT0woZHJtX3NpbXBsZV9rbXNfcGFuZWxfY29ubmVj dG9yX2NyZWF0ZSk7Cj4gKwo+ICtzdGF0aWMgdm9pZCBkcm1fc2ltcGxlX2ttc19lbmNvZGVyX2Rp c2FibGUoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKQo+ICt7Cj4gK30KPiArCj4gK3N0YXRp YyB2b2lkIGRybV9zaW1wbGVfa21zX2VuY29kZXJfZW5hYmxlKHN0cnVjdCBkcm1fZW5jb2RlciAq ZW5jb2RlcikKPiArewo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGRybV9zaW1wbGVfa21zX2VuY29k ZXJfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciwKPiArCQkJCQlzdHJ1 Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gKwkJCQkJc3RydWN0IGRybV9jb25uZWN0 b3Jfc3RhdGUgKmNvbm5fc3RhdGUpCj4gK3sKPiArCXJldHVybiAwOwo+ICt9CgpBYm92ZSBkdW1t eSBmdW5jdGlvbnMgc2hvdWxkbid0IGJlIG5lY2Vzc2FyeS4KCj4gKwo+ICtzdGF0aWMgY29uc3Qg c3RydWN0IGRybV9lbmNvZGVyX2hlbHBlcl9mdW5jcyBkcm1fc2ltcGxlX2ttc19lbmNvZGVyX2hl bHBlcl9mdW5jcyA9IHsKPiArCS5kaXNhYmxlID0gZHJtX3NpbXBsZV9rbXNfZW5jb2Rlcl9kaXNh YmxlLAo+ICsJLmVuYWJsZSA9IGRybV9zaW1wbGVfa21zX2VuY29kZXJfZW5hYmxlLAo+ICsJLmF0 b21pY19jaGVjayA9IGRybV9zaW1wbGVfa21zX2VuY29kZXJfYXRvbWljX2NoZWNrLAo+ICt9Owo+ ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZW5jb2Rlcl9mdW5jcyBkcm1fc2ltcGxlX2tt c19lbmNvZGVyX2Z1bmNzID0gewo+ICsJLmRlc3Ryb3kgPSBkcm1fZW5jb2Rlcl9jbGVhbnVwLAo+ ICt9Owo+ICsKPiArc3RhdGljIHZvaWQgZHJtX3NpbXBsZV9rbXNfY3J0Y19lbmFibGUoc3RydWN0 IGRybV9jcnRjICpjcnRjKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX3NpbXBsZV9kaXNwbGF5X3BpcGUg KnBpcGU7Cj4gKwo+ICsJcGlwZSA9IGNvbnRhaW5lcl9vZihjcnRjLCBzdHJ1Y3QgZHJtX3NpbXBs ZV9kaXNwbGF5X3BpcGUsIGNydGMpOwo+ICsJaWYgKCFwaXBlLT5mdW5jcyB8fCAhcGlwZS0+ZnVu Y3MtPmVuYWJsZSkKPiArCQlyZXR1cm47Cj4gKwo+ICsJcGlwZS0+ZnVuY3MtPmVuYWJsZShwaXBl LCBjcnRjLT5zdGF0ZSk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGRybV9zaW1wbGVfa21zX2Ny dGNfZGlzYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gK3sKPiArCXN0cnVjdCBkcm1fc2lt cGxlX2Rpc3BsYXlfcGlwZSAqcGlwZTsKPiArCj4gKwlwaXBlID0gY29udGFpbmVyX29mKGNydGMs IHN0cnVjdCBkcm1fc2ltcGxlX2Rpc3BsYXlfcGlwZSwgY3J0Yyk7Cj4gKwlpZiAoIXBpcGUtPmZ1 bmNzIHx8ICFwaXBlLT5mdW5jcy0+ZGlzYWJsZSkKPiArCQlyZXR1cm47Cj4gKwo+ICsJcGlwZS0+ ZnVuY3MtPmRpc2FibGUocGlwZSk7Cj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJt X2NydGNfaGVscGVyX2Z1bmNzIGRybV9zaW1wbGVfa21zX2NydGNfaGVscGVyX2Z1bmNzID0gewo+ ICsJLmRpc2FibGUgPSBkcm1fc2ltcGxlX2ttc19jcnRjX2Rpc2FibGUsCj4gKwkuZW5hYmxlID0g ZHJtX3NpbXBsZV9rbXNfY3J0Y19lbmFibGUsCj4gK307Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3Ry dWN0IGRybV9jcnRjX2Z1bmNzIGRybV9zaW1wbGVfa21zX2NydGNfZnVuY3MgPSB7Cj4gKwkucmVz ZXQgPSBkcm1fYXRvbWljX2hlbHBlcl9jcnRjX3Jlc2V0LAo+ICsJLmRlc3Ryb3kgPSBkcm1fY3J0 Y19jbGVhbnVwLAo+ICsJLnNldF9jb25maWcgPSBkcm1fYXRvbWljX2hlbHBlcl9zZXRfY29uZmln LAo+ICsJLnBhZ2VfZmxpcCA9IGRybV9hdG9taWNfaGVscGVyX3BhZ2VfZmxpcCwKPiArCS5hdG9t aWNfZHVwbGljYXRlX3N0YXRlID0gZHJtX2F0b21pY19oZWxwZXJfY3J0Y19kdXBsaWNhdGVfc3Rh dGUsCj4gKwkuYXRvbWljX2Rlc3Ryb3lfc3RhdGUgPSBkcm1fYXRvbWljX2hlbHBlcl9jcnRjX2Rl c3Ryb3lfc3RhdGUsCj4gK307Cj4gKwo+ICtzdGF0aWMgdm9pZCBkcm1fc2ltcGxlX2ttc19wbGFu ZV9hdG9taWNfdXBkYXRlKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ICsJCQkJCXN0cnVjdCBk cm1fcGxhbmVfc3RhdGUgKm9sZF9zdGF0ZSkKPiArewo+ICsJc3RydWN0IGRybV9zaW1wbGVfZGlz cGxheV9waXBlICpwaXBlOwo+ICsKPiArCXBpcGUgPSBjb250YWluZXJfb2YocGxhbmUsIHN0cnVj dCBkcm1fc2ltcGxlX2Rpc3BsYXlfcGlwZSwgcGxhbmUpOwo+ICsJaWYgKCFwaXBlLT5mdW5jcyB8 fCAhcGlwZS0+ZnVuY3MtPnBsYW5lX3VwZGF0ZSkKPiArCQlyZXR1cm47Cj4gKwo+ICsJcGlwZS0+ ZnVuY3MtPnBsYW5lX3VwZGF0ZShwaXBlLCBvbGRfc3RhdGUpOwo+ICt9Cj4gKwo+ICtzdGF0aWMg Y29uc3Qgc3RydWN0IGRybV9wbGFuZV9oZWxwZXJfZnVuY3MgZHJtX3NpbXBsZV9rbXNfcGxhbmVf aGVscGVyX2Z1bmNzID0gewo+ICsJLmF0b21pY191cGRhdGUgPSBkcm1fc2ltcGxlX2ttc19wbGFu ZV9hdG9taWNfdXBkYXRlLAo+ICt9Owo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fcGxh bmVfZnVuY3MgZHJtX3NpbXBsZV9rbXNfcGxhbmVfZnVuY3MgPSB7Cj4gKwkudXBkYXRlX3BsYW5l CQk9IGRybV9hdG9taWNfaGVscGVyX3VwZGF0ZV9wbGFuZSwKPiArCS5kaXNhYmxlX3BsYW5lCQk9 IGRybV9hdG9taWNfaGVscGVyX2Rpc2FibGVfcGxhbmUsCj4gKwkuZGVzdHJveQkJPSBkcm1fcGxh bmVfY2xlYW51cCwKPiArCS5yZXNldAkJCT0gZHJtX2F0b21pY19oZWxwZXJfcGxhbmVfcmVzZXQs Cj4gKwkuYXRvbWljX2R1cGxpY2F0ZV9zdGF0ZQk9IGRybV9hdG9taWNfaGVscGVyX3BsYW5lX2R1 cGxpY2F0ZV9zdGF0ZSwKPiArCS5hdG9taWNfZGVzdHJveV9zdGF0ZQk9IGRybV9hdG9taWNfaGVs cGVyX3BsYW5lX2Rlc3Ryb3lfc3RhdGUsCj4gK307Cj4gKwo+ICsvKioKPiArICogZHJtX3NpbXBs ZV9kaXNwbGF5X3BpcGVfaW5pdCAtIEluaXRpYWxpemUgYSBzaW1wbGUgZGlzcGxheSBwaXBlCj4g KyAqIEBkZXY6IERSTSBkZXZpY2UKPiArICogQHBpcGU6IHNpbXBsZSBkaXNwbGF5IHBpcGUgb2Jq ZWN0IHRvIGluaXRpYWxpemUKPiArICogQGZ1bmNzOiBjYWxsYmFja3MgZm9yIHRoZSBkaXNwbGF5 IHBpcGUKPiArICogQGZvcm1hdHM6IGFycmF5IG9mIHN1cHBvcnRlZCBmb3JtYXRzICglRFJNX0ZP Uk1BVF8qKQo+ICsgKiBAZm9ybWF0X2NvdW50OiBudW1iZXIgb2YgZWxlbWVudHMgaW4gQGZvcm1h dHMKPiArICogQGNvbm5lY3RvcjogY29ubmVjdG9yIHRvIGF0dGFjaCBhbmQgcmVnaXN0ZXIKPiAr ICoKPiArICogU2V0cyB1cCBhIGRpc3BsYXkgcGlwZSB3aGljaCBjb25zaXN0IG9mIGEgcmVhbGx5 IHNpbXBsZSBwbGFuZS1jcnRjLWVuY29kZXIKPiArICogcGlwZSBjb3VwbGVkIHdpdGggdGhlIHBy b3ZpZGVkIGNvbm5lY3Rvci4KPiArICoKPiArICogUmV0dXJuczoKPiArICogWmVybyBvbiBzdWNj ZXNzLCBlcnJvciBjb2RlIG9uIGZhaWx1cmUuCj4gKyAqLwo+ICtpbnQgZHJtX3NpbXBsZV9kaXNw bGF5X3BpcGVfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICsJCQkJIHN0cnVjdCBkcm1f c2ltcGxlX2Rpc3BsYXlfcGlwZSAqcGlwZSwKPiArCQkJCSBzdHJ1Y3QgZHJtX3NpbXBsZV9kaXNw bGF5X3BpcGVfZnVuY3MgKmZ1bmNzLAo+ICsJCQkJIGNvbnN0IHVpbnQzMl90ICpmb3JtYXRzLCB1 bnNpZ25lZCBpbnQgZm9ybWF0X2NvdW50LAo+ICsJCQkJIHN0cnVjdCBkcm1fY29ubmVjdG9yICpj b25uZWN0b3IpCj4gK3sKPiArCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciA9ICZwaXBlLT5l bmNvZGVyOwo+ICsJc3RydWN0IGRybV9wbGFuZSAqcGxhbmUgPSAmcGlwZS0+cGxhbmU7Cj4gKwlz dHJ1Y3QgZHJtX2NydGMgKmNydGMgPSAmcGlwZS0+Y3J0YzsKPiArCWludCByZXQ7Cj4gKwo+ICsJ cGlwZS0+ZnVuY3MgPSBmdW5jczsKPiArCj4gKwlkcm1fcGxhbmVfaGVscGVyX2FkZChwbGFuZSwg JmRybV9zaW1wbGVfa21zX3BsYW5lX2hlbHBlcl9mdW5jcyk7Cj4gKwlyZXQgPSBkcm1fdW5pdmVy c2FsX3BsYW5lX2luaXQoZGV2LCBwbGFuZSwgMCwgJmRybV9zaW1wbGVfa21zX3BsYW5lX2Z1bmNz LAo+ICsJCQkJICAgICAgIGZvcm1hdHMsIGZvcm1hdF9jb3VudCwKPiArCQkJCSAgICAgICBEUk1f UExBTkVfVFlQRV9QUklNQVJZLCBOVUxMKTsKPiArCWlmIChyZXQpCj4gKwkJcmV0dXJuIHJldDsK PiArCj4gKwlkcm1fY3J0Y19oZWxwZXJfYWRkKGNydGMsICZkcm1fc2ltcGxlX2ttc19jcnRjX2hl bHBlcl9mdW5jcyk7Cj4gKwlyZXQgPSBkcm1fY3J0Y19pbml0X3dpdGhfcGxhbmVzKGRldiwgY3J0 YywgcGxhbmUsIE5VTEwsCj4gKwkJCQkJJmRybV9zaW1wbGVfa21zX2NydGNfZnVuY3MsIE5VTEwp Owo+ICsJaWYgKHJldCkKPiArCQlyZXR1cm4gcmV0Owo+ICsKPiArCWVuY29kZXItPnBvc3NpYmxl X2NydGNzID0gMSA8PCBkcm1fY3J0Y19pbmRleChjcnRjKTsKPiArCWRybV9lbmNvZGVyX2hlbHBl cl9hZGQoZW5jb2RlciwgJmRybV9zaW1wbGVfa21zX2VuY29kZXJfaGVscGVyX2Z1bmNzKTsKPiAr CXJldCA9IGRybV9lbmNvZGVyX2luaXQoZGV2LCBlbmNvZGVyLCAmZHJtX3NpbXBsZV9rbXNfZW5j b2Rlcl9mdW5jcywKPiArCQkJICAgICAgIERSTV9NT0RFX0VOQ09ERVJfTk9ORSwgTlVMTCk7Cj4g KwlpZiAocmV0KQo+ICsJCXJldHVybiByZXQ7Cj4gKwo+ICsJcmV0ID0gZHJtX21vZGVfY29ubmVj dG9yX2F0dGFjaF9lbmNvZGVyKGNvbm5lY3RvciwgZW5jb2Rlcik7Cj4gKwlpZiAocmV0KQo+ICsJ CXJldHVybiByZXQ7Cj4gKwo+ICsJcmV0dXJuIGRybV9jb25uZWN0b3JfcmVnaXN0ZXIoY29ubmVj dG9yKTsKPiArfQo+ICtFWFBPUlRfU1lNQk9MKGRybV9zaW1wbGVfZGlzcGxheV9waXBlX2luaXQp Owo+ICsKPiArTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2Ry bS9kcm1fc2ltcGxlX2ttc19oZWxwZXIuaCBiL2luY2x1ZGUvZHJtL2RybV9zaW1wbGVfa21zX2hl bHBlci5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi4wZjc0NjFiCj4g LS0tIC9kZXYvbnVsbAo+ICsrKyBiL2luY2x1ZGUvZHJtL2RybV9zaW1wbGVfa21zX2hlbHBlci5o Cj4gQEAgLTAsMCArMSw0NCBAQAo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMTYgTm9yYWxm IFRyw7hubmVzCj4gKyAqCj4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cj4gKyAqIGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cj4gKyAq IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExp Y2Vuc2UsIG9yCj4gKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCj4gKyAq Lwo+ICsKPiArI2lmbmRlZiBfX0xJTlVYX0RSTV9TSU1QTEVfS01TX0hFTFBFUl9ICj4gKyNkZWZp bmUgX19MSU5VWF9EUk1fU0lNUExFX0tNU19IRUxQRVJfSAo+ICsKPiArc3RydWN0IGRybV9zaW1w bGVfZGlzcGxheV9waXBlOwo+ICsKPiArc3RydWN0IGRybV9zaW1wbGVfZGlzcGxheV9waXBlX2Z1 bmNzIHsKPiArCXZvaWQgKCplbmFibGUpKHN0cnVjdCBkcm1fc2ltcGxlX2Rpc3BsYXlfcGlwZSAq cGlwZSwKPiArCQkgICAgICAgc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKTsKPiAr CXZvaWQgKCpkaXNhYmxlKShzdHJ1Y3QgZHJtX3NpbXBsZV9kaXNwbGF5X3BpcGUgKnBpcGUpOwo+ ICsJdm9pZCAoKnBsYW5lX3VwZGF0ZSkoc3RydWN0IGRybV9zaW1wbGVfZGlzcGxheV9waXBlICpw aXBlLAo+ICsJCQkgICAgIHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKTsKCk9u IDJuZCB0aG91Z2h0IG1heWJlIHdlIHdhbnQgYW4gYXRvbWljX2NoZWNrIGluIGhlcmUgdG9vLCB3 aXRoIHNhbWUKcGFyYW1ldGVycyAqcGlwZSwgKmNydGNfc3RhdGUgYW5kICpwbGFuZV9zdGF0ZSAo c28gdGhhdCBpdCdzIHVzZWZ1bCBmb3IKYm90aCBwbGFuZS1vbmx5IHVwZGF0ZXMgYW5kIG1vZGVz ZXQgY2hhbmdlcykuCgo+ICt9Owo+ICsKPiArc3RydWN0IGRybV9zaW1wbGVfZGlzcGxheV9waXBl IHsKPiArCXN0cnVjdCBkcm1fY3J0YyBjcnRjOwo+ICsJc3RydWN0IGRybV9wbGFuZSBwbGFuZTsK PiArCXN0cnVjdCBkcm1fZW5jb2RlciBlbmNvZGVyOwo+ICsJc3RydWN0IGRybV9jb25uZWN0b3Ig KmNvbm5lY3RvcjsKPiArCj4gKwlzdHJ1Y3QgZHJtX3NpbXBsZV9kaXNwbGF5X3BpcGVfZnVuY3Mg KmZ1bmNzOwo+ICt9Owo+ICsKPiAraW50IGRybV9zaW1wbGVfZGlzcGxheV9waXBlX2luaXQoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwKPiArCQkJCSBzdHJ1Y3QgZHJtX3NpbXBsZV9kaXNwbGF5X3Bp cGUgKnBpcGUsCj4gKwkJCQkgc3RydWN0IGRybV9zaW1wbGVfZGlzcGxheV9waXBlX2Z1bmNzICpm dW5jcywKPiArCQkJCSBjb25zdCB1aW50MzJfdCAqZm9ybWF0cywgdW5zaWduZWQgaW50IGZvcm1h dF9jb3VudCwKPiArCQkJCSBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKTsKPiArc3Ry dWN0IGRybV9jb25uZWN0b3IgKgo+ICtkcm1fc2ltcGxlX2ttc19wYW5lbF9jb25uZWN0b3JfY3Jl YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gKwkJCQkgICAgICBzdHJ1Y3QgZHJtX3BhbmVs ICpwYW5lbCwKPiArCQkJCSAgICAgIGludCBjb25uZWN0b3JfdHlwZSk7Cj4gKwo+ICsKPiArCj4g KyNlbmRpZiAvKiBfX0xJTlVYX0RSTV9TSU1QTEVfS01TX0hFTFBFUl9IICovCj4gLS0gCj4gMi4y LjIKPiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+ IGRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKPiBkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2 ZWwKCi0tIApEYW5pZWwgVmV0dGVyClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlv bgpodHRwOi8vYmxvZy5mZndsbC5jaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9kcmktZGV2ZWwK