From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: Re: [PATCH] drm/i915: Allow control of PSR at runtime through debugfs, v3. Date: Fri, 27 Jul 2018 10:41:32 +0200 Message-ID: <4a19b092-2a57-233c-1c6e-3ec6c3aea7d6@linux.intel.com> References: <1532586735.3356.99.camel@intel.com> <20180726090604.12142-1-maarten.lankhorst@linux.intel.com> <1532662071.3356.153.camel@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5779C89C9A for ; Fri, 27 Jul 2018 08:41:35 +0000 (UTC) In-Reply-To: <1532662071.3356.153.camel@intel.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: dhinakaran.pandiyan@intel.com, intel-gfx@lists.freedesktop.org Cc: Rodrigo Vivi List-Id: intel-gfx@lists.freedesktop.org T3AgMjctMDctMTggb20gMDU6Mjcgc2NocmVlZiBEaGluYWthcmFuIFBhbmRpeWFuOgo+IE9uIFRo dSwgMjAxOC0wNy0yNiBhdCAxMTowNiArMDIwMCwgTWFhcnRlbiBMYW5raG9yc3Qgd3JvdGU6Cj4+ IEN1cnJlbnRseSB0ZXN0cyBtb2RpZnkgaTkxNS5lbmFibGVfcHNyIGFuZCB0aGVuIGRvIGEgbW9k ZXNldCBjeWNsZQo+PiB0byBjaGFuZ2UgUFNSLiBXZSBjYW4gd3JpdGUgYSB2YWx1ZSB0byBpOTE1 X2VkcF9wc3Jfc3RhdHVzIHRvIGZvcmNlCj4+IGEgY2VydGFpbiB2YWx1ZSB3aXRob3V0IGEgbW9k ZXNldC4KPj4KPj4gVG8gcmV0YWluIGNvbXBhdGliaWxpdHkgd2l0aCBvbGRlciB1c2Vyc3BhY2Us IHdlIGFsc28gc3RpbGwgYWxsb3cKPj4gdGhlIG92ZXJyaWRlIHRocm91Z2ggdGhlIG1vZHVsZSBw YXJhbWV0ZXIsIGFuZCBhZGQgc29tZSB0cmFja2luZwo+PiB0byBjaGVjayB3aGV0aGVyIGEgZGVi dWdmcyBtb2RlIGlzIHNwZWNpZmllZC4KPj4KPj4gQ2hhbmdlcyBzaW5jZSB2MToKPj4gLSBSZW5h bWUgZGV2X3ByaXYtPnBzci5lbmFibGVkIHRvIC5kcCwgYW5kIC5od19jb25maWd1cmVkIHRvCj4+ IC5lbmFibGVkLgo+PiAtIEZpeCBpOTE1X3Bzcl9kZWJ1Z2ZzX21vZGUgdG8gbWF0Y2ggdGhlIHdy aXRlcyB0byBkZWJ1Z2ZzLgo+PiAtIFJlbmFtZSBfX2k5MTVfZWRwX3Bzcl93cml0ZSB0byBpbnRl bF9wc3Jfc2V0X2RlYnVnZnNfbW9kZSwgc2ltcGxpZnkKPj4gwqAgaXQgYW5kIG1vdmUgaXQgdG8g aW50ZWxfcHNyLmMuIFRoaXMga2VlcHMgYWxsIGludGVybmFscyBpbgo+PiBpbnRlbF9wc3IuYwo+ PiAtIFBlcmZvcm0gYW4gaW50ZXJydXB0aWJsZSB3YWl0IGZvciBodyBjb21wbGV0aW9uIG91dHNp ZGUgb2YgdGhlIHBzcgo+PiDCoCBsb2NrLCBpbnN0ZWFkIG9mIGJlaW5nIGZvcmNlZCB0byB0cnl3 YWl0IGFuZCByZXR1cm4gLUVCVVNZLgo+PiBDaGFuZ2VzIHNpbmNlIHYyOgo+PiAtIFJlYmFzZSBv biB0b3Agb2YgaW50ZWxfcHNyIGNoYW5nZXMuCj4gVGhhbmtzIGZvciByZXNlbmRpbmcgdGhpcywg SSBoYXZlIHNvbWUgcXVlc3Rpb25zIHRvIHVuZGVyc3RhbmQgdGhlCj4gcGF0Y2ggYmV0dGVyLgo+ Cj4+IFNpZ25lZC1vZmYtYnk6IE1hYXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBs aW51eC5pbnRlbC5jb20+Cj4+IENjOiBSb2RyaWdvIFZpdmkgPHJvZHJpZ28udml2aUBpbnRlbC5j b20+Cj4+IENjOiBEaGluYWthcmFuIFBhbmRpeWFuIDxkaGluYWthcmFuLnBhbmRpeWFuQGludGVs LmNvbT4KPj4gLS0tCj4+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgfMKg wqA3NSArKysrKysrKysrKystLQo+PiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmjC oMKgwqDCoMKgfMKgwqDCoDkgKy0KPj4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYu aMKgwqDCoMKgfMKgwqDCoDMgKwo+PiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bzci5j wqDCoMKgwqB8IDE1NCArKysrKysrKysrKysrKysrKysrKysrKysKPj4gLS0tLQo+PiDCoDQgZmls ZXMgY2hhbmdlZCwgMjE0IGluc2VydGlvbnMoKyksIDI3IGRlbGV0aW9ucygtKQo+Pgo+PiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPj4gYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+PiBpbmRleCA1OWRjMDYxMGVhNDQuLmIyOTA0 YmIyYmU0OSAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2Zz LmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPj4gQEAgLTI2 ODksMTQgKzI2ODksMTEgQEAgcHNyX3NvdXJjZV9zdGF0dXMoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUKPj4gKmRldl9wcml2LCBzdHJ1Y3Qgc2VxX2ZpbGUgKm0pCj4+IMKgCj4+IMKgc3RhdGljIGlu dCBpOTE1X2VkcF9wc3Jfc3RhdHVzKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKPj4g wqB7Cj4+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gbm9kZV90b19pOTE1 KG0tCj4+PiBwcml2YXRlKTsKPj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSBtLT5wcml2YXRlOwo+PiDCoAl1MzIgcHNycGVyZiA9IDA7Cj4+IMKgCWJvb2wgZW5hYmxlZCA9 IGZhbHNlOwo+PiDCoAlib29sIHNpbmtfc3VwcG9ydDsKPj4gwqAKPj4gLQlpZiAoIUhBU19QU1Io ZGV2X3ByaXYpKQo+PiAtCQlyZXR1cm4gLUVOT0RFVjsKPj4gLQo+PiDCoAlzaW5rX3N1cHBvcnQg PSBkZXZfcHJpdi0+cHNyLnNpbmtfc3VwcG9ydDsKPj4gwqAJc2VxX3ByaW50ZihtLCAiU2lua19T dXBwb3J0OiAlc1xuIiwgeWVzbm8oc2lua19zdXBwb3J0KSk7Cj4+IMKgCWlmICghc2lua19zdXBw b3J0KQo+PiBAQCAtMjcwNSw3ICsyNzAyLDcgQEAgc3RhdGljIGludCBpOTE1X2VkcF9wc3Jfc3Rh dHVzKHN0cnVjdCBzZXFfZmlsZQo+PiAqbSwgdm9pZCAqZGF0YSkKPj4gwqAJaW50ZWxfcnVudGlt ZV9wbV9nZXQoZGV2X3ByaXYpOwo+PiDCoAo+PiDCoAltdXRleF9sb2NrKCZkZXZfcHJpdi0+cHNy LmxvY2spOwo+PiAtCXNlcV9wcmludGYobSwgIkVuYWJsZWQ6ICVzXG4iLCB5ZXNubygoYm9vbClk ZXZfcHJpdi0KPj4+IHBzci5lbmFibGVkKSk7Cj4+ICsJc2VxX3ByaW50ZihtLCAiRW5hYmxlZDog JXNcbiIsIHllc25vKGRldl9wcml2LQo+Pj4gcHNyLmVuYWJsZWQpKTsKPj4gwqAJc2VxX3ByaW50 ZihtLCAiQnVzeSBmcm9udGJ1ZmZlciBiaXRzOiAweCUwM3hcbiIsCj4+IMKgCQnCoMKgwqBkZXZf cHJpdi0+cHNyLmJ1c3lfZnJvbnRidWZmZXJfYml0cyk7Cj4+IMKgCj4+IEBAIC0yNzc2LDYgKzI3 NzMsNzIgQEAKPj4gREVGSU5FX1NJTVBMRV9BVFRSSUJVVEUoaTkxNV9lZHBfcHNyX2RlYnVnX2Zv cHMsCj4+IMKgCQkJaTkxNV9lZHBfcHNyX2RlYnVnX2dldCwKPj4gaTkxNV9lZHBfcHNyX2RlYnVn X3NldCwKPj4gwqAJCQkiJWxsdVxuIik7Cj4+IMKgCj4+ICtzdGF0aWMgc3NpemVfdCBpOTE1X2Vk cF9wc3Jfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IGNoYXIKPj4gX191c2VyICp1YnVm LAo+PiArCQkJCcKgwqBzaXplX3QgbGVuLCBsb2ZmX3QgKm9mZnApCj4+ICt7Cj4+ICsJc3RydWN0 IHNlcV9maWxlICptID0gZmlsZS0+cHJpdmF0ZV9kYXRhOwo+PiArCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IG0tPnByaXZhdGU7Cj4+ICsJc3RydWN0IGRybV9tb2Rlc2V0X2Fj cXVpcmVfY3R4IGN0eDsKPj4gKwlpbnQgcmV0LCB2YWw7Cj4+ICsKPj4gKwlpZiAoIWRldl9wcml2 LT5wc3Iuc2lua19zdXBwb3J0KQo+PiArCQlyZXR1cm4gLUVOT0RFVjsKPj4gKwo+PiArCXJldCA9 IGtzdHJ0b2ludF9mcm9tX3VzZXIodWJ1ZiwgbGVuLCAxMCwgJnZhbCk7Cj4+ICsJaWYgKHJldCA8 IDApIHsKPj4gKwkJYm9vbCBlbmFibGU7Cj4+ICsJCXJldCA9IGtzdHJ0b2Jvb2xfZnJvbV91c2Vy KHVidWYsIGxlbiwgJmVuYWJsZSk7Cj4+ICsKPj4gKwkJaWYgKHJldCA8IDApCj4+ICsJCQlyZXR1 cm4gcmV0Owo+PiArCj4+ICsJCXZhbCA9IGVuYWJsZTsKPj4gKwl9Cj4+ICsKPj4gKwlpZiAodmFs ICE9IFBTUl9ERUJVR0ZTX01PREVfREVGQVVMVCAmJgo+PiArCcKgwqDCoMKgdmFsICE9IFBTUl9E RUJVR0ZTX01PREVfRElTQUJMRUQgJiYKPj4gKwnCoMKgwqDCoHZhbCAhPSBQU1JfREVCVUdGU19N T0RFX0VOQUJMRUQpCj4+ICsJCXJldHVybiAtRUlOVkFMOwo+PiArCj4+ICsJaW50ZWxfcnVudGlt ZV9wbV9nZXQoZGV2X3ByaXYpOwo+PiArCj4+ICsJZHJtX21vZGVzZXRfYWNxdWlyZV9pbml0KCZj dHgsCj4+IERSTV9NT0RFU0VUX0FDUVVJUkVfSU5URVJSVVBUSUJMRSk7Cj4+ICsKPj4gK3JldHJ5 Ogo+PiArCXJldCA9IGludGVsX3Bzcl9zZXRfZGVidWdmc19tb2RlKGRldl9wcml2LCAmY3R4LCB2 YWwpOwo+PiArCWlmIChyZXQgPT0gLUVCVVNZKSB7Cj4+ICsJCXJldCA9IGRybV9tb2Rlc2V0X2Jh Y2tvZmYoJmN0eCk7Cj4+ICsJCWlmICghcmV0KQo+PiArCQkJZ290byByZXRyeTsKPj4gKwl9Cj4+ ICsKPj4gKwlkcm1fbW9kZXNldF9kcm9wX2xvY2tzKCZjdHgpOwo+PiArCWRybV9tb2Rlc2V0X2Fj cXVpcmVfZmluaSgmY3R4KTsKPiBEZWFkbG9ja2VkIGhlcmUgZHVyaW5nIHRlc3RpbmcKPgo+ICQg ZWNobyAwID7CoMKgL3N5cy9rZXJuZWwvZGVidWcvZHJpLzAvaTkxNV9lZHBfcHNyX3N0YXR1cwo+ IGJhc2g6IGVjaG86IHdyaXRlIGVycm9yOiBSZXNvdXJjZSBkZWFkbG9jayBhdm9pZGVkCk9vcHMs IHRoYXQgY2hlY2sgc2hvdWxkIGJlOiAiaWYgKHJldCA9PSAtRURFQURMSykiCgpUaGF0IHNob3Vs ZCBmaXggeW91ciBlcnJvci4gOikKPiBbIDEyNDguODU2NjcxXSBXQVJOSU5HOiBDUFU6IDIgUElE OiAxNzg4IGF0Cj4gZHJpdmVycy9ncHUvZHJtL2RybV9tb2Rlc2V0X2xvY2suYzoyMjMgZHJtX21v ZGVzZXRfZHJvcF9sb2NrcysweDU2LzB4NjAKPiBbZHJtXQo+IFsgMTI0OC44NTY3NTddIE1vZHVs ZXMgbGlua2VkIGluOiByZmNvbW0gY21hYyBibmVwIGFyYzQgaXdsbXZtCj4gbmxzX2lzbzg4NTlf MSBtYWM4MDIxMSBzbmRfaGRhX2NvZGVjX2hkbWkgc25kX2hkYV9jb2RlY19yZWFsdGVrCj4gc25k X2hkYV9jb2RlY19nZW5lcmljIHNuZF9oZGFfaW50ZWwgc25kX2hkYV9jb2RlYyBzbmRfaHdkZXAK PiBzbmRfaGRhX2NvcmUgaXdsd2lmaSBzbmRfcGNtIHNuZF9zZXFfbWlkaSBzbmRfc2VxX21pZGlf ZXZlbnQKPiBzbmRfcmF3bWlkaSBpbnRlbF9yYXBsIGJ0dXNiIGJ0cnRsIHNuZF9zZXEgYnRiY20g eDg2X3BrZ190ZW1wX3RoZXJtYWwKPiBidGludGVsIGludGVsX3Bvd2VyY2xhbXAgYmx1ZXRvb3Ro IGNvcmV0ZW1wIGNyY3QxMGRpZl9wY2xtdWwKPiBjcmMzMl9wY2xtdWwgc25kX3RpbWVyIHNuZF9z ZXFfZGV2aWNlIGdoYXNoX2NsbXVsbmlfaW50ZWwgY2ZnODAyMTEKPiBhZXNuaV9pbnRlbCBzbmQg YWVzX3g4Nl82NCBjcnlwdG9fc2ltZCBjcnlwdGQgc291bmRjb3JlIGVjZGhfZ2VuZXJpYwo+IGds dWVfaGVscGVyIGlucHV0X2xlZHMgbWVpX21lIG1laSBpbnRlbF9wY2hfdGhlcm1hbCBtYWNfaGlk IHBhcnBvcnRfcGMKPiBwcGRldiBscCBwYXJwb3J0IGF1dG9mczQgaTkxNSBpMmNfYWxnb19iaXQg ZHJtX2ttc19oZWxwZXIgc3lzY29weWFyZWEKPiBzeXNmaWxscmVjdCBzeXNpbWdibHQgZmJfc3lz X2ZvcHMgZHJtIGUxMDAwZSBwc21vdXNlIGFoY2kgbGliYWhjaSB2aWRlbwo+IFsgMTI0OC44NTcy ODhdIENQVTogMiBQSUQ6IDE3ODggQ29tbTogYmFzaCBOb3QgdGFpbnRlZCA0LjE4LjAtcmM2ZHJt LQo+IHRpcCAjMTM4Cj4gWyAxMjQ4Ljg1NzI5N10gSGFyZHdhcmUgbmFtZTogTEVOT1ZPIDIwRjZD VE8xV1cvMjBGNkNUTzFXVywgQklPUwo+IFIwMkVUNDhXICgxLjIxICkgMDYvMDEvMjAxNgo+IFsg MTI0OC44NTczNTRdIFJJUDogMDAxMDpkcm1fbW9kZXNldF9kcm9wX2xvY2tzKzB4NTYvMHg2MCBb ZHJtXQo+IFsgMTI0OC44NTczNjNdIENvZGU6IDUwIDA4IDQ4IDhkIGI4IDUwIGZmIGZmIGZmIDQ4 IDg5IDUxIDA4IDQ4IDg5IDBhIDQ4Cj4gODkgMDAgNDggODkgNDAgMDggZTggYTggOTAgN2QgYzkg NDggOGIgNDMgNzAgNDkgMzkgYzQgNzUgZDIgNWIgNDEgNWMgNWQKPiBjMyA8MGY+IDBiIGViIGJj IDY2IDBmIDFmIDQ0IDAwIDAwIDBmIDFmIDQ0IDAwIDAwIDQ4IDhiIDk3IGQwIDBhIDAwIDAwCj4g WyAxMjQ4Ljg1Nzg2MF0gUlNQOiAwMDE4OmZmZmZhNGRkMDFmYWJjZjggRUZMQUdTOiAwMDAxMDI4 Ngo+IFsgMTI0OC44NTc4NzhdIFJBWDogMDAwMDAwMDBmZmZmZmZkZCBSQlg6IGZmZmZhNGRkMDFm YWJkMjggUkNYOgo+IDAwMDAwMDAwMDAwMDAwMDAKPiBbIDEyNDguODU3ODg5XSBSRFg6IDAwMDAw MDAwMDAwMDAwMDAgUlNJOiBmZmZmOTdiYjg4NDc2ODk4IFJESToKPiBmZmZmYTRkZDAxZmFiZDI4 Cj4gWyAxMjQ4Ljg1Nzg5OF0gUkJQOiBmZmZmYTRkZDAxZmFiZDA4IFIwODogMDAwMDAwMDAwMDAw MDAwMCBSMDk6Cj4gMDAwMDAwMDAwMDAwMDAwMQo+IFsgMTI0OC44NTc5MDhdIFIxMDogMDAwMDAw MDAwMDAwMDAwMSBSMTE6IDAwMDAwMDAwMDAwMDAwMDAgUjEyOgo+IDAwMDAwMDAwMDAwMDAwMDIK PiBbIDEyNDguODU3OTE4XSBSMTM6IDAwMDA1NjAzY2RiNjA4ODAgUjE0OiAwMDAwMDAwMDAwMDAw MDAyIFIxNToKPiBmZmZmYTRkZDAxZmFiZWU4Cj4gWyAxMjQ4Ljg1NzkzMF0gRlM6wqDCoDAwMDA3 ZjgzYjFkZWE3NDAoMDAwMCkgR1M6ZmZmZjk3YmI5OWEwMDAwMCgwMDAwKQo+IGtubEdTOjAwMDAw MDAwMDAwMDAwMDAKPiBbIDEyNDguODU3OTQwXSBDUzrCoMKgMDAxMCBEUzogMDAwMCBFUzogMDAw MCBDUjA6IDAwMDAwMDAwODAwNTAwMzMKPiBbIDEyNDguODU3OTUwXSBDUjI6IDAwMDA1NjAzY2Ri NjA4ODAgQ1IzOiAwMDAwMDAwMjE0MzM4MDAzIENSNDoKPiAwMDAwMDAwMDAwMzYwNmUwCj4gWyAx MjQ4Ljg1Nzk1OV0gQ2FsbCBUcmFjZToKPiBbIDEyNDguODU4MDk0XcKgwqBpOTE1X2VkcF9wc3Jf d3JpdGUrMHhkNS8weDE4MCBbaTkxNV0KPiBbIDEyNDguODU4MTcyXcKgwqBmdWxsX3Byb3h5X3dy aXRlKzB4NWYvMHg5MAo+IFsgMTI0OC44NTgyMDddwqDCoF9fdmZzX3dyaXRlKzB4M2EvMHgxYTAK PiBbIDEyNDguODU4MjI3XcKgwqA/IHJjdV9yZWFkX2xvY2tfc2NoZWRfaGVsZCsweDc5LzB4ODAK PiBbIDEyNDguODU4MjQzXcKgwqA/IHJjdV9zeW5jX2xvY2tkZXBfYXNzZXJ0KzB4MzIvMHg2MAo+ IFsgMTI0OC44NTgyNjBdwqDCoD8gX19zYl9zdGFydF93cml0ZSsweDEzNS8weDE5MAo+IFsgMTI0 OC44NTgyNzVdwqDCoD8gdmZzX3dyaXRlKzB4MTkzLzB4MWMwCj4gWyAxMjQ4Ljg1ODMwNl3CoMKg dmZzX3dyaXRlKzB4YzYvMHgxYzAKPiBbIDEyNDguODU4MzM1XcKgwqBrc3lzX3dyaXRlKzB4NTgv MHhjMAo+IFsgMTI0OC44NTgzNzBdwqDCoF9feDY0X3N5c193cml0ZSsweDFhLzB4MjAKPiBbIDEy NDguODU4Mzg3XcKgwqBkb19zeXNjYWxsXzY0KzB4NjUvMHgxYjAKPiBbIDEyNDguODU4NDA5XcKg wqBlbnRyeV9TWVNDQUxMXzY0X2FmdGVyX2h3ZnJhbWUrMHg0OS8weGJlCj4gWyAxMjQ4Ljg1ODQy M10gUklQOiAwMDMzOjB4N2Y4M2IxNGYyMTU0Cj4gWyAxMjQ4Ljg1ODQzMF0gQ29kZTogODkgMDIg NDggYzcgYzAgZmYgZmYgZmYgZmYgYzMgNjYgMmUgMGYgMWYgODQgMDAgMDAKPiAwMCAwMCAwMCA2 NiA5MCA0OCA4ZCAwNSBiMSAwNyAyZSAwMCA4YiAwMCA4NSBjMCA3NSAxMyBiOCAwMSAwMCAwMCAw MCAwZgo+IDA1IDw0OD4gM2QgMDAgZjAgZmYgZmYgNzcgNTQgZjMgYzMgNjYgOTAgNDEgNTQgNTUg NDkgODkgZDQgNTMgNDggODkgZjUKPiBbIDEyNDguODU4OTI4XSBSU1A6IDAwMmI6MDAwMDdmZmVl NzMyMDE2OCBFRkxBR1M6IDAwMDAwMjQ2IE9SSUdfUkFYOgo+IDAwMDAwMDAwMDAwMDAwMDEKPiBb IDEyNDguODU4OTQ2XSBSQVg6IGZmZmZmZmZmZmZmZmZmZGEgUkJYOiAwMDAwMDAwMDAwMDAwMDAy IFJDWDoKPiAwMDAwN2Y4M2IxNGYyMTU0Cj4gWyAxMjQ4Ljg1ODk1Nl0gUkRYOiAwMDAwMDAwMDAw MDAwMDAyIFJTSTogMDAwMDU2MDNjZGI2MDg4MCBSREk6Cj4gMDAwMDAwMDAwMDAwMDAwMQo+IFsg MTI0OC44NTg5NjVdIFJCUDogMDAwMDU2MDNjZGI2MDg4MCBSMDg6IDAwMDAwMDAwMDAwMDAwMGEg UjA5Ogo+IDAwMDAwMDAwMDAwMDAwMDEKPiBbIDEyNDguODU4OTc1XSBSMTA6IDAwMDAwMDAwMDAw MDAwMGEgUjExOiAwMDAwMDAwMDAwMDAwMjQ2IFIxMjoKPiAwMDAwN2Y4M2IxN2NlNzYwCj4gWyAx MjQ4Ljg1ODk4NF0gUjEzOiAwMDAwMDAwMDAwMDAwMDAyIFIxNDogMDAwMDdmODNiMTdjYTJhMCBS MTU6Cj4gMDAwMDdmODNiMTdjOTc2MAo+IFsgMTI0OC44NTkwNDNdIGlycSBldmVudCBzdGFtcDog NTk3NjgKPiBbIDEyNDguODU5MDU4XSBoYXJkaXJxcyBsYXN0wqDCoGVuYWJsZWQgYXQgKDU5NzY3 KTogWzxmZmZmZmZmZjg5YTMxZGM2Pl0KPiBfcmF3X3NwaW5fdW5sb2NrX2lycXJlc3RvcmUrMHgz Ni8weDYwCj4gWyAxMjQ4Ljg1OTA3Ml0gaGFyZGlycXMgbGFzdCBkaXNhYmxlZCBhdCAoNTk3Njgp OiBbPGZmZmZmZmZmODljMDEzMDk+XQo+IGVycm9yX2VudHJ5KzB4ODkvMHgxMTAKPiBbIDEyNDgu ODU5MDg3XSBzb2Z0aXJxcyBsYXN0wqDCoGVuYWJsZWQgYXQgKDU5NzI0KTogWzxmZmZmZmZmZjg5 ZTAwMzc4Pl0KPiBfX2RvX3NvZnRpcnErMHgzNzgvMHg0ZTMKPiBbIDEyNDguODU5MTAwXSBzb2Z0 aXJxcyBsYXN0IGRpc2FibGVkIGF0ICg1OTcxMSk6IFs8ZmZmZmZmZmY4OTA5OGUwZD5dCj4gaXJx X2V4aXQrMHhjZC8weGUwCj4gWyAxMjQ4Ljg1OTE1Nl0gV0FSTklORzogQ1BVOiAyIFBJRDogMTc4 OCBhdAo+IGRyaXZlcnMvZ3B1L2RybS9kcm1fbW9kZXNldF9sb2NrLmM6MjIzIGRybV9tb2Rlc2V0 X2Ryb3BfbG9ja3MrMHg1Ni8weDYwCj4gW2RybV0KPiBbIDEyNDguODU5MTY2XSAtLS1bIGVuZCB0 cmFjZSBiNzIyMmY5MjM5ZDMwNjViIF0tLQpBbmQgdGhpcyB3YXJuaW5nLgo+Cj4+ICsKPj4gKwlp bnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdik7Cj4+ICsKPj4gKwlyZXR1cm4gcmV0ID86IGxl bjsKPj4gK30KPj4gKwo+PiArc3RhdGljIGludCBpOTE1X2VkcF9wc3Jfb3BlbihzdHJ1Y3QgaW5v ZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSkKPj4gK3sKPj4gKwlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSBpbm9kZS0+aV9wcml2YXRlOwo+PiArCj4+ICsJaWYgKCFIQVNf UFNSKGRldl9wcml2KSkKPj4gKwkJcmV0dXJuIC1FTk9ERVY7Cj4+ICsKPj4gKwlyZXR1cm4gc2lu Z2xlX29wZW4oZmlsZSwgaTkxNV9lZHBfcHNyX3N0YXR1cywgZGV2X3ByaXYpOwo+IFdoYXQgZG8g eW91IHRoaW5rIG9mIHVzaW5nICJpOTE1X2VkcF9wc3JfZGVidWciIGluc3RlYWQ/CkFsbCBmb3Ig aXQuCj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGk5 MTVfZWRwX3Bzcl9vcHMgPSB7Cj4+ICsJLm93bmVyID0gVEhJU19NT0RVTEUsCj4+ICsJLm9wZW4g PSBpOTE1X2VkcF9wc3Jfb3BlbiwKPj4gKwkucmVhZCA9IHNlcV9yZWFkLAo+PiArCS5sbHNlZWsg PSBzZXFfbHNlZWssCj4+ICsJLnJlbGVhc2UgPSBzaW5nbGVfcmVsZWFzZSwKPj4gKwkud3JpdGUg PSBpOTE1X2VkcF9wc3Jfd3JpdGUKPj4gK307Cj4+ICsKPj4gwqBzdGF0aWMgaW50IGk5MTVfZW5l cmd5X3VKKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKPj4gwqB7Cj4+IMKgCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IG5vZGVfdG9faTkxNShtLQo+Pj4gcHJpdmF0 ZSk7Cj4+IEBAIC00NzIwLDcgKzQ3ODMsNiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9pbmZv X2xpc3QKPj4gaTkxNV9kZWJ1Z2ZzX2xpc3RbXSA9IHsKPj4gwqAJeyJpOTE1X3N3aXp6bGVfaW5m byIsIGk5MTVfc3dpenpsZV9pbmZvLCAwfSwKPj4gwqAJeyJpOTE1X3BwZ3R0X2luZm8iLCBpOTE1 X3BwZ3R0X2luZm8sIDB9LAo+PiDCoAl7Imk5MTVfbGxjIiwgaTkxNV9sbGMsIDB9LAo+PiAtCXsi aTkxNV9lZHBfcHNyX3N0YXR1cyIsIGk5MTVfZWRwX3Bzcl9zdGF0dXMsIDB9LAo+PiDCoAl7Imk5 MTVfZW5lcmd5X3VKIiwgaTkxNV9lbmVyZ3lfdUosIDB9LAo+PiDCoAl7Imk5MTVfcnVudGltZV9w bV9zdGF0dXMiLCBpOTE1X3J1bnRpbWVfcG1fc3RhdHVzLCAwfSwKPj4gwqAJeyJpOTE1X3Bvd2Vy X2RvbWFpbl9pbmZvIiwgaTkxNV9wb3dlcl9kb21haW5faW5mbywgMH0sCj4+IEBAIC00NzQ0LDYg KzQ4MDYsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfZGVidWdmc19maWxlcyB7Cj4+IMKg CWNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgKmZvcHM7Cj4+IMKgfSBpOTE1X2RlYnVnZnNf ZmlsZXNbXSA9IHsKPj4gwqAJeyJpOTE1X3dlZGdlZCIsICZpOTE1X3dlZGdlZF9mb3BzfSwKPj4g Kwl7Imk5MTVfZWRwX3Bzcl9zdGF0dXMiLCAmaTkxNV9lZHBfcHNyX29wc30sCj4+IMKgCXsiaTkx NV9jYWNoZV9zaGFyaW5nIiwgJmk5MTVfY2FjaGVfc2hhcmluZ19mb3BzfSwKPj4gwqAJeyJpOTE1 X3JpbmdfbWlzc2VkX2lycSIsICZpOTE1X3JpbmdfbWlzc2VkX2lycV9mb3BzfSwKPj4gwqAJeyJp OTE1X3JpbmdfdGVzdF9pcnEiLCAmaTkxNV9yaW5nX3Rlc3RfaXJxX2ZvcHN9LAo+PiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+PiBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmgKPj4gaW5kZXggMGY0OWY5OTg4ZGZhLi5kODU4Mzc3MGU4YTYgMTAw NjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+PiBAQCAtNjEyLDcgKzYxMiw4IEBAIHN0cnVj dCBpOTE1X2RycnMgewo+PiDCoHN0cnVjdCBpOTE1X3BzciB7Cj4+IMKgCXN0cnVjdCBtdXRleCBs b2NrOwo+PiDCoAlib29sIHNpbmtfc3VwcG9ydDsKPj4gLQlzdHJ1Y3QgaW50ZWxfZHAgKmVuYWJs ZWQ7Cj4+ICsJYm9vbCBlbmFibGVkOwo+PiArCXN0cnVjdCBpbnRlbF9kcCAqZHA7Cj4gU2VwYXJh dGUgcGF0Y2ggZm9yIHRoaXMgY2hhbmdlPyBIb3cgYWJvdXQga2VlcGluZyBpOTE1X3Bzci5kcCBh bHdheXMKPiB2YWxpZD8KSSdtIGtlZXBpbmcgaTkxNV9wc3IuZHAgb25seSB2YWxpZCB3aGVuIHRo ZSBtb2Rlc2V0IGNhbGxzIGludGVsX3Bzcl9lbmFibGUsIHVudGlsIHRoZSBtb2Rlc2V0IGRpc2Fi bGUgY2FsbHMgaW50ZWxfcHNyX2Rpc2FibGUoKQppOTE1X3Bzci5kcCBpcyB1c2VkIHRvIGFsc28g aW5kaWNhdGUgdGhhdCB3ZSBjYW4gY3VycmVudGx5IGVuYWJsZSBQU1IuIC5lbmFibGVkIGlzIHVz ZWQgdG8gZGV0ZXJtaW5lIGl0J3MgY3VycmVudGx5IGVuYWJsZWQuCgo+PiDCoAlib29sIGFjdGl2 ZTsKPj4gwqAJc3RydWN0IHdvcmtfc3RydWN0IHdvcms7Cj4+IMKgCXVuc2lnbmVkIGJ1c3lfZnJv bnRidWZmZXJfYml0czsKPj4gQEAgLTYyNSw2ICs2MjYsMTIgQEAgc3RydWN0IGk5MTVfcHNyIHsK Pj4gwqAJYm9vbCBkZWJ1ZzsKPj4gwqAJa3RpbWVfdCBsYXN0X2VudHJ5X2F0dGVtcHQ7Cj4+IMKg CWt0aW1lX3QgbGFzdF9leGl0Owo+PiArCj4+ICsJZW51bSBpOTE1X3Bzcl9kZWJ1Z2ZzX21vZGUg ewo+PiArCQlQU1JfREVCVUdGU19NT0RFX0RFRkFVTFQgPSAtMSwKPj4gKwkJUFNSX0RFQlVHRlNf TU9ERV9ESVNBQkxFRCwKPj4gKwkJUFNSX0RFQlVHRlNfTU9ERV9FTkFCTEVECj4gSWYgd2UgYWRk IGFub3RoZXIgZW51bSwgd2UgY2FuIHdyaXRlIHRlc3RzIHRvIGVuYWJsZSBQU1IxIG9uIFBTUjIK PiBwYW5lbHMuCj4gCQlQU1JfREVCVUdGU19NT0RFX1BTUjEKPiAJCVBTUl9ERUJVR0ZTX01PREVf UFNSMgpTaG91bGQgYmUgZWFzeSB0byBhZGQsIGJ1dCBhbm5veWluZyB0byB0b2dnbGUuCgpNYXli ZSBzb21lIGZvbGxvd3VwPwo+PiArCX0gZGVidWdmc19tb2RlOwo+PiDCoH07Cj4+IMKgCj4+IMKg ZW51bSBpbnRlbF9wY2ggewo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHJ2LmgKPj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+PiBpbmRleCBj Mjc1ZjkxMjQ0YTYuLjc1MWVkMjU3ZmJiYSAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHJ2LmgKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2 LmgKPj4gQEAgLTE5MjYsNiArMTkyNiw5IEBAIHZvaWQgaW50ZWxfcHNyX2VuYWJsZShzdHJ1Y3Qg aW50ZWxfZHAKPj4gKmludGVsX2RwLAo+PiDCoAkJwqDCoMKgwqDCoMKgY29uc3Qgc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpOwo+PiDCoHZvaWQgaW50ZWxfcHNyX2Rpc2FibGUo c3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKPj4gwqAJCcKgwqDCoMKgwqDCoGNvbnN0IHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlCj4+ICpvbGRfY3J0Y19zdGF0ZSk7Cj4+ICtpbnQgaW50ZWxfcHNy X3NldF9kZWJ1Z2ZzX21vZGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+PiAr CQkJwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgZHJtX21vZGVzZXRfYWNxdWlyZV9jdHggKmN0eCwKPj4g KwkJCcKgwqDCoMKgwqDCoMKgZW51bSBpOTE1X3Bzcl9kZWJ1Z2ZzX21vZGUgbW9kZSk7Cj4+IMKg dm9pZCBpbnRlbF9wc3JfaW52YWxpZGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsCj4+IMKgCQkJwqDCoHVuc2lnbmVkIGZyb250YnVmZmVyX2JpdHMsCj4+IMKgCQkJwqDCoGVu dW0gZmJfb3Bfb3JpZ2luIG9yaWdpbik7Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9wc3IuYwo+PiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bzci5jCj4+ IGluZGV4IDRiZDU3Njg3MzFlZS4uOTc0MjRhZTc2OWYzIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9wc3IuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9wc3IuYwo+PiBAQCAtNTYsNiArNTYsMTYgQEAKPj4gwqAjaW5jbHVkZSAiaW50ZWxfZHJ2 LmgiCj4+IMKgI2luY2x1ZGUgImk5MTVfZHJ2LmgiCj4+IMKgCj4+ICtzdGF0aWMgYm9vbCBwc3Jf Z2xvYmFsX2VuYWJsZWQoZW51bSBpOTE1X3Bzcl9kZWJ1Z2ZzX21vZGUgbW9kZSkKPj4gK3sKPj4g KwlpZiAobW9kZSA9PSBQU1JfREVCVUdGU19NT0RFX0RFRkFVTFQpCj4+ICsJCXJldHVybiBpOTE1 X21vZHBhcmFtcy5lbmFibGVfcHNyOwo+PiArCWVsc2UgaWYgKG1vZGUgPT0gUFNSX0RFQlVHRlNf TU9ERV9ESVNBQkxFRCkKPj4gKwkJcmV0dXJuIGZhbHNlOwo+PiArCWVsc2UKPj4gKwkJcmV0dXJu IHRydWU7Cj4+ICt9Cj4+ICsKPj4gwqB2b2lkIGludGVsX3Bzcl9pcnFfY29udHJvbChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGJvb2wKPj4gZGVidWcpCj4+IMKgewo+PiDCoAl1 MzIgZGVidWdfbWFzaywgbWFzazsKPj4gQEAgLTQ3MSwxMSArNDgxLDYgQEAgdm9pZCBpbnRlbF9w c3JfY29tcHV0ZV9jb25maWcoc3RydWN0IGludGVsX2RwCj4+ICppbnRlbF9kcCwKPj4gwqAJaWYg KCFDQU5fUFNSKGRldl9wcml2KSkKPj4gwqAJCXJldHVybjsKPj4gwqAKPj4gLQlpZiAoIWk5MTVf bW9kcGFyYW1zLmVuYWJsZV9wc3IpIHsKPj4gLQkJRFJNX0RFQlVHX0tNUygiUFNSIGRpc2FibGUg YnkgZmxhZ1xuIik7Cj4+IC0JCXJldHVybjsKPj4gLQl9Cj4+IC0KPj4gwqAJLyoKPj4gwqAJwqAq IEhTVyBzcGVjIGV4cGxpY2l0bHkgc2F5cyBQU1IgaXMgdGllZCB0byBwb3J0IEEuCj4+IMKgCcKg KiBCRFcrIHBsYXRmb3JtcyB3aXRoIERESSBpbXBsZW1lbnRhdGlvbiBvZiBQU1IgaGF2ZQo+PiBk aWZmZXJlbnQKPj4gQEAgLTUxNyw3ICs1MjIsMTEgQEAgdm9pZCBpbnRlbF9wc3JfY29tcHV0ZV9j b25maWcoc3RydWN0IGludGVsX2RwCj4+ICppbnRlbF9kcCwKPj4gwqAKPj4gwqAJY3J0Y19zdGF0 ZS0+aGFzX3BzciA9IHRydWU7Cj4+IMKgCWNydGNfc3RhdGUtPmhhc19wc3IyID0gaW50ZWxfcHNy Ml9jb25maWdfdmFsaWQoaW50ZWxfZHAsCj4+IGNydGNfc3RhdGUpOwo+PiAtCURSTV9ERUJVR19L TVMoIkVuYWJsaW5nIFBTUiVzXG4iLCBjcnRjX3N0YXRlLT5oYXNfcHNyMiA/ICIyIgo+PiA6ICIi KTsKPj4gKwo+PiArCWlmIChwc3JfZ2xvYmFsX2VuYWJsZWQoZGV2X3ByaXYtPnBzci5kZWJ1Z2Zz X21vZGUpKQo+PiArCQlEUk1fREVCVUdfS01TKCJFbmFibGluZyBQU1Ilc1xuIiwgY3J0Y19zdGF0 ZS0KPj4+IGhhc19wc3IyID8gIjIiIDogIiIpOwo+IFRoaXMgZ2V0cyBwcmludGVkIGR1cmluZyBh IG1vZGVzZXQgdGhhdCBpcyBzaHV0dGluZyBkb3duIHRoZSBjcnRjLgo+Cj4+ICsJZWxzZQo+PiAr CQlEUk1fREVCVUdfS01TKCJQU1IgZGlzYWJsZSBieSBmbGFnXG4iKTsKPgo+PiDCoH0KPiBTbywg bmVpdGhlciBkZWJ1Z2ZzIG5vciBtb2RwYXJhbSBoYXMgYW55IGVmZmVjdCBvbiBjcnRjX3N0YXRl LT5oYXNfcHNyCj4gb3IgY3J0Y19zdGF0ZS0+aGFzX3BzcjIuIFdoeSB3YXMgdGhpcyBjaGVjayBt b3ZlZCB0byB0aGUgZW5kPyAKV2UgY2FsY3VsYXRlIGNydGNfc3RhdGUtPmhhc19wc3IoMikgdG8g c2VlIGlmIFBTUiBjYW4gYmUgZW5hYmxlZCBoYXJkd2FyZSB3aXNlLgoKVGhpcyB3aWxsIG1ha2Ug c3VyZSB0aGF0IHRoZSBzdGF0ZSBpcyBjb3JyZWN0bHkgd3JpdHRlbiBpbiBpbnRlbF9wc3JfZW5h YmxlLCBldmVuIGlmIHdlIG1heSBub3QgZW5hYmxlIFBTUiBieSBkZWZhdWx0Lgo+IFdlIGNvdWxk IGFsc28gcmV3cml0ZSB0aGUgZGVidWcgbWVzc2FnZSB0byBsb29rIHNpbWlsYXIgdG8gdGhlIG90 aGVyCj4gY29tcHV0ZV9jb25maWcgZnVuY3Rpb25zClRoZSBkZWJ1ZyBtZXNzYWdlIGNvdWxkIGJl IHJlbW92ZWQsIG9yIG1vdmVkIHRvIGludGVsX3Bzcl9lbmFibGUuCj4+IMKgCj4+IMKgc3RhdGlj IHZvaWQgaW50ZWxfcHNyX2FjdGl2YXRlKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4+IEBA IC01ODksNiArNTk4LDIyIEBAIHN0YXRpYyB2b2lkIGludGVsX3Bzcl9lbmFibGVfc291cmNlKHN0 cnVjdAo+PiBpbnRlbF9kcCAqaW50ZWxfZHAsCj4+IMKgCX0KPj4gwqB9Cj4+IMKgCj4+ICtzdGF0 aWMgdm9pZCBpbnRlbF9wc3JfZW5hYmxlX2xvY2tlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZQo+ PiAqZGV2X3ByaXYsCj4+ICsJCQkJwqDCoMKgwqBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZQo+PiAqY3J0Y19zdGF0ZSkKPj4gK3sKPj4gKwlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0g ZGV2X3ByaXYtPnBzci5kcDsKPj4gKwo+PiArCWlmIChkZXZfcHJpdi0+cHNyLmVuYWJsZWQpCj4+ ICsJCXJldHVybjsKPj4gKwo+IFRoaXMgZnVuY3Rpb24gZ2V0cyBjYWxsZWQgZnJvbSBpbnRlbF9w c3Jfc2V0X2RlYnVnZnNfbW9kZSgpIERvZXNuJ3QKPiB0aGlzIGFsbG93IGRlYnVnZnMgdG8gZW5h YmxlIFBTUiBldmVuIGlmIG1vZGUgcmVsYXRlZCBjaGVja3MgaW4KPiBwc3JfY29tcHV0ZV9jb25m aWcoKSBoYWQgZmFpbGVkPyBGb3IgZS5nLiwgY3J0Y19zdGF0ZS0+aGFzX3BzciB3YXMKPiBmYWxz ZS4KTm8sIHNlZSBpbnRlbF9wc3JfZW5hYmxlLiBJdCBvbmx5IHNldHMgdXAgc3RhdGUgd2hlbiBj cnRjX3N0YXRlLT5oYXNfcHNyIGlzIHRydWUuIFRoaXMgaXMgYWxzbyB3aHkgdGhlIGNoZWNrIGlu IGludGVsX3Bzcl9jb21wdXRlX2NvbmZpZyBpcyBtb3ZlZC4KPj4gKwlpbnRlbF9wc3Jfc2V0dXBf dnNjKGludGVsX2RwLCBjcnRjX3N0YXRlKTsKPj4gKwlpbnRlbF9wc3JfZW5hYmxlX3NpbmsoaW50 ZWxfZHApOwo+PiArCWludGVsX3Bzcl9lbmFibGVfc291cmNlKGludGVsX2RwLCBjcnRjX3N0YXRl KTsKPj4gKwlkZXZfcHJpdi0+cHNyLmVuYWJsZWQgPSB0cnVlOwo+PiArCj4+ICsJaW50ZWxfcHNy X2FjdGl2YXRlKGludGVsX2RwKTsKPj4gK30KPj4gKwo+PiDCoC8qKgo+PiDCoCAqIGludGVsX3Bz cl9lbmFibGUgLSBFbmFibGUgUFNSCj4+IMKgICogQGludGVsX2RwOiBJbnRlbCBEUAo+PiBAQCAt NjExLDcgKzYzNiw3IEBAIHZvaWQgaW50ZWxfcHNyX2VuYWJsZShzdHJ1Y3QgaW50ZWxfZHAgKmlu dGVsX2RwLAo+PiDCoAo+PiDCoAlXQVJOX09OKGRldl9wcml2LT5kcnJzLmRwKTsKPj4gwqAJbXV0 ZXhfbG9jaygmZGV2X3ByaXYtPnBzci5sb2NrKTsKPj4gLQlpZiAoZGV2X3ByaXYtPnBzci5lbmFi bGVkKSB7Cj4+ICsJaWYgKGRldl9wcml2LT5wc3IuZHApIHsKPiBDaGVjayBmb3IgZGV2X3ByaXYt PnBzci5lbmFibGVkIGluc3RlYWQ/ClRoaXMgaXMgaGFuZGxlZCBpbiBpbnRlbF9wc3JfZW5hYmxl X2xvY2tlZCgpLgoKaW50ZWxfcHNyX2VuYWJsZSBjb25maWd1cmVzIHRoZSBzdGF0ZSwgYnV0IG1h eSBub3QgZW5hYmxlIFBTUiByaWdodCBhd2F5IGlmIGRpc2FibGVkIGJ5IG1vZHBhcmFtIG9yIGRl YnVnZnMuCj4KPj4gwqAJCURSTV9ERUJVR19LTVMoIlBTUiBhbHJlYWR5IGluIHVzZVxuIik7Cj4+ IMKgCQlnb3RvIHVubG9jazsKPj4gwqAJfQo+PiBAQCAtNjE5LDEyICs2NDQsMTAgQEAgdm9pZCBp bnRlbF9wc3JfZW5hYmxlKHN0cnVjdCBpbnRlbF9kcAo+PiAqaW50ZWxfZHAsCj4+IMKgCWRldl9w cml2LT5wc3IucHNyMl9lbmFibGVkID0gY3J0Y19zdGF0ZS0+aGFzX3BzcjI7Cj4+IMKgCWRldl9w cml2LT5wc3IuYnVzeV9mcm9udGJ1ZmZlcl9iaXRzID0gMDsKPj4gwqAKPj4gLQlpbnRlbF9wc3Jf c2V0dXBfdnNjKGludGVsX2RwLCBjcnRjX3N0YXRlKTsKPj4gLQlpbnRlbF9wc3JfZW5hYmxlX3Np bmsoaW50ZWxfZHApOwo+PiAtCWludGVsX3Bzcl9lbmFibGVfc291cmNlKGludGVsX2RwLCBjcnRj X3N0YXRlKTsKPj4gLQlkZXZfcHJpdi0+cHNyLmVuYWJsZWQgPSBpbnRlbF9kcDsKPj4gKwlkZXZf cHJpdi0+cHNyLmRwID0gaW50ZWxfZHA7Cj4gTm93IHRoYXQgdGhlcmUgaXMgcHNyLmVuYWJsZWQs IHNob3VsZCB3ZSBhbHdheXMga2VlcCB0aGlzIHBvaW50ZXIKPiB2YWxpZD8gCk5vLgo+PiDCoAo+ PiAtCWludGVsX3Bzcl9hY3RpdmF0ZShpbnRlbF9kcCk7Cj4+ICsJaWYgKHBzcl9nbG9iYWxfZW5h YmxlZChkZXZfcHJpdi0+cHNyLmRlYnVnZnNfbW9kZSkpCj4gT2theSwgbm93IEkgc2VlIHdoeSB5 b3UgaGF2ZSBwc3JfZ2xvYmFsX2VuYWJsZWQoKSBhcyB0aGUgbGFzdCBjaGVjayBpbgo+IHBzcl9j b21wdXRlX2NvbmZpZygpLgo6KQo+PiArCQlpbnRlbF9wc3JfZW5hYmxlX2xvY2tlZChkZXZfcHJp diwgY3J0Y19zdGF0ZSk7Cj4+IMKgCj4+IMKgdW5sb2NrOgo+PiDCoAltdXRleF91bmxvY2soJmRl dl9wcml2LT5wc3IubG9jayk7Cj4+IEBAIC02ODgsNyArNzExLDcgQEAgc3RhdGljIHZvaWQgaW50 ZWxfcHNyX2Rpc2FibGVfbG9ja2VkKHN0cnVjdAo+PiBpbnRlbF9kcCAqaW50ZWxfZHApCj4+IMKg CS8qIERpc2FibGUgUFNSIG9uIFNpbmsgKi8KPj4gwqAJZHJtX2RwX2RwY2Rfd3JpdGViKCZpbnRl bF9kcC0+YXV4LCBEUF9QU1JfRU5fQ0ZHLCAwKTsKPj4gwqAKPj4gLQlkZXZfcHJpdi0+cHNyLmVu YWJsZWQgPSBOVUxMOwo+PiArCWRldl9wcml2LT5wc3IuZW5hYmxlZCA9IGZhbHNlOwo+PiDCoH0K Pj4gwqAKPj4gwqAvKioKPj4gQEAgLTcxMiw3ICs3MzUsMTQgQEAgdm9pZCBpbnRlbF9wc3JfZGlz YWJsZShzdHJ1Y3QgaW50ZWxfZHAKPj4gKmludGVsX2RwLAo+PiDCoAkJcmV0dXJuOwo+PiDCoAo+ PiDCoAltdXRleF9sb2NrKCZkZXZfcHJpdi0+cHNyLmxvY2spOwo+PiArCWlmIChpbnRlbF9kcCAh PSBkZXZfcHJpdi0+cHNyLmRwKSB7Cj4+ICsJCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBzci5s b2NrKTsKPj4gKwkJcmV0dXJuOwo+PiArCX0KPj4gKwo+PiDCoAlpbnRlbF9wc3JfZGlzYWJsZV9s b2NrZWQoaW50ZWxfZHApOwo+PiArCj4+ICsJZGV2X3ByaXYtPnBzci5kcCA9IE5VTEw7Cj4gSXMg dGhlcmUgc3RpbGwgYSBuZWVkIHRvIHVzZSB0aGlzIGZpZWxkIGFzIGZsYWc/Clllcy4KPj4gwqAJ bXV0ZXhfbHVubG9jaygmZGV2X3ByaXYtPnBzci5sb2NrKTsKPj4gwqAJY2FuY2VsX3dvcmtfc3lu YygmZGV2X3ByaXYtPnBzci53b3JrKTsKPj4gwqB9Cj4+IEBAIC03NTYsMTMgKzc4NiwxMSBAQCBp bnQgaW50ZWxfcHNyX3dhaXRfZm9yX2lkbGUoY29uc3Qgc3RydWN0Cj4+IGludGVsX2NydGNfc3Rh dGUgKm5ld19jcnRjX3N0YXRlKQo+PiDCoAo+PiDCoHN0YXRpYyBib29sIF9fcHNyX3dhaXRfZm9y X2lkbGVfbG9ja2VkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlCj4+ICpkZXZfcHJpdikKPj4gwqB7 Cj4+IC0Jc3RydWN0IGludGVsX2RwICppbnRlbF9kcDsKPj4gwqAJaTkxNV9yZWdfdCByZWc7Cj4+ IMKgCXUzMiBtYXNrOwo+PiDCoAlpbnQgZXJyOwo+PiDCoAo+PiAtCWludGVsX2RwID0gZGV2X3By aXYtPnBzci5lbmFibGVkOwo+PiAtCWlmICghaW50ZWxfZHApCj4+ICsJaWYgKCFkZXZfcHJpdi0+ cHNyLmVuYWJsZWQpCj4+IMKgCQlyZXR1cm4gZmFsc2U7Cj4+IMKgCj4+IMKgCWlmIChkZXZfcHJp di0+cHNyLnBzcjJfZW5hYmxlZCkgewo+PiBAQCAtNzg0LDYgKzgxMiw4OSBAQCBzdGF0aWMgYm9v bCBfX3Bzcl93YWl0X2Zvcl9pZGxlX2xvY2tlZChzdHJ1Y3QKPj4gZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpCj4+IMKgCXJldHVybiBlcnIgPT0gMCAmJiBkZXZfcHJpdi0+cHNyLmVuYWJsZWQ7 Cj4+IMKgfQo+PiDCoAo+PiArc3RhdGljIHN0cnVjdCBkcm1fY3J0YyAqCj4+ICtmaW5kX2lkbGVf Y3J0Y19mb3JfZW5jb2RlcihzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIsCj4+ICsJCQnCoMKg wqBzdHJ1Y3QgZHJtX21vZGVzZXRfYWNxdWlyZV9jdHggKmN0eCkKPj4gK3sKPj4gKwlzdHJ1Y3Qg ZHJtX2Nvbm5lY3Rvcl9saXN0X2l0ZXIgY29ubl9pdGVyOwo+PiArCXN0cnVjdCBkcm1fZGV2aWNl ICpkZXYgPSBlbmNvZGVyLT5kZXY7Cj4+ICsJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rv cjsKPj4gKwlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7Cj4+ICsJYm9vbCBmb3VuZCA9IGZhbHNlOwo+ PiArCWludCByZXQ7Cj4+ICsKPj4gKwlkcm1fY29ubmVjdG9yX2xpc3RfaXRlcl9iZWdpbihkZXYs ICZjb25uX2l0ZXIpOwo+PiArCWRybV9mb3JfZWFjaF9jb25uZWN0b3JfaXRlcihjb25uZWN0b3Is ICZjb25uX2l0ZXIpCj4+ICsJCWlmIChjb25uZWN0b3ItPnN0YXRlLT5iZXN0X2VuY29kZXIgPT0g ZW5jb2Rlcikgewo+PiArCQkJZm91bmQgPSB0cnVlOwo+PiArCQkJYnJlYWs7Cj4+ICsJCX0KPj4g Kwlkcm1fY29ubmVjdG9yX2xpc3RfaXRlcl9lbmQoJmNvbm5faXRlcik7Cj4+ICsKPj4gKwlpZiAo V0FSTl9PTighZm91bmQpKQo+PiArCQlyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsKPj4gKwo+PiAr CWNydGMgPSBjb25uZWN0b3ItPnN0YXRlLT5jcnRjOwo+PiArCXJldCA9IGRybV9tb2Rlc2V0X2xv Y2soJmNydGMtPm11dGV4LCBjdHgpOwo+PiArCWlmIChyZXQpCj4+ICsJCXJldHVybiBFUlJfUFRS KHJldCk7Cj4+ICsKPj4gKwlpZiAoY29ubmVjdG9yLT5zdGF0ZS0+Y29tbWl0KQo+PiArCQlyZXQg PSB3YWl0X2Zvcl9jb21wbGV0aW9uX2ludGVycnVwdGlibGUoJmNvbm5lY3Rvci0KPj4+IHN0YXRl LT5jb21taXQtPmh3X2RvbmUpOwo+PiArCWlmICghcmV0ICYmIGNydGMtPnN0YXRlLT5jb21taXQp Cj4+ICsJCXJldCA9IHdhaXRfZm9yX2NvbXBsZXRpb25faW50ZXJydXB0aWJsZSgmY3J0Yy0KPj4+ IHN0YXRlLT5jb21taXQtPmh3X2RvbmUpOwo+PiArCWlmIChyZXQpCj4+ICsJCXJldHVybiBFUlJf UFRSKHJldCk7Cj4+ICsKPj4gKwlyZXR1cm4gY3J0YzsKPj4gK30KPj4gKwo+PiAraW50IGludGVs X3Bzcl9zZXRfZGVidWdmc19tb2RlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwK Pj4gKwkJCcKgwqDCoMKgwqDCoMKgc3RydWN0IGRybV9tb2Rlc2V0X2FjcXVpcmVfY3R4ICpjdHgs Cj4+ICsJCQnCoMKgwqDCoMKgwqDCoGVudW0gaTkxNV9wc3JfZGVidWdmc19tb2RlIG1vZGUpCj4+ ICt7Cj4+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9ICZkZXZfcHJpdi0+ZHJtOwo+PiArCXN0 cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlcjsKPj4gKwlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7Cj4+ ICsJaW50IHJldDsKPj4gKwlib29sIGVuYWJsZTsKPj4gKwo+PiArCXJldCA9IGRybV9tb2Rlc2V0 X2xvY2soJmRldi0+bW9kZV9jb25maWcuY29ubmVjdGlvbl9tdXRleCwKPj4gY3R4KTsKPj4gKwlp ZiAocmV0KQo+PiArCQlyZXR1cm4gcmV0Owo+PiArCj4+ICsJZW5hYmxlID0gcHNyX2dsb2JhbF9l bmFibGVkKG1vZGUpOwo+PiArCj4+ICsJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnBzci5sb2NrKTsK Pj4gKwo+PiArCWRvIHsKPj4gKwkJaWYgKCFkZXZfcHJpdi0+cHNyLmRwKSB7Cj4+ICsJCQlkZXZf cHJpdi0+cHNyLmRlYnVnZnNfbW9kZSA9IG1vZGU7Cj4+ICsJCQlnb3RvIGVuZDsKPj4gKwkJfQo+ PiArCQllbmNvZGVyID0gJmRwX3RvX2RpZ19wb3J0KGRldl9wcml2LT5wc3IuZHApLQo+Pj4gYmFz ZS5iYXNlOwo+PiArCQltdXRleF91bmxvY2soJmRldl9wcml2LT5wc3IubG9jayk7Cj4+ICsKPj4g KwkJY3J0YyA9IGZpbmRfaWRsZV9jcnRjX2Zvcl9lbmNvZGVyKGVuY29kZXIsIGN0eCk7Cj4+ICsJ CWlmIChJU19FUlIoY3J0YykpCj4+ICsJCQlyZXR1cm4gUFRSX0VSUihjcnRjKTsKPj4gKwo+PiAr CQltdXRleF9sb2NrKCZkZXZfcHJpdi0+cHNyLmxvY2spOwo+PiArCX0gd2hpbGUgKGRldl9wcml2 LT5wc3IuZHAgIT0gZW5jX3RvX2ludGVsX2RwKGVuY29kZXIpKTsKPiBXaGVuIHdpbGwgdGhpcyBu b3QgYmUgdHJ1ZT8Kbm9uYmxvY2tpbmcgbW9kZXNldCwgZm9yIGV4YW1wbGUuCj4+ICsKPj4gKwlp ZiAoIWVuYWJsZSkKPj4gKwkJaW50ZWxfcHNyX2Rpc2FibGVfbG9ja2VkKGVuY190b19pbnRlbF9k cChlbmNvZGVyKSk7Cj4+ICsKPj4gKwlkZXZfcHJpdi0+cHNyLmRlYnVnZnNfbW9kZSA9IG1vZGU7 Cj4+ICsKPj4gKwlpZiAoZW5hYmxlKQo+IGJzcGVjIHNheXMgUFNSIGVuYWJsZSBzZXF1ZW5jZSBy ZXF1aXJlcyAiOiBUaGUgYXNzb2NpYXRlZCB0cmFuc2NvZGVyCj4gYW5kIHBvcnQgYXJlIHJ1bm5p bmcgYW5kIEF1eCBjaGFubmVsIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHBvcnQgaGFzIElPCj4gcG93 ZXIgZW5hYmxlZCIgU2hvdWxkbid0IGNydGNfc3RhdGUtPmFjdGl2ZSBiZSBjaGVja2VkLgpJdCdz IGltcGxpZWQgYnkgaGF2aW5nIHBzci5kcCAhPSBOVUxMCj4+ICsJCWludGVsX3Bzcl9lbmFibGVf bG9ja2VkKGRldl9wcml2LAo+PiB0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMtPnN0YXRlKSk7Cj4+ ICsKPj4gK2VuZDoKPj4gKwltdXRleF91bmxvY2soJmRldl9wcml2LT5wc3IubG9jayk7Cj4+ICsJ cmV0dXJuIHJldDsKPj4gK30KPj4gKwo+PiDCoHN0YXRpYyB2b2lkIGludGVsX3Bzcl93b3JrKHN0 cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKPj4gwqB7Cj4+IMKgCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9Cj4+IEBAIC04MTEsNyArOTIyLDggQEAgc3RhdGljIHZvaWQgaW50ZWxf cHNyX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0Cj4+ICp3b3JrKQo+PiDCoAlpZiAoZGV2X3ByaXYt PnBzci5idXN5X2Zyb250YnVmZmVyX2JpdHMgfHwgZGV2X3ByaXYtCj4+PiBwc3IuYWN0aXZlKQo+ PiDCoAkJZ290byB1bmxvY2s7Cj4+IMKgCj4+IC0JaW50ZWxfcHNyX2FjdGl2YXRlKGRldl9wcml2 LT5wc3IuZW5hYmxlZCk7Cj4+ICsJaW50ZWxfcHNyX2FjdGl2YXRlKGRldl9wcml2LT5wc3IuZHAK Pj4gKyk7Cj4gU3B1cmlvdXMgbmV3IGxpbmUuCkluZGVlZCEKPj4gwqB1bmxvY2s6Cj4+IMKgCW11 dGV4X3VubG9jaygmZGV2X3ByaXYtPnBzci5sb2NrKTsKPj4gwqB9Cj4+IEBAIC04NjYsNyArOTc4 LDcgQEAgdm9pZCBpbnRlbF9wc3JfaW52YWxpZGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZQo+ PiAqZGV2X3ByaXYsCj4+IMKgCQlyZXR1cm47Cj4+IMKgCX0KPj4gwqAKPj4gLQljcnRjID0gZHBf dG9fZGlnX3BvcnQoZGV2X3ByaXYtPnBzci5lbmFibGVkKS0KPj4+IGJhc2UuYmFzZS5jcnRjOwo+ PiArCWNydGMgPSBkcF90b19kaWdfcG9ydChkZXZfcHJpdi0+cHNyLmRwKS0+YmFzZS5iYXNlLmNy dGM7Cj4+IMKgCXBpcGUgPSB0b19pbnRlbF9jcnRjKGNydGMpLT5waXBlOwo+PiDCoAo+PiDCoAlm cm9udGJ1ZmZlcl9iaXRzICY9IElOVEVMX0ZST05UQlVGRkVSX0FMTF9NQVNLKHBpcGUpOwo+PiBA QCAtOTA5LDcgKzEwMjEsNyBAQCB2b2lkIGludGVsX3Bzcl9mbHVzaChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZQo+PiAqZGV2X3ByaXYsCj4+IMKgCQlyZXR1cm47Cj4+IMKgCX0KPj4gwqAKPj4gLQlj cnRjID0gZHBfdG9fZGlnX3BvcnQoZGV2X3ByaXYtPnBzci5lbmFibGVkKS0KPj4+IGJhc2UuYmFz ZS5jcnRjOwo+PiArCWNydGMgPSBkcF90b19kaWdfcG9ydChkZXZfcHJpdi0+cHNyLmRwKS0+YmFz ZS5iYXNlLmNydGM7Cj4+IMKgCXBpcGUgPSB0b19pbnRlbF9jcnRjKGNydGMpLT5waXBlOwo+PiDC oAo+PiDCoAlmcm9udGJ1ZmZlcl9iaXRzICY9IElOVEVMX0ZST05UQlVGRkVSX0FMTF9NQVNLKHBp cGUpOwo+PiBAQCAtOTcxLDYgKzEwODMsOCBAQCB2b2lkIGludGVsX3Bzcl9pbml0KHN0cnVjdCBk cm1faTkxNV9wcml2YXRlCj4+ICpkZXZfcHJpdikKPj4gwqAJCS8qIEZvciBuZXcgcGxhdGZvcm1z IGxldCdzIHJlc3BlY3QgVkJUIGJhY2sgYWdhaW4gKi8KPj4gwqAJCWRldl9wcml2LT5wc3IubGlu a19zdGFuZGJ5ID0gZGV2X3ByaXYtCj4+PiB2YnQucHNyLmZ1bGxfbGluazsKPj4gwqAKPj4gKwlk ZXZfcHJpdi0+cHNyLmRlYnVnZnNfbW9kZSA9IFBTUl9ERUJVR0ZTX01PREVfREVGQVVMVDsKPj4g Kwo+PiDCoAlJTklUX1dPUksoJmRldl9wcml2LT5wc3Iud29yaywgaW50ZWxfcHNyX3dvcmspOwo+ PiDCoAltdXRleF9pbml0KCZkZXZfcHJpdi0+cHNyLmxvY2spOwo+PiDCoH0KPj4gQEAgLTk5MSw3 ICsxMTA1LDcgQEAgdm9pZCBpbnRlbF9wc3Jfc2hvcnRfcHVsc2Uoc3RydWN0IGludGVsX2RwCj4+ ICppbnRlbF9kcCkKPj4gwqAKPj4gwqAJbXV0ZXhfbG9jaygmcHNyLT5sb2NrKTsKPj4gwqAKPj4g LQlpZiAocHNyLT5lbmFibGVkICE9IGludGVsX2RwKQo+PiArCWlmICghcHNyLT5lbmFibGVkIHx8 IHBzci0+ZHAgIT0gaW50ZWxfZHApCj4+IMKgCQlnb3RvIGV4aXQ7Cj4+IMKgCj4+IMKgCWlmIChk cm1fZHBfZHBjZF9yZWFkYigmaW50ZWxfZHAtPmF1eCwgRFBfUFNSX1NUQVRVUywgJnZhbCkKPj4g IT0gMSkgewoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=