From mboxrd@z Thu Jan 1 00:00:00 1970 From: "C, Ramalingam" Subject: Re: [PATCH v8 06/35] drm/i915: Enable and Disable of HDCP2.2 Date: Fri, 7 Dec 2018 11:52:21 +0530 Message-ID: References: <1543315413-24302-1-git-send-email-ramalingam.c@intel.com> <1543315413-24302-7-git-send-email-ramalingam.c@intel.com> <20181206103042.GP21184@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: <20181206103042.GP21184@phenom.ffwll.local> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Daniel Vetter Cc: daniel.vetter@ffwll.ch, intel-gfx@lists.freedesktop.org, uma.shankar@intel.com, tomas.winkler@intel.com, dri-devel@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Ck9uIDEyLzYvMjAxOCA0OjAwIFBNLCBEYW5pZWwgVmV0dGVyIHdyb3RlOgo+IE9uIFR1ZSwgTm92 IDI3LCAyMDE4IGF0IDA0OjEzOjA0UE0gKzA1MzAsIFJhbWFsaW5nYW0gQyB3cm90ZToKPj4gQ29u c2lkZXJpbmcgdGhhdCBIRENQMi4yIGlzIG1vcmUgc2VjdXJlIHRoYW4gSERDUDEuNCwgV2hlbiBh IHNldHVwCj4+IHN1cHBvcnRzIEhEQ1AyLjIgYW5kIEhEQ1AxLjQsIEhEQ1AyLjIgd2lsbCBiZSBl bmFibGVkLgo+Pgo+PiBXaGVuIEhEQ1AyLjIgZW5hYmxpbmcgZmFpbHMgYW5kIEhEQ1AxLjQgaXMg c3VwcG9ydGVkLCBIRENQMS40IGlzCj4+IGVuYWJsZWQuCj4+Cj4+IFRoaXMgY2hhbmdlIGltcGxl bWVudHMgYSBzZXF1ZW5jZSBvZiBlbmFibGluZyBhbmQgZGlzYWJsaW5nIG9mCj4+IEhEQ1AyLjIg YXV0aGVudGljYXRpb24gYW5kIEhEQ1AyLjIgcG9ydCBlbmNyeXB0aW9uLgo+IFBhdGNoIHNlcmll cyBzdWdnZXN0aW9uIGZvciBuZXh0IHRpbWUgYXJvdW5kOiBGaXJzdCBidWlsZCBvdXQgdGhlIGhl bHBlcgo+IGZ1bmN0aW9ucywgdGhlbiB0aW1lIHRoZW0gaW50byB0aGUgYmlnIHBpY3R1cmUgbGlr ZSBoZXJlLiBQZXJzb25hbGx5IEkKPiB0aGluayB0aGF0IG1ha2VzIGl0IGVhc2llciB0byB1bmRl cnN0YW5kLCBidXQgaXQncyBraW5kYSBwZXJzb25hbCBjaG9pY2UuCgpUcmllZCB0aGF0IGFscmVh ZHkuIEJ1dCBiaXNlY3Rpbmcgd2lsbCBnaXZlIHdhcm5pbmdzIGFzICJkZWZpbmVkIGJ1dCAKdW51 c2VkIGZ1bmN0aW9ucyIKCkhlbmNlIG1vdmVkIHRvIHRoaXMgYXBwcm9hY2guCgo+IEkgZ3Vlc3Mg dGhpcyBoZXJlIHdvcmtzIHRvby4KPgo+PiB2MjoKPj4gICAgSW5jbHVkZWQgZmV3IG9wdGltaXph dGlvbiBzdWdnZXN0aW9ucyBbQ2hyaXMgV2lsc29uXQo+PiAgICBDb21taXQgbWVzc2FnZSBpcyB1 cGRhdGVkIGFzIHBlciB0aGUgcmViYXNlZCB2ZXJzaW9uLgo+PiAgICBpbnRlbF93YWl0X2Zvcl9y ZWdpc3RlciBpcyB1c2VkIGluc3RlYWQgb2Ygd2FpdF9mb3IuIFtDaHJpcyBXaWxzb25dCj4+IHYz Ogo+PiAgICBObyBjaGFuZ2VzLgo+PiB2NDoKPj4gICAgRXh0cmEgY29tbWVudCBhZGRlZCBhbmQg U3R5bGUgaXNzdWUgZml4ZWQgW1VtYV0KPj4gdjU6Cj4+ICAgIFJlYmFzZWQgYXMgcGFydCBvZiBw YXRjaCByZW9yZGVyaW5nLgo+PiAgICBIRENQMiBlbmNyeXB0aW9uIHN0YXR1cyBpcyB0cmFja2Vk Lgo+PiAgICBIVyBzdGF0ZSBjaGVjayBpcyBtb3ZlZCBpbnRvIFdBUk5fT04gW0RhbmllbF0KPj4g djY6Cj4+ICAgIFJlZGVmaW5lZCB0aGUgbWVpIHNlcnZpY2UgZnVuY3Rpb25zIGFzIHBlciBjb21w IHJlZGVzaWduLgo+PiAgICBNZXJnZWQgcGF0Y2hlcyByZWxhdGVkIHRvIGhkY3AyLjIgZW5hYmxp bmcgYW5kIGRpc2FibGluZyBbU2VhbiBQYXVsXS4KPj4gICAgUmVxdWlyZWQgc2hpbSBmdW5jdGlv bmFsaXR5IGlzIGRlZmluZWQgW1NlYW4gUGF1bF0KPj4gdjc6Cj4+ICAgIFJldHVybiB2YWx1ZXMg YXJlIGhhbmRsZXMgW1VtYV0KPj4gICAgUmVhbGlnbmVkIHRoZSBjb2RlLgo+PiAgICBDaGVjayBm b3IgY29tcF9tYXN0ZXIgaXMgcmVtb3ZlZC4KPj4gdjg6Cj4+ICAgIEhEQ1AyLjIgaXMgYXR0ZW1w dGVkIG9ubHkgaWYgbWVpIGludGVyZmFjZSBpcyB1cC4KPj4gICAgQWRqdXN0IHRvIHRoZSBuZXcg aW50ZXJmYWNlCj4+ICAgIEF2b2lkIGJvb2wgdXNhZ2UgaW4gc3RydWN0IFtUb21hc10KPj4KPj4g U2lnbmVkLW9mZi1ieTogUmFtYWxpbmdhbSBDIDxyYW1hbGluZ2FtLmNAaW50ZWwuY29tPgo+PiAt LS0KPj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgfCAgIDUgKwo+PiAgIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkY3AuYyB8IDIyMyArKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKy0tLQo+PiAgIDIgZmlsZXMgY2hhbmdlZCwgMjE0IGluc2VydGlvbnMo KyksIDE0IGRlbGV0aW9ucygtKQo+Pgo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+PiBpbmRl eCBiZGU4MmYzYWRhODUuLjNlOWYyMWQyMzQ0MiAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHJ2LmgKPj4gQEAgLTM4Myw2ICszODMsMTAgQEAgc3RydWN0IGludGVsX2hkY3Bfc2hpbSB7Cj4+ ICAgCj4+ICAgCS8qIERldGVjdHMgdGhlIEhEQ1AgcHJvdG9jb2woRFAvSERNSSkgcmVxdWlyZWQg b24gdGhlIHBvcnQgKi8KPj4gICAJZW51bSBtZWlfaGRjcF93aXJlZF9wcm90b2NvbCAoKmhkY3Bf cHJvdG9jb2wpKHZvaWQpOwo+PiArCj4+ICsJLyogRGV0ZWN0cyB3aGV0aGVyIFBhbmVsIGlzIEhE Q1AyLjIgY2FwYWJsZSAqLwo+PiArCWludCAoKmhkY3BfMl8yX2NhcGFibGUpKHN0cnVjdCBpbnRl bF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0LAo+PiArCQkJCWJvb2wgKmNhcGFibGUpOwo+ PiAgIH07Cj4+ICAgCj4+ICAgc3RydWN0IGludGVsX2hkY3Agewo+PiBAQCAtMzk2LDYgKzQwMCw3 IEBAIHN0cnVjdCBpbnRlbF9oZGNwIHsKPj4gICAJLyogSERDUDIuMiByZWxhdGVkIGRlZmluaXRp b25zICovCj4+ICAgCS8qIEZsYWcgaW5kaWNhdGVzIHdoZXRoZXIgdGhpcyBjb25uZWN0b3Igc3Vw cG9ydHMgSERDUDIuMiBvciBub3QuICovCj4+ICAgCXU4IGhkY3AyX3N1cHBvcnRlZDsKPj4gKwl1 OCBoZGNwMl9pbl91c2U7Cj4+ICAgCj4+ICAgCS8qCj4+ICAgCSAqIENvbnRlbnQgU3RyZWFtIFR5 cGUgZGVmaW5lZCBieSBjb250ZW50IG93bmVyLiBUWVBFMCgweDApIGNvbnRlbnQgY2FuCj4+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZGNwLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9oZGNwLmMKPj4gaW5kZXggNzYwNzgwZjExMDVjLi5jMWJkMWNjZDQ3 Y2QgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkY3AuYwo+PiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZGNwLmMKPj4gQEAgLTc5LDYgKzc5LDQz IEBAIGJvb2wgaW50ZWxfaGRjcF9jYXBhYmxlKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5l Y3RvcikKPj4gICAJcmV0dXJuIGNhcGFibGU7Cj4+ICAgfQo+PiAgIAo+PiArLyogQXQgcHJlc2Vu dCB3aGV0aGVyIG1laV9oZGNwIGNvbXBvbmVudCBpcyBiaW5kZWQgd2l0aCBpOTE1IG1hc3RlciBj b21wb25lbnQgKi8KPj4gK3N0YXRpYyBib29sIGludGVsX2hkY3AyX21laV9iaW5kZWQoc3RydWN0 IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+PiArewo+PiArCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY29ubmVjdG9yLT5iYXNlLmRldik7Cj4+ICsJc3Ry dWN0IGk5MTVfaGRjcF9jb21wb25lbnRfbWFzdGVyICpjb21wID0gZGV2X3ByaXYtPmhkY3BfY29t cDsKPj4gKwo+PiArCW11dGV4X2xvY2soJmNvbXAtPm11dGV4KTsKPj4gKwlpZiAoIWNvbXAtPm9w cyB8fCAhY29tcC0+ZGV2KSB7Cj4+ICsJCW11dGV4X3VubG9jaygmY29tcC0+bXV0ZXgpOwo+PiAr CQlyZXR1cm4gZmFsc2U7Cj4+ICsJfQo+PiArCW11dGV4X3VubG9jaygmY29tcC0+bXV0ZXgpOwo+ PiArCj4+ICsJcmV0dXJuIHRydWU7Cj4+ICt9Cj4+ICsKPj4gKy8qIElzIEhEQ1AyLjIgY2FwYWJs ZSBvbiBQbGF0Zm9ybSBhbmQgU2luayAqLwo+PiArc3RhdGljIGJvb2wgaW50ZWxfaGRjcDJfY2Fw YWJsZShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCj4+ICt7Cj4+ICsJc3RydWN0 IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQgPSBjb25uX3RvX2RpZ19wb3J0KGNv bm5lY3Rvcik7Cj4+ICsJc3RydWN0IGludGVsX2hkY3AgKmhkY3AgPSAmY29ubmVjdG9yLT5oZGNw Owo+PiArCWJvb2wgY2FwYWJsZSA9IGZhbHNlOwo+PiArCj4+ICsJLyogSTkxNSBzdXBwb3J0IGZv ciBIRENQMi4yICovCj4+ICsJaWYgKCFoZGNwLT5oZGNwMl9zdXBwb3J0ZWQpCj4+ICsJCXJldHVy biBmYWxzZTsKPj4gKwo+PiArCS8qIE1FSSBzZXJ2aWNlcyBmb3IgSERDUDIuMiAqLwo+PiArCWlm ICghaW50ZWxfaGRjcDJfbWVpX2JpbmRlZChjb25uZWN0b3IpKQo+PiArCQlyZXR1cm4gZmFsc2U7 Cj4gV2h5IGRvIHdlIHN0aWxsIG5lZWQgdGhpcyB3aXRoIGNvbXBvbmVudD8gRHJpdmVyIGxvYWQg c2hvdWxkIGJlIHN0YWxsZWQKPiBvdXQgdW50aWwgaXQncyBhbGwgdGhlcmUsIHRoYXQgd2FzIGtp bmRhIHRoZSBlbnRpcmUgcG9pbnQgb2YgY29tcG9uZW50LAo+IHNvIHdlIGRvbid0IGhhdmUgdG8g cmVjaGVjayBhbGwgdGhlIHRpbWUgd2hldGhlciBoZGNwMiBpcyBzdGlsbCB0aGVyZSBvcgo+IG5v dC4KCldlIGRpc2N1c3NlZCB0aGlzIGluIHByZXZpb3VzIHBhdGNoZXMuIExldHMgZGVjaWRlIHdo ZXRoZXIgdGhpcyBhcHByb2FjaCAKaXMgZ29vZCBlbm91Z2ggb3Igbm90LgoKLS1SYW0KCj4KPj4g Kwo+PiArCS8qIFNpbmsncyBjYXBhYmlsaXR5IGZvciBIRENQMi4yICovCj4+ICsJaGRjcC0+c2hp bS0+aGRjcF8yXzJfY2FwYWJsZShpbnRlbF9kaWdfcG9ydCwgJmNhcGFibGUpOwo+PiArCj4+ICsJ cmV0dXJuIGNhcGFibGU7Cj4+ICt9Cj4+ICsKPj4gICBzdGF0aWMgaW50IGludGVsX2hkY3BfcG9s bF9rc3ZfZmlmbyhzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCwKPj4g ICAJCQkJICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9oZGNwX3NoaW0gKnNoaW0pCj4+ICAgewo+PiBA QCAtMTExNCw4ICsxMTUxLDcgQEAgaW50IGhkY3AyX2F1dGhlbnRpY2F0ZV9wb3J0KHN0cnVjdCBp bnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPj4gICAJcmV0dXJuIHJldDsKPj4gICB9Cj4+ICAg Cj4+IC1zdGF0aWMgX19hdHRyaWJ1dGVfXygodW51c2VkKSkKPj4gLWludCBoZGNwMl9jbG9zZV9t ZWlfc2Vzc2lvbihzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCj4+ICtzdGF0aWMg aW50IGhkY3AyX2Nsb3NlX21laV9zZXNzaW9uKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5l Y3RvcikKPj4gICB7Cj4+ICAgCXN0cnVjdCBtZWlfaGRjcF9kYXRhICpkYXRhID0gJmNvbm5lY3Rv ci0+aGRjcC5tZWlfZGF0YTsKPj4gICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gdG9faTkxNShjb25uZWN0b3ItPmJhc2UuZGV2KTsKPj4gQEAgLTExMzcsMTIgKzExNzMsMTU3 IEBAIGludCBoZGNwMl9jbG9zZV9tZWlfc2Vzc2lvbihzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpj b25uZWN0b3IpCj4+ICAgCXJldHVybiByZXQ7Cj4+ICAgfQo+PiAgIAo+PiAtc3RhdGljIF9fYXR0 cmlidXRlX18oKHVudXNlZCkpCj4+IC1pbnQgaGRjcDJfZGVhdXRoZW50aWNhdGVfcG9ydChzdHJ1 Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCj4+ICtzdGF0aWMgaW50IGhkY3AyX2RlYXV0 aGVudGljYXRlX3BvcnQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+PiAgIHsK Pj4gICAJcmV0dXJuIGhkY3AyX2Nsb3NlX21laV9zZXNzaW9uKGNvbm5lY3Rvcik7Cj4+ICAgfQo+ PiAgIAo+PiArc3RhdGljIGludCBoZGNwMl9hdXRoZW50aWNhdGVfc2luayhzdHJ1Y3QgaW50ZWxf Y29ubmVjdG9yICpjb25uZWN0b3IpCj4+ICt7Cj4+ICsJRFJNX0VSUk9SKCJTaW5rIGF1dGhlbnRp Y2F0aW9uIGlzIGRvbmUgaW4gc3Vic2VxdWVudCBwYXRjaGVzXG4iKTsKPj4gKwo+PiArCXJldHVy biAtRUlOVkFMOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgaW50IGhkY3AyX2VuYWJsZV9lbmNyeXB0 aW9uKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPj4gK3sKPj4gKwlzdHJ1Y3Qg aW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCA9IGNvbm5fdG9fZGlnX3BvcnQoY29u bmVjdG9yKTsKPj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1 KGNvbm5lY3Rvci0+YmFzZS5kZXYpOwo+PiArCXN0cnVjdCBpbnRlbF9oZGNwICpoZGNwID0gJmNv bm5lY3Rvci0+aGRjcDsKPj4gKwllbnVtIHBvcnQgcG9ydCA9IGNvbm5lY3Rvci0+ZW5jb2Rlci0+ cG9ydDsKPj4gKwlpbnQgcmV0Owo+PiArCj4+ICsJV0FSTl9PTihJOTE1X1JFQUQoSERDUDJfU1RB VFVTX0RESShwb3J0KSkgJiBMSU5LX0VOQ1JZUFRJT05fU1RBVFVTKTsKPj4gKwo+PiArCWlmICho ZGNwLT5zaGltLT50b2dnbGVfc2lnbmFsbGluZykgewo+PiArCQlyZXQgPSBoZGNwLT5zaGltLT50 b2dnbGVfc2lnbmFsbGluZyhpbnRlbF9kaWdfcG9ydCwgdHJ1ZSk7Cj4+ICsJCWlmIChyZXQpIHsK Pj4gKwkJCURSTV9FUlJPUigiRmFpbGVkIHRvIGVuYWJsZSBIRENQIHNpZ25hbGxpbmcuICVkXG4i LAo+PiArCQkJCSAgcmV0KTsKPj4gKwkJCXJldHVybiByZXQ7Cj4+ICsJCX0KPj4gKwl9Cj4+ICsK Pj4gKwlpZiAoSTkxNV9SRUFEKEhEQ1AyX1NUQVRVU19EREkocG9ydCkpICYgTElOS19BVVRIX1NU QVRVUykgewo+PiArCQkvKiBMaW5rIGlzIEF1dGhlbnRpY2F0ZWQuIE5vdyBzZXQgZm9yIEVuY3J5 cHRpb24gKi8KPj4gKwkJSTkxNV9XUklURShIRENQMl9DVExfRERJKHBvcnQpLAo+PiArCQkJICAg STkxNV9SRUFEKEhEQ1AyX0NUTF9EREkocG9ydCkpIHwKPj4gKwkJCSAgIENUTF9MSU5LX0VOQ1JZ UFRJT05fUkVRKTsKPj4gKwl9Cj4+ICsKPj4gKwlyZXQgPSBpbnRlbF93YWl0X2Zvcl9yZWdpc3Rl cihkZXZfcHJpdiwgSERDUDJfU1RBVFVTX0RESShwb3J0KSwKPj4gKwkJCQkgICAgICBMSU5LX0VO Q1JZUFRJT05fU1RBVFVTLAo+PiArCQkJCSAgICAgIExJTktfRU5DUllQVElPTl9TVEFUVVMsCj4+ ICsJCQkJICAgICAgVElNRV9GT1JfRU5DUllQVF9TVEFUVVNfQ0hBTkdFKTsKPj4gKwo+PiArCXJl dHVybiByZXQ7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbnQgaGRjcDJfZGlzYWJsZV9lbmNyeXB0 aW9uKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPj4gK3sKPj4gKwlzdHJ1Y3Qg aW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCA9IGNvbm5fdG9fZGlnX3BvcnQoY29u bmVjdG9yKTsKPj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1 KGNvbm5lY3Rvci0+YmFzZS5kZXYpOwo+PiArCXN0cnVjdCBpbnRlbF9oZGNwICpoZGNwID0gJmNv bm5lY3Rvci0+aGRjcDsKPj4gKwllbnVtIHBvcnQgcG9ydCA9IGNvbm5lY3Rvci0+ZW5jb2Rlci0+ cG9ydDsKPj4gKwlpbnQgcmV0Owo+PiArCj4+ICsJV0FSTl9PTighKEk5MTVfUkVBRChIRENQMl9T VEFUVVNfRERJKHBvcnQpKSAmIExJTktfRU5DUllQVElPTl9TVEFUVVMpKTsKPj4gKwo+PiArCUk5 MTVfV1JJVEUoSERDUDJfQ1RMX0RESShwb3J0KSwKPj4gKwkJICAgSTkxNV9SRUFEKEhEQ1AyX0NU TF9EREkocG9ydCkpICYgfkNUTF9MSU5LX0VOQ1JZUFRJT05fUkVRKTsKPj4gKwo+PiArCXJldCA9 IGludGVsX3dhaXRfZm9yX3JlZ2lzdGVyKGRldl9wcml2LCBIRENQMl9TVEFUVVNfRERJKHBvcnQp LAo+PiArCQkJCSAgICAgIExJTktfRU5DUllQVElPTl9TVEFUVVMsIDB4MCwKPj4gKwkJCQkgICAg ICBUSU1FX0ZPUl9FTkNSWVBUX1NUQVRVU19DSEFOR0UpOwo+PiArCWlmIChyZXQgPT0gLUVUSU1F RE9VVCkKPj4gKwkJRFJNX0RFQlVHX0tNUygiRGlzYWJsZSBFbmNyeXB0aW9uIFRpbWVkb3V0Iik7 Cj4+ICsKPj4gKwlpZiAoaGRjcC0+c2hpbS0+dG9nZ2xlX3NpZ25hbGxpbmcpIHsKPj4gKwkJcmV0 ID0gaGRjcC0+c2hpbS0+dG9nZ2xlX3NpZ25hbGxpbmcoaW50ZWxfZGlnX3BvcnQsIGZhbHNlKTsK Pj4gKwkJaWYgKHJldCkgewo+PiArCQkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gZGlzYWJsZSBIRENQ IHNpZ25hbGxpbmcuICVkXG4iLAo+PiArCQkJCSAgcmV0KTsKPj4gKwkJCXJldHVybiByZXQ7Cj4+ ICsJCX0KPj4gKwl9Cj4+ICsKPj4gKwlyZXR1cm4gcmV0Owo+PiArfQo+PiArCj4+ICtzdGF0aWMg aW50IGhkY3AyX2F1dGhlbnRpY2F0ZV9hbmRfZW5jcnlwdChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9y ICpjb25uZWN0b3IpCj4+ICt7Cj4+ICsJaW50IHJldCwgaSwgdHJpZXMgPSAzOwo+PiArCj4+ICsJ Zm9yIChpID0gMDsgaSA8IHRyaWVzOyBpKyspIHsKPj4gKwkJcmV0ID0gaGRjcDJfYXV0aGVudGlj YXRlX3NpbmsoY29ubmVjdG9yKTsKPj4gKwkJaWYgKCFyZXQpCj4+ICsJCQlicmVhazsKPj4gKwo+ PiArCQkvKiBDbGVhcmluZyB0aGUgbWVpIGhkY3Agc2Vzc2lvbiAqLwo+PiArCQlEUk1fREVCVUdf S01TKCJIRENQMi4yIEF1dGggJWQgb2YgJWQgRmFpbGVkLiglZClcbiIsCj4+ICsJCQkgICAgICBp ICsgMSwgdHJpZXMsIHJldCk7Cj4+ICsJCWlmIChoZGNwMl9kZWF1dGhlbnRpY2F0ZV9wb3J0KGNv bm5lY3RvcikgPCAwKQo+PiArCQkJRFJNX0RFQlVHX0tNUygiUG9ydCBkZWF1dGggZmFpbGVkLlxu Iik7Cj4+ICsJfQo+PiArCj4+ICsJaWYgKGkgIT0gdHJpZXMpIHsKPj4gKwkJLyoKPj4gKwkJICog RW5zdXJpbmcgdGhlIHJlcXVpcmVkIDIwMG1TZWMgbWluIHRpbWUgaW50ZXJ2YWwgYmV0d2Vlbgo+ PiArCQkgKiBTZXNzaW9uIEtleSBFeGNoYW5nZSBhbmQgZW5jcnlwdGlvbi4KPj4gKwkJICovCj4+ ICsJCW1zbGVlcChIRENQXzJfMl9ERUxBWV9CRUZPUkVfRU5DUllQVElPTl9FTik7Cj4+ICsJCXJl dCA9IGhkY3AyX2VuYWJsZV9lbmNyeXB0aW9uKGNvbm5lY3Rvcik7Cj4+ICsJCWlmIChyZXQgPCAw KSB7Cj4+ICsJCQlEUk1fREVCVUdfS01TKCJFbmNyeXB0aW9uIEVuYWJsZSBGYWlsZWQuKCVkKVxu IiwgcmV0KTsKPj4gKwkJCWlmIChoZGNwMl9kZWF1dGhlbnRpY2F0ZV9wb3J0KGNvbm5lY3Rvcikg PCAwKQo+PiArCQkJCURSTV9ERUJVR19LTVMoIlBvcnQgZGVhdXRoIGZhaWxlZC5cbiIpOwo+PiAr CQl9Cj4+ICsJfQo+PiArCj4+ICsJcmV0dXJuIHJldDsKPj4gK30KPj4gKwo+PiArc3RhdGljIGlu dCBfaW50ZWxfaGRjcDJfZW5hYmxlKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikK Pj4gK3sKPj4gKwlzdHJ1Y3QgaW50ZWxfaGRjcCAqaGRjcCA9ICZjb25uZWN0b3ItPmhkY3A7Cj4+ ICsJaW50IHJldDsKPj4gKwo+PiArCURSTV9ERUJVR19LTVMoIlslczolZF0gSERDUDIuMiBpcyBi ZWluZyBlbmFibGVkLiBUeXBlOiAlZFxuIiwKPj4gKwkJICAgICAgY29ubmVjdG9yLT5iYXNlLm5h bWUsIGNvbm5lY3Rvci0+YmFzZS5iYXNlLmlkLAo+PiArCQkgICAgICBoZGNwLT5jb250ZW50X3R5 cGUpOwo+PiArCj4+ICsJcmV0ID0gaGRjcDJfYXV0aGVudGljYXRlX2FuZF9lbmNyeXB0KGNvbm5l Y3Rvcik7Cj4+ICsJaWYgKHJldCkgewo+PiArCQlEUk1fREVCVUdfS01TKCJIRENQMiBUeXBlJWQg IEVuYWJsaW5nIEZhaWxlZC4gKCVkKVxuIiwKPj4gKwkJCSAgICAgIGhkY3AtPmNvbnRlbnRfdHlw ZSwgcmV0KTsKPj4gKwkJcmV0dXJuIHJldDsKPj4gKwl9Cj4+ICsKPj4gKwlEUk1fREVCVUdfS01T KCJbJXM6JWRdIEhEQ1AyLjIgaXMgZW5hYmxlZC4gVHlwZSAlZFxuIiwKPj4gKwkJICAgICAgY29u bmVjdG9yLT5iYXNlLm5hbWUsIGNvbm5lY3Rvci0+YmFzZS5iYXNlLmlkLAo+PiArCQkgICAgICBo ZGNwLT5jb250ZW50X3R5cGUpOwo+PiArCj4+ICsJaGRjcC0+aGRjcDJfaW5fdXNlID0gdHJ1ZTsK Pj4gKwlyZXR1cm4gMDsKPj4gK30KPj4gKwo+PiArc3RhdGljIGludCBfaW50ZWxfaGRjcDJfZGlz YWJsZShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCj4+ICt7Cj4+ICsJaW50IHJl dDsKPj4gKwo+PiArCURSTV9ERUJVR19LTVMoIlslczolZF0gSERDUDIuMiBpcyBiZWluZyBEaXNh YmxlZFxuIiwKPj4gKwkJICAgICAgY29ubmVjdG9yLT5iYXNlLm5hbWUsIGNvbm5lY3Rvci0+YmFz ZS5iYXNlLmlkKTsKPj4gKwo+PiArCXJldCA9IGhkY3AyX2Rpc2FibGVfZW5jcnlwdGlvbihjb25u ZWN0b3IpOwo+PiArCj4+ICsJaWYgKGhkY3AyX2RlYXV0aGVudGljYXRlX3BvcnQoY29ubmVjdG9y KSA8IDApCj4+ICsJCURSTV9ERUJVR19LTVMoIlBvcnQgZGVhdXRoIGZhaWxlZC5cbiIpOwo+PiAr Cj4+ICsJY29ubmVjdG9yLT5oZGNwLmhkY3AyX2luX3VzZSA9IGZhbHNlOwo+PiArCj4+ICsJcmV0 dXJuIHJldDsKPj4gK30KPj4gKwo+PiAgIHN0YXRpYyBpbnQgaTkxNV9oZGNwX2NvbXBvbmVudF9t YXN0ZXJfYmluZChzdHJ1Y3QgZGV2aWNlICpkZXYpCj4+ICAgewo+PiAgIAlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBrZGV2X3RvX2k5MTUoZGV2KTsKPj4gQEAgLTEzNDIsMjIg KzE1MjMsMzMgQEAgdm9pZCBpbnRlbF9oZGNwX2V4aXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQo+PiAgIGludCBpbnRlbF9oZGNwX2VuYWJsZShzdHJ1Y3QgaW50ZWxfY29ubmVj dG9yICpjb25uZWN0b3IpCj4+ICAgewo+PiAgIAlzdHJ1Y3QgaW50ZWxfaGRjcCAqaGRjcCA9ICZj b25uZWN0b3ItPmhkY3A7Cj4+IC0JaW50IHJldDsKPj4gKwlpbnQgcmV0ID0gLUVJTlZBTDsKPj4g ICAKPj4gICAJaWYgKCFoZGNwLT5zaGltKQo+PiAgIAkJcmV0dXJuIC1FTk9FTlQ7Cj4+ICAgCj4+ ICAgCW11dGV4X2xvY2soJmhkY3AtPm11dGV4KTsKPj4gICAKPj4gLQlyZXQgPSBfaW50ZWxfaGRj cF9lbmFibGUoY29ubmVjdG9yKTsKPj4gLQlpZiAocmV0KQo+PiAtCQlnb3RvIG91dDsKPj4gKwkv Kgo+PiArCSAqIENvbnNpZGVyaW5nIHRoYXQgSERDUDIuMiBpcyBtb3JlIHNlY3VyZSB0aGFuIEhE Q1AxLjQsIElmIHRoZSBzZXR1cAo+PiArCSAqIGlzIGNhcGFibGUgb2YgSERDUDIuMiwgaXQgaXMg cHJlZmVycmVkIHRvIHVzZSBIRENQMi4yLgo+PiArCSAqLwo+PiArCWlmIChpbnRlbF9oZGNwMl9j YXBhYmxlKGNvbm5lY3RvcikpCj4+ICsJCXJldCA9IF9pbnRlbF9oZGNwMl9lbmFibGUoY29ubmVj dG9yKTsKPj4gKwo+PiArCS8qIFdoZW4gSERDUDIuMiBmYWlscywgSERDUDEuNCB3aWxsIGJlIGF0 dGVtcHRlZCAqLwo+PiArCWlmIChyZXQgJiYgaW50ZWxfaGRjcF9jYXBhYmxlKGNvbm5lY3Rvcikp IHsKPj4gKwkJcmV0ID0gX2ludGVsX2hkY3BfZW5hYmxlKGNvbm5lY3Rvcik7Cj4+ICsJCWlmICgh cmV0KQo+PiArCQkJc2NoZWR1bGVfZGVsYXllZF93b3JrKCZoZGNwLT5jaGVja193b3JrLAo+PiAr CQkJCQkgICAgICBEUk1fSERDUF9DSEVDS19QRVJJT0RfTVMpOwo+PiArCX0KPj4gKwo+PiArCWlm ICghcmV0KSB7Cj4+ICsJCWhkY3AtPnZhbHVlID0gRFJNX01PREVfQ09OVEVOVF9QUk9URUNUSU9O X0VOQUJMRUQ7Cj4+ICsJCXNjaGVkdWxlX3dvcmsoJmhkY3AtPnByb3Bfd29yayk7Cj4+ICsJfQo+ PiAgIAo+PiAtCWhkY3AtPnZhbHVlID0gRFJNX01PREVfQ09OVEVOVF9QUk9URUNUSU9OX0VOQUJM RUQ7Cj4+IC0Jc2NoZWR1bGVfd29yaygmaGRjcC0+cHJvcF93b3JrKTsKPj4gLQlzY2hlZHVsZV9k ZWxheWVkX3dvcmsoJmhkY3AtPmNoZWNrX3dvcmssCj4+IC0JCQkgICAgICBEUk1fSERDUF9DSEVD S19QRVJJT0RfTVMpOwo+PiAtb3V0Ogo+PiAgIAltdXRleF91bmxvY2soJmhkY3AtPm11dGV4KTsK Pj4gICAJcmV0dXJuIHJldDsKPj4gICB9Cj4+IEBAIC0xMzc0LDcgKzE1NjYsMTAgQEAgaW50IGlu dGVsX2hkY3BfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCj4+ICAg Cj4+ICAgCWlmIChoZGNwLT52YWx1ZSAhPSBEUk1fTU9ERV9DT05URU5UX1BST1RFQ1RJT05fVU5E RVNJUkVEKSB7Cj4+ICAgCQloZGNwLT52YWx1ZSA9IERSTV9NT0RFX0NPTlRFTlRfUFJPVEVDVElP Tl9VTkRFU0lSRUQ7Cj4+IC0JCXJldCA9IF9pbnRlbF9oZGNwX2Rpc2FibGUoY29ubmVjdG9yKTsK Pj4gKwkJaWYgKGhkY3AtPmhkY3AyX2luX3VzZSkKPj4gKwkJCXJldCA9IF9pbnRlbF9oZGNwMl9k aXNhYmxlKGNvbm5lY3Rvcik7Cj4+ICsJCWVsc2UKPj4gKwkJCXJldCA9IF9pbnRlbF9oZGNwX2Rp c2FibGUoY29ubmVjdG9yKTsKPiBMb29rcyByZWFzb25hYmxlLiBTbyBvbmUgdGhpbmcgd2UgY291 bGQgYmUgZG9pbmcgaXMgYWxyZWFkeSBpbnRlcm5hbGx5Cj4gaGF2ZSBhIERSTV9NT0RFX0NPTlRF TlRfUFJPVEVDVElPTl9FTkFCTEVEX1RZUEUxIGZvciBoZGNwMi5CdXQgdGhlIHVhcGkKPiB3b3Vs ZCBvbmx5IHJldHVybiBfRU5BQkxFRCB0byB1c2Vyc3BhY2UuIEJ1dCBmb3IgaW50ZXJuYWwgdHJh Y2tpbmcgdGhpcwo+IHdvdWxkIGF2b2lkIHRoZSBuZWVkIGZvciB0aGUgc2VwYXJhdGUgaGRjcDJf aW5fdXNlIHZhcmlhYmxlLgo+Cj4gUHJvYmFibHkgZ29vZCBjbGVhbnVwL3ByZXAgcGF0Y2ggZm9y IHRoZSB0eXBlMC8xIHVhcGkgZXh0ZW5zaW9uLCBvbmNlIHdlCj4gZ2V0IHRoZXJlLgo+Cj4gQXNp ZGUgZnJvbSB0aGUgY29tcG9uZW50IGludGVyZ3JhdGlvbiBxdWVzdGlvbiBzZWVtcyBhbGwgcmVh c29uYWJsZS4gQnV0IEkKPiBkaWRuJ3QgeWV0IHJldmlldyB0aGUgaGRjcDIgZmxvdywgd2lsbCBk byB0aGF0IG9uY2UgaXQncyBtb3JlIGNvbXBsZXRlIGluCj4gbGF0ZXIgcGF0Y2hlcy4KPiAtRGFu aWVsCj4KPj4gICAJfQo+PiAgIAo+PiAgIAltdXRleF91bmxvY2soJmhkY3AtPm11dGV4KTsKPj4g LS0gCj4+IDIuNy40Cj4+Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1k ZXZlbAo=