From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dhinakaran Pandiyan Subject: Re: [PATCH] drm/i915: Allow control of PSR at runtime through debugfs, v3. Date: Thu, 26 Jul 2018 20:27:51 -0700 Message-ID: <1532662071.3356.153.camel@intel.com> References: <1532586735.3356.99.camel@intel.com> <20180726090604.12142-1-maarten.lankhorst@linux.intel.com> Reply-To: dhinakaran.pandiyan@intel.com Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by gabe.freedesktop.org (Postfix) with ESMTPS id D456D6E179 for ; Fri, 27 Jul 2018 03:02:46 +0000 (UTC) In-Reply-To: <20180726090604.12142-1-maarten.lankhorst@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Maarten Lankhorst , intel-gfx@lists.freedesktop.org Cc: Rodrigo Vivi List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCAyMDE4LTA3LTI2IGF0IDExOjA2ICswMjAwLCBNYWFydGVuIExhbmtob3JzdCB3cm90 ZToKPiBDdXJyZW50bHkgdGVzdHMgbW9kaWZ5IGk5MTUuZW5hYmxlX3BzciBhbmQgdGhlbiBkbyBh IG1vZGVzZXQgY3ljbGUKPiB0byBjaGFuZ2UgUFNSLiBXZSBjYW4gd3JpdGUgYSB2YWx1ZSB0byBp OTE1X2VkcF9wc3Jfc3RhdHVzIHRvIGZvcmNlCj4gYSBjZXJ0YWluIHZhbHVlIHdpdGhvdXQgYSBt b2Rlc2V0Lgo+IAo+IFRvIHJldGFpbiBjb21wYXRpYmlsaXR5IHdpdGggb2xkZXIgdXNlcnNwYWNl LCB3ZSBhbHNvIHN0aWxsIGFsbG93Cj4gdGhlIG92ZXJyaWRlIHRocm91Z2ggdGhlIG1vZHVsZSBw YXJhbWV0ZXIsIGFuZCBhZGQgc29tZSB0cmFja2luZwo+IHRvIGNoZWNrIHdoZXRoZXIgYSBkZWJ1 Z2ZzIG1vZGUgaXMgc3BlY2lmaWVkLgo+IAo+IENoYW5nZXMgc2luY2UgdjE6Cj4gLSBSZW5hbWUg ZGV2X3ByaXYtPnBzci5lbmFibGVkIHRvIC5kcCwgYW5kIC5od19jb25maWd1cmVkIHRvCj4gLmVu YWJsZWQuCj4gLSBGaXggaTkxNV9wc3JfZGVidWdmc19tb2RlIHRvIG1hdGNoIHRoZSB3cml0ZXMg dG8gZGVidWdmcy4KPiAtIFJlbmFtZSBfX2k5MTVfZWRwX3Bzcl93cml0ZSB0byBpbnRlbF9wc3Jf c2V0X2RlYnVnZnNfbW9kZSwgc2ltcGxpZnkKPiDCoCBpdCBhbmQgbW92ZSBpdCB0byBpbnRlbF9w c3IuYy4gVGhpcyBrZWVwcyBhbGwgaW50ZXJuYWxzIGluCj4gaW50ZWxfcHNyLmMKPiAtIFBlcmZv cm0gYW4gaW50ZXJydXB0aWJsZSB3YWl0IGZvciBodyBjb21wbGV0aW9uIG91dHNpZGUgb2YgdGhl IHBzcgo+IMKgIGxvY2ssIGluc3RlYWQgb2YgYmVpbmcgZm9yY2VkIHRvIHRyeXdhaXQgYW5kIHJl dHVybiAtRUJVU1kuCj4gQ2hhbmdlcyBzaW5jZSB2MjoKPiAtIFJlYmFzZSBvbiB0b3Agb2YgaW50 ZWxfcHNyIGNoYW5nZXMuCgpUaGFua3MgZm9yIHJlc2VuZGluZyB0aGlzLCBJIGhhdmUgc29tZSBx dWVzdGlvbnMgdG8gdW5kZXJzdGFuZCB0aGUKcGF0Y2ggYmV0dGVyLgoKPiAKPiBTaWduZWQtb2Zm LWJ5OiBNYWFydGVuIExhbmtob3JzdCA8bWFhcnRlbi5sYW5raG9yc3RAbGludXguaW50ZWwuY29t Pgo+IENjOiBSb2RyaWdvIFZpdmkgPHJvZHJpZ28udml2aUBpbnRlbC5jb20+Cj4gQ2M6IERoaW5h a2FyYW4gUGFuZGl5YW4gPGRoaW5ha2FyYW4ucGFuZGl5YW5AaW50ZWwuY29tPgo+IC0tLQo+IMKg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgfMKgwqA3NSArKysrKysrKysrKyst LQo+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaMKgwqDCoMKgwqB8wqDCoMKgOSAr LQo+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmjCoMKgwqDCoHzCoMKgwqAzICsK PiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bzci5jwqDCoMKgwqB8IDE1NCArKysrKysr KysrKysrKysrKysrKysrKysKPiAtLS0tCj4gwqA0IGZpbGVzIGNoYW5nZWQsIDIxNCBpbnNlcnRp b25zKCspLCAyNyBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdm cy5jCj4gaW5kZXggNTlkYzA2MTBlYTQ0Li5iMjkwNGJiMmJlNDkgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2RlYnVnZnMuYwo+IEBAIC0yNjg5LDE0ICsyNjg5LDExIEBAIHBzcl9zb3VyY2Vf c3RhdHVzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlCj4gKmRldl9wcml2LCBzdHJ1Y3Qgc2VxX2Zp bGUgKm0pCj4gwqAKPiDCoHN0YXRpYyBpbnQgaTkxNV9lZHBfcHNyX3N0YXR1cyhzdHJ1Y3Qgc2Vx X2ZpbGUgKm0sIHZvaWQgKmRhdGEpCj4gwqB7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSBub2RlX3RvX2k5MTUobS0KPiA+cHJpdmF0ZSk7Cj4gKwlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBtLT5wcml2YXRlOwo+IMKgCXUzMiBwc3JwZXJmID0gMDsK PiDCoAlib29sIGVuYWJsZWQgPSBmYWxzZTsKPiDCoAlib29sIHNpbmtfc3VwcG9ydDsKPiDCoAo+ IC0JaWYgKCFIQVNfUFNSKGRldl9wcml2KSkKPiAtCQlyZXR1cm4gLUVOT0RFVjsKPiAtCj4gwqAJ c2lua19zdXBwb3J0ID0gZGV2X3ByaXYtPnBzci5zaW5rX3N1cHBvcnQ7Cj4gwqAJc2VxX3ByaW50 ZihtLCAiU2lua19TdXBwb3J0OiAlc1xuIiwgeWVzbm8oc2lua19zdXBwb3J0KSk7Cj4gwqAJaWYg KCFzaW5rX3N1cHBvcnQpCj4gQEAgLTI3MDUsNyArMjcwMiw3IEBAIHN0YXRpYyBpbnQgaTkxNV9l ZHBfcHNyX3N0YXR1cyhzdHJ1Y3Qgc2VxX2ZpbGUKPiAqbSwgdm9pZCAqZGF0YSkKPiDCoAlpbnRl bF9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7Cj4gwqAKPiDCoAltdXRleF9sb2NrKCZkZXZfcHJp di0+cHNyLmxvY2spOwo+IC0Jc2VxX3ByaW50ZihtLCAiRW5hYmxlZDogJXNcbiIsIHllc25vKChi b29sKWRldl9wcml2LQo+ID5wc3IuZW5hYmxlZCkpOwo+ICsJc2VxX3ByaW50ZihtLCAiRW5hYmxl ZDogJXNcbiIsIHllc25vKGRldl9wcml2LQo+ID5wc3IuZW5hYmxlZCkpOwo+IMKgCXNlcV9wcmlu dGYobSwgIkJ1c3kgZnJvbnRidWZmZXIgYml0czogMHglMDN4XG4iLAo+IMKgCQnCoMKgwqBkZXZf cHJpdi0+cHNyLmJ1c3lfZnJvbnRidWZmZXJfYml0cyk7Cj4gwqAKPiBAQCAtMjc3Niw2ICsyNzcz LDcyIEBACj4gREVGSU5FX1NJTVBMRV9BVFRSSUJVVEUoaTkxNV9lZHBfcHNyX2RlYnVnX2ZvcHMs Cj4gwqAJCQlpOTE1X2VkcF9wc3JfZGVidWdfZ2V0LAo+IGk5MTVfZWRwX3Bzcl9kZWJ1Z19zZXQs Cj4gwqAJCQkiJWxsdVxuIik7Cj4gwqAKPiArc3RhdGljIHNzaXplX3QgaTkxNV9lZHBfcHNyX3dy aXRlKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyCj4gX191c2VyICp1YnVmLAo+ICsJCQkJ wqDCoHNpemVfdCBsZW4sIGxvZmZfdCAqb2ZmcCkKPiArewo+ICsJc3RydWN0IHNlcV9maWxlICpt ID0gZmlsZS0+cHJpdmF0ZV9kYXRhOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gbS0+cHJpdmF0ZTsKPiArCXN0cnVjdCBkcm1fbW9kZXNldF9hY3F1aXJlX2N0eCBjdHg7 Cj4gKwlpbnQgcmV0LCB2YWw7Cj4gKwo+ICsJaWYgKCFkZXZfcHJpdi0+cHNyLnNpbmtfc3VwcG9y dCkKPiArCQlyZXR1cm4gLUVOT0RFVjsKPiArCj4gKwlyZXQgPSBrc3RydG9pbnRfZnJvbV91c2Vy KHVidWYsIGxlbiwgMTAsICZ2YWwpOwo+ICsJaWYgKHJldCA8IDApIHsKPiArCQlib29sIGVuYWJs ZTsKPiArCQlyZXQgPSBrc3RydG9ib29sX2Zyb21fdXNlcih1YnVmLCBsZW4sICZlbmFibGUpOwo+ ICsKPiArCQlpZiAocmV0IDwgMCkKPiArCQkJcmV0dXJuIHJldDsKPiArCj4gKwkJdmFsID0gZW5h YmxlOwo+ICsJfQo+ICsKPiArCWlmICh2YWwgIT0gUFNSX0RFQlVHRlNfTU9ERV9ERUZBVUxUICYm Cj4gKwnCoMKgwqDCoHZhbCAhPSBQU1JfREVCVUdGU19NT0RFX0RJU0FCTEVEICYmCj4gKwnCoMKg wqDCoHZhbCAhPSBQU1JfREVCVUdGU19NT0RFX0VOQUJMRUQpCj4gKwkJcmV0dXJuIC1FSU5WQUw7 Cj4gKwo+ICsJaW50ZWxfcnVudGltZV9wbV9nZXQoZGV2X3ByaXYpOwo+ICsKPiArCWRybV9tb2Rl c2V0X2FjcXVpcmVfaW5pdCgmY3R4LAo+IERSTV9NT0RFU0VUX0FDUVVJUkVfSU5URVJSVVBUSUJM RSk7Cj4gKwo+ICtyZXRyeToKPiArCXJldCA9IGludGVsX3Bzcl9zZXRfZGVidWdmc19tb2RlKGRl dl9wcml2LCAmY3R4LCB2YWwpOwo+ICsJaWYgKHJldCA9PSAtRUJVU1kpIHsKPiArCQlyZXQgPSBk cm1fbW9kZXNldF9iYWNrb2ZmKCZjdHgpOwo+ICsJCWlmICghcmV0KQo+ICsJCQlnb3RvIHJldHJ5 Owo+ICsJfQo+ICsKPiArCWRybV9tb2Rlc2V0X2Ryb3BfbG9ja3MoJmN0eCk7Cj4gKwlkcm1fbW9k ZXNldF9hY3F1aXJlX2ZpbmkoJmN0eCk7CgpEZWFkbG9ja2VkIGhlcmUgZHVyaW5nIHRlc3RpbmcK CiQgZWNobyAwID7CoMKgL3N5cy9rZXJuZWwvZGVidWcvZHJpLzAvaTkxNV9lZHBfcHNyX3N0YXR1 cwpiYXNoOiBlY2hvOiB3cml0ZSBlcnJvcjogUmVzb3VyY2UgZGVhZGxvY2sgYXZvaWRlZAoKWyAx MjQ4Ljg1NjY3MV0gV0FSTklORzogQ1BVOiAyIFBJRDogMTc4OCBhdApkcml2ZXJzL2dwdS9kcm0v ZHJtX21vZGVzZXRfbG9jay5jOjIyMyBkcm1fbW9kZXNldF9kcm9wX2xvY2tzKzB4NTYvMHg2MApb ZHJtXQpbIDEyNDguODU2NzU3XSBNb2R1bGVzIGxpbmtlZCBpbjogcmZjb21tIGNtYWMgYm5lcCBh cmM0IGl3bG12bQpubHNfaXNvODg1OV8xIG1hYzgwMjExIHNuZF9oZGFfY29kZWNfaGRtaSBzbmRf aGRhX2NvZGVjX3JlYWx0ZWsKc25kX2hkYV9jb2RlY19nZW5lcmljIHNuZF9oZGFfaW50ZWwgc25k X2hkYV9jb2RlYyBzbmRfaHdkZXAKc25kX2hkYV9jb3JlIGl3bHdpZmkgc25kX3BjbSBzbmRfc2Vx X21pZGkgc25kX3NlcV9taWRpX2V2ZW50CnNuZF9yYXdtaWRpIGludGVsX3JhcGwgYnR1c2IgYnRy dGwgc25kX3NlcSBidGJjbSB4ODZfcGtnX3RlbXBfdGhlcm1hbApidGludGVsIGludGVsX3Bvd2Vy Y2xhbXAgYmx1ZXRvb3RoIGNvcmV0ZW1wIGNyY3QxMGRpZl9wY2xtdWwKY3JjMzJfcGNsbXVsIHNu ZF90aW1lciBzbmRfc2VxX2RldmljZSBnaGFzaF9jbG11bG5pX2ludGVsIGNmZzgwMjExCmFlc25p X2ludGVsIHNuZCBhZXNfeDg2XzY0IGNyeXB0b19zaW1kIGNyeXB0ZCBzb3VuZGNvcmUgZWNkaF9n ZW5lcmljCmdsdWVfaGVscGVyIGlucHV0X2xlZHMgbWVpX21lIG1laSBpbnRlbF9wY2hfdGhlcm1h bCBtYWNfaGlkIHBhcnBvcnRfcGMKcHBkZXYgbHAgcGFycG9ydCBhdXRvZnM0IGk5MTUgaTJjX2Fs Z29fYml0IGRybV9rbXNfaGVscGVyIHN5c2NvcHlhcmVhCnN5c2ZpbGxyZWN0IHN5c2ltZ2JsdCBm Yl9zeXNfZm9wcyBkcm0gZTEwMDBlIHBzbW91c2UgYWhjaSBsaWJhaGNpIHZpZGVvClsgMTI0OC44 NTcyODhdIENQVTogMiBQSUQ6IDE3ODggQ29tbTogYmFzaCBOb3QgdGFpbnRlZCA0LjE4LjAtcmM2 ZHJtLQp0aXAgIzEzOApbIDEyNDguODU3Mjk3XSBIYXJkd2FyZSBuYW1lOiBMRU5PVk8gMjBGNkNU TzFXVy8yMEY2Q1RPMVdXLCBCSU9TClIwMkVUNDhXICgxLjIxICkgMDYvMDEvMjAxNgpbIDEyNDgu ODU3MzU0XSBSSVA6IDAwMTA6ZHJtX21vZGVzZXRfZHJvcF9sb2NrcysweDU2LzB4NjAgW2RybV0K WyAxMjQ4Ljg1NzM2M10gQ29kZTogNTAgMDggNDggOGQgYjggNTAgZmYgZmYgZmYgNDggODkgNTEg MDggNDggODkgMGEgNDgKODkgMDAgNDggODkgNDAgMDggZTggYTggOTAgN2QgYzkgNDggOGIgNDMg NzAgNDkgMzkgYzQgNzUgZDIgNWIgNDEgNWMgNWQKYzMgPDBmPiAwYiBlYiBiYyA2NiAwZiAxZiA0 NCAwMCAwMCAwZiAxZiA0NCAwMCAwMCA0OCA4YiA5NyBkMCAwYSAwMCAwMApbIDEyNDguODU3ODYw XSBSU1A6IDAwMTg6ZmZmZmE0ZGQwMWZhYmNmOCBFRkxBR1M6IDAwMDEwMjg2ClsgMTI0OC44NTc4 NzhdIFJBWDogMDAwMDAwMDBmZmZmZmZkZCBSQlg6IGZmZmZhNGRkMDFmYWJkMjggUkNYOgowMDAw MDAwMDAwMDAwMDAwClsgMTI0OC44NTc4ODldIFJEWDogMDAwMDAwMDAwMDAwMDAwMCBSU0k6IGZm ZmY5N2JiODg0NzY4OTggUkRJOgpmZmZmYTRkZDAxZmFiZDI4ClsgMTI0OC44NTc4OThdIFJCUDog ZmZmZmE0ZGQwMWZhYmQwOCBSMDg6IDAwMDAwMDAwMDAwMDAwMDAgUjA5OgowMDAwMDAwMDAwMDAw MDAxClsgMTI0OC44NTc5MDhdIFIxMDogMDAwMDAwMDAwMDAwMDAwMSBSMTE6IDAwMDAwMDAwMDAw MDAwMDAgUjEyOgowMDAwMDAwMDAwMDAwMDAyClsgMTI0OC44NTc5MThdIFIxMzogMDAwMDU2MDNj ZGI2MDg4MCBSMTQ6IDAwMDAwMDAwMDAwMDAwMDIgUjE1OgpmZmZmYTRkZDAxZmFiZWU4ClsgMTI0 OC44NTc5MzBdIEZTOsKgwqAwMDAwN2Y4M2IxZGVhNzQwKDAwMDApIEdTOmZmZmY5N2JiOTlhMDAw MDAoMDAwMCkKa25sR1M6MDAwMDAwMDAwMDAwMDAwMApbIDEyNDguODU3OTQwXSBDUzrCoMKgMDAx MCBEUzogMDAwMCBFUzogMDAwMCBDUjA6IDAwMDAwMDAwODAwNTAwMzMKWyAxMjQ4Ljg1Nzk1MF0g Q1IyOiAwMDAwNTYwM2NkYjYwODgwIENSMzogMDAwMDAwMDIxNDMzODAwMyBDUjQ6CjAwMDAwMDAw MDAzNjA2ZTAKWyAxMjQ4Ljg1Nzk1OV0gQ2FsbCBUcmFjZToKWyAxMjQ4Ljg1ODA5NF3CoMKgaTkx NV9lZHBfcHNyX3dyaXRlKzB4ZDUvMHgxODAgW2k5MTVdClsgMTI0OC44NTgxNzJdwqDCoGZ1bGxf cHJveHlfd3JpdGUrMHg1Zi8weDkwClsgMTI0OC44NTgyMDddwqDCoF9fdmZzX3dyaXRlKzB4M2Ev MHgxYTAKWyAxMjQ4Ljg1ODIyN13CoMKgPyByY3VfcmVhZF9sb2NrX3NjaGVkX2hlbGQrMHg3OS8w eDgwClsgMTI0OC44NTgyNDNdwqDCoD8gcmN1X3N5bmNfbG9ja2RlcF9hc3NlcnQrMHgzMi8weDYw ClsgMTI0OC44NTgyNjBdwqDCoD8gX19zYl9zdGFydF93cml0ZSsweDEzNS8weDE5MApbIDEyNDgu ODU4Mjc1XcKgwqA/IHZmc193cml0ZSsweDE5My8weDFjMApbIDEyNDguODU4MzA2XcKgwqB2ZnNf d3JpdGUrMHhjNi8weDFjMApbIDEyNDguODU4MzM1XcKgwqBrc3lzX3dyaXRlKzB4NTgvMHhjMApb IDEyNDguODU4MzcwXcKgwqBfX3g2NF9zeXNfd3JpdGUrMHgxYS8weDIwClsgMTI0OC44NTgzODdd wqDCoGRvX3N5c2NhbGxfNjQrMHg2NS8weDFiMApbIDEyNDguODU4NDA5XcKgwqBlbnRyeV9TWVND QUxMXzY0X2FmdGVyX2h3ZnJhbWUrMHg0OS8weGJlClsgMTI0OC44NTg0MjNdIFJJUDogMDAzMzow eDdmODNiMTRmMjE1NApbIDEyNDguODU4NDMwXSBDb2RlOiA4OSAwMiA0OCBjNyBjMCBmZiBmZiBm ZiBmZiBjMyA2NiAyZSAwZiAxZiA4NCAwMCAwMAowMCAwMCAwMCA2NiA5MCA0OCA4ZCAwNSBiMSAw NyAyZSAwMCA4YiAwMCA4NSBjMCA3NSAxMyBiOCAwMSAwMCAwMCAwMCAwZgowNSA8NDg+IDNkIDAw IGYwIGZmIGZmIDc3IDU0IGYzIGMzIDY2IDkwIDQxIDU0IDU1IDQ5IDg5IGQ0IDUzIDQ4IDg5IGY1 ClsgMTI0OC44NTg5MjhdIFJTUDogMDAyYjowMDAwN2ZmZWU3MzIwMTY4IEVGTEFHUzogMDAwMDAy NDYgT1JJR19SQVg6CjAwMDAwMDAwMDAwMDAwMDEKWyAxMjQ4Ljg1ODk0Nl0gUkFYOiBmZmZmZmZm ZmZmZmZmZmRhIFJCWDogMDAwMDAwMDAwMDAwMDAwMiBSQ1g6CjAwMDA3ZjgzYjE0ZjIxNTQKWyAx MjQ4Ljg1ODk1Nl0gUkRYOiAwMDAwMDAwMDAwMDAwMDAyIFJTSTogMDAwMDU2MDNjZGI2MDg4MCBS REk6CjAwMDAwMDAwMDAwMDAwMDEKWyAxMjQ4Ljg1ODk2NV0gUkJQOiAwMDAwNTYwM2NkYjYwODgw IFIwODogMDAwMDAwMDAwMDAwMDAwYSBSMDk6CjAwMDAwMDAwMDAwMDAwMDEKWyAxMjQ4Ljg1ODk3 NV0gUjEwOiAwMDAwMDAwMDAwMDAwMDBhIFIxMTogMDAwMDAwMDAwMDAwMDI0NiBSMTI6CjAwMDA3 ZjgzYjE3Y2U3NjAKWyAxMjQ4Ljg1ODk4NF0gUjEzOiAwMDAwMDAwMDAwMDAwMDAyIFIxNDogMDAw MDdmODNiMTdjYTJhMCBSMTU6CjAwMDA3ZjgzYjE3Yzk3NjAKWyAxMjQ4Ljg1OTA0M10gaXJxIGV2 ZW50IHN0YW1wOiA1OTc2OApbIDEyNDguODU5MDU4XSBoYXJkaXJxcyBsYXN0wqDCoGVuYWJsZWQg YXQgKDU5NzY3KTogWzxmZmZmZmZmZjg5YTMxZGM2Pl0KX3Jhd19zcGluX3VubG9ja19pcnFyZXN0 b3JlKzB4MzYvMHg2MApbIDEyNDguODU5MDcyXSBoYXJkaXJxcyBsYXN0IGRpc2FibGVkIGF0ICg1 OTc2OCk6IFs8ZmZmZmZmZmY4OWMwMTMwOT5dCmVycm9yX2VudHJ5KzB4ODkvMHgxMTAKWyAxMjQ4 Ljg1OTA4N10gc29mdGlycXMgbGFzdMKgwqBlbmFibGVkIGF0ICg1OTcyNCk6IFs8ZmZmZmZmZmY4 OWUwMDM3OD5dCl9fZG9fc29mdGlycSsweDM3OC8weDRlMwpbIDEyNDguODU5MTAwXSBzb2Z0aXJx cyBsYXN0IGRpc2FibGVkIGF0ICg1OTcxMSk6IFs8ZmZmZmZmZmY4OTA5OGUwZD5dCmlycV9leGl0 KzB4Y2QvMHhlMApbIDEyNDguODU5MTU2XSBXQVJOSU5HOiBDUFU6IDIgUElEOiAxNzg4IGF0CmRy aXZlcnMvZ3B1L2RybS9kcm1fbW9kZXNldF9sb2NrLmM6MjIzIGRybV9tb2Rlc2V0X2Ryb3BfbG9j a3MrMHg1Ni8weDYwCltkcm1dClsgMTI0OC44NTkxNjZdIC0tLVsgZW5kIHRyYWNlIGI3MjIyZjky MzlkMzA2NWIgXS0tCgoKPiArCj4gKwlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdik7Cj4g Kwo+ICsJcmV0dXJuIHJldCA/OiBsZW47Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgaTkxNV9lZHBf cHNyX29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpCj4gK3sKPiAr CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGlub2RlLT5pX3ByaXZhdGU7Cj4g Kwo+ICsJaWYgKCFIQVNfUFNSKGRldl9wcml2KSkKPiArCQlyZXR1cm4gLUVOT0RFVjsKPiArCj4g KwlyZXR1cm4gc2luZ2xlX29wZW4oZmlsZSwgaTkxNV9lZHBfcHNyX3N0YXR1cywgZGV2X3ByaXYp OwoKV2hhdCBkbyB5b3UgdGhpbmsgb2YgdXNpbmcgImk5MTVfZWRwX3Bzcl9kZWJ1ZyIgaW5zdGVh ZD8KCj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGk5MTVf ZWRwX3Bzcl9vcHMgPSB7Cj4gKwkub3duZXIgPSBUSElTX01PRFVMRSwKPiArCS5vcGVuID0gaTkx NV9lZHBfcHNyX29wZW4sCj4gKwkucmVhZCA9IHNlcV9yZWFkLAo+ICsJLmxsc2VlayA9IHNlcV9s c2VlaywKPiArCS5yZWxlYXNlID0gc2luZ2xlX3JlbGVhc2UsCj4gKwkud3JpdGUgPSBpOTE1X2Vk cF9wc3Jfd3JpdGUKPiArfTsKPiArCj4gwqBzdGF0aWMgaW50IGk5MTVfZW5lcmd5X3VKKHN0cnVj dCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKPiDCoHsKPiDCoAlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSBub2RlX3RvX2k5MTUobS0KPiA+cHJpdmF0ZSk7Cj4gQEAgLTQ3MjAs NyArNDc4Myw2IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2luZm9fbGlzdAo+IGk5MTVfZGVi dWdmc19saXN0W10gPSB7Cj4gwqAJeyJpOTE1X3N3aXp6bGVfaW5mbyIsIGk5MTVfc3dpenpsZV9p bmZvLCAwfSwKPiDCoAl7Imk5MTVfcHBndHRfaW5mbyIsIGk5MTVfcHBndHRfaW5mbywgMH0sCj4g wqAJeyJpOTE1X2xsYyIsIGk5MTVfbGxjLCAwfSwKPiAtCXsiaTkxNV9lZHBfcHNyX3N0YXR1cyIs IGk5MTVfZWRwX3Bzcl9zdGF0dXMsIDB9LAo+IMKgCXsiaTkxNV9lbmVyZ3lfdUoiLCBpOTE1X2Vu ZXJneV91SiwgMH0sCj4gwqAJeyJpOTE1X3J1bnRpbWVfcG1fc3RhdHVzIiwgaTkxNV9ydW50aW1l X3BtX3N0YXR1cywgMH0sCj4gwqAJeyJpOTE1X3Bvd2VyX2RvbWFpbl9pbmZvIiwgaTkxNV9wb3dl cl9kb21haW5faW5mbywgMH0sCj4gQEAgLTQ3NDQsNiArNDgwNiw3IEBAIHN0YXRpYyBjb25zdCBz dHJ1Y3QgaTkxNV9kZWJ1Z2ZzX2ZpbGVzIHsKPiDCoAljb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRp b25zICpmb3BzOwo+IMKgfSBpOTE1X2RlYnVnZnNfZmlsZXNbXSA9IHsKPiDCoAl7Imk5MTVfd2Vk Z2VkIiwgJmk5MTVfd2VkZ2VkX2ZvcHN9LAo+ICsJeyJpOTE1X2VkcF9wc3Jfc3RhdHVzIiwgJmk5 MTVfZWRwX3Bzcl9vcHN9LAo+IMKgCXsiaTkxNV9jYWNoZV9zaGFyaW5nIiwgJmk5MTVfY2FjaGVf c2hhcmluZ19mb3BzfSwKPiDCoAl7Imk5MTVfcmluZ19taXNzZWRfaXJxIiwgJmk5MTVfcmluZ19t aXNzZWRfaXJxX2ZvcHN9LAo+IMKgCXsiaTkxNV9yaW5nX3Rlc3RfaXJxIiwgJmk5MTVfcmluZ190 ZXN0X2lycV9mb3BzfSwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuaAo+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IGluZGV4IDBmNDlmOTk4 OGRmYS4uZDg1ODM3NzBlOGE2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gQEAgLTYx Miw3ICs2MTIsOCBAQCBzdHJ1Y3QgaTkxNV9kcnJzIHsKPiDCoHN0cnVjdCBpOTE1X3BzciB7Cj4g wqAJc3RydWN0IG11dGV4IGxvY2s7Cj4gwqAJYm9vbCBzaW5rX3N1cHBvcnQ7Cj4gLQlzdHJ1Y3Qg aW50ZWxfZHAgKmVuYWJsZWQ7Cj4gKwlib29sIGVuYWJsZWQ7Cj4gKwlzdHJ1Y3QgaW50ZWxfZHAg KmRwOwpTZXBhcmF0ZSBwYXRjaCBmb3IgdGhpcyBjaGFuZ2U/IEhvdyBhYm91dCBrZWVwaW5nIGk5 MTVfcHNyLmRwIGFsd2F5cwp2YWxpZD8KCj4gwqAJYm9vbCBhY3RpdmU7Cj4gwqAJc3RydWN0IHdv cmtfc3RydWN0IHdvcms7Cj4gwqAJdW5zaWduZWQgYnVzeV9mcm9udGJ1ZmZlcl9iaXRzOwo+IEBA IC02MjUsNiArNjI2LDEyIEBAIHN0cnVjdCBpOTE1X3BzciB7Cj4gwqAJYm9vbCBkZWJ1ZzsKPiDC oAlrdGltZV90IGxhc3RfZW50cnlfYXR0ZW1wdDsKPiDCoAlrdGltZV90IGxhc3RfZXhpdDsKPiAr Cj4gKwllbnVtIGk5MTVfcHNyX2RlYnVnZnNfbW9kZSB7Cj4gKwkJUFNSX0RFQlVHRlNfTU9ERV9E RUZBVUxUID0gLTEsCj4gKwkJUFNSX0RFQlVHRlNfTU9ERV9ESVNBQkxFRCwKPiArCQlQU1JfREVC VUdGU19NT0RFX0VOQUJMRUQKCklmIHdlIGFkZCBhbm90aGVyIGVudW0sIHdlIGNhbiB3cml0ZSB0 ZXN0cyB0byBlbmFibGUgUFNSMSBvbiBQU1IyCnBhbmVscy4KCQlQU1JfREVCVUdGU19NT0RFX1BT UjEKCQlQU1JfREVCVUdGU19NT0RFX1BTUjIKPiArCX0gZGVidWdmc19tb2RlOwo+IMKgfTsKPiDC oAo+IMKgZW51bSBpbnRlbF9wY2ggewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcnYuaAo+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiBpbmRl eCBjMjc1ZjkxMjQ0YTYuLjc1MWVkMjU3ZmJiYSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Ry di5oCj4gQEAgLTE5MjYsNiArMTkyNiw5IEBAIHZvaWQgaW50ZWxfcHNyX2VuYWJsZShzdHJ1Y3Qg aW50ZWxfZHAKPiAqaW50ZWxfZHAsCj4gwqAJCcKgwqDCoMKgwqDCoGNvbnN0IHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKTsKPiDCoHZvaWQgaW50ZWxfcHNyX2Rpc2FibGUoc3Ry dWN0IGludGVsX2RwICppbnRlbF9kcCwKPiDCoAkJwqDCoMKgwqDCoMKgY29uc3Qgc3RydWN0IGlu dGVsX2NydGNfc3RhdGUKPiAqb2xkX2NydGNfc3RhdGUpOwo+ICtpbnQgaW50ZWxfcHNyX3NldF9k ZWJ1Z2ZzX21vZGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICsJCQnCoMKg wqDCoMKgwqDCoHN0cnVjdCBkcm1fbW9kZXNldF9hY3F1aXJlX2N0eCAqY3R4LAo+ICsJCQnCoMKg wqDCoMKgwqDCoGVudW0gaTkxNV9wc3JfZGVidWdmc19tb2RlIG1vZGUpOwo+IMKgdm9pZCBpbnRl bF9wc3JfaW52YWxpZGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gwqAJ CQnCoMKgdW5zaWduZWQgZnJvbnRidWZmZXJfYml0cywKPiDCoAkJCcKgwqBlbnVtIGZiX29wX29y aWdpbiBvcmlnaW4pOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9w c3IuYwo+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcHNyLmMKPiBpbmRleCA0YmQ1NzY4 NzMxZWUuLjk3NDI0YWU3NjlmMyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9wc3IuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bzci5jCj4gQEAg LTU2LDYgKzU2LDE2IEBACj4gwqAjaW5jbHVkZSAiaW50ZWxfZHJ2LmgiCj4gwqAjaW5jbHVkZSAi aTkxNV9kcnYuaCIKPiDCoAo+ICtzdGF0aWMgYm9vbCBwc3JfZ2xvYmFsX2VuYWJsZWQoZW51bSBp OTE1X3Bzcl9kZWJ1Z2ZzX21vZGUgbW9kZSkKPiArewo+ICsJaWYgKG1vZGUgPT0gUFNSX0RFQlVH RlNfTU9ERV9ERUZBVUxUKQo+ICsJCXJldHVybiBpOTE1X21vZHBhcmFtcy5lbmFibGVfcHNyOwo+ ICsJZWxzZSBpZiAobW9kZSA9PSBQU1JfREVCVUdGU19NT0RFX0RJU0FCTEVEKQo+ICsJCXJldHVy biBmYWxzZTsKPiArCWVsc2UKPiArCQlyZXR1cm4gdHJ1ZTsKPiArfQo+ICsKPiDCoHZvaWQgaW50 ZWxfcHNyX2lycV9jb250cm9sKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgYm9v bAo+IGRlYnVnKQo+IMKgewo+IMKgCXUzMiBkZWJ1Z19tYXNrLCBtYXNrOwo+IEBAIC00NzEsMTEg KzQ4MSw2IEBAIHZvaWQgaW50ZWxfcHNyX2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9kcAo+ ICppbnRlbF9kcCwKPiDCoAlpZiAoIUNBTl9QU1IoZGV2X3ByaXYpKQo+IMKgCQlyZXR1cm47Cj4g wqAKPiAtCWlmICghaTkxNV9tb2RwYXJhbXMuZW5hYmxlX3Bzcikgewo+IC0JCURSTV9ERUJVR19L TVMoIlBTUiBkaXNhYmxlIGJ5IGZsYWdcbiIpOwo+IC0JCXJldHVybjsKPiAtCX0KPiAtCj4gwqAJ LyoKPiDCoAnCoCogSFNXIHNwZWMgZXhwbGljaXRseSBzYXlzIFBTUiBpcyB0aWVkIHRvIHBvcnQg QS4KPiDCoAnCoCogQkRXKyBwbGF0Zm9ybXMgd2l0aCBEREkgaW1wbGVtZW50YXRpb24gb2YgUFNS IGhhdmUKPiBkaWZmZXJlbnQKPiBAQCAtNTE3LDcgKzUyMiwxMSBAQCB2b2lkIGludGVsX3Bzcl9j b21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZHAKPiAqaW50ZWxfZHAsCj4gwqAKPiDCoAljcnRj X3N0YXRlLT5oYXNfcHNyID0gdHJ1ZTsKPiDCoAljcnRjX3N0YXRlLT5oYXNfcHNyMiA9IGludGVs X3BzcjJfY29uZmlnX3ZhbGlkKGludGVsX2RwLAo+IGNydGNfc3RhdGUpOwo+IC0JRFJNX0RFQlVH X0tNUygiRW5hYmxpbmcgUFNSJXNcbiIsIGNydGNfc3RhdGUtPmhhc19wc3IyID8gIjIiCj4gOiAi Iik7Cj4gKwo+ICsJaWYgKHBzcl9nbG9iYWxfZW5hYmxlZChkZXZfcHJpdi0+cHNyLmRlYnVnZnNf bW9kZSkpCj4gKwkJRFJNX0RFQlVHX0tNUygiRW5hYmxpbmcgUFNSJXNcbiIsIGNydGNfc3RhdGUt Cj4gPmhhc19wc3IyID8gIjIiIDogIiIpOwpUaGlzIGdldHMgcHJpbnRlZCBkdXJpbmcgYSBtb2Rl c2V0IHRoYXQgaXMgc2h1dHRpbmcgZG93biB0aGUgY3J0Yy4KCj4gKwllbHNlCj4gKwkJRFJNX0RF QlVHX0tNUygiUFNSIGRpc2FibGUgYnkgZmxhZ1xuIik7CgoKPiDCoH0KClNvLCBuZWl0aGVyIGRl YnVnZnMgbm9yIG1vZHBhcmFtIGhhcyBhbnkgZWZmZWN0IG9uIGNydGNfc3RhdGUtPmhhc19wc3IK b3IgY3J0Y19zdGF0ZS0+aGFzX3BzcjIuIFdoeSB3YXMgdGhpcyBjaGVjayBtb3ZlZCB0byB0aGUg ZW5kP8KgCgpXZSBjb3VsZCBhbHNvIHJld3JpdGUgdGhlIGRlYnVnIG1lc3NhZ2UgdG8gbG9vayBz aW1pbGFyIHRvIHRoZSBvdGhlcgpjb21wdXRlX2NvbmZpZyBmdW5jdGlvbnMKCj4gwqAKPiDCoHN0 YXRpYyB2b2lkIGludGVsX3Bzcl9hY3RpdmF0ZShzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ IEBAIC01ODksNiArNTk4LDIyIEBAIHN0YXRpYyB2b2lkIGludGVsX3Bzcl9lbmFibGVfc291cmNl KHN0cnVjdAo+IGludGVsX2RwICppbnRlbF9kcCwKPiDCoAl9Cj4gwqB9Cj4gwqAKPiArc3RhdGlj IHZvaWQgaW50ZWxfcHNyX2VuYWJsZV9sb2NrZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUKPiAq ZGV2X3ByaXYsCj4gKwkJCQnCoMKgwqDCoGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlCj4g KmNydGNfc3RhdGUpCj4gK3sKPiArCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAgPSBkZXZfcHJp di0+cHNyLmRwOwo+ICsKPiArCWlmIChkZXZfcHJpdi0+cHNyLmVuYWJsZWQpCj4gKwkJcmV0dXJu Owo+ICsKVGhpcyBmdW5jdGlvbiBnZXRzIGNhbGxlZCBmcm9tIGludGVsX3Bzcl9zZXRfZGVidWdm c19tb2RlKCkgRG9lc24ndAp0aGlzIGFsbG93IGRlYnVnZnMgdG8gZW5hYmxlIFBTUiBldmVuIGlm IG1vZGUgcmVsYXRlZCBjaGVja3MgaW4KcHNyX2NvbXB1dGVfY29uZmlnKCkgaGFkIGZhaWxlZD8g Rm9yIGUuZy4sIGNydGNfc3RhdGUtPmhhc19wc3Igd2FzCmZhbHNlLgoKPiArCWludGVsX3Bzcl9z ZXR1cF92c2MoaW50ZWxfZHAsIGNydGNfc3RhdGUpOwo+ICsJaW50ZWxfcHNyX2VuYWJsZV9zaW5r KGludGVsX2RwKTsKPiArCWludGVsX3Bzcl9lbmFibGVfc291cmNlKGludGVsX2RwLCBjcnRjX3N0 YXRlKTsKPiArCWRldl9wcml2LT5wc3IuZW5hYmxlZCA9IHRydWU7Cj4gKwo+ICsJaW50ZWxfcHNy X2FjdGl2YXRlKGludGVsX2RwKTsKPiArfQo+ICsKPiDCoC8qKgo+IMKgICogaW50ZWxfcHNyX2Vu YWJsZSAtIEVuYWJsZSBQU1IKPiDCoCAqIEBpbnRlbF9kcDogSW50ZWwgRFAKPiBAQCAtNjExLDcg KzYzNiw3IEBAIHZvaWQgaW50ZWxfcHNyX2VuYWJsZShzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2Rw LAo+IMKgCj4gwqAJV0FSTl9PTihkZXZfcHJpdi0+ZHJycy5kcCk7Cj4gwqAJbXV0ZXhfbG9jaygm ZGV2X3ByaXYtPnBzci5sb2NrKTsKPiAtCWlmIChkZXZfcHJpdi0+cHNyLmVuYWJsZWQpIHsKPiAr CWlmIChkZXZfcHJpdi0+cHNyLmRwKSB7CgpDaGVjayBmb3IgZGV2X3ByaXYtPnBzci5lbmFibGVk IGluc3RlYWQ/Cgo+IMKgCQlEUk1fREVCVUdfS01TKCJQU1IgYWxyZWFkeSBpbiB1c2VcbiIpOwo+ IMKgCQlnb3RvIHVubG9jazsKPiDCoAl9Cj4gQEAgLTYxOSwxMiArNjQ0LDEwIEBAIHZvaWQgaW50 ZWxfcHNyX2VuYWJsZShzdHJ1Y3QgaW50ZWxfZHAKPiAqaW50ZWxfZHAsCj4gwqAJZGV2X3ByaXYt PnBzci5wc3IyX2VuYWJsZWQgPSBjcnRjX3N0YXRlLT5oYXNfcHNyMjsKPiDCoAlkZXZfcHJpdi0+ cHNyLmJ1c3lfZnJvbnRidWZmZXJfYml0cyA9IDA7Cj4gwqAKPiAtCWludGVsX3Bzcl9zZXR1cF92 c2MoaW50ZWxfZHAsIGNydGNfc3RhdGUpOwo+IC0JaW50ZWxfcHNyX2VuYWJsZV9zaW5rKGludGVs X2RwKTsKPiAtCWludGVsX3Bzcl9lbmFibGVfc291cmNlKGludGVsX2RwLCBjcnRjX3N0YXRlKTsK PiAtCWRldl9wcml2LT5wc3IuZW5hYmxlZCA9IGludGVsX2RwOwo+ICsJZGV2X3ByaXYtPnBzci5k cCA9IGludGVsX2RwOwoKTm93IHRoYXQgdGhlcmUgaXMgcHNyLmVuYWJsZWQsIHNob3VsZCB3ZSBh bHdheXMga2VlcCB0aGlzIHBvaW50ZXIKdmFsaWQ/wqAKCj4gwqAKPiAtCWludGVsX3Bzcl9hY3Rp dmF0ZShpbnRlbF9kcCk7Cj4gKwlpZiAocHNyX2dsb2JhbF9lbmFibGVkKGRldl9wcml2LT5wc3Iu ZGVidWdmc19tb2RlKSkKCk9rYXksIG5vdyBJIHNlZSB3aHkgeW91IGhhdmUgcHNyX2dsb2JhbF9l bmFibGVkKCkgYXMgdGhlIGxhc3QgY2hlY2sgaW4KcHNyX2NvbXB1dGVfY29uZmlnKCkuCgo+ICsJ CWludGVsX3Bzcl9lbmFibGVfbG9ja2VkKGRldl9wcml2LCBjcnRjX3N0YXRlKTsKPiDCoAo+IMKg dW5sb2NrOgo+IMKgCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBzci5sb2NrKTsKPiBAQCAtNjg4 LDcgKzcxMSw3IEBAIHN0YXRpYyB2b2lkIGludGVsX3Bzcl9kaXNhYmxlX2xvY2tlZChzdHJ1Y3QK PiBpbnRlbF9kcCAqaW50ZWxfZHApCj4gwqAJLyogRGlzYWJsZSBQU1Igb24gU2luayAqLwo+IMKg CWRybV9kcF9kcGNkX3dyaXRlYigmaW50ZWxfZHAtPmF1eCwgRFBfUFNSX0VOX0NGRywgMCk7Cj4g wqAKPiAtCWRldl9wcml2LT5wc3IuZW5hYmxlZCA9IE5VTEw7Cj4gKwlkZXZfcHJpdi0+cHNyLmVu YWJsZWQgPSBmYWxzZTsKPiDCoH0KPiDCoAo+IMKgLyoqCj4gQEAgLTcxMiw3ICs3MzUsMTQgQEAg dm9pZCBpbnRlbF9wc3JfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfZHAKPiAqaW50ZWxfZHAsCj4gwqAJ CXJldHVybjsKPiDCoAo+IMKgCW11dGV4X2xvY2soJmRldl9wcml2LT5wc3IubG9jayk7Cj4gKwlp ZiAoaW50ZWxfZHAgIT0gZGV2X3ByaXYtPnBzci5kcCkgewo+ICsJCW11dGV4X3VubG9jaygmZGV2 X3ByaXYtPnBzci5sb2NrKTsKPiArCQlyZXR1cm47Cj4gKwl9Cj4gKwo+IMKgCWludGVsX3Bzcl9k aXNhYmxlX2xvY2tlZChpbnRlbF9kcCk7Cj4gKwo+ICsJZGV2X3ByaXYtPnBzci5kcCA9IE5VTEw7 CklzIHRoZXJlIHN0aWxsIGEgbmVlZCB0byB1c2UgdGhpcyBmaWVsZCBhcyBmbGFnPwoKPiDCoAlt dXRleF9sdW5sb2NrKCZkZXZfcHJpdi0+cHNyLmxvY2spOwo+IMKgCWNhbmNlbF93b3JrX3N5bmMo JmRldl9wcml2LT5wc3Iud29yayk7Cj4gwqB9Cj4gQEAgLTc1NiwxMyArNzg2LDExIEBAIGludCBp bnRlbF9wc3Jfd2FpdF9mb3JfaWRsZShjb25zdCBzdHJ1Y3QKPiBpbnRlbF9jcnRjX3N0YXRlICpu ZXdfY3J0Y19zdGF0ZSkKPiDCoAo+IMKgc3RhdGljIGJvb2wgX19wc3Jfd2FpdF9mb3JfaWRsZV9s b2NrZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUKPiAqZGV2X3ByaXYpCj4gwqB7Cj4gLQlzdHJ1 Y3QgaW50ZWxfZHAgKmludGVsX2RwOwo+IMKgCWk5MTVfcmVnX3QgcmVnOwo+IMKgCXUzMiBtYXNr Owo+IMKgCWludCBlcnI7Cj4gwqAKPiAtCWludGVsX2RwID0gZGV2X3ByaXYtPnBzci5lbmFibGVk Owo+IC0JaWYgKCFpbnRlbF9kcCkKPiArCWlmICghZGV2X3ByaXYtPnBzci5lbmFibGVkKQo+IMKg CQlyZXR1cm4gZmFsc2U7Cj4gwqAKPiDCoAlpZiAoZGV2X3ByaXYtPnBzci5wc3IyX2VuYWJsZWQp IHsKPiBAQCAtNzg0LDYgKzgxMiw4OSBAQCBzdGF0aWMgYm9vbCBfX3Bzcl93YWl0X2Zvcl9pZGxl X2xvY2tlZChzdHJ1Y3QKPiBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiDCoAlyZXR1cm4g ZXJyID09IDAgJiYgZGV2X3ByaXYtPnBzci5lbmFibGVkOwo+IMKgfQo+IMKgCj4gK3N0YXRpYyBz dHJ1Y3QgZHJtX2NydGMgKgo+ICtmaW5kX2lkbGVfY3J0Y19mb3JfZW5jb2RlcihzdHJ1Y3QgZHJt X2VuY29kZXIgKmVuY29kZXIsCj4gKwkJCcKgwqDCoHN0cnVjdCBkcm1fbW9kZXNldF9hY3F1aXJl X2N0eCAqY3R4KQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9saXN0X2l0ZXIgY29ubl9p dGVyOwo+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGVuY29kZXItPmRldjsKPiArCXN0cnVj dCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3I7Cj4gKwlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7Cj4g Kwlib29sIGZvdW5kID0gZmFsc2U7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCWRybV9jb25uZWN0b3Jf bGlzdF9pdGVyX2JlZ2luKGRldiwgJmNvbm5faXRlcik7Cj4gKwlkcm1fZm9yX2VhY2hfY29ubmVj dG9yX2l0ZXIoY29ubmVjdG9yLCAmY29ubl9pdGVyKQo+ICsJCWlmIChjb25uZWN0b3ItPnN0YXRl LT5iZXN0X2VuY29kZXIgPT0gZW5jb2Rlcikgewo+ICsJCQlmb3VuZCA9IHRydWU7Cj4gKwkJCWJy ZWFrOwo+ICsJCX0KPiArCWRybV9jb25uZWN0b3JfbGlzdF9pdGVyX2VuZCgmY29ubl9pdGVyKTsK PiArCj4gKwlpZiAoV0FSTl9PTighZm91bmQpKQo+ICsJCXJldHVybiBFUlJfUFRSKC1FSU5WQUwp Owo+ICsKPiArCWNydGMgPSBjb25uZWN0b3ItPnN0YXRlLT5jcnRjOwo+ICsJcmV0ID0gZHJtX21v ZGVzZXRfbG9jaygmY3J0Yy0+bXV0ZXgsIGN0eCk7Cj4gKwlpZiAocmV0KQo+ICsJCXJldHVybiBF UlJfUFRSKHJldCk7Cj4gKwo+ICsJaWYgKGNvbm5lY3Rvci0+c3RhdGUtPmNvbW1pdCkKPiArCQly ZXQgPSB3YWl0X2Zvcl9jb21wbGV0aW9uX2ludGVycnVwdGlibGUoJmNvbm5lY3Rvci0KPiA+c3Rh dGUtPmNvbW1pdC0+aHdfZG9uZSk7Cj4gKwlpZiAoIXJldCAmJiBjcnRjLT5zdGF0ZS0+Y29tbWl0 KQo+ICsJCXJldCA9IHdhaXRfZm9yX2NvbXBsZXRpb25faW50ZXJydXB0aWJsZSgmY3J0Yy0KPiA+ c3RhdGUtPmNvbW1pdC0+aHdfZG9uZSk7Cj4gKwlpZiAocmV0KQo+ICsJCXJldHVybiBFUlJfUFRS KHJldCk7Cj4gKwo+ICsJcmV0dXJuIGNydGM7Cj4gK30KPiArCj4gK2ludCBpbnRlbF9wc3Jfc2V0 X2RlYnVnZnNfbW9kZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gKwkJCcKg wqDCoMKgwqDCoMKgc3RydWN0IGRybV9tb2Rlc2V0X2FjcXVpcmVfY3R4ICpjdHgsCj4gKwkJCcKg wqDCoMKgwqDCoMKgZW51bSBpOTE1X3Bzcl9kZWJ1Z2ZzX21vZGUgbW9kZSkKPiArewo+ICsJc3Ry dWN0IGRybV9kZXZpY2UgKmRldiA9ICZkZXZfcHJpdi0+ZHJtOwo+ICsJc3RydWN0IGRybV9lbmNv ZGVyICplbmNvZGVyOwo+ICsJc3RydWN0IGRybV9jcnRjICpjcnRjOwo+ICsJaW50IHJldDsKPiAr CWJvb2wgZW5hYmxlOwo+ICsKPiArCXJldCA9IGRybV9tb2Rlc2V0X2xvY2soJmRldi0+bW9kZV9j b25maWcuY29ubmVjdGlvbl9tdXRleCwKPiBjdHgpOwo+ICsJaWYgKHJldCkKPiArCQlyZXR1cm4g cmV0Owo+ICsKPiArCWVuYWJsZSA9IHBzcl9nbG9iYWxfZW5hYmxlZChtb2RlKTsKPiArCj4gKwlt dXRleF9sb2NrKCZkZXZfcHJpdi0+cHNyLmxvY2spOwo+ICsKPiArCWRvIHsKPiArCQlpZiAoIWRl dl9wcml2LT5wc3IuZHApIHsKPiArCQkJZGV2X3ByaXYtPnBzci5kZWJ1Z2ZzX21vZGUgPSBtb2Rl Owo+ICsJCQlnb3RvIGVuZDsKPiArCQl9Cj4gKwkJZW5jb2RlciA9ICZkcF90b19kaWdfcG9ydChk ZXZfcHJpdi0+cHNyLmRwKS0KPiA+YmFzZS5iYXNlOwo+ICsJCW11dGV4X3VubG9jaygmZGV2X3By aXYtPnBzci5sb2NrKTsKPiArCj4gKwkJY3J0YyA9IGZpbmRfaWRsZV9jcnRjX2Zvcl9lbmNvZGVy KGVuY29kZXIsIGN0eCk7Cj4gKwkJaWYgKElTX0VSUihjcnRjKSkKPiArCQkJcmV0dXJuIFBUUl9F UlIoY3J0Yyk7Cj4gKwo+ICsJCW11dGV4X2xvY2soJmRldl9wcml2LT5wc3IubG9jayk7Cj4gKwl9 IHdoaWxlIChkZXZfcHJpdi0+cHNyLmRwICE9IGVuY190b19pbnRlbF9kcChlbmNvZGVyKSk7Cldo ZW4gd2lsbCB0aGlzIG5vdCBiZSB0cnVlPwoKPiArCj4gKwlpZiAoIWVuYWJsZSkKPiArCQlpbnRl bF9wc3JfZGlzYWJsZV9sb2NrZWQoZW5jX3RvX2ludGVsX2RwKGVuY29kZXIpKTsKPiArCj4gKwlk ZXZfcHJpdi0+cHNyLmRlYnVnZnNfbW9kZSA9IG1vZGU7Cj4gKwo+ICsJaWYgKGVuYWJsZSkKYnNw ZWMgc2F5cyBQU1IgZW5hYmxlIHNlcXVlbmNlIHJlcXVpcmVzICI6IFRoZSBhc3NvY2lhdGVkIHRy YW5zY29kZXIKYW5kIHBvcnQgYXJlIHJ1bm5pbmcgYW5kIEF1eCBjaGFubmVsIGFzc29jaWF0ZWQg d2l0aCB0aGlzIHBvcnQgaGFzIElPCnBvd2VyIGVuYWJsZWQiIFNob3VsZG4ndCBjcnRjX3N0YXRl LT5hY3RpdmUgYmUgY2hlY2tlZC4KCj4gKwkJaW50ZWxfcHNyX2VuYWJsZV9sb2NrZWQoZGV2X3By aXYsCj4gdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjLT5zdGF0ZSkpOwo+ICsKPiArZW5kOgo+ICsJ bXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cHNyLmxvY2spOwo+ICsJcmV0dXJuIHJldDsKPiArfQo+ ICsKPiDCoHN0YXRpYyB2b2lkIGludGVsX3Bzcl93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29y aykKPiDCoHsKPiDCoAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPQo+IEBAIC04 MTEsNyArOTIyLDggQEAgc3RhdGljIHZvaWQgaW50ZWxfcHNyX3dvcmsoc3RydWN0IHdvcmtfc3Ry dWN0Cj4gKndvcmspCj4gwqAJaWYgKGRldl9wcml2LT5wc3IuYnVzeV9mcm9udGJ1ZmZlcl9iaXRz IHx8IGRldl9wcml2LQo+ID5wc3IuYWN0aXZlKQo+IMKgCQlnb3RvIHVubG9jazsKPiDCoAo+IC0J aW50ZWxfcHNyX2FjdGl2YXRlKGRldl9wcml2LT5wc3IuZW5hYmxlZCk7Cj4gKwlpbnRlbF9wc3Jf YWN0aXZhdGUoZGV2X3ByaXYtPnBzci5kcAo+ICspOwpTcHVyaW91cyBuZXcgbGluZS4KCj4gwqB1 bmxvY2s6Cj4gwqAJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cHNyLmxvY2spOwo+IMKgfQo+IEBA IC04NjYsNyArOTc4LDcgQEAgdm9pZCBpbnRlbF9wc3JfaW52YWxpZGF0ZShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZQo+ICpkZXZfcHJpdiwKPiDCoAkJcmV0dXJuOwo+IMKgCX0KPiDCoAo+IC0JY3J0 YyA9IGRwX3RvX2RpZ19wb3J0KGRldl9wcml2LT5wc3IuZW5hYmxlZCktCj4gPmJhc2UuYmFzZS5j cnRjOwo+ICsJY3J0YyA9IGRwX3RvX2RpZ19wb3J0KGRldl9wcml2LT5wc3IuZHApLT5iYXNlLmJh c2UuY3J0YzsKPiDCoAlwaXBlID0gdG9faW50ZWxfY3J0YyhjcnRjKS0+cGlwZTsKPiDCoAo+IMKg CWZyb250YnVmZmVyX2JpdHMgJj0gSU5URUxfRlJPTlRCVUZGRVJfQUxMX01BU0socGlwZSk7Cj4g QEAgLTkwOSw3ICsxMDIxLDcgQEAgdm9pZCBpbnRlbF9wc3JfZmx1c2goc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUKPiAqZGV2X3ByaXYsCj4gwqAJCXJldHVybjsKPiDCoAl9Cj4gwqAKPiAtCWNydGMg PSBkcF90b19kaWdfcG9ydChkZXZfcHJpdi0+cHNyLmVuYWJsZWQpLQo+ID5iYXNlLmJhc2UuY3J0 YzsKPiArCWNydGMgPSBkcF90b19kaWdfcG9ydChkZXZfcHJpdi0+cHNyLmRwKS0+YmFzZS5iYXNl LmNydGM7Cj4gwqAJcGlwZSA9IHRvX2ludGVsX2NydGMoY3J0YyktPnBpcGU7Cj4gwqAKPiDCoAlm cm9udGJ1ZmZlcl9iaXRzICY9IElOVEVMX0ZST05UQlVGRkVSX0FMTF9NQVNLKHBpcGUpOwo+IEBA IC05NzEsNiArMTA4Myw4IEBAIHZvaWQgaW50ZWxfcHNyX2luaXQoc3RydWN0IGRybV9pOTE1X3By aXZhdGUKPiAqZGV2X3ByaXYpCj4gwqAJCS8qIEZvciBuZXcgcGxhdGZvcm1zIGxldCdzIHJlc3Bl Y3QgVkJUIGJhY2sgYWdhaW4gKi8KPiDCoAkJZGV2X3ByaXYtPnBzci5saW5rX3N0YW5kYnkgPSBk ZXZfcHJpdi0KPiA+dmJ0LnBzci5mdWxsX2xpbms7Cj4gwqAKPiArCWRldl9wcml2LT5wc3IuZGVi dWdmc19tb2RlID0gUFNSX0RFQlVHRlNfTU9ERV9ERUZBVUxUOwo+ICsKPiDCoAlJTklUX1dPUkso JmRldl9wcml2LT5wc3Iud29yaywgaW50ZWxfcHNyX3dvcmspOwo+IMKgCW11dGV4X2luaXQoJmRl dl9wcml2LT5wc3IubG9jayk7Cj4gwqB9Cj4gQEAgLTk5MSw3ICsxMTA1LDcgQEAgdm9pZCBpbnRl bF9wc3Jfc2hvcnRfcHVsc2Uoc3RydWN0IGludGVsX2RwCj4gKmludGVsX2RwKQo+IMKgCj4gwqAJ bXV0ZXhfbG9jaygmcHNyLT5sb2NrKTsKPiDCoAo+IC0JaWYgKHBzci0+ZW5hYmxlZCAhPSBpbnRl bF9kcCkKPiArCWlmICghcHNyLT5lbmFibGVkIHx8IHBzci0+ZHAgIT0gaW50ZWxfZHApCj4gwqAJ CWdvdG8gZXhpdDsKPiDCoAo+IMKgCWlmIChkcm1fZHBfZHBjZF9yZWFkYigmaW50ZWxfZHAtPmF1 eCwgRFBfUFNSX1NUQVRVUywgJnZhbCkKPiAhPSAxKSB7Cl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4 QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=