From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v6 1/2] drm/dp: Add a drm_aux-dev module for reading/writing dpcd registers. Date: Fri, 30 Oct 2015 12:04:17 +0200 Message-ID: <20151030100417.GC4437@intel.com> References: <1446161026-18708-1-git-send-email-rafael.antognolli@intel.com> <1446161026-18708-2-git-send-email-rafael.antognolli@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <1446161026-18708-2-git-send-email-rafael.antognolli@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Rafael Antognolli Cc: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBPY3QgMjksIDIwMTUgYXQgMDQ6MjM6NDVQTSAtMDcwMCwgUmFmYWVsIEFudG9nbm9s bGkgd3JvdGU6Cj4gVGhpcyBtb2R1bGUgaXMgaGVhdmlseSBiYXNlZCBvbiBpMmMtZGV2LiBPbmNl IGxvYWRlZCwgaXQgcHJvdmlkZXMgb25lCj4gZGV2IG5vZGUgcGVyIERQIEFVWCBjaGFubmVsLCBu YW1lZCBkcm1fZHBfYXV4Tiwgd2hlcmUgTiBpcyBhbiBpbnRlZ2VyLgo+IAo+IEl0J3MgcG9zc2li bGUgdG8ga25vdyB3aGljaCBjb25uZWN0b3Igb3ducyB0aGlzIGF1eCBjaGFubmVsIGJ5IGxvb2tp bmcKPiBhdCB0aGUgcmVzcGVjdGl2ZSBzeXNmcyAvc3lzL2NsYXNzL2RybV9hdXhfZGV2L2RybV9k cF9hdXhOL2Nvbm5lY3RvciwgaWYKPiB0aGUgY29ubmVjdG9yIGRldmljZSBwb2ludGVyIHdhcyBj b3JyZWN0bHkgc2V0IGluIHRoZSBhdXggaGVscGVyIHN0cnVjdC4KPiAKPiBUd28gbWFpbiBvcGVy YXRpb25zIGFyZSBwcm92aWRlZCBvbiB0aGUgcmVnaXN0ZXJzIHJlYWQgYW5kIHdyaXRlLiBUaGUK PiBhZGRyZXNzIG9mIHRoZSByZWdpc3RlciB0byBiZSByZWFkIG9yIHdyaXR0ZW4gaXMgZ2l2ZW4g dXNpbmcgbHNlZWsuIFRoZQo+IHNlZWsgcG9zaXRpb24gaXMgdXBkYXRlZCB1cG9uIHJlYWQgb3Ig d3JpdGUuCgpOb3RlIHRoYXQgd2UgKGk5MTUgZm9sa3MgYXQgbGVhc3QpIGdlbmVyYWxseSBsaWtl IHRvIGhhdmUgdGhlIGNoYW5nZWxvZwppbiB0aGUgY29tbWl0IG1lc3NhZ2UgaXRzZWxmLiBTbyBt YXliZSBtb3ZlIGl0IGhlcmUgZm9yIHRoZSBmaW5hbAp2ZXJzaW9uLgoKQW55d2F5cywgdGhpcyBp cyBsb29raW5nIHJhdGhlciBuaWNlIG5vdy4gSSBzcG90dGVkIGEgZmV3IHJlbWFpbmluZyBzdHls ZQppc3N1ZXMsIGFuZCBzb21lIGVycm9yIGhhbmRsaW5nIHByb2JsZW1zLiBPbmNlIHRob3NlIGFy ZSBkZWFsdCB3aXRoCkkgdGhpbmsgd2Ugc2hvdWxkIGJlIGRvbmUuCgo+IAo+IFNpZ25lZC1vZmYt Ynk6IFJhZmFlbCBBbnRvZ25vbGxpIDxyYWZhZWwuYW50b2dub2xsaUBpbnRlbC5jb20+Cj4gLS0t Cj4gIGRyaXZlcnMvZ3B1L2RybS9LY29uZmlnICAgICAgICAgIHwgICA4ICsKPiAgZHJpdmVycy9n cHUvZHJtL01ha2VmaWxlICAgICAgICAgfCAgIDEgKwo+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2Rw X2F1eF9kZXYuYyB8IDM4MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysK PiAgZHJpdmVycy9ncHUvZHJtL2RybV9kcF9oZWxwZXIuYyAgfCAgIDUgKwo+ICBpbmNsdWRlL2Ry bS9kcm1fZHBfYXV4X2Rldi5oICAgICB8ICA1MCArKysrKwo+ICA1IGZpbGVzIGNoYW5nZWQsIDQ0 NSBpbnNlcnRpb25zKCspCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vZHJt X2RwX2F1eF9kZXYuYwo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9kcm0vZHJtX2RwX2F1 eF9kZXYuaAo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZyBiL2RyaXZl cnMvZ3B1L2RybS9LY29uZmlnCj4gaW5kZXggYzRiZjlhMS4uZGFlZmNjZSAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9LY29uZmln Cj4gQEAgLTI1LDYgKzI1LDE0IEBAIGNvbmZpZyBEUk1fTUlQSV9EU0kKPiAgCWJvb2wKPiAgCWRl cGVuZHMgb24gRFJNCj4gIAo+ICtjb25maWcgRFJNX0RQX0FVWF9DSEFSREVWCj4gKwlib29sICJE Uk0gRFAgQVVYIEludGVyZmFjZSIKPiArCWRlcGVuZHMgb24gRFJNCj4gKwloZWxwCj4gKwkgIENo b29zZSB0aGlzIG9wdGlvbiB0byBlbmFibGUgYSAvZGV2L2RybV9kcF9hdXhOIG5vZGUgdGhhdCBh bGxvd3MgdG8KPiArCSAgcmVhZCBhbmQgd3JpdGUgdmFsdWVzIHRvIGFyYml0cmFyeSBEUENEIHJl Z2lzdGVycyBvbiB0aGUgRFAgYXV4Cj4gKwkgIGNoYW5uZWwuCj4gKwo+ICBjb25maWcgRFJNX0tN U19IRUxQRVIKPiAgCXRyaXN0YXRlCj4gIAlkZXBlbmRzIG9uIERSTQo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUKPiBpbmRl eCAxZTlmZjRjLi5lNDhlYzhmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmls ZQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZQo+IEBAIC0yOCw2ICsyOCw3IEBAIGRy bV9rbXNfaGVscGVyLXkgOj0gZHJtX2NydGNfaGVscGVyLm8gZHJtX2RwX2hlbHBlci5vIGRybV9w cm9iZV9oZWxwZXIubyBcCj4gIGRybV9rbXNfaGVscGVyLSQoQ09ORklHX0RSTV9MT0FEX0VESURf RklSTVdBUkUpICs9IGRybV9lZGlkX2xvYWQubwo+ICBkcm1fa21zX2hlbHBlci0kKENPTkZJR19E Uk1fRkJERVZfRU1VTEFUSU9OKSArPSBkcm1fZmJfaGVscGVyLm8KPiAgZHJtX2ttc19oZWxwZXIt JChDT05GSUdfRFJNX0tNU19DTUFfSEVMUEVSKSArPSBkcm1fZmJfY21hX2hlbHBlci5vCj4gK2Ry bV9rbXNfaGVscGVyLSQoQ09ORklHX0RSTV9EUF9BVVhfQ0hBUkRFVikgKz0gZHJtX2RwX2F1eF9k ZXYubwo+ICAKPiAgb2JqLSQoQ09ORklHX0RSTV9LTVNfSEVMUEVSKSArPSBkcm1fa21zX2hlbHBl ci5vCj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2RwX2F1eF9kZXYuYyBi L2RyaXZlcnMvZ3B1L2RybS9kcm1fZHBfYXV4X2Rldi5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQK PiBpbmRleCAwMDAwMDAwLi4xNmRiYzJlCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9kcm1fZHBfYXV4X2Rldi5jCj4gQEAgLTAsMCArMSwzODEgQEAKPiArLyoKPiArICog Q29weXJpZ2h0IMKpIDIwMTUgSW50ZWwgQ29ycG9yYXRpb24KPiArICoKPiArICogUGVybWlzc2lv biBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWlu aW5nIGEKPiArICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50 YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKPiArICogdG8gZGVhbCBpbiB0aGUgU29mdHdh cmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgo+ICsg KiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJp YnV0ZSwgc3VibGljZW5zZSwKPiArICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2Fy ZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCj4gKyAqIFNvZnR3YXJlIGlzIGZ1 cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Cj4g KyAqCj4gKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24g bm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKPiArICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNs dWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQo+ICsgKiBT b2Z0d2FyZS4KPiArICoKPiArICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJ VEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKPiArICogSU1QTElFRCwgSU5D TFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ VFksCj4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5H RU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAo+ICsgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQg SE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgo+ICsgKiBM SUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVS V0lTRSwgQVJJU0lORwo+ICsgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRI RSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCj4gKyAqIElOIFRIRSBTT0ZU V0FSRS4KPiArICoKPiArICogQXV0aG9yczoKPiArICogICAgUmFmYWVsIEFudG9nbm9sbGkgPHJh ZmFlbC5hbnRvZ25vbGxpQGludGVsLmNvbT4KPiArICoKPiArICovCj4gKwo+ICsjaW5jbHVkZSA8 bGludXgvZGV2aWNlLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9mcy5oPgo+ICsjaW5jbHVkZSA8bGlu dXgvc2xhYi5oPgo+ICsjaW5jbHVkZSA8bGludXgvaW5pdC5oPgo+ICsjaW5jbHVkZSA8bGludXgv a2VybmVsLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KPiArI2luY2x1ZGUgPGxpbnV4 L3VhY2Nlc3MuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fZHBfaGVscGVyLmg+Cj4gKyNpbmNsdWRl IDxkcm0vZHJtX2NydGMuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1QLmg+Cj4gKwo+ICtzdHJ1Y3Qg ZHJtX2RwX2F1eF9kZXYgewo+ICsJdW5zaWduZWQgaW5kZXg7Cj4gKwlzdHJ1Y3QgZHJtX2RwX2F1 eCAqYXV4Owo+ICsJc3RydWN0IGRldmljZSAqZGV2Owo+ICsJc3RydWN0IGtyZWYgcmVmY291bnQ7 Cj4gKwlhdG9taWNfdCB1c2Vjb3VudDsKPiArfTsKPiArCj4gKyNkZWZpbmUgRFJNX0FVWF9NSU5P UlMJMjU2Cj4gKyNkZWZpbmUgQVVYX01BWF9PRkZTRVQJKDEgPDwgMjApCj4gK3N0YXRpYyBERUZJ TkVfSURSKGF1eF9pZHIpOwo+ICtzdGF0aWMgREVGSU5FX01VVEVYKGF1eF9pZHJfbXV0ZXgpOwo+ ICtzdGF0aWMgc3RydWN0IGNsYXNzICpkcm1fZHBfYXV4X2Rldl9jbGFzczsKPiArc3RhdGljIGlu dCBkcm1fZGV2X21ham9yID0gLTE7Cj4gKwo+ICtzdGF0aWMgc3RydWN0IGRybV9kcF9hdXhfZGV2 ICpkcm1fZHBfYXV4X2Rldl9nZXRfYnlfbWlub3IodW5zaWduZWQgaW5kZXgpCj4gK3sKPiArCXN0 cnVjdCBkcm1fZHBfYXV4X2RldiAqYXV4X2RldiA9IE5VTEw7Cj4gKwo+ICsJbXV0ZXhfbG9jaygm YXV4X2lkcl9tdXRleCk7Cj4gKwlhdXhfZGV2ID0gaWRyX2ZpbmQoJmF1eF9pZHIsIGluZGV4KTsK PiArCWlmICgha3JlZl9nZXRfdW5sZXNzX3plcm8oJmF1eF9kZXYtPnJlZmNvdW50KSkKPiArCQlh dXhfZGV2ID0gTlVMTDsKPiArCW11dGV4X3VubG9jaygmYXV4X2lkcl9tdXRleCk7Cj4gKwo+ICsJ cmV0dXJuIGF1eF9kZXY7Cj4gK30KPiArCj4gK3N0YXRpYyBzdHJ1Y3QgZHJtX2RwX2F1eF9kZXYg KmFsbG9jX2RybV9kcF9hdXhfZGV2KHN0cnVjdCBkcm1fZHBfYXV4ICphdXgpCj4gK3sKPiArCXN0 cnVjdCBkcm1fZHBfYXV4X2RldiAqYXV4X2RldjsKPiArCWludCBpbmRleDsKPiArCj4gKwoKc3B1 cmlvdXMgbmV3bGluZQoKPiArCWF1eF9kZXYgPSBremFsbG9jKHNpemVvZigqYXV4X2RldiksIEdG UF9LRVJORUwpOwo+ICsJaWYgKCFhdXhfZGV2KQo+ICsJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0p Owo+ICsJYXV4X2Rldi0+YXV4ID0gYXV4Owo+ICsJYXRvbWljX3NldCgmYXV4X2Rldi0+dXNlY291 bnQsIDEpOwo+ICsJa3JlZl9pbml0KCZhdXhfZGV2LT5yZWZjb3VudCk7Cj4gKwo+ICsJbXV0ZXhf bG9jaygmYXV4X2lkcl9tdXRleCk7Cj4gKwlpbmRleCA9IGlkcl9hbGxvY19jeWNsaWMoJmF1eF9p ZHIsIGF1eF9kZXYsIDAsIERSTV9BVVhfTUlOT1JTLAo+ICsJCQkJIEdGUF9LRVJORUwpOwo+ICsJ bXV0ZXhfdW5sb2NrKCZhdXhfaWRyX211dGV4KTsKPiArCWlmIChpbmRleCA8IDApIHsKPiArCQlr ZnJlZShhdXhfZGV2KTsKPiArCQlyZXR1cm4gRVJSX1BUUihpbmRleCk7Cj4gKwl9Cj4gKwlhdXhf ZGV2LT5pbmRleCA9IGluZGV4Owo+ICsKPiArCXJldHVybiBhdXhfZGV2Owo+ICt9Cj4gKwo+ICtz dGF0aWMgdm9pZCByZWxlYXNlX2RybV9kcF9hdXhfZGV2KHN0cnVjdCBrcmVmICpyZWYpCj4gK3sK PiArCXN0cnVjdCBkcm1fZHBfYXV4X2RldiAqYXV4X2RldiA9Cj4gKwkJY29udGFpbmVyX29mKHJl Ziwgc3RydWN0IGRybV9kcF9hdXhfZGV2LCByZWZjb3VudCk7Cj4gKwo+ICsJa2ZyZWUoYXV4X2Rl dik7Cj4gK30KPiArCj4gK3N0YXRpYyBzc2l6ZV90IG5hbWVfc2hvdyhzdHJ1Y3QgZGV2aWNlICpk ZXYsCj4gKwkJCSBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQo+ICt7 Cj4gKwlzc2l6ZV90IHJlczsKPiArCXN0cnVjdCBkcm1fZHBfYXV4X2RldiAqYXV4X2RldiA9Cj4g KwkJZHJtX2RwX2F1eF9kZXZfZ2V0X2J5X21pbm9yKE1JTk9SKGRldi0+ZGV2dCkpOwo+ICsKPiAr CWlmICghYXV4X2RldikKPiArCQlyZXR1cm4gLUVOT0RFVjsKPiArCj4gKwlyZXMgPSBzcHJpbnRm KGJ1ZiwgIiVzXG4iLCBhdXhfZGV2LT5hdXgtPm5hbWUpOwo+ICsJa3JlZl9wdXQoJmF1eF9kZXYt PnJlZmNvdW50LCByZWxlYXNlX2RybV9kcF9hdXhfZGV2KTsKPiArCj4gKwlyZXR1cm4gcmVzOwo+ ICt9Cj4gK3N0YXRpYyBERVZJQ0VfQVRUUl9STyhuYW1lKTsKPiArCj4gK3N0YXRpYyBzdHJ1Y3Qg YXR0cmlidXRlICpkcm1fZHBfYXV4X2F0dHJzW10gPSB7Cj4gKwkmZGV2X2F0dHJfbmFtZS5hdHRy LAo+ICsJTlVMTCwKPiArfTsKPiArQVRUUklCVVRFX0dST1VQUyhkcm1fZHBfYXV4KTsKPiArCj4g K3N0YXRpYyBpbnQgYXV4ZGV2X29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUg KmZpbGUpCj4gK3sKPiArCXVuc2lnbmVkIGludCBtaW5vciA9IGltaW5vcihpbm9kZSk7Cj4gKwlz dHJ1Y3QgZHJtX2RwX2F1eF9kZXYgKmF1eF9kZXY7Cj4gKwo+ICsJYXV4X2RldiA9IGRybV9kcF9h dXhfZGV2X2dldF9ieV9taW5vcihtaW5vcik7Cj4gKwlpZiAoIWF1eF9kZXYpCj4gKwkJcmV0dXJu IC1FTk9ERVY7Cj4gKwo+ICsJZmlsZS0+cHJpdmF0ZV9kYXRhID0gYXV4X2RldjsKPiArCXJldHVy biAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgbG9mZl90IGF1eGRldl9sbHNlZWsoc3RydWN0IGZpbGUg KmZpbGUsIGxvZmZfdCBvZmZzZXQsIGludCB3aGVuY2UpCj4gK3sKPiArCXJldHVybiBmaXhlZF9z aXplX2xsc2VlayhmaWxlLCBvZmZzZXQsIHdoZW5jZSwgQVVYX01BWF9PRkZTRVQpOwo+ICt9Cj4g Kwo+ICtzdGF0aWMgc3NpemVfdCBhdXhkZXZfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciBf X3VzZXIgKmJ1Ziwgc2l6ZV90IGNvdW50LAo+ICsJCQkgICBsb2ZmX3QgKm9mZnNldCkKPiArewo+ ICsJc2l6ZV90IGJ5dGVzX3BlbmRpbmcsIG51bV9ieXRlc19wcm9jZXNzZWQgPSAwOwo+ICsJc3Ry dWN0IGRybV9kcF9hdXhfZGV2ICphdXhfZGV2ID0gZmlsZS0+cHJpdmF0ZV9kYXRhOwo+ICsJc3Np emVfdCByZXMgPSAwOwo+ICsKPiArCWlmIChjb3VudCA8IDApCj4gKwkJcmV0dXJuIC1FSU5WQUw7 CgpzaXplX3QgaXMgdW5zaWduZWQsIHNvIHRoaXMgY2FuJ3QgaGFwcGVuLgoKPiArCj4gKwlpZiAo IWF0b21pY19pbmNfbm90X3plcm8oJmF1eF9kZXYtPnVzZWNvdW50KSkKPiArCQlyZXR1cm4gLUVO T0RFVjsKPiArCj4gKwlieXRlc19wZW5kaW5nID0gbWluKChsb2ZmX3QpY291bnQsIEFVWF9NQVhf T0ZGU0VUIC0gKCpvZmZzZXQpKTsKPiArCj4gKwlpZiAoIWFjY2Vzc19vayhWRVJJRllfV1JJVEUs IGJ1ZiwgYnl0ZXNfcGVuZGluZykpIHsKPiArCQlyZXMgPSAtRUZBVUxUOwo+ICsJCWdvdG8gb3V0 Owo+ICsJfQo+ICsKPiArCXdoaWxlIChieXRlc19wZW5kaW5nID4gMCkgewo+ICsJCXVpbnQ4X3Qg bG9jYWxidWZbRFBfQVVYX01BWF9QQVlMT0FEX0JZVEVTXTsKPiArCQlzc2l6ZV90IHRvZG8gPSBt aW5fdChzaXplX3QsIGJ5dGVzX3BlbmRpbmcsIHNpemVvZihsb2NhbGJ1ZikpOwo+ICsKPiArCQly ZXMgPSBkcm1fZHBfZHBjZF9yZWFkKGF1eF9kZXYtPmF1eCwgKm9mZnNldCwgbG9jYWxidWYsIHRv ZG8pOwo+ICsJCWlmIChyZXMgPD0gMCkgewo+ICsJCQlyZXMgPSBudW1fYnl0ZXNfcHJvY2Vzc2Vk ID8gbnVtX2J5dGVzX3Byb2Nlc3NlZCA6IHJlczsKPiArCQkJZ290byBvdXQ7Cj4gKwkJfQo+ICsJ CWlmIChfX2NvcHlfdG9fdXNlcihidWYgKyBudW1fYnl0ZXNfcHJvY2Vzc2VkLCBsb2NhbGJ1Ziwg cmVzKSkgewo+ICsJCQlyZXMgPSBudW1fYnl0ZXNfcHJvY2Vzc2VkID8KPiArCQkJCW51bV9ieXRl c19wcm9jZXNzZWQgOiAtRUZBVUxUOwo+ICsJCQlnb3RvIG91dDsKPiArCQl9Cj4gKwkJYnl0ZXNf cGVuZGluZyAtPSByZXM7Cj4gKwkJKm9mZnNldCArPSByZXM7Cj4gKwkJbnVtX2J5dGVzX3Byb2Nl c3NlZCArPSByZXM7Cj4gKwkJcmVzID0gbnVtX2J5dGVzX3Byb2Nlc3NlZDsKPiArCX0KPiArCj4g K291dDoKPiArCWF0b21pY19kZWMoJmF1eF9kZXYtPnVzZWNvdW50KTsKPiArCXdha2VfdXBfYXRv bWljX3QoJmF1eF9kZXYtPnVzZWNvdW50KTsKCkludGVyZXN0aW5nLiBGaXJzdCB0aW1lIEkndmUg c2VlbiB0aGlzIHN0dWZmLgoKPiArCXJldHVybiByZXM7Cj4gK30KPiArCj4gK3N0YXRpYyBzc2l6 ZV90IGF1eGRldl93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKmJ1 ZiwKPiArCQkJICAgIHNpemVfdCBjb3VudCwgbG9mZl90ICpvZmZzZXQpCj4gK3sKPiArCXNpemVf dCBieXRlc19wZW5kaW5nLCBudW1fYnl0ZXNfcHJvY2Vzc2VkID0gMDsKPiArCXN0cnVjdCBkcm1f ZHBfYXV4X2RldiAqYXV4X2RldiA9IGZpbGUtPnByaXZhdGVfZGF0YTsKPiArCXNzaXplX3QgcmVz ID0gMDsKPiArCj4gKwlpZiAoY291bnQgPCAwKQo+ICsJCXJldHVybiAtRUlOVkFMOwoKQW5vdGhl ciAic2l6ZV90IGlzIHVuc2lnbmVkIiBjYXNlLgoKPiArCj4gKwlpZiAoIWF0b21pY19pbmNfbm90 X3plcm8oJmF1eF9kZXYtPnVzZWNvdW50KSkKPiArCQlyZXR1cm4gLUVOT0RFVjsKPiArCj4gKwli eXRlc19wZW5kaW5nID0gbWluKChsb2ZmX3QpY291bnQsIEFVWF9NQVhfT0ZGU0VUIC0gKm9mZnNl dCk7Cj4gKwo+ICsJaWYgKCFhY2Nlc3Nfb2soVkVSSUZZX1JFQUQsIGJ1ZiwgYnl0ZXNfcGVuZGlu ZykpIHsKPiArCQlyZXMgPSAtRUZBVUxUOwo+ICsJCWdvdG8gb3V0Owo+ICsJfQo+ICsKPiArCXdo aWxlIChieXRlc19wZW5kaW5nID4gMCkgewo+ICsJCXVpbnQ4X3QgbG9jYWxidWZbRFBfQVVYX01B WF9QQVlMT0FEX0JZVEVTXTsKPiArCQlzc2l6ZV90IHRvZG8gPSBtaW5fdChzaXplX3QsIGJ5dGVz X3BlbmRpbmcsIHNpemVvZihsb2NhbGJ1ZikpOwo+ICsKPiArCQlpZiAoX19jb3B5X2Zyb21fdXNl cihsb2NhbGJ1ZiwKPiArCQkJCSAgICAgYnVmICsgbnVtX2J5dGVzX3Byb2Nlc3NlZCwgdG9kbykp IHsKPiArCQkJcmVzID0gbnVtX2J5dGVzX3Byb2Nlc3NlZCA/Cj4gKwkJCQludW1fYnl0ZXNfcHJv Y2Vzc2VkIDogLUVGQVVMVDsKPiArCQkJZ290byBvdXQ7Cj4gKwkJfQo+ICsKPiArCQlyZXMgPSBk cm1fZHBfZHBjZF93cml0ZShhdXhfZGV2LT5hdXgsICpvZmZzZXQsIGxvY2FsYnVmLCB0b2RvKTsK PiArCQlpZiAocmVzIDw9IDApIHsKPiArCQkJcmVzID0gbnVtX2J5dGVzX3Byb2Nlc3NlZCA/IG51 bV9ieXRlc19wcm9jZXNzZWQgOiByZXM7Cj4gKwkJCWdvdG8gb3V0Owo+ICsJCX0KPiArCQlieXRl c19wZW5kaW5nIC09IHJlczsKPiArCQkqb2Zmc2V0ICs9IHJlczsKPiArCQludW1fYnl0ZXNfcHJv Y2Vzc2VkICs9IHJlczsKPiArCQlyZXMgPSBudW1fYnl0ZXNfcHJvY2Vzc2VkOwo+ICsJfQo+ICsK PiArb3V0Ogo+ICsJYXRvbWljX2RlYygmYXV4X2Rldi0+dXNlY291bnQpOwo+ICsJd2FrZV91cF9h dG9taWNfdCgmYXV4X2Rldi0+dXNlY291bnQpOwo+ICsJcmV0dXJuIHJlczsKPiArfQo+ICsKPiAr c3RhdGljIGludCBhdXhkZXZfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmls ZSAqZmlsZSkKPiArewo+ICsJc3RydWN0IGRybV9kcF9hdXhfZGV2ICphdXhfZGV2ID0gZmlsZS0+ cHJpdmF0ZV9kYXRhOwo+ICsKPiArCWtyZWZfcHV0KCZhdXhfZGV2LT5yZWZjb3VudCwgcmVsZWFz ZV9kcm1fZHBfYXV4X2Rldik7Cj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGNvbnN0 IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgYXV4ZGV2X2ZvcHMgPSB7Cj4gKwkub3duZXIJCT0gVEhJ U19NT0RVTEUsCj4gKwkubGxzZWVrCQk9IGF1eGRldl9sbHNlZWssCj4gKwkucmVhZAkJPSBhdXhk ZXZfcmVhZCwKPiArCS53cml0ZQkJPSBhdXhkZXZfd3JpdGUsCj4gKwkub3BlbgkJPSBhdXhkZXZf b3BlbiwKPiArCS5yZWxlYXNlCT0gYXV4ZGV2X3JlbGVhc2UsCj4gK307Cj4gKwo+ICsjZGVmaW5l IHRvX2F1eGRldihkKSBjb250YWluZXJfb2YoZCwgc3RydWN0IGRybV9kcF9hdXhfZGV2LCBhdXgp Cj4gKwo+ICsvKioKPiArICogZHJtX2RwX2F1eF9yZWdpc3Rlcl9kZXZub2RlKCkgLSByZWdpc3Rl ciBhIGRldm5vZGUgZm9yIHRoaXMgYXV4IGNoYW5uZWwKPiArICogQGF1eDogRGlzcGxheVBvcnQg QVVYIGNoYW5uZWwKPiArICoKPiArICogUmV0dXJucyAwIG9uIHN1Y2Nlc3Mgb3IgYSBuZWdhdGl2 ZSBlcnJvciBjb2RlIG9uIGZhaWx1cmUuCj4gKyAqLwo+ICtpbnQgZHJtX2RwX2F1eF9yZWdpc3Rl cl9kZXZub2RlKHN0cnVjdCBkcm1fZHBfYXV4ICphdXgpCj4gK3sKPiArCXN0cnVjdCBkcm1fZHBf YXV4X2RldiAqYXV4X2RldjsKPiArCWludCByZXM7Cj4gKwo+ICsJYXV4X2RldiA9IGFsbG9jX2Ry bV9kcF9hdXhfZGV2KGF1eCk7Cj4gKwlpZiAoSVNfRVJSKGF1eF9kZXYpKQo+ICsJCXJldHVybiBQ VFJfRVJSKGF1eF9kZXYpOwo+ICsKPiArCWF1eF9kZXYtPmRldiA9IGRldmljZV9jcmVhdGUoZHJt X2RwX2F1eF9kZXZfY2xhc3MsIGF1eC0+ZGV2LAo+ICsJCQkJICAgICBNS0RFVihkcm1fZGV2X21h am9yLCBhdXhfZGV2LT5pbmRleCksIE5VTEwsCj4gKwkJCQkgICAgICJkcm1fZHBfYXV4JWQiLCBh dXhfZGV2LT5pbmRleCk7Cj4gKwlpZiAoSVNfRVJSKGF1eF9kZXYtPmRldikpIHsKPiArCQlyZXMg PSBQVFJfRVJSKGF1eF9kZXYtPmRldik7Cj4gKwkJZ290byBlcnJvcjsKPiArCX0KPiArCj4gKwlw cl9kZWJ1ZygiZHJtX2RwX2F1eF9kZXY6IGF1eCBbJXNdIHJlZ2lzdGVyZWQgYXMgbWlub3IgJWRc biIsCj4gKwkJIGF1eC0+bmFtZSwgYXV4X2Rldi0+aW5kZXgpOwoKWW91IHNob3VsZCB1c2UgRFJN X0RFQlVHIGFuZCBEUk1fRVJST1IgYWxsIGFyb3VuZCB0byBjb25mb3JtIHRvIHN0YW5kYXJkCmRy bSBzdWJzeXN0ZW0gc3R5bGUuCgo+ICsJcmV0dXJuIDA7Cj4gK2Vycm9yOgo+ICsJZGV2aWNlX2Rl c3Ryb3koZHJtX2RwX2F1eF9kZXZfY2xhc3MsCj4gKwkJICAgICAgIE1LREVWKGRybV9kZXZfbWFq b3IsIGF1eF9kZXYtPmluZGV4KSk7Cj4gKwlrZnJlZShhdXhfZGV2KTsKCkl0IHdhcyBhbHJlYWR5 IGFkZGVkIHRvIHRoZSBpZHIsIHNvIHRoaXMgbmVlZHMgc29tZXRoaW5nIGEgYml0IG1vcmUuCkFs c28gaW4gdGhlb3J5IHNvbWVvbmUgbWlnaHQgaGF2ZSBhbHJlYWR5IG9wZW5lZCB0aGUgZGV2aWNl IGJ5IG5vdy4KCkkgZ3Vlc3MgeW91IGNvdWxkIGp1c3QgZG8gYSBub3JtYWwgdW5yZWdpc3RlciBo ZXJlPyBJIGFzc3VtZSBjYWxsaW5nCmRldmljZV9kZXN0cm95KCkgZXZlbiB0aG91Z2ggZGV2aWNl X2NyZWF0ZSgpIGZhaWxlZCBzaG91bGQgYmUgT0sgc2luY2UKeW91J3JlIGFscmVhZHkgZG9pbmcg aXQsIHNvIGhhdmluZyB0aGUgdW5yZWdpc3RlciBjb2RlIGRvIGl0IGluc3RlYWQKc2hvdWxkIGJl IGVxdWFsbHkgZmluZS4KCk9oIGFuZCBJIGd1ZXNzIHdlIGRvbid0IHJlYWxseSBuZWVkIHRvIHN0 b3JlIHRoZSBzdHJ1Y3QgZGV2aWNlIHBvaW50ZXIKdW5kZXIgYXV4X2RldiBzaW5jZSBpdCdzIG5v dCB1c2VkIGJ5IGFueW9uZSwgbm90IGV2ZW4gYnkgZGV2aWNlX2Rlc3Ryb3koKS4KCj4gKwlyZXR1 cm4gcmVzOwo+ICt9Cj4gK0VYUE9SVF9TWU1CT0woZHJtX2RwX2F1eF9yZWdpc3Rlcl9kZXZub2Rl KTsKPiArCj4gK3N0YXRpYyBzdHJ1Y3QgZHJtX2RwX2F1eF9kZXYgKmRybV9kcF9hdXhfZGV2X2dl dF9ieV9hdXgoc3RydWN0IGRybV9kcF9hdXggKmF1eCkKPiArewo+ICsJc3RydWN0IGRybV9kcF9h dXhfZGV2ICppdGVyLCAqYXV4X2RldiA9IE5VTEw7Cj4gKwlpbnQgaWQ7Cj4gKwo+ICsJLyogZG9u J3QgaW5jcmVhc2Uga3JlZiBjb3VudCBoZXJlIGJlY2F1c2UgdGhpcyBmdW5jdGlvbiBzaG91bGQg b25seSBiZQo+ICsJICogdXNlZCBieSBkcm1fZHBfYXV4X3VucmVnaXN0ZXJfZGV2bm9kZS4gVGh1 cywgaXQgd2lsbCBhbHdheXMgaGF2ZSBhdAo+ICsJICogbGVhc3Qgb25lIHJlZmVyZW5jZSAtIHRo ZSBvbmUgdGhhdCBkcm1fZHBfYXV4X3JlZ2lzdGVyX2Rldm5vZGUKPiArCSAqIGNyZWF0ZWQKPiAr CSAqLwo+ICsJbXV0ZXhfbG9jaygmYXV4X2lkcl9tdXRleCk7Cj4gKwlpZHJfZm9yX2VhY2hfZW50 cnkoJmF1eF9pZHIsIGl0ZXIsIGlkKSB7Cj4gKwkJaWYgKGl0ZXItPmF1eCA9PSBhdXgpIHsKPiAr CQkJYXV4X2RldiA9IGl0ZXI7Cj4gKwkJCWJyZWFrOwo+ICsJCX0KPiArCX0KPiArCW11dGV4X3Vu bG9jaygmYXV4X2lkcl9tdXRleCk7Cj4gKwlyZXR1cm4gYXV4X2RldjsKPiArfQo+ICsKPiArc3Rh dGljIGludCBhdXhkZXZfd2FpdF9hdG9taWNfdChhdG9taWNfdCAqcCkKPiArewo+ICsJc2NoZWR1 bGUoKTsKPiArCXJldHVybiAwOwo+ICt9Cj4gKy8qKgo+ICsgKiBkcm1fZHBfYXV4X3VucmVnaXN0 ZXJfZGV2bm9kZSgpIC0gdW5yZWdpc3RlciBhIGRldm5vZGUgZm9yIHRoaXMgYXV4IGNoYW5uZWwK PiArICogQGF1eDogRGlzcGxheVBvcnQgQVVYIGNoYW5uZWwKPiArICoKPiArICogUmV0dXJucyAw IG9uIHN1Y2Nlc3Mgb3IgYSBuZWdhdGl2ZSBlcnJvciBjb2RlIG9uIGZhaWx1cmUuCj4gKyAqLwo+ ICtpbnQgZHJtX2RwX2F1eF91bnJlZ2lzdGVyX2Rldm5vZGUoc3RydWN0IGRybV9kcF9hdXggKmF1 eCkKPiArewo+ICsJc3RydWN0IGRybV9kcF9hdXhfZGV2ICphdXhfZGV2Owo+ICsJdW5zaWduZWQg aW50IG1pbm9yOwo+ICsKPiArCWF1eF9kZXYgPSBkcm1fZHBfYXV4X2Rldl9nZXRfYnlfYXV4KGF1 eCk7Cj4gKwlpZiAoIWF1eF9kZXYpIC8qIGF0dGFjaCBtdXN0IGhhdmUgZmFpbGVkICovCj4gKwkJ cmV0dXJuIDA7CgpTaG91bGQgd2UgbWF5YmUgcmV0dXJuIGFuIGVycm9yPyBPciBtYXliZSBqdXN0 IG1ha2UgdGhlIGZ1bmN0aW9uIHZvaWQKc2luY2Ugbm8gb25lIGlzIGxpa2VseSB0byBiZSBpbnRl cmVzdGVkIGluIHRoZSByZXR1cm4gdmFsdWU/Cgo+ICsKPiArCW11dGV4X2xvY2soJmF1eF9pZHJf bXV0ZXgpOwo+ICsJaWRyX3JlbW92ZSgmYXV4X2lkciwgYXV4X2Rldi0+aW5kZXgpOwo+ICsJbXV0 ZXhfdW5sb2NrKCZhdXhfaWRyX211dGV4KTsKPiArCj4gKwlhdG9taWNfZGVjKCZhdXhfZGV2LT51 c2Vjb3VudCk7Cj4gKwl3YWl0X29uX2F0b21pY190KCZhdXhfZGV2LT51c2Vjb3VudCwgYXV4ZGV2 X3dhaXRfYXRvbWljX3QsCj4gKwkJCSBUQVNLX1VOSU5URVJSVVBUSUJMRSk7Cj4gKwo+ICsJbWlu b3IgPSBhdXhfZGV2LT5pbmRleDsKPiArCWRldmljZV9kZXN0cm95KGRybV9kcF9hdXhfZGV2X2Ns YXNzLCBNS0RFVihkcm1fZGV2X21ham9yLCBtaW5vcikpOwo+ICsKPiArCWtyZWZfcHV0KCZhdXhf ZGV2LT5yZWZjb3VudCwgcmVsZWFzZV9kcm1fZHBfYXV4X2Rldik7Cj4gKwlwcl9kZWJ1ZygiZHJt X2RwX2F1eF9kZXY6IGF1eCBbJXNdIHVucmVnaXN0ZXJlZFxuIiwgYXV4LT5uYW1lKTsKCkNhbid0 IGRlcmVmZXJlbmNlIGl0IHNhZmVseSBhZnRlciB0aGUga3JlZl9wdXQoKS4KCj4gKwo+ICsJcmV0 dXJuIDA7Cj4gK30KPiArRVhQT1JUX1NZTUJPTChkcm1fZHBfYXV4X3VucmVnaXN0ZXJfZGV2bm9k ZSk7Cj4gKwo+ICtzdGF0aWMgaW50IF9faW5pdCBkcm1fZHBfYXV4X2Rldl9pbml0KHZvaWQpCj4g K3sKPiArCWludCByZXM7Cj4gKwo+ICsJZHJtX2RwX2F1eF9kZXZfY2xhc3MgPSBjbGFzc19jcmVh dGUoVEhJU19NT0RVTEUsICJkcm1fZHBfYXV4X2RldiIpOwo+ICsJaWYgKElTX0VSUihkcm1fZHBf YXV4X2Rldl9jbGFzcykpIHsKPiArCQlyZXMgPSBQVFJfRVJSKGRybV9kcF9hdXhfZGV2X2NsYXNz KTsKPiArCQlnb3RvIG91dDsKPiArCX0KPiArCWRybV9kcF9hdXhfZGV2X2NsYXNzLT5kZXZfZ3Jv dXBzID0gZHJtX2RwX2F1eF9ncm91cHM7Cj4gKwo+ICsJcmVzID0gcmVnaXN0ZXJfY2hyZGV2KDAs ICJhdXgiLCAmYXV4ZGV2X2ZvcHMpOwo+ICsJaWYgKHJlcyA8IDApCj4gKwkJZ290byBvdXQ7CgpT aG91bGQgY2xhc3NfZGVzdHJveSgpIGluIHRoaXMgZXJyb3IgcGF0aC4KCj4gKwlkcm1fZGV2X21h am9yID0gcmVzOwo+ICsKPiArCXJldHVybiAwOwo+ICtvdXQ6Cj4gKwlkcm1fZXJyKCIlczogRHJp dmVyIEluaXRpYWxpc2F0aW9uIGZhaWxlZFxuIiwgX19GSUxFX18pOwo+ICsJcmV0dXJuIHJlczsK PiArfQo+ICsKPiArc3RhdGljIHZvaWQgX19leGl0IGRybV9kcF9hdXhfZGV2X2V4aXQodm9pZCkK PiArewo+ICsJY2xhc3NfZGVzdHJveShkcm1fZHBfYXV4X2Rldl9jbGFzcyk7Cj4gKwl1bnJlZ2lz dGVyX2NocmRldihkcm1fZGV2X21ham9yLCAiYXV4Iik7CgpTd2FwIHRoZXNlIGFyb3VuZCB0byBi ZSB0aGUgb3Bwb3NpdGUgb2YgaW5pdD8KCj4gK30KPiArCj4gK01PRFVMRV9BVVRIT1IoIlJhZmFl bCBBbnRvZ25vbGxpIDxyYWZhZWwuYW50b2dub2xsaUBpbnRlbC5jb20+Iik7Cj4gK01PRFVMRV9E RVNDUklQVElPTigiRFJNIERQIEFVWCAvZGV2IGVudHJpZXMgZHJpdmVyIik7Cj4gK01PRFVMRV9M SUNFTlNFKCJHUEwgYW5kIGFkZGl0aW9uYWwgcmlnaHRzIik7Cj4gKwo+ICttb2R1bGVfaW5pdChk cm1fZHBfYXV4X2Rldl9pbml0KTsKPiArbW9kdWxlX2V4aXQoZHJtX2RwX2F1eF9kZXZfZXhpdCk7 Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZHBfaGVscGVyLmMgYi9kcml2ZXJz L2dwdS9kcm0vZHJtX2RwX2hlbHBlci5jCj4gaW5kZXggOTUzNWM1Yi4uZDI1NjVjYyAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2RwX2hlbHBlci5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2RybV9kcF9oZWxwZXIuYwo+IEBAIC0yOCw2ICsyOCw3IEBACj4gICNpbmNsdWRlIDxs aW51eC9zY2hlZC5oPgo+ICAjaW5jbHVkZSA8bGludXgvaTJjLmg+Cj4gICNpbmNsdWRlIDxkcm0v ZHJtX2RwX2hlbHBlci5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9kcF9hdXhfZGV2Lmg+Cj4gICNp bmNsdWRlIDxkcm0vZHJtUC5oPgo+ICAKPiAgLyoqCj4gQEAgLTc2OCw2ICs3NjksOSBAQCBpbnQg ZHJtX2RwX2F1eF9yZWdpc3RlcihzdHJ1Y3QgZHJtX2RwX2F1eCAqYXV4KQo+ICAJc3RybGNweShh dXgtPmRkYy5uYW1lLCBhdXgtPm5hbWUgPyBhdXgtPm5hbWUgOiBkZXZfbmFtZShhdXgtPmRldiks Cj4gIAkJc2l6ZW9mKGF1eC0+ZGRjLm5hbWUpKTsKPiAgCj4gKwlpZiAoZHJtX2RwX2F1eF9yZWdp c3Rlcl9kZXZub2RlKGF1eCkpCj4gKwkJZHJtX2VycigiJXM6IENvdWxkIG5vdCByZWdpc3RlciBk cm1fZHBfYXV4X2Rldi5cbiIsIF9fRklMRV9fKTsKPiArCj4gIAlyZXR1cm4gaTJjX2FkZF9hZGFw dGVyKCZhdXgtPmRkYyk7Cj4gIH0KPiAgRVhQT1JUX1NZTUJPTChkcm1fZHBfYXV4X3JlZ2lzdGVy KTsKPiBAQCAtNzc4LDYgKzc4Miw3IEBAIEVYUE9SVF9TWU1CT0woZHJtX2RwX2F1eF9yZWdpc3Rl cik7Cj4gICAqLwo+ICB2b2lkIGRybV9kcF9hdXhfdW5yZWdpc3RlcihzdHJ1Y3QgZHJtX2RwX2F1 eCAqYXV4KQo+ICB7Cj4gKwlkcm1fZHBfYXV4X3VucmVnaXN0ZXJfZGV2bm9kZShhdXgpOwo+ICAJ aTJjX2RlbF9hZGFwdGVyKCZhdXgtPmRkYyk7Cj4gIH0KPiAgRVhQT1JUX1NZTUJPTChkcm1fZHBf YXV4X3VucmVnaXN0ZXIpOwo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fZHBfYXV4X2Rl di5oIGIvaW5jbHVkZS9kcm0vZHJtX2RwX2F1eF9kZXYuaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0 Cj4gaW5kZXggMDAwMDAwMC4uMzU0MDlhMgo+IC0tLSAvZGV2L251bGwKPiArKysgYi9pbmNsdWRl L2RybS9kcm1fZHBfYXV4X2Rldi5oCj4gQEAgLTAsMCArMSw1MCBAQAo+ICsvKgo+ICsgKiBDb3B5 cmlnaHQgwqkgMjAxNSBJbnRlbCBDb3Jwb3JhdGlvbgo+ICsgKgo+ICsgKiBQZXJtaXNzaW9uIGlz IGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcg YQo+ICsgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlv biBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAo+ICsgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3 aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCj4gKyAqIHRo ZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRl LCBzdWJsaWNlbnNlLAo+ICsgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBh bmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKPiArICogU29mdHdhcmUgaXMgZnVybmlz aGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKPiArICoK PiArICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3Rp Y2UgKGluY2x1ZGluZyB0aGUgbmV4dAo+ICsgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVk IGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCj4gKyAqIFNvZnR3 YXJlLgo+ICsgKgo+ICsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9V VCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgo+ICsgKiBJTVBMSUVELCBJTkNMVURJ TkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwK PiArICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVO VC4gIElOIE5PIEVWRU5UIFNIQUxMCj4gKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xE RVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCj4gKyAqIExJQUJJ TElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNF LCBBUklTSU5HCj4gKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNP RlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKPiArICogSU4gVEhFIFNPRlRXQVJF Lgo+ICsgKgo+ICsgKiBBdXRob3JzOgo+ICsgKiAgICBSYWZhZWwgQW50b2dub2xsaSA8cmFmYWVs LmFudG9nbm9sbGlAaW50ZWwuY29tPgo+ICsgKgo+ICsgKi8KPiArCj4gKyNpZm5kZWYgRFJNX0RQ X0FVWF9ERVYKPiArI2RlZmluZSBEUk1fRFBfQVVYX0RFVgo+ICsKPiArI2lmZGVmIENPTkZJR19E Uk1fRFBfQVVYX0NIQVJERVYKPiArCj4gK2ludCBkcm1fZHBfYXV4X3JlZ2lzdGVyX2Rldm5vZGUo c3RydWN0IGRybV9kcF9hdXggKmF1eCk7Cj4gK2ludCBkcm1fZHBfYXV4X3VucmVnaXN0ZXJfZGV2 bm9kZShzdHJ1Y3QgZHJtX2RwX2F1eCAqYXV4KTsKPiArCj4gKyNlbHNlCj4gKwo+ICtzdGF0aWMg aW5saW5lIGludCBkcm1fZHBfYXV4X3JlZ2lzdGVyX2Rldm5vZGUoc3RydWN0IGRybV9kcF9hdXgg KmF1eCkKPiArewo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbmxpbmUgaW50IGRy bV9kcF9hdXhfdW5yZWdpc3Rlcl9kZXZub2RlKHN0cnVjdCBkcm1fZHBfYXV4ICphdXgpCj4gK3sK PiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICsjZW5kaWYKPiArCj4gKyNlbmRpZgo+IC0tIAo+IDIu NC4zCj4gCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K PiBkcmktZGV2ZWwgbWFpbGluZyBsaXN0Cj4gZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9y Zwo+IGh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2 ZWwKCi0tIApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwgT1RDCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4 QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==