From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 3/4] drm: Add helper for simple display pipeline Date: Thu, 5 May 2016 18:45:31 +0200 Message-ID: <20160505164531.GN1286@phenom.ffwll.local> References: <1462454674-2246-1-git-send-email-noralf@tronnes.org> <1462454674-2246-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-x241.google.com (mail-wm0-x241.google.com [IPv6:2a00:1450:400c:c09::241]) by gabe.freedesktop.org (Postfix) with ESMTPS id D3A176E9F5 for ; Thu, 5 May 2016 16:45:33 +0000 (UTC) Received: by mail-wm0-x241.google.com with SMTP id r12so4409351wme.0 for ; Thu, 05 May 2016 09:45:33 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1462454674-2246-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: treding@nvidia.com, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org List-Id: dri-devel@lists.freedesktop.org T24gVGh1LCBNYXkgMDUsIDIwMTYgYXQgMDM6MjQ6MzNQTSArMDIwMCwgTm9yYWxmIFRyw7hubmVz IHdyb3RlOgo+IFByb3ZpZGVzIGhlbHBlciBmdW5jdGlvbnMgZm9yIGRyaXZlcnMgdGhhdCBoYXZl IGEgc2ltcGxlIGRpc3BsYXkKPiBwaXBlbGluZS4gUGxhbmUsIGNydGMgYW5kIGVuY29kZXIgYXJl IGNvbGxhcHNlZCBpbnRvIG9uZSBlbnRpdHkuCj4gCj4gU2lnbmVkLW9mZi1ieTogTm9yYWxmIFRy w7hubmVzIDxub3JhbGZAdHJvbm5lcy5vcmc+CgpXaGVuIHJlc3VibWl0dGluZyBhIHBhdGNoIHBs ZWFzZSBhbHdheXMgaGF2ZSBhIHBlci1wYXRjaCBjaGFuZ2Vsb2cgb2Ygd2hhdAp5b3UndmUgZG9u ZS4gT3RoZXJ3aXNlIHlvdSBmb3JjZSByZXZpZXdlcnMgdG8gcmVtZW1iZXIgdGhleSBsb29rZWQg YXQgdGhpcwphbHJlYWR5LCBkaWcgb3V0IHRoZSBvbGQgbWFpbCBhbmQgY29tcGFyZSA7LSkKCj4g LS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9LY29uZmlnICAgICAgICAgICAgICAgICB8ICAgNyArKwo+ ICBkcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUgICAgICAgICAgICAgICAgfCAgIDEgKwo+ICBkcml2 ZXJzL2dwdS9kcm0vZHJtX3NpbXBsZV9rbXNfaGVscGVyLmMgfCAxNTcgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysKPiAgaW5jbHVkZS9kcm0vZHJtX3NpbXBsZV9rbXNfaGVscGVyLmgg ICAgIHwgIDg4ICsrKysrKysrKysrKysrKysrKwoKUGxlYXNlIGFsc28gYWRkIGEgbmV3IHNlY3Rp b24gKG5leHQgdG8gYWxsIHRoZSBvbmVzIGZvciB0aGUgb3RoZXIga21zCmhlbHBlcnMpIGluIERv Y3VtZW50YXRpb24vRG9jQm9vay9ncHUudG1wbCBhbmQgcHVsbCB5b3VyIGtlcm5lbGRvYyBpbi4K UGxlYXNlIGFsc28gYWRkIGEgc2hvcnQgb3ZlcnZpZXcga2VybmVsIGRvYyBzZWN0aW9uIHRvIHRo ZSAuYyBmaWxlIChVc2luZwp0aGUgRE9DOiBoZWFkZXIpIGFuZCBhbHNvIHB1bGwgdGhhdCBpbnRv IHRoZSBvdmVyYWxsIGdwdSBkb2NzLgoKWW91IGNhbiBjaGVjayB0aGUgcmVzdWx0cyB1c2luZwoK JCBtYWtlIGh0bWxkb2NzCgo+ICA0IGZpbGVzIGNoYW5nZWQsIDI1MyBpbnNlcnRpb25zKCspCj4g IGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vZHJtX3NpbXBsZV9rbXNfaGVscGVy LmMKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvZHJtL2RybV9zaW1wbGVfa21zX2hlbHBl ci5oCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9LY29uZmlnIGIvZHJpdmVycy9n cHUvZHJtL0tjb25maWcKPiBpbmRleCAxNmU0YzIxLi5mZjlmNDgwIDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9LY29uZmlnCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL0tjb25maWcKPiBA QCAtMzksNiArMzksMTMgQEAgY29uZmlnIERSTV9LTVNfSEVMUEVSCj4gIAloZWxwCj4gIAkgIENS VEMgaGVscGVycyBmb3IgS01TIGRyaXZlcnMuCj4gIAo+ICtjb25maWcgRFJNX1NJTVBMRV9LTVNf SEVMUEVSCj4gKwl0cmlzdGF0ZQo+ICsJZGVwZW5kcyBvbiBEUk0KPiArCXNlbGVjdCBEUk1fS01T X0hFTFBFUgo+ICsJaGVscAo+ICsJICBIZWxwZXJzIGZvciB2ZXJ5IHNpbXBsZSBLTVMgZHJpdmVy cy4KPiArCj4gIGNvbmZpZyBEUk1fS01TX0ZCX0hFTFBFUgo+ICAJYm9vbAo+ICAJZGVwZW5kcyBv biBEUk1fS01TX0hFTFBFUgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUg Yi9kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUKPiBpbmRleCA0M2MyYWJmLi43ZTk5OTIzIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9NYWtlZmlsZQo+IEBAIC0zMSw2ICszMSw3IEBAIGRybV9rbXNfaGVscGVyLSQoQ09ORklHX0RS TV9LTVNfQ01BX0hFTFBFUikgKz0gZHJtX2ZiX2NtYV9oZWxwZXIubwo+ICBkcm1fa21zX2hlbHBl ci0kKENPTkZJR19EUk1fRFBfQVVYX0NIQVJERVYpICs9IGRybV9kcF9hdXhfZGV2Lm8KPiAgCj4g IG9iai0kKENPTkZJR19EUk1fS01TX0hFTFBFUikgKz0gZHJtX2ttc19oZWxwZXIubwo+ICtvYmot JChDT05GSUdfRFJNX1NJTVBMRV9LTVNfSEVMUEVSKSArPSBkcm1fc2ltcGxlX2ttc19oZWxwZXIu bwo+ICAKPiAgQ0ZMQUdTX2RybV90cmFjZV9wb2ludHMubyA6PSAtSSQoc3JjKQo+ICAKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9zaW1wbGVfa21zX2hlbHBlci5jIGIvZHJpdmVy cy9ncHUvZHJtL2RybV9zaW1wbGVfa21zX2hlbHBlci5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQK PiBpbmRleCAwMDAwMDAwLi5jODcyNWJiCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9kcm1fc2ltcGxlX2ttc19oZWxwZXIuYwo+IEBAIC0wLDAgKzEsMTU3IEBACj4gKy8q Cj4gKyAqIENvcHlyaWdodCAoQykgMjAxNiBOb3JhbGYgVHLDuG5uZXMKPiArICoKPiArICogVGhp cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkKPiArICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKPiArICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKPiArICogKGF0IHlvdXIg b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KPiArICovCj4gKwo+ICsjaW5jbHVkZSA8ZHJtL2Ry bVAuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJt X2F0b21pY19oZWxwZXIuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fY3J0Y19oZWxwZXIuaD4KPiAr I2luY2x1ZGUgPGRybS9kcm1fcGxhbmVfaGVscGVyLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX3Np bXBsZV9rbXNfaGVscGVyLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+Cj4gKwo+ICtzdGF0 aWMgY29uc3Qgc3RydWN0IGRybV9lbmNvZGVyX2Z1bmNzIGRybV9zaW1wbGVfa21zX2VuY29kZXJf ZnVuY3MgPSB7Cj4gKwkuZGVzdHJveSA9IGRybV9lbmNvZGVyX2NsZWFudXAsCj4gK307Cj4gKwo+ ICtzdGF0aWMgdm9pZCBkcm1fc2ltcGxlX2ttc19jcnRjX2VuYWJsZShzdHJ1Y3QgZHJtX2NydGMg KmNydGMpCj4gK3sKPiArCXN0cnVjdCBkcm1fc2ltcGxlX2Rpc3BsYXlfcGlwZSAqcGlwZTsKPiAr Cj4gKwlwaXBlID0gY29udGFpbmVyX29mKGNydGMsIHN0cnVjdCBkcm1fc2ltcGxlX2Rpc3BsYXlf cGlwZSwgY3J0Yyk7Cj4gKwlpZiAoIXBpcGUtPmZ1bmNzIHx8ICFwaXBlLT5mdW5jcy0+ZW5hYmxl KQo+ICsJCXJldHVybjsKPiArCj4gKwlwaXBlLT5mdW5jcy0+ZW5hYmxlKHBpcGUsIGNydGMtPnN0 YXRlKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgZHJtX3NpbXBsZV9rbXNfY3J0Y19kaXNhYmxl KHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiArewo+ICsJc3RydWN0IGRybV9zaW1wbGVfZGlzcGxh eV9waXBlICpwaXBlOwo+ICsKPiArCXBpcGUgPSBjb250YWluZXJfb2YoY3J0Yywgc3RydWN0IGRy bV9zaW1wbGVfZGlzcGxheV9waXBlLCBjcnRjKTsKPiArCWlmICghcGlwZS0+ZnVuY3MgfHwgIXBp cGUtPmZ1bmNzLT5kaXNhYmxlKQo+ICsJCXJldHVybjsKPiArCj4gKwlwaXBlLT5mdW5jcy0+ZGlz YWJsZShwaXBlKTsKPiArfQo+ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY3J0Y19oZWxw ZXJfZnVuY3MgZHJtX3NpbXBsZV9rbXNfY3J0Y19oZWxwZXJfZnVuY3MgPSB7Cj4gKwkuZGlzYWJs ZSA9IGRybV9zaW1wbGVfa21zX2NydGNfZGlzYWJsZSwKPiArCS5lbmFibGUgPSBkcm1fc2ltcGxl X2ttc19jcnRjX2VuYWJsZSwKPiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Ny dGNfZnVuY3MgZHJtX3NpbXBsZV9rbXNfY3J0Y19mdW5jcyA9IHsKPiArCS5yZXNldCA9IGRybV9h dG9taWNfaGVscGVyX2NydGNfcmVzZXQsCj4gKwkuZGVzdHJveSA9IGRybV9jcnRjX2NsZWFudXAs Cj4gKwkuc2V0X2NvbmZpZyA9IGRybV9hdG9taWNfaGVscGVyX3NldF9jb25maWcsCj4gKwkucGFn ZV9mbGlwID0gZHJtX2F0b21pY19oZWxwZXJfcGFnZV9mbGlwLAo+ICsJLmF0b21pY19kdXBsaWNh dGVfc3RhdGUgPSBkcm1fYXRvbWljX2hlbHBlcl9jcnRjX2R1cGxpY2F0ZV9zdGF0ZSwKPiArCS5h dG9taWNfZGVzdHJveV9zdGF0ZSA9IGRybV9hdG9taWNfaGVscGVyX2NydGNfZGVzdHJveV9zdGF0 ZSwKPiArfTsKPiArCj4gK3N0YXRpYyBpbnQgZHJtX3NpbXBsZV9rbXNfcGxhbmVfYXRvbWljX2No ZWNrKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ICsJCQkJCXN0cnVjdCBkcm1fcGxhbmVfc3Rh dGUgKnBzdGF0ZSkKPiArewo+ICsJc3RydWN0IGRybV9zaW1wbGVfZGlzcGxheV9waXBlICpwaXBl Owo+ICsJc3RydWN0IGRybV9jcnRjX3N0YXRlICpjc3RhdGU7Cj4gKwo+ICsJcGlwZSA9IGNvbnRh aW5lcl9vZihwbGFuZSwgc3RydWN0IGRybV9zaW1wbGVfZGlzcGxheV9waXBlLCBwbGFuZSk7Cj4g KwlpZiAoIXBpcGUtPmZ1bmNzIHx8ICFwaXBlLT5mdW5jcy0+Y2hlY2spCj4gKwkJcmV0dXJuIDA7 Cj4gKwo+ICsJY3N0YXRlID0gZHJtX2F0b21pY19nZXRfZXhpc3RpbmdfY3J0Y19zdGF0ZShwc3Rh dGUtPnN0YXRlLAo+ICsJCQkJCQkgICAgJnBpcGUtPmNydGMpOwo+ICsKPiArCXJldHVybiBwaXBl LT5mdW5jcy0+Y2hlY2socGlwZSwgcHN0YXRlLCBjc3RhdGUpOwo+ICt9Cj4gKwo+ICtzdGF0aWMg dm9pZCBkcm1fc2ltcGxlX2ttc19wbGFuZV9hdG9taWNfdXBkYXRlKHN0cnVjdCBkcm1fcGxhbmUg KnBsYW5lLAo+ICsJCQkJCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnBzdGF0ZSkKPiArewo+ICsJ c3RydWN0IGRybV9zaW1wbGVfZGlzcGxheV9waXBlICpwaXBlOwo+ICsKPiArCXBpcGUgPSBjb250 YWluZXJfb2YocGxhbmUsIHN0cnVjdCBkcm1fc2ltcGxlX2Rpc3BsYXlfcGlwZSwgcGxhbmUpOwo+ ICsJaWYgKCFwaXBlLT5mdW5jcyB8fCAhcGlwZS0+ZnVuY3MtPnVwZGF0ZSkKPiArCQlyZXR1cm47 Cj4gKwo+ICsJcGlwZS0+ZnVuY3MtPnVwZGF0ZShwaXBlLCBwc3RhdGUpOwo+ICt9Cj4gKwo+ICtz dGF0aWMgY29uc3Qgc3RydWN0IGRybV9wbGFuZV9oZWxwZXJfZnVuY3MgZHJtX3NpbXBsZV9rbXNf cGxhbmVfaGVscGVyX2Z1bmNzID0gewo+ICsJLmF0b21pY19jaGVjayA9IGRybV9zaW1wbGVfa21z X3BsYW5lX2F0b21pY19jaGVjaywKPiArCS5hdG9taWNfdXBkYXRlID0gZHJtX3NpbXBsZV9rbXNf cGxhbmVfYXRvbWljX3VwZGF0ZSwKPiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJt X3BsYW5lX2Z1bmNzIGRybV9zaW1wbGVfa21zX3BsYW5lX2Z1bmNzID0gewo+ICsJLnVwZGF0ZV9w bGFuZQkJPSBkcm1fYXRvbWljX2hlbHBlcl91cGRhdGVfcGxhbmUsCj4gKwkuZGlzYWJsZV9wbGFu ZQkJPSBkcm1fYXRvbWljX2hlbHBlcl9kaXNhYmxlX3BsYW5lLAo+ICsJLmRlc3Ryb3kJCT0gZHJt X3BsYW5lX2NsZWFudXAsCj4gKwkucmVzZXQJCQk9IGRybV9hdG9taWNfaGVscGVyX3BsYW5lX3Jl c2V0LAo+ICsJLmF0b21pY19kdXBsaWNhdGVfc3RhdGUJPSBkcm1fYXRvbWljX2hlbHBlcl9wbGFu ZV9kdXBsaWNhdGVfc3RhdGUsCj4gKwkuYXRvbWljX2Rlc3Ryb3lfc3RhdGUJPSBkcm1fYXRvbWlj X2hlbHBlcl9wbGFuZV9kZXN0cm95X3N0YXRlLAo+ICt9Owo+ICsKPiArLyoqCj4gKyAqIGRybV9z aW1wbGVfZGlzcGxheV9waXBlX2luaXQgLSBJbml0aWFsaXplIGEgc2ltcGxlIGRpc3BsYXkgcGlw ZWxpbmUKPiArICogQGRldjogRFJNIGRldmljZQo+ICsgKiBAcGlwZTogc2ltcGxlIGRpc3BsYXkg cGlwZSBvYmplY3QgdG8gaW5pdGlhbGl6ZQo+ICsgKiBAZnVuY3M6IGNhbGxiYWNrcyBmb3IgdGhl IGRpc3BsYXkgcGlwZQo+ICsgKiBAZm9ybWF0czogYXJyYXkgb2Ygc3VwcG9ydGVkIGZvcm1hdHMg KCVEUk1fRk9STUFUXyopCj4gKyAqIEBmb3JtYXRfY291bnQ6IG51bWJlciBvZiBlbGVtZW50cyBp biBAZm9ybWF0cwo+ICsgKiBAY29ubmVjdG9yOiBjb25uZWN0b3IgdG8gYXR0YWNoIGFuZCByZWdp c3Rlcgo+ICsgKgo+ICsgKiBTZXRzIHVwIGEgZGlzcGxheSBwaXBlbGluZSB3aGljaCBjb25zaXN0 IG9mIGEgcmVhbGx5IHNpbXBsZQo+ICsgKiBwbGFuZS1jcnRjLWVuY29kZXIgcGlwZSBjb3VwbGVk IHdpdGggdGhlIHByb3ZpZGVkIGNvbm5lY3Rvci4KCm5lZWQgdG8gc3BlY2lmeSB0aGF0IEBmdW5j cyBpcyBvcHRpb25hbC4KCj4gKyAqCj4gKyAqIFJldHVybnM6Cj4gKyAqIFplcm8gb24gc3VjY2Vz cywgZXJyb3IgY29kZSBvbiBmYWlsdXJlLgoKIl9uZWdhdGl2ZV8gZXJyb3IgY29kZSIKPiArICov Cj4gK2ludCBkcm1fc2ltcGxlX2Rpc3BsYXlfcGlwZV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsCj4gKwkJCQkgc3RydWN0IGRybV9zaW1wbGVfZGlzcGxheV9waXBlICpwaXBlLAo+ICsJCQkJ IHN0cnVjdCBkcm1fc2ltcGxlX2Rpc3BsYXlfcGlwZV9mdW5jcyAqZnVuY3MsCj4gKwkJCQkgY29u c3QgdWludDMyX3QgKmZvcm1hdHMsCj4gKwkJCQkgdW5zaWduZWQgaW50IGZvcm1hdF9jb3VudCwK PiArCQkJCSBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ICt7Cj4gKwlzdHJ1Y3Qg ZHJtX2VuY29kZXIgKmVuY29kZXIgPSAmcGlwZS0+ZW5jb2RlcjsKPiArCXN0cnVjdCBkcm1fcGxh bmUgKnBsYW5lID0gJnBpcGUtPnBsYW5lOwo+ICsJc3RydWN0IGRybV9jcnRjICpjcnRjID0gJnBp cGUtPmNydGM7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCXBpcGUtPmZ1bmNzID0gZnVuY3M7Cj4gKwo+ ICsJZHJtX3BsYW5lX2hlbHBlcl9hZGQocGxhbmUsICZkcm1fc2ltcGxlX2ttc19wbGFuZV9oZWxw ZXJfZnVuY3MpOwo+ICsJcmV0ID0gZHJtX3VuaXZlcnNhbF9wbGFuZV9pbml0KGRldiwgcGxhbmUs IDAsCj4gKwkJCQkgICAgICAgJmRybV9zaW1wbGVfa21zX3BsYW5lX2Z1bmNzLAo+ICsJCQkJICAg ICAgIGZvcm1hdHMsIGZvcm1hdF9jb3VudCwKPiArCQkJCSAgICAgICBEUk1fUExBTkVfVFlQRV9Q UklNQVJZLCBOVUxMKTsKPiArCWlmIChyZXQpCj4gKwkJcmV0dXJuIHJldDsKPiArCj4gKwlkcm1f Y3J0Y19oZWxwZXJfYWRkKGNydGMsICZkcm1fc2ltcGxlX2ttc19jcnRjX2hlbHBlcl9mdW5jcyk7 Cj4gKwlyZXQgPSBkcm1fY3J0Y19pbml0X3dpdGhfcGxhbmVzKGRldiwgY3J0YywgcGxhbmUsIE5V TEwsCj4gKwkJCQkJJmRybV9zaW1wbGVfa21zX2NydGNfZnVuY3MsIE5VTEwpOwo+ICsJaWYgKHJl dCkKPiArCQlyZXR1cm4gcmV0Owo+ICsKPiArCWVuY29kZXItPnBvc3NpYmxlX2NydGNzID0gMSA8 PCBkcm1fY3J0Y19pbmRleChjcnRjKTsKPiArCXJldCA9IGRybV9lbmNvZGVyX2luaXQoZGV2LCBl bmNvZGVyLCAmZHJtX3NpbXBsZV9rbXNfZW5jb2Rlcl9mdW5jcywKPiArCQkJICAgICAgIERSTV9N T0RFX0VOQ09ERVJfTk9ORSwgTlVMTCk7Cj4gKwlpZiAocmV0KQo+ICsJCXJldHVybiByZXQ7Cj4g Kwo+ICsJcmV0ID0gZHJtX21vZGVfY29ubmVjdG9yX2F0dGFjaF9lbmNvZGVyKGNvbm5lY3Rvciwg ZW5jb2Rlcik7Cj4gKwlpZiAocmV0KQo+ICsJCXJldHVybiByZXQ7Cj4gKwo+ICsJcmV0dXJuIGRy bV9jb25uZWN0b3JfcmVnaXN0ZXIoY29ubmVjdG9yKTsKPiArfQo+ICtFWFBPUlRfU1lNQk9MKGRy bV9zaW1wbGVfZGlzcGxheV9waXBlX2luaXQpOwo+ICsKPiArTU9EVUxFX0xJQ0VOU0UoIkdQTCIp Owo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fc2ltcGxlX2ttc19oZWxwZXIuaCBiL2lu Y2x1ZGUvZHJtL2RybV9zaW1wbGVfa21zX2hlbHBlci5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQK PiBpbmRleCAwMDAwMDAwLi42OWVhYzk0Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2luY2x1ZGUv ZHJtL2RybV9zaW1wbGVfa21zX2hlbHBlci5oCj4gQEAgLTAsMCArMSw4OCBAQAo+ICsvKgo+ICsg KiBDb3B5cmlnaHQgKEMpIDIwMTYgTm9yYWxmIFRyw7hubmVzCj4gKyAqCj4gKyAqIFRoaXMgcHJv Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5Cj4gKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cj4gKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCj4gKyAqIChhdCB5b3VyIG9wdGlv bikgYW55IGxhdGVyIHZlcnNpb24uCj4gKyAqLwo+ICsKPiArI2lmbmRlZiBfX0xJTlVYX0RSTV9T SU1QTEVfS01TX0hFTFBFUl9ICj4gKyNkZWZpbmUgX19MSU5VWF9EUk1fU0lNUExFX0tNU19IRUxQ RVJfSAo+ICsKPiArc3RydWN0IGRybV9zaW1wbGVfZGlzcGxheV9waXBlOwo+ICsKPiArLyoqCj4g KyAqIHN0cnVjdCBkcm1fc2ltcGxlX2Rpc3BsYXlfcGlwZV9mdW5jcyAtIGhlbHBlciBvcGVyYXRp b25zIGZvciBhIHNpbXBsZQo+ICsgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBkaXNwbGF5IHBpcGVsaW5lCj4gKyAqLwo+ICtzdHJ1Y3QgZHJtX3NpbXBsZV9kaXNwbGF5 X3BpcGVfZnVuY3Mgewo+ICsJLyoqCj4gKwkgKiBAZW5hYmxlOgo+ICsJICoKPiArCSAqIFRoaXMg ZnVuY3Rpb24gc2hvdWxkIGJlIHVzZWQgdG8gZW5hYmxlIHRoZSBwaXBlbGluZS4KPiArCSAqIEl0 IGlzIGNhbGxlZCB3aGVuIHRoZSB1bmRlcmx5aW5nIGNydGMgaXMgZW5hYmxlZC4KClBsZWFzZSBh ZGQgYm9pbGVycGxhdGUgdG8gYWxsIHRoZXNlIGhvb2tzIGFsb25nIHRoZSBsaW5lcyBvZjoKCiJU aGlzIGhvb2sgaXMgb3B0aW9uYWwuIgoKQmVzaWRlcyB0aGF0IGxpdHRsZSBiaXQgb2YgcG9saXNo IGxvb2tzIGFsbCBnb29kIHRvIG1lLgotRGFuaWVsCgo+ICsJICovCj4gKwl2b2lkICgqZW5hYmxl KShzdHJ1Y3QgZHJtX3NpbXBsZV9kaXNwbGF5X3BpcGUgKnBpcGUsCj4gKwkJICAgICAgIHN0cnVj dCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSk7Cj4gKwkvKioKPiArCSAqIEBkaXNhYmxlOgo+ ICsJICoKPiArCSAqIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIHVzZWQgdG8gZGlzYWJsZSB0aGUg cGlwZWxpbmUuCj4gKwkgKiBJdCBpcyBjYWxsZWQgd2hlbiB0aGUgdW5kZXJseWluZyBjcnRjIGlz IGRpc2FibGVkLgo+ICsJICovCj4gKwl2b2lkICgqZGlzYWJsZSkoc3RydWN0IGRybV9zaW1wbGVf ZGlzcGxheV9waXBlICpwaXBlKTsKPiArCj4gKwkvKioKPiArCSAqIEBjaGVjazoKPiArCSAqCj4g KwkgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBpbiB0aGUgY2hlY2sgcGhhc2Ugb2YgYW4gYXRv bWljIHVwZGF0ZSwKPiArCSAqIHNwZWNpZmljYWxseSB3aGVuIHRoZSB1bmRlcmx5aW5nIHBsYW5l IGlzIGNoZWNrZWQuCj4gKwkgKgo+ICsJICogUkVUVVJOUzoKPiArCSAqCj4gKwkgKiAwIG9uIHN1 Y2Nlc3MsIC1FSU5WQUwgaWYgdGhlIHN0YXRlIG9yIHRoZSB0cmFuc2l0aW9uIGNhbid0IGJlCj4g KwkgKiBzdXBwb3J0ZWQsIC1FTk9NRU0gb24gbWVtb3J5IGFsbG9jYXRpb24gZmFpbHVyZSBhbmQg LUVERUFETEsgaWYgYW4KPiArCSAqIGF0dGVtcHQgdG8gb2J0YWluIGFub3RoZXIgc3RhdGUgb2Jq ZWN0IHJhbiBpbnRvIGEgJmRybV9tb2Rlc2V0X2xvY2sKPiArCSAqIGRlYWRsb2NrLgo+ICsJICov Cj4gKwlpbnQgKCpjaGVjaykoc3RydWN0IGRybV9zaW1wbGVfZGlzcGxheV9waXBlICpwaXBlLAo+ ICsJCSAgICAgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUsCj4gKwkJICAgICBz dHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpOwo+ICsJLyoqCj4gKwkgKiBAdXBkYXRl Ogo+ICsJICoKPiArCSAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gdGhlIHVuZGVybHlp bmcgcGxhbmUgc3RhdGUgaXMgdXBkYXRlZC4KPiArCSAqLwo+ICsJdm9pZCAoKnVwZGF0ZSkoc3Ry dWN0IGRybV9zaW1wbGVfZGlzcGxheV9waXBlICpwaXBlLAo+ICsJCSAgICAgICBzdHJ1Y3QgZHJt X3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSk7Cj4gK307Cj4gKwo+ICsvKioKPiArICogc3RydWN0 IGRybV9zaW1wbGVfZGlzcGxheV9waXBlIC0gc2ltcGxlIGRpc3BsYXkgcGlwZWxpbmUKPiArICog QGNydGM6IENSVEMgY29udHJvbCBzdHJ1Y3R1cmUKPiArICogQHBsYW5lOiBQbGFuZSBjb250cm9s IHN0cnVjdHVyZQo+ICsgKiBAZW5jb2RlcjogRW5jb2RlciBjb250cm9sIHN0cnVjdHVyZQo+ICsg KiBAY29ubmVjdG9yOiBDb25uZWN0b3IgY29udHJvbCBzdHJ1Y3R1cmUKPiArICogQGZ1bmNzOiBQ aXBlbGluZSBjb250cm9sIGZ1bmN0aW9ucyAob3B0aW9uYWwpCj4gKyAqCj4gKyAqIFNpbXBsZSBk aXNwbGF5IHBpcGVsaW5lIHdpdGggcGxhbmUsIGNydGMgYW5kIGVuY29kZXIgY29sbGFwc2VkIGlu dG8gb25lCj4gKyAqIGVudGl0eS4KPiArICovCj4gK3N0cnVjdCBkcm1fc2ltcGxlX2Rpc3BsYXlf cGlwZSB7Cj4gKwlzdHJ1Y3QgZHJtX2NydGMgY3J0YzsKPiArCXN0cnVjdCBkcm1fcGxhbmUgcGxh bmU7Cj4gKwlzdHJ1Y3QgZHJtX2VuY29kZXIgZW5jb2RlcjsKPiArCXN0cnVjdCBkcm1fY29ubmVj dG9yICpjb25uZWN0b3I7Cj4gKwo+ICsJc3RydWN0IGRybV9zaW1wbGVfZGlzcGxheV9waXBlX2Z1 bmNzICpmdW5jczsKPiArfTsKPiArCj4gK2ludCBkcm1fc2ltcGxlX2Rpc3BsYXlfcGlwZV9pbml0 KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gKwkJCQkgc3RydWN0IGRybV9zaW1wbGVfZGlzcGxh eV9waXBlICpwaXBlLAo+ICsJCQkJIHN0cnVjdCBkcm1fc2ltcGxlX2Rpc3BsYXlfcGlwZV9mdW5j cyAqZnVuY3MsCj4gKwkJCQkgY29uc3QgdWludDMyX3QgKmZvcm1hdHMsCj4gKwkJCQkgdW5zaWdu ZWQgaW50IGZvcm1hdF9jb3VudCwKPiArCQkJCSBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVj dG9yKTsKPiArCj4gKyNlbmRpZiAvKiBfX0xJTlVYX0RSTV9TSU1QTEVfS01TX0hFTFBFUl9IICov Cj4gLS0gCj4gMi4yLjIKPiAKCi0tIApEYW5pZWwgVmV0dGVyClNvZnR3YXJlIEVuZ2luZWVyLCBJ bnRlbCBDb3Jwb3JhdGlvbgpodHRwOi8vYmxvZy5mZndsbC5jaApfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1k ZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK