From mboxrd@z Thu Jan 1 00:00:00 1970 From: "C, Ramalingam" Subject: Re: [PATCH v10 07/40] drm/i915: hdcp1.4 CP_IRQ handling and SW encryption tracking Date: Thu, 31 Jan 2019 19:11:11 +0530 Message-ID: <419bb0d3-b685-cb6e-cdff-f9c2648f9446@intel.com> References: <1548917996-28081-1-git-send-email-ramalingam.c@intel.com> <1548917996-28081-8-git-send-email-ramalingam.c@intel.com> <20190131075654.GR3271@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190131075654.GR3271@phenom.ffwll.local> 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: Daniel Vetter Cc: daniel.vetter@ffwll.ch, intel-gfx@lists.freedesktop.org, tomas.winkler@intel.com, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org CgpPbiAxLzMxLzIwMTkgMToyNiBQTSwgRGFuaWVsIFZldHRlciB3cm90ZToKPiBPbiBUaHUsIEph biAzMSwgMjAxOSBhdCAxMjoyOToyM1BNICswNTMwLCBSYW1hbGluZ2FtIEMgd3JvdGU6Cj4+ICJo ZGNwX2VuY3J5cHRlZCIgZmxhZyBpcyBkZWZpbmVkIHRvIGRlbm90ZSB0aGUgSERDUDEuNCBlbmNy eXB0aW9uIHN0YXR1cy4KPj4gVGhpcyBTVyB0cmFja2luZyBpcyB1c2VkIHRvIGRldGVybWluZSB0 aGUgbmVlZCBmb3IgcmVhbCBoZGNwMS40IGRpc2FibGUKPj4gYW5kIGhkY3BfY2hlY2tfbGluayB1 cG9uIENQX0lSUS4KPj4KPj4gT24gQ1BfSVJRIHdlIGZpbHRlciB0aGUgQ1BfSVJRIHJlbGF0ZWQg dG8gdGhlIHN0YXRlcyBsaWtlIExpbmsgZmFpbHVyZQo+PiBhbmQgcmVhdXRoZW50aWNhdGlvbiBy ZXEgZXRjIGFuZCBoYW5kbGUgdGhlbSBpbiBoZGNwX2NoZWNrX2xpbmsuCj4+IENQX0lSUSBjb3Jy ZXNwb25kaW5nIHRvIHRoZSBhdXRoZW50aWNhdGlvbiBtc2cgYXZhaWxhYmlsaXR5IGFyZSBpZ25v cmVkLgo+Pgo+PiBXQVJOX09OIGlzIGFkZGVkIGZvciB0aGUgYWJydXB0IHN0b3Agb2YgSERDUCBl bmNyeXB0aW9uIG9mIGEgcG9ydC4KPj4KPj4gdjI6Cj4+ICAgIGJvb2wgaXMgdXNlZCBpbiBzdHJ1 Y3QgZm9yIHRoZSBjbGVhbmVyIGNvZGluZy4gW0RhbmllbF0KPj4gICAgY2hlY2tfbGluayB3b3Jr X2ZuIGlzIHNjaGVkdWxlZCBmb3IgY3BfaXJxIGhhbmRsaW5nIFtEYW5pZWxdCj4gSnVzdCBkb2lu ZyBhIGRlbHRhLXJldmlldywgdjIgYWRkcmVzc2VzIG15IGNvbW1lbnQgYWJvdXQgc3luY2hyb25p emF0aW9uCj4gd2l0aCB0aGUgd29ya2VyLCBzbwo+Cj4gUmV2aWV3ZWQtYnk6IERhbmllbCBWZXR0 ZXIgPGRhbmllbC52ZXR0ZXJAZmZ3bGwuY2g+ClRoYW5rIHlvdS4KCi0tUmFtCj4KPj4gU2lnbmVk LW9mZi1ieTogUmFtYWxpbmdhbSBDIDxyYW1hbGluZ2FtLmNAaW50ZWwuY29tPgo+PiAtLS0KPj4g ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jICAgfCAgMiArLQo+PiAgIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICB8ICA1ICsrLQo+PiAgIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2hkY3AuYyB8IDczICsrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0t LS0tLQo+PiAgIDMgZmlsZXMgY2hhbmdlZCwgNTggaW5zZXJ0aW9ucygrKSwgMjIgZGVsZXRpb25z KC0pCj4+Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+PiBpbmRleCA4MTVlZTY4ZWZhMmYuLjlj ZTA1ODE5ZmMxMSAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAu Ywo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4+IEBAIC00Nzc2LDcg KzQ3NzYsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kcF9jaGVja19zZXJ2aWNlX2lycShzdHJ1Y3Qg aW50ZWxfZHAgKmludGVsX2RwKQo+PiAgIAkJaW50ZWxfZHBfaGFuZGxlX3Rlc3RfcmVxdWVzdChp bnRlbF9kcCk7Cj4+ICAgCj4+ICAgCWlmICh2YWwgJiBEUF9DUF9JUlEpCj4+IC0JCWludGVsX2hk Y3BfY2hlY2tfbGluayhpbnRlbF9kcC0+YXR0YWNoZWRfY29ubmVjdG9yKTsKPj4gKwkJaW50ZWxf aGRjcF9oYW5kbGVfY3BfaXJxKGludGVsX2RwLT5hdHRhY2hlZF9jb25uZWN0b3IpOwo+PiAgIAo+ PiAgIAlpZiAodmFsICYgRFBfU0lOS19TUEVDSUZJQ19JUlEpCj4+ICAgCQlEUk1fREVCVUdfRFJJ VkVSKCJTaW5rIHNwZWNpZmljIGlycSB1bmhhbmRsZWRcbiIpOwo+PiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kcnYuaAo+PiBpbmRleCA2M2UwMDkyODZkNWYuLjEzYTQxZThjZjRmZiAxMDA2NDQKPj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPj4gQEAgLTM5OSw2ICszOTksOSBAQCBzdHJ1Y3QgaW50ZWxf aGRjcCB7Cj4+ICAgCXN0cnVjdCBkZWxheWVkX3dvcmsgY2hlY2tfd29yazsKPj4gICAJc3RydWN0 IHdvcmtfc3RydWN0IHByb3Bfd29yazsKPj4gICAKPj4gKwkvKiBIRENQMS40IEVuY3J5cHRpb24g c3RhdHVzICovCj4+ICsJYm9vbCBoZGNwX2VuY3J5cHRlZDsKPj4gKwo+PiAgIAkvKiBIRENQMi4y IHJlbGF0ZWQgZGVmaW5pdGlvbnMgKi8KPj4gICAJLyogRmxhZyBpbmRpY2F0ZXMgd2hldGhlciB0 aGlzIGNvbm5lY3RvciBzdXBwb3J0cyBIRENQMi4yIG9yIG5vdC4gKi8KPj4gICAJYm9vbCBoZGNw Ml9zdXBwb3J0ZWQ7Cj4+IEBAIC0yMDczLDEwICsyMDc2LDEwIEBAIGludCBpbnRlbF9oZGNwX2lu aXQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+PiAgIAkJICAgIGJvb2wgaGRj cDJfc3VwcG9ydGVkKTsKPj4gICBpbnQgaW50ZWxfaGRjcF9lbmFibGUoc3RydWN0IGludGVsX2Nv bm5lY3RvciAqY29ubmVjdG9yKTsKPj4gICBpbnQgaW50ZWxfaGRjcF9kaXNhYmxlKHN0cnVjdCBp bnRlbF9jb25uZWN0b3IgKmNvbm5lY3Rvcik7Cj4+IC1pbnQgaW50ZWxfaGRjcF9jaGVja19saW5r KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3Rvcik7Cj4+ICAgYm9vbCBpc19oZGNwX3N1 cHBvcnRlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGVudW0gcG9ydCBwb3J0 KTsKPj4gICBib29sIGludGVsX2hkY3BfY2FwYWJsZShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpj b25uZWN0b3IpOwo+PiAgIGJvb2wgaXNfaGRjcDJfc3VwcG9ydGVkKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdik7Cj4+ICt2b2lkIGludGVsX2hkY3BfaGFuZGxlX2NwX2lycShzdHJ1 Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpOwo+PiAgIAo+PiAgIC8qIGludGVsX3Bzci5j ICovCj4+ICAgI2RlZmluZSBDQU5fUFNSKGRldl9wcml2KSAoSEFTX1BTUihkZXZfcHJpdikgJiYg ZGV2X3ByaXYtPnBzci5zaW5rX3N1cHBvcnQpCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9oZGNwLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZGNwLmMK Pj4gaW5kZXggZTBiYjVmMzJiYTkwLi5jMWIwNTdmMTUwMWIgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkY3AuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9oZGNwLmMKPj4gQEAgLTc0LDYgKzc0LDE2IEBAIGJvb2wgaW50ZWxfaGRjcF9jYXBh YmxlKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPj4gICAJcmV0dXJuIGNhcGFi bGU7Cj4+ICAgfQo+PiAgIAo+PiArc3RhdGljIGlubGluZSBib29sIGludGVsX2hkY3BfaW5fdXNl KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPj4gK3sKPj4gKwlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNvbm5lY3Rvci0+YmFzZS5kZXYpOwo+ PiArCWVudW0gcG9ydCBwb3J0ID0gY29ubmVjdG9yLT5lbmNvZGVyLT5wb3J0Owo+PiArCXUzMiBy ZWc7Cj4+ICsKPj4gKwlyZWcgPSBJOTE1X1JFQUQoUE9SVF9IRENQX1NUQVRVUyhwb3J0KSk7Cj4+ ICsJcmV0dXJuIHJlZyAmIEhEQ1BfU1RBVFVTX0VOQzsKPj4gK30KPj4gKwo+PiAgIHN0YXRpYyBp bnQgaW50ZWxfaGRjcF9wb2xsX2tzdl9maWZvKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmlu dGVsX2RpZ19wb3J0LAo+PiAgIAkJCQkgICAgY29uc3Qgc3RydWN0IGludGVsX2hkY3Bfc2hpbSAq c2hpbSkKPj4gICB7Cj4+IEBAIC02NjgsNiArNjc4LDcgQEAgc3RhdGljIGludCBfaW50ZWxfaGRj cF9kaXNhYmxlKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPj4gICAJRFJNX0RF QlVHX0tNUygiWyVzOiVkXSBIRENQIGlzIGJlaW5nIGRpc2FibGVkLi4uXG4iLAo+PiAgIAkJICAg ICAgY29ubmVjdG9yLT5iYXNlLm5hbWUsIGNvbm5lY3Rvci0+YmFzZS5iYXNlLmlkKTsKPj4gICAK Pj4gKwloZGNwLT5oZGNwX2VuY3J5cHRlZCA9IGZhbHNlOwo+PiAgIAlJOTE1X1dSSVRFKFBPUlRf SERDUF9DT05GKHBvcnQpLCAwKTsKPj4gICAJaWYgKGludGVsX3dhaXRfZm9yX3JlZ2lzdGVyKGRl dl9wcml2LCBQT1JUX0hEQ1BfU1RBVFVTKHBvcnQpLCB+MCwgMCwKPj4gICAJCQkJICAgIEVOQ1JZ UFRfU1RBVFVTX0NIQU5HRV9USU1FT1VUX01TKSkgewo+PiBAQCAtNzEzLDggKzcyNCwxMCBAQCBz dGF0aWMgaW50IF9pbnRlbF9oZGNwX2VuYWJsZShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25u ZWN0b3IpCj4+ICAgCS8qIEluY2FzZSBvZiBhdXRoZW50aWNhdGlvbiBmYWlsdXJlcywgSERDUCBz cGVjIGV4cGVjdHMgcmVhdXRoLiAqLwo+PiAgIAlmb3IgKGkgPSAwOyBpIDwgdHJpZXM7IGkrKykg ewo+PiAgIAkJcmV0ID0gaW50ZWxfaGRjcF9hdXRoKGNvbm5fdG9fZGlnX3BvcnQoY29ubmVjdG9y KSwgaGRjcC0+c2hpbSk7Cj4+IC0JCWlmICghcmV0KQo+PiArCQlpZiAoIXJldCkgewo+PiArCQkJ aGRjcC0+aGRjcF9lbmNyeXB0ZWQgPSB0cnVlOwo+PiAgIAkJCXJldHVybiAwOwo+PiArCQl9Cj4+ ICAgCj4+ICAgCQlEUk1fREVCVUdfS01TKCJIRENQIEF1dGggZmFpbHVyZSAoJWQpXG4iLCByZXQp Owo+PiAgIAo+PiBAQCAtNzQxLDE2ICs3NTQsMTcgQEAgaW50IGludGVsX2hkY3BfY2hlY2tfbGlu ayhzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCj4+ICAgCWVudW0gcG9ydCBwb3J0 ID0gaW50ZWxfZGlnX3BvcnQtPmJhc2UucG9ydDsKPj4gICAJaW50IHJldCA9IDA7Cj4+ICAgCj4+ IC0JaWYgKCFoZGNwLT5zaGltKQo+PiAtCQlyZXR1cm4gLUVOT0VOVDsKPj4gLQo+PiAgIAltdXRl eF9sb2NrKCZoZGNwLT5tdXRleCk7Cj4+ICAgCj4+IC0JaWYgKGhkY3AtPnZhbHVlID09IERSTV9N T0RFX0NPTlRFTlRfUFJPVEVDVElPTl9VTkRFU0lSRUQpCj4+ICsJLyogQ2hlY2tfbGluayB2YWxp ZCBvbmx5IHdoZW4gSERDUDEuNCBpcyBlbmFibGVkICovCj4+ICsJaWYgKGhkY3AtPnZhbHVlICE9 IERSTV9NT0RFX0NPTlRFTlRfUFJPVEVDVElPTl9FTkFCTEVEIHx8Cj4+ICsJICAgICFoZGNwLT5o ZGNwX2VuY3J5cHRlZCkgewo+PiArCQlyZXQgPSAtRUlOVkFMOwo+PiAgIAkJZ290byBvdXQ7Cj4+ ICsJfQo+PiAgIAo+PiAtCWlmICghKEk5MTVfUkVBRChQT1JUX0hEQ1BfU1RBVFVTKHBvcnQpKSAm IEhEQ1BfU1RBVFVTX0VOQykpIHsKPj4gLQkJRFJNX0VSUk9SKCIlczolZCBIRENQIGNoZWNrIGZh aWxlZDogbGluayBpcyBub3QgZW5jcnlwdGVkLCV4XG4iLAo+PiArCWlmIChXQVJOX09OKCFpbnRl bF9oZGNwX2luX3VzZShjb25uZWN0b3IpKSkgewo+PiArCQlEUk1fRVJST1IoIiVzOiVkIEhEQ1Ag bGluayBzdG9wcGVkIGVuY3J5cHRpb24sJXhcbiIsCj4+ICAgCQkJICBjb25uZWN0b3ItPmJhc2Uu bmFtZSwgY29ubmVjdG9yLT5iYXNlLmJhc2UuaWQsCj4+ICAgCQkJICBJOTE1X1JFQUQoUE9SVF9I RENQX1NUQVRVUyhwb3J0KSkpOwo+PiAgIAkJcmV0ID0gLUVOWElPOwo+PiBAQCAtNzkxLDE4ICs4 MDUsNiBAQCBpbnQgaW50ZWxfaGRjcF9jaGVja19saW5rKHN0cnVjdCBpbnRlbF9jb25uZWN0b3Ig KmNvbm5lY3RvcikKPj4gICAJcmV0dXJuIHJldDsKPj4gICB9Cj4+ICAgCj4+IC1zdGF0aWMgdm9p ZCBpbnRlbF9oZGNwX2NoZWNrX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQo+PiAtewo+ PiAtCXN0cnVjdCBpbnRlbF9oZGNwICpoZGNwID0gY29udGFpbmVyX29mKHRvX2RlbGF5ZWRfd29y ayh3b3JrKSwKPj4gLQkJCQkJICAgICAgIHN0cnVjdCBpbnRlbF9oZGNwLAo+PiAtCQkJCQkgICAg ICAgY2hlY2tfd29yayk7Cj4+IC0Jc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yID0g aW50ZWxfaGRjcF90b19jb25uZWN0b3IoaGRjcCk7Cj4+IC0KPj4gLQlpZiAoIWludGVsX2hkY3Bf Y2hlY2tfbGluayhjb25uZWN0b3IpKQo+PiAtCQlzY2hlZHVsZV9kZWxheWVkX3dvcmsoJmhkY3At PmNoZWNrX3dvcmssCj4+IC0JCQkJICAgICAgRFJNX0hEQ1BfQ0hFQ0tfUEVSSU9EX01TKTsKPj4g LX0KPj4gLQo+PiAgIHN0YXRpYyB2b2lkIGludGVsX2hkY3BfcHJvcF93b3JrKHN0cnVjdCB3b3Jr X3N0cnVjdCAqd29yaykKPj4gICB7Cj4+ICAgCXN0cnVjdCBpbnRlbF9oZGNwICpoZGNwID0gY29u dGFpbmVyX29mKHdvcmssIHN0cnVjdCBpbnRlbF9oZGNwLAo+PiBAQCAtMTEyMCw2ICsxMTIyLDE4 IEBAIGludCBoZGNwMl9kZWF1dGhlbnRpY2F0ZV9wb3J0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3Ig KmNvbm5lY3RvcikKPj4gICAJcmV0dXJuIGhkY3AyX2Nsb3NlX21laV9zZXNzaW9uKGNvbm5lY3Rv cik7Cj4+ICAgfQo+PiAgIAo+PiArc3RhdGljIHZvaWQgaW50ZWxfaGRjcF9jaGVja193b3JrKHN0 cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKPj4gK3sKPj4gKwlzdHJ1Y3QgaW50ZWxfaGRjcCAqaGRj cCA9IGNvbnRhaW5lcl9vZih0b19kZWxheWVkX3dvcmsod29yayksCj4+ICsJCQkJCSAgICAgICBz dHJ1Y3QgaW50ZWxfaGRjcCwKPj4gKwkJCQkJICAgICAgIGNoZWNrX3dvcmspOwo+PiArCXN0cnVj dCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciA9IGludGVsX2hkY3BfdG9fY29ubmVjdG9yKGhk Y3ApOwo+PiArCj4+ICsJaWYgKCFpbnRlbF9oZGNwX2NoZWNrX2xpbmsoY29ubmVjdG9yKSkKPj4g KwkJc2NoZWR1bGVfZGVsYXllZF93b3JrKCZoZGNwLT5jaGVja193b3JrLAo+PiArCQkJCSAgICAg IERSTV9IRENQX0NIRUNLX1BFUklPRF9NUyk7Cj4+ICt9Cj4+ICsKPj4gICBzdGF0aWMgaW50IGk5 MTVfaGRjcF9jb21wb25lbnRfYmluZChzdHJ1Y3QgZGV2aWNlICppOTE1X2tkZXYsCj4+ICAgCQkJ CSAgICBzdHJ1Y3QgZGV2aWNlICptZWlfa2Rldiwgdm9pZCAqZGF0YSkKPj4gICB7Cj4+IEBAIC0x Mjg4LDcgKzEzMDIsOCBAQCBpbnQgaW50ZWxfaGRjcF9kaXNhYmxlKHN0cnVjdCBpbnRlbF9jb25u ZWN0b3IgKmNvbm5lY3RvcikKPj4gICAKPj4gICAJaWYgKGhkY3AtPnZhbHVlICE9IERSTV9NT0RF X0NPTlRFTlRfUFJPVEVDVElPTl9VTkRFU0lSRUQpIHsKPj4gICAJCWhkY3AtPnZhbHVlID0gRFJN X01PREVfQ09OVEVOVF9QUk9URUNUSU9OX1VOREVTSVJFRDsKPj4gLQkJcmV0ID0gX2ludGVsX2hk Y3BfZGlzYWJsZShjb25uZWN0b3IpOwo+PiArCQlpZiAoaGRjcC0+aGRjcF9lbmNyeXB0ZWQpCj4+ ICsJCQlyZXQgPSBfaW50ZWxfaGRjcF9kaXNhYmxlKGNvbm5lY3Rvcik7Cj4+ICAgCX0KPj4gICAK Pj4gICAJbXV0ZXhfdW5sb2NrKCZoZGNwLT5tdXRleCk7Cj4+IEBAIC0xMzI4LDMgKzEzNDMsMjEg QEAgdm9pZCBpbnRlbF9oZGNwX2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29u bmVjdG9yLAo+PiAgIAkJCQkJCSAgIG5ld19zdGF0ZS0+Y3J0Yyk7Cj4+ICAgCWNydGNfc3RhdGUt Pm1vZGVfY2hhbmdlZCA9IHRydWU7Cj4+ICAgfQo+PiArCj4+ICsvKiBIYW5kbGVzIHRoZSBDUF9J UlEgcmFpc2VkIGZyb20gdGhlIERQIEhEQ1Agc2luayAqLwo+PiArdm9pZCBpbnRlbF9oZGNwX2hh bmRsZV9jcF9pcnEoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+PiArewo+PiAr CXN0cnVjdCBpbnRlbF9oZGNwICpoZGNwID0gJmNvbm5lY3Rvci0+aGRjcDsKPj4gKwo+PiArCWlm ICghaGRjcC0+c2hpbSkKPj4gKwkJcmV0dXJuOwo+PiArCj4+ICsJLyoKPj4gKwkgKiBDUF9JUlEg Y291bGQgYmUgdHJpZ2dlcmVkIGR1ZSB0byAxLiBIRENQMi4yIGF1dGggbXNncyBhdmFpbGFiaWxp dHksCj4+ICsJICogMi4gbGluayBmYWlsdXJlIGFuZCAzLiByZXBlYXRlciByZWF1dGggcmVxdWVz dC4gQXQgcHJlc2VudCB3ZSBkb250Cj4+ICsJICogaGFuZGxlIHRoZSBDUF9JUlEgZm9yIHRoZSBI RENQMi4yIGF1dGggbXNnIGF2YWlsYWJpbGl0eSBmb3IgcmVhZC4KPj4gKwkgKiBUbyBoYW5kbGUg b3RoZXIgdHdvIGNhdXNlcyBmb3IgQ1BfSVJRIHdlIGhhdmUgdGhlIHdvcmtfZm4gd2hpY2ggaXMK Pj4gKwkgKiBzY2hlZHVsZWQgaGVyZS4KPj4gKwkgKi8KPj4gKwlzY2hlZHVsZV9kZWxheWVkX3dv cmsoJmhkY3AtPmNoZWNrX3dvcmssIDApOwo+PiArfQo+PiAtLSAKPj4gMi43LjQKPj4KCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWls aW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=