From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= 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 16:25:17 +0300 Message-ID: <20150922132517.GP26517@intel.com> 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> <20150922125924.GM3383@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id 05B9A7207F for ; Tue, 22 Sep 2015 06:25:20 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20150922125924.GM3383@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Daniel Vetter Cc: dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gVHVlLCBTZXAgMjIsIDIwMTUgYXQgMDI6NTk6MjRQTSArMDIwMCwgRGFuaWVsIFZldHRlciB3 cm90ZToKPiBPbiBUdWUsIFNlcCAyMiwgMjAxNSBhdCAwMzozNToxM1BNICswMzAwLCBWaWxsZSBT eXJqw6Rsw6Qgd3JvdGU6Cj4gPiBPbiBUdWUsIFNlcCAyMiwgMjAxNSBhdCAwMjoxNzo1MVBNICsw MjAwLCBEYW5pZWwgVmV0dGVyIHdyb3RlOgo+ID4gPiBPbiBUdWUsIFNlcCAyMiwgMjAxNSBhdCAw MzowMDo1NFBNICswMzAwLCBWaWxsZSBTeXJqw6Rsw6Qgd3JvdGU6Cj4gPiA+ID4gT24gVHVlLCBT ZXAgMTUsIDIwMTUgYXQgMDQ6NTU6MDRQTSAtMDcwMCwgUmFmYWVsIEFudG9nbm9sbGkgd3JvdGU6 Cj4gPiA+ID4gPiBUaGlzIG1vZHVsZSBpcyBoZWF2aWx5IGJhc2VkIG9uIGkyYy1kZXYuIE9uY2Ug bG9hZGVkLCBpdCBwcm92aWRlcyBvbmUKPiA+ID4gPiA+IGRldiBub2RlIHBlciBEUCBBVVggY2hh bm5lbCwgbmFtZWQgZHJtX2F1eC1OLgo+ID4gPiA+ID4gCj4gPiA+ID4gPiBJdCdzIHBvc3NpYmxl IHRvIGtub3cgd2hpY2ggY29ubmVjdG9yIG93bnMgdGhpcyBhdXggY2hhbm5lbCBieSBsb29raW5n Cj4gPiA+ID4gPiBhdCB0aGUgcmVzcGVjdGl2ZSBzeXNmcyAvc3lzL2NsYXNzL2RybV9hdXgtZGV2 L2RybV9hdXgtTi9jb25uZWN0b3IsIGlmCj4gPiA+ID4gPiB0aGUgY29ubmVjdG9yIGRldmljZSBw b2ludGVyIHdhcyBjb3JyZWN0bHkgc2V0IGluIHRoZSBhdXggaGVscGVyIHN0cnVjdC4KPiA+ID4g PiA+IAo+ID4gPiA+ID4gVHdvIG1haW4gb3BlcmF0aW9ucyBhcmUgcHJvdmlkZWQgb24gdGhlIHJl Z2lzdGVyczogcmVhZCBhbmQgd3JpdGUuIFRoZQo+ID4gPiA+ID4gYWRkcmVzcyBvZiB0aGUgcmVn aXN0ZXIgdG8gYmUgcmVhZCBvciB3cml0dGVuIGlzIGdpdmVuIHVzaW5nIGxzZWVrLgo+ID4gPiA+ ID4gUmVhZGluZyBvciB3cml0aW5nIGRvZXMgbm90IHVwZGF0ZSB0aGUgb2Zmc2V0IG9mIHRoZSBm aWxlLgo+ID4gPiA+ID4gCj4gPiA+ID4gPiBTaWduZWQtb2ZmLWJ5OiBSYWZhZWwgQW50b2dub2xs aSA8cmFmYWVsLmFudG9nbm9sbGlAaW50ZWwuY29tPgo+ID4gPiA+ID4gLS0tCj4gPiA+ID4gPiAg ZHJpdmVycy9ncHUvZHJtL0tjb25maWcgICAgICAgfCAgIDQgKwo+ID4gPiA+ID4gIGRyaXZlcnMv Z3B1L2RybS9NYWtlZmlsZSAgICAgIHwgICAxICsKPiA+ID4gPiA+ICBkcml2ZXJzL2dwdS9kcm0v ZHJtX2F1eC1kZXYuYyB8IDMyNiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysKPiA+ID4gPiA+ICAzIGZpbGVzIGNoYW5nZWQsIDMzMSBpbnNlcnRpb25zKCspCj4gPiA+ ID4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9kcm1fYXV4LWRldi5jCj4g PiA+ID4gPiAKPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZyBi L2RyaXZlcnMvZ3B1L2RybS9LY29uZmlnCj4gPiA+ID4gPiBpbmRleCAxYTBhOGRmLi5lYWU4NDdj IDEwMDY0NAo+ID4gPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL0tjb25maWcKPiA+ID4gPiA+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9LY29uZmlnCj4gPiA+ID4gPiBAQCAtMjUsNiArMjUsMTAg QEAgY29uZmlnIERSTV9NSVBJX0RTSQo+ID4gPiA+ID4gIAlib29sCj4gPiA+ID4gPiAgCWRlcGVu ZHMgb24gRFJNCj4gPiA+ID4gPiAgCj4gPiA+ID4gPiArY29uZmlnIERSTV9BVVhfQ0hBUkRFVgo+ ID4gPiA+ID4gKwl0cmlzdGF0ZSAiRFJNIERQIEFVWCBJbnRlcmZhY2UiCj4gPiA+ID4gPiArCWRl cGVuZHMgb24gRFJNCj4gPiA+ID4gPiArCj4gPiA+ID4gPiAgY29uZmlnIERSTV9LTVNfSEVMUEVS Cj4gPiA+ID4gPiAgCXRyaXN0YXRlCj4gPiA+ID4gPiAgCWRlcGVuZHMgb24gRFJNCj4gPiA+ID4g PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJt L01ha2VmaWxlCj4gPiA+ID4gPiBpbmRleCA0NWU3NzE5Li5hMWE5NDMwNiAxMDA2NDQKPiA+ID4g PiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZQo+ID4gPiA+ID4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL01ha2VmaWxlCj4gPiA+ID4gPiBAQCAtMzIsNiArMzIsNyBAQCBDRkxBR1NfZHJt X3RyYWNlX3BvaW50cy5vIDo9IC1JJChzcmMpCj4gPiA+ID4gPiAgCj4gPiA+ID4gPiAgb2JqLSQo Q09ORklHX0RSTSkJKz0gZHJtLm8KPiA+ID4gPiA+ICBvYmotJChDT05GSUdfRFJNX01JUElfRFNJ KSArPSBkcm1fbWlwaV9kc2kubwo+ID4gPiA+ID4gK29iai0kKENPTkZJR19EUk1fQVVYX0NIQVJE RVYpICs9IGRybV9hdXgtZGV2Lm8KPiA+ID4gPiA+ICBvYmotJChDT05GSUdfRFJNX1RUTSkJKz0g dHRtLwo+ID4gPiA+ID4gIG9iai0kKENPTkZJR19EUk1fVERGWCkJKz0gdGRmeC8KPiA+ID4gPiA+ ICBvYmotJChDT05GSUdfRFJNX1IxMjgpCSs9IHIxMjgvCj4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2RybV9hdXgtZGV2LmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2F1eC1k ZXYuYwo+ID4gPiA+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiA+ID4gPiA+IGluZGV4IDAwMDAw MDAuLmZjYzMzNGEKPiA+ID4gPiA+IC0tLSAvZGV2L251bGwKPiA+ID4gPiA+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9kcm1fYXV4LWRldi5jCj4gPiA+ID4gPiBAQCAtMCwwICsxLDMyNiBAQAo+ID4g PiA+ID4gKy8qCj4gPiA+ID4gPiArICogQ29weXJpZ2h0IMKpIDIwMTUgSW50ZWwgQ29ycG9yYXRp b24KPiA+ID4gPiA+ICsgKgo+ID4gPiA+ID4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50 ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCj4gPiA+ID4gPiAr ICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmls ZXMgKHRoZSAiU29mdHdhcmUiKSwKPiA+ID4gPiA+ICsgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2Fy ZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCj4gPiA+ ID4gPiArICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gs IGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCj4gPiA+ID4gPiArICogYW5kL29yIHNlbGwgY29waWVz IG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCj4gPiA+ ID4gPiArICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBm b2xsb3dpbmcgY29uZGl0aW9uczoKPiA+ID4gPiA+ICsgKgo+ID4gPiA+ID4gKyAqIFRoZSBhYm92 ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcg dGhlIG5leHQKPiA+ID4gPiA+ICsgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFs bCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCj4gPiA+ID4gPiArICogU29m dHdhcmUuCj4gPiA+ID4gPiArICoKPiA+ID4gPiA+ICsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklE RUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgo+ID4g PiA+ID4gKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJB TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAo+ID4gPiA+ID4gKyAqIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAo+ ID4gPiA+ID4gKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBG T1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCj4gPiA+ID4gPiArICogTElBQklMSVRZLCBX SEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJ TkcKPiA+ID4gPiA+ICsgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBT T0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCj4gPiA+ID4gPiArICogSU4gVEhF IFNPRlRXQVJFLgo+ID4gPiA+ID4gKyAqCj4gPiA+ID4gPiArICogQXV0aG9yczoKPiA+ID4gPiA+ ICsgKiAgICBSYWZhZWwgQW50b2dub2xsaSA8cmFmYWVsLmFudG9nbm9sbGlAaW50ZWwuY29tPgo+ ID4gPiA+ID4gKyAqCj4gPiA+ID4gPiArICovCj4gPiA+ID4gPiArCj4gPiA+ID4gPiArI2luY2x1 ZGUgPGxpbnV4L2RldmljZS5oPgo+ID4gPiA+ID4gKyNpbmNsdWRlIDxsaW51eC9mcy5oPgo+ID4g PiA+ID4gKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+Cj4gPiA+ID4gPiArI2luY2x1ZGUgPGxpbnV4 L2luaXQuaD4KPiA+ID4gPiA+ICsjaW5jbHVkZSA8bGludXgva2VybmVsLmg+Cj4gPiA+ID4gPiAr I2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgo+ID4gPiA+ID4gKyNpbmNsdWRlIDxhc20vdWFjY2Vz cy5oPgo+ID4gPiA+ID4gKyNpbmNsdWRlIDxkcm0vZHJtX2RwX2hlbHBlci5oPgo+ID4gPiA+ID4g KyNpbmNsdWRlIDxkcm0vZHJtX2NydGMuaD4KPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICtzdHJ1Y3Qg ZHJtX2F1eF9kZXYgewo+ID4gPiA+ID4gKwlzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7Cj4gPiA+ID4g PiArCXVuc2lnbmVkIGluZGV4Owo+ID4gPiA+ID4gKwlzdHJ1Y3QgZHJtX2RwX2F1eCAqYXV4Owo+ ID4gPiA+ID4gKwlzdHJ1Y3QgZGV2aWNlICpkZXY7Cj4gPiA+ID4gPiArfTsKPiA+ID4gPiA+ICsK PiA+ID4gPiA+ICsjZGVmaW5lIERSTV9BVVhfTUlOT1JTCTI1Ngo+ID4gPiA+ID4gK3N0YXRpYyBp bnQgZHJtX2F1eF9kZXZfY291bnQgPSAwOwo+ID4gPiA+ID4gK3N0YXRpYyBMSVNUX0hFQUQoZHJt X2F1eF9kZXZfbGlzdCk7Cj4gPiA+ID4gPiArc3RhdGljIERFRklORV9TUElOTE9DSyhkcm1fYXV4 X2Rldl9saXN0X2xvY2spOwo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gK3N0YXRpYyBzdHJ1Y3QgZHJt X2F1eF9kZXYgKmRybV9hdXhfZGV2X2dldF9ieV9taW5vcih1bnNpZ25lZCBpbmRleCkKPiA+ID4g PiA+ICt7Cj4gPiA+ID4gPiArCXN0cnVjdCBkcm1fYXV4X2RldiAqYXV4X2RldjsKPiA+ID4gPiA+ ICsKPiA+ID4gPiA+ICsJc3Bpbl9sb2NrKCZkcm1fYXV4X2Rldl9saXN0X2xvY2spOwo+ID4gPiA+ ID4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGF1eF9kZXYsICZkcm1fYXV4X2Rldl9saXN0LCBsaXN0 KSB7Cj4gPiA+ID4gPiArCQlpZiAoYXV4X2Rldi0+aW5kZXggPT0gaW5kZXgpCj4gPiA+ID4gPiAr CQkJZ290byBmb3VuZDsKPiA+ID4gPiA+ICsJfQo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKwlhdXhf ZGV2ID0gTlVMTDsKPiA+ID4gPiA+ICtmb3VuZDoKPiA+ID4gPiA+ICsJc3Bpbl91bmxvY2soJmRy bV9hdXhfZGV2X2xpc3RfbG9jayk7Cj4gPiA+ID4gPiArCXJldHVybiBhdXhfZGV2Owo+ID4gPiA+ ID4gK30KPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICtzdGF0aWMgc3RydWN0IGRybV9hdXhfZGV2ICpk cm1fYXV4X2Rldl9nZXRfYnlfYXV4KHN0cnVjdCBkcm1fZHBfYXV4ICphdXgpCj4gPiA+ID4gPiAr ewo+ID4gPiA+ID4gKwlzdHJ1Y3QgZHJtX2F1eF9kZXYgKmF1eF9kZXY7Cj4gPiA+ID4gPiArCj4g PiA+ID4gPiArCXNwaW5fbG9jaygmZHJtX2F1eF9kZXZfbGlzdF9sb2NrKTsKPiA+ID4gPiA+ICsJ bGlzdF9mb3JfZWFjaF9lbnRyeShhdXhfZGV2LCAmZHJtX2F1eF9kZXZfbGlzdCwgbGlzdCkgewo+ ID4gPiA+ID4gKwkJaWYgKGF1eF9kZXYtPmF1eCA9PSBhdXgpCj4gPiA+ID4gPiArCQkJZ290byBm b3VuZDsKPiA+ID4gPiA+ICsJfQo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKwlhdXhfZGV2ID0gTlVM TDsKPiA+ID4gPiA+ICtmb3VuZDoKPiA+ID4gPiA+ICsJc3Bpbl91bmxvY2soJmRybV9hdXhfZGV2 X2xpc3RfbG9jayk7Cj4gPiA+ID4gPiArCXJldHVybiBhdXhfZGV2Owo+ID4gPiA+ID4gK30KPiA+ ID4gPiA+ICsKPiA+ID4gPiA+ICtzdGF0aWMgc3RydWN0IGRybV9hdXhfZGV2ICpnZXRfZnJlZV9k cm1fYXV4X2RldihzdHJ1Y3QgZHJtX2RwX2F1eCAqYXV4KQo+ID4gPiA+ID4gK3sKPiA+ID4gPiA+ ICsJc3RydWN0IGRybV9hdXhfZGV2ICphdXhfZGV2Owo+ID4gPiA+ID4gKwlpbnQgaW5kZXg7Cj4g PiA+ID4gPiArCj4gPiA+ID4gPiArCXNwaW5fbG9jaygmZHJtX2F1eF9kZXZfbGlzdF9sb2NrKTsK PiA+ID4gPiA+ICsJaW5kZXggPSBkcm1fYXV4X2Rldl9jb3VudDsKPiA+ID4gPiA+ICsJc3Bpbl91 bmxvY2soJmRybV9hdXhfZGV2X2xpc3RfbG9jayk7Cj4gPiA+ID4gPiArCWlmIChpbmRleCA+PSBE Uk1fQVVYX01JTk9SUykgewo+ID4gPiA+ID4gKwkJcHJpbnRrKEtFUk5fRVJSICJpMmMtZGV2OiBP dXQgb2YgZGV2aWNlIG1pbm9ycyAoJWQpXG4iLAo+ID4gPiA+ID4gKwkJICAgICAgIGluZGV4KTsK PiA+ID4gPiA+ICsJCXJldHVybiBFUlJfUFRSKC1FTk9ERVYpOwo+ID4gPiA+ID4gKwl9Cj4gPiA+ ID4gPiArCj4gPiA+ID4gPiArCWF1eF9kZXYgPSBremFsbG9jKHNpemVvZigqYXV4X2RldiksIEdG UF9LRVJORUwpOwo+ID4gPiA+ID4gKwlpZiAoIWF1eF9kZXYpCj4gPiA+ID4gPiArCQlyZXR1cm4g RVJSX1BUUigtRU5PTUVNKTsKPiA+ID4gPiA+ICsJYXV4X2Rldi0+YXV4ID0gYXV4Owo+ID4gPiA+ ID4gKwlhdXhfZGV2LT5pbmRleCA9IGluZGV4Owo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKwlzcGlu X2xvY2soJmRybV9hdXhfZGV2X2xpc3RfbG9jayk7Cj4gPiA+ID4gPiArCWRybV9hdXhfZGV2X2Nv dW50Kys7Cj4gPiA+ID4gPiArCWxpc3RfYWRkX3RhaWwoJmF1eF9kZXYtPmxpc3QsICZkcm1fYXV4 X2Rldl9saXN0KTsKPiA+ID4gPiA+ICsJc3Bpbl91bmxvY2soJmRybV9hdXhfZGV2X2xpc3RfbG9j ayk7Cj4gPiA+ID4gPiArCXJldHVybiBhdXhfZGV2Owo+ID4gPiA+ID4gK30KPiA+ID4gPiA+ICsK PiA+ID4gPiA+ICtzdGF0aWMgdm9pZCByZXR1cm5fZHJtX2F1eF9kZXYoc3RydWN0IGRybV9hdXhf ZGV2ICphdXhfZGV2KQo+ID4gPiA+ID4gK3sKPiA+ID4gPiA+ICsJc3Bpbl9sb2NrKCZkcm1fYXV4 X2Rldl9saXN0X2xvY2spOwo+ID4gPiA+ID4gKwlsaXN0X2RlbCgmYXV4X2Rldi0+bGlzdCk7Cj4g PiA+ID4gPiArCXNwaW5fdW5sb2NrKCZkcm1fYXV4X2Rldl9saXN0X2xvY2spOwo+ID4gPiA+ID4g KwlrZnJlZShhdXhfZGV2KTsKPiA+ID4gPiA+ICt9Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArc3Rh dGljIHNzaXplX3QgbmFtZV9zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwKPiA+ID4gPiA+ICsJCQkg c3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKPiA+ID4gPiA+ICt7Cj4g PiA+ID4gPiArCXN0cnVjdCBkcm1fYXV4X2RldiAqYXV4X2RldiA9IGRybV9hdXhfZGV2X2dldF9i eV9taW5vcihNSU5PUihkZXYtPmRldnQpKTsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ICsJaWYgKCFh dXhfZGV2KQo+ID4gPiA+ID4gKwkJcmV0dXJuIC1FTk9ERVY7Cj4gPiA+ID4gPiArCXJldHVybiBz cHJpbnRmKGJ1ZiwgIiVzXG4iLCBhdXhfZGV2LT5hdXgtPm5hbWUpOwo+ID4gPiA+ID4gK30KPiA+ ID4gPiA+ICtzdGF0aWMgREVWSUNFX0FUVFJfUk8obmFtZSk7Cj4gPiA+ID4gPiArCj4gPiA+ID4g PiArc3RhdGljIHNzaXplX3QgY29ubmVjdG9yX3Nob3coc3RydWN0IGRldmljZSAqZGV2LAo+ID4g PiA+ID4gKwkJCSAgICAgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYp Cj4gPiA+ID4gPiArewo+ID4gPiA+ID4gKwlzdHJ1Y3QgZHJtX2F1eF9kZXYgKmF1eF9kZXYgPSBk cm1fYXV4X2Rldl9nZXRfYnlfbWlub3IoTUlOT1IoZGV2LT5kZXZ0KSk7Cj4gPiA+ID4gPiArCXN0 cnVjdCBkcm1fZHBfYXV4ICphdXg7Cj4gPiA+ID4gPiArCXN0cnVjdCBkZXZpY2UgKmNvbm5fZGV2 Owo+ID4gPiA+ID4gKwlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yID0gTlVMTDsKPiA+ ID4gPiA+ICsKPiA+ID4gPiA+ICsJaWYgKCFhdXhfZGV2KQo+ID4gPiA+ID4gKwkJcmV0dXJuIC1F Tk9ERVY7Cj4gPiA+ID4gPiArCWF1eCA9IGF1eF9kZXYtPmF1eDsKPiA+ID4gPiA+ICsJY29ubl9k ZXYgPSBhdXgtPmNvbm5lY3RvcjsKPiA+ID4gPiA+ICsJaWYgKCFjb25uX2RldikKPiA+ID4gPiA+ ICsJCXJldHVybiBzcHJpbnRmKGJ1ZiwgInVua25vd25cbiIpOwo+ID4gPiA+ID4gKwo+ID4gPiA+ ID4gKwljb25uZWN0b3IgPSBkZXZfZ2V0X2RydmRhdGEoYXV4LT5jb25uZWN0b3IpOwo+ID4gPiA+ ID4gKwo+ID4gPiA+ID4gKwlyZXR1cm4gc3ByaW50ZihidWYsICIlc1xuIiwgY29ubmVjdG9yLT5u YW1lKTsKPiA+ID4gPiA+ICt9Cj4gPiA+ID4gPiArc3RhdGljIERFVklDRV9BVFRSX1JPKGNvbm5l Y3Rvcik7Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmRy bV9hdXhfYXR0cnNbXSA9IHsKPiA+ID4gPiA+ICsJJmRldl9hdHRyX25hbWUuYXR0ciwKPiA+ID4g PiA+ICsJJmRldl9hdHRyX2Nvbm5lY3Rvci5hdHRyLAo+ID4gPiA+ID4gKwlOVUxMLAo+ID4gPiA+ ID4gK307Cj4gPiA+ID4gPiArQVRUUklCVVRFX0dST1VQUyhkcm1fYXV4KTsKPiA+ID4gPiA+ICsK PiA+ID4gPiA+ICtzdGF0aWMgaW50IGF1eGRldl9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0 cnVjdCBmaWxlICpmaWxlKQo+ID4gPiA+ID4gK3sKPiA+ID4gPiA+ICsJdW5zaWduZWQgaW50IG1p bm9yID0gaW1pbm9yKGlub2RlKTsKPiA+ID4gPiA+ICsJc3RydWN0IGRybV9hdXhfZGV2ICphdXhf ZGV2Owo+ID4gPiA+ID4gKwo+ID4gPiA+ID4gKwlhdXhfZGV2ID0gZHJtX2F1eF9kZXZfZ2V0X2J5 X21pbm9yKG1pbm9yKTsKPiA+ID4gPiA+ICsJaWYgKCFhdXhfZGV2KQo+ID4gPiA+ID4gKwkJcmV0 dXJuIC1FTk9ERVY7Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArCWZpbGUtPnByaXZhdGVfZGF0YSA9 IGF1eF9kZXY7Cj4gPiA+ID4gPiArCXJldHVybiAwOwo+ID4gPiA+ID4gK30KPiA+ID4gPiA+ICsK PiA+ID4gPiA+ICtzdGF0aWMgc3NpemVfdCBhdXhkZXZfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwg Y2hhciBfX3VzZXIgKmJ1Ziwgc2l6ZV90IGNvdW50LAo+ID4gPiA+ID4gKwkJCSAgIGxvZmZfdCAq b2Zmc2V0KQo+ID4gPiA+ID4gK3sKPiA+ID4gPiA+ICsJY2hhciAqbG9jYWxidWY7Cj4gPiA+ID4g PiArCXNzaXplX3QgcmVzOwo+ID4gPiA+ID4gKwlzdHJ1Y3QgZHJtX2F1eF9kZXYgKmF1eF9kZXYg PSBmaWxlLT5wcml2YXRlX2RhdGE7Cj4gPiA+ID4gPiArCj4gPiA+ID4gPiArCWxvY2FsYnVmID0g bWVtZHVwX3VzZXIoYnVmLCBjb3VudCk7Cj4gPiA+ID4gPiArCWlmIChJU19FUlIobG9jYWxidWYp KQo+ID4gPiA+ID4gKwkJcmV0dXJuIFBUUl9FUlIoYnVmKTsKPiA+ID4gPiA+ICsKPiA+ID4gPiA+ ICsJcmVzID0gZHJtX2RwX2RwY2RfcmVhZChhdXhfZGV2LT5hdXgsICpvZmZzZXQsIGxvY2FsYnVm LCBjb3VudCk7Cj4gPiA+ID4gPiArCWlmIChyZXMgPCAwKQo+ID4gPiA+ID4gKwkJZ290byBmaW5p c2g7Cj4gPiA+ID4gCj4gPiA+ID4gcmVhZC93cml0ZSB3aWxsIG5lZWQgdG8gZG8gdGhlIGFjY2Vz cyBpbiAxNiBieXRlIGNodW5rcy4gVGhhdCdzIHRoZSBtYXgKPiA+ID4gPiBhbW91bnQgb2YgZGF0 YSB0aGF0IGNhbiBiZSB0cmFuc2ZlcnJlZCB3aXRoIGEgc2luZ2xlIEFVWCBvcGVyYXRpb24uIEkK PiA+ID4gPiBzdXBwb3NlIHRoYXQgd291bGQgYWxzbyBhdm9pZCB0aGUgbmVlZCBmb3IgYWxsb2Nh dGluZyBsYXJnZSBidWZmZXJzCj4gPiA+ID4gc2luY2UgeW91IGNhbiBqdXN0IGhhdmUgYSAxNiBi eXRlIGJ1ZmZlciBvbiB0aGUgc3RhY2sgYW5kIGtlZXAgcmV1c2luZwo+ID4gPiA+IGl0IHdoaWxl IHlvdSBpdGVyYXRlIHRocm91Z2ggdGhlIHRvdGFsIGNvdW50LiBJJ20gbm90IHN1cmUgd2hhdCBh cmUKPiA+ID4gPiB0aGUgZXhwZWN0ZWQgc2VtYW50aWNzIG9mIHJlYWQvd3JpdGUgaWYgeW91IGRv IGl0IGluIGNodW5rcyBhbmQgaGl0Cj4gPiA+ID4gYSBjb3B5X3t0byxmcm9tfV91c2VyKCkgZmFp bHVyZSBzb21ld2hlcmUgZG93biB0aGUgbGluZS4gQnV0IEkgc3VwcG9zZQo+ID4gPiA+IGFjY2Vz c19vaygpIHVwZnJvbnQgZm9yIHRoZSB3aG9sZSB1c2VyIGJ1ZmZlciBjb3VsZCBhdm9pZCB0aGF0 IGlzc3VlLgo+ID4gPiAKPiA+ID4gSWlyYyBzaG9ydCByZWFkcyBhcmUgb2sgaW4gYWxsIGNhc2Vz LCBzbyB3ZSBjb3VsZCBldmVuIHB1bnQgdGhlIHJlc3RhcnRpbmcKPiA+ID4gdG8gdXNlcnNwYWNl IGJ5IGp1c3QgZG9pbmcgc2hvcnQgcmVhZHMvd3JpdGVzIChsaWtlIHNvY2tldHMgZG8pLgo+ID4g Cj4gPiBZZWFoLCBzaG9ydCB3cml0ZXMgZHVlIHRvIC1FRkFVTFQgc291bmQgbW9yZSBkYW5nZXJv dXMgdGhhbiBzaG9ydCByZWFkcy4KPiA+IEJ1dCBJJ20gbm90IHN1cmUgdGhlcmUncyBhbnkgcG9p bnQgaW4gYWxsb3dpbmcgc2hvcnQgcmVhZHMgZWl0aGVyIGluCj4gPiB0aGlzIGNhc2UsIHNvIGp1 c3QgcmV0dXJuaW5nIHRoZSBlcnJvciB1cGZyb250IGlmIGFjY2Vzc19vaygpIGNvbXBsYWlucwo+ ID4gc2VlbXMgbGlrZSBhIHNhbmUgb3B0aW9uIHRvIG1lLgo+IAo+IGFjY2Vzc19vayBfb25seV8g ZG9lcyBzdGF0aWMgY2hlY2tzIChvbiB4ODYgaXQgb25seSBjaGVja3MgdGhhdCBpdCdzIGEKPiB1 c2Vyc3BhY2UgYWRkcmVzcykuIFdoaWNoIG1lYW5zIGFueSBraW5kIG9mIHJlYWwgZmF1bHRzIHdp bGwgb25seSBoYXBwZW4KPiBsYXRlciBvbiBpbiB0aGUgYWN0dWFsIGNvcHlfdG8vZnJvbV91c2Vy LiBJJ2Qgc2F5IHdlIGNhbiBnbyBtZWggaWYgdGhhdAo+IGhhcHBlbnMgLSBpdCdzIGd1YXJhbnRl ZWQgdG8gYmUgdXNlcnNwYWNlIGRvaW5nIHNvbWV0aGluZyBzaWxseSBzaW5jZSB3ZQo+IGRvbid0 IG5lZWQgdG8gaG9sZCBhbnkgb2YgdGhlIG1tIGxvY2tzIDstKQoKSG1tLCB0cnVlLiBTbyBJIGd1 ZXNzIG9uIC1FRkFVTFQgd2Ugc2hvdWxkOgoKaWYgKGNvcHlfe3RvLGZyb219X3VzZXIoKSkKCXJl dHVybiBudW1fYnl0ZXNfcHJvY2Vzc2VkID8gbnVtX2J5dGVzX3Byb2Nlc3NlZCA6IC1FRkFVTFQ7 CgpTb3VuZCByZWFzb25hYmxlPwoKLS0gClZpbGxlIFN5cmrDpGzDpApJbnRlbCBPVEMKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxp bmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK