From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rafael Antognolli Subject: Re: [PATCH RFC v2 3/3] drm/dp: Add a drm_aux-dev module for reading/writing dpcd registers. Date: Fri, 25 Sep 2015 16:53:47 -0700 Message-ID: <20150925235346.GA8400@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> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id 490056E8F6 for ; Fri, 25 Sep 2015 16:57:40 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20150922121751.GK3383@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 T24gVHVlLCBTZXAgMjIsIDIwMTUgYXQgMDI6MTc6NTFQTSArMDIwMCwgRGFuaWVsIFZldHRlciB3 cm90ZToKPiBPbiBUdWUsIFNlcCAyMiwgMjAxNSBhdCAwMzowMDo1NFBNICswMzAwLCBWaWxsZSBT eXJqw6Rsw6Qgd3JvdGU6Cj4gPiBPbiBUdWUsIFNlcCAxNSwgMjAxNSBhdCAwNDo1NTowNFBNIC0w NzAwLCBSYWZhZWwgQW50b2dub2xsaSB3cm90ZToKPiA+ID4gVGhpcyBtb2R1bGUgaXMgaGVhdmls eSBiYXNlZCBvbiBpMmMtZGV2LiBPbmNlIGxvYWRlZCwgaXQgcHJvdmlkZXMgb25lCj4gPiA+IGRl diBub2RlIHBlciBEUCBBVVggY2hhbm5lbCwgbmFtZWQgZHJtX2F1eC1OLgo+ID4gPiAKPiA+ID4g SXQncyBwb3NzaWJsZSB0byBrbm93IHdoaWNoIGNvbm5lY3RvciBvd25zIHRoaXMgYXV4IGNoYW5u ZWwgYnkgbG9va2luZwo+ID4gPiBhdCB0aGUgcmVzcGVjdGl2ZSBzeXNmcyAvc3lzL2NsYXNzL2Ry bV9hdXgtZGV2L2RybV9hdXgtTi9jb25uZWN0b3IsIGlmCj4gPiA+IHRoZSBjb25uZWN0b3IgZGV2 aWNlIHBvaW50ZXIgd2FzIGNvcnJlY3RseSBzZXQgaW4gdGhlIGF1eCBoZWxwZXIgc3RydWN0Lgo+ ID4gPiAKPiA+ID4gVHdvIG1haW4gb3BlcmF0aW9ucyBhcmUgcHJvdmlkZWQgb24gdGhlIHJlZ2lz dGVyczogcmVhZCBhbmQgd3JpdGUuIFRoZQo+ID4gPiBhZGRyZXNzIG9mIHRoZSByZWdpc3RlciB0 byBiZSByZWFkIG9yIHdyaXR0ZW4gaXMgZ2l2ZW4gdXNpbmcgbHNlZWsuCj4gPiA+IFJlYWRpbmcg b3Igd3JpdGluZyBkb2VzIG5vdCB1cGRhdGUgdGhlIG9mZnNldCBvZiB0aGUgZmlsZS4KPiA+ID4g Cj4gPiA+IFNpZ25lZC1vZmYtYnk6IFJhZmFlbCBBbnRvZ25vbGxpIDxyYWZhZWwuYW50b2dub2xs aUBpbnRlbC5jb20+Cj4gPiA+IC0tLQo+ID4gPiAgZHJpdmVycy9ncHUvZHJtL0tjb25maWcgICAg ICAgfCAgIDQgKwo+ID4gPiAgZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlICAgICAgfCAgIDEgKwo+ ID4gPiAgZHJpdmVycy9ncHUvZHJtL2RybV9hdXgtZGV2LmMgfCAzMjYgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gPiA+ICAzIGZpbGVzIGNoYW5nZWQsIDMzMSBp bnNlcnRpb25zKCspCj4gPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2Ry bV9hdXgtZGV2LmMKPiA+ID4gCj4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vS2Nv bmZpZyBiL2RyaXZlcnMvZ3B1L2RybS9LY29uZmlnCj4gPiA+IGluZGV4IDFhMGE4ZGYuLmVhZTg0 N2MgMTAwNjQ0Cj4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9LY29uZmlnCj4gPiA+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9LY29uZmlnCj4gPiA+IEBAIC0yNSw2ICsyNSwxMCBAQCBjb25maWcg RFJNX01JUElfRFNJCj4gPiA+ICAJYm9vbAo+ID4gPiAgCWRlcGVuZHMgb24gRFJNCj4gPiA+ICAK PiA+ID4gK2NvbmZpZyBEUk1fQVVYX0NIQVJERVYKPiA+ID4gKwl0cmlzdGF0ZSAiRFJNIERQIEFV WCBJbnRlcmZhY2UiCj4gPiA+ICsJZGVwZW5kcyBvbiBEUk0KPiA+ID4gKwo+ID4gPiAgY29uZmln IERSTV9LTVNfSEVMUEVSCj4gPiA+ICAJdHJpc3RhdGUKPiA+ID4gIAlkZXBlbmRzIG9uIERSTQo+ ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlIGIvZHJpdmVycy9ncHUv ZHJtL01ha2VmaWxlCj4gPiA+IGluZGV4IDQ1ZTc3MTkuLmExYTk0MzA2IDEwMDY0NAo+ID4gPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUKPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJt L01ha2VmaWxlCj4gPiA+IEBAIC0zMiw2ICszMiw3IEBAIENGTEFHU19kcm1fdHJhY2VfcG9pbnRz Lm8gOj0gLUkkKHNyYykKPiA+ID4gIAo+ID4gPiAgb2JqLSQoQ09ORklHX0RSTSkJKz0gZHJtLm8K PiA+ID4gIG9iai0kKENPTkZJR19EUk1fTUlQSV9EU0kpICs9IGRybV9taXBpX2RzaS5vCj4gPiA+ ICtvYmotJChDT05GSUdfRFJNX0FVWF9DSEFSREVWKSArPSBkcm1fYXV4LWRldi5vCj4gPiA+ICBv YmotJChDT05GSUdfRFJNX1RUTSkJKz0gdHRtLwo+ID4gPiAgb2JqLSQoQ09ORklHX0RSTV9UREZY KQkrPSB0ZGZ4Lwo+ID4gPiAgb2JqLSQoQ09ORklHX0RSTV9SMTI4KQkrPSByMTI4Lwo+ID4gPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9hdXgtZGV2LmMgYi9kcml2ZXJzL2dwdS9k cm0vZHJtX2F1eC1kZXYuYwo+ID4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ID4gPiBpbmRleCAw MDAwMDAwLi5mY2MzMzRhCj4gPiA+IC0tLSAvZGV2L251bGwKPiA+ID4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2RybV9hdXgtZGV2LmMKPiA+ID4gQEAgLTAsMCArMSwzMjYgQEAKPiA+ID4gKy8qCj4g PiA+ICsgKiBDb3B5cmlnaHQgwqkgMjAxNSBJbnRlbCBDb3Jwb3JhdGlvbgo+ID4gPiArICoKPiA+ ID4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBh bnkgcGVyc29uIG9idGFpbmluZyBhCj4gPiA+ICsgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5k IGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAo+ID4gPiAr ICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5n IHdpdGhvdXQgbGltaXRhdGlvbgo+ID4gPiArICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1v ZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCj4gPiA+ICsgKiBh bmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMg dG8gd2hvbSB0aGUKPiA+ID4gKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3Vi amVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Cj4gPiA+ICsgKgo+ID4gPiArICogVGhl IGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1 ZGluZyB0aGUgbmV4dAo+ID4gPiArICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBh bGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQo+ID4gPiArICogU29mdHdh cmUuCj4gPiA+ICsgKgo+ID4gPiArICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIs IFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKPiA+ID4gKyAqIElNUExJ RUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hB TlRBQklMSVRZLAo+ID4gPiArICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5E IE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCj4gPiA+ICsgKiBUSEUgQVVUSE9S UyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBP UiBPVEhFUgo+ID4gPiArICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05U UkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKPiA+ID4gKyAqIEZST00sIE9VVCBPRiBP UiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVB TElOR1MKPiA+ID4gKyAqIElOIFRIRSBTT0ZUV0FSRS4KPiA+ID4gKyAqCj4gPiA+ICsgKiBBdXRo b3JzOgo+ID4gPiArICogICAgUmFmYWVsIEFudG9nbm9sbGkgPHJhZmFlbC5hbnRvZ25vbGxpQGlu dGVsLmNvbT4KPiA+ID4gKyAqCj4gPiA+ICsgKi8KPiA+ID4gKwo+ID4gPiArI2luY2x1ZGUgPGxp bnV4L2RldmljZS5oPgo+ID4gPiArI2luY2x1ZGUgPGxpbnV4L2ZzLmg+Cj4gPiA+ICsjaW5jbHVk ZSA8bGludXgvc2xhYi5oPgo+ID4gPiArI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4KPiA+ID4gKyNp bmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KPiA+ID4gKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4K PiA+ID4gKyNpbmNsdWRlIDxhc20vdWFjY2Vzcy5oPgo+ID4gPiArI2luY2x1ZGUgPGRybS9kcm1f ZHBfaGVscGVyLmg+Cj4gPiA+ICsjaW5jbHVkZSA8ZHJtL2RybV9jcnRjLmg+Cj4gPiA+ICsKPiA+ ID4gK3N0cnVjdCBkcm1fYXV4X2RldiB7Cj4gPiA+ICsJc3RydWN0IGxpc3RfaGVhZCBsaXN0Owo+ ID4gPiArCXVuc2lnbmVkIGluZGV4Owo+ID4gPiArCXN0cnVjdCBkcm1fZHBfYXV4ICphdXg7Cj4g PiA+ICsJc3RydWN0IGRldmljZSAqZGV2Owo+ID4gPiArfTsKPiA+ID4gKwo+ID4gPiArI2RlZmlu ZSBEUk1fQVVYX01JTk9SUwkyNTYKPiA+ID4gK3N0YXRpYyBpbnQgZHJtX2F1eF9kZXZfY291bnQg PSAwOwo+ID4gPiArc3RhdGljIExJU1RfSEVBRChkcm1fYXV4X2Rldl9saXN0KTsKPiA+ID4gK3N0 YXRpYyBERUZJTkVfU1BJTkxPQ0soZHJtX2F1eF9kZXZfbGlzdF9sb2NrKTsKPiA+ID4gKwo+ID4g PiArc3RhdGljIHN0cnVjdCBkcm1fYXV4X2RldiAqZHJtX2F1eF9kZXZfZ2V0X2J5X21pbm9yKHVu c2lnbmVkIGluZGV4KQo+ID4gPiArewo+ID4gPiArCXN0cnVjdCBkcm1fYXV4X2RldiAqYXV4X2Rl djsKPiA+ID4gKwo+ID4gPiArCXNwaW5fbG9jaygmZHJtX2F1eF9kZXZfbGlzdF9sb2NrKTsKPiA+ ID4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGF1eF9kZXYsICZkcm1fYXV4X2Rldl9saXN0LCBsaXN0 KSB7Cj4gPiA+ICsJCWlmIChhdXhfZGV2LT5pbmRleCA9PSBpbmRleCkKPiA+ID4gKwkJCWdvdG8g Zm91bmQ7Cj4gPiA+ICsJfQo+ID4gPiArCj4gPiA+ICsJYXV4X2RldiA9IE5VTEw7Cj4gPiA+ICtm b3VuZDoKPiA+ID4gKwlzcGluX3VubG9jaygmZHJtX2F1eF9kZXZfbGlzdF9sb2NrKTsKPiA+ID4g KwlyZXR1cm4gYXV4X2RldjsKPiA+ID4gK30KPiA+ID4gKwo+ID4gPiArc3RhdGljIHN0cnVjdCBk cm1fYXV4X2RldiAqZHJtX2F1eF9kZXZfZ2V0X2J5X2F1eChzdHJ1Y3QgZHJtX2RwX2F1eCAqYXV4 KQo+ID4gPiArewo+ID4gPiArCXN0cnVjdCBkcm1fYXV4X2RldiAqYXV4X2RldjsKPiA+ID4gKwo+ ID4gPiArCXNwaW5fbG9jaygmZHJtX2F1eF9kZXZfbGlzdF9sb2NrKTsKPiA+ID4gKwlsaXN0X2Zv cl9lYWNoX2VudHJ5KGF1eF9kZXYsICZkcm1fYXV4X2Rldl9saXN0LCBsaXN0KSB7Cj4gPiA+ICsJ CWlmIChhdXhfZGV2LT5hdXggPT0gYXV4KQo+ID4gPiArCQkJZ290byBmb3VuZDsKPiA+ID4gKwl9 Cj4gPiA+ICsKPiA+ID4gKwlhdXhfZGV2ID0gTlVMTDsKPiA+ID4gK2ZvdW5kOgo+ID4gPiArCXNw aW5fdW5sb2NrKCZkcm1fYXV4X2Rldl9saXN0X2xvY2spOwo+ID4gPiArCXJldHVybiBhdXhfZGV2 Owo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICtzdGF0aWMgc3RydWN0IGRybV9hdXhfZGV2ICpnZXRf ZnJlZV9kcm1fYXV4X2RldihzdHJ1Y3QgZHJtX2RwX2F1eCAqYXV4KQo+ID4gPiArewo+ID4gPiAr CXN0cnVjdCBkcm1fYXV4X2RldiAqYXV4X2RldjsKPiA+ID4gKwlpbnQgaW5kZXg7Cj4gPiA+ICsK PiA+ID4gKwlzcGluX2xvY2soJmRybV9hdXhfZGV2X2xpc3RfbG9jayk7Cj4gPiA+ICsJaW5kZXgg PSBkcm1fYXV4X2Rldl9jb3VudDsKPiA+ID4gKwlzcGluX3VubG9jaygmZHJtX2F1eF9kZXZfbGlz dF9sb2NrKTsKPiA+ID4gKwlpZiAoaW5kZXggPj0gRFJNX0FVWF9NSU5PUlMpIHsKPiA+ID4gKwkJ cHJpbnRrKEtFUk5fRVJSICJpMmMtZGV2OiBPdXQgb2YgZGV2aWNlIG1pbm9ycyAoJWQpXG4iLAo+ ID4gPiArCQkgICAgICAgaW5kZXgpOwo+ID4gPiArCQlyZXR1cm4gRVJSX1BUUigtRU5PREVWKTsK PiA+ID4gKwl9Cj4gPiA+ICsKPiA+ID4gKwlhdXhfZGV2ID0ga3phbGxvYyhzaXplb2YoKmF1eF9k ZXYpLCBHRlBfS0VSTkVMKTsKPiA+ID4gKwlpZiAoIWF1eF9kZXYpCj4gPiA+ICsJCXJldHVybiBF UlJfUFRSKC1FTk9NRU0pOwo+ID4gPiArCWF1eF9kZXYtPmF1eCA9IGF1eDsKPiA+ID4gKwlhdXhf ZGV2LT5pbmRleCA9IGluZGV4Owo+ID4gPiArCj4gPiA+ICsJc3Bpbl9sb2NrKCZkcm1fYXV4X2Rl dl9saXN0X2xvY2spOwo+ID4gPiArCWRybV9hdXhfZGV2X2NvdW50Kys7Cj4gPiA+ICsJbGlzdF9h ZGRfdGFpbCgmYXV4X2Rldi0+bGlzdCwgJmRybV9hdXhfZGV2X2xpc3QpOwo+ID4gPiArCXNwaW5f dW5sb2NrKCZkcm1fYXV4X2Rldl9saXN0X2xvY2spOwo+ID4gPiArCXJldHVybiBhdXhfZGV2Owo+ ID4gPiArfQo+ID4gPiArCj4gPiA+ICtzdGF0aWMgdm9pZCByZXR1cm5fZHJtX2F1eF9kZXYoc3Ry dWN0IGRybV9hdXhfZGV2ICphdXhfZGV2KQo+ID4gPiArewo+ID4gPiArCXNwaW5fbG9jaygmZHJt X2F1eF9kZXZfbGlzdF9sb2NrKTsKPiA+ID4gKwlsaXN0X2RlbCgmYXV4X2Rldi0+bGlzdCk7Cj4g PiA+ICsJc3Bpbl91bmxvY2soJmRybV9hdXhfZGV2X2xpc3RfbG9jayk7Cj4gPiA+ICsJa2ZyZWUo YXV4X2Rldik7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyBzc2l6ZV90IG5hbWVfc2hv dyhzdHJ1Y3QgZGV2aWNlICpkZXYsCj4gPiA+ICsJCQkgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUg KmF0dHIsIGNoYXIgKmJ1ZikKPiA+ID4gK3sKPiA+ID4gKwlzdHJ1Y3QgZHJtX2F1eF9kZXYgKmF1 eF9kZXYgPSBkcm1fYXV4X2Rldl9nZXRfYnlfbWlub3IoTUlOT1IoZGV2LT5kZXZ0KSk7Cj4gPiA+ ICsKPiA+ID4gKwlpZiAoIWF1eF9kZXYpCj4gPiA+ICsJCXJldHVybiAtRU5PREVWOwo+ID4gPiAr CXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVzXG4iLCBhdXhfZGV2LT5hdXgtPm5hbWUpOwo+ID4gPiAr fQo+ID4gPiArc3RhdGljIERFVklDRV9BVFRSX1JPKG5hbWUpOwo+ID4gPiArCj4gPiA+ICtzdGF0 aWMgc3NpemVfdCBjb25uZWN0b3Jfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsCj4gPiA+ICsJCQkg ICAgICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQo+ID4gPiArewo+ ID4gPiArCXN0cnVjdCBkcm1fYXV4X2RldiAqYXV4X2RldiA9IGRybV9hdXhfZGV2X2dldF9ieV9t aW5vcihNSU5PUihkZXYtPmRldnQpKTsKPiA+ID4gKwlzdHJ1Y3QgZHJtX2RwX2F1eCAqYXV4Owo+ ID4gPiArCXN0cnVjdCBkZXZpY2UgKmNvbm5fZGV2Owo+ID4gPiArCXN0cnVjdCBkcm1fY29ubmVj dG9yICpjb25uZWN0b3IgPSBOVUxMOwo+ID4gPiArCj4gPiA+ICsJaWYgKCFhdXhfZGV2KQo+ID4g PiArCQlyZXR1cm4gLUVOT0RFVjsKPiA+ID4gKwlhdXggPSBhdXhfZGV2LT5hdXg7Cj4gPiA+ICsJ Y29ubl9kZXYgPSBhdXgtPmNvbm5lY3RvcjsKPiA+ID4gKwlpZiAoIWNvbm5fZGV2KQo+ID4gPiAr CQlyZXR1cm4gc3ByaW50ZihidWYsICJ1bmtub3duXG4iKTsKPiA+ID4gKwo+ID4gPiArCWNvbm5l Y3RvciA9IGRldl9nZXRfZHJ2ZGF0YShhdXgtPmNvbm5lY3Rvcik7Cj4gPiA+ICsKPiA+ID4gKwly ZXR1cm4gc3ByaW50ZihidWYsICIlc1xuIiwgY29ubmVjdG9yLT5uYW1lKTsKPiA+ID4gK30KPiA+ ID4gK3N0YXRpYyBERVZJQ0VfQVRUUl9STyhjb25uZWN0b3IpOwo+ID4gPiArCj4gPiA+ICtzdGF0 aWMgc3RydWN0IGF0dHJpYnV0ZSAqZHJtX2F1eF9hdHRyc1tdID0gewo+ID4gPiArCSZkZXZfYXR0 cl9uYW1lLmF0dHIsCj4gPiA+ICsJJmRldl9hdHRyX2Nvbm5lY3Rvci5hdHRyLAo+ID4gPiArCU5V TEwsCj4gPiA+ICt9Owo+ID4gPiArQVRUUklCVVRFX0dST1VQUyhkcm1fYXV4KTsKPiA+ID4gKwo+ ID4gPiArc3RhdGljIGludCBhdXhkZXZfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3Qg ZmlsZSAqZmlsZSkKPiA+ID4gK3sKPiA+ID4gKwl1bnNpZ25lZCBpbnQgbWlub3IgPSBpbWlub3Io aW5vZGUpOwo+ID4gPiArCXN0cnVjdCBkcm1fYXV4X2RldiAqYXV4X2RldjsKPiA+ID4gKwo+ID4g PiArCWF1eF9kZXYgPSBkcm1fYXV4X2Rldl9nZXRfYnlfbWlub3IobWlub3IpOwo+ID4gPiArCWlm ICghYXV4X2RldikKPiA+ID4gKwkJcmV0dXJuIC1FTk9ERVY7Cj4gPiA+ICsKPiA+ID4gKwlmaWxl LT5wcml2YXRlX2RhdGEgPSBhdXhfZGV2Owo+ID4gPiArCXJldHVybiAwOwo+ID4gPiArfQo+ID4g PiArCj4gPiA+ICtzdGF0aWMgc3NpemVfdCBhdXhkZXZfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwg Y2hhciBfX3VzZXIgKmJ1Ziwgc2l6ZV90IGNvdW50LAo+ID4gPiArCQkJICAgbG9mZl90ICpvZmZz ZXQpCj4gPiA+ICt7Cj4gPiA+ICsJY2hhciAqbG9jYWxidWY7Cj4gPiA+ICsJc3NpemVfdCByZXM7 Cj4gPiA+ICsJc3RydWN0IGRybV9hdXhfZGV2ICphdXhfZGV2ID0gZmlsZS0+cHJpdmF0ZV9kYXRh Owo+ID4gPiArCj4gPiA+ICsJbG9jYWxidWYgPSBtZW1kdXBfdXNlcihidWYsIGNvdW50KTsKPiA+ ID4gKwlpZiAoSVNfRVJSKGxvY2FsYnVmKSkKPiA+ID4gKwkJcmV0dXJuIFBUUl9FUlIoYnVmKTsK PiA+ID4gKwo+ID4gPiArCXJlcyA9IGRybV9kcF9kcGNkX3JlYWQoYXV4X2Rldi0+YXV4LCAqb2Zm c2V0LCBsb2NhbGJ1ZiwgY291bnQpOwo+ID4gPiArCWlmIChyZXMgPCAwKQo+ID4gPiArCQlnb3Rv IGZpbmlzaDsKPiA+IAo+ID4gcmVhZC93cml0ZSB3aWxsIG5lZWQgdG8gZG8gdGhlIGFjY2VzcyBp biAxNiBieXRlIGNodW5rcy4gVGhhdCdzIHRoZSBtYXgKPiA+IGFtb3VudCBvZiBkYXRhIHRoYXQg Y2FuIGJlIHRyYW5zZmVycmVkIHdpdGggYSBzaW5nbGUgQVVYIG9wZXJhdGlvbi4gSQo+ID4gc3Vw cG9zZSB0aGF0IHdvdWxkIGFsc28gYXZvaWQgdGhlIG5lZWQgZm9yIGFsbG9jYXRpbmcgbGFyZ2Ug YnVmZmVycwo+ID4gc2luY2UgeW91IGNhbiBqdXN0IGhhdmUgYSAxNiBieXRlIGJ1ZmZlciBvbiB0 aGUgc3RhY2sgYW5kIGtlZXAgcmV1c2luZwo+ID4gaXQgd2hpbGUgeW91IGl0ZXJhdGUgdGhyb3Vn aCB0aGUgdG90YWwgY291bnQuIEknbSBub3Qgc3VyZSB3aGF0IGFyZQo+ID4gdGhlIGV4cGVjdGVk IHNlbWFudGljcyBvZiByZWFkL3dyaXRlIGlmIHlvdSBkbyBpdCBpbiBjaHVua3MgYW5kIGhpdAo+ ID4gYSBjb3B5X3t0byxmcm9tfV91c2VyKCkgZmFpbHVyZSBzb21ld2hlcmUgZG93biB0aGUgbGlu ZS4gQnV0IEkgc3VwcG9zZQo+ID4gYWNjZXNzX29rKCkgdXBmcm9udCBmb3IgdGhlIHdob2xlIHVz ZXIgYnVmZmVyIGNvdWxkIGF2b2lkIHRoYXQgaXNzdWUuCj4gCj4gSWlyYyBzaG9ydCByZWFkcyBh cmUgb2sgaW4gYWxsIGNhc2VzLCBzbyB3ZSBjb3VsZCBldmVuIHB1bnQgdGhlIHJlc3RhcnRpbmcK PiB0byB1c2Vyc3BhY2UgYnkganVzdCBkb2luZyBzaG9ydCByZWFkcy93cml0ZXMgKGxpa2Ugc29j a2V0cyBkbykuCj4gCj4gPiBBbHNvIHRoZSBzaXplIG9mIHRoZSBEUENEIGFkZHJlc3Mgc3BhY2Ug aXMgMTw8MjAgYnl0ZXMsIHNvIHlvdSdsbCBuZWVkIHRvCj4gPiBsaW1pdCB0aGUgYWNjZXNzIHRv IHN0YXkgd2l0aGluIHRoYXQuICdzaXplID0gbHNlZWsoZmQsIDAsIFNFRUtfRU5EKScKPiA+IGNh biBiZSB1c2VkIHRvIGdldCB0aGUgZmlsZSBzaXplLCBzbyB5b3Ugc2hvdWxkIGFsbG93IHRoZSBv ZmZzZXQgdG8KPiA+IHJlYWNoIDE8PDIwLCBidXQgbm90IGJleW9uZC4gcmVhZC93cml0ZSBzaG91 bGQgcHJvY2VzcyBhcyBtdWNoIG11Y2ggb2YKPiA+IHRoZSBkYXRhIHRoYXQgdGhleSBjYW4gZ2l2 ZW4gdGhlIGN1cnJlbnQgZmlsZSBvZmZzZXQsIGFuZCByZXR1cm4gaG93Cj4gPiBtYW55IGJ5dGVz IG1hZGUgaXQgaW4vb3V0IChjYW4gYWxzbyBiZSAwIGlmIG9mZnNldCB3YXMgYWxyZWFkeSBhdCAx PDwyMCkuCj4gCj4gSG0sIHNvdW5kcyBsaWtlIGEgZmV3IHRlc3RjYXNlcyBmb3IgY29ybmVyY2Fz ZXMgd291bGQgYmUgbmVhdC4gQmVzdCB3b3VsZAo+IGJlIHRvIGRvIHRoYXQgaW4gaWd0IGFuZCBp dGVyYXRlIG92ZXIgYWxsIGF2YWlsYWJsZSBkcF9hdXggZGV2IG5vZGVzIChpZ3QKPiBpcyBub3cg Z2VuZXJpYywgc28gbWFrZXMgc2Vuc2UgdG8gcHV0IHRoYXQgc3R1ZmYgdGhlcmUpLiBTb21ldGhp bmcgbGlrZQo+IGttc19kcF9hdXhfZGV2IHdvdWxkIGJlIGEgbmljZSB0ZXN0Y2FzZSBuYW1lLgoK T0ssIEkgc2VudCBhbiB1cGRhdGVkIHBhdGNoIHNldCBpbmNsdWRpbmcgYWxsIChJIHRoaW5rKSBj aGFuZ2VzCnN1Z2dlc3RlZCBieSB5b3UgYW5kIFZpbGxlLgoKSSdtIHdvcmtpbmcgb24gdGhlIGln dCB0ZXN0LCBidXQgSSBhbSBub3Qgc3VyZSBleGFjdGx5IHdoYXQgY29ybmVyY2FzZXMKdG8gdGVz dCwgYW5kIHNwZWNpYWxseSBob3cgdG8gdGVzdCB0aGVtLiBJIGNhbiByZWFkIGEgY291cGxlIG9m CnJlZ2lzdGVycyB0aGF0IEkgaGF2ZSBhbiBpZGVhIG9mIHdoYXQgdG8gZXhwZWN0IGZyb20gdGhl bSwgYnV0IG5vdApjb3JuZXIgY2FzZXMuIFdoYXQgZG8geW91IGhhdmUgaW4gbWluZD8KCkFsc28s IEkgYW0gbm90IHN1cmUgaG93IHRvIGlkZW50aWZ5IHRoYXQgYSBnaXZlbiBhdXggY2hhbm5lbCBk b2Vzbid0CmhhdmUgYSBkaXNwbGF5L3BhbmVsIGF0dGFjaGVkIHRvIGl0LCBzbyBldmVuIGEgcmVh ZCBvcGVyYXRpb24ganVzdCBmYWlscwp3aXRoIGEgY29ubmVjdGlvbiB0aW1lb3V0LiBTaG91bGQg SSBqdXN0IHNraXAgdGhpcyBhdXggY2hhbm5lbCBvbiB0aGlzCmNhc2UsIGFuZCBub3QgY29uc2lk ZXIgaXQgYSBmYWlsdXJlLCB3aGVuIGl0ZXJhdGluZyBvdmVyIHRoZW0/CgpUaGFua3MsClJhZmFl bApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2 ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=