From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v5 1/2] drm/dp: Add a drm_aux-dev module for reading/writing dpcd registers. Date: Tue, 20 Oct 2015 19:05:06 +0300 Message-ID: <20151020160506.GP26517@intel.com> References: <1444427314-1807-1-git-send-email-rafael.antognolli@intel.com> <1444427314-1807-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: <1444427314-1807-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 T24gRnJpLCBPY3QgMDksIDIwMTUgYXQgMDI6NDg6MzNQTSAtMDcwMCwgUmFmYWVsIEFudG9nbm9s bGkgd3JvdGU6Cj4gVGhpcyBtb2R1bGUgaXMgaGVhdmlseSBiYXNlZCBvbiBpMmMtZGV2LiBPbmNl IGxvYWRlZCwgaXQgcHJvdmlkZXMgb25lCj4gZGV2IG5vZGUgcGVyIERQIEFVWCBjaGFubmVsLCBu YW1lZCBkcm1fZHBfYXV4Tiwgd2hlcmUgTiBpcyBhbiBpbnRlZ2VyLgo+IAo+IEl0J3MgcG9zc2li bGUgdG8ga25vdyB3aGljaCBjb25uZWN0b3Igb3ducyB0aGlzIGF1eCBjaGFubmVsIGJ5IGxvb2tp bmcKPiBhdCB0aGUgcmVzcGVjdGl2ZSBzeXNmcyAvc3lzL2NsYXNzL2RybV9hdXhfZGV2L2RybV9k cF9hdXhOL2Nvbm5lY3RvciwgaWYKPiB0aGUgY29ubmVjdG9yIGRldmljZSBwb2ludGVyIHdhcyBj b3JyZWN0bHkgc2V0IGluIHRoZSBhdXggaGVscGVyIHN0cnVjdC4KPiAKPiBUd28gbWFpbiBvcGVy YXRpb25zIGFyZSBwcm92aWRlZCBvbiB0aGUgcmVnaXN0ZXJzIHJlYWQgYW5kIHdyaXRlLiBUaGUK PiBhZGRyZXNzIG9mIHRoZSByZWdpc3RlciB0byBiZSByZWFkIG9yIHdyaXR0ZW4gaXMgZ2l2ZW4g dXNpbmcgbHNlZWsuIFRoZQo+IHNlZWsgcG9zaXRpb24gaXMgdXBkYXRlZCB1cG9uIHJlYWQgb3Ig d3JpdGUuCj4gCj4gU2lnbmVkLW9mZi1ieTogUmFmYWVsIEFudG9nbm9sbGkgPHJhZmFlbC5hbnRv Z25vbGxpQGludGVsLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL0tjb25maWcgICAgICAg ICAgfCAgIDggKwo+ICBkcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUgICAgICAgICB8ICAgMSArCj4g IGRyaXZlcnMvZ3B1L2RybS9kcm1fZHBfYXV4X2Rldi5jIHwgMzczICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKwo+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2RwX2hlbHBlci5j ICB8ICAgNyArCj4gIGluY2x1ZGUvZHJtL2RybV9kcF9hdXhfZGV2LmggICAgIHwgIDUwICsrKysr Kwo+ICA1IGZpbGVzIGNoYW5nZWQsIDQzOSBpbnNlcnRpb25zKCspCj4gIGNyZWF0ZSBtb2RlIDEw MDY0NCBkcml2ZXJzL2dwdS9kcm0vZHJtX2RwX2F1eF9kZXYuYwo+ICBjcmVhdGUgbW9kZSAxMDA2 NDQgaW5jbHVkZS9kcm0vZHJtX2RwX2F1eF9kZXYuaAo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vS2NvbmZpZyBiL2RyaXZlcnMvZ3B1L2RybS9LY29uZmlnCj4gaW5kZXggMWEwYThk Zi4uNjRmYTBmNCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZwo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9LY29uZmlnCj4gQEAgLTI1LDYgKzI1LDE0IEBAIGNvbmZpZyBEUk1f TUlQSV9EU0kKPiAgCWJvb2wKPiAgCWRlcGVuZHMgb24gRFJNCj4gIAo+ICtjb25maWcgRFJNX0RQ X0FVWF9DSEFSREVWCj4gKwlib29sICJEUk0gRFAgQVVYIEludGVyZmFjZSIKPiArCWRlcGVuZHMg b24gRFJNCj4gKwloZWxwCj4gKwkgIENob29zZSB0aGlzIG9wdGlvbiB0byBlbmFibGUgYSAvZGV2 L2RybV9kcF9hdXhOIG5vZGUgdGhhdCBhbGxvd3MgdG8KPiArCSAgcmVhZCBhbmQgd3JpdGUgdmFs dWVzIHRvIGFyYml0cmFyeSBEUENEIHJlZ2lzdGVycyBvbiB0aGUgRFAgYXV4Cj4gKwkgIGNoYW5u ZWwuCj4gKwo+ICBjb25maWcgRFJNX0tNU19IRUxQRVIKPiAgCXRyaXN0YXRlCj4gIAlkZXBlbmRz IG9uIERSTQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUgYi9kcml2ZXJz L2dwdS9kcm0vTWFrZWZpbGUKPiBpbmRleCBlODE0NTE3Li5lNWJjMGNhIDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmls ZQo+IEBAIC0yOCw2ICsyOCw3IEBAIGRybV9rbXNfaGVscGVyLXkgOj0gZHJtX2NydGNfaGVscGVy Lm8gZHJtX2RwX2hlbHBlci5vIGRybV9wcm9iZV9oZWxwZXIubyBcCj4gIGRybV9rbXNfaGVscGVy LSQoQ09ORklHX0RSTV9MT0FEX0VESURfRklSTVdBUkUpICs9IGRybV9lZGlkX2xvYWQubwo+ICBk cm1fa21zX2hlbHBlci0kKENPTkZJR19EUk1fRkJERVZfRU1VTEFUSU9OKSArPSBkcm1fZmJfaGVs cGVyLm8KPiAgZHJtX2ttc19oZWxwZXItJChDT05GSUdfRFJNX0tNU19DTUFfSEVMUEVSKSArPSBk cm1fZmJfY21hX2hlbHBlci5vCj4gK2RybV9rbXNfaGVscGVyLSQoQ09ORklHX0RSTV9EUF9BVVhf Q0hBUkRFVikgKz0gZHJtX2RwX2F1eF9kZXYubwo+ICAKPiAgb2JqLSQoQ09ORklHX0RSTV9LTVNf SEVMUEVSKSArPSBkcm1fa21zX2hlbHBlci5vCj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vZHJtX2RwX2F1eF9kZXYuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZHBfYXV4X2Rldi5j Cj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi5hMjg2MWUyCj4gLS0tIC9k ZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZHBfYXV4X2Rldi5jCj4gQEAgLTAs MCArMSwzNzMgQEAKPiArLyoKPiArICogQ29weXJpZ2h0IMKpIDIwMTUgSW50ZWwgQ29ycG9yYXRp b24KPiArICoKPiArICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFy Z2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKPiArICogY29weSBvZiB0aGlzIHNvZnR3YXJl IGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKPiAr ICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5n IHdpdGhvdXQgbGltaXRhdGlvbgo+ICsgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5 LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKPiArICogYW5kL29yIHNl bGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20g dGhlCj4gKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUg Zm9sbG93aW5nIGNvbmRpdGlvbnM6Cj4gKyAqCj4gKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90 aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKPiArICog cGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFs IHBvcnRpb25zIG9mIHRoZQo+ICsgKiBTb2Z0d2FyZS4KPiArICoKPiArICogVEhFIFNPRlRXQVJF IElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJF U1MgT1IKPiArICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FS UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCj4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAo+ICsgKiBU SEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwg REFNQUdFUyBPUiBPVEhFUgo+ICsgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9G IENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORwo+ICsgKiBGUk9NLCBPVVQgT0Yg T1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERF QUxJTkdTCj4gKyAqIElOIFRIRSBTT0ZUV0FSRS4KPiArICoKPiArICogQXV0aG9yczoKPiArICog ICAgUmFmYWVsIEFudG9nbm9sbGkgPHJhZmFlbC5hbnRvZ25vbGxpQGludGVsLmNvbT4KPiArICoK PiArICovCj4gKwo+ICsjaW5jbHVkZSA8bGludXgvZGV2aWNlLmg+Cj4gKyNpbmNsdWRlIDxsaW51 eC9mcy5oPgo+ICsjaW5jbHVkZSA8bGludXgvc2xhYi5oPgo+ICsjaW5jbHVkZSA8bGludXgvaW5p dC5oPgo+ICsjaW5jbHVkZSA8bGludXgva2VybmVsLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9tb2R1 bGUuaD4KPiArI2luY2x1ZGUgPGFzbS91YWNjZXNzLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX2Rw X2hlbHBlci5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9jcnRjLmg+Cj4gKwo+ICtzdHJ1Y3QgZHJt X2RwX2F1eF9kZXYgewo+ICsJdW5zaWduZWQgaW5kZXg7Cj4gKwlzdHJ1Y3QgZHJtX2RwX2F1eCAq YXV4Owo+ICsJc3RydWN0IGRldmljZSAqZGV2Owo+ICsJc3RydWN0IGtyZWYgcmVmY291bnQ7Cj4g Kwlib29sIHJlbW92ZWQ7Cj4gKwlzcGlubG9ja190IHJlbW92ZWRfbG9jazsKPiArfTsKPiArCj4g KyNkZWZpbmUgRFJNX0FVWF9NSU5PUlMJMjU2Cj4gKyNkZWZpbmUgQVVYX01BWF9PRkZTRVQJKDEg PDwgMjApCj4gK3N0YXRpYyBERUZJTkVfSURSKGF1eF9pZHIpOwo+ICtzdGF0aWMgREVGSU5FX1NQ SU5MT0NLKGF1eF9pZHJfbG9jayk7Cj4gK3N0YXRpYyBzdHJ1Y3QgY2xhc3MgKmRybV9kcF9hdXhf ZGV2X2NsYXNzOwo+ICtzdGF0aWMgaW50IGRybV9kZXZfbWFqb3IgPSAtMTsKPiArCj4gK3N0YXRp YyBzdHJ1Y3QgZHJtX2RwX2F1eF9kZXYgKmRybV9kcF9hdXhfZGV2X2dldF9ieV9taW5vcih1bnNp Z25lZCBpbmRleCkKPiArewo+ICsJc3RydWN0IGRybV9kcF9hdXhfZGV2ICphdXhfZGV2ID0gTlVM TDsKPiArCj4gKwlzcGluX2xvY2soJmF1eF9pZHJfbG9jayk7Cj4gKwlhdXhfZGV2ID0gaWRyX2Zp bmQoJmF1eF9pZHIsIGluZGV4KTsKPiArCWlmICgha3JlZl9nZXRfdW5sZXNzX3plcm8oJmF1eF9k ZXYtPnJlZmNvdW50KSkKPiArCQlhdXhfZGV2ID0gTlVMTDsKPiArCXNwaW5fdW5sb2NrKCZhdXhf aWRyX2xvY2spOwo+ICsKPiArCXJldHVybiBhdXhfZGV2Owo+ICt9Cj4gKwo+ICtzdGF0aWMgc3Ry dWN0IGRybV9kcF9hdXhfZGV2ICphbGxvY19kcm1fZHBfYXV4X2RldihzdHJ1Y3QgZHJtX2RwX2F1 eCAqYXV4KQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2RwX2F1eF9kZXYgKmF1eF9kZXY7Cj4gKwlpbnQg aW5kZXg7Cj4gKwo+ICsKPiArCWF1eF9kZXYgPSBremFsbG9jKHNpemVvZigqYXV4X2RldiksIEdG UF9LRVJORUwpOwo+ICsJaWYgKCFhdXhfZGV2KQo+ICsJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0p Owo+ICsJYXV4X2Rldi0+YXV4ID0gYXV4Owo+ICsJYXV4X2Rldi0+cmVtb3ZlZCA9IGZhbHNlOwo+ ICsJc3Bpbl9sb2NrX2luaXQoJmF1eF9kZXYtPnJlbW92ZWRfbG9jayk7Cj4gKwlrcmVmX2luaXQo JmF1eF9kZXYtPnJlZmNvdW50KTsKPiArCj4gKwlpZHJfcHJlbG9hZChHRlBfS0VSTkVMKTsKPiAr CXNwaW5fbG9jaygmYXV4X2lkcl9sb2NrKTsKPiArCWluZGV4ID0gaWRyX2FsbG9jX2N5Y2xpYygm YXV4X2lkciwgYXV4X2RldiwgMCwgRFJNX0FVWF9NSU5PUlMsCj4gKwkJCQkgR0ZQX05PV0FJVCk7 Cj4gKwlzcGluX3VubG9jaygmYXV4X2lkcl9sb2NrKTsKPiArCWlkcl9wcmVsb2FkX2VuZCgpOwoK V2l0aCBhIG11dGV4IHRoaW5ncyB3b3VsZCBiZSBzaW1wbGVyLgoKPiArCWlmIChpbmRleCA8IDAp IHsKPiArCQlrZnJlZShhdXhfZGV2KTsKPiArCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKCkNh biBqdXN0IHBhc3MgdGhlIGVycm9yIHZhbHVlIGZyb20gaWRyX2FsbG9jX2N5Y2xpYygpIHVwd2Fy ZHMgSSB0aGluay4KCj4gKwl9Cj4gKwlhdXhfZGV2LT5pbmRleCA9IGluZGV4Owo+ICsKPiArCXJl dHVybiBhdXhfZGV2Owo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBmcmVlX2RybV9kcF9hdXhfZGV2 KHN0cnVjdCBkcm1fZHBfYXV4X2RldiAqYXV4X2RldikKPiArewo+ICsJc3Bpbl9sb2NrKCZhdXhf aWRyX2xvY2spOwo+ICsJaWRyX3JlbW92ZSgmYXV4X2lkciwgYXV4X2Rldi0+aW5kZXgpOwo+ICsJ c3Bpbl91bmxvY2soJmF1eF9pZHJfbG9jayk7CgpJIHRoaW5rIHRoZSBpZHJfcmVtb3ZlIHNob3Vs ZCBiZSBkb25lIHdoZW4gdW5yZWdpc3RlcmluZyB0aGUgYXV4X2RldiwKdGhhdCB3YXkgbm8gb25l IGNhbiBvcGVuIGl0IGFueW1vcmUgYWZ0ZXIgaXQncyBnb25lLgoKPiArCWtmcmVlKGF1eF9kZXYp Owo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCByZWxlYXNlX2RybV9kcF9hdXhfZGV2KHN0cnVjdCBr cmVmICpyZWYpCj4gK3sKPiArCWludCBtaW5vcjsKPiArCXN0cnVjdCBkcm1fZHBfYXV4X2RldiAq YXV4X2RldiA9Cj4gKwkJY29udGFpbmVyX29mKHJlZiwgc3RydWN0IGRybV9kcF9hdXhfZGV2LCBy ZWZjb3VudCk7Cj4gKwltaW5vciA9IGF1eF9kZXYtPmluZGV4Owo+ICsJZGV2aWNlX2Rlc3Ryb3ko ZHJtX2RwX2F1eF9kZXZfY2xhc3MsIE1LREVWKGRybV9kZXZfbWFqb3IsIG1pbm9yKSk7CgpkZXZp Y2VfZGVzdHJveSgpIHNob3VsZCBhbHNvIGJlIGRvbmUgd2hlbiB1bnJlZ2lzdGVpbmcgSSB0aGlu ay4KCj4gKwo+ICsJZnJlZV9kcm1fZHBfYXV4X2RldihhdXhfZGV2KTsKPiArfQo+ICsKPiArc3Rh dGljIHNzaXplX3QgbmFtZV9zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwKPiArCQkJIHN0cnVjdCBk ZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCj4gK3sKPiArCXNzaXplX3QgcmVzOwo+ ICsJc3RydWN0IGRybV9kcF9hdXhfZGV2ICphdXhfZGV2ID0KPiArCQlkcm1fZHBfYXV4X2Rldl9n ZXRfYnlfbWlub3IoTUlOT1IoZGV2LT5kZXZ0KSk7Cj4gKwo+ICsJaWYgKCFhdXhfZGV2KQo+ICsJ CXJldHVybiAtRU5PREVWOwo+ICsKPiArCXJlcyA9IHNwcmludGYoYnVmLCAiJXNcbiIsIGF1eF9k ZXYtPmF1eC0+bmFtZSk7Cj4gKwlrcmVmX3B1dCgmYXV4X2Rldi0+cmVmY291bnQsIHJlbGVhc2Vf ZHJtX2RwX2F1eF9kZXYpOwo+ICsKPiArCXJldHVybiByZXM7Cj4gK30KPiArc3RhdGljIERFVklD RV9BVFRSX1JPKG5hbWUpOwo+ICsKPiArc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmRybV9kcF9h dXhfYXR0cnNbXSA9IHsKPiArCSZkZXZfYXR0cl9uYW1lLmF0dHIsCj4gKwlOVUxMLAo+ICt9Owo+ ICtBVFRSSUJVVEVfR1JPVVBTKGRybV9kcF9hdXgpOwo+ICsKPiArc3RhdGljIGludCBhdXhkZXZf b3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSkKPiArewo+ICsJdW5z aWduZWQgaW50IG1pbm9yID0gaW1pbm9yKGlub2RlKTsKPiArCXN0cnVjdCBkcm1fZHBfYXV4X2Rl diAqYXV4X2RldjsKPiArCj4gKwlhdXhfZGV2ID0gZHJtX2RwX2F1eF9kZXZfZ2V0X2J5X21pbm9y KG1pbm9yKTsKPiArCWlmICghYXV4X2RldikKPiArCQlyZXR1cm4gLUVOT0RFVjsKPiArCj4gKwlm aWxlLT5wcml2YXRlX2RhdGEgPSBhdXhfZGV2Owo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0 YXRpYyBsb2ZmX3QgYXV4ZGV2X2xsc2VlayhzdHJ1Y3QgZmlsZSAqZmlsZSwgbG9mZl90IG9mZnNl dCwgaW50IHdoZW5jZSkKPiArewo+ICsJcmV0dXJuIGZpeGVkX3NpemVfbGxzZWVrKGZpbGUsIG9m ZnNldCwgd2hlbmNlLCBBVVhfTUFYX09GRlNFVCk7Cj4gK30KPiArCj4gK3N0YXRpYyBzc2l6ZV90 IGF1eGRldl9yZWFkKHN0cnVjdCBmaWxlICpmaWxlLCBjaGFyIF9fdXNlciAqYnVmLCBzaXplX3Qg Y291bnQsCj4gKwkJCSAgIGxvZmZfdCAqb2Zmc2V0KQo+ICt7Cj4gKwlzaXplX3QgYnl0ZXNfcGVu ZGluZywgbnVtX2J5dGVzX3Byb2Nlc3NlZCA9IDA7Cj4gKwlzdHJ1Y3QgZHJtX2RwX2F1eF9kZXYg KmF1eF9kZXYgPSBmaWxlLT5wcml2YXRlX2RhdGE7Cj4gKwlib29sIGF1eF9yZW1vdmVkOwo+ICsK PiArCWlmIChjb3VudCA8IDApCj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICsJc3Bpbl9sb2Nr KCZhdXhfZGV2LT5yZW1vdmVkX2xvY2spOwo+ICsJYXV4X3JlbW92ZWQgPSBhdXhfZGV2LT5yZW1v dmVkOwo+ICsJc3Bpbl91bmxvY2soJmF1eF9kZXYtPnJlbW92ZWRfbG9jayk7Cj4gKwlpZiAoYXV4 X3JlbW92ZWQpCj4gKwkJcmV0dXJuIC1FTk9ERVY7CgpIbW0uIFRoaXMgc2VlbXMgcmFjeSBzdGls bC4gYXV4X2RldiB3aWxsIG5vdyBzdGF5IGFyb3VuZCB1bnRpbCB0aGUgZmlsZQppcyBjbG9zZWQs IGJ1dCB0aGUgYWN0dWFsIGF1eCBoZWxwZXIgYmFja2luZyBpdCBtYXkgc3RpbGwgZGlzYXBwZWFy IGF0CmFueSB0aW1lLiBJIGRvbid0IHRoaW5rIHdlIHdhbnQgdG8gaG9sZCBhIGxvY2sgYXJvdW5k IHRoZSB3aG9sZSB0aGluZywKY2F1c2UgSSBoYXZlIGEgZmVlbGluZyB0aGF0IHdheSBsaWVzIGxv Y2tkZXAgaXNzdWVzLiBTbyBtYXliZSB3ZSBuZWVkCnNvbWUga2luZGEgYXRvbWljIHVzZSBjb3Vu dGVyIGhlcmUsIG9yIHNvbWV0aGluZz8KCnJlYWQoKQp7CglpZiAoYXRvbWljX2luY191bmxlc3Nf emVybyh1c2Vjb3VudCkpCgkJcmV0dXJuIC0uLi47CgoJLi4uCgoJYXRvbWljX2RlYygpOwoJd2Fr ZV91cCgpOwp9Cgp1bnJlZ2lzdGVyKCkKewoJaWRyX3JlbW92ZSgpOwoJYXRvbWljX2RlYyh1c2Vj b3VudCk7Cgl3YWl0X2V2ZW50KHVzZWNvdW50ID09IDApOwoJa3JlZl9wdXQoKTsKfQoKcmVnaXN0 ZXIoKQp7CgkuLi4KCWF0b21pY19zZXQodXNlY291bnQsIDEpOwoJaWRyX2FsbG9jX2N5Y2xpYygp Owp9CgpJIGd1ZXNzIGFub3RoZXIgb3B0aW9uIHdvdWxkIHRvIGp1c3Qgd2FpdCBmb3IgYWxsIGZk cyB0byBiZSBjbG9zZWQgaW4gYQpzaW1pbGFyIGZhc2hpb24uIEJ1dCB0aGF0IHNlZW1zIGxpa2Ug YSBtb3JlIG9wZW4gZW5kZWQgd2FpdC4KCj4gKwo+ICsJYnl0ZXNfcGVuZGluZyA9IG1pbigobG9m Zl90KWNvdW50LCBBVVhfTUFYX09GRlNFVCAtICgqb2Zmc2V0KSk7Cj4gKwo+ICsJaWYgKCFhY2Nl c3Nfb2soVkVSSUZZX1dSSVRFLCBidWYsIGJ5dGVzX3BlbmRpbmcpKQo+ICsJCXJldHVybiAtRUZB VUxUOwo+ICsKPiArCXdoaWxlIChieXRlc19wZW5kaW5nID4gMCkgewo+ICsJCXVpbnQ4X3QgbG9j YWxidWZbRFBfQVVYX01BWF9QQVlMT0FEX0JZVEVTXTsKPiArCQlzc2l6ZV90IHJlczsKPiArCQlz c2l6ZV90IHRvZG8gPSBtaW4oYnl0ZXNfcGVuZGluZywgc2l6ZW9mKGxvY2FsYnVmKSk7Cj4gKwo+ ICsJCXJlcyA9IGRybV9kcF9kcGNkX3JlYWQoYXV4X2Rldi0+YXV4LCAqb2Zmc2V0LCBsb2NhbGJ1 ZiwgdG9kbyk7Cj4gKwkJaWYgKHJlcyA8PSAwKQo+ICsJCQlyZXR1cm4gbnVtX2J5dGVzX3Byb2Nl c3NlZCA/IG51bV9ieXRlc19wcm9jZXNzZWQgOiByZXM7Cj4gKwkJaWYgKF9fY29weV90b191c2Vy KGJ1ZiArIG51bV9ieXRlc19wcm9jZXNzZWQsIGxvY2FsYnVmLCByZXMpKQo+ICsJCQlyZXR1cm4g bnVtX2J5dGVzX3Byb2Nlc3NlZCA/Cj4gKwkJCQludW1fYnl0ZXNfcHJvY2Vzc2VkIDogLUVGQVVM VDsKPiArCQlieXRlc19wZW5kaW5nIC09IHJlczsKPiArCQkqb2Zmc2V0ICs9IHJlczsKPiArCQlu dW1fYnl0ZXNfcHJvY2Vzc2VkICs9IHJlczsKPiArCX0KPiArCj4gKwlyZXR1cm4gbnVtX2J5dGVz X3Byb2Nlc3NlZDsKPiArfQo+ICsKPiArc3RhdGljIHNzaXplX3QgYXV4ZGV2X3dyaXRlKHN0cnVj dCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqYnVmLAo+ICsJCQkgICAgc2l6ZV90IGNv dW50LCBsb2ZmX3QgKm9mZnNldCkKPiArewo+ICsJc2l6ZV90IGJ5dGVzX3BlbmRpbmcsIG51bV9i eXRlc19wcm9jZXNzZWQgPSAwOwo+ICsJc3RydWN0IGRybV9kcF9hdXhfZGV2ICphdXhfZGV2ID0g ZmlsZS0+cHJpdmF0ZV9kYXRhOwo+ICsJYm9vbCBhdXhfcmVtb3ZlZDsKPiArCj4gKwlpZiAoY291 bnQgPCAwKQo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsKPiArCXNwaW5fbG9jaygmYXV4X2Rldi0+ cmVtb3ZlZF9sb2NrKTsKPiArCWF1eF9yZW1vdmVkID0gYXV4X2Rldi0+cmVtb3ZlZDsKPiArCXNw aW5fdW5sb2NrKCZhdXhfZGV2LT5yZW1vdmVkX2xvY2spOwo+ICsJaWYgKGF1eF9yZW1vdmVkKQo+ ICsJCXJldHVybiAtRU5PREVWOwo+ICsKPiArCWJ5dGVzX3BlbmRpbmcgPSBtaW4oKGxvZmZfdClj b3VudCwgQVVYX01BWF9PRkZTRVQgLSAqb2Zmc2V0KTsKPiArCj4gKwlpZiAoIWFjY2Vzc19vayhW RVJJRllfUkVBRCwgYnVmLCBieXRlc19wZW5kaW5nKSkKPiArCQlyZXR1cm4gLUVGQVVMVDsKPiAr Cj4gKwl3aGlsZSAoYnl0ZXNfcGVuZGluZyA+IDApIHsKPiArCQl1aW50OF90IGxvY2FsYnVmW0RQ X0FVWF9NQVhfUEFZTE9BRF9CWVRFU107Cj4gKwkJc3NpemVfdCByZXM7Cj4gKwkJc3NpemVfdCB0 b2RvID0gbWluKGJ5dGVzX3BlbmRpbmcsIHNpemVvZihsb2NhbGJ1ZikpOwo+ICsKPiArCQlpZiAo X19jb3B5X2Zyb21fdXNlcihsb2NhbGJ1ZiwKPiArCQkJCSAgICAgYnVmICsgbnVtX2J5dGVzX3By b2Nlc3NlZCwgdG9kbykpIHsKPiArCQkJcmV0dXJuIG51bV9ieXRlc19wcm9jZXNzZWQgPwo+ICsJ CQkJbnVtX2J5dGVzX3Byb2Nlc3NlZCA6IC1FRkFVTFQ7Cj4gKwkJfQo+ICsKPiArCQlyZXMgPSBk cm1fZHBfZHBjZF93cml0ZShhdXhfZGV2LT5hdXgsICpvZmZzZXQsIGxvY2FsYnVmLCB0b2RvKTsK PiArCQlpZiAocmVzIDw9IDApIHsKPiArCQkJcmV0dXJuIG51bV9ieXRlc19wcm9jZXNzZWQgPyBu dW1fYnl0ZXNfcHJvY2Vzc2VkIDogcmVzOwo+ICsJCX0KPiArCQlieXRlc19wZW5kaW5nIC09IHJl czsKPiArCQkqb2Zmc2V0ICs9IHJlczsKPiArCQludW1fYnl0ZXNfcHJvY2Vzc2VkICs9IHJlczsK PiArCX0KPiArCj4gKwlyZXR1cm4gbnVtX2J5dGVzX3Byb2Nlc3NlZDsKPiArfQo+ICsKPiArc3Rh dGljIGludCBhdXhkZXZfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAq ZmlsZSkKPiArewo+ICsJc3RydWN0IGRybV9kcF9hdXhfZGV2ICphdXhfZGV2ID0gZmlsZS0+cHJp dmF0ZV9kYXRhOwo+ICsJa3JlZl9wdXQoJmF1eF9kZXYtPnJlZmNvdW50LCByZWxlYXNlX2RybV9k cF9hdXhfZGV2KTsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0 IGZpbGVfb3BlcmF0aW9ucyBhdXhkZXZfZm9wcyA9IHsKPiArCS5vd25lcgkJPSBUSElTX01PRFVM RSwKPiArCS5sbHNlZWsJCT0gYXV4ZGV2X2xsc2VlaywKPiArCS5yZWFkCQk9IGF1eGRldl9yZWFk LAo+ICsJLndyaXRlCQk9IGF1eGRldl93cml0ZSwKPiArCS5vcGVuCQk9IGF1eGRldl9vcGVuLAo+ ICsJLnJlbGVhc2UJPSBhdXhkZXZfcmVsZWFzZSwKPiArfTsKPiArCj4gKyNkZWZpbmUgdG9fYXV4 ZGV2KGQpIGNvbnRhaW5lcl9vZihkLCBzdHJ1Y3QgZHJtX2RwX2F1eF9kZXYsIGF1eCkKPiArCj4g Ky8qKgo+ICsgKiBkcm1fZHBfYXV4X3JlZ2lzdGVyX2Rldm5vZGUoKSAtIHJlZ2lzdGVyIGEgZGV2 bm9kZSBmb3IgdGhpcyBhdXggY2hhbm5lbAo+ICsgKiBAYXV4OiBEaXNwbGF5UG9ydCBBVVggY2hh bm5lbAo+ICsgKgo+ICsgKiBSZXR1cm5zIDAgb24gc3VjY2VzcyBvciBhIG5lZ2F0aXZlIGVycm9y IGNvZGUgb24gZmFpbHVyZS4KPiArICovCj4gK2ludCBkcm1fZHBfYXV4X3JlZ2lzdGVyX2Rldm5v ZGUoc3RydWN0IGRybV9kcF9hdXggKmF1eCkKPiArewo+ICsJc3RydWN0IGRybV9kcF9hdXhfZGV2 ICphdXhfZGV2Owo+ICsJaW50IHJlczsKPiArCj4gKwlhdXhfZGV2ID0gYWxsb2NfZHJtX2RwX2F1 eF9kZXYoYXV4KTsKPiArCWlmIChJU19FUlIoYXV4X2RldikpCj4gKwkJcmV0dXJuIFBUUl9FUlIo YXV4X2Rldik7Cj4gKwo+ICsJYXV4X2Rldi0+ZGV2ID0gZGV2aWNlX2NyZWF0ZShkcm1fZHBfYXV4 X2Rldl9jbGFzcywgYXV4LT5kZXYsCj4gKwkJCQkgICAgIE1LREVWKGRybV9kZXZfbWFqb3IsIGF1 eF9kZXYtPmluZGV4KSwgTlVMTCwKPiArCQkJCSAgICAgImRybV9kcF9hdXglZCIsIGF1eF9kZXYt PmluZGV4KTsKPiArCWlmIChJU19FUlIoYXV4X2Rldi0+ZGV2KSkgewo+ICsJCXJlcyA9IFBUUl9F UlIoYXV4X2Rldi0+ZGV2KTsKPiArCQlnb3RvIGVycm9yOwo+ICsJfQo+ICsKPiArCXByX2RlYnVn KCJkcm1fZHBfYXV4X2RldjogYXV4IFslc10gcmVnaXN0ZXJlZCBhcyBtaW5vciAlZFxuIiwKPiAr CQkgYXV4LT5uYW1lLCBhdXhfZGV2LT5pbmRleCk7Cj4gKwlyZXR1cm4gMDsKPiArZXJyb3I6Cj4g KwlmcmVlX2RybV9kcF9hdXhfZGV2KGF1eF9kZXYpOwo+ICsJcmV0dXJuIHJlczsKPiArfQo+ICtF WFBPUlRfU1lNQk9MKGRybV9kcF9hdXhfcmVnaXN0ZXJfZGV2bm9kZSk7Cj4gKwo+ICtzdGF0aWMg c3RydWN0IGRybV9kcF9hdXhfZGV2ICpkcm1fZHBfYXV4X2Rldl9nZXRfYnlfYXV4KHN0cnVjdCBk cm1fZHBfYXV4ICphdXgpCj4gK3sKPiArCXN0cnVjdCBkcm1fZHBfYXV4X2RldiAqaXRlciwgKmF1 eF9kZXYgPSBOVUxMOwo+ICsJaW50IGlkOwo+ICsKPiArCS8qIGRvbid0IGluY3JlYXNlIGtyZWYg Y291bnQgaGVyZSBiZWNhdXNlIHRoaXMgZnVuY3Rpb24gc2hvdWxkIG9ubHkgYmUKPiArCSAqIHVz ZWQgYnkgZHJtX2RwX2F1eF91bnJlZ2lzdGVyX2Rldm5vZGUuIFRodXMsIGl0IHdpbGwgYWx3YXlz IGhhdmUgYXQKPiArCSAqIGxlYXN0IG9uZSByZWZlcmVuY2UgLSB0aGUgb25lIHRoYXQgZHJtX2Rw X2F1eF9yZWdpc3Rlcl9kZXZub2RlCj4gKwkgKiBjcmVhdGVkICovCj4gKwlzcGluX2xvY2soJmF1 eF9pZHJfbG9jayk7Cj4gKwlpZHJfZm9yX2VhY2hfZW50cnkoJmF1eF9pZHIsIGl0ZXIsIGlkKSB7 Cj4gKwkJaWYgKGl0ZXItPmF1eCA9PSBhdXgpIHsKPiArCQkJYXV4X2RldiA9IGl0ZXI7Cj4gKwkJ CWJyZWFrOwo+ICsJCX0KPiArCX0KPiArCXNwaW5fdW5sb2NrKCZhdXhfaWRyX2xvY2spOwo+ICsJ cmV0dXJuIGF1eF9kZXY7Cj4gK30KPiArCj4gKy8qKgo+ICsgKiBkcm1fZHBfYXV4X3VucmVnaXN0 ZXJfZGV2bm9kZSgpIC0gdW5yZWdpc3RlciBhIGRldm5vZGUgZm9yIHRoaXMgYXV4IGNoYW5uZWwK PiArICogQGF1eDogRGlzcGxheVBvcnQgQVVYIGNoYW5uZWwKPiArICoKPiArICogUmV0dXJucyAw IG9uIHN1Y2Nlc3Mgb3IgYSBuZWdhdGl2ZSBlcnJvciBjb2RlIG9uIGZhaWx1cmUuCj4gKyAqLwo+ ICtpbnQgZHJtX2RwX2F1eF91bnJlZ2lzdGVyX2Rldm5vZGUoc3RydWN0IGRybV9kcF9hdXggKmF1 eCkKPiArewo+ICsJc3RydWN0IGRybV9kcF9hdXhfZGV2ICphdXhfZGV2Owo+ICsKPiArCWF1eF9k ZXYgPSBkcm1fZHBfYXV4X2Rldl9nZXRfYnlfYXV4KGF1eCk7Cj4gKwlpZiAoIWF1eF9kZXYpIC8q IGF0dGFjaCBtdXN0IGhhdmUgZmFpbGVkICovCj4gKwkJcmV0dXJuIDA7Cj4gKwo+ICsJc3Bpbl9s b2NrKCZhdXhfZGV2LT5yZW1vdmVkX2xvY2spOwo+ICsJYXV4X2Rldi0+cmVtb3ZlZCA9IHRydWU7 Cj4gKwlzcGluX3VubG9jaygmYXV4X2Rldi0+cmVtb3ZlZF9sb2NrKTsKPiArCj4gKwlrcmVmX3B1 dCgmYXV4X2Rldi0+cmVmY291bnQsIHJlbGVhc2VfZHJtX2RwX2F1eF9kZXYpOwo+ICsJcHJfZGVi dWcoImRybV9kcF9hdXhfZGV2OiBhdXggWyVzXSB1bnJlZ2lzdGVyZWRcbiIsIGF1eC0+bmFtZSk7 Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArRVhQT1JUX1NZTUJPTChkcm1fZHBfYXV4X3VucmVn aXN0ZXJfZGV2bm9kZSk7Cj4gKwo+ICtzdGF0aWMgaW50IF9faW5pdCBkcm1fZHBfYXV4X2Rldl9p bml0KHZvaWQpCj4gK3sKPiArCWludCByZXM7Cj4gKwo+ICsJcmVzID0gcmVnaXN0ZXJfY2hyZGV2 KDAsICJhdXgiLCAmYXV4ZGV2X2ZvcHMpOwoKQXMgc29vbiBhcyB0aGlzIHJldHVybnMgc29tZW9u ZSBjYW4gb3BlbiB0aGUgZGV2aWNlLCBzbyBzZWVtcyBsaWtlIHRoaXMKc2hvdWxkIGJlIHRoZSBs YXN0IHRoaW5nIHdlIGRvLgoKPiArCWlmIChyZXMgPCAwKQo+ICsJCWdvdG8gb3V0Owo+ICsJZHJt X2Rldl9tYWpvciA9IHJlczsKPiArCj4gKwlkcm1fZHBfYXV4X2Rldl9jbGFzcyA9IGNsYXNzX2Ny ZWF0ZShUSElTX01PRFVMRSwgImRybV9kcF9hdXhfZGV2Iik7Cj4gKwlpZiAoSVNfRVJSKGRybV9k cF9hdXhfZGV2X2NsYXNzKSkgewo+ICsJCXJlcyA9IFBUUl9FUlIoZHJtX2RwX2F1eF9kZXZfY2xh c3MpOwo+ICsJCWdvdG8gb3V0X3VucmVnX2NocmRldjsKPiArCX0KPiArCWRybV9kcF9hdXhfZGV2 X2NsYXNzLT5kZXZfZ3JvdXBzID0gZHJtX2RwX2F1eF9ncm91cHM7Cj4gKwo+ICsJaWRyX2luaXQo JmF1eF9pZHIpOwoKQUZBSUsgbm8gbmVlZCB0byBpbml0IGl0IHNpbmNlIHlvdSB1c2VkIERFRklO RV9JRFIoKQoKPiArCj4gKwlyZXR1cm4gMDsKPiArCj4gK291dF91bnJlZ19jaHJkZXY6Cj4gKwl1 bnJlZ2lzdGVyX2NocmRldihkcm1fZGV2X21ham9yLCAiYXV4Iik7Cj4gK291dDoKPiArCXByaW50 ayhLRVJOX0VSUiAiJXM6IERyaXZlciBJbml0aWFsaXNhdGlvbiBmYWlsZWRcbiIsIF9fRklMRV9f KTsKPiArCXJldHVybiByZXM7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIF9fZXhpdCBkcm1fZHBf YXV4X2Rldl9leGl0KHZvaWQpCj4gK3sKPiArCWNsYXNzX2Rlc3Ryb3koZHJtX2RwX2F1eF9kZXZf Y2xhc3MpOwo+ICsJdW5yZWdpc3Rlcl9jaHJkZXYoZHJtX2Rldl9tYWpvciwgImF1eCIpOwo+ICt9 Cj4gKwo+ICtNT0RVTEVfQVVUSE9SKCJSYWZhZWwgQW50b2dub2xsaSA8cmFmYWVsLmFudG9nbm9s bGlAaW50ZWwuY29tPiIpOwo+ICtNT0RVTEVfREVTQ1JJUFRJT04oIkRSTSBEUCBBVVggL2RldiBl bnRyaWVzIGRyaXZlciIpOwo+ICtNT0RVTEVfTElDRU5TRSgiR1BMIGFuZCBhZGRpdGlvbmFsIHJp Z2h0cyIpOwo+ICsKPiArbW9kdWxlX2luaXQoZHJtX2RwX2F1eF9kZXZfaW5pdCk7Cj4gK21vZHVs ZV9leGl0KGRybV9kcF9hdXhfZGV2X2V4aXQpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vZHJtX2RwX2hlbHBlci5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9kcF9oZWxwZXIuYwo+IGlu ZGV4IDk1MzVjNWIuLmU1MGY2NWQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9k cF9oZWxwZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZHBfaGVscGVyLmMKPiBAQCAt MjgsNiArMjgsNyBAQAo+ICAjaW5jbHVkZSA8bGludXgvc2NoZWQuaD4KPiAgI2luY2x1ZGUgPGxp bnV4L2kyYy5oPgo+ICAjaW5jbHVkZSA8ZHJtL2RybV9kcF9oZWxwZXIuaD4KPiArI2luY2x1ZGUg PGRybS9kcm1fZHBfYXV4X2Rldi5oPgo+ICAjaW5jbHVkZSA8ZHJtL2RybVAuaD4KPiAgCj4gIC8q Kgo+IEBAIC03NjgsNiArNzY5LDExIEBAIGludCBkcm1fZHBfYXV4X3JlZ2lzdGVyKHN0cnVjdCBk cm1fZHBfYXV4ICphdXgpCj4gIAlzdHJsY3B5KGF1eC0+ZGRjLm5hbWUsIGF1eC0+bmFtZSA/IGF1 eC0+bmFtZSA6IGRldl9uYW1lKGF1eC0+ZGV2KSwKPiAgCQlzaXplb2YoYXV4LT5kZGMubmFtZSkp Owo+ICAKPiArCgpMb29rcyBsaWtlIGFuIGV4dHJhIG5ld2xpbmUgd2UgZG9uJ3QgbmVlZC4KCj4g KwlpZiAoZHJtX2RwX2F1eF9yZWdpc3Rlcl9kZXZub2RlKGF1eCkpCj4gKwkJcHJpbnRrKEtFUk5f RVJSICIlczogQ291bGQgbm90IHJlZ2lzdGVyIGRybV9kcF9hdXhfZGV2LlxuIiwKPiArCQkgICAg ICAgX19GSUxFX18pOwo+ICsKPiAgCXJldHVybiBpMmNfYWRkX2FkYXB0ZXIoJmF1eC0+ZGRjKTsK PiAgfQo+ICBFWFBPUlRfU1lNQk9MKGRybV9kcF9hdXhfcmVnaXN0ZXIpOwo+IEBAIC03NzgsNiAr Nzg0LDcgQEAgRVhQT1JUX1NZTUJPTChkcm1fZHBfYXV4X3JlZ2lzdGVyKTsKPiAgICovCj4gIHZv aWQgZHJtX2RwX2F1eF91bnJlZ2lzdGVyKHN0cnVjdCBkcm1fZHBfYXV4ICphdXgpCj4gIHsKPiAr CWRybV9kcF9hdXhfdW5yZWdpc3Rlcl9kZXZub2RlKGF1eCk7Cj4gIAlpMmNfZGVsX2FkYXB0ZXIo JmF1eC0+ZGRjKTsKPiAgfQo+ICBFWFBPUlRfU1lNQk9MKGRybV9kcF9hdXhfdW5yZWdpc3Rlcik7 Cj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9kcF9hdXhfZGV2LmggYi9pbmNsdWRlL2Ry bS9kcm1fZHBfYXV4X2Rldi5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAw Li4zNTQwOWEyCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2luY2x1ZGUvZHJtL2RybV9kcF9hdXhf ZGV2LmgKPiBAQCAtMCwwICsxLDUwIEBACj4gKy8qCj4gKyAqIENvcHlyaWdodCDCqSAyMDE1IElu dGVsIENvcnBvcmF0aW9uCj4gKyAqCj4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQs IGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCj4gKyAqIGNvcHkgb2Yg dGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNv ZnR3YXJlIiksCj4gKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rp b24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KPiArICogdGhlIHJpZ2h0cyB0byB1c2Us IGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCj4g KyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVy c29ucyB0byB3aG9tIHRoZQo+ICsgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1 YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgo+ICsgKgo+ICsgKiBUaGUgYWJvdmUg Y29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRo ZSBuZXh0Cj4gKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBv ciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKPiArICogU29mdHdhcmUuCj4gKyAqCj4gKyAq IFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFO WSBLSU5ELCBFWFBSRVNTIE9SCj4gKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlU RUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAo+ICsgKiBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQg U0hBTEwKPiArICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZP UiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKPiArICogTElBQklMSVRZLCBXSEVUSEVSIElO IEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKPiArICog RlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVT RSBPUiBPVEhFUiBERUFMSU5HUwo+ICsgKiBJTiBUSEUgU09GVFdBUkUuCj4gKyAqCj4gKyAqIEF1 dGhvcnM6Cj4gKyAqICAgIFJhZmFlbCBBbnRvZ25vbGxpIDxyYWZhZWwuYW50b2dub2xsaUBpbnRl bC5jb20+Cj4gKyAqCj4gKyAqLwo+ICsKPiArI2lmbmRlZiBEUk1fRFBfQVVYX0RFVgo+ICsjZGVm aW5lIERSTV9EUF9BVVhfREVWCj4gKwo+ICsjaWZkZWYgQ09ORklHX0RSTV9EUF9BVVhfQ0hBUkRF Vgo+ICsKPiAraW50IGRybV9kcF9hdXhfcmVnaXN0ZXJfZGV2bm9kZShzdHJ1Y3QgZHJtX2RwX2F1 eCAqYXV4KTsKPiAraW50IGRybV9kcF9hdXhfdW5yZWdpc3Rlcl9kZXZub2RlKHN0cnVjdCBkcm1f ZHBfYXV4ICphdXgpOwo+ICsKPiArI2Vsc2UKPiArCj4gK3N0YXRpYyBpbmxpbmUgaW50IGRybV9k cF9hdXhfcmVnaXN0ZXJfZGV2bm9kZShzdHJ1Y3QgZHJtX2RwX2F1eCAqYXV4KQo+ICt7Cj4gKwly ZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGlubGluZSBpbnQgZHJtX2RwX2F1eF91bnJlZ2lz dGVyX2Rldm5vZGUoc3RydWN0IGRybV9kcF9hdXggKmF1eCkKPiArewo+ICsJcmV0dXJuIDA7Cj4g K30KPiArCj4gKyNlbmRpZgo+ICsKPiArI2VuZGlmCj4gLS0gCj4gMi40LjMKPiAKPiBfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IGRyaS1kZXZlbCBtYWls aW5nIGxpc3QKPiBkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cDovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAoKLS0gClZpbGxlIFN5 cmrDpGzDpApJbnRlbCBPVEMKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRl bC1nZngK