From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH RFC v2 3/3] drm/dp: Add a drm_aux-dev module for reading/writing dpcd registers. Date: Tue, 22 Sep 2015 14:59:24 +0200 Message-ID: <20150922125924.GM3383@phenom.ffwll.local> References: <1442361304-16740-1-git-send-email-rafael.antognolli@intel.com> <1442361304-16740-4-git-send-email-rafael.antognolli@intel.com> <20150922120054.GM26517@intel.com> <20150922121751.GK3383@phenom.ffwll.local> <20150922123513.GN26517@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wi0-f177.google.com (mail-wi0-f177.google.com [209.85.212.177]) by gabe.freedesktop.org (Postfix) with ESMTPS id E6DAF6E283 for ; Tue, 22 Sep 2015 05:56:33 -0700 (PDT) Received: by wicge5 with SMTP id ge5so160166182wic.0 for ; Tue, 22 Sep 2015 05:56:32 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20150922123513.GN26517@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Cc: dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gVHVlLCBTZXAgMjIsIDIwMTUgYXQgMDM6MzU6MTNQTSArMDMwMCwgVmlsbGUgU3lyasOkbMOk IHdyb3RlOgo+IE9uIFR1ZSwgU2VwIDIyLCAyMDE1IGF0IDAyOjE3OjUxUE0gKzAyMDAsIERhbmll bCBWZXR0ZXIgd3JvdGU6Cj4gPiBPbiBUdWUsIFNlcCAyMiwgMjAxNSBhdCAwMzowMDo1NFBNICsw MzAwLCBWaWxsZSBTeXJqw6Rsw6Qgd3JvdGU6Cj4gPiA+IE9uIFR1ZSwgU2VwIDE1LCAyMDE1IGF0 IDA0OjU1OjA0UE0gLTA3MDAsIFJhZmFlbCBBbnRvZ25vbGxpIHdyb3RlOgo+ID4gPiA+IFRoaXMg bW9kdWxlIGlzIGhlYXZpbHkgYmFzZWQgb24gaTJjLWRldi4gT25jZSBsb2FkZWQsIGl0IHByb3Zp ZGVzIG9uZQo+ID4gPiA+IGRldiBub2RlIHBlciBEUCBBVVggY2hhbm5lbCwgbmFtZWQgZHJtX2F1 eC1OLgo+ID4gPiA+IAo+ID4gPiA+IEl0J3MgcG9zc2libGUgdG8ga25vdyB3aGljaCBjb25uZWN0 b3Igb3ducyB0aGlzIGF1eCBjaGFubmVsIGJ5IGxvb2tpbmcKPiA+ID4gPiBhdCB0aGUgcmVzcGVj dGl2ZSBzeXNmcyAvc3lzL2NsYXNzL2RybV9hdXgtZGV2L2RybV9hdXgtTi9jb25uZWN0b3IsIGlm Cj4gPiA+ID4gdGhlIGNvbm5lY3RvciBkZXZpY2UgcG9pbnRlciB3YXMgY29ycmVjdGx5IHNldCBp biB0aGUgYXV4IGhlbHBlciBzdHJ1Y3QuCj4gPiA+ID4gCj4gPiA+ID4gVHdvIG1haW4gb3BlcmF0 aW9ucyBhcmUgcHJvdmlkZWQgb24gdGhlIHJlZ2lzdGVyczogcmVhZCBhbmQgd3JpdGUuIFRoZQo+ ID4gPiA+IGFkZHJlc3Mgb2YgdGhlIHJlZ2lzdGVyIHRvIGJlIHJlYWQgb3Igd3JpdHRlbiBpcyBn aXZlbiB1c2luZyBsc2Vlay4KPiA+ID4gPiBSZWFkaW5nIG9yIHdyaXRpbmcgZG9lcyBub3QgdXBk YXRlIHRoZSBvZmZzZXQgb2YgdGhlIGZpbGUuCj4gPiA+ID4gCj4gPiA+ID4gU2lnbmVkLW9mZi1i eTogUmFmYWVsIEFudG9nbm9sbGkgPHJhZmFlbC5hbnRvZ25vbGxpQGludGVsLmNvbT4KPiA+ID4g PiAtLS0KPiA+ID4gPiAgZHJpdmVycy9ncHUvZHJtL0tjb25maWcgICAgICAgfCAgIDQgKwo+ID4g PiA+ICBkcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUgICAgICB8ICAgMSArCj4gPiA+ID4gIGRyaXZl cnMvZ3B1L2RybS9kcm1fYXV4LWRldi5jIHwgMzI2ICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKwo+ID4gPiA+ICAzIGZpbGVzIGNoYW5nZWQsIDMzMSBpbnNlcnRpb25z KCspCj4gPiA+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vZHJtX2F1eC1k ZXYuYwo+ID4gPiA+IAo+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vS2NvbmZp ZyBiL2RyaXZlcnMvZ3B1L2RybS9LY29uZmlnCj4gPiA+ID4gaW5kZXggMWEwYThkZi4uZWFlODQ3 YyAxMDA2NDQKPiA+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZwo+ID4gPiA+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9LY29uZmlnCj4gPiA+ID4gQEAgLTI1LDYgKzI1LDEwIEBAIGNv bmZpZyBEUk1fTUlQSV9EU0kKPiA+ID4gPiAgCWJvb2wKPiA+ID4gPiAgCWRlcGVuZHMgb24gRFJN Cj4gPiA+ID4gIAo+ID4gPiA+ICtjb25maWcgRFJNX0FVWF9DSEFSREVWCj4gPiA+ID4gKwl0cmlz dGF0ZSAiRFJNIERQIEFVWCBJbnRlcmZhY2UiCj4gPiA+ID4gKwlkZXBlbmRzIG9uIERSTQo+ID4g PiA+ICsKPiA+ID4gPiAgY29uZmlnIERSTV9LTVNfSEVMUEVSCj4gPiA+ID4gIAl0cmlzdGF0ZQo+ ID4gPiA+ICAJZGVwZW5kcyBvbiBEUk0KPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlCj4gPiA+ID4gaW5kZXggNDVl NzcxOS4uYTFhOTQzMDYgMTAwNjQ0Cj4gPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL01ha2Vm aWxlCj4gPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlCj4gPiA+ID4gQEAgLTMy LDYgKzMyLDcgQEAgQ0ZMQUdTX2RybV90cmFjZV9wb2ludHMubyA6PSAtSSQoc3JjKQo+ID4gPiA+ ICAKPiA+ID4gPiAgb2JqLSQoQ09ORklHX0RSTSkJKz0gZHJtLm8KPiA+ID4gPiAgb2JqLSQoQ09O RklHX0RSTV9NSVBJX0RTSSkgKz0gZHJtX21pcGlfZHNpLm8KPiA+ID4gPiArb2JqLSQoQ09ORklH X0RSTV9BVVhfQ0hBUkRFVikgKz0gZHJtX2F1eC1kZXYubwo+ID4gPiA+ICBvYmotJChDT05GSUdf RFJNX1RUTSkJKz0gdHRtLwo+ID4gPiA+ICBvYmotJChDT05GSUdfRFJNX1RERlgpCSs9IHRkZngv Cj4gPiA+ID4gIG9iai0kKENPTkZJR19EUk1fUjEyOCkJKz0gcjEyOC8KPiA+ID4gPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9hdXgtZGV2LmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJt X2F1eC1kZXYuYwo+ID4gPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gPiA+ID4gaW5kZXggMDAw MDAwMC4uZmNjMzM0YQo+ID4gPiA+IC0tLSAvZGV2L251bGwKPiA+ID4gPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vZHJtX2F1eC1kZXYuYwo+ID4gPiA+IEBAIC0wLDAgKzEsMzI2IEBACj4gPiA+ID4g Ky8qCj4gPiA+ID4gKyAqIENvcHlyaWdodCDCqSAyMDE1IEludGVsIENvcnBvcmF0aW9uCj4gPiA+ ID4gKyAqCj4gPiA+ID4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2Yg Y2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCj4gPiA+ID4gKyAqIGNvcHkgb2YgdGhp cyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3 YXJlIiksCj4gPiA+ID4gKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJp Y3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KPiA+ID4gPiArICogdGhlIHJpZ2h0 cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1Ymxp Y2Vuc2UsCj4gPiA+ID4gKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFu ZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQo+ID4gPiA+ICsgKiBTb2Z0d2FyZSBpcyBm dXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgo+ ID4gPiA+ICsgKgo+ID4gPiA+ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhp cyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0Cj4gPiA+ID4gKyAqIHBhcmFn cmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0 aW9ucyBvZiB0aGUKPiA+ID4gPiArICogU29mdHdhcmUuCj4gPiA+ID4gKyAqCj4gPiA+ID4gKyAq IFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFO WSBLSU5ELCBFWFBSRVNTIE9SCj4gPiA+ID4gKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9U IExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAo+ID4gPiA+ICsg KiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAg SU4gTk8gRVZFTlQgU0hBTEwKPiA+ID4gPiArICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhP TERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKPiA+ID4gPiAr ICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBP VEhFUldJU0UsIEFSSVNJTkcKPiA+ID4gPiArICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJ T04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUwo+ID4gPiA+ ICsgKiBJTiBUSEUgU09GVFdBUkUuCj4gPiA+ID4gKyAqCj4gPiA+ID4gKyAqIEF1dGhvcnM6Cj4g PiA+ID4gKyAqICAgIFJhZmFlbCBBbnRvZ25vbGxpIDxyYWZhZWwuYW50b2dub2xsaUBpbnRlbC5j b20+Cj4gPiA+ID4gKyAqCj4gPiA+ID4gKyAqLwo+ID4gPiA+ICsKPiA+ID4gPiArI2luY2x1ZGUg PGxpbnV4L2RldmljZS5oPgo+ID4gPiA+ICsjaW5jbHVkZSA8bGludXgvZnMuaD4KPiA+ID4gPiAr I2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4KPiA+ID4gPiArI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4K PiA+ID4gPiArI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgo+ID4gPiA+ICsjaW5jbHVkZSA8bGlu dXgvbW9kdWxlLmg+Cj4gPiA+ID4gKyNpbmNsdWRlIDxhc20vdWFjY2Vzcy5oPgo+ID4gPiA+ICsj aW5jbHVkZSA8ZHJtL2RybV9kcF9oZWxwZXIuaD4KPiA+ID4gPiArI2luY2x1ZGUgPGRybS9kcm1f Y3J0Yy5oPgo+ID4gPiA+ICsKPiA+ID4gPiArc3RydWN0IGRybV9hdXhfZGV2IHsKPiA+ID4gPiAr CXN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKPiA+ID4gPiArCXVuc2lnbmVkIGluZGV4Owo+ID4gPiA+ ICsJc3RydWN0IGRybV9kcF9hdXggKmF1eDsKPiA+ID4gPiArCXN0cnVjdCBkZXZpY2UgKmRldjsK PiA+ID4gPiArfTsKPiA+ID4gPiArCj4gPiA+ID4gKyNkZWZpbmUgRFJNX0FVWF9NSU5PUlMJMjU2 Cj4gPiA+ID4gK3N0YXRpYyBpbnQgZHJtX2F1eF9kZXZfY291bnQgPSAwOwo+ID4gPiA+ICtzdGF0 aWMgTElTVF9IRUFEKGRybV9hdXhfZGV2X2xpc3QpOwo+ID4gPiA+ICtzdGF0aWMgREVGSU5FX1NQ SU5MT0NLKGRybV9hdXhfZGV2X2xpc3RfbG9jayk7Cj4gPiA+ID4gKwo+ID4gPiA+ICtzdGF0aWMg c3RydWN0IGRybV9hdXhfZGV2ICpkcm1fYXV4X2Rldl9nZXRfYnlfbWlub3IodW5zaWduZWQgaW5k ZXgpCj4gPiA+ID4gK3sKPiA+ID4gPiArCXN0cnVjdCBkcm1fYXV4X2RldiAqYXV4X2RldjsKPiA+ ID4gPiArCj4gPiA+ID4gKwlzcGluX2xvY2soJmRybV9hdXhfZGV2X2xpc3RfbG9jayk7Cj4gPiA+ ID4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGF1eF9kZXYsICZkcm1fYXV4X2Rldl9saXN0LCBsaXN0 KSB7Cj4gPiA+ID4gKwkJaWYgKGF1eF9kZXYtPmluZGV4ID09IGluZGV4KQo+ID4gPiA+ICsJCQln b3RvIGZvdW5kOwo+ID4gPiA+ICsJfQo+ID4gPiA+ICsKPiA+ID4gPiArCWF1eF9kZXYgPSBOVUxM Owo+ID4gPiA+ICtmb3VuZDoKPiA+ID4gPiArCXNwaW5fdW5sb2NrKCZkcm1fYXV4X2Rldl9saXN0 X2xvY2spOwo+ID4gPiA+ICsJcmV0dXJuIGF1eF9kZXY7Cj4gPiA+ID4gK30KPiA+ID4gPiArCj4g PiA+ID4gK3N0YXRpYyBzdHJ1Y3QgZHJtX2F1eF9kZXYgKmRybV9hdXhfZGV2X2dldF9ieV9hdXgo c3RydWN0IGRybV9kcF9hdXggKmF1eCkKPiA+ID4gPiArewo+ID4gPiA+ICsJc3RydWN0IGRybV9h dXhfZGV2ICphdXhfZGV2Owo+ID4gPiA+ICsKPiA+ID4gPiArCXNwaW5fbG9jaygmZHJtX2F1eF9k ZXZfbGlzdF9sb2NrKTsKPiA+ID4gPiArCWxpc3RfZm9yX2VhY2hfZW50cnkoYXV4X2RldiwgJmRy bV9hdXhfZGV2X2xpc3QsIGxpc3QpIHsKPiA+ID4gPiArCQlpZiAoYXV4X2Rldi0+YXV4ID09IGF1 eCkKPiA+ID4gPiArCQkJZ290byBmb3VuZDsKPiA+ID4gPiArCX0KPiA+ID4gPiArCj4gPiA+ID4g KwlhdXhfZGV2ID0gTlVMTDsKPiA+ID4gPiArZm91bmQ6Cj4gPiA+ID4gKwlzcGluX3VubG9jaygm ZHJtX2F1eF9kZXZfbGlzdF9sb2NrKTsKPiA+ID4gPiArCXJldHVybiBhdXhfZGV2Owo+ID4gPiA+ ICt9Cj4gPiA+ID4gKwo+ID4gPiA+ICtzdGF0aWMgc3RydWN0IGRybV9hdXhfZGV2ICpnZXRfZnJl ZV9kcm1fYXV4X2RldihzdHJ1Y3QgZHJtX2RwX2F1eCAqYXV4KQo+ID4gPiA+ICt7Cj4gPiA+ID4g KwlzdHJ1Y3QgZHJtX2F1eF9kZXYgKmF1eF9kZXY7Cj4gPiA+ID4gKwlpbnQgaW5kZXg7Cj4gPiA+ ID4gKwo+ID4gPiA+ICsJc3Bpbl9sb2NrKCZkcm1fYXV4X2Rldl9saXN0X2xvY2spOwo+ID4gPiA+ ICsJaW5kZXggPSBkcm1fYXV4X2Rldl9jb3VudDsKPiA+ID4gPiArCXNwaW5fdW5sb2NrKCZkcm1f YXV4X2Rldl9saXN0X2xvY2spOwo+ID4gPiA+ICsJaWYgKGluZGV4ID49IERSTV9BVVhfTUlOT1JT KSB7Cj4gPiA+ID4gKwkJcHJpbnRrKEtFUk5fRVJSICJpMmMtZGV2OiBPdXQgb2YgZGV2aWNlIG1p bm9ycyAoJWQpXG4iLAo+ID4gPiA+ICsJCSAgICAgICBpbmRleCk7Cj4gPiA+ID4gKwkJcmV0dXJu IEVSUl9QVFIoLUVOT0RFVik7Cj4gPiA+ID4gKwl9Cj4gPiA+ID4gKwo+ID4gPiA+ICsJYXV4X2Rl diA9IGt6YWxsb2Moc2l6ZW9mKCphdXhfZGV2KSwgR0ZQX0tFUk5FTCk7Cj4gPiA+ID4gKwlpZiAo IWF1eF9kZXYpCj4gPiA+ID4gKwkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7Cj4gPiA+ID4gKwlh dXhfZGV2LT5hdXggPSBhdXg7Cj4gPiA+ID4gKwlhdXhfZGV2LT5pbmRleCA9IGluZGV4Owo+ID4g PiA+ICsKPiA+ID4gPiArCXNwaW5fbG9jaygmZHJtX2F1eF9kZXZfbGlzdF9sb2NrKTsKPiA+ID4g PiArCWRybV9hdXhfZGV2X2NvdW50Kys7Cj4gPiA+ID4gKwlsaXN0X2FkZF90YWlsKCZhdXhfZGV2 LT5saXN0LCAmZHJtX2F1eF9kZXZfbGlzdCk7Cj4gPiA+ID4gKwlzcGluX3VubG9jaygmZHJtX2F1 eF9kZXZfbGlzdF9sb2NrKTsKPiA+ID4gPiArCXJldHVybiBhdXhfZGV2Owo+ID4gPiA+ICt9Cj4g PiA+ID4gKwo+ID4gPiA+ICtzdGF0aWMgdm9pZCByZXR1cm5fZHJtX2F1eF9kZXYoc3RydWN0IGRy bV9hdXhfZGV2ICphdXhfZGV2KQo+ID4gPiA+ICt7Cj4gPiA+ID4gKwlzcGluX2xvY2soJmRybV9h dXhfZGV2X2xpc3RfbG9jayk7Cj4gPiA+ID4gKwlsaXN0X2RlbCgmYXV4X2Rldi0+bGlzdCk7Cj4g PiA+ID4gKwlzcGluX3VubG9jaygmZHJtX2F1eF9kZXZfbGlzdF9sb2NrKTsKPiA+ID4gPiArCWtm cmVlKGF1eF9kZXYpOwo+ID4gPiA+ICt9Cj4gPiA+ID4gKwo+ID4gPiA+ICtzdGF0aWMgc3NpemVf dCBuYW1lX3Nob3coc3RydWN0IGRldmljZSAqZGV2LAo+ID4gPiA+ICsJCQkgc3RydWN0IGRldmlj ZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKPiA+ID4gPiArewo+ID4gPiA+ICsJc3RydWN0 IGRybV9hdXhfZGV2ICphdXhfZGV2ID0gZHJtX2F1eF9kZXZfZ2V0X2J5X21pbm9yKE1JTk9SKGRl di0+ZGV2dCkpOwo+ID4gPiA+ICsKPiA+ID4gPiArCWlmICghYXV4X2RldikKPiA+ID4gPiArCQly ZXR1cm4gLUVOT0RFVjsKPiA+ID4gPiArCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVzXG4iLCBhdXhf ZGV2LT5hdXgtPm5hbWUpOwo+ID4gPiA+ICt9Cj4gPiA+ID4gK3N0YXRpYyBERVZJQ0VfQVRUUl9S TyhuYW1lKTsKPiA+ID4gPiArCj4gPiA+ID4gK3N0YXRpYyBzc2l6ZV90IGNvbm5lY3Rvcl9zaG93 KHN0cnVjdCBkZXZpY2UgKmRldiwKPiA+ID4gPiArCQkJICAgICAgc3RydWN0IGRldmljZV9hdHRy aWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKPiA+ID4gPiArewo+ID4gPiA+ICsJc3RydWN0IGRybV9h dXhfZGV2ICphdXhfZGV2ID0gZHJtX2F1eF9kZXZfZ2V0X2J5X21pbm9yKE1JTk9SKGRldi0+ZGV2 dCkpOwo+ID4gPiA+ICsJc3RydWN0IGRybV9kcF9hdXggKmF1eDsKPiA+ID4gPiArCXN0cnVjdCBk ZXZpY2UgKmNvbm5fZGV2Owo+ID4gPiA+ICsJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rv ciA9IE5VTEw7Cj4gPiA+ID4gKwo+ID4gPiA+ICsJaWYgKCFhdXhfZGV2KQo+ID4gPiA+ICsJCXJl dHVybiAtRU5PREVWOwo+ID4gPiA+ICsJYXV4ID0gYXV4X2Rldi0+YXV4Owo+ID4gPiA+ICsJY29u bl9kZXYgPSBhdXgtPmNvbm5lY3RvcjsKPiA+ID4gPiArCWlmICghY29ubl9kZXYpCj4gPiA+ID4g KwkJcmV0dXJuIHNwcmludGYoYnVmLCAidW5rbm93blxuIik7Cj4gPiA+ID4gKwo+ID4gPiA+ICsJ Y29ubmVjdG9yID0gZGV2X2dldF9kcnZkYXRhKGF1eC0+Y29ubmVjdG9yKTsKPiA+ID4gPiArCj4g PiA+ID4gKwlyZXR1cm4gc3ByaW50ZihidWYsICIlc1xuIiwgY29ubmVjdG9yLT5uYW1lKTsKPiA+ ID4gPiArfQo+ID4gPiA+ICtzdGF0aWMgREVWSUNFX0FUVFJfUk8oY29ubmVjdG9yKTsKPiA+ID4g PiArCj4gPiA+ID4gK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICpkcm1fYXV4X2F0dHJzW10gPSB7 Cj4gPiA+ID4gKwkmZGV2X2F0dHJfbmFtZS5hdHRyLAo+ID4gPiA+ICsJJmRldl9hdHRyX2Nvbm5l Y3Rvci5hdHRyLAo+ID4gPiA+ICsJTlVMTCwKPiA+ID4gPiArfTsKPiA+ID4gPiArQVRUUklCVVRF X0dST1VQUyhkcm1fYXV4KTsKPiA+ID4gPiArCj4gPiA+ID4gK3N0YXRpYyBpbnQgYXV4ZGV2X29w ZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpCj4gPiA+ID4gK3sKPiA+ ID4gPiArCXVuc2lnbmVkIGludCBtaW5vciA9IGltaW5vcihpbm9kZSk7Cj4gPiA+ID4gKwlzdHJ1 Y3QgZHJtX2F1eF9kZXYgKmF1eF9kZXY7Cj4gPiA+ID4gKwo+ID4gPiA+ICsJYXV4X2RldiA9IGRy bV9hdXhfZGV2X2dldF9ieV9taW5vcihtaW5vcik7Cj4gPiA+ID4gKwlpZiAoIWF1eF9kZXYpCj4g PiA+ID4gKwkJcmV0dXJuIC1FTk9ERVY7Cj4gPiA+ID4gKwo+ID4gPiA+ICsJZmlsZS0+cHJpdmF0 ZV9kYXRhID0gYXV4X2RldjsKPiA+ID4gPiArCXJldHVybiAwOwo+ID4gPiA+ICt9Cj4gPiA+ID4g Kwo+ID4gPiA+ICtzdGF0aWMgc3NpemVfdCBhdXhkZXZfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwg Y2hhciBfX3VzZXIgKmJ1Ziwgc2l6ZV90IGNvdW50LAo+ID4gPiA+ICsJCQkgICBsb2ZmX3QgKm9m ZnNldCkKPiA+ID4gPiArewo+ID4gPiA+ICsJY2hhciAqbG9jYWxidWY7Cj4gPiA+ID4gKwlzc2l6 ZV90IHJlczsKPiA+ID4gPiArCXN0cnVjdCBkcm1fYXV4X2RldiAqYXV4X2RldiA9IGZpbGUtPnBy aXZhdGVfZGF0YTsKPiA+ID4gPiArCj4gPiA+ID4gKwlsb2NhbGJ1ZiA9IG1lbWR1cF91c2VyKGJ1 ZiwgY291bnQpOwo+ID4gPiA+ICsJaWYgKElTX0VSUihsb2NhbGJ1ZikpCj4gPiA+ID4gKwkJcmV0 dXJuIFBUUl9FUlIoYnVmKTsKPiA+ID4gPiArCj4gPiA+ID4gKwlyZXMgPSBkcm1fZHBfZHBjZF9y ZWFkKGF1eF9kZXYtPmF1eCwgKm9mZnNldCwgbG9jYWxidWYsIGNvdW50KTsKPiA+ID4gPiArCWlm IChyZXMgPCAwKQo+ID4gPiA+ICsJCWdvdG8gZmluaXNoOwo+ID4gPiAKPiA+ID4gcmVhZC93cml0 ZSB3aWxsIG5lZWQgdG8gZG8gdGhlIGFjY2VzcyBpbiAxNiBieXRlIGNodW5rcy4gVGhhdCdzIHRo ZSBtYXgKPiA+ID4gYW1vdW50IG9mIGRhdGEgdGhhdCBjYW4gYmUgdHJhbnNmZXJyZWQgd2l0aCBh IHNpbmdsZSBBVVggb3BlcmF0aW9uLiBJCj4gPiA+IHN1cHBvc2UgdGhhdCB3b3VsZCBhbHNvIGF2 b2lkIHRoZSBuZWVkIGZvciBhbGxvY2F0aW5nIGxhcmdlIGJ1ZmZlcnMKPiA+ID4gc2luY2UgeW91 IGNhbiBqdXN0IGhhdmUgYSAxNiBieXRlIGJ1ZmZlciBvbiB0aGUgc3RhY2sgYW5kIGtlZXAgcmV1 c2luZwo+ID4gPiBpdCB3aGlsZSB5b3UgaXRlcmF0ZSB0aHJvdWdoIHRoZSB0b3RhbCBjb3VudC4g SSdtIG5vdCBzdXJlIHdoYXQgYXJlCj4gPiA+IHRoZSBleHBlY3RlZCBzZW1hbnRpY3Mgb2YgcmVh ZC93cml0ZSBpZiB5b3UgZG8gaXQgaW4gY2h1bmtzIGFuZCBoaXQKPiA+ID4gYSBjb3B5X3t0byxm cm9tfV91c2VyKCkgZmFpbHVyZSBzb21ld2hlcmUgZG93biB0aGUgbGluZS4gQnV0IEkgc3VwcG9z ZQo+ID4gPiBhY2Nlc3Nfb2soKSB1cGZyb250IGZvciB0aGUgd2hvbGUgdXNlciBidWZmZXIgY291 bGQgYXZvaWQgdGhhdCBpc3N1ZS4KPiA+IAo+ID4gSWlyYyBzaG9ydCByZWFkcyBhcmUgb2sgaW4g YWxsIGNhc2VzLCBzbyB3ZSBjb3VsZCBldmVuIHB1bnQgdGhlIHJlc3RhcnRpbmcKPiA+IHRvIHVz ZXJzcGFjZSBieSBqdXN0IGRvaW5nIHNob3J0IHJlYWRzL3dyaXRlcyAobGlrZSBzb2NrZXRzIGRv KS4KPiAKPiBZZWFoLCBzaG9ydCB3cml0ZXMgZHVlIHRvIC1FRkFVTFQgc291bmQgbW9yZSBkYW5n ZXJvdXMgdGhhbiBzaG9ydCByZWFkcy4KPiBCdXQgSSdtIG5vdCBzdXJlIHRoZXJlJ3MgYW55IHBv aW50IGluIGFsbG93aW5nIHNob3J0IHJlYWRzIGVpdGhlciBpbgo+IHRoaXMgY2FzZSwgc28ganVz dCByZXR1cm5pbmcgdGhlIGVycm9yIHVwZnJvbnQgaWYgYWNjZXNzX29rKCkgY29tcGxhaW5zCj4g c2VlbXMgbGlrZSBhIHNhbmUgb3B0aW9uIHRvIG1lLgoKYWNjZXNzX29rIF9vbmx5XyBkb2VzIHN0 YXRpYyBjaGVja3MgKG9uIHg4NiBpdCBvbmx5IGNoZWNrcyB0aGF0IGl0J3MgYQp1c2Vyc3BhY2Ug YWRkcmVzcykuIFdoaWNoIG1lYW5zIGFueSBraW5kIG9mIHJlYWwgZmF1bHRzIHdpbGwgb25seSBo YXBwZW4KbGF0ZXIgb24gaW4gdGhlIGFjdHVhbCBjb3B5X3RvL2Zyb21fdXNlci4gSSdkIHNheSB3 ZSBjYW4gZ28gbWVoIGlmIHRoYXQKaGFwcGVucyAtIGl0J3MgZ3VhcmFudGVlZCB0byBiZSB1c2Vy c3BhY2UgZG9pbmcgc29tZXRoaW5nIHNpbGx5IHNpbmNlIHdlCmRvbid0IG5lZWQgdG8gaG9sZCBh bnkgb2YgdGhlIG1tIGxvY2tzIDstKQotRGFuaWVsCi0tIApEYW5pZWwgVmV0dGVyClNvZnR3YXJl IEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgpodHRwOi8vYmxvZy5mZndsbC5jaApfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGlu ZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=