From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v2 3/4] drm/i915/psr: Control PSR interrupts via debugfs Date: Tue, 27 Mar 2018 13:24:28 +0300 Message-ID: <20180327102428.GL5453@intel.com> References: <20180327011623.3341-1-dhinakaran.pandiyan@intel.com> <20180327011623.3341-3-dhinakaran.pandiyan@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by gabe.freedesktop.org (Postfix) with ESMTPS id 66B0C6E5D9 for ; Tue, 27 Mar 2018 10:24:32 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20180327011623.3341-3-dhinakaran.pandiyan@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Dhinakaran Pandiyan Cc: intel-gfx@lists.freedesktop.org, Rodrigo Vivi List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCBNYXIgMjYsIDIwMTggYXQgMDY6MTY6MjJQTSAtMDcwMCwgRGhpbmFrYXJhbiBQYW5k aXlhbiB3cm90ZToKPiBJbnRlcnJ1cHRzIG90aGVyIHRoYW4gdGhlIG9uZSBmb3IgQVVYIGVycm9y cyBhcmUgcmVxdWlyZWQgb25seSBmb3IgZGVidWcsCj4gc28gdW5tYXNrIHRoZW0gdmlhIGRlYnVn ZnMgd2hlbiB0aGUgdXNlciByZXF1ZXN0cyBkZWJ1Zy4KPiAKPiBVc2VyIGNhbiBtYWtlIHN1Y2gg YSByZXF1ZXN0IHdpdGgKPiBlY2hvIDEgPiA8REVCVUdfRlM+L2RyaS8wL2k5MTVfZWRwX3Bzcl9k ZWJ1Zwo+IAo+IHYyOiBVbnJvbGwgbG9vcHMgKFZpbGxlKQo+ICAgICBBdm9pZCByZXNldHRpbmcg ZXJyb3IgbWFzayBiaXRzLgo+IAo+IENjOiBSb2RyaWdvIFZpdmkgPHJvZHJpZ28udml2aUBpbnRl bC5jb20+Cj4gQ2M6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5j b20+Cj4gQ2M6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+IFNpZ25l ZC1vZmYtYnk6IERoaW5ha2FyYW4gUGFuZGl5YW4gPGRoaW5ha2FyYW4ucGFuZGl5YW5AaW50ZWwu Y29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyB8IDM2ICsr KysrKysrKysrKysrKysrKysrKysrLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5o ICAgICB8ICAxICsKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYyAgICAgfCA1NSAr KysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rydi5oICAgIHwgIDIgKysKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf cHNyLmMgICAgfCA1NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgNSBm aWxlcyBjaGFuZ2VkLCAxMDggaW5zZXJ0aW9ucygrKSwgNDAgZGVsZXRpb25zKC0pCj4gCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiBpbmRleCA3ODE2Y2Q1MzEwMGEuLjZmZDgwMWVm N2NiYiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gQEAgLTI2OTAsNiAr MjY5MCwzOSBAQCBzdGF0aWMgaW50IGk5MTVfZWRwX3Bzcl9zdGF0dXMoc3RydWN0IHNlcV9maWxl ICptLCB2b2lkICpkYXRhKQo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gK3N0YXRpYyBpbnQKPiAr aTkxNV9lZHBfcHNyX2RlYnVnX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKQo+ICt7Cj4gKwlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkYXRhOwo+ICsKPiArCWlmICghQ0FOX1BT UihkZXZfcHJpdikpCj4gKwkJcmV0dXJuIC1FTk9ERVY7Cj4gKwo+ICsJaWYgKHZhbCA8IDAgIHx8 IHZhbCA+IDEpCj4gKwkJcmV0dXJuIC1FSU5WQUw7CgpDYW4ndCBiZSA8IDAuCgo+ICsKPiArCURS TV9ERUJVR19LTVMoIiVzIFBTUiBkZWJ1Z1xuIiwgdmFsID09IDEgPyAiRW5hYmxpbmciIDogIkRp c2FibGluZyIpOwoKPT0xIHNlZW1zIHBvaW50bGVzcwplbmFibGVkZGlzYWJsZWQoKSBjb3VsZCBi ZSB1c2VkIHBlcmhhcHMuCgoKPiArCWludGVsX3Bzcl9kZWJ1Z19jb250cm9sKGRldl9wcml2LCB2 YWwpOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50Cj4gK2k5MTVfZWRw X3Bzcl9kZWJ1Z19nZXQodm9pZCAqZGF0YSwgdTY0ICp2YWwpCj4gK3sKPiArCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRhdGE7Cj4gKwo+ICsJaWYgKCFDQU5fUFNSKGRldl9w cml2KSkKPiArCQlyZXR1cm4gLUVOT0RFVjsKPiArCj4gKwkqdmFsID0gUkVBRF9PTkNFKGRldl9w cml2LT5wc3IuZGVidWcpOwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK0RFRklORV9TSU1QTEVf QVRUUklCVVRFKGk5MTVfZWRwX3Bzcl9kZWJ1Z19mb3BzLAo+ICsJCQlpOTE1X2VkcF9wc3JfZGVi dWdfZ2V0LCBpOTE1X2VkcF9wc3JfZGVidWdfc2V0LAo+ICsJCQkiJWxsdVxuIik7Cj4gKwo+ICBz dGF0aWMgaW50IGk5MTVfc2lua19jcmMoc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQo+ ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBub2RlX3RvX2k5MTUo bS0+cHJpdmF0ZSk7Cj4gQEAgLTQ4MTEsNyArNDg0NCw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg aTkxNV9kZWJ1Z2ZzX2ZpbGVzIHsKPiAgCXsiaTkxNV9ndWNfbG9nX3JlbGF5IiwgJmk5MTVfZ3Vj X2xvZ19yZWxheV9mb3BzfSwKPiAgCXsiaTkxNV9ocGRfc3Rvcm1fY3RsIiwgJmk5MTVfaHBkX3N0 b3JtX2N0bF9mb3BzfSwKPiAgCXsiaTkxNV9pcGNfc3RhdHVzIiwgJmk5MTVfaXBjX3N0YXR1c19m b3BzfSwKPiAtCXsiaTkxNV9kcnJzX2N0bCIsICZpOTE1X2RycnNfY3RsX2ZvcHN9Cj4gKwl7Imk5 MTVfZHJyc19jdGwiLCAmaTkxNV9kcnJzX2N0bF9mb3BzfSwKPiArCXsiaTkxNV9lZHBfcHNyX2Rl YnVnIiwgJmk5MTVfZWRwX3Bzcl9kZWJ1Z19mb3BzfQo+ICB9Owo+ICAKPiAgaW50IGk5MTVfZGVi dWdmc19yZWdpc3RlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5oCj4gaW5kZXggYzljM2IyYmE2YTg2Li5jMDIyNGE4NjM0NGUgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBAQCAtNjA4LDYgKzYwOCw3IEBAIHN0cnVjdCBpOTE1 X3BzciB7Cj4gIAlib29sIGNvbG9yaW1ldHJ5X3N1cHBvcnQ7Cj4gIAlib29sIGFscG07Cj4gIAli b29sIGhhc19od190cmFja2luZzsKPiArCWJvb2wgZGVidWc7Cj4gIAo+ICAJdm9pZCAoKmVuYWJs ZV9zb3VyY2UpKHN0cnVjdCBpbnRlbF9kcCAqLAo+ICAJCQkgICAgICBjb25zdCBzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9pcnEuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKPiBpbmRleCA4YTg5NGFk ZjJjYTEuLmU1YWFmODA1YzZhOCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2lycS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYwo+IEBAIC0y MzkxLDQwICsyMzkxLDYgQEAgc3RhdGljIHZvaWQgaWxrX2Rpc3BsYXlfaXJxX2hhbmRsZXIoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCWlyb25sYWtlX3Jwc19jaGFuZ2Vf aXJxX2hhbmRsZXIoZGV2X3ByaXYpOwo+ICB9Cj4gIAo+IC1zdGF0aWMgdm9pZCBoc3dfZWRwX3Bz cl9pcnFfaGFuZGxlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gLXsKPiAt CXUzMiBlZHBfcHNyX2lpciA9IEk5MTVfUkVBRChFRFBfUFNSX0lJUik7Cj4gLQl1MzIgZWRwX3Bz cl9pbXIgPSBJOTE1X1JFQUQoRURQX1BTUl9JTVIpOwo+IC0JdTMyIG1hc2sgPSBCSVQoVFJBTlND T0RFUl9FRFApOwo+IC0JZW51bSB0cmFuc2NvZGVyIGNwdV90cmFuc2NvZGVyOwo+IC0KPiAtCWlm IChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDgpCj4gLQkJbWFzayB8PSBCSVQoVFJBTlNDT0RFUl9B KSB8Cj4gLQkJCUJJVChUUkFOU0NPREVSX0IpIHwKPiAtCQkJQklUKFRSQU5TQ09ERVJfQyk7Cj4g LQo+IC0JZm9yX2VhY2hfY3B1X3RyYW5zY29kZXJfbWFza2VkKGRldl9wcml2LCBjcHVfdHJhbnNj b2RlciwgbWFzaykgewo+IC0JCWlmIChlZHBfcHNyX2lpciAmIEVEUF9QU1JfRVJST1IoY3B1X3Ry YW5zY29kZXIpKQo+IC0JCQlEUk1fREVCVUdfS01TKCJUcmFuc2NvZGVyICVzIFBTUiBlcnJvclxu IiwKPiAtCQkJCSAgICAgIHRyYW5zY29kZXJfbmFtZShjcHVfdHJhbnNjb2RlcikpOwo+IC0KPiAt CQlpZiAoZWRwX3Bzcl9paXIgJiBFRFBfUFNSX1BSRV9FTlRSWShjcHVfdHJhbnNjb2RlcikpIHsK PiAtCQkJRFJNX0RFQlVHX0tNUygiVHJhbnNjb2RlciAlcyBQU1IgcHJlcGFyZSBlbnRyeSBpbiAy IHZibGFua3NcbiIsCj4gLQkJCQkgICAgICB0cmFuc2NvZGVyX25hbWUoY3B1X3RyYW5zY29kZXIp KTsKPiAtCQkJZWRwX3Bzcl9pbXIgfD0gRURQX1BTUl9QUkVfRU5UUlkoY3B1X3RyYW5zY29kZXIp Owo+IC0JCX0KPiAtCj4gLQkJaWYgKGVkcF9wc3JfaWlyICYgRURQX1BTUl9QT1NUX0VYSVQoY3B1 X3RyYW5zY29kZXIpKSB7Cj4gLQkJCURSTV9ERUJVR19LTVMoIlRyYW5zY29kZXIgJXMgUFNSIGV4 aXQgY29tcGxldGVkXG4iLAo+IC0JCQkJICAgICAgdHJhbnNjb2Rlcl9uYW1lKGNwdV90cmFuc2Nv ZGVyKSk7Cj4gLQkJCWVkcF9wc3JfaW1yICY9IH5FRFBfUFNSX1BSRV9FTlRSWShjcHVfdHJhbnNj b2Rlcik7Cj4gLQkJfQo+IC0JfQo+IC0KPiAtCUk5MTVfV1JJVEUoRURQX1BTUl9JTVIsIGVkcF9w c3JfaW1yKTsKPiAtCUk5MTVfV1JJVEUoRURQX1BTUl9JSVIsIGVkcF9wc3JfaWlyKTsKPiAtfQo+ IC0KPiAgc3RhdGljIHZvaWQgaXZiX2Rpc3BsYXlfaXJxX2hhbmRsZXIoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCQkJICAgIHUzMiBkZV9paXIpCj4gIHsKPiBAQCAtMjQz Nyw4ICsyNDAzLDEyIEBAIHN0YXRpYyB2b2lkIGl2Yl9kaXNwbGF5X2lycV9oYW5kbGVyKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCWlmIChkZV9paXIgJiBERV9FUlJfSU5U X0lWQikKPiAgCQlpdmJfZXJyX2ludF9oYW5kbGVyKGRldl9wcml2KTsKPiAgCj4gLQlpZiAoZGVf aWlyICYgREVfRURQX1BTUl9JTlRfSFNXKQo+IC0JCWhzd19lZHBfcHNyX2lycV9oYW5kbGVyKGRl dl9wcml2KTsKPiArCWlmIChkZV9paXIgJiBERV9FRFBfUFNSX0lOVF9IU1cpIHsKPiArCQl1MzIg cHNyX2lpciA9IEk5MTVfUkVBRChFRFBfUFNSX0lJUik7Cj4gKwo+ICsJCWludGVsX3Bzcl9pcnFf aGFuZGxlcihkZXZfcHJpdiwgcHNyX2lpcik7Cj4gKwkJSTkxNV9XUklURShFRFBfUFNSX0lJUiwg cHNyX2lpcik7Cj4gKwl9Cj4gIAo+ICAJaWYgKGRlX2lpciAmIERFX0FVWF9DSEFOTkVMX0FfSVZC KQo+ICAJCWRwX2F1eF9pcnFfaGFuZGxlcihkZXZfcHJpdik7Cj4gQEAgLTI1ODAsNyArMjU1MCwx MCBAQCBnZW44X2RlX2lycV9oYW5kbGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwgdTMyIG1hc3Rlcl9jdGwpCj4gIAkJCX0KPiAgCj4gIAkJCWlmIChpaXIgJiBHRU44X0RFX0VE UF9QU1IpIHsKPiAtCQkJCWhzd19lZHBfcHNyX2lycV9oYW5kbGVyKGRldl9wcml2KTsKPiArCQkJ CXUzMiBwc3JfaWlyID0gSTkxNV9SRUFEKEVEUF9QU1JfSUlSKTsKPiArCj4gKwkJCQlpbnRlbF9w c3JfaXJxX2hhbmRsZXIoZGV2X3ByaXYsIHBzcl9paXIpOwo+ICsJCQkJSTkxNV9XUklURShFRFBf UFNSX0lJUiwgcHNyX2lpcik7Cj4gIAkJCQlmb3VuZCA9IHRydWU7Cj4gIAkJCX0KPiAgCj4gQEAg LTM3MjksNyArMzcwMiw3IEBAIHN0YXRpYyBpbnQgaXJvbmxha2VfaXJxX3Bvc3RpbnN0YWxsKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAo+ICAJaWYgKElTX0hBU1dFTEwoZGV2X3ByaXYpKSB7 Cj4gIAkJZ2VuM19hc3NlcnRfaWlyX2lzX3plcm8oZGV2X3ByaXYsIEVEUF9QU1JfSUlSKTsKPiAt CQlJOTE1X1dSSVRFKEVEUF9QU1JfSU1SLCAwKTsKPiArCQlJOTE1X1dSSVRFKEVEUF9QU1JfSU1S LCB+RURQX1BTUl9FUlJPUihUUkFOU0NPREVSX0VEUCkpOwo+ICAJCWRpc3BsYXlfbWFzayB8PSBE RV9FRFBfUFNSX0lOVF9IU1c7Cj4gIAl9Cj4gIAo+IEBAIC0zODQ1LDYgKzM4MTgsNyBAQCBzdGF0 aWMgdm9pZCBnZW44X2RlX2lycV9wb3N0aW5zdGFsbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpCj4gIAl1MzIgZGVfcG9ydF9lbmFibGVzOwo+ICAJdTMyIGRlX21pc2NfbWFza2Vk ID0gR0VOOF9ERV9NSVNDX0dTRSB8IEdFTjhfREVfRURQX1BTUjsKPiAgCWVudW0gcGlwZSBwaXBl Owo+ICsJdTMyIHBzcl9tYXNrZWQ7Cj4gIAo+ICAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0g OSkgewo+ICAJCWRlX3BpcGVfbWFza2VkIHw9IEdFTjlfREVfUElQRV9JUlFfRkFVTFRfRVJST1JT Owo+IEBAIC0zODY5LDcgKzM4NDMsMTAgQEAgc3RhdGljIHZvaWQgZ2VuOF9kZV9pcnFfcG9zdGlu c3RhbGwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJCWRlX3BvcnRfZW5h YmxlcyB8PSBHRU44X1BPUlRfRFBfQV9IT1RQTFVHOwo+ICAKPiAgCWdlbjNfYXNzZXJ0X2lpcl9p c196ZXJvKGRldl9wcml2LCBFRFBfUFNSX0lJUik7Cj4gLQlJOTE1X1dSSVRFKEVEUF9QU1JfSU1S LCAwKTsKPiArCXBzcl9tYXNrZWQgPSBFRFBfUFNSX0VSUk9SKFRSQU5TQ09ERVJfRURQKSB8Cj4g KwkJICAgICBFRFBfUFNSX0VSUk9SKFRSQU5TQ09ERVJfQSkgfCBFRFBfUFNSX0VSUk9SKFRSQU5T Q09ERVJfQikgfAo+ICsJCSAgICAgRURQX1BTUl9FUlJPUihUUkFOU0NPREVSX0MpOwo+ICsJSTkx NV9XUklURShFRFBfUFNSX0lNUiwgfnBzcl9tYXNrZWQpOwo+ICAKPiAgCWZvcl9lYWNoX3BpcGUo ZGV2X3ByaXYsIHBpcGUpIHsKPiAgCQlkZXZfcHJpdi0+ZGVfaXJxX21hc2tbcGlwZV0gPSB+ZGVf cGlwZV9tYXNrZWQ7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Ry di5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiBpbmRleCBhMjE1YWE3OGIw YmUuLjhiZTc1Y2M1YmYyNCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gQEAgLTE4 ODcsNiArMTg4Nyw4IEBAIHZvaWQgaW50ZWxfcHNyX3NpbmdsZV9mcmFtZV91cGRhdGUoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCQkJICAgdW5zaWduZWQgZnJvbnRidWZm ZXJfYml0cyk7Cj4gIHZvaWQgaW50ZWxfcHNyX2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9k cCAqaW50ZWxfZHAsCj4gIAkJCSAgICAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0 YXRlKTsKPiArdm9pZCBpbnRlbF9wc3JfZGVidWdfY29udHJvbChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsIGJvb2wgZW5hYmxlKTsKPiArdm9pZCBpbnRlbF9wc3JfaXJxX2hhbmRs ZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgcHNyX2lpcik7Cj4gIAo+ ICAvKiBpbnRlbF9ydW50aW1lX3BtLmMgKi8KPiAgaW50IGludGVsX3Bvd2VyX2RvbWFpbnNfaW5p dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfcHNyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wc3IuYwo+ IGluZGV4IGI4ZTA4M2UxMDAyOS4uZmRjNWUxYmYxOThhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3Bzci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfcHNyLmMKPiBAQCAtOTMsNiArOTMsNjAgQEAgc3RhdGljIHZvaWQgcHNyX2F1eF9pb19wb3dl cl9wdXQoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiAgCWludGVsX2Rpc3BsYXlfcG93ZXJf cHV0KGRldl9wcml2LCBwc3JfYXV4X2RvbWFpbihpbnRlbF9kcCkpOwo+ICB9Cj4gIAo+ICt2b2lk IGludGVsX3Bzcl9kZWJ1Z19jb250cm9sKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwgYm9vbCBlbmFibGUpCj4gK3sKPiArCXUzMiBtYXNrOwo+ICsKPiArCS8qIE5vIFBTUiBpbnRl cnJ1cHRzIG9uIFZMVi9DSFYgKi8KPiArCWlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSB8fCBJ U19DSEVSUllWSUVXKGRldl9wcml2KSkKPiArCQlyZXR1cm47Cj4gKwo+ICsJbWFzayA9IEVEUF9Q U1JfUE9TVF9FWElUKFRSQU5TQ09ERVJfRURQKSB8Cj4gKwkgICAgICAgRURQX1BTUl9QUkVfRU5U UlkoVFJBTlNDT0RFUl9FRFApOwo+ICsKPiArCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDgp Cj4gKwkJbWFzayB8PSBFRFBfUFNSX1BPU1RfRVhJVChUUkFOU0NPREVSX0EpIHwKPiArCQkJRURQ X1BTUl9QUkVfRU5UUlkoVFJBTlNDT0RFUl9BKSB8Cj4gKwkJCUVEUF9QU1JfUE9TVF9FWElUKFRS QU5TQ09ERVJfQikgfAo+ICsJCQlFRFBfUFNSX1BSRV9FTlRSWShUUkFOU0NPREVSX0IpIHwKPiAr CQkJRURQX1BTUl9QT1NUX0VYSVQoVFJBTlNDT0RFUl9DKSB8Cj4gKwkJCUVEUF9QU1JfUFJFX0VO VFJZKFRSQU5TQ09ERVJfQyk7Cj4gKwo+ICsJaWYgKGVuYWJsZSkgewo+ICsJCVdSSVRFX09OQ0Uo ZGV2X3ByaXYtPnBzci5kZWJ1ZywgdHJ1ZSk7Cj4gKwkJSTkxNV9XUklURShFRFBfUFNSX0lNUiwg STkxNV9SRUFEKEVEUF9QU1JfSU1SKSAmIH5tYXNrKTsKCldoeSBSTVc/Cgo+ICsJfSBlbHNlIHsK PiArCQlJOTE1X1dSSVRFKEVEUF9QU1JfSU1SLCBJOTE1X1JFQUQoRURQX1BTUl9JTVIpIHwgbWFz ayk7Cj4gKwkJV1JJVEVfT05DRShkZXZfcHJpdi0+cHNyLmRlYnVnLCBmYWxzZSk7Cj4gKwl9Cj4g K30KPiArCj4gK3ZvaWQgaW50ZWxfcHNyX2lycV9oYW5kbGVyKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwgdTMyIHBzcl9paXIpCj4gK3sKPiArCXUzMiB0cmFuc2NvZGVycyA9IEJJ VChUUkFOU0NPREVSX0VEUCk7Cj4gKwllbnVtIHRyYW5zY29kZXIgY3B1X3RyYW5zY29kZXI7Cj4g Kwo+ICsJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOCkKPiArCQl0cmFuc2NvZGVycyB8PSBC SVQoVFJBTlNDT0RFUl9BKSB8Cj4gKwkJCSAgICAgICBCSVQoVFJBTlNDT0RFUl9CKSB8Cj4gKwkJ CSAgICAgICBCSVQoVFJBTlNDT0RFUl9DKTsKPiArCj4gKwlmb3JfZWFjaF9jcHVfdHJhbnNjb2Rl cl9tYXNrZWQoZGV2X3ByaXYsIGNwdV90cmFuc2NvZGVyLCB0cmFuc2NvZGVycykgewo+ICsJCS8q IEZJWE1FOiBFeGl0IFBTUiB3aGVuIHRoaXMgaGFwcGVucy4gKi8KClNob3VsZCB0aGlzIG1heWJl IHNheSAicmV0cmFpbiB0aGUgbGluayBtYW51YWxseSB3aGVuIHRoaXMgaGFwcGVucyI/Cgo+ICsJ CWlmIChwc3JfaWlyICYgRURQX1BTUl9FUlJPUihjcHVfdHJhbnNjb2RlcikpCj4gKwkJCURSTV9E RUJVR19LTVMoIlt0cmFuc2NvZGVyICVzXSBQU1IgYXV4IGVycm9yXG4iLAo+ICsJCQkJICAgICAg dHJhbnNjb2Rlcl9uYW1lKGNwdV90cmFuc2NvZGVyKSk7Cj4gKwo+ICsJCWlmIChwc3JfaWlyICYg RURQX1BTUl9QUkVfRU5UUlkoY3B1X3RyYW5zY29kZXIpKQo+ICsJCQlEUk1fREVCVUdfS01TKCJb dHJhbnNjb2RlciAlc10gUFNSIGVudHJ5IGF0dGVtcHQgaW4gMiB2YmxhbmtzXG4iLAo+ICsJCQkJ ICAgICAgdHJhbnNjb2Rlcl9uYW1lKGNwdV90cmFuc2NvZGVyKSk7Cj4gKwo+ICsJCWlmIChwc3Jf aWlyICYgRURQX1BTUl9QT1NUX0VYSVQoY3B1X3RyYW5zY29kZXIpKQo+ICsJCQlEUk1fREVCVUdf S01TKCJbdHJhbnNjb2RlciAlc10gUFNSIGV4aXQgY29tcGxldGVkXG4iLAo+ICsJCQkJICAgICAg dHJhbnNjb2Rlcl9uYW1lKGNwdV90cmFuc2NvZGVyKSk7Cj4gKwl9Cj4gK30KPiArCj4gIHN0YXRp YyBib29sIGludGVsX2RwX2dldF95X2NvcmRfc3RhdHVzKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxf ZHApCj4gIHsKPiAgCXVpbnQ4X3QgcHNyX2NhcHMgPSAwOwo+IC0tIAo+IDIuMTQuMQoKLS0gClZp bGxlIFN5cmrDpGzDpApJbnRlbCBPVEMKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vaW50ZWwtZ2Z4Cg==