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: Sun, 27 Sep 2015 15:11:38 +0200 Message-ID: <20150927131138.GE3383@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> <20150925235346.GA8400@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wi0-f180.google.com (mail-wi0-f180.google.com [209.85.212.180]) by gabe.freedesktop.org (Postfix) with ESMTPS id A87426E1E3 for ; Sun, 27 Sep 2015 06:08:45 -0700 (PDT) Received: by wicfx3 with SMTP id fx3so72386301wic.1 for ; Sun, 27 Sep 2015 06:08:44 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20150925235346.GA8400@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Rafael Antognolli Cc: dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gRnJpLCBTZXAgMjUsIDIwMTUgYXQgMDQ6NTM6NDdQTSAtMDcwMCwgUmFmYWVsIEFudG9nbm9s bGkgd3JvdGU6Cj4gT24gVHVlLCBTZXAgMjIsIDIwMTUgYXQgMDI6MTc6NTFQTSArMDIwMCwgRGFu aWVsIFZldHRlciB3cm90ZToKPiA+IE9uIFR1ZSwgU2VwIDIyLCAyMDE1IGF0IDAzOjAwOjU0UE0g KzAzMDAsIFZpbGxlIFN5cmrDpGzDpCB3cm90ZToKPiA+ID4gT24gVHVlLCBTZXAgMTUsIDIwMTUg YXQgMDQ6NTU6MDRQTSAtMDcwMCwgUmFmYWVsIEFudG9nbm9sbGkgd3JvdGU6Cj4gPiA+ID4gVGhp cyBtb2R1bGUgaXMgaGVhdmlseSBiYXNlZCBvbiBpMmMtZGV2LiBPbmNlIGxvYWRlZCwgaXQgcHJv dmlkZXMgb25lCj4gPiA+ID4gZGV2IG5vZGUgcGVyIERQIEFVWCBjaGFubmVsLCBuYW1lZCBkcm1f YXV4LU4uCj4gPiA+ID4gCj4gPiA+ID4gSXQncyBwb3NzaWJsZSB0byBrbm93IHdoaWNoIGNvbm5l Y3RvciBvd25zIHRoaXMgYXV4IGNoYW5uZWwgYnkgbG9va2luZwo+ID4gPiA+IGF0IHRoZSByZXNw ZWN0aXZlIHN5c2ZzIC9zeXMvY2xhc3MvZHJtX2F1eC1kZXYvZHJtX2F1eC1OL2Nvbm5lY3Rvciwg aWYKPiA+ID4gPiB0aGUgY29ubmVjdG9yIGRldmljZSBwb2ludGVyIHdhcyBjb3JyZWN0bHkgc2V0 IGluIHRoZSBhdXggaGVscGVyIHN0cnVjdC4KPiA+ID4gPiAKPiA+ID4gPiBUd28gbWFpbiBvcGVy YXRpb25zIGFyZSBwcm92aWRlZCBvbiB0aGUgcmVnaXN0ZXJzOiByZWFkIGFuZCB3cml0ZS4gVGhl Cj4gPiA+ID4gYWRkcmVzcyBvZiB0aGUgcmVnaXN0ZXIgdG8gYmUgcmVhZCBvciB3cml0dGVuIGlz IGdpdmVuIHVzaW5nIGxzZWVrLgo+ID4gPiA+IFJlYWRpbmcgb3Igd3JpdGluZyBkb2VzIG5vdCB1 cGRhdGUgdGhlIG9mZnNldCBvZiB0aGUgZmlsZS4KPiA+ID4gPiAKPiA+ID4gPiBTaWduZWQtb2Zm LWJ5OiBSYWZhZWwgQW50b2dub2xsaSA8cmFmYWVsLmFudG9nbm9sbGlAaW50ZWwuY29tPgo+ID4g PiA+IC0tLQo+ID4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vS2NvbmZpZyAgICAgICB8ICAgNCArCj4g PiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZSAgICAgIHwgICAxICsKPiA+ID4gPiAgZHJp dmVycy9ncHUvZHJtL2RybV9hdXgtZGV2LmMgfCAzMjYgKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrCj4gPiA+ID4gIDMgZmlsZXMgY2hhbmdlZCwgMzMxIGluc2VydGlv bnMoKykKPiA+ID4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9kcm1fYXV4 LWRldi5jCj4gPiA+ID4gCj4gPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9LY29u ZmlnIGIvZHJpdmVycy9ncHUvZHJtL0tjb25maWcKPiA+ID4gPiBpbmRleCAxYTBhOGRmLi5lYWU4 NDdjIDEwMDY0NAo+ID4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9LY29uZmlnCj4gPiA+ID4g KysrIGIvZHJpdmVycy9ncHUvZHJtL0tjb25maWcKPiA+ID4gPiBAQCAtMjUsNiArMjUsMTAgQEAg Y29uZmlnIERSTV9NSVBJX0RTSQo+ID4gPiA+ICAJYm9vbAo+ID4gPiA+ICAJZGVwZW5kcyBvbiBE Uk0KPiA+ID4gPiAgCj4gPiA+ID4gK2NvbmZpZyBEUk1fQVVYX0NIQVJERVYKPiA+ID4gPiArCXRy aXN0YXRlICJEUk0gRFAgQVVYIEludGVyZmFjZSIKPiA+ID4gPiArCWRlcGVuZHMgb24gRFJNCj4g PiA+ID4gKwo+ID4gPiA+ICBjb25maWcgRFJNX0tNU19IRUxQRVIKPiA+ID4gPiAgCXRyaXN0YXRl Cj4gPiA+ID4gIAlkZXBlbmRzIG9uIERSTQo+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUKPiA+ID4gPiBpbmRleCA0 NWU3NzE5Li5hMWE5NDMwNiAxMDA2NDQKPiA+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vTWFr ZWZpbGUKPiA+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUKPiA+ID4gPiBAQCAt MzIsNiArMzIsNyBAQCBDRkxBR1NfZHJtX3RyYWNlX3BvaW50cy5vIDo9IC1JJChzcmMpCj4gPiA+ ID4gIAo+ID4gPiA+ICBvYmotJChDT05GSUdfRFJNKQkrPSBkcm0ubwo+ID4gPiA+ICBvYmotJChD T05GSUdfRFJNX01JUElfRFNJKSArPSBkcm1fbWlwaV9kc2kubwo+ID4gPiA+ICtvYmotJChDT05G SUdfRFJNX0FVWF9DSEFSREVWKSArPSBkcm1fYXV4LWRldi5vCj4gPiA+ID4gIG9iai0kKENPTkZJ R19EUk1fVFRNKQkrPSB0dG0vCj4gPiA+ID4gIG9iai0kKENPTkZJR19EUk1fVERGWCkJKz0gdGRm eC8KPiA+ID4gPiAgb2JqLSQoQ09ORklHX0RSTV9SMTI4KQkrPSByMTI4Lwo+ID4gPiA+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2F1eC1kZXYuYyBiL2RyaXZlcnMvZ3B1L2RybS9k cm1fYXV4LWRldi5jCj4gPiA+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiA+ID4gPiBpbmRleCAw MDAwMDAwLi5mY2MzMzRhCj4gPiA+ID4gLS0tIC9kZXYvbnVsbAo+ID4gPiA+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9kcm1fYXV4LWRldi5jCj4gPiA+ID4gQEAgLTAsMCArMSwzMjYgQEAKPiA+ID4g PiArLyoKPiA+ID4gPiArICogQ29weXJpZ2h0IMKpIDIwMTUgSW50ZWwgQ29ycG9yYXRpb24KPiA+ ID4gPiArICoKPiA+ID4gPiArICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBv ZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKPiA+ID4gPiArICogY29weSBvZiB0 aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29m dHdhcmUiKSwKPiA+ID4gPiArICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0 cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgo+ID4gPiA+ICsgKiB0aGUgcmln aHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3Vi bGljZW5zZSwKPiA+ID4gPiArICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwg YW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCj4gPiA+ID4gKyAqIFNvZnR3YXJlIGlz IGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6 Cj4gPiA+ID4gKyAqCj4gPiA+ID4gKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0 aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKPiA+ID4gPiArICogcGFy YWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBv cnRpb25zIG9mIHRoZQo+ID4gPiA+ICsgKiBTb2Z0d2FyZS4KPiA+ID4gPiArICoKPiA+ID4gPiAr ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0Yg QU5ZIEtJTkQsIEVYUFJFU1MgT1IKPiA+ID4gPiArICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBO T1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCj4gPiA+ID4g KyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQu ICBJTiBOTyBFVkVOVCBTSEFMTAo+ID4gPiA+ICsgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQg SE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgo+ID4gPiA+ ICsgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9S IE9USEVSV0lTRSwgQVJJU0lORwo+ID4gPiA+ICsgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVD VElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCj4gPiA+ ID4gKyAqIElOIFRIRSBTT0ZUV0FSRS4KPiA+ID4gPiArICoKPiA+ID4gPiArICogQXV0aG9yczoK PiA+ID4gPiArICogICAgUmFmYWVsIEFudG9nbm9sbGkgPHJhZmFlbC5hbnRvZ25vbGxpQGludGVs LmNvbT4KPiA+ID4gPiArICoKPiA+ID4gPiArICovCj4gPiA+ID4gKwo+ID4gPiA+ICsjaW5jbHVk ZSA8bGludXgvZGV2aWNlLmg+Cj4gPiA+ID4gKyNpbmNsdWRlIDxsaW51eC9mcy5oPgo+ID4gPiA+ ICsjaW5jbHVkZSA8bGludXgvc2xhYi5oPgo+ID4gPiA+ICsjaW5jbHVkZSA8bGludXgvaW5pdC5o Pgo+ID4gPiA+ICsjaW5jbHVkZSA8bGludXgva2VybmVsLmg+Cj4gPiA+ID4gKyNpbmNsdWRlIDxs aW51eC9tb2R1bGUuaD4KPiA+ID4gPiArI2luY2x1ZGUgPGFzbS91YWNjZXNzLmg+Cj4gPiA+ID4g KyNpbmNsdWRlIDxkcm0vZHJtX2RwX2hlbHBlci5oPgo+ID4gPiA+ICsjaW5jbHVkZSA8ZHJtL2Ry bV9jcnRjLmg+Cj4gPiA+ID4gKwo+ID4gPiA+ICtzdHJ1Y3QgZHJtX2F1eF9kZXYgewo+ID4gPiA+ ICsJc3RydWN0IGxpc3RfaGVhZCBsaXN0Owo+ID4gPiA+ICsJdW5zaWduZWQgaW5kZXg7Cj4gPiA+ ID4gKwlzdHJ1Y3QgZHJtX2RwX2F1eCAqYXV4Owo+ID4gPiA+ICsJc3RydWN0IGRldmljZSAqZGV2 Owo+ID4gPiA+ICt9Owo+ID4gPiA+ICsKPiA+ID4gPiArI2RlZmluZSBEUk1fQVVYX01JTk9SUwky NTYKPiA+ID4gPiArc3RhdGljIGludCBkcm1fYXV4X2Rldl9jb3VudCA9IDA7Cj4gPiA+ID4gK3N0 YXRpYyBMSVNUX0hFQUQoZHJtX2F1eF9kZXZfbGlzdCk7Cj4gPiA+ID4gK3N0YXRpYyBERUZJTkVf U1BJTkxPQ0soZHJtX2F1eF9kZXZfbGlzdF9sb2NrKTsKPiA+ID4gPiArCj4gPiA+ID4gK3N0YXRp YyBzdHJ1Y3QgZHJtX2F1eF9kZXYgKmRybV9hdXhfZGV2X2dldF9ieV9taW5vcih1bnNpZ25lZCBp bmRleCkKPiA+ID4gPiArewo+ID4gPiA+ICsJc3RydWN0IGRybV9hdXhfZGV2ICphdXhfZGV2Owo+ ID4gPiA+ICsKPiA+ID4gPiArCXNwaW5fbG9jaygmZHJtX2F1eF9kZXZfbGlzdF9sb2NrKTsKPiA+ ID4gPiArCWxpc3RfZm9yX2VhY2hfZW50cnkoYXV4X2RldiwgJmRybV9hdXhfZGV2X2xpc3QsIGxp c3QpIHsKPiA+ID4gPiArCQlpZiAoYXV4X2Rldi0+aW5kZXggPT0gaW5kZXgpCj4gPiA+ID4gKwkJ CWdvdG8gZm91bmQ7Cj4gPiA+ID4gKwl9Cj4gPiA+ID4gKwo+ID4gPiA+ICsJYXV4X2RldiA9IE5V TEw7Cj4gPiA+ID4gK2ZvdW5kOgo+ID4gPiA+ICsJc3Bpbl91bmxvY2soJmRybV9hdXhfZGV2X2xp c3RfbG9jayk7Cj4gPiA+ID4gKwlyZXR1cm4gYXV4X2RldjsKPiA+ID4gPiArfQo+ID4gPiA+ICsK PiA+ID4gPiArc3RhdGljIHN0cnVjdCBkcm1fYXV4X2RldiAqZHJtX2F1eF9kZXZfZ2V0X2J5X2F1 eChzdHJ1Y3QgZHJtX2RwX2F1eCAqYXV4KQo+ID4gPiA+ICt7Cj4gPiA+ID4gKwlzdHJ1Y3QgZHJt X2F1eF9kZXYgKmF1eF9kZXY7Cj4gPiA+ID4gKwo+ID4gPiA+ICsJc3Bpbl9sb2NrKCZkcm1fYXV4 X2Rldl9saXN0X2xvY2spOwo+ID4gPiA+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeShhdXhfZGV2LCAm ZHJtX2F1eF9kZXZfbGlzdCwgbGlzdCkgewo+ID4gPiA+ICsJCWlmIChhdXhfZGV2LT5hdXggPT0g YXV4KQo+ID4gPiA+ICsJCQlnb3RvIGZvdW5kOwo+ID4gPiA+ICsJfQo+ID4gPiA+ICsKPiA+ID4g PiArCWF1eF9kZXYgPSBOVUxMOwo+ID4gPiA+ICtmb3VuZDoKPiA+ID4gPiArCXNwaW5fdW5sb2Nr KCZkcm1fYXV4X2Rldl9saXN0X2xvY2spOwo+ID4gPiA+ICsJcmV0dXJuIGF1eF9kZXY7Cj4gPiA+ ID4gK30KPiA+ID4gPiArCj4gPiA+ID4gK3N0YXRpYyBzdHJ1Y3QgZHJtX2F1eF9kZXYgKmdldF9m cmVlX2RybV9hdXhfZGV2KHN0cnVjdCBkcm1fZHBfYXV4ICphdXgpCj4gPiA+ID4gK3sKPiA+ID4g PiArCXN0cnVjdCBkcm1fYXV4X2RldiAqYXV4X2RldjsKPiA+ID4gPiArCWludCBpbmRleDsKPiA+ ID4gPiArCj4gPiA+ID4gKwlzcGluX2xvY2soJmRybV9hdXhfZGV2X2xpc3RfbG9jayk7Cj4gPiA+ ID4gKwlpbmRleCA9IGRybV9hdXhfZGV2X2NvdW50Owo+ID4gPiA+ICsJc3Bpbl91bmxvY2soJmRy bV9hdXhfZGV2X2xpc3RfbG9jayk7Cj4gPiA+ID4gKwlpZiAoaW5kZXggPj0gRFJNX0FVWF9NSU5P UlMpIHsKPiA+ID4gPiArCQlwcmludGsoS0VSTl9FUlIgImkyYy1kZXY6IE91dCBvZiBkZXZpY2Ug bWlub3JzICglZClcbiIsCj4gPiA+ID4gKwkJICAgICAgIGluZGV4KTsKPiA+ID4gPiArCQlyZXR1 cm4gRVJSX1BUUigtRU5PREVWKTsKPiA+ID4gPiArCX0KPiA+ID4gPiArCj4gPiA+ID4gKwlhdXhf ZGV2ID0ga3phbGxvYyhzaXplb2YoKmF1eF9kZXYpLCBHRlBfS0VSTkVMKTsKPiA+ID4gPiArCWlm ICghYXV4X2RldikKPiA+ID4gPiArCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKPiA+ID4gPiAr CWF1eF9kZXYtPmF1eCA9IGF1eDsKPiA+ID4gPiArCWF1eF9kZXYtPmluZGV4ID0gaW5kZXg7Cj4g PiA+ID4gKwo+ID4gPiA+ICsJc3Bpbl9sb2NrKCZkcm1fYXV4X2Rldl9saXN0X2xvY2spOwo+ID4g PiA+ICsJZHJtX2F1eF9kZXZfY291bnQrKzsKPiA+ID4gPiArCWxpc3RfYWRkX3RhaWwoJmF1eF9k ZXYtPmxpc3QsICZkcm1fYXV4X2Rldl9saXN0KTsKPiA+ID4gPiArCXNwaW5fdW5sb2NrKCZkcm1f YXV4X2Rldl9saXN0X2xvY2spOwo+ID4gPiA+ICsJcmV0dXJuIGF1eF9kZXY7Cj4gPiA+ID4gK30K PiA+ID4gPiArCj4gPiA+ID4gK3N0YXRpYyB2b2lkIHJldHVybl9kcm1fYXV4X2RldihzdHJ1Y3Qg ZHJtX2F1eF9kZXYgKmF1eF9kZXYpCj4gPiA+ID4gK3sKPiA+ID4gPiArCXNwaW5fbG9jaygmZHJt X2F1eF9kZXZfbGlzdF9sb2NrKTsKPiA+ID4gPiArCWxpc3RfZGVsKCZhdXhfZGV2LT5saXN0KTsK PiA+ID4gPiArCXNwaW5fdW5sb2NrKCZkcm1fYXV4X2Rldl9saXN0X2xvY2spOwo+ID4gPiA+ICsJ a2ZyZWUoYXV4X2Rldik7Cj4gPiA+ID4gK30KPiA+ID4gPiArCj4gPiA+ID4gK3N0YXRpYyBzc2l6 ZV90IG5hbWVfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsCj4gPiA+ID4gKwkJCSBzdHJ1Y3QgZGV2 aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQo+ID4gPiA+ICt7Cj4gPiA+ID4gKwlzdHJ1 Y3QgZHJtX2F1eF9kZXYgKmF1eF9kZXYgPSBkcm1fYXV4X2Rldl9nZXRfYnlfbWlub3IoTUlOT1Io ZGV2LT5kZXZ0KSk7Cj4gPiA+ID4gKwo+ID4gPiA+ICsJaWYgKCFhdXhfZGV2KQo+ID4gPiA+ICsJ CXJldHVybiAtRU5PREVWOwo+ID4gPiA+ICsJcmV0dXJuIHNwcmludGYoYnVmLCAiJXNcbiIsIGF1 eF9kZXYtPmF1eC0+bmFtZSk7Cj4gPiA+ID4gK30KPiA+ID4gPiArc3RhdGljIERFVklDRV9BVFRS X1JPKG5hbWUpOwo+ID4gPiA+ICsKPiA+ID4gPiArc3RhdGljIHNzaXplX3QgY29ubmVjdG9yX3No b3coc3RydWN0IGRldmljZSAqZGV2LAo+ID4gPiA+ICsJCQkgICAgICBzdHJ1Y3QgZGV2aWNlX2F0 dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQo+ID4gPiA+ICt7Cj4gPiA+ID4gKwlzdHJ1Y3QgZHJt X2F1eF9kZXYgKmF1eF9kZXYgPSBkcm1fYXV4X2Rldl9nZXRfYnlfbWlub3IoTUlOT1IoZGV2LT5k ZXZ0KSk7Cj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX2RwX2F1eCAqYXV4Owo+ID4gPiA+ICsJc3RydWN0 IGRldmljZSAqY29ubl9kZXY7Cj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVj dG9yID0gTlVMTDsKPiA+ID4gPiArCj4gPiA+ID4gKwlpZiAoIWF1eF9kZXYpCj4gPiA+ID4gKwkJ cmV0dXJuIC1FTk9ERVY7Cj4gPiA+ID4gKwlhdXggPSBhdXhfZGV2LT5hdXg7Cj4gPiA+ID4gKwlj b25uX2RldiA9IGF1eC0+Y29ubmVjdG9yOwo+ID4gPiA+ICsJaWYgKCFjb25uX2RldikKPiA+ID4g PiArCQlyZXR1cm4gc3ByaW50ZihidWYsICJ1bmtub3duXG4iKTsKPiA+ID4gPiArCj4gPiA+ID4g Kwljb25uZWN0b3IgPSBkZXZfZ2V0X2RydmRhdGEoYXV4LT5jb25uZWN0b3IpOwo+ID4gPiA+ICsK PiA+ID4gPiArCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiVzXG4iLCBjb25uZWN0b3ItPm5hbWUpOwo+ ID4gPiA+ICt9Cj4gPiA+ID4gK3N0YXRpYyBERVZJQ0VfQVRUUl9STyhjb25uZWN0b3IpOwo+ID4g PiA+ICsKPiA+ID4gPiArc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmRybV9hdXhfYXR0cnNbXSA9 IHsKPiA+ID4gPiArCSZkZXZfYXR0cl9uYW1lLmF0dHIsCj4gPiA+ID4gKwkmZGV2X2F0dHJfY29u bmVjdG9yLmF0dHIsCj4gPiA+ID4gKwlOVUxMLAo+ID4gPiA+ICt9Owo+ID4gPiA+ICtBVFRSSUJV VEVfR1JPVVBTKGRybV9hdXgpOwo+ID4gPiA+ICsKPiA+ID4gPiArc3RhdGljIGludCBhdXhkZXZf b3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSkKPiA+ID4gPiArewo+ ID4gPiA+ICsJdW5zaWduZWQgaW50IG1pbm9yID0gaW1pbm9yKGlub2RlKTsKPiA+ID4gPiArCXN0 cnVjdCBkcm1fYXV4X2RldiAqYXV4X2RldjsKPiA+ID4gPiArCj4gPiA+ID4gKwlhdXhfZGV2ID0g ZHJtX2F1eF9kZXZfZ2V0X2J5X21pbm9yKG1pbm9yKTsKPiA+ID4gPiArCWlmICghYXV4X2RldikK PiA+ID4gPiArCQlyZXR1cm4gLUVOT0RFVjsKPiA+ID4gPiArCj4gPiA+ID4gKwlmaWxlLT5wcml2 YXRlX2RhdGEgPSBhdXhfZGV2Owo+ID4gPiA+ICsJcmV0dXJuIDA7Cj4gPiA+ID4gK30KPiA+ID4g PiArCj4gPiA+ID4gK3N0YXRpYyBzc2l6ZV90IGF1eGRldl9yZWFkKHN0cnVjdCBmaWxlICpmaWxl LCBjaGFyIF9fdXNlciAqYnVmLCBzaXplX3QgY291bnQsCj4gPiA+ID4gKwkJCSAgIGxvZmZfdCAq b2Zmc2V0KQo+ID4gPiA+ICt7Cj4gPiA+ID4gKwljaGFyICpsb2NhbGJ1ZjsKPiA+ID4gPiArCXNz aXplX3QgcmVzOwo+ID4gPiA+ICsJc3RydWN0IGRybV9hdXhfZGV2ICphdXhfZGV2ID0gZmlsZS0+ cHJpdmF0ZV9kYXRhOwo+ID4gPiA+ICsKPiA+ID4gPiArCWxvY2FsYnVmID0gbWVtZHVwX3VzZXIo YnVmLCBjb3VudCk7Cj4gPiA+ID4gKwlpZiAoSVNfRVJSKGxvY2FsYnVmKSkKPiA+ID4gPiArCQly ZXR1cm4gUFRSX0VSUihidWYpOwo+ID4gPiA+ICsKPiA+ID4gPiArCXJlcyA9IGRybV9kcF9kcGNk X3JlYWQoYXV4X2Rldi0+YXV4LCAqb2Zmc2V0LCBsb2NhbGJ1ZiwgY291bnQpOwo+ID4gPiA+ICsJ aWYgKHJlcyA8IDApCj4gPiA+ID4gKwkJZ290byBmaW5pc2g7Cj4gPiA+IAo+ID4gPiByZWFkL3dy aXRlIHdpbGwgbmVlZCB0byBkbyB0aGUgYWNjZXNzIGluIDE2IGJ5dGUgY2h1bmtzLiBUaGF0J3Mg dGhlIG1heAo+ID4gPiBhbW91bnQgb2YgZGF0YSB0aGF0IGNhbiBiZSB0cmFuc2ZlcnJlZCB3aXRo IGEgc2luZ2xlIEFVWCBvcGVyYXRpb24uIEkKPiA+ID4gc3VwcG9zZSB0aGF0IHdvdWxkIGFsc28g YXZvaWQgdGhlIG5lZWQgZm9yIGFsbG9jYXRpbmcgbGFyZ2UgYnVmZmVycwo+ID4gPiBzaW5jZSB5 b3UgY2FuIGp1c3QgaGF2ZSBhIDE2IGJ5dGUgYnVmZmVyIG9uIHRoZSBzdGFjayBhbmQga2VlcCBy ZXVzaW5nCj4gPiA+IGl0IHdoaWxlIHlvdSBpdGVyYXRlIHRocm91Z2ggdGhlIHRvdGFsIGNvdW50 LiBJJ20gbm90IHN1cmUgd2hhdCBhcmUKPiA+ID4gdGhlIGV4cGVjdGVkIHNlbWFudGljcyBvZiBy ZWFkL3dyaXRlIGlmIHlvdSBkbyBpdCBpbiBjaHVua3MgYW5kIGhpdAo+ID4gPiBhIGNvcHlfe3Rv LGZyb219X3VzZXIoKSBmYWlsdXJlIHNvbWV3aGVyZSBkb3duIHRoZSBsaW5lLiBCdXQgSSBzdXBw b3NlCj4gPiA+IGFjY2Vzc19vaygpIHVwZnJvbnQgZm9yIHRoZSB3aG9sZSB1c2VyIGJ1ZmZlciBj b3VsZCBhdm9pZCB0aGF0IGlzc3VlLgo+ID4gCj4gPiBJaXJjIHNob3J0IHJlYWRzIGFyZSBvayBp biBhbGwgY2FzZXMsIHNvIHdlIGNvdWxkIGV2ZW4gcHVudCB0aGUgcmVzdGFydGluZwo+ID4gdG8g dXNlcnNwYWNlIGJ5IGp1c3QgZG9pbmcgc2hvcnQgcmVhZHMvd3JpdGVzIChsaWtlIHNvY2tldHMg ZG8pLgo+ID4gCj4gPiA+IEFsc28gdGhlIHNpemUgb2YgdGhlIERQQ0QgYWRkcmVzcyBzcGFjZSBp cyAxPDwyMCBieXRlcywgc28geW91J2xsIG5lZWQgdG8KPiA+ID4gbGltaXQgdGhlIGFjY2VzcyB0 byBzdGF5IHdpdGhpbiB0aGF0LiAnc2l6ZSA9IGxzZWVrKGZkLCAwLCBTRUVLX0VORCknCj4gPiA+ IGNhbiBiZSB1c2VkIHRvIGdldCB0aGUgZmlsZSBzaXplLCBzbyB5b3Ugc2hvdWxkIGFsbG93IHRo ZSBvZmZzZXQgdG8KPiA+ID4gcmVhY2ggMTw8MjAsIGJ1dCBub3QgYmV5b25kLiByZWFkL3dyaXRl IHNob3VsZCBwcm9jZXNzIGFzIG11Y2ggbXVjaCBvZgo+ID4gPiB0aGUgZGF0YSB0aGF0IHRoZXkg Y2FuIGdpdmVuIHRoZSBjdXJyZW50IGZpbGUgb2Zmc2V0LCBhbmQgcmV0dXJuIGhvdwo+ID4gPiBt YW55IGJ5dGVzIG1hZGUgaXQgaW4vb3V0IChjYW4gYWxzbyBiZSAwIGlmIG9mZnNldCB3YXMgYWxy ZWFkeSBhdCAxPDwyMCkuCj4gPiAKPiA+IEhtLCBzb3VuZHMgbGlrZSBhIGZldyB0ZXN0Y2FzZXMg Zm9yIGNvcm5lcmNhc2VzIHdvdWxkIGJlIG5lYXQuIEJlc3Qgd291bGQKPiA+IGJlIHRvIGRvIHRo YXQgaW4gaWd0IGFuZCBpdGVyYXRlIG92ZXIgYWxsIGF2YWlsYWJsZSBkcF9hdXggZGV2IG5vZGVz IChpZ3QKPiA+IGlzIG5vdyBnZW5lcmljLCBzbyBtYWtlcyBzZW5zZSB0byBwdXQgdGhhdCBzdHVm ZiB0aGVyZSkuIFNvbWV0aGluZyBsaWtlCj4gPiBrbXNfZHBfYXV4X2RldiB3b3VsZCBiZSBhIG5p Y2UgdGVzdGNhc2UgbmFtZS4KPiAKPiBPSywgSSBzZW50IGFuIHVwZGF0ZWQgcGF0Y2ggc2V0IGlu Y2x1ZGluZyBhbGwgKEkgdGhpbmspIGNoYW5nZXMKPiBzdWdnZXN0ZWQgYnkgeW91IGFuZCBWaWxs ZS4KPiAKPiBJJ20gd29ya2luZyBvbiB0aGUgaWd0IHRlc3QsIGJ1dCBJIGFtIG5vdCBzdXJlIGV4 YWN0bHkgd2hhdCBjb3JuZXJjYXNlcwo+IHRvIHRlc3QsIGFuZCBzcGVjaWFsbHkgaG93IHRvIHRl c3QgdGhlbS4gSSBjYW4gcmVhZCBhIGNvdXBsZSBvZgo+IHJlZ2lzdGVycyB0aGF0IEkgaGF2ZSBh biBpZGVhIG9mIHdoYXQgdG8gZXhwZWN0IGZyb20gdGhlbSwgYnV0IG5vdAo+IGNvcm5lciBjYXNl cy4gV2hhdCBkbyB5b3UgaGF2ZSBpbiBtaW5kPwoKVHJ5aW5nIHRvIHJlYWQgbW9yZSB0aGFuIHdo YXQgZml0cyBpbnRvIGEgc2luZ2xlIGRwIGF1eCB0cmFuc2FjdGlvbiAodG8KdGVzdCB0aGUgcGFy dGlhbCByZWFkcy93cml0ZXMgc3R1ZmYpIGFuZCB0cnlpbmcgdG8gcmVhZCBpbnZhbGlkIG9mZnNl dHMKKHRvIGhpZ2ggYWRkcmVzcykuIE5vdCBzdXJlIHdoZXRoZXIgd2Ugc2hvdWxkIGRvIGFueSB3 cml0aW5nIHRlc3RzIHNpbmNlCnRoYXQgbWlnaHQgY2F1c2UgdHJvdWJsZSAuLi4KCj4gQWxzbywg SSBhbSBub3Qgc3VyZSBob3cgdG8gaWRlbnRpZnkgdGhhdCBhIGdpdmVuIGF1eCBjaGFubmVsIGRv ZXNuJ3QKPiBoYXZlIGEgZGlzcGxheS9wYW5lbCBhdHRhY2hlZCB0byBpdCwgc28gZXZlbiBhIHJl YWQgb3BlcmF0aW9uIGp1c3QgZmFpbHMKPiB3aXRoIGEgY29ubmVjdGlvbiB0aW1lb3V0LiBTaG91 bGQgSSBqdXN0IHNraXAgdGhpcyBhdXggY2hhbm5lbCBvbiB0aGlzCj4gY2FzZSwgYW5kIG5vdCBj b25zaWRlciBpdCBhIGZhaWx1cmUsIHdoZW4gaXRlcmF0aW5nIG92ZXIgdGhlbT8KClllYWggdGhh dCdzIHdoYXQgd2UgdXN1YWxseSBkby4gVGhlcmUncyBpZ3RfcmVxdWlyZS9za2lwX29uIGZvciB0 aGVzZSBraW5kCm9mIHNvZnQgZmFpbHVyZXMgd2hpY2ggc2hvdWxkIGp1c3QgcmVzdWx0IGluIGEg dGVzdGNhc2UgZ2V0dGluZyBza2lwcGVkLgpOb3RlIHRoYXQgb25seSB0aGUgZmlyc3QgKHRlc3Qt KXJlYWQgc2hvdWxkIGRvIHRoYXQsIGp1c3QgaW4gY2FzZSB0aGVyZSdzCmJ1Z3MgaW4gdGhlIHJl YWwgdGVzdGNhc2UgbGF0ZXIgb24gKGUuZy4gdGhlIHBhcnRpYWwgcmVhZCBzdHVmZiBtaWdodCBn aXZlCmEgYm9ndXMgZXJyb3Igd2hlbiBpdCBzaG91bGRuJ3QpLiBBbHNvIGl0IHdvdWxkIGJlIGdv b2QgdG8gZW5jb2RlIHRoZQplcnJubyB2YWx1ZSB3ZSBleHBlY3QgaW4gdGhhdCBjYXNlIHRvby4g RVRJTUVET1VUIHNlZW1zIHRvIGJlIHdoYXQgYXQKbGVhc3QgaTkxNSB3aWxsIHJldHVybiBpZiBu b3RoaW5nIGlzIGNvbm5lY3RlZCAoY29tcGFyZWQgdG8gLUVJTyB3aGljaCBpcwptb3JlIGFuIGlu ZGljYXRpb24gb2YgdGhlIGRwIGF1eCBjb250cm9sbGVyIGJlaW5nIHRvYXN0KS4KLURhbmllbAot LSAKRGFuaWVsIFZldHRlcgpTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KaHR0 cDovL2Jsb2cuZmZ3bGwuY2gKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmkt ZGV2ZWwK