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 11:01:56 +0200 Message-ID: <20150922090156.GV3383@phenom.ffwll.local> References: <1442361304-16740-1-git-send-email-rafael.antognolli@intel.com> <1442361304-16740-4-git-send-email-rafael.antognolli@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wi0-f169.google.com (mail-wi0-f169.google.com [209.85.212.169]) by gabe.freedesktop.org (Postfix) with ESMTPS id CC4286E5D0 for ; Tue, 22 Sep 2015 01:59:04 -0700 (PDT) Received: by wicfx3 with SMTP id fx3so181462820wic.1 for ; Tue, 22 Sep 2015 01:59:03 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1442361304-16740-4-git-send-email-rafael.antognolli@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 T24gVHVlLCBTZXAgMTUsIDIwMTUgYXQgMDQ6NTU6MDRQTSAtMDcwMCwgUmFmYWVsIEFudG9nbm9s bGkgd3JvdGU6Cj4gVGhpcyBtb2R1bGUgaXMgaGVhdmlseSBiYXNlZCBvbiBpMmMtZGV2LiBPbmNl IGxvYWRlZCwgaXQgcHJvdmlkZXMgb25lCj4gZGV2IG5vZGUgcGVyIERQIEFVWCBjaGFubmVsLCBu YW1lZCBkcm1fYXV4LU4uCj4gCj4gSXQncyBwb3NzaWJsZSB0byBrbm93IHdoaWNoIGNvbm5lY3Rv ciBvd25zIHRoaXMgYXV4IGNoYW5uZWwgYnkgbG9va2luZwo+IGF0IHRoZSByZXNwZWN0aXZlIHN5 c2ZzIC9zeXMvY2xhc3MvZHJtX2F1eC1kZXYvZHJtX2F1eC1OL2Nvbm5lY3RvciwgaWYKPiB0aGUg Y29ubmVjdG9yIGRldmljZSBwb2ludGVyIHdhcyBjb3JyZWN0bHkgc2V0IGluIHRoZSBhdXggaGVs cGVyIHN0cnVjdC4KPiAKPiBUd28gbWFpbiBvcGVyYXRpb25zIGFyZSBwcm92aWRlZCBvbiB0aGUg cmVnaXN0ZXJzOiByZWFkIGFuZCB3cml0ZS4gVGhlCj4gYWRkcmVzcyBvZiB0aGUgcmVnaXN0ZXIg dG8gYmUgcmVhZCBvciB3cml0dGVuIGlzIGdpdmVuIHVzaW5nIGxzZWVrLgo+IFJlYWRpbmcgb3Ig d3JpdGluZyBkb2VzIG5vdCB1cGRhdGUgdGhlIG9mZnNldCBvZiB0aGUgZmlsZS4KPiAKPiBTaWdu ZWQtb2ZmLWJ5OiBSYWZhZWwgQW50b2dub2xsaSA8cmFmYWVsLmFudG9nbm9sbGlAaW50ZWwuY29t Pgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vS2NvbmZpZyAgICAgICB8ICAgNCArCj4gIGRyaXZl cnMvZ3B1L2RybS9NYWtlZmlsZSAgICAgIHwgICAxICsKPiAgZHJpdmVycy9ncHUvZHJtL2RybV9h dXgtZGV2LmMgfCAzMjYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr Cj4gIDMgZmlsZXMgY2hhbmdlZCwgMzMxIGluc2VydGlvbnMoKykKPiAgY3JlYXRlIG1vZGUgMTAw NjQ0IGRyaXZlcnMvZ3B1L2RybS9kcm1fYXV4LWRldi5jCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9LY29uZmlnIGIvZHJpdmVycy9ncHUvZHJtL0tjb25maWcKPiBpbmRleCAxYTBh OGRmLi5lYWU4NDdjIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9LY29uZmlnCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL0tjb25maWcKPiBAQCAtMjUsNiArMjUsMTAgQEAgY29uZmlnIERS TV9NSVBJX0RTSQo+ICAJYm9vbAo+ICAJZGVwZW5kcyBvbiBEUk0KPiAgCj4gK2NvbmZpZyBEUk1f QVVYX0NIQVJERVYKPiArCXRyaXN0YXRlICJEUk0gRFAgQVVYIEludGVyZmFjZSIKCkltbyBqdXN0 IG1ha2UgdGhpcyBhIGJvb2xlYW4sIHdpbGwgc2ltcGxpZnkgdGhpbmdzIGEgbG90LiBBbHNvIGlm IHlvdQppbXBsZW1lbnQgdGhlIGRybV9kcF9hdXhfcmVnaXN0ZXJfZGV2bm9kZSB5b3UgbmVlZCB0 byBhZGQgc3RhdGljIGlubGluZQpzdHVicyBmb3IgcmVnaXN0ZXIvdW5yZWdpc3RlciBmdW5jdGlv bnMgc28gdGhhdCBpdCBhbGwgd29ya3Mgb3V0IGlmIHRoaXMKb3B0aW9uIGlzIGRpc2FibGVkLiBT ZWUgZm9yIGV4YW1wbGUgaG93IHRoZSByZWNlbnQgY2hhbmdlcyB0byB0aGUgZHJtIGZiCmhlbHBl cnMgYXJlIGRvbmUuCgo+ICsJZGVwZW5kcyBvbiBEUk0KPiArCj4gIGNvbmZpZyBEUk1fS01TX0hF TFBFUgo+ICAJdHJpc3RhdGUKPiAgCWRlcGVuZHMgb24gRFJNCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZQo+IGluZGV4IDQ1 ZTc3MTkuLmExYTk0MzA2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZQo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZQo+IEBAIC0zMiw2ICszMiw3IEBAIENGTEFH U19kcm1fdHJhY2VfcG9pbnRzLm8gOj0gLUkkKHNyYykKPiAgCj4gIG9iai0kKENPTkZJR19EUk0p CSs9IGRybS5vCj4gIG9iai0kKENPTkZJR19EUk1fTUlQSV9EU0kpICs9IGRybV9taXBpX2RzaS5v Cj4gK29iai0kKENPTkZJR19EUk1fQVVYX0NIQVJERVYpICs9IGRybV9hdXgtZGV2Lm8KCkknZCBj YWxsIHRoZSBmaWxlIGRybV9kcF9hdXhfZGV2Lm8sIGRybV9kcF9hdXggZm9yIGNvbnNpc3RlbmN5 IGluIHByZWZpeGVzCmFuZCBtaXhpbmcgLSBhbmQgXyBpbiBmaWxlbmFtZXMgbG9va3Mgc3RyYW5n ZSB0byBtZSA7LSkKLURhbmllbAoKPiAgb2JqLSQoQ09ORklHX0RSTV9UVE0pCSs9IHR0bS8KPiAg b2JqLSQoQ09ORklHX0RSTV9UREZYKQkrPSB0ZGZ4Lwo+ICBvYmotJChDT05GSUdfRFJNX1IxMjgp CSs9IHIxMjgvCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXV4LWRldi5jIGIv ZHJpdmVycy9ncHUvZHJtL2RybV9hdXgtZGV2LmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGlu ZGV4IDAwMDAwMDAuLmZjYzMzNGEKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2RybV9hdXgtZGV2LmMKPiBAQCAtMCwwICsxLDMyNiBAQAo+ICsvKgo+ICsgKiBDb3B5cmln aHQgwqkgMjAxNSBJbnRlbCBDb3Jwb3JhdGlvbgo+ICsgKgo+ICsgKiBQZXJtaXNzaW9uIGlzIGhl cmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQo+ ICsgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBm aWxlcyAodGhlICJTb2Z0d2FyZSIpLAo+ICsgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRo b3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCj4gKyAqIHRoZSBy aWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBz dWJsaWNlbnNlLAo+ICsgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQg dG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKPiArICogU29mdHdhcmUgaXMgZnVybmlzaGVk IHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKPiArICoKPiAr ICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ug KGluY2x1ZGluZyB0aGUgbmV4dAo+ICsgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGlu IGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCj4gKyAqIFNvZnR3YXJl Lgo+ICsgKgo+ICsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBX QVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgo+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcg QlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKPiAr ICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4g IElOIE5PIEVWRU5UIFNIQUxMCj4gKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJT IEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCj4gKyAqIExJQUJJTElU WSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBB UklTSU5HCj4gKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRX QVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKPiArICogSU4gVEhFIFNPRlRXQVJFLgo+ ICsgKgo+ICsgKiBBdXRob3JzOgo+ICsgKiAgICBSYWZhZWwgQW50b2dub2xsaSA8cmFmYWVsLmFu dG9nbm9sbGlAaW50ZWwuY29tPgo+ICsgKgo+ICsgKi8KPiArCj4gKyNpbmNsdWRlIDxsaW51eC9k ZXZpY2UuaD4KPiArI2luY2x1ZGUgPGxpbnV4L2ZzLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9zbGFi Lmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9pbml0Lmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwu aD4KPiArI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgo+ICsjaW5jbHVkZSA8YXNtL3VhY2Nlc3Mu aD4KPiArI2luY2x1ZGUgPGRybS9kcm1fZHBfaGVscGVyLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJt X2NydGMuaD4KPiArCj4gK3N0cnVjdCBkcm1fYXV4X2RldiB7Cj4gKwlzdHJ1Y3QgbGlzdF9oZWFk IGxpc3Q7Cj4gKwl1bnNpZ25lZCBpbmRleDsKPiArCXN0cnVjdCBkcm1fZHBfYXV4ICphdXg7Cj4g KwlzdHJ1Y3QgZGV2aWNlICpkZXY7Cj4gK307Cj4gKwo+ICsjZGVmaW5lIERSTV9BVVhfTUlOT1JT CTI1Ngo+ICtzdGF0aWMgaW50IGRybV9hdXhfZGV2X2NvdW50ID0gMDsKPiArc3RhdGljIExJU1Rf SEVBRChkcm1fYXV4X2Rldl9saXN0KTsKPiArc3RhdGljIERFRklORV9TUElOTE9DSyhkcm1fYXV4 X2Rldl9saXN0X2xvY2spOwo+ICsKPiArc3RhdGljIHN0cnVjdCBkcm1fYXV4X2RldiAqZHJtX2F1 eF9kZXZfZ2V0X2J5X21pbm9yKHVuc2lnbmVkIGluZGV4KQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2F1 eF9kZXYgKmF1eF9kZXY7Cj4gKwo+ICsJc3Bpbl9sb2NrKCZkcm1fYXV4X2Rldl9saXN0X2xvY2sp Owo+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeShhdXhfZGV2LCAmZHJtX2F1eF9kZXZfbGlzdCwgbGlz dCkgewo+ICsJCWlmIChhdXhfZGV2LT5pbmRleCA9PSBpbmRleCkKPiArCQkJZ290byBmb3VuZDsK PiArCX0KPiArCj4gKwlhdXhfZGV2ID0gTlVMTDsKPiArZm91bmQ6Cj4gKwlzcGluX3VubG9jaygm ZHJtX2F1eF9kZXZfbGlzdF9sb2NrKTsKPiArCXJldHVybiBhdXhfZGV2Owo+ICt9Cj4gKwo+ICtz dGF0aWMgc3RydWN0IGRybV9hdXhfZGV2ICpkcm1fYXV4X2Rldl9nZXRfYnlfYXV4KHN0cnVjdCBk cm1fZHBfYXV4ICphdXgpCj4gK3sKPiArCXN0cnVjdCBkcm1fYXV4X2RldiAqYXV4X2RldjsKPiAr Cj4gKwlzcGluX2xvY2soJmRybV9hdXhfZGV2X2xpc3RfbG9jayk7Cj4gKwlsaXN0X2Zvcl9lYWNo X2VudHJ5KGF1eF9kZXYsICZkcm1fYXV4X2Rldl9saXN0LCBsaXN0KSB7Cj4gKwkJaWYgKGF1eF9k ZXYtPmF1eCA9PSBhdXgpCj4gKwkJCWdvdG8gZm91bmQ7Cj4gKwl9Cj4gKwo+ICsJYXV4X2RldiA9 IE5VTEw7Cj4gK2ZvdW5kOgo+ICsJc3Bpbl91bmxvY2soJmRybV9hdXhfZGV2X2xpc3RfbG9jayk7 Cj4gKwlyZXR1cm4gYXV4X2RldjsKPiArfQo+ICsKPiArc3RhdGljIHN0cnVjdCBkcm1fYXV4X2Rl diAqZ2V0X2ZyZWVfZHJtX2F1eF9kZXYoc3RydWN0IGRybV9kcF9hdXggKmF1eCkKPiArewo+ICsJ c3RydWN0IGRybV9hdXhfZGV2ICphdXhfZGV2Owo+ICsJaW50IGluZGV4Owo+ICsKPiArCXNwaW5f bG9jaygmZHJtX2F1eF9kZXZfbGlzdF9sb2NrKTsKPiArCWluZGV4ID0gZHJtX2F1eF9kZXZfY291 bnQ7Cj4gKwlzcGluX3VubG9jaygmZHJtX2F1eF9kZXZfbGlzdF9sb2NrKTsKPiArCWlmIChpbmRl eCA+PSBEUk1fQVVYX01JTk9SUykgewo+ICsJCXByaW50ayhLRVJOX0VSUiAiaTJjLWRldjogT3V0 IG9mIGRldmljZSBtaW5vcnMgKCVkKVxuIiwKPiArCQkgICAgICAgaW5kZXgpOwo+ICsJCXJldHVy biBFUlJfUFRSKC1FTk9ERVYpOwo+ICsJfQo+ICsKPiArCWF1eF9kZXYgPSBremFsbG9jKHNpemVv ZigqYXV4X2RldiksIEdGUF9LRVJORUwpOwo+ICsJaWYgKCFhdXhfZGV2KQo+ICsJCXJldHVybiBF UlJfUFRSKC1FTk9NRU0pOwo+ICsJYXV4X2Rldi0+YXV4ID0gYXV4Owo+ICsJYXV4X2Rldi0+aW5k ZXggPSBpbmRleDsKPiArCj4gKwlzcGluX2xvY2soJmRybV9hdXhfZGV2X2xpc3RfbG9jayk7Cj4g Kwlkcm1fYXV4X2Rldl9jb3VudCsrOwo+ICsJbGlzdF9hZGRfdGFpbCgmYXV4X2Rldi0+bGlzdCwg JmRybV9hdXhfZGV2X2xpc3QpOwo+ICsJc3Bpbl91bmxvY2soJmRybV9hdXhfZGV2X2xpc3RfbG9j ayk7Cj4gKwlyZXR1cm4gYXV4X2RldjsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgcmV0dXJuX2Ry bV9hdXhfZGV2KHN0cnVjdCBkcm1fYXV4X2RldiAqYXV4X2RldikKPiArewo+ICsJc3Bpbl9sb2Nr KCZkcm1fYXV4X2Rldl9saXN0X2xvY2spOwo+ICsJbGlzdF9kZWwoJmF1eF9kZXYtPmxpc3QpOwo+ ICsJc3Bpbl91bmxvY2soJmRybV9hdXhfZGV2X2xpc3RfbG9jayk7Cj4gKwlrZnJlZShhdXhfZGV2 KTsKPiArfQo+ICsKPiArc3RhdGljIHNzaXplX3QgbmFtZV9zaG93KHN0cnVjdCBkZXZpY2UgKmRl diwKPiArCQkJIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCj4gK3sK PiArCXN0cnVjdCBkcm1fYXV4X2RldiAqYXV4X2RldiA9IGRybV9hdXhfZGV2X2dldF9ieV9taW5v cihNSU5PUihkZXYtPmRldnQpKTsKPiArCj4gKwlpZiAoIWF1eF9kZXYpCj4gKwkJcmV0dXJuIC1F Tk9ERVY7Cj4gKwlyZXR1cm4gc3ByaW50ZihidWYsICIlc1xuIiwgYXV4X2Rldi0+YXV4LT5uYW1l KTsKPiArfQo+ICtzdGF0aWMgREVWSUNFX0FUVFJfUk8obmFtZSk7Cj4gKwo+ICtzdGF0aWMgc3Np emVfdCBjb25uZWN0b3Jfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsCj4gKwkJCSAgICAgIHN0cnVj dCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCj4gK3sKPiArCXN0cnVjdCBkcm1f YXV4X2RldiAqYXV4X2RldiA9IGRybV9hdXhfZGV2X2dldF9ieV9taW5vcihNSU5PUihkZXYtPmRl dnQpKTsKPiArCXN0cnVjdCBkcm1fZHBfYXV4ICphdXg7Cj4gKwlzdHJ1Y3QgZGV2aWNlICpjb25u X2RldjsKPiArCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IgPSBOVUxMOwo+ICsKPiAr CWlmICghYXV4X2RldikKPiArCQlyZXR1cm4gLUVOT0RFVjsKPiArCWF1eCA9IGF1eF9kZXYtPmF1 eDsKPiArCWNvbm5fZGV2ID0gYXV4LT5jb25uZWN0b3I7Cj4gKwlpZiAoIWNvbm5fZGV2KQo+ICsJ CXJldHVybiBzcHJpbnRmKGJ1ZiwgInVua25vd25cbiIpOwo+ICsKPiArCWNvbm5lY3RvciA9IGRl dl9nZXRfZHJ2ZGF0YShhdXgtPmNvbm5lY3Rvcik7Cj4gKwo+ICsJcmV0dXJuIHNwcmludGYoYnVm LCAiJXNcbiIsIGNvbm5lY3Rvci0+bmFtZSk7Cj4gK30KPiArc3RhdGljIERFVklDRV9BVFRSX1JP KGNvbm5lY3Rvcik7Cj4gKwo+ICtzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqZHJtX2F1eF9hdHRy c1tdID0gewo+ICsJJmRldl9hdHRyX25hbWUuYXR0ciwKPiArCSZkZXZfYXR0cl9jb25uZWN0b3Iu YXR0ciwKPiArCU5VTEwsCj4gK307Cj4gK0FUVFJJQlVURV9HUk9VUFMoZHJtX2F1eCk7Cj4gKwo+ ICtzdGF0aWMgaW50IGF1eGRldl9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxl ICpmaWxlKQo+ICt7Cj4gKwl1bnNpZ25lZCBpbnQgbWlub3IgPSBpbWlub3IoaW5vZGUpOwo+ICsJ c3RydWN0IGRybV9hdXhfZGV2ICphdXhfZGV2Owo+ICsKPiArCWF1eF9kZXYgPSBkcm1fYXV4X2Rl dl9nZXRfYnlfbWlub3IobWlub3IpOwo+ICsJaWYgKCFhdXhfZGV2KQo+ICsJCXJldHVybiAtRU5P REVWOwo+ICsKPiArCWZpbGUtPnByaXZhdGVfZGF0YSA9IGF1eF9kZXY7Cj4gKwlyZXR1cm4gMDsK PiArfQo+ICsKPiArc3RhdGljIHNzaXplX3QgYXV4ZGV2X3JlYWQoc3RydWN0IGZpbGUgKmZpbGUs IGNoYXIgX191c2VyICpidWYsIHNpemVfdCBjb3VudCwKPiArCQkJICAgbG9mZl90ICpvZmZzZXQp Cj4gK3sKPiArCWNoYXIgKmxvY2FsYnVmOwo+ICsJc3NpemVfdCByZXM7Cj4gKwlzdHJ1Y3QgZHJt X2F1eF9kZXYgKmF1eF9kZXYgPSBmaWxlLT5wcml2YXRlX2RhdGE7Cj4gKwo+ICsJbG9jYWxidWYg PSBtZW1kdXBfdXNlcihidWYsIGNvdW50KTsKPiArCWlmIChJU19FUlIobG9jYWxidWYpKQo+ICsJ CXJldHVybiBQVFJfRVJSKGJ1Zik7Cj4gKwo+ICsJcmVzID0gZHJtX2RwX2RwY2RfcmVhZChhdXhf ZGV2LT5hdXgsICpvZmZzZXQsIGxvY2FsYnVmLCBjb3VudCk7Cj4gKwlpZiAocmVzIDwgMCkKPiAr CQlnb3RvIGZpbmlzaDsKPiArCj4gKwlpZiAoY29weV90b191c2VyKGJ1ZiwgbG9jYWxidWYsIHJl cykpCj4gKwkJcmVzID0gLUVGQVVMVDsKPiArCj4gK2ZpbmlzaDoKPiArCWtmcmVlKGxvY2FsYnVm KTsKPiArCXJldHVybiByZXM7Cj4gK30KPiArCj4gK3N0YXRpYyBzc2l6ZV90IGF1eGRldl93cml0 ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKmJ1ZiwKPiArCQkJICAgIHNp emVfdCBjb3VudCwgbG9mZl90ICpvZmZzZXQpCj4gK3sKPiArCWNoYXIgKmxvY2FsYnVmOwo+ICsJ c3NpemVfdCByZXM7Cj4gKwlzdHJ1Y3QgZHJtX2F1eF9kZXYgKmF1eF9kZXYgPSBmaWxlLT5wcml2 YXRlX2RhdGE7Cj4gKwo+ICsJbG9jYWxidWYgPSBtZW1kdXBfdXNlcihidWYsIGNvdW50KTsKPiAr CWlmIChJU19FUlIobG9jYWxidWYpKQo+ICsJCXJldHVybiBQVFJfRVJSKGJ1Zik7Cj4gKwo+ICsJ cmVzID0gZHJtX2RwX2RwY2Rfd3JpdGUoYXV4X2Rldi0+YXV4LCAqb2Zmc2V0LCBsb2NhbGJ1Ziwg Y291bnQpOwo+ICsJa2ZyZWUobG9jYWxidWYpOwo+ICsKPiArCXJldHVybiByZXM7Cj4gK30KPiAr Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGF1eGRldl9mb3BzID0gewo+ ICsJLm93bmVyCQk9IFRISVNfTU9EVUxFLAo+ICsJLmxsc2VlawkJPSBnZW5lcmljX2ZpbGVfbGxz ZWVrLAo+ICsJLnJlYWQJCT0gYXV4ZGV2X3JlYWQsCj4gKwkud3JpdGUJCT0gYXV4ZGV2X3dyaXRl LAo+ICsJLm9wZW4JCT0gYXV4ZGV2X29wZW4sCj4gK307Cj4gKwo+ICtzdGF0aWMgc3RydWN0IGNs YXNzICpkcm1fYXV4X2Rldl9jbGFzczsKPiArc3RhdGljIGludCBkcm1fZGV2X21ham9yID0gLTE7 Cj4gKwo+ICsjZGVmaW5lIHRvX2F1eGRldihkKSBjb250YWluZXJfb2YoZCwgc3RydWN0IGRybV9h dXhfZGV2LCBhdXgpCj4gKwo+ICtzdGF0aWMgaW50IGF1eGRldl9hdHRhY2hfYXV4KHN0cnVjdCBk cm1fZHBfYXV4ICphdXgsIHZvaWQgKmRhdGEpCj4gK3sKPiArCWludCAqbWFqb3IgPSBkYXRhOwo+ ICsJc3RydWN0IGRybV9hdXhfZGV2ICphdXhfZGV2Owo+ICsJaW50IHJlczsKPiArCj4gKwlhdXhf ZGV2ID0gZ2V0X2ZyZWVfZHJtX2F1eF9kZXYoYXV4KTsKPiArCWlmIChJU19FUlIoYXV4X2Rldikp Cj4gKwkJcmV0dXJuIFBUUl9FUlIoYXV4X2Rldik7Cj4gKwo+ICsJYXV4X2Rldi0+ZGV2ID0gZGV2 aWNlX2NyZWF0ZShkcm1fYXV4X2Rldl9jbGFzcywgYXV4LT5kZXYsCj4gKwkJCQkgICAgIE1LREVW KCptYWpvciwgYXV4X2Rldi0+aW5kZXgpLCBOVUxMLAo+ICsJCQkJICAgICAiZHJtX2F1eC0lZCIs IGF1eF9kZXYtPmluZGV4KTsKPiArCWlmIChJU19FUlIoYXV4X2Rldi0+ZGV2KSkgewo+ICsJCXJl cyA9IFBUUl9FUlIoYXV4X2Rldi0+ZGV2KTsKPiArCQlnb3RvIGVycm9yOwo+ICsJfQo+ICsKPiAr CXByX2RlYnVnKCJkcm1fYXV4LWRldjogYXV4IFslc10gcmVnaXN0ZXJlZCBhcyBtaW5vciAlZFxu IiwKPiArCQkgYXV4LT5uYW1lLCBhdXhfZGV2LT5pbmRleCk7Cj4gKwlyZXR1cm4gMDsKPiArZXJy b3I6Cj4gKwlyZXR1cm5fZHJtX2F1eF9kZXYoYXV4X2Rldik7Cj4gKwlyZXR1cm4gcmVzOwo+ICsK PiArfQo+ICsKPiArc3RhdGljIGludCBhdXhkZXZfZGV0YWNoX2F1eChzdHJ1Y3QgZHJtX2RwX2F1 eCAqYXV4LCB2b2lkICpkYXRhKQo+ICt7Cj4gKwlpbnQgKm1ham9yID0gZGF0YTsKPiArCWludCBt aW5vcjsKPiArCXN0cnVjdCBkcm1fYXV4X2RldiAqYXV4X2RldjsKPiArCj4gKwlhdXhfZGV2ID0g ZHJtX2F1eF9kZXZfZ2V0X2J5X2F1eChhdXgpOwo+ICsJaWYgKCFhdXhfZGV2KSAvKiBhdHRhY2gg bXVzdCBoYXZlIGZhaWxlZCAqLwo+ICsJCXJldHVybiAwOwo+ICsKPiArCW1pbm9yID0gYXV4X2Rl di0+aW5kZXg7Cj4gKwlyZXR1cm5fZHJtX2F1eF9kZXYoYXV4X2Rldik7Cj4gKwlkZXZpY2VfZGVz dHJveShkcm1fYXV4X2Rldl9jbGFzcywgTUtERVYoKm1ham9yLCBtaW5vcikpOwo+ICsKPiArCXBy X2RlYnVnKCJkcm1fYXV4LWRldjogYXV4IFslc10gdW5yZWdpc3RlcmVkXG4iLCBhdXgtPm5hbWUp Owo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgYXV4ZGV2X2luZm9ybV9jYihp bnQgYWN0aW9uLCBzdHJ1Y3QgZHJtX2RwX2F1eCAqYXV4KQo+ICt7Cj4gKwlzd2l0Y2ggKGFjdGlv bikgewo+ICsJY2FzZSBEUk1fRFBfQUREX0FVWDoKPiArCQlyZXR1cm4gYXV4ZGV2X2F0dGFjaF9h dXgoYXV4LCAmZHJtX2Rldl9tYWpvcik7Cj4gKwljYXNlIERSTV9EUF9ERUxfQVVYOgo+ICsJCXJl dHVybiBhdXhkZXZfZGV0YWNoX2F1eChhdXgsICZkcm1fZGV2X21ham9yKTsKPiArCX0KPiArCj4g KwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGludCBfX2luaXQgZHJtX2F1eF9kZXZfaW5p dCh2b2lkKQo+ICt7Cj4gKwlpbnQgcmVzOwo+ICsKPiArCXByaW50ayhLRVJOX0lORk8gImRybSBk cCBhdXggL2RldiBlbnRyaWVzIGRyaXZlclxuIik7Cj4gKwo+ICsJcmVzID0gcmVnaXN0ZXJfY2hy ZGV2KDAsICJhdXgiLCAmYXV4ZGV2X2ZvcHMpOwo+ICsJaWYgKHJlcyA8IDApCj4gKwkJZ290byBv dXQ7Cj4gKwlkcm1fZGV2X21ham9yID0gcmVzOwo+ICsKPiArCWRybV9hdXhfZGV2X2NsYXNzID0g Y2xhc3NfY3JlYXRlKFRISVNfTU9EVUxFLCAiZHJtX2F1eC1kZXYiKTsKPiArCWlmIChJU19FUlIo ZHJtX2F1eF9kZXZfY2xhc3MpKSB7Cj4gKwkJcmVzID0gUFRSX0VSUihkcm1fYXV4X2Rldl9jbGFz cyk7Cj4gKwkJZ290byBvdXRfdW5yZWdfY2hyZGV2Owo+ICsJfQo+ICsJZHJtX2F1eF9kZXZfY2xh c3MtPmRldl9ncm91cHMgPSBkcm1fYXV4X2dyb3VwczsKPiArCj4gKwkvKiBLZWVwIHRyYWNrIG9m IERQIGF1eCB0aGF0IHdpbGwgYmUgYWRkZWQgb3IgcmVtb3ZlZCBsYXRlciAqLwo+ICsJZHJtX2Rw X2F1eF9zZXRfYXV4X2RldigmYXV4ZGV2X2luZm9ybV9jYik7Cj4gKwo+ICsJLyogQmluZCB0byBh bHJlYWR5IGV4aXN0aW5nIERQIGF1eCAqLwo+ICsJcmVzID0gZHJtX2RwX2F1eF9mb3JfZWFjaCgm ZHJtX2Rldl9tYWpvciwgYXV4ZGV2X2F0dGFjaF9hdXgpOwo+ICsKPiArCXJldHVybiAwOwo+ICsK PiArb3V0X3VucmVnX2NocmRldjoKPiArCXVucmVnaXN0ZXJfY2hyZGV2KGRybV9kZXZfbWFqb3Is ICJhdXgiKTsKPiArb3V0Ogo+ICsJcHJpbnRrKEtFUk5fRVJSICIlczogRHJpdmVyIEluaXRpYWxp c2F0aW9uIGZhaWxlZFxuIiwgX19GSUxFX18pOwo+ICsJcmV0dXJuIHJlczsKPiArfQo+ICsKPiAr c3RhdGljIHZvaWQgX19leGl0IGRybV9hdXhfZGV2X2V4aXQodm9pZCkKPiArewo+ICsJcHJpbnRr KEtFUk5fSU5GTyAiZHJtIGRwIGF1eCAvZGV2IGVudHJpZXMgZHJpdmVyIC0gdW5sb2FkaW5nXG4i KTsKPiArCWRybV9kcF9hdXhfc2V0X2F1eF9kZXYoTlVMTCk7Cj4gKwlkcm1fZHBfYXV4X2Zvcl9l YWNoKCZkcm1fZGV2X21ham9yLCBhdXhkZXZfZGV0YWNoX2F1eCk7Cj4gKwljbGFzc19kZXN0cm95 KGRybV9hdXhfZGV2X2NsYXNzKTsKPiArCXVucmVnaXN0ZXJfY2hyZGV2KGRybV9kZXZfbWFqb3Is ICJhdXgiKTsKPiArfQo+ICsKPiArTU9EVUxFX0FVVEhPUigiUmFmYWVsIEFudG9nbm9sbGkgPHJh ZmFlbC5hbnRvZ25vbGxpQGludGVsLmNvbT4iKTsKPiArTU9EVUxFX0RFU0NSSVBUSU9OKCJEUk0g RFAgQVVYIC9kZXYgZW50cmllcyBkcml2ZXIiKTsKPiArTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOwo+ ICsKPiArbW9kdWxlX2luaXQoZHJtX2F1eF9kZXZfaW5pdCk7Cj4gK21vZHVsZV9leGl0KGRybV9h dXhfZGV2X2V4aXQpOwo+IC0tIAo+IDIuNC4zCj4gCj4gX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KPiBkcmktZGV2ZWwgbWFpbGluZyBsaXN0Cj4gZHJpLWRl dmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwKCi0tIApEYW5pZWwgVmV0dGVyClNvZnR3YXJlIEVu Z2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgpodHRwOi8vYmxvZy5mZndsbC5jaApfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBs aXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=