From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH v4 30/41] drm/i915: Initialize HDCP2.2 and its MEI interface Date: Tue, 29 May 2018 08:53:37 +0200 Message-ID: <20180529065337.GT3438@phenom.ffwll.local> 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> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x243.google.com (mail-wm0-x243.google.com [IPv6:2a00:1450:400c:c09::243]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7124E6E24D for ; Tue, 29 May 2018 06:53:42 +0000 (UTC) Received: by mail-wm0-x243.google.com with SMTP id 18-v6so31755889wml.2 for ; Mon, 28 May 2018 23:53:42 -0700 (PDT) Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Ramalingam C Cc: intel-gfx@lists.freedesktop.org, alexander.usyskin@intel.com, dri-devel@lists.freedesktop.org, tomas.winkler@intel.com List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCBNYXkgMjUsIDIwMTggYXQgMDQ6NDI6NTJQTSArMDUzMCwgUmFtYWxpbmdhbSBDIHdy b3RlOgo+IAo+IAo+IE9uIFRodXJzZGF5IDI0IE1heSAyMDE4IDAxOjM2IFBNLCBEYW5pZWwgVmV0 dGVyIHdyb3RlOgo+ID4gT24gTW9uLCBNYXkgMjEsIDIwMTggYXQgMDY6MjM6NDlQTSArMDUzMCwg UmFtYWxpbmdhbSBDIHdyb3RlOgo+ID4gPiBJbml0aWFsaXplIEhEQ1AyLjIgc3VwcG9ydC4gVGhp cyBpbmNsdWRlcyB0aGUgbWVpIGludGVyZmFjZQo+ID4gPiBpbml0aWFsaXphdGlvbiBhbG9uZyB3 aXRoIHJlcXVpcmVkIG5vdGlmaWVyIHJlZ2lzdHJhdGlvbi4KPiA+ID4gCj4gPiA+IHYyOgo+ID4g PiAgICBtZWkgaW50ZXJmYWNlIGhhbmRsZSBpcyBwcm90ZWN0ZWQgd2l0aCBtdXRleC4gW0Nocmlz IFdpbHNvbl0KPiA+ID4gdjM6Cj4gPiA+ICAgIE5vdGlmaWVycyBhcmUgdXNlZCBmb3IgdGhlIG1l aSBpbnRlcmZhY2Ugc3RhdGUuCj4gPiA+IHY0Ogo+ID4gPiAgICBQb2xsIGZvciBtZWkgY2xpZW50 IGRldmljZSBzdGF0ZQo+ID4gPiAgICBFcnJvciBtc2cgZm9yIG91dCBvZiBtZW0gW1VtYV0KPiA+ ID4gICAgSW5saW5lIHJlcSBmb3IgaW5pdCBmdW5jdGlvbiByZW1vdmVkIFtVbWFdCj4gPiA+IAo+ ID4gPiBTaWduZWQtb2ZmLWJ5OiBSYW1hbGluZ2FtIEMgPHJhbWFsaW5nYW0uY0BpbnRlbC5jb20+ Cj4gPiA+IC0tLQo+ID4gPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgICB8ICAg MyArLQo+ID4gPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICB8ICAgNSArLQo+ ID4gPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkY3AuYyB8IDExNyArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrLQo+ID4gPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2hkbWkuYyB8ICAgMiArLQo+ID4gPiAgIDQgZmlsZXMgY2hhbmdlZCwgMTIyIGluc2Vy dGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCj4gPiA+IAo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rw LmMKPiA+ID4gaW5kZXggNjJmODJjNDI5OGFjLi4yNzZlYjQ5MTEzZTkgMTAwNjQ0Cj4gPiA+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPiA+ID4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+ID4gPiBAQCAtNjM2OCw3ICs2MzY4LDggQEAgaW50ZWxf ZHBfaW5pdF9jb25uZWN0b3Ioc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3Bv cnQsCj4gPiA+ICAgCWludGVsX2RwX2FkZF9wcm9wZXJ0aWVzKGludGVsX2RwLCBjb25uZWN0b3Ip Owo+ID4gPiAgIAlpZiAoaXNfaGRjcF9zdXBwb3J0ZWQoZGV2X3ByaXYsIHBvcnQpICYmICFpbnRl bF9kcF9pc19lZHAoaW50ZWxfZHApKSB7Cj4gPiA+IC0JCWludCByZXQgPSBpbnRlbF9oZGNwX2lu aXQoaW50ZWxfY29ubmVjdG9yLCAmaW50ZWxfZHBfaGRjcF9zaGltKTsKPiA+ID4gKwkJaW50IHJl dCA9IGludGVsX2hkY3BfaW5pdChpbnRlbF9jb25uZWN0b3IsICZpbnRlbF9kcF9oZGNwX3NoaW0s Cj4gPiA+ICsJCQkJCSAgZmFsc2UpOwo+ID4gPiAgIAkJaWYgKHJldCkKPiA+ID4gICAJCQlEUk1f REVCVUdfS01TKCJIRENQIGluaXQgZmFpbGVkLCBza2lwcGluZy5cbiIpOwo+ID4gPiAgIAl9Cj4g PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gPiA+IGluZGV4IGFjOTQzZWM3Mzk4Ny4uN2Fh YWE1MGZjMTlmIDEwMDY0NAo+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k cnYuaAo+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ID4gPiBA QCAtNDQyLDcgKzQ0Miw3IEBAIHN0cnVjdCBpbnRlbF9oZGNwIHsKPiA+ID4gICAJLyogbWVpIGlu dGVyZmFjZSByZWxhdGVkIGluZm9ybWF0aW9uICovCj4gPiA+ICAgCXN0cnVjdCBtZWlfY2xfZGV2 aWNlICpjbGRldjsKPiA+ID4gICAJc3RydWN0IG1laV9oZGNwX2RhdGEgbWVpX2RhdGE7Cj4gPiA+ IC0KPiA+ID4gKwlzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgbWVpX2NsZGV2X25iOwo+ID4gPiAgIAlz dHJ1Y3QgZGVsYXllZF93b3JrIGhkY3AyX2NoZWNrX3dvcms7Cj4gPiA+ICAgfTsKPiA+ID4gQEAg LTE5NDAsNyArMTk0MCw4IEBAIHZvaWQgaW50ZWxfaGRjcF9hdG9taWNfY2hlY2soc3RydWN0IGRy bV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiA+ID4gICAJCQkgICAgIHN0cnVjdCBkcm1fY29ubmVj dG9yX3N0YXRlICpvbGRfc3RhdGUsCj4gPiA+ICAgCQkJICAgICBzdHJ1Y3QgZHJtX2Nvbm5lY3Rv cl9zdGF0ZSAqbmV3X3N0YXRlKTsKPiA+ID4gICBpbnQgaW50ZWxfaGRjcF9pbml0KHN0cnVjdCBp bnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiA+ID4gLQkJICAgIGNvbnN0IHN0cnVjdCBpbnRl bF9oZGNwX3NoaW0gKmhkY3Bfc2hpbSk7Cj4gPiA+ICsJCSAgICBjb25zdCBzdHJ1Y3QgaW50ZWxf aGRjcF9zaGltICpoZGNwX3NoaW0sCj4gPiA+ICsJCSAgICBib29sIGhkY3AyX3N1cHBvcnRlZCk7 Cj4gPiA+ICAgaW50IGludGVsX2hkY3BfZW5hYmxlKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNv bm5lY3Rvcik7Cj4gPiA+ICAgaW50IGludGVsX2hkY3BfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfY29u bmVjdG9yICpjb25uZWN0b3IpOwo+ID4gPiAgIGludCBpbnRlbF9oZGNwX2NoZWNrX2xpbmsoc3Ry dWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKTsKPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkY3AuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2hkY3AuYwo+ID4gPiBpbmRleCBmM2Y5MzUwNDZjMzEuLjk5NDhlNGI0ZTIwMyAxMDA2NDQKPiA+ ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRjcC5jCj4gPiA+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkY3AuYwo+ID4gPiBAQCAtMTEsNiArMTEsNyBAQAo+ ID4gPiAgICNpbmNsdWRlIDxsaW51eC9pMmMuaD4KPiA+ID4gICAjaW5jbHVkZSA8bGludXgvcmFu ZG9tLmg+Cj4gPiA+ICAgI2luY2x1ZGUgPGxpbnV4L21laV9oZGNwLmg+Cj4gPiA+ICsjaW5jbHVk ZSA8bGludXgvbm90aWZpZXIuaD4KPiA+ID4gICAjaW5jbHVkZSAiaW50ZWxfZHJ2LmgiCj4gPiA+ ICAgI2luY2x1ZGUgImk5MTVfcmVnLmgiCj4gPiA+IEBAIC0yNSw2ICsyNiw3IEBAIHN0YXRpYyBp bnQgX2ludGVsX2hkY3AyX2VuYWJsZShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3Ip Owo+ID4gPiAgIHN0YXRpYyBpbnQgX2ludGVsX2hkY3AyX2Rpc2FibGUoc3RydWN0IGludGVsX2Nv bm5lY3RvciAqY29ubmVjdG9yKTsKPiA+ID4gICBzdGF0aWMgdm9pZCBpbnRlbF9oZGNwMl9jaGVj a193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7Cj4gPiA+ICAgc3RhdGljIGludCBpbnRl bF9oZGNwMl9jaGVja19saW5rKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3Rvcik7Cj4g PiA+ICtzdGF0aWMgaW50IGludGVsX2hkY3AyX2luaXQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAq Y29ubmVjdG9yKTsKPiA+ID4gICBzdGF0aWMgaW50IGludGVsX2hkY3BfcG9sbF9rc3ZfZmlmbyhz dHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCwKPiA+ID4gICAJCQkJICAg IGNvbnN0IHN0cnVjdCBpbnRlbF9oZGNwX3NoaW0gKnNoaW0pCj4gPiA+IEBAIC03NjYsMTEgKzc2 OCwxNSBAQCBib29sIGlzX2hkY3Bfc3VwcG9ydGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwgZW51bSBwb3J0IHBvcnQpCj4gPiA+ICAgfQo+ID4gPiAgIGludCBpbnRlbF9oZGNw X2luaXQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ID4gPiAtCQkgICAgY29u c3Qgc3RydWN0IGludGVsX2hkY3Bfc2hpbSAqaGRjcF9zaGltKQo+ID4gPiArCQkgICAgY29uc3Qg c3RydWN0IGludGVsX2hkY3Bfc2hpbSAqaGRjcF9zaGltLAo+ID4gPiArCQkgICAgYm9vbCBoZGNw Ml9zdXBwb3J0ZWQpCj4gPiA+ICAgewo+ID4gPiAgIAlzdHJ1Y3QgaW50ZWxfaGRjcCAqaGRjcCA9 ICZjb25uZWN0b3ItPmhkY3A7Cj4gPiA+ICAgCWludCByZXQ7Cj4gPiA+ICsJaWYgKCFoZGNwX3No aW0pCj4gPiA+ICsJCXJldHVybiAtRUlOVkFMOwo+ID4gPiArCj4gPiA+ICAgCXJldCA9IGRybV9j b25uZWN0b3JfYXR0YWNoX2NvbnRlbnRfcHJvdGVjdGlvbl9wcm9wZXJ0eSgKPiA+ID4gICAJCQkm Y29ubmVjdG9yLT5iYXNlKTsKPiA+ID4gICAJaWYgKHJldCkKPiA+ID4gQEAgLTc3OSw3ICs3ODUs MTIgQEAgaW50IGludGVsX2hkY3BfaW5pdChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0 b3IsCj4gPiA+ICAgCWhkY3AtPmhkY3Bfc2hpbSA9IGhkY3Bfc2hpbTsKPiA+ID4gICAJbXV0ZXhf aW5pdCgmaGRjcC0+aGRjcF9tdXRleCk7Cj4gPiA+ICAgCUlOSVRfREVMQVlFRF9XT1JLKCZoZGNw LT5oZGNwX2NoZWNrX3dvcmssIGludGVsX2hkY3BfY2hlY2tfd29yayk7Cj4gPiA+ICsJSU5JVF9E RUxBWUVEX1dPUksoJmhkY3AtPmhkY3AyX2NoZWNrX3dvcmssIGludGVsX2hkY3AyX2NoZWNrX3dv cmspOwo+ID4gPiAgIAlJTklUX1dPUksoJmhkY3AtPmhkY3BfcHJvcF93b3JrLCBpbnRlbF9oZGNw X3Byb3Bfd29yayk7Cj4gPiA+ICsKPiA+ID4gKwlpZiAoaGRjcDJfc3VwcG9ydGVkKQo+ID4gPiAr CQlpbnRlbF9oZGNwMl9pbml0KGNvbm5lY3Rvcik7Cj4gPiA+ICsKPiA+ID4gICAJcmV0dXJuIDA7 Cj4gPiA+ICAgfQo+ID4gPiBAQCAtMTYzNywzICsxNjQ4LDEwNyBAQCBzdGF0aWMgdm9pZCBpbnRl bF9oZGNwMl9jaGVja193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKPiA+ID4gICAJCXNj aGVkdWxlX2RlbGF5ZWRfd29yaygmaGRjcC0+aGRjcDJfY2hlY2tfd29yaywKPiA+ID4gICAJCQkJ ICAgICAgRFJNX0hEQ1AyX0NIRUNLX1BFUklPRF9NUyk7Cj4gPiA+ICAgfQo+ID4gPiArCj4gPiA+ ICtzdGF0aWMgaW50IGluaXRpYWxpemVfbWVpX2hkY3BfZGF0YShzdHJ1Y3QgaW50ZWxfY29ubmVj dG9yICpjb25uZWN0b3IpCj4gPiA+ICt7Cj4gPiA+ICsJc3RydWN0IGludGVsX2hkY3AgKmhkY3Ag PSAmY29ubmVjdG9yLT5oZGNwOwo+ID4gPiArCXN0cnVjdCBtZWlfaGRjcF9kYXRhICpkYXRhID0g JmhkY3AtPm1laV9kYXRhOwo+ID4gPiArCWVudW0gcG9ydCBwb3J0Owo+ID4gPiArCj4gPiA+ICsJ aWYgKGNvbm5lY3Rvci0+ZW5jb2Rlcikgewo+ID4gPiArCQlwb3J0ID0gY29ubmVjdG9yLT5lbmNv ZGVyLT5wb3J0Owo+ID4gPiArCQlkYXRhLT5wb3J0ID0gR0VUX01FSV9ERElfSU5ERVgocG9ydCk7 Cj4gPiA+ICsJfQo+ID4gPiArCj4gPiA+ICsJZGF0YS0+cG9ydF90eXBlID0gSU5URUdSQVRFRDsK PiA+ID4gKwlkYXRhLT5wcm90b2NvbCA9IGhkY3AtPmhkY3Bfc2hpbS0+aGRjcF9wcm90b2NvbCgp Owo+ID4gPiArCj4gPiA+ICsJZGF0YS0+ayA9IDE7Cj4gPiA+ICsJaWYgKCFkYXRhLT5zdHJlYW1z KQo+ID4gPiArCQlkYXRhLT5zdHJlYW1zID0ga2NhbGxvYyhkYXRhLT5rLAo+ID4gPiArCQkJCQlz aXplb2Yoc3RydWN0IGhkY3AyX3N0cmVhbWlkX3R5cGUpLAo+ID4gPiArCQkJCQlHRlBfS0VSTkVM KTsKPiA+ID4gKwlpZiAoIWRhdGEtPnN0cmVhbXMpIHsKPiA+ID4gKwkJRFJNX0VSUk9SKCJPdXQg b2YgTWVtb3J5XG4iKTsKPiA+ID4gKwkJcmV0dXJuIC1FTk9NRU07Cj4gPiA+ICsJfQo+ID4gPiAr Cj4gPiA+ICsJZGF0YS0+c3RyZWFtc1swXS5zdHJlYW1faWQgPSAwOwo+ID4gPiArCWRhdGEtPnN0 cmVhbXNbMF0uc3RyZWFtX3R5cGUgPSBoZGNwLT5jb250ZW50X3R5cGU7Cj4gPiBPayB0aGVyZSdz IDAgbG9ja2luZyBoZXJlLiBJZiB0aGVyZSdzIG5vIGxvY2tpbmcgdGhlbiBvZiBjb3Vyc2UKPiA+ IENPTkZJR19QUk9WRV9MT0NLSU5HIHdpbGwgbm90IHNwb3QgYW55IGlzc3Vlcy4KPiA+IAo+ID4g SXQgYWxzbyBtZWFucyB5b3UncmUgY29kZSBpcyByYWN5LCBlLmcuIGlmIG1laSBhbmQgaTkxNSBs b2FkIGF0IHRoZSBzYW1lCj4gPiB0aW1lLCB0aGluZ3MgY291bGQgZ2V0IGNvcnJ1cHRlZCBpbiBp bnRlcmVzdGluZyB3YXlzLiBTYW1lIGhvbGRzIGlmIHlvdQo+ID4gaGF2ZSBvbmdvaW5nIGhkY3Ay IG9wZXJhdGlvbnMgZ29pbmcgb24gaW4gdGhlIGludGVsX2hkY3AgY29kZSwgd2hpbGUgdGhlCj4g PiBtZWkgZHJpdmVyIGlzIGJlaW5nIHVubG9hZGVkLgo+IERhbmllbCwKPiAKPiBCb3RoIG9mIHRo ZXNlIGNhc2VzIGFyZSBub3QgcG9zc2libGUgYXMgTUVJIHN5bWJvbHMgYXJlIHVzZWQgaW4gSTkx NSwKPiBTbyBJOTE1IGNhbid0IGJlIGxvYWRlZCBiZWZvcmUgb3IgaW4gcGFyYWxsZWwgdG8gTUVJ IGRyaXZlcnMuCj4gU2ltaWxhcmx5IHdlIGNhbid0IHVubG9hZCB0aGUgTUVJIGJlZm9yZSBJOTE1 IG9yIGluIHBhcmFsbGVsLiBTbyBJIGd1ZXNzIHdlCj4gYXJlIG91dCBvZiBhYm92ZSByYWNlIG1l bnRpb25lZAoKVGhhdCdzIG5vdCBob3cgaXQgd29ya3MgdW5mb3J0dW5hdGVseS4gWW91IGNhbiB1 bmJpbmQgZHJpdmVycyB3aGlsZSB0aGUKbW9kdWxlIGlzIHN0aWxsIHRoZXJlLiBBbmQgc3ltYm9s IGF2YWlsYWJpbGl0eSBkb2Vzbid0IGd1YXJhbnRlZSB5b3UgdGhhdAp0aGUgZHJpdmVyIGl0c2Vs ZiBoYXMgbG9hZGVkIGFscmVhZHkuIFNhbWUgaG9sZHMgZm9yIGk5MTUuCgpZZXMgc3ltYm9sIGF2 YWlsYWJpbGl0eSBub3QgbWF0Y2hpbmcgdXAgd2l0aCBkcml2ZXIgc3RhdGUgaXMgb25lIG9mIHRo ZQpuZWF0ZXN0IHBpdGZhbGxzIG9mIHRoZSBsaW51eCBkcml2ZXIgbW9kZWwuIFN5bWJvbCBhdmFp bGFiaWxpdHkgb25seQptb3N0bHkgbWF0Y2hlcyBkcml2ZXIgc3RhdGUsIGJ1dCBpdCBjYW4gYmUg ZGlmZmVyZW50LgoKPiBNRUkgcmVsYXRlZCBkYXRhIGluIGludGVsX2Nvbm5lY3Rvci0+aGRjcCBp cyBwZXIgY29ubmVjdG9yIGJhc2lzLiBBbmQgcGVyCj4gY29ubmVjdG9yIGRhdGEncyBhcmUgcHJv dGVjdGVkIHdpdGggbXV0ZXggaW4gYXV0aGVudGljYXRpb24gcGF0aC4KPiAKPiBJbiBNRUkgSERD UCBkcml2ZXIncyBBUElzIHRvbywgdGhlcmUgaXMgbm8gc2hhcmVkIHZhcmlhYmxlIGV4Y2VwdCBt ZWlfY2xkZXYKPiB0aGF0IGFsc28gbm90IG1vZGlmaWVkIGluIHRob3NlIG1laV9oZGNwIEFQSXMu Cj4gU28gSSBhbSBub3Qgc2VlaW5nIGFueSByYWNlIGNvbmRpdGlvbnMgYXMgc3VjaC4gU28gdGhl cmUgaXMgbm8gbmVlZCBmb3IgYW55Cj4gZXhwbGljaXQgbG9ja2luZyBiZXR3ZWVuIEk5MTUgYW5k IE1FSS4KCllvdXIgbm90aWZpZXIgY2FsbGJhY2sgbmVlZHMgc29tZSBsb2NrIHRvIHByb3RlY3Qg YWdhaW5zdCBpOTE1LXNpZGUKbW9kZXNldCBjYWxscywgaW4gY2FzZSB0aGUgbWVpIGRpc2FwcGVh cnMgd2hpbGUgd2UgdHJ5IHRvIHVzZSB0aGVtLgoKSSB0aGluayBhdCBsZWFzdCwgSSBuZWVkIHRv IGxvb2sgYXQgdGhlIG92ZXJhbGwgcGljdHVyZSBmcm9tIHlvdXIgZ2l0IHRyZWUKYWdhaW4uCgo+ ID4gTm90ZSB0aGF0IHlvdSBjYW4gdW5sb2FkIHRoZSBkcml2ZXIgd2l0aG91dCBoYXZpbmcgdG8g dW5sb2FkIHRoZSBtb2R1bGUsCj4gPiB0aG9zZSAyIHRoaW5ncyBhcmVuJ3QgY291cGxlZC4KPiBD YW4geW91wqAgcGxlYXNlIGhlbHAgbWUgdG8gdW5kZXJzdGFuZCBtb3JlIG9uIHRoaXM/Cj4gSWYg eW91IGFyZSByZWZlcnJpbmcgdG8gbWVpIGRldmljZSByZW1vdmFsLCBub3RpZmljYXRpb24gd2ls bCBiZSBzZW50IHRvCj4gSTkxNS4KPiBFdmVuIGlmIGEgaGRjcCBzZXJ2aWNlIGlzIHBsYWNlZCBm b3IgYSBtZWkgZGV2aWNlLCB0aGF0IGlzCj4gdW5iaW5kZWQvZGlzYWJsZWQsIG1laSBidXMgd2ls bCBncmFjZWZ1bGx5IGRlY2xpbmUgdGhlIHJlcXVlc3QuCj4gCj4gU28gSSBkb24ndCBleHBlY3Qg YW55IHBvc3NpYmxlIGlzc3Vlcy4gSGVscCBtZSBpZiB5b3Ugb3RoZXJ3aXNlLgo+IAo+ID4gQW5v dGhlciByZWFzb24gZm9yIG5vdCB1c2luZyBub3RpZmllcnMgaXMgdGhhdCBpdCdzIGFub3RoZXIg cmVpbnZlbnRlZAo+ID4gd2hlZWwgdG8gbWFrZSBtdWx0aS1kcml2ZXIgc3R1ZmYgd29yay4gV2Ug YWxyZWFkeSBoYXZlIHRoZSBjb21wb25lbnQKPiA+IGZyYW1ld29yayBmb3IgdGhpcywgYW5kIHdl J3JlIGFscmVhZHkgdXNpbmcgdGhlIGNvbXBvbmVudCBmcmFtZXdvcmsgZm9yCj4gPiB0aGUgc25k LWhkYSB2cy4gaTkxNSBjb29yZGluYXRpb24uCj4gSWYgd2UgbmVlZCB0byB3ZSBjYW4gZG8gd2l0 aCBjb21wb25lbnQuIEV4cGxvcmluZyB3aGF0IGlzIG5lZWRlZCBoZXJlLgo+IEF0IEZpcnN0IGds YW5jZSBJOTE1IHdpbGwgYmUgY29tcG9uZW50IG1hc3RlciBhbmQgbWVpIHdpbGwgYmUgY29tcG9u ZW50Cj4gY2xpZW50LgoKSSB0aGluayB5b3UgY2FuIGhhbmQtcm9sbCBpdCB3aXRoIG5vdGlmaWVy cywganVzdCBuZWVkIHRvIGJlIGNhcmVmdWwgdGhhdAp5b3UgZG9uJ3QgaG9sZCBsb2NrcyB0b28g bXVjaC4gQW5kIHRoYXQncyBraW5kYSByZWludmVudGluZyBjb21wb25lbnQKZnJhbWV3b3JrIGlu IHRoYXQgY2FzZS4gRXNwZWNpYWxseSBzaW5jZSB5b3UndmUgdXNlZCBkaXJlY3QgZnVuY3Rpb24K Y2FsbHMsIG1ha2luZyBtZWkgYSBzdGF0aWMgZGVwZW5kZW5jeSBhbnl3YXkuCi1EYW5pZWwKCj4g Cj4gVGhhbmtzIGFuZCBSZWdhcmRzLAo+IFJhbQo+ID4gCj4gPiBTbyBoZXJlJ3MgbXkgcmVjb21t ZW5kYXRpb24gZm9yIGdldHRpbmcgdGhpcyBzb3J0ZWQgb3V0Ogo+ID4gCj4gPiAtIFVzZSB0aGUg Y29tcG9uZW50IGZyYW1ld29yayB0byBjb29yZGluYXRlIHRoZSBsb2FkaW5nIG9mIGk5MTUgYW5k IHRoZQo+ID4gICAgbWVpX2hkY3AgZHJpdmVyLgo+ID4gCj4gPiAtIEJvbnVzIHBvaW50cyBmb3Ig dXNpbmcgZGV2aWNlX2xpbmsgdG8gdGVsbCB0aGUgZHJpdmVyIGNvcmUgYWJvdXQgdGhpcywKPiA+ ICAgIHdoaWNoIG9wdGltaXplcyB0aGUgbG9hZCBzZXF1ZW5jZSAodW5mb3J0dW5hdGVseSB3ZSBo YXZlbid0IGRvbmUgdGhhdAo+ID4gICAgZm9yIHNuZC1oZGEgeWV0LCBpbnN0ZWFkIGhhdmUgdG8g d29yayBhcm91bmQgb3JkZXJpbmcgaXNzdWVzIGluIHRoZQo+ID4gICAgc3VzcGVuZC9yZXN1bWUg aGFuZGxlcnMgYSBiaXQpLgo+ID4gCj4gPiAtIERyb3AgYWxsIHRoZSBFWFBPUlRfU1lNQk9MIGFu ZCBoYXJkIGxpbmtzIGJldHdlZW4gdGhlIHR3byBkcml2ZXJzLgo+ID4gICAgSW5zdGVhZCBoYXZl IGEgdnRhYmxlLCBsaWtlIHdlJ3JlIHVzaW5nIGZvciB0aGUgYXVkaW8gc2lkZS4KPiA+IAo+ID4g LSBNYWtlIHN1cmUgdGhhdCBhbnkgc2hhcmVkIHN0YXRlIGlzIGFwcHJvcHJpYXRlbHkgcHJvdGVj dGVkIHdpdGggYSBtdXRleC4KPiA+ICAgIFNwcmlua2xlIGxvdHMgb2YgYXNzZXJ0X2xvY2tfaGVs ZCBvdmVyIHRoZSBjb2RlIGJhc2UgdG8gbWFrZSBzdXJlIHlvdQo+ID4gICAgZGlkbid0IG1pc3Mg YW55dGhpbmcsIGFuZCB1c2UgQ09ORklHX1BST1ZFX0xPQ0tJTkcgdG8gbWFrZSBzdXJlIHRoZXJl J3MKPiA+ICAgIG5vIGRlYWRsb2NrcyBhbmQgb3ZlcnNpZ2h0cy4KPiA+IAo+ID4gLSBFeHRlbmQg dGhlIGlndCBkcnZfbW9kdWxlX3JlbG9hZCB0ZXN0Y2FzZSB0byBtYWtlIHN1cmUgeW91J3JlIGV4 ZXJjaXNpbmcKPiA+ICAgIHRoZSBuZXcgRVBST0JFX0RFRkVSIHBvaW50IGZ1bGx5IChzaG91bGQg anVzdCBuZWVkIGEga2VybmVsIGNoYW5nZSB0bwo+ID4gICAgYWRkIHRoYXQgYXMgYSBwb3RlbnRp YWwgbG9hZCBmYWlsdXJlIHBhdGgpLgo+ID4gCj4gPiBJIHRoaW5rIHdpdGggdGhhdCB3ZSBoYXZl IGEgc29saWQgc29sdXRpb24gaGVyZSB3aGljaCBpcyBhbGlnbmVkIHdpdGggaG93Cj4gPiB3ZSBo YW5kbGUgdGhpcyBpbiBvdGhlciBjYXNlcy4KPiA+IAo+ID4gVGhhbmtzLCBEYW5pZWwKPiA+IAo+ ID4gPiArCj4gPiA+ICsJcmV0dXJuIDA7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyB2 b2lkIGludGVsX2hkY3AyX2V4aXQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ ID4gPiArewo+ID4gPiArCWludGVsX2hkY3BfZGlzYWJsZShjb25uZWN0b3IpOwo+ID4gPiArCWtm cmVlKGNvbm5lY3Rvci0+aGRjcC5tZWlfZGF0YS5zdHJlYW1zKTsKPiA+ID4gK30KPiA+ID4gKwo+ ID4gPiArc3RhdGljIGludCBtZWlfY2xkZXZfbm90aWZ5KHN0cnVjdCBub3RpZmllcl9ibG9jayAq bmIsIHVuc2lnbmVkIGxvbmcgZXZlbnQsCj4gPiA+ICsJCQkgICAgdm9pZCAqY2xkZXYpCj4gPiA+ ICt7Cj4gPiA+ICsJc3RydWN0IGludGVsX2hkY3AgKmhkY3AgPSBjb250YWluZXJfb2YobmIsIHN0 cnVjdCBpbnRlbF9oZGNwLAo+ID4gPiArCQkJCQkgICAgICAgbWVpX2NsZGV2X25iKTsKPiA+ID4g KwlzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICppbnRlbF9jb25uZWN0b3IgPSBjb250YWluZXJfb2Yo aGRjcCwKPiA+ID4gKwkJCQkJCQlzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yLAo+ID4gPiArCQkJCQkJ CWhkY3ApOwo+ID4gPiArCj4gPiA+ICsJRFJNX0RFQlVHX0tNUygiWyVzOiVkXSBNRUlfSERDUCBO b3RpZmljYXRpb24uIEludGVyZmFjZTogJXNcbiIsCj4gPiA+ICsJCSAgICAgIGludGVsX2Nvbm5l Y3Rvci0+YmFzZS5uYW1lLCBpbnRlbF9jb25uZWN0b3ItPmJhc2UuYmFzZS5pZCwKPiA+ID4gKwkJ ICAgICAgY2xkZXYgPyAiVVAiIDogIkRvd24iKTsKPiA+ID4gKwo+ID4gPiArCWlmIChldmVudCA9 PSBNRUlfQ0xERVZfRU5BQkxFRCkgewo+ID4gPiArCQloZGNwLT5jbGRldiA9IGNsZGV2Owo+ID4g PiArCQlpbml0aWFsaXplX21laV9oZGNwX2RhdGEoaW50ZWxfY29ubmVjdG9yKTsKPiA+ID4gKwl9 IGVsc2Ugewo+ID4gPiArCQloZGNwLT5jbGRldiA9IE5VTEw7Cj4gPiA+ICsJCWludGVsX2hkY3Ay X2V4aXQoaW50ZWxfY29ubmVjdG9yKTsKPiA+ID4gKwl9Cj4gPiA+ICsKPiA+ID4gKwlyZXR1cm4g Tk9USUZZX09LOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICtzdGF0aWMgaW5saW5lCj4gPiA+ICti b29sIGlzX2hkY3AyX3N1cHBvcnRlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp Cj4gPiA+ICt7Cj4gPiA+ICsJcmV0dXJuIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEwIHx8IElT X0dFTUlOSUxBS0UoZGV2X3ByaXYpIHx8Cj4gPiA+ICsJCUlTX0tBQllMQUtFKGRldl9wcml2KSk7 Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyBpbnQgaW50ZWxfaGRjcDJfaW5pdChzdHJ1 Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCj4gPiA+ICt7Cj4gPiA+ICsJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjb25uZWN0b3ItPmJhc2UuZGV2KTsK PiA+ID4gKwlzdHJ1Y3QgaW50ZWxfaGRjcCAqaGRjcCA9ICZjb25uZWN0b3ItPmhkY3A7Cj4gPiA+ ICsJaW50IHJldDsKPiA+ID4gKwo+ID4gPiArCWlmICghaXNfaGRjcDJfc3VwcG9ydGVkKGRldl9w cml2KSkKPiA+ID4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gPiA+ICsKPiA+ID4gKwloZGNwLT5oZGNw Ml9zdXBwb3J0ZWQgPSB0cnVlOwo+ID4gPiArCj4gPiA+ICsJaGRjcC0+bWVpX2NsZGV2X25iLm5v dGlmaWVyX2NhbGwgPSBtZWlfY2xkZXZfbm90aWZ5Owo+ID4gPiArCXJldCA9IG1laV9jbGRldl9y ZWdpc3Rlcl9ub3RpZnkoJmhkY3AtPm1laV9jbGRldl9uYik7Cj4gPiA+ICsJaWYgKHJldCkgewo+ ID4gPiArCQlEUk1fRVJST1IoIm1laV9jbGRldiBub3QgYXZhaWxhYmxlLiAlZFxuIiwgcmV0KTsK PiA+ID4gKwkJZ290byBleGl0Owo+ID4gPiArCX0KPiA+ID4gKwo+ID4gPiArCXJldCA9IGluaXRp YWxpemVfbWVpX2hkY3BfZGF0YShjb25uZWN0b3IpOwo+ID4gPiArCWlmIChyZXQpIHsKPiA+ID4g KwkJbWVpX2NsZGV2X3VucmVnaXN0ZXJfbm90aWZ5KCZoZGNwLT5tZWlfY2xkZXZfbmIpOwo+ID4g PiArCQlnb3RvIGV4aXQ7Cj4gPiA+ICsJfQo+ID4gPiArCj4gPiA+ICsJLyoKPiA+ID4gKwkgKiBJ bmNhc2Ugbm90aWZpZXIgaXMgdHJpZ2dlcmVkIHdlbGwgYmVmb3JlIHRoaXMgcG9pbnQsIHJlcXVl c3QgZm9yCj4gPiA+ICsJICogbm90aWZpY2F0aW9uIG9mIHRoZSBtZWkgY2xpZW50IGRldmljZSBz dGF0ZS4KPiA+ID4gKwkgKi8KPiA+ID4gKwltZWlfY2xkZXZfcG9sbF9ub3RpZmljYXRpb24oKTsK PiA+ID4gKwo+ID4gPiArZXhpdDoKPiA+ID4gKwlpZiAocmV0KQo+ID4gPiArCQloZGNwLT5oZGNw Ml9zdXBwb3J0ZWQgPSBmYWxzZTsKPiA+ID4gKwo+ID4gPiArCXJldHVybiByZXQ7Cj4gPiA+ICt9 Cj4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMKPiA+ID4gaW5kZXggZWU5MjlmMzFmN2Ri Li5hNWNjNzMxMDFhY2IgMTAwNjQ0Cj4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2hkbWkuYwo+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMK PiA+ID4gQEAgLTIzMzQsNyArMjMzNCw3IEBAIHZvaWQgaW50ZWxfaGRtaV9pbml0X2Nvbm5lY3Rv cihzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCwKPiA+ID4gICAJaWYg KGlzX2hkY3Bfc3VwcG9ydGVkKGRldl9wcml2LCBwb3J0KSkgewo+ID4gPiAgIAkJaW50IHJldCA9 IGludGVsX2hkY3BfaW5pdChpbnRlbF9jb25uZWN0b3IsCj4gPiA+IC0JCQkJCSAgJmludGVsX2hk bWlfaGRjcF9zaGltKTsKPiA+ID4gKwkJCQkJICAmaW50ZWxfaGRtaV9oZGNwX3NoaW0sIGZhbHNl KTsKPiA+ID4gICAJCWlmIChyZXQpCj4gPiA+ICAgCQkJRFJNX0RFQlVHX0tNUygiSERDUCBpbml0 IGZhaWxlZCwgc2tpcHBpbmcuXG4iKTsKPiA+ID4gICAJfQo+ID4gPiAtLSAKPiA+ID4gMi43LjQK PiA+ID4gCj4gCgotLSAKRGFuaWVsIFZldHRlcgpTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29y cG9yYXRpb24KaHR0cDovL2Jsb2cuZmZ3bGwuY2gKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vaW50ZWwtZ2Z4Cg==