From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ramalingam C Subject: Re: [PATCH v4 30/41] drm/i915: Initialize HDCP2.2 and its MEI interface Date: Tue, 29 May 2018 14:57:56 +0530 Message-ID: <9e3fff8f-2a4d-b970-a7c0-1c17a52f3186@intel.com> References: <1526907240-17639-1-git-send-email-ramalingam.c@intel.com> <1526907240-17639-31-git-send-email-ramalingam.c@intel.com> <20180524080648.GB3438@phenom.ffwll.local> <20180529065337.GT3438@phenom.ffwll.local> <20180529084238.GH3438@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: <20180529084238.GH3438@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: intel-gfx@lists.freedesktop.org, alexander.usyskin@intel.com, dri-devel@lists.freedesktop.org, tomas.winkler@intel.com List-Id: dri-devel@lists.freedesktop.org CgpPbiBUdWVzZGF5IDI5IE1heSAyMDE4IDAyOjEyIFBNLCBEYW5pZWwgVmV0dGVyIHdyb3RlOgo+ IE9uIFR1ZSwgTWF5IDI5LCAyMDE4IGF0IDA4OjUzOjM3QU0gKzAyMDAsIERhbmllbCBWZXR0ZXIg d3JvdGU6Cj4+IE9uIEZyaSwgTWF5IDI1LCAyMDE4IGF0IDA0OjQyOjUyUE0gKzA1MzAsIFJhbWFs aW5nYW0gQyB3cm90ZToKPj4+Cj4+PiBPbiBUaHVyc2RheSAyNCBNYXkgMjAxOCAwMTozNiBQTSwg RGFuaWVsIFZldHRlciB3cm90ZToKPj4+PiBPbiBNb24sIE1heSAyMSwgMjAxOCBhdCAwNjoyMzo0 OVBNICswNTMwLCBSYW1hbGluZ2FtIEMgd3JvdGU6Cj4+Pj4+IEluaXRpYWxpemUgSERDUDIuMiBz dXBwb3J0LiBUaGlzIGluY2x1ZGVzIHRoZSBtZWkgaW50ZXJmYWNlCj4+Pj4+IGluaXRpYWxpemF0 aW9uIGFsb25nIHdpdGggcmVxdWlyZWQgbm90aWZpZXIgcmVnaXN0cmF0aW9uLgo+Pj4+Pgo+Pj4+ PiB2MjoKPj4+Pj4gICAgIG1laSBpbnRlcmZhY2UgaGFuZGxlIGlzIHByb3RlY3RlZCB3aXRoIG11 dGV4LiBbQ2hyaXMgV2lsc29uXQo+Pj4+PiB2MzoKPj4+Pj4gICAgIE5vdGlmaWVycyBhcmUgdXNl ZCBmb3IgdGhlIG1laSBpbnRlcmZhY2Ugc3RhdGUuCj4+Pj4+IHY0Ogo+Pj4+PiAgICAgUG9sbCBm b3IgbWVpIGNsaWVudCBkZXZpY2Ugc3RhdGUKPj4+Pj4gICAgIEVycm9yIG1zZyBmb3Igb3V0IG9m IG1lbSBbVW1hXQo+Pj4+PiAgICAgSW5saW5lIHJlcSBmb3IgaW5pdCBmdW5jdGlvbiByZW1vdmVk IFtVbWFdCj4+Pj4+Cj4+Pj4+IFNpZ25lZC1vZmYtYnk6IFJhbWFsaW5nYW0gQyA8cmFtYWxpbmdh bS5jQGludGVsLmNvbT4KPj4+Pj4gLS0tCj4+Pj4+ICAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2RwLmMgICB8ICAgMyArLQo+Pj4+PiAgICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k cnYuaCAgfCAgIDUgKy0KPj4+Pj4gICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRjcC5j IHwgMTE3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCj4+Pj4+ICAgIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkbWkuYyB8ICAgMiArLQo+Pj4+PiAgICA0IGZpbGVz IGNoYW5nZWQsIDEyMiBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQo+Pj4+Pgo+Pj4+PiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2RwLmMKPj4+Pj4gaW5kZXggNjJmODJjNDI5OGFjLi4yNzZlYjQ5MTEz ZTkgMTAwNjQ0Cj4+Pj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPj4+ Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+Pj4+PiBAQCAtNjM2OCw3 ICs2MzY4LDggQEAgaW50ZWxfZHBfaW5pdF9jb25uZWN0b3Ioc3RydWN0IGludGVsX2RpZ2l0YWxf cG9ydCAqaW50ZWxfZGlnX3BvcnQsCj4+Pj4+ICAgIAlpbnRlbF9kcF9hZGRfcHJvcGVydGllcyhp bnRlbF9kcCwgY29ubmVjdG9yKTsKPj4+Pj4gICAgCWlmIChpc19oZGNwX3N1cHBvcnRlZChkZXZf cHJpdiwgcG9ydCkgJiYgIWludGVsX2RwX2lzX2VkcChpbnRlbF9kcCkpIHsKPj4+Pj4gLQkJaW50 IHJldCA9IGludGVsX2hkY3BfaW5pdChpbnRlbF9jb25uZWN0b3IsICZpbnRlbF9kcF9oZGNwX3No aW0pOwo+Pj4+PiArCQlpbnQgcmV0ID0gaW50ZWxfaGRjcF9pbml0KGludGVsX2Nvbm5lY3Rvciwg JmludGVsX2RwX2hkY3Bfc2hpbSwKPj4+Pj4gKwkJCQkJICBmYWxzZSk7Cj4+Pj4+ICAgIAkJaWYg KHJldCkKPj4+Pj4gICAgCQkJRFJNX0RFQlVHX0tNUygiSERDUCBpbml0IGZhaWxlZCwgc2tpcHBp bmcuXG4iKTsKPj4+Pj4gICAgCX0KPj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPj4+Pj4g aW5kZXggYWM5NDNlYzczOTg3Li43YWFhYTUwZmMxOWYgMTAwNjQ0Cj4+Pj4+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4+Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rydi5oCj4+Pj4+IEBAIC00NDIsNyArNDQyLDcgQEAgc3RydWN0IGludGVsX2hk Y3Agewo+Pj4+PiAgICAJLyogbWVpIGludGVyZmFjZSByZWxhdGVkIGluZm9ybWF0aW9uICovCj4+ Pj4+ICAgIAlzdHJ1Y3QgbWVpX2NsX2RldmljZSAqY2xkZXY7Cj4+Pj4+ICAgIAlzdHJ1Y3QgbWVp X2hkY3BfZGF0YSBtZWlfZGF0YTsKPj4+Pj4gLQo+Pj4+PiArCXN0cnVjdCBub3RpZmllcl9ibG9j ayBtZWlfY2xkZXZfbmI7Cj4+Pj4+ICAgIAlzdHJ1Y3QgZGVsYXllZF93b3JrIGhkY3AyX2NoZWNr X3dvcms7Cj4+Pj4+ICAgIH07Cj4+Pj4+IEBAIC0xOTQwLDcgKzE5NDAsOCBAQCB2b2lkIGludGVs X2hkY3BfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4+Pj4+ ICAgIAkJCSAgICAgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKm9sZF9zdGF0ZSwKPj4+Pj4g ICAgCQkJICAgICBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqbmV3X3N0YXRlKTsKPj4+Pj4g ICAgaW50IGludGVsX2hkY3BfaW5pdChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3Is Cj4+Pj4+IC0JCSAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfaGRjcF9zaGltICpoZGNwX3NoaW0pOwo+ Pj4+PiArCQkgICAgY29uc3Qgc3RydWN0IGludGVsX2hkY3Bfc2hpbSAqaGRjcF9zaGltLAo+Pj4+ PiArCQkgICAgYm9vbCBoZGNwMl9zdXBwb3J0ZWQpOwo+Pj4+PiAgICBpbnQgaW50ZWxfaGRjcF9l bmFibGUoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKTsKPj4+Pj4gICAgaW50IGlu dGVsX2hkY3BfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpOwo+Pj4+ PiAgICBpbnQgaW50ZWxfaGRjcF9jaGVja19saW5rKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNv bm5lY3Rvcik7Cj4+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9o ZGNwLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZGNwLmMKPj4+Pj4gaW5kZXggZjNm OTM1MDQ2YzMxLi45OTQ4ZTRiNGUyMDMgMTAwNjQ0Cj4+Pj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2hkY3AuYwo+Pj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9oZGNwLmMKPj4+Pj4gQEAgLTExLDYgKzExLDcgQEAKPj4+Pj4gICAgI2luY2x1ZGUgPGxpbnV4 L2kyYy5oPgo+Pj4+PiAgICAjaW5jbHVkZSA8bGludXgvcmFuZG9tLmg+Cj4+Pj4+ICAgICNpbmNs dWRlIDxsaW51eC9tZWlfaGRjcC5oPgo+Pj4+PiArI2luY2x1ZGUgPGxpbnV4L25vdGlmaWVyLmg+ Cj4+Pj4+ICAgICNpbmNsdWRlICJpbnRlbF9kcnYuaCIKPj4+Pj4gICAgI2luY2x1ZGUgImk5MTVf cmVnLmgiCj4+Pj4+IEBAIC0yNSw2ICsyNiw3IEBAIHN0YXRpYyBpbnQgX2ludGVsX2hkY3AyX2Vu YWJsZShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpOwo+Pj4+PiAgICBzdGF0aWMg aW50IF9pbnRlbF9oZGNwMl9kaXNhYmxlKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3Rv cik7Cj4+Pj4+ICAgIHN0YXRpYyB2b2lkIGludGVsX2hkY3AyX2NoZWNrX3dvcmsoc3RydWN0IHdv cmtfc3RydWN0ICp3b3JrKTsKPj4+Pj4gICAgc3RhdGljIGludCBpbnRlbF9oZGNwMl9jaGVja19s aW5rKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3Rvcik7Cj4+Pj4+ICtzdGF0aWMgaW50 IGludGVsX2hkY3AyX2luaXQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKTsKPj4+ Pj4gICAgc3RhdGljIGludCBpbnRlbF9oZGNwX3BvbGxfa3N2X2ZpZm8oc3RydWN0IGludGVsX2Rp Z2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQsCj4+Pj4+ICAgIAkJCQkgICAgY29uc3Qgc3RydWN0 IGludGVsX2hkY3Bfc2hpbSAqc2hpbSkKPj4+Pj4gQEAgLTc2NiwxMSArNzY4LDE1IEBAIGJvb2wg aXNfaGRjcF9zdXBwb3J0ZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBlbnVt IHBvcnQgcG9ydCkKPj4+Pj4gICAgfQo+Pj4+PiAgICBpbnQgaW50ZWxfaGRjcF9pbml0KHN0cnVj dCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwKPj4+Pj4gLQkJICAgIGNvbnN0IHN0cnVjdCBp bnRlbF9oZGNwX3NoaW0gKmhkY3Bfc2hpbSkKPj4+Pj4gKwkJICAgIGNvbnN0IHN0cnVjdCBpbnRl bF9oZGNwX3NoaW0gKmhkY3Bfc2hpbSwKPj4+Pj4gKwkJICAgIGJvb2wgaGRjcDJfc3VwcG9ydGVk KQo+Pj4+PiAgICB7Cj4+Pj4+ICAgIAlzdHJ1Y3QgaW50ZWxfaGRjcCAqaGRjcCA9ICZjb25uZWN0 b3ItPmhkY3A7Cj4+Pj4+ICAgIAlpbnQgcmV0Owo+Pj4+PiArCWlmICghaGRjcF9zaGltKQo+Pj4+ PiArCQlyZXR1cm4gLUVJTlZBTDsKPj4+Pj4gKwo+Pj4+PiAgICAJcmV0ID0gZHJtX2Nvbm5lY3Rv cl9hdHRhY2hfY29udGVudF9wcm90ZWN0aW9uX3Byb3BlcnR5KAo+Pj4+PiAgICAJCQkmY29ubmVj dG9yLT5iYXNlKTsKPj4+Pj4gICAgCWlmIChyZXQpCj4+Pj4+IEBAIC03NzksNyArNzg1LDEyIEBA IGludCBpbnRlbF9oZGNwX2luaXQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ Pj4+PiAgICAJaGRjcC0+aGRjcF9zaGltID0gaGRjcF9zaGltOwo+Pj4+PiAgICAJbXV0ZXhfaW5p dCgmaGRjcC0+aGRjcF9tdXRleCk7Cj4+Pj4+ICAgIAlJTklUX0RFTEFZRURfV09SSygmaGRjcC0+ aGRjcF9jaGVja193b3JrLCBpbnRlbF9oZGNwX2NoZWNrX3dvcmspOwo+Pj4+PiArCUlOSVRfREVM QVlFRF9XT1JLKCZoZGNwLT5oZGNwMl9jaGVja193b3JrLCBpbnRlbF9oZGNwMl9jaGVja193b3Jr KTsKPj4+Pj4gICAgCUlOSVRfV09SSygmaGRjcC0+aGRjcF9wcm9wX3dvcmssIGludGVsX2hkY3Bf cHJvcF93b3JrKTsKPj4+Pj4gKwo+Pj4+PiArCWlmIChoZGNwMl9zdXBwb3J0ZWQpCj4+Pj4+ICsJ CWludGVsX2hkY3AyX2luaXQoY29ubmVjdG9yKTsKPj4+Pj4gKwo+Pj4+PiAgICAJcmV0dXJuIDA7 Cj4+Pj4+ICAgIH0KPj4+Pj4gQEAgLTE2MzcsMyArMTY0OCwxMDcgQEAgc3RhdGljIHZvaWQgaW50 ZWxfaGRjcDJfY2hlY2tfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCj4+Pj4+ICAgIAkJ c2NoZWR1bGVfZGVsYXllZF93b3JrKCZoZGNwLT5oZGNwMl9jaGVja193b3JrLAo+Pj4+PiAgICAJ CQkJICAgICAgRFJNX0hEQ1AyX0NIRUNLX1BFUklPRF9NUyk7Cj4+Pj4+ICAgIH0KPj4+Pj4gKwo+ Pj4+PiArc3RhdGljIGludCBpbml0aWFsaXplX21laV9oZGNwX2RhdGEoc3RydWN0IGludGVsX2Nv bm5lY3RvciAqY29ubmVjdG9yKQo+Pj4+PiArewo+Pj4+PiArCXN0cnVjdCBpbnRlbF9oZGNwICpo ZGNwID0gJmNvbm5lY3Rvci0+aGRjcDsKPj4+Pj4gKwlzdHJ1Y3QgbWVpX2hkY3BfZGF0YSAqZGF0 YSA9ICZoZGNwLT5tZWlfZGF0YTsKPj4+Pj4gKwllbnVtIHBvcnQgcG9ydDsKPj4+Pj4gKwo+Pj4+ PiArCWlmIChjb25uZWN0b3ItPmVuY29kZXIpIHsKPj4+Pj4gKwkJcG9ydCA9IGNvbm5lY3Rvci0+ ZW5jb2Rlci0+cG9ydDsKPj4+Pj4gKwkJZGF0YS0+cG9ydCA9IEdFVF9NRUlfRERJX0lOREVYKHBv cnQpOwo+Pj4+PiArCX0KPj4+Pj4gKwo+Pj4+PiArCWRhdGEtPnBvcnRfdHlwZSA9IElOVEVHUkFU RUQ7Cj4+Pj4+ICsJZGF0YS0+cHJvdG9jb2wgPSBoZGNwLT5oZGNwX3NoaW0tPmhkY3BfcHJvdG9j b2woKTsKPj4+Pj4gKwo+Pj4+PiArCWRhdGEtPmsgPSAxOwo+Pj4+PiArCWlmICghZGF0YS0+c3Ry ZWFtcykKPj4+Pj4gKwkJZGF0YS0+c3RyZWFtcyA9IGtjYWxsb2MoZGF0YS0+aywKPj4+Pj4gKwkJ CQkJc2l6ZW9mKHN0cnVjdCBoZGNwMl9zdHJlYW1pZF90eXBlKSwKPj4+Pj4gKwkJCQkJR0ZQX0tF Uk5FTCk7Cj4+Pj4+ICsJaWYgKCFkYXRhLT5zdHJlYW1zKSB7Cj4+Pj4+ICsJCURSTV9FUlJPUigi T3V0IG9mIE1lbW9yeVxuIik7Cj4+Pj4+ICsJCXJldHVybiAtRU5PTUVNOwo+Pj4+PiArCX0KPj4+ Pj4gKwo+Pj4+PiArCWRhdGEtPnN0cmVhbXNbMF0uc3RyZWFtX2lkID0gMDsKPj4+Pj4gKwlkYXRh LT5zdHJlYW1zWzBdLnN0cmVhbV90eXBlID0gaGRjcC0+Y29udGVudF90eXBlOwo+Pj4+IE9rIHRo ZXJlJ3MgMCBsb2NraW5nIGhlcmUuIElmIHRoZXJlJ3Mgbm8gbG9ja2luZyB0aGVuIG9mIGNvdXJz ZQo+Pj4+IENPTkZJR19QUk9WRV9MT0NLSU5HIHdpbGwgbm90IHNwb3QgYW55IGlzc3Vlcy4KPj4+ Pgo+Pj4+IEl0IGFsc28gbWVhbnMgeW91J3JlIGNvZGUgaXMgcmFjeSwgZS5nLiBpZiBtZWkgYW5k IGk5MTUgbG9hZCBhdCB0aGUgc2FtZQo+Pj4+IHRpbWUsIHRoaW5ncyBjb3VsZCBnZXQgY29ycnVw dGVkIGluIGludGVyZXN0aW5nIHdheXMuIFNhbWUgaG9sZHMgaWYgeW91Cj4+Pj4gaGF2ZSBvbmdv aW5nIGhkY3AyIG9wZXJhdGlvbnMgZ29pbmcgb24gaW4gdGhlIGludGVsX2hkY3AgY29kZSwgd2hp bGUgdGhlCj4+Pj4gbWVpIGRyaXZlciBpcyBiZWluZyB1bmxvYWRlZC4KPj4+IERhbmllbCwKPj4+ Cj4+PiBCb3RoIG9mIHRoZXNlIGNhc2VzIGFyZSBub3QgcG9zc2libGUgYXMgTUVJIHN5bWJvbHMg YXJlIHVzZWQgaW4gSTkxNSwKPj4+IFNvIEk5MTUgY2FuJ3QgYmUgbG9hZGVkIGJlZm9yZSBvciBp biBwYXJhbGxlbCB0byBNRUkgZHJpdmVycy4KPj4+IFNpbWlsYXJseSB3ZSBjYW4ndCB1bmxvYWQg dGhlIE1FSSBiZWZvcmUgSTkxNSBvciBpbiBwYXJhbGxlbC4gU28gSSBndWVzcyB3ZQo+Pj4gYXJl IG91dCBvZiBhYm92ZSByYWNlIG1lbnRpb25lZAo+PiBUaGF0J3Mgbm90IGhvdyBpdCB3b3JrcyB1 bmZvcnR1bmF0ZWx5LiBZb3UgY2FuIHVuYmluZCBkcml2ZXJzIHdoaWxlIHRoZQo+PiBtb2R1bGUg aXMgc3RpbGwgdGhlcmUuIEFuZCBzeW1ib2wgYXZhaWxhYmlsaXR5IGRvZXNuJ3QgZ3VhcmFudGVl IHlvdSB0aGF0Cj4+IHRoZSBkcml2ZXIgaXRzZWxmIGhhcyBsb2FkZWQgYWxyZWFkeS4gU2FtZSBo b2xkcyBmb3IgaTkxNS4KPj4KPj4gWWVzIHN5bWJvbCBhdmFpbGFiaWxpdHkgbm90IG1hdGNoaW5n IHVwIHdpdGggZHJpdmVyIHN0YXRlIGlzIG9uZSBvZiB0aGUKPj4gbmVhdGVzdCBwaXRmYWxscyBv ZiB0aGUgbGludXggZHJpdmVyIG1vZGVsLiBTeW1ib2wgYXZhaWxhYmlsaXR5IG9ubHkKPj4gbW9z dGx5IG1hdGNoZXMgZHJpdmVyIHN0YXRlLCBidXQgaXQgY2FuIGJlIGRpZmZlcmVudC4KPj4KPj4+ IE1FSSByZWxhdGVkIGRhdGEgaW4gaW50ZWxfY29ubmVjdG9yLT5oZGNwIGlzIHBlciBjb25uZWN0 b3IgYmFzaXMuIEFuZCBwZXIKPj4+IGNvbm5lY3RvciBkYXRhJ3MgYXJlIHByb3RlY3RlZCB3aXRo IG11dGV4IGluIGF1dGhlbnRpY2F0aW9uIHBhdGguCj4+Pgo+Pj4gSW4gTUVJIEhEQ1AgZHJpdmVy J3MgQVBJcyB0b28sIHRoZXJlIGlzIG5vIHNoYXJlZCB2YXJpYWJsZSBleGNlcHQgbWVpX2NsZGV2 Cj4+PiB0aGF0IGFsc28gbm90IG1vZGlmaWVkIGluIHRob3NlIG1laV9oZGNwIEFQSXMuCj4+PiBT byBJIGFtIG5vdCBzZWVpbmcgYW55IHJhY2UgY29uZGl0aW9ucyBhcyBzdWNoLiBTbyB0aGVyZSBp cyBubyBuZWVkIGZvciBhbnkKPj4+IGV4cGxpY2l0IGxvY2tpbmcgYmV0d2VlbiBJOTE1IGFuZCBN RUkuCj4+IFlvdXIgbm90aWZpZXIgY2FsbGJhY2sgbmVlZHMgc29tZSBsb2NrIHRvIHByb3RlY3Qg YWdhaW5zdCBpOTE1LXNpZGUKPj4gbW9kZXNldCBjYWxscywgaW4gY2FzZSB0aGUgbWVpIGRpc2Fw cGVhcnMgd2hpbGUgd2UgdHJ5IHRvIHVzZSB0aGVtLgo+Pgo+PiBJIHRoaW5rIGF0IGxlYXN0LCBJ IG5lZWQgdG8gbG9vayBhdCB0aGUgb3ZlcmFsbCBwaWN0dXJlIGZyb20geW91ciBnaXQgdHJlZQo+ PiBhZ2Fpbi4KPj4KPj4+PiBOb3RlIHRoYXQgeW91IGNhbiB1bmxvYWQgdGhlIGRyaXZlciB3aXRo b3V0IGhhdmluZyB0byB1bmxvYWQgdGhlIG1vZHVsZSwKPj4+PiB0aG9zZSAyIHRoaW5ncyBhcmVu J3QgY291cGxlZC4KPj4+IENhbiB5b3XCoCBwbGVhc2UgaGVscCBtZSB0byB1bmRlcnN0YW5kIG1v cmUgb24gdGhpcz8KPj4+IElmIHlvdSBhcmUgcmVmZXJyaW5nIHRvIG1laSBkZXZpY2UgcmVtb3Zh bCwgbm90aWZpY2F0aW9uIHdpbGwgYmUgc2VudCB0bwo+Pj4gSTkxNS4KPj4+IEV2ZW4gaWYgYSBo ZGNwIHNlcnZpY2UgaXMgcGxhY2VkIGZvciBhIG1laSBkZXZpY2UsIHRoYXQgaXMKPj4+IHVuYmlu ZGVkL2Rpc2FibGVkLCBtZWkgYnVzIHdpbGwgZ3JhY2VmdWxseSBkZWNsaW5lIHRoZSByZXF1ZXN0 Lgo+Pj4KPj4+IFNvIEkgZG9uJ3QgZXhwZWN0IGFueSBwb3NzaWJsZSBpc3N1ZXMuIEhlbHAgbWUg aWYgeW91IG90aGVyd2lzZS4KPj4+Cj4+Pj4gQW5vdGhlciByZWFzb24gZm9yIG5vdCB1c2luZyBu b3RpZmllcnMgaXMgdGhhdCBpdCdzIGFub3RoZXIgcmVpbnZlbnRlZAo+Pj4+IHdoZWVsIHRvIG1h a2UgbXVsdGktZHJpdmVyIHN0dWZmIHdvcmsuIFdlIGFscmVhZHkgaGF2ZSB0aGUgY29tcG9uZW50 Cj4+Pj4gZnJhbWV3b3JrIGZvciB0aGlzLCBhbmQgd2UncmUgYWxyZWFkeSB1c2luZyB0aGUgY29t cG9uZW50IGZyYW1ld29yayBmb3IKPj4+PiB0aGUgc25kLWhkYSB2cy4gaTkxNSBjb29yZGluYXRp b24uCj4+PiBJZiB3ZSBuZWVkIHRvIHdlIGNhbiBkbyB3aXRoIGNvbXBvbmVudC4gRXhwbG9yaW5n IHdoYXQgaXMgbmVlZGVkIGhlcmUuCj4+PiBBdCBGaXJzdCBnbGFuY2UgSTkxNSB3aWxsIGJlIGNv bXBvbmVudCBtYXN0ZXIgYW5kIG1laSB3aWxsIGJlIGNvbXBvbmVudAo+Pj4gY2xpZW50Lgo+PiBJ IHRoaW5rIHlvdSBjYW4gaGFuZC1yb2xsIGl0IHdpdGggbm90aWZpZXJzLCBqdXN0IG5lZWQgdG8g YmUgY2FyZWZ1bCB0aGF0Cj4+IHlvdSBkb24ndCBob2xkIGxvY2tzIHRvbyBtdWNoLiBBbmQgdGhh dCdzIGtpbmRhIHJlaW52ZW50aW5nIGNvbXBvbmVudAo+PiBmcmFtZXdvcmsgaW4gdGhhdCBjYXNl LiBFc3BlY2lhbGx5IHNpbmNlIHlvdSd2ZSB1c2VkIGRpcmVjdCBmdW5jdGlvbgo+PiBjYWxscywg bWFraW5nIG1laSBhIHN0YXRpYyBkZXBlbmRlbmN5IGFueXdheS4KPiBPayBJIGxvb2tlZCBhdCB0 aGUgb3ZlcmFsbCBwaWN0dXJlIHdpdGggdGhlIGdpdCB0cmVlIGFuZCBJIHRoaW5rOgo+IC0gWW91 IG5lZWQgbG9ja2luZywgYXQgbGVhc3QgZm9yIGhkY3AtPmNsZGV2LCBvciBzb21lIG90aGVyIG9y ZGVyaW5nCj4gICAgZ3VhcmFudGVlcyBhcm91bmQgYWNjZXNzaW5nIHRoYXQgcG9pbnRlci4KPgo+ IC0gR2l2ZW4gdGhhdCB5b3UgaGF2ZSBhIGxpbmstdGltZSBkZXBlbmRlbmN5IChieSB1c2luZyB0 aGUgZXhwb3J0ZWQKPiAgICBmdW5jdGlvbnMgZnJvbSBtZWlfaGRjcCBkaXJlY3RseSkgd2UgYWxy ZWFkeSBoYXZlIGEgc3Ryb25nIGRlcGVuZGVuY3ksCj4gICAgYW5kIHVzaW5nIHRoZSBjb21wb25l bnQgZnJhbWV3b3JrIG1ha2VzIHNlbnNlIEkgdGhpbmsuIFRoYXQgc2hvdWxkIGdpdmUKPiAgICB5 b3UgdGhlIHJlcXVpcmVkIG9yZGVyaW5nIGd1YXJhbnRlZXMgYXJvdW5kIGhkcGMtPmNsZGV2LgpE YW5pZWwsCgpPay4gSSBhbSBpbXBsZW1lbnRpbmcgdGhlIGNvbXBvbmVudHMgZm9yIGludGVyZmFj ZSBiZXR3ZWVuIEk5MTUobWFzdGVyKSAKYW5kIG1laV9oZGNwKGNsaWVudCkuCgpBbmQgTWVhbndo aWxlIEkgd291bGQgbGlrZSB0byByZXF1ZXN0IHlvdSB0byByZXZpZXcgb3RoZXIgY2hhbmdlcyB0 b28uCgpUaGFua3MsClJhbQo+Cj4gQ2hlZXJzLCBEYW5pZWwKPgo+PiAtRGFuaWVsCj4+Cj4+PiBU aGFua3MgYW5kIFJlZ2FyZHMsCj4+PiBSYW0KPj4+PiBTbyBoZXJlJ3MgbXkgcmVjb21tZW5kYXRp b24gZm9yIGdldHRpbmcgdGhpcyBzb3J0ZWQgb3V0Ogo+Pj4+Cj4+Pj4gLSBVc2UgdGhlIGNvbXBv bmVudCBmcmFtZXdvcmsgdG8gY29vcmRpbmF0ZSB0aGUgbG9hZGluZyBvZiBpOTE1IGFuZCB0aGUK Pj4+PiAgICAgbWVpX2hkY3AgZHJpdmVyLgo+Pj4+Cj4+Pj4gLSBCb251cyBwb2ludHMgZm9yIHVz aW5nIGRldmljZV9saW5rIHRvIHRlbGwgdGhlIGRyaXZlciBjb3JlIGFib3V0IHRoaXMsCj4+Pj4g ICAgIHdoaWNoIG9wdGltaXplcyB0aGUgbG9hZCBzZXF1ZW5jZSAodW5mb3J0dW5hdGVseSB3ZSBo YXZlbid0IGRvbmUgdGhhdAo+Pj4+ICAgICBmb3Igc25kLWhkYSB5ZXQsIGluc3RlYWQgaGF2ZSB0 byB3b3JrIGFyb3VuZCBvcmRlcmluZyBpc3N1ZXMgaW4gdGhlCj4+Pj4gICAgIHN1c3BlbmQvcmVz dW1lIGhhbmRsZXJzIGEgYml0KS4KPj4+Pgo+Pj4+IC0gRHJvcCBhbGwgdGhlIEVYUE9SVF9TWU1C T0wgYW5kIGhhcmQgbGlua3MgYmV0d2VlbiB0aGUgdHdvIGRyaXZlcnMuCj4+Pj4gICAgIEluc3Rl YWQgaGF2ZSBhIHZ0YWJsZSwgbGlrZSB3ZSdyZSB1c2luZyBmb3IgdGhlIGF1ZGlvIHNpZGUuCj4+ Pj4KPj4+PiAtIE1ha2Ugc3VyZSB0aGF0IGFueSBzaGFyZWQgc3RhdGUgaXMgYXBwcm9wcmlhdGVs eSBwcm90ZWN0ZWQgd2l0aCBhIG11dGV4Lgo+Pj4+ICAgICBTcHJpbmtsZSBsb3RzIG9mIGFzc2Vy dF9sb2NrX2hlbGQgb3ZlciB0aGUgY29kZSBiYXNlIHRvIG1ha2Ugc3VyZSB5b3UKPj4+PiAgICAg ZGlkbid0IG1pc3MgYW55dGhpbmcsIGFuZCB1c2UgQ09ORklHX1BST1ZFX0xPQ0tJTkcgdG8gbWFr ZSBzdXJlIHRoZXJlJ3MKPj4+PiAgICAgbm8gZGVhZGxvY2tzIGFuZCBvdmVyc2lnaHRzLgo+Pj4+ Cj4+Pj4gLSBFeHRlbmQgdGhlIGlndCBkcnZfbW9kdWxlX3JlbG9hZCB0ZXN0Y2FzZSB0byBtYWtl IHN1cmUgeW91J3JlIGV4ZXJjaXNpbmcKPj4+PiAgICAgdGhlIG5ldyBFUFJPQkVfREVGRVIgcG9p bnQgZnVsbHkgKHNob3VsZCBqdXN0IG5lZWQgYSBrZXJuZWwgY2hhbmdlIHRvCj4+Pj4gICAgIGFk ZCB0aGF0IGFzIGEgcG90ZW50aWFsIGxvYWQgZmFpbHVyZSBwYXRoKS4KPj4+Pgo+Pj4+IEkgdGhp bmsgd2l0aCB0aGF0IHdlIGhhdmUgYSBzb2xpZCBzb2x1dGlvbiBoZXJlIHdoaWNoIGlzIGFsaWdu ZWQgd2l0aCBob3cKPj4+PiB3ZSBoYW5kbGUgdGhpcyBpbiBvdGhlciBjYXNlcy4KPj4+Pgo+Pj4+ IFRoYW5rcywgRGFuaWVsCj4+Pj4KPj4+Pj4gKwo+Pj4+PiArCXJldHVybiAwOwo+Pj4+PiArfQo+ Pj4+PiArCj4+Pj4+ICtzdGF0aWMgdm9pZCBpbnRlbF9oZGNwMl9leGl0KHN0cnVjdCBpbnRlbF9j b25uZWN0b3IgKmNvbm5lY3RvcikKPj4+Pj4gK3sKPj4+Pj4gKwlpbnRlbF9oZGNwX2Rpc2FibGUo Y29ubmVjdG9yKTsKPj4+Pj4gKwlrZnJlZShjb25uZWN0b3ItPmhkY3AubWVpX2RhdGEuc3RyZWFt cyk7Cj4+Pj4+ICt9Cj4+Pj4+ICsKPj4+Pj4gK3N0YXRpYyBpbnQgbWVpX2NsZGV2X25vdGlmeShz dHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLCB1bnNpZ25lZCBsb25nIGV2ZW50LAo+Pj4+PiArCQkJ ICAgIHZvaWQgKmNsZGV2KQo+Pj4+PiArewo+Pj4+PiArCXN0cnVjdCBpbnRlbF9oZGNwICpoZGNw ID0gY29udGFpbmVyX29mKG5iLCBzdHJ1Y3QgaW50ZWxfaGRjcCwKPj4+Pj4gKwkJCQkJICAgICAg IG1laV9jbGRldl9uYik7Cj4+Pj4+ICsJc3RydWN0IGludGVsX2Nvbm5lY3RvciAqaW50ZWxfY29u bmVjdG9yID0gY29udGFpbmVyX29mKGhkY3AsCj4+Pj4+ICsJCQkJCQkJc3RydWN0IGludGVsX2Nv bm5lY3RvciwKPj4+Pj4gKwkJCQkJCQloZGNwKTsKPj4+Pj4gKwo+Pj4+PiArCURSTV9ERUJVR19L TVMoIlslczolZF0gTUVJX0hEQ1AgTm90aWZpY2F0aW9uLiBJbnRlcmZhY2U6ICVzXG4iLAo+Pj4+ PiArCQkgICAgICBpbnRlbF9jb25uZWN0b3ItPmJhc2UubmFtZSwgaW50ZWxfY29ubmVjdG9yLT5i YXNlLmJhc2UuaWQsCj4+Pj4+ICsJCSAgICAgIGNsZGV2ID8gIlVQIiA6ICJEb3duIik7Cj4+Pj4+ ICsKPj4+Pj4gKwlpZiAoZXZlbnQgPT0gTUVJX0NMREVWX0VOQUJMRUQpIHsKPj4+Pj4gKwkJaGRj cC0+Y2xkZXYgPSBjbGRldjsKPj4+Pj4gKwkJaW5pdGlhbGl6ZV9tZWlfaGRjcF9kYXRhKGludGVs X2Nvbm5lY3Rvcik7Cj4+Pj4+ICsJfSBlbHNlIHsKPj4+Pj4gKwkJaGRjcC0+Y2xkZXYgPSBOVUxM Owo+Pj4+PiArCQlpbnRlbF9oZGNwMl9leGl0KGludGVsX2Nvbm5lY3Rvcik7Cj4+Pj4+ICsJfQo+ Pj4+PiArCj4+Pj4+ICsJcmV0dXJuIE5PVElGWV9PSzsKPj4+Pj4gK30KPj4+Pj4gKwo+Pj4+PiAr c3RhdGljIGlubGluZQo+Pj4+PiArYm9vbCBpc19oZGNwMl9zdXBwb3J0ZWQoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQo+Pj4+PiArewo+Pj4+PiArCXJldHVybiAoSU5URUxfR0VO KGRldl9wcml2KSA+PSAxMCB8fCBJU19HRU1JTklMQUtFKGRldl9wcml2KSB8fAo+Pj4+PiArCQlJ U19LQUJZTEFLRShkZXZfcHJpdikpOwo+Pj4+PiArfQo+Pj4+PiArCj4+Pj4+ICtzdGF0aWMgaW50 IGludGVsX2hkY3AyX2luaXQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+Pj4+ PiArewo+Pj4+PiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUo Y29ubmVjdG9yLT5iYXNlLmRldik7Cj4+Pj4+ICsJc3RydWN0IGludGVsX2hkY3AgKmhkY3AgPSAm Y29ubmVjdG9yLT5oZGNwOwo+Pj4+PiArCWludCByZXQ7Cj4+Pj4+ICsKPj4+Pj4gKwlpZiAoIWlz X2hkY3AyX3N1cHBvcnRlZChkZXZfcHJpdikpCj4+Pj4+ICsJCXJldHVybiAtRUlOVkFMOwo+Pj4+ PiArCj4+Pj4+ICsJaGRjcC0+aGRjcDJfc3VwcG9ydGVkID0gdHJ1ZTsKPj4+Pj4gKwo+Pj4+PiAr CWhkY3AtPm1laV9jbGRldl9uYi5ub3RpZmllcl9jYWxsID0gbWVpX2NsZGV2X25vdGlmeTsKPj4+ Pj4gKwlyZXQgPSBtZWlfY2xkZXZfcmVnaXN0ZXJfbm90aWZ5KCZoZGNwLT5tZWlfY2xkZXZfbmIp Owo+Pj4+PiArCWlmIChyZXQpIHsKPj4+Pj4gKwkJRFJNX0VSUk9SKCJtZWlfY2xkZXYgbm90IGF2 YWlsYWJsZS4gJWRcbiIsIHJldCk7Cj4+Pj4+ICsJCWdvdG8gZXhpdDsKPj4+Pj4gKwl9Cj4+Pj4+ ICsKPj4+Pj4gKwlyZXQgPSBpbml0aWFsaXplX21laV9oZGNwX2RhdGEoY29ubmVjdG9yKTsKPj4+ Pj4gKwlpZiAocmV0KSB7Cj4+Pj4+ICsJCW1laV9jbGRldl91bnJlZ2lzdGVyX25vdGlmeSgmaGRj cC0+bWVpX2NsZGV2X25iKTsKPj4+Pj4gKwkJZ290byBleGl0Owo+Pj4+PiArCX0KPj4+Pj4gKwo+ Pj4+PiArCS8qCj4+Pj4+ICsJICogSW5jYXNlIG5vdGlmaWVyIGlzIHRyaWdnZXJlZCB3ZWxsIGJl Zm9yZSB0aGlzIHBvaW50LCByZXF1ZXN0IGZvcgo+Pj4+PiArCSAqIG5vdGlmaWNhdGlvbiBvZiB0 aGUgbWVpIGNsaWVudCBkZXZpY2Ugc3RhdGUuCj4+Pj4+ICsJICovCj4+Pj4+ICsJbWVpX2NsZGV2 X3BvbGxfbm90aWZpY2F0aW9uKCk7Cj4+Pj4+ICsKPj4+Pj4gK2V4aXQ6Cj4+Pj4+ICsJaWYgKHJl dCkKPj4+Pj4gKwkJaGRjcC0+aGRjcDJfc3VwcG9ydGVkID0gZmFsc2U7Cj4+Pj4+ICsKPj4+Pj4g KwlyZXR1cm4gcmV0Owo+Pj4+PiArfQo+Pj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfaGRtaS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5jCj4+ Pj4+IGluZGV4IGVlOTI5ZjMxZjdkYi4uYTVjYzczMTAxYWNiIDEwMDY0NAo+Pj4+PiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMKPj4+Pj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfaGRtaS5jCj4+Pj4+IEBAIC0yMzM0LDcgKzIzMzQsNyBAQCB2b2lkIGlu dGVsX2hkbWlfaW5pdF9jb25uZWN0b3Ioc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxf ZGlnX3BvcnQsCj4+Pj4+ICAgIAlpZiAoaXNfaGRjcF9zdXBwb3J0ZWQoZGV2X3ByaXYsIHBvcnQp KSB7Cj4+Pj4+ICAgIAkJaW50IHJldCA9IGludGVsX2hkY3BfaW5pdChpbnRlbF9jb25uZWN0b3Is Cj4+Pj4+IC0JCQkJCSAgJmludGVsX2hkbWlfaGRjcF9zaGltKTsKPj4+Pj4gKwkJCQkJICAmaW50 ZWxfaGRtaV9oZGNwX3NoaW0sIGZhbHNlKTsKPj4+Pj4gICAgCQlpZiAocmV0KQo+Pj4+PiAgICAJ CQlEUk1fREVCVUdfS01TKCJIRENQIGluaXQgZmFpbGVkLCBza2lwcGluZy5cbiIpOwo+Pj4+PiAg ICAJfQo+Pj4+PiAtLSAKPj4+Pj4gMi43LjQKPj4+Pj4KPj4gLS0gCj4+IERhbmllbCBWZXR0ZXIK Pj4gU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCj4+IGh0dHA6Ly9ibG9nLmZm d2xsLmNoCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJ bnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK