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:17:51 +0200 Message-ID: <20150922121751.GK3383@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> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wi0-f175.google.com (mail-wi0-f175.google.com [209.85.212.175]) by gabe.freedesktop.org (Postfix) with ESMTPS id 507686E674 for ; Tue, 22 Sep 2015 05:15:00 -0700 (PDT) Received: by wicge5 with SMTP id ge5so158459371wic.0 for ; Tue, 22 Sep 2015 05:14:59 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20150922120054.GM26517@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 T24gVHVlLCBTZXAgMjIsIDIwMTUgYXQgMDM6MDA6NTRQTSArMDMwMCwgVmlsbGUgU3lyasOkbMOk IHdyb3RlOgo+IE9uIFR1ZSwgU2VwIDE1LCAyMDE1IGF0IDA0OjU1OjA0UE0gLTA3MDAsIFJhZmFl bCBBbnRvZ25vbGxpIHdyb3RlOgo+ID4gVGhpcyBtb2R1bGUgaXMgaGVhdmlseSBiYXNlZCBvbiBp MmMtZGV2LiBPbmNlIGxvYWRlZCwgaXQgcHJvdmlkZXMgb25lCj4gPiBkZXYgbm9kZSBwZXIgRFAg QVVYIGNoYW5uZWwsIG5hbWVkIGRybV9hdXgtTi4KPiA+IAo+ID4gSXQncyBwb3NzaWJsZSB0byBr bm93IHdoaWNoIGNvbm5lY3RvciBvd25zIHRoaXMgYXV4IGNoYW5uZWwgYnkgbG9va2luZwo+ID4g YXQgdGhlIHJlc3BlY3RpdmUgc3lzZnMgL3N5cy9jbGFzcy9kcm1fYXV4LWRldi9kcm1fYXV4LU4v Y29ubmVjdG9yLCBpZgo+ID4gdGhlIGNvbm5lY3RvciBkZXZpY2UgcG9pbnRlciB3YXMgY29ycmVj dGx5IHNldCBpbiB0aGUgYXV4IGhlbHBlciBzdHJ1Y3QuCj4gPiAKPiA+IFR3byBtYWluIG9wZXJh dGlvbnMgYXJlIHByb3ZpZGVkIG9uIHRoZSByZWdpc3RlcnM6IHJlYWQgYW5kIHdyaXRlLiBUaGUK PiA+IGFkZHJlc3Mgb2YgdGhlIHJlZ2lzdGVyIHRvIGJlIHJlYWQgb3Igd3JpdHRlbiBpcyBnaXZl biB1c2luZyBsc2Vlay4KPiA+IFJlYWRpbmcgb3Igd3JpdGluZyBkb2VzIG5vdCB1cGRhdGUgdGhl IG9mZnNldCBvZiB0aGUgZmlsZS4KPiA+IAo+ID4gU2lnbmVkLW9mZi1ieTogUmFmYWVsIEFudG9n bm9sbGkgPHJhZmFlbC5hbnRvZ25vbGxpQGludGVsLmNvbT4KPiA+IC0tLQo+ID4gIGRyaXZlcnMv Z3B1L2RybS9LY29uZmlnICAgICAgIHwgICA0ICsKPiA+ICBkcml2ZXJzL2dwdS9kcm0vTWFrZWZp bGUgICAgICB8ICAgMSArCj4gPiAgZHJpdmVycy9ncHUvZHJtL2RybV9hdXgtZGV2LmMgfCAzMjYg KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gPiAgMyBmaWxlcyBj aGFuZ2VkLCAzMzEgaW5zZXJ0aW9ucygrKQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJz L2dwdS9kcm0vZHJtX2F1eC1kZXYuYwo+ID4gCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL0tjb25maWcgYi9kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZwo+ID4gaW5kZXggMWEwYThkZi4u ZWFlODQ3YyAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9LY29uZmlnCj4gPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZwo+ID4gQEAgLTI1LDYgKzI1LDEwIEBAIGNvbmZpZyBE Uk1fTUlQSV9EU0kKPiA+ICAJYm9vbAo+ID4gIAlkZXBlbmRzIG9uIERSTQo+ID4gIAo+ID4gK2Nv bmZpZyBEUk1fQVVYX0NIQVJERVYKPiA+ICsJdHJpc3RhdGUgIkRSTSBEUCBBVVggSW50ZXJmYWNl Igo+ID4gKwlkZXBlbmRzIG9uIERSTQo+ID4gKwo+ID4gIGNvbmZpZyBEUk1fS01TX0hFTFBFUgo+ ID4gIAl0cmlzdGF0ZQo+ID4gIAlkZXBlbmRzIG9uIERSTQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZQo+ID4gaW5kZXgg NDVlNzcxOS4uYTFhOTQzMDYgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vTWFrZWZp bGUKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZQo+ID4gQEAgLTMyLDYgKzMyLDcg QEAgQ0ZMQUdTX2RybV90cmFjZV9wb2ludHMubyA6PSAtSSQoc3JjKQo+ID4gIAo+ID4gIG9iai0k KENPTkZJR19EUk0pCSs9IGRybS5vCj4gPiAgb2JqLSQoQ09ORklHX0RSTV9NSVBJX0RTSSkgKz0g ZHJtX21pcGlfZHNpLm8KPiA+ICtvYmotJChDT05GSUdfRFJNX0FVWF9DSEFSREVWKSArPSBkcm1f YXV4LWRldi5vCj4gPiAgb2JqLSQoQ09ORklHX0RSTV9UVE0pCSs9IHR0bS8KPiA+ICBvYmotJChD T05GSUdfRFJNX1RERlgpCSs9IHRkZngvCj4gPiAgb2JqLSQoQ09ORklHX0RSTV9SMTI4KQkrPSBy MTI4Lwo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXV4LWRldi5jIGIvZHJp dmVycy9ncHUvZHJtL2RybV9hdXgtZGV2LmMKPiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gPiBp bmRleCAwMDAwMDAwLi5mY2MzMzRhCj4gPiAtLS0gL2Rldi9udWxsCj4gPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vZHJtX2F1eC1kZXYuYwo+ID4gQEAgLTAsMCArMSwzMjYgQEAKPiA+ICsvKgo+ID4g KyAqIENvcHlyaWdodCDCqSAyMDE1IEludGVsIENvcnBvcmF0aW9uCj4gPiArICoKPiA+ICsgKiBQ ZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNv biBvYnRhaW5pbmcgYQo+ID4gKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRl ZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCj4gPiArICogdG8gZGVhbCBp biB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGlt aXRhdGlvbgo+ID4gKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBw dWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAo+ID4gKyAqIGFuZC9vciBzZWxsIGNvcGll cyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQo+ID4g KyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93 aW5nIGNvbmRpdGlvbnM6Cj4gPiArICoKPiA+ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGlj ZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0Cj4gPiArICog cGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFs IHBvcnRpb25zIG9mIHRoZQo+ID4gKyAqIFNvZnR3YXJlLgo+ID4gKyAqCj4gPiArICogVEhFIFNP RlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQs IEVYUFJFU1MgT1IKPiA+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRP IFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKPiA+ICsgKiBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hB TEwKPiA+ICsgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9S IEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgo+ID4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJ TiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCj4gPiAr ICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhF IFVTRSBPUiBPVEhFUiBERUFMSU5HUwo+ID4gKyAqIElOIFRIRSBTT0ZUV0FSRS4KPiA+ICsgKgo+ ID4gKyAqIEF1dGhvcnM6Cj4gPiArICogICAgUmFmYWVsIEFudG9nbm9sbGkgPHJhZmFlbC5hbnRv Z25vbGxpQGludGVsLmNvbT4KPiA+ICsgKgo+ID4gKyAqLwo+ID4gKwo+ID4gKyNpbmNsdWRlIDxs aW51eC9kZXZpY2UuaD4KPiA+ICsjaW5jbHVkZSA8bGludXgvZnMuaD4KPiA+ICsjaW5jbHVkZSA8 bGludXgvc2xhYi5oPgo+ID4gKyNpbmNsdWRlIDxsaW51eC9pbml0Lmg+Cj4gPiArI2luY2x1ZGUg PGxpbnV4L2tlcm5lbC5oPgo+ID4gKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KPiA+ICsjaW5j bHVkZSA8YXNtL3VhY2Nlc3MuaD4KPiA+ICsjaW5jbHVkZSA8ZHJtL2RybV9kcF9oZWxwZXIuaD4K PiA+ICsjaW5jbHVkZSA8ZHJtL2RybV9jcnRjLmg+Cj4gPiArCj4gPiArc3RydWN0IGRybV9hdXhf ZGV2IHsKPiA+ICsJc3RydWN0IGxpc3RfaGVhZCBsaXN0Owo+ID4gKwl1bnNpZ25lZCBpbmRleDsK PiA+ICsJc3RydWN0IGRybV9kcF9hdXggKmF1eDsKPiA+ICsJc3RydWN0IGRldmljZSAqZGV2Owo+ ID4gK307Cj4gPiArCj4gPiArI2RlZmluZSBEUk1fQVVYX01JTk9SUwkyNTYKPiA+ICtzdGF0aWMg aW50IGRybV9hdXhfZGV2X2NvdW50ID0gMDsKPiA+ICtzdGF0aWMgTElTVF9IRUFEKGRybV9hdXhf ZGV2X2xpc3QpOwo+ID4gK3N0YXRpYyBERUZJTkVfU1BJTkxPQ0soZHJtX2F1eF9kZXZfbGlzdF9s b2NrKTsKPiA+ICsKPiA+ICtzdGF0aWMgc3RydWN0IGRybV9hdXhfZGV2ICpkcm1fYXV4X2Rldl9n ZXRfYnlfbWlub3IodW5zaWduZWQgaW5kZXgpCj4gPiArewo+ID4gKwlzdHJ1Y3QgZHJtX2F1eF9k ZXYgKmF1eF9kZXY7Cj4gPiArCj4gPiArCXNwaW5fbG9jaygmZHJtX2F1eF9kZXZfbGlzdF9sb2Nr KTsKPiA+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeShhdXhfZGV2LCAmZHJtX2F1eF9kZXZfbGlzdCwg bGlzdCkgewo+ID4gKwkJaWYgKGF1eF9kZXYtPmluZGV4ID09IGluZGV4KQo+ID4gKwkJCWdvdG8g Zm91bmQ7Cj4gPiArCX0KPiA+ICsKPiA+ICsJYXV4X2RldiA9IE5VTEw7Cj4gPiArZm91bmQ6Cj4g PiArCXNwaW5fdW5sb2NrKCZkcm1fYXV4X2Rldl9saXN0X2xvY2spOwo+ID4gKwlyZXR1cm4gYXV4 X2RldjsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIHN0cnVjdCBkcm1fYXV4X2RldiAqZHJtX2F1 eF9kZXZfZ2V0X2J5X2F1eChzdHJ1Y3QgZHJtX2RwX2F1eCAqYXV4KQo+ID4gK3sKPiA+ICsJc3Ry dWN0IGRybV9hdXhfZGV2ICphdXhfZGV2Owo+ID4gKwo+ID4gKwlzcGluX2xvY2soJmRybV9hdXhf ZGV2X2xpc3RfbG9jayk7Cj4gPiArCWxpc3RfZm9yX2VhY2hfZW50cnkoYXV4X2RldiwgJmRybV9h dXhfZGV2X2xpc3QsIGxpc3QpIHsKPiA+ICsJCWlmIChhdXhfZGV2LT5hdXggPT0gYXV4KQo+ID4g KwkJCWdvdG8gZm91bmQ7Cj4gPiArCX0KPiA+ICsKPiA+ICsJYXV4X2RldiA9IE5VTEw7Cj4gPiAr Zm91bmQ6Cj4gPiArCXNwaW5fdW5sb2NrKCZkcm1fYXV4X2Rldl9saXN0X2xvY2spOwo+ID4gKwly ZXR1cm4gYXV4X2RldjsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIHN0cnVjdCBkcm1fYXV4X2Rl diAqZ2V0X2ZyZWVfZHJtX2F1eF9kZXYoc3RydWN0IGRybV9kcF9hdXggKmF1eCkKPiA+ICt7Cj4g PiArCXN0cnVjdCBkcm1fYXV4X2RldiAqYXV4X2RldjsKPiA+ICsJaW50IGluZGV4Owo+ID4gKwo+ ID4gKwlzcGluX2xvY2soJmRybV9hdXhfZGV2X2xpc3RfbG9jayk7Cj4gPiArCWluZGV4ID0gZHJt X2F1eF9kZXZfY291bnQ7Cj4gPiArCXNwaW5fdW5sb2NrKCZkcm1fYXV4X2Rldl9saXN0X2xvY2sp Owo+ID4gKwlpZiAoaW5kZXggPj0gRFJNX0FVWF9NSU5PUlMpIHsKPiA+ICsJCXByaW50ayhLRVJO X0VSUiAiaTJjLWRldjogT3V0IG9mIGRldmljZSBtaW5vcnMgKCVkKVxuIiwKPiA+ICsJCSAgICAg ICBpbmRleCk7Cj4gPiArCQlyZXR1cm4gRVJSX1BUUigtRU5PREVWKTsKPiA+ICsJfQo+ID4gKwo+ ID4gKwlhdXhfZGV2ID0ga3phbGxvYyhzaXplb2YoKmF1eF9kZXYpLCBHRlBfS0VSTkVMKTsKPiA+ ICsJaWYgKCFhdXhfZGV2KQo+ID4gKwkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7Cj4gPiArCWF1 eF9kZXYtPmF1eCA9IGF1eDsKPiA+ICsJYXV4X2Rldi0+aW5kZXggPSBpbmRleDsKPiA+ICsKPiA+ ICsJc3Bpbl9sb2NrKCZkcm1fYXV4X2Rldl9saXN0X2xvY2spOwo+ID4gKwlkcm1fYXV4X2Rldl9j b3VudCsrOwo+ID4gKwlsaXN0X2FkZF90YWlsKCZhdXhfZGV2LT5saXN0LCAmZHJtX2F1eF9kZXZf bGlzdCk7Cj4gPiArCXNwaW5fdW5sb2NrKCZkcm1fYXV4X2Rldl9saXN0X2xvY2spOwo+ID4gKwly ZXR1cm4gYXV4X2RldjsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIHZvaWQgcmV0dXJuX2RybV9h dXhfZGV2KHN0cnVjdCBkcm1fYXV4X2RldiAqYXV4X2RldikKPiA+ICt7Cj4gPiArCXNwaW5fbG9j aygmZHJtX2F1eF9kZXZfbGlzdF9sb2NrKTsKPiA+ICsJbGlzdF9kZWwoJmF1eF9kZXYtPmxpc3Qp Owo+ID4gKwlzcGluX3VubG9jaygmZHJtX2F1eF9kZXZfbGlzdF9sb2NrKTsKPiA+ICsJa2ZyZWUo YXV4X2Rldik7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYyBzc2l6ZV90IG5hbWVfc2hvdyhzdHJ1 Y3QgZGV2aWNlICpkZXYsCj4gPiArCQkJIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBj aGFyICpidWYpCj4gPiArewo+ID4gKwlzdHJ1Y3QgZHJtX2F1eF9kZXYgKmF1eF9kZXYgPSBkcm1f YXV4X2Rldl9nZXRfYnlfbWlub3IoTUlOT1IoZGV2LT5kZXZ0KSk7Cj4gPiArCj4gPiArCWlmICgh YXV4X2RldikKPiA+ICsJCXJldHVybiAtRU5PREVWOwo+ID4gKwlyZXR1cm4gc3ByaW50ZihidWYs ICIlc1xuIiwgYXV4X2Rldi0+YXV4LT5uYW1lKTsKPiA+ICt9Cj4gPiArc3RhdGljIERFVklDRV9B VFRSX1JPKG5hbWUpOwo+ID4gKwo+ID4gK3N0YXRpYyBzc2l6ZV90IGNvbm5lY3Rvcl9zaG93KHN0 cnVjdCBkZXZpY2UgKmRldiwKPiA+ICsJCQkgICAgICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAq YXR0ciwgY2hhciAqYnVmKQo+ID4gK3sKPiA+ICsJc3RydWN0IGRybV9hdXhfZGV2ICphdXhfZGV2 ID0gZHJtX2F1eF9kZXZfZ2V0X2J5X21pbm9yKE1JTk9SKGRldi0+ZGV2dCkpOwo+ID4gKwlzdHJ1 Y3QgZHJtX2RwX2F1eCAqYXV4Owo+ID4gKwlzdHJ1Y3QgZGV2aWNlICpjb25uX2RldjsKPiA+ICsJ c3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciA9IE5VTEw7Cj4gPiArCj4gPiArCWlmICgh YXV4X2RldikKPiA+ICsJCXJldHVybiAtRU5PREVWOwo+ID4gKwlhdXggPSBhdXhfZGV2LT5hdXg7 Cj4gPiArCWNvbm5fZGV2ID0gYXV4LT5jb25uZWN0b3I7Cj4gPiArCWlmICghY29ubl9kZXYpCj4g PiArCQlyZXR1cm4gc3ByaW50ZihidWYsICJ1bmtub3duXG4iKTsKPiA+ICsKPiA+ICsJY29ubmVj dG9yID0gZGV2X2dldF9kcnZkYXRhKGF1eC0+Y29ubmVjdG9yKTsKPiA+ICsKPiA+ICsJcmV0dXJu IHNwcmludGYoYnVmLCAiJXNcbiIsIGNvbm5lY3Rvci0+bmFtZSk7Cj4gPiArfQo+ID4gK3N0YXRp YyBERVZJQ0VfQVRUUl9STyhjb25uZWN0b3IpOwo+ID4gKwo+ID4gK3N0YXRpYyBzdHJ1Y3QgYXR0 cmlidXRlICpkcm1fYXV4X2F0dHJzW10gPSB7Cj4gPiArCSZkZXZfYXR0cl9uYW1lLmF0dHIsCj4g PiArCSZkZXZfYXR0cl9jb25uZWN0b3IuYXR0ciwKPiA+ICsJTlVMTCwKPiA+ICt9Owo+ID4gK0FU VFJJQlVURV9HUk9VUFMoZHJtX2F1eCk7Cj4gPiArCj4gPiArc3RhdGljIGludCBhdXhkZXZfb3Bl bihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSkKPiA+ICt7Cj4gPiArCXVu c2lnbmVkIGludCBtaW5vciA9IGltaW5vcihpbm9kZSk7Cj4gPiArCXN0cnVjdCBkcm1fYXV4X2Rl diAqYXV4X2RldjsKPiA+ICsKPiA+ICsJYXV4X2RldiA9IGRybV9hdXhfZGV2X2dldF9ieV9taW5v cihtaW5vcik7Cj4gPiArCWlmICghYXV4X2RldikKPiA+ICsJCXJldHVybiAtRU5PREVWOwo+ID4g Kwo+ID4gKwlmaWxlLT5wcml2YXRlX2RhdGEgPSBhdXhfZGV2Owo+ID4gKwlyZXR1cm4gMDsKPiA+ ICt9Cj4gPiArCj4gPiArc3RhdGljIHNzaXplX3QgYXV4ZGV2X3JlYWQoc3RydWN0IGZpbGUgKmZp bGUsIGNoYXIgX191c2VyICpidWYsIHNpemVfdCBjb3VudCwKPiA+ICsJCQkgICBsb2ZmX3QgKm9m ZnNldCkKPiA+ICt7Cj4gPiArCWNoYXIgKmxvY2FsYnVmOwo+ID4gKwlzc2l6ZV90IHJlczsKPiA+ ICsJc3RydWN0IGRybV9hdXhfZGV2ICphdXhfZGV2ID0gZmlsZS0+cHJpdmF0ZV9kYXRhOwo+ID4g Kwo+ID4gKwlsb2NhbGJ1ZiA9IG1lbWR1cF91c2VyKGJ1ZiwgY291bnQpOwo+ID4gKwlpZiAoSVNf RVJSKGxvY2FsYnVmKSkKPiA+ICsJCXJldHVybiBQVFJfRVJSKGJ1Zik7Cj4gPiArCj4gPiArCXJl cyA9IGRybV9kcF9kcGNkX3JlYWQoYXV4X2Rldi0+YXV4LCAqb2Zmc2V0LCBsb2NhbGJ1ZiwgY291 bnQpOwo+ID4gKwlpZiAocmVzIDwgMCkKPiA+ICsJCWdvdG8gZmluaXNoOwo+IAo+IHJlYWQvd3Jp dGUgd2lsbCBuZWVkIHRvIGRvIHRoZSBhY2Nlc3MgaW4gMTYgYnl0ZSBjaHVua3MuIFRoYXQncyB0 aGUgbWF4Cj4gYW1vdW50IG9mIGRhdGEgdGhhdCBjYW4gYmUgdHJhbnNmZXJyZWQgd2l0aCBhIHNp bmdsZSBBVVggb3BlcmF0aW9uLiBJCj4gc3VwcG9zZSB0aGF0IHdvdWxkIGFsc28gYXZvaWQgdGhl IG5lZWQgZm9yIGFsbG9jYXRpbmcgbGFyZ2UgYnVmZmVycwo+IHNpbmNlIHlvdSBjYW4ganVzdCBo YXZlIGEgMTYgYnl0ZSBidWZmZXIgb24gdGhlIHN0YWNrIGFuZCBrZWVwIHJldXNpbmcKPiBpdCB3 aGlsZSB5b3UgaXRlcmF0ZSB0aHJvdWdoIHRoZSB0b3RhbCBjb3VudC4gSSdtIG5vdCBzdXJlIHdo YXQgYXJlCj4gdGhlIGV4cGVjdGVkIHNlbWFudGljcyBvZiByZWFkL3dyaXRlIGlmIHlvdSBkbyBp dCBpbiBjaHVua3MgYW5kIGhpdAo+IGEgY29weV97dG8sZnJvbX1fdXNlcigpIGZhaWx1cmUgc29t ZXdoZXJlIGRvd24gdGhlIGxpbmUuIEJ1dCBJIHN1cHBvc2UKPiBhY2Nlc3Nfb2soKSB1cGZyb250 IGZvciB0aGUgd2hvbGUgdXNlciBidWZmZXIgY291bGQgYXZvaWQgdGhhdCBpc3N1ZS4KCklpcmMg c2hvcnQgcmVhZHMgYXJlIG9rIGluIGFsbCBjYXNlcywgc28gd2UgY291bGQgZXZlbiBwdW50IHRo ZSByZXN0YXJ0aW5nCnRvIHVzZXJzcGFjZSBieSBqdXN0IGRvaW5nIHNob3J0IHJlYWRzL3dyaXRl cyAobGlrZSBzb2NrZXRzIGRvKS4KCj4gQWxzbyB0aGUgc2l6ZSBvZiB0aGUgRFBDRCBhZGRyZXNz IHNwYWNlIGlzIDE8PDIwIGJ5dGVzLCBzbyB5b3UnbGwgbmVlZCB0bwo+IGxpbWl0IHRoZSBhY2Nl c3MgdG8gc3RheSB3aXRoaW4gdGhhdC4gJ3NpemUgPSBsc2VlayhmZCwgMCwgU0VFS19FTkQpJwo+ IGNhbiBiZSB1c2VkIHRvIGdldCB0aGUgZmlsZSBzaXplLCBzbyB5b3Ugc2hvdWxkIGFsbG93IHRo ZSBvZmZzZXQgdG8KPiByZWFjaCAxPDwyMCwgYnV0IG5vdCBiZXlvbmQuIHJlYWQvd3JpdGUgc2hv dWxkIHByb2Nlc3MgYXMgbXVjaCBtdWNoIG9mCj4gdGhlIGRhdGEgdGhhdCB0aGV5IGNhbiBnaXZl biB0aGUgY3VycmVudCBmaWxlIG9mZnNldCwgYW5kIHJldHVybiBob3cKPiBtYW55IGJ5dGVzIG1h ZGUgaXQgaW4vb3V0IChjYW4gYWxzbyBiZSAwIGlmIG9mZnNldCB3YXMgYWxyZWFkeSBhdCAxPDwy MCkuCgpIbSwgc291bmRzIGxpa2UgYSBmZXcgdGVzdGNhc2VzIGZvciBjb3JuZXJjYXNlcyB3b3Vs ZCBiZSBuZWF0LiBCZXN0IHdvdWxkCmJlIHRvIGRvIHRoYXQgaW4gaWd0IGFuZCBpdGVyYXRlIG92 ZXIgYWxsIGF2YWlsYWJsZSBkcF9hdXggZGV2IG5vZGVzIChpZ3QKaXMgbm93IGdlbmVyaWMsIHNv IG1ha2VzIHNlbnNlIHRvIHB1dCB0aGF0IHN0dWZmIHRoZXJlKS4gU29tZXRoaW5nIGxpa2UKa21z X2RwX2F1eF9kZXYgd291bGQgYmUgYSBuaWNlIHRlc3RjYXNlIG5hbWUuCi1EYW5pZWwKLS0gCkRh bmllbCBWZXR0ZXIKU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCmh0dHA6Ly9i bG9nLmZmd2xsLmNoCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs Cg==