From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH v9 08/39] drm/i915: hdcp1.4 CP_IRQ handling and SW encryption tracking Date: Thu, 20 Dec 2018 15:53:20 +0100 Message-ID: <20181220145320.GM21184@phenom.ffwll.local> References: <1544673701-6353-1-git-send-email-ramalingam.c@intel.com> <1544673701-6353-9-git-send-email-ramalingam.c@intel.com> <20181219154800.GP21184@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: "C, Ramalingam" Cc: daniel.vetter@ffwll.ch, intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, uma.shankar@intel.com, seanpaul@chromium.org, tomas.winkler@intel.com List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBEZWMgMjAsIDIwMTggYXQgMDQ6NTk6MTNQTSArMDUzMCwgQywgUmFtYWxpbmdhbSB3 cm90ZToKPiAKPiBPbiAxMi8xOS8yMDE4IDk6MTggUE0sIERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4g PiBPbiBUaHUsIERlYyAxMywgMjAxOCBhdCAwOTozMToxMEFNICswNTMwLCBSYW1hbGluZ2FtIEMg d3JvdGU6Cj4gPiA+ICJoZGNwX2VuY3J5cHRlZCIgZmxhZyBpcyBkZWZpbmVkIHRvIGRlbm90ZSB0 aGUgSERDUDEuNCBlbmNyeXB0aW9uIHN0YXR1cy4KPiA+ID4gVGhpcyBTVyB0cmFja2luZyBpcyB1 c2VkIHRvIGRldGVybWluZSB0aGUgbmVlZCBmb3IgcmVhbCBoZGNwMS40IGRpc2FibGUKPiA+ID4g YW5kIGhkY3BfY2hlY2tfbGluayB1cG9uIENQX0lSUS4KPiA+ID4gCj4gPiA+IE9uIENQX0lSUSB3 ZSBmaWx0ZXIgdGhlIENQX0lSUSByZWxhdGVkIHRvIHRoZSBzdGF0ZXMgbGlrZSBMaW5rIGZhaWx1 cmUKPiA+ID4gYW5kIHJlYXV0aGVudGljYXRpb24gcmVxIGV0YyBhbmQgaGFuZGxlIHRoZW0gaW4g aGRjcF9jaGVja19saW5rLgo+ID4gPiBDUF9JUlEgY29ycmVzcG9uZGluZyB0byB0aGUgYXV0aGVu dGljYXRpb24gbXNnIGF2YWlsYWJpbGl0eSBhcmUgaWdub3JlZC4KPiA+ID4gCj4gPiA+IFdBUk5f T04gaXMgYWRkZWQgZm9yIHRoZSBhYnJ1cHQgc3RvcCBvZiBIRENQIGVuY3J5cHRpb24gb2YgYSBw b3J0Lgo+ID4gPiAKPiA+ID4gU2lnbmVkLW9mZi1ieTogUmFtYWxpbmdhbSBDIDxyYW1hbGluZ2Ft LmNAaW50ZWwuY29tPgo+ID4gPiAtLS0KPiA+ID4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kcC5jICAgfCAgMiArLQo+ID4gPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5o ICB8ICA1ICsrLQo+ID4gPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkY3AuYyB8IDg5 ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLQo+ID4gPiAgIDMgZmlsZXMg Y2hhbmdlZCwgNzQgaW5zZXJ0aW9ucygrKSwgMjIgZGVsZXRpb25zKC0pCj4gPiA+IAo+ID4gPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2RwLmMKPiA+ID4gaW5kZXggYWJhODg0YzY0ODc5Li44OTMxNWUxNWZi MzQgMTAwNjQ0Cj4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPiA+ ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+ID4gPiBAQCAtNDc1OCw3 ICs0NzU4LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfZHBfY2hlY2tfc2VydmljZV9pcnEoc3RydWN0 IGludGVsX2RwICppbnRlbF9kcCkKPiA+ID4gICAJCWludGVsX2RwX2hhbmRsZV90ZXN0X3JlcXVl c3QoaW50ZWxfZHApOwo+ID4gPiAgIAlpZiAodmFsICYgRFBfQ1BfSVJRKQo+ID4gPiAtCQlpbnRl bF9oZGNwX2NoZWNrX2xpbmsoaW50ZWxfZHAtPmF0dGFjaGVkX2Nvbm5lY3Rvcik7Cj4gPiA+ICsJ CWludGVsX2hkY3BfaGFuZGxlX2NwX2lycShpbnRlbF9kcC0+YXR0YWNoZWRfY29ubmVjdG9yKTsK PiA+ID4gICAJaWYgKHZhbCAmIERQX1NJTktfU1BFQ0lGSUNfSVJRKQo+ID4gPiAgIAkJRFJNX0RF QlVHX0RSSVZFUigiU2luayBzcGVjaWZpYyBpcnEgdW5oYW5kbGVkXG4iKTsKPiA+ID4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHJ2LmgKPiA+ID4gaW5kZXggMTkxYjZlMGYwODZjLi5kZWNkMDM0NmM2YTcg MTAwNjQ0Cj4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gPiA+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gPiA+IEBAIC0zOTMsNiAr MzkzLDkgQEAgc3RydWN0IGludGVsX2hkY3Agewo+ID4gPiAgIAlzdHJ1Y3QgZGVsYXllZF93b3Jr IGNoZWNrX3dvcms7Cj4gPiA+ICAgCXN0cnVjdCB3b3JrX3N0cnVjdCBwcm9wX3dvcms7Cj4gPiA+ ICsJLyogSERDUDEuNCBFbmNyeXB0aW9uIHN0YXR1cyAqLwo+ID4gPiArCXU4IGhkY3BfZW5jcnlw dGVkOwo+ID4gQW5vdGhlciBib29sIEkgZ3Vlc3M/IE9yIHVuc2lnbmVkIDogMTsKPiBhcyBwZXIg I2ludGVsLWdmeCBkaXNjdXNzaW9uIEkgd2lsbCBmYWxsYmFjayB0byBib29sLgo+ID4gCj4gPiA+ ICsKPiA+ID4gICAJLyogSERDUDIuMiByZWxhdGVkIGRlZmluaXRpb25zICovCj4gPiA+ICAgCS8q IEZsYWcgaW5kaWNhdGVzIHdoZXRoZXIgdGhpcyBjb25uZWN0b3Igc3VwcG9ydHMgSERDUDIuMiBv ciBub3QuICovCj4gPiA+ICAgCXU4IGhkY3AyX3N1cHBvcnRlZDsKPiA+ID4gQEAgLTIwNTgsMTAg KzIwNjEsMTAgQEAgaW50IGludGVsX2hkY3BfaW5pdChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpj b25uZWN0b3IsCj4gPiA+ICAgCQkgICAgYm9vbCBoZGNwMl9zdXBwb3J0ZWQpOwo+ID4gPiAgIGlu dCBpbnRlbF9oZGNwX2VuYWJsZShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpOwo+ ID4gPiAgIGludCBpbnRlbF9oZGNwX2Rpc2FibGUoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29u bmVjdG9yKTsKPiA+ID4gLWludCBpbnRlbF9oZGNwX2NoZWNrX2xpbmsoc3RydWN0IGludGVsX2Nv bm5lY3RvciAqY29ubmVjdG9yKTsKPiA+ID4gICBib29sIGlzX2hkY3Bfc3VwcG9ydGVkKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgZW51bSBwb3J0IHBvcnQpOwo+ID4gPiAgIGJv b2wgaW50ZWxfaGRjcF9jYXBhYmxlKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3Rvcik7 Cj4gPiA+ICAgYm9vbCBpc19oZGNwMl9zdXBwb3J0ZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KTsKPiA+ID4gK3ZvaWQgaW50ZWxfaGRjcF9oYW5kbGVfY3BfaXJxKHN0cnVjdCBp bnRlbF9jb25uZWN0b3IgKmNvbm5lY3Rvcik7Cj4gPiA+ICAgLyogaW50ZWxfcHNyLmMgKi8KPiA+ ID4gICAjZGVmaW5lIENBTl9QU1IoZGV2X3ByaXYpIChIQVNfUFNSKGRldl9wcml2KSAmJiBkZXZf cHJpdi0+cHNyLnNpbmtfc3VwcG9ydCkKPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2hkY3AuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkY3AuYwo+ ID4gPiBpbmRleCA5NDA1ZmNlMDdiOTMuLjJiNzgxNGE2ZjEyYiAxMDA2NDQKPiA+ID4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRjcC5jCj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2hkY3AuYwo+ID4gPiBAQCAtNzUsNiArNzUsMTYgQEAgYm9vbCBpbnRl bF9oZGNwX2NhcGFibGUoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ID4gPiAg IAlyZXR1cm4gY2FwYWJsZTsKPiA+ID4gICB9Cj4gPiA+ICtzdGF0aWMgaW5saW5lIGJvb2wgaW50 ZWxfaGRjcF9pbl91c2Uoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ID4gPiAr ewo+ID4gPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY29u bmVjdG9yLT5iYXNlLmRldik7Cj4gPiA+ICsJZW51bSBwb3J0IHBvcnQgPSBjb25uZWN0b3ItPmVu Y29kZXItPnBvcnQ7Cj4gPiA+ICsJdTMyIHJlZzsKPiA+ID4gKwo+ID4gPiArCXJlZyA9IEk5MTVf UkVBRChQT1JUX0hEQ1BfU1RBVFVTKHBvcnQpKTsKPiA+ID4gKwlyZXR1cm4gcmVnICYgSERDUF9T VEFUVVNfRU5DOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICAgc3RhdGljIGludCBpbnRlbF9oZGNw X3BvbGxfa3N2X2ZpZm8oc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQs Cj4gPiA+ICAgCQkJCSAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfaGRjcF9zaGltICpzaGltKQo+ID4g PiAgIHsKPiA+ID4gQEAgLTY2OSw2ICs2NzksNyBAQCBzdGF0aWMgaW50IF9pbnRlbF9oZGNwX2Rp c2FibGUoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ID4gPiAgIAlEUk1fREVC VUdfS01TKCJbJXM6JWRdIEhEQ1AgaXMgYmVpbmcgZGlzYWJsZWQuLi5cbiIsCj4gPiA+ICAgCQkg ICAgICBjb25uZWN0b3ItPmJhc2UubmFtZSwgY29ubmVjdG9yLT5iYXNlLmJhc2UuaWQpOwo+ID4g PiArCWhkY3AtPmhkY3BfZW5jcnlwdGVkID0gMDsKPiA+ID4gICAJSTkxNV9XUklURShQT1JUX0hE Q1BfQ09ORihwb3J0KSwgMCk7Cj4gPiA+ICAgCWlmIChpbnRlbF93YWl0X2Zvcl9yZWdpc3Rlcihk ZXZfcHJpdiwgUE9SVF9IRENQX1NUQVRVUyhwb3J0KSwgfjAsIDAsCj4gPiA+ICAgCQkJCSAgICBF TkNSWVBUX1NUQVRVU19DSEFOR0VfVElNRU9VVF9NUykpIHsKPiA+ID4gQEAgLTcxNCw4ICs3MjUs MTAgQEAgc3RhdGljIGludCBfaW50ZWxfaGRjcF9lbmFibGUoc3RydWN0IGludGVsX2Nvbm5lY3Rv ciAqY29ubmVjdG9yKQo+ID4gPiAgIAkvKiBJbmNhc2Ugb2YgYXV0aGVudGljYXRpb24gZmFpbHVy ZXMsIEhEQ1Agc3BlYyBleHBlY3RzIHJlYXV0aC4gKi8KPiA+ID4gICAJZm9yIChpID0gMDsgaSA8 IHRyaWVzOyBpKyspIHsKPiA+ID4gICAJCXJldCA9IGludGVsX2hkY3BfYXV0aChjb25uX3RvX2Rp Z19wb3J0KGNvbm5lY3RvciksIGhkY3AtPnNoaW0pOwo+ID4gPiAtCQlpZiAoIXJldCkKPiA+ID4g KwkJaWYgKCFyZXQpIHsKPiA+ID4gKwkJCWhkY3AtPmhkY3BfZW5jcnlwdGVkID0gMTsKPiA+ID4g ICAJCQlyZXR1cm4gMDsKPiA+ID4gKwkJfQo+ID4gPiAgIAkJRFJNX0RFQlVHX0tNUygiSERDUCBB dXRoIGZhaWx1cmUgKCVkKVxuIiwgcmV0KTsKPiA+ID4gQEAgLTc0MiwxNiArNzU1LDE3IEBAIGlu dCBpbnRlbF9oZGNwX2NoZWNrX2xpbmsoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9y KQo+ID4gPiAgIAllbnVtIHBvcnQgcG9ydCA9IGludGVsX2RpZ19wb3J0LT5iYXNlLnBvcnQ7Cj4g PiA+ICAgCWludCByZXQgPSAwOwo+ID4gPiAtCWlmICghaGRjcC0+c2hpbSkKPiA+ID4gLQkJcmV0 dXJuIC1FTk9FTlQ7Cj4gPiA+IC0KPiA+ID4gICAJbXV0ZXhfbG9jaygmaGRjcC0+bXV0ZXgpOwo+ ID4gPiAtCWlmIChoZGNwLT52YWx1ZSA9PSBEUk1fTU9ERV9DT05URU5UX1BST1RFQ1RJT05fVU5E RVNJUkVEKQo+ID4gPiArCS8qIENoZWNrX2xpbmsgdmFsaWQgb25seSB3aGVuIEhEQ1AxLjQgaXMg ZW5hYmxlZCAqLwo+ID4gPiArCWlmIChoZGNwLT52YWx1ZSAhPSBEUk1fTU9ERV9DT05URU5UX1BS T1RFQ1RJT05fRU5BQkxFRCB8fAo+ID4gPiArCSAgICAhaGRjcC0+aGRjcF9lbmNyeXB0ZWQpIHsK PiA+ID4gKwkJcmV0ID0gLUVJTlZBTDsKPiA+ID4gICAJCWdvdG8gb3V0Owo+ID4gPiArCX0KPiA+ ID4gLQlpZiAoIShJOTE1X1JFQUQoUE9SVF9IRENQX1NUQVRVUyhwb3J0KSkgJiBIRENQX1NUQVRV U19FTkMpKSB7Cj4gPiA+IC0JCURSTV9FUlJPUigiJXM6JWQgSERDUCBjaGVjayBmYWlsZWQ6IGxp bmsgaXMgbm90IGVuY3J5cHRlZCwleFxuIiwKPiA+ID4gKwlpZiAoV0FSTl9PTighaW50ZWxfaGRj cF9pbl91c2UoY29ubmVjdG9yKSkpIHsKPiA+ID4gKwkJRFJNX0VSUk9SKCIlczolZCBIRENQIGxp bmsgc3RvcHBlZCBlbmNyeXB0aW9uLCV4XG4iLAo+ID4gPiAgIAkJCSAgY29ubmVjdG9yLT5iYXNl Lm5hbWUsIGNvbm5lY3Rvci0+YmFzZS5iYXNlLmlkLAo+ID4gPiAgIAkJCSAgSTkxNV9SRUFEKFBP UlRfSERDUF9TVEFUVVMocG9ydCkpKTsKPiA+ID4gICAJCXJldCA9IC1FTlhJTzsKPiA+ID4gQEAg LTc5MiwxOCArODA2LDYgQEAgaW50IGludGVsX2hkY3BfY2hlY2tfbGluayhzdHJ1Y3QgaW50ZWxf Y29ubmVjdG9yICpjb25uZWN0b3IpCj4gPiA+ICAgCXJldHVybiByZXQ7Cj4gPiA+ICAgfQo+ID4g PiAtc3RhdGljIHZvaWQgaW50ZWxfaGRjcF9jaGVja193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAq d29yaykKPiA+ID4gLXsKPiA+ID4gLQlzdHJ1Y3QgaW50ZWxfaGRjcCAqaGRjcCA9IGNvbnRhaW5l cl9vZih0b19kZWxheWVkX3dvcmsod29yayksCj4gPiA+IC0JCQkJCSAgICAgICBzdHJ1Y3QgaW50 ZWxfaGRjcCwKPiA+ID4gLQkJCQkJICAgICAgIGNoZWNrX3dvcmspOwo+ID4gPiAtCXN0cnVjdCBp bnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciA9IGludGVsX2hkY3BfdG9fY29ubmVjdG9yKGhkY3Ap Owo+ID4gPiAtCj4gPiA+IC0JaWYgKCFpbnRlbF9oZGNwX2NoZWNrX2xpbmsoY29ubmVjdG9yKSkK PiA+ID4gLQkJc2NoZWR1bGVfZGVsYXllZF93b3JrKCZoZGNwLT5jaGVja193b3JrLAo+ID4gPiAt CQkJCSAgICAgIERSTV9IRENQX0NIRUNLX1BFUklPRF9NUyk7Cj4gPiA+IC19Cj4gPiBXaHkgbW92 ZSB0aGUgZnVuY3Rpb24/Cj4gCj4gVGhpcyB3aWxsIGJlIHVzZWQgYXMgY29tbW9uIHdvcmsgZm4g Zm9yIGJvdGggMS40IGFuZCAyLjIuIGhkY3AyX2NoZWNrX2xpbmsgd2lsbCBiZSBkZWZpbmVkIGJl bG93Lgo+IFNvIG1vdmluZyB0aGlzIHRvIHRoZSBncm91cCBvZiBjb21tb24gZnVuY3Rpb25zLiBC YXNpY2FsbHkgdG8gYXZvaWQgdGhlIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucy4KClllYWgsIGJ1dCBt b3ZpbmcgdGhlIGZ1bmN0aW9uIGRvd24gaXMgbmV2ZXIgcmVxdWlyZWQgdG8gYXZvaWQgYSBmb3J3 YXJkCmRlY2xhcmF0aW9uLiBJZiB5b3Ugd2FudCB0byBtb3ZlIGl0IGZvciBiZXR0ZXIgZ3JvdXBp bmcgdGhhdCBtYWtlcyBzZW5zZSwKYnV0IGFzLWlzIGl0IHdhcyBjb25mdXNpbmcuCgo+ID4gPiAt Cj4gPiA+ICAgc3RhdGljIHZvaWQgaW50ZWxfaGRjcF9wcm9wX3dvcmsoc3RydWN0IHdvcmtfc3Ry dWN0ICp3b3JrKQo+ID4gPiAgIHsKPiA+ID4gICAJc3RydWN0IGludGVsX2hkY3AgKmhkY3AgPSBj b250YWluZXJfb2Yod29yaywgc3RydWN0IGludGVsX2hkY3AsCj4gPiA+IEBAIC0xMDI4LDYgKzEw MzAsMjUgQEAgaW50IGhkY3AyX2RlYXV0aGVudGljYXRlX3BvcnQoc3RydWN0IGludGVsX2Nvbm5l Y3RvciAqY29ubmVjdG9yKQo+ID4gPiAgIAlyZXR1cm4gaGRjcDJfY2xvc2VfbWVpX3Nlc3Npb24o Y29ubmVjdG9yKTsKPiA+ID4gICB9Cj4gPiA+ICtzdGF0aWMgaW5saW5lIHZvaWQgX2ludGVsX2hk Y3BfY2hlY2tfd29yayhzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCj4gPiA+ICt7 Cj4gPiA+ICsJc3RydWN0IGludGVsX2hkY3AgKmhkY3AgPSAmY29ubmVjdG9yLT5oZGNwOwo+ID4g PiArCj4gPiA+ICsJaWYgKCFpbnRlbF9oZGNwX2NoZWNrX2xpbmsoY29ubmVjdG9yKSkKPiA+ID4g KwkJc2NoZWR1bGVfZGVsYXllZF93b3JrKCZoZGNwLT5jaGVja193b3JrLAo+ID4gPiArCQkJCSAg ICAgIERSTV9IRENQX0NIRUNLX1BFUklPRF9NUyk7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gK3N0 YXRpYyB2b2lkIGludGVsX2hkY3BfY2hlY2tfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmsp Cj4gPiA+ICt7Cj4gPiA+ICsJc3RydWN0IGludGVsX2hkY3AgKmhkY3AgPSBjb250YWluZXJfb2Yo dG9fZGVsYXllZF93b3JrKHdvcmspLAo+ID4gPiArCQkJCQkgICAgICAgc3RydWN0IGludGVsX2hk Y3AsCj4gPiA+ICsJCQkJCSAgICAgICBjaGVja193b3JrKTsKPiA+ID4gKwlzdHJ1Y3QgaW50ZWxf Y29ubmVjdG9yICpjb25uZWN0b3IgPSBpbnRlbF9oZGNwX3RvX2Nvbm5lY3RvcihoZGNwKTsKPiA+ ID4gKwo+ID4gPiArCV9pbnRlbF9oZGNwX2NoZWNrX3dvcmsoY29ubmVjdG9yKTsKPiA+ID4gK30K PiA+ID4gKwo+ID4gPiAgIHN0YXRpYyBpbnQgaTkxNV9oZGNwX2NvbXBvbmVudF9tYXRjaChzdHJ1 Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEpCj4gPiA+ICAgewo+ID4gPiAgIAlyZXR1cm4gIXN0 cmNtcChkZXYtPmRyaXZlci0+bmFtZSwgIm1laV9oZGNwIik7Cj4gPiA+IEBAIC0xMTU2LDcgKzEx NzcsOCBAQCBpbnQgaW50ZWxfaGRjcF9kaXNhYmxlKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNv bm5lY3RvcikKPiA+ID4gICAJaWYgKGhkY3AtPnZhbHVlICE9IERSTV9NT0RFX0NPTlRFTlRfUFJP VEVDVElPTl9VTkRFU0lSRUQpIHsKPiA+ID4gICAJCWhkY3AtPnZhbHVlID0gRFJNX01PREVfQ09O VEVOVF9QUk9URUNUSU9OX1VOREVTSVJFRDsKPiA+ID4gLQkJcmV0ID0gX2ludGVsX2hkY3BfZGlz YWJsZShjb25uZWN0b3IpOwo+ID4gPiArCQlpZiAoaGRjcC0+aGRjcF9lbmNyeXB0ZWQpCj4gPiA+ ICsJCQlyZXQgPSBfaW50ZWxfaGRjcF9kaXNhYmxlKGNvbm5lY3Rvcik7Cj4gPiA+ICAgCX0KPiA+ ID4gICAJbXV0ZXhfdW5sb2NrKCZoZGNwLT5tdXRleCk7Cj4gPiA+IEBAIC0xMTk2LDMgKzEyMTgs MzAgQEAgdm9pZCBpbnRlbF9oZGNwX2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAq Y29ubmVjdG9yLAo+ID4gPiAgIAkJCQkJCSAgIG5ld19zdGF0ZS0+Y3J0Yyk7Cj4gPiA+ICAgCWNy dGNfc3RhdGUtPm1vZGVfY2hhbmdlZCA9IHRydWU7Cj4gPiA+ICAgfQo+ID4gPiArCj4gPiA+ICsv KiBIYW5kbGVzIHRoZSBDUF9JUlEgcmFpc2VkIGZyb20gdGhlIERQIEhEQ1Agc2luayAqLwo+ID4g PiArdm9pZCBpbnRlbF9oZGNwX2hhbmRsZV9jcF9pcnEoc3RydWN0IGludGVsX2Nvbm5lY3RvciAq Y29ubmVjdG9yKQo+ID4gPiArewo+ID4gPiArCXN0cnVjdCBpbnRlbF9oZGNwICpoZGNwID0gJmNv bm5lY3Rvci0+aGRjcDsKPiA+ID4gKwo+ID4gPiArCWlmICghaGRjcC0+c2hpbSkKPiA+ID4gKwkJ cmV0dXJuOwo+ID4gPiArCj4gPiA+ICsJLyoKPiA+ID4gKwkgKiBBcyBvZiBub3cgd2Ugd2FudCB0 byBoYW5kbGUgQ1BfSVJRIHRyaWdnZXJlZCB3aGlsZSBlbmNyeXB0aW9uIGlzCj4gPiA+ICsJICog ZW5hYmxlZC4gVGhpcyBpbmNsdWRlcyB0aGUgbm90aWZpY2F0aW9uIGZvciBUb3BvbG9neSBjaGFu Z2UsCj4gPiA+ICsJICogTGluayBmYWlsdXJlLCByZWF1dGggcmVxdWVzdCBldGMuCj4gPiA+ICsJ ICogQXV0aCBtc2cgYXZhaWxhYmlsaXR5IG5vdGlmaWNhdGlvbnMgYXJlIGlnbm9yZWQgd2l0aCBt dXRleF90cnlsb2NrCj4gPiA+ICsJICogYXMgYXV0aGVudGljYXRpb24gaG9sZHMgdGhlIGxvY2su IExvY2sgbWlnaHQgYmUgdGFrZW4gZm9yIGxpbmsgY2hlY2sKPiA+ID4gKwkgKiBvciBoZGNwX2Rp c2FibGUgdG9vLiBJbiBlaXRoZXIgb2Ygc3RhdGUgd2UgbmVlZCBub3QgaGFuZGxlIHRoZQo+ID4g PiArCSAqIENQX0lSUSwgZm9yIGtub3duIHJlYXNvbnMuCj4gPiA+ICsJICovCj4gPiA+ICsJaWYg KCFtdXRleF90cnlsb2NrKCZoZGNwLT5tdXRleCkpCj4gPiBUaGlzIGlzIG5vdCBhIGdvb2Qgd2F5 IHRvIGZpeCByZWN1cnNpb25zLCBiZWNhdXNlIHRoZSBsb2NrIG1pZ2h0IGJlIGhlbGQKPiA+IGJ5 IHNvbWVvbmUgZWxzZSBmb3Igb3RoZXIgcmVhc29ucywgYW5kIHRoZW4geW91IGp1c3QgZHJvcCBl dmVudHMgb24gdGhlCj4gPiBmbG9vci4gV29yc2UsIHVzdWFsbHkgaXQgd29ya3MsIGV4Y2VwdCB3 aGVuIGl0IHN0b3BzIHdvcmtpbmcuCj4gCj4gVGhpcyBpcyBhdHRlbXB0IHRvIGRyb3AgdGhlIENQ X0lSUSByZWNlaXZlZCBkdXJpbmcgbXV0ZXggaXMgbG9ja2VkLiBCZWNhdXNlCj4gb2YgdGhlIGJl bG93IHJlYXNvbmluZzoKPiAKPiBUaGlzIG11dGV4IGlzIHRha2VuIGJ5IGF1dGhlbnRpY2F0aW9u IGVuYWJsZS9kaXNhYmxlIGFuZCBjaGVja19saW5rIHdvcmtlcgo+IAo+IHdoZW4gZW5hYmxlIGlz IGluIHByb2Nlc3MgdGhpcyBDUF9JUlEgd2lsbCBiZSBub3RpZnlpbmcgdGhlIG1zZyBhdmFpbGFi aWxpdHkgdG8gcmVhZC4gYXQgcHJlc2VudCB3ZSBkb250IHVzZSB0aGUgQ1BfSVJRIGZvciBtc2cg cmVhZC4KPiB3aGVuIGRpc2FibGUgaXMgaW4gcHJvY2VzcyBpdCBkb2Vzbid0IG1hdHRlciB3aHkg dGhpcyBDUF9JUlEgaXMgdHJpZ2dlcmVkLCB3ZSBqdXN0IHdhbnQgdG8gaWdub3JlLgo+IAo+IFdo ZW4gY2hlY2tfbGluayBpcyBpbiBwcm9ncmVzcywgdGhhdCBtZWFucyBoZGNwIGlzIGVuYWJsZWQu IFNvIHRoaXMgQ1BfSVJRIGlzIGZvciB0b3BvbG9neSBjaGFuZ2UvcmVhdXRoIHJlcXVlc3QgZXRj LAo+IHdoaWNoIGFyZSBoYW5kbGVkIGJ5IGNoZWNrX2xpbmsuIHNvIG9uY2UgYWdhaW4gd2UgZG9u dCBjYXJlIGZvciB0aGlzIENQX0lSUXMgdG9vLgo+IAo+IFNvIGJhc2ljYWxseSBpZiB0aGUgbXV0 ZXggaXMgYWxyZWFkeSB0YWtlbiB3ZSBjYW4gaWdub3JlL2Ryb3AgdGhlIENQX0lSUS4gU28gbXV0 ZXhfdHJ5bG9jayBoZWxwcyB1cyB0byBkbyB0aGlzLgo+IE1heSBiZSBJIHNob3VsZCBhZGQgYWxs IG9mIHRoZXNlIGluIHRoZSBjb21tZW50IT8KPiAKPiBXaGlsZSByZXRoaW5raW5nIG9uIHRoYXQg d2UgY2FuIHJlc2NoZWR1bGUgdGhlIGNoZWNrX2xpbmsgd29yayBvbiBldmVyeQo+IENQX0lSUS4g QXMgdGhpcyBpcyBoYXJtbGVzcyBpIHdpbGwgZG8gdGhhdC4gTWFrZXMgdGhpbmdzIHNpbXBsZS4K ClllYWggdGhhdCB3YXMgbXkgcG9pbnQ6IElmIHRoZSB3b3JrIGlzIGFscmVhZHkgcnVubmluZyB0 aGVuIHJlLXNjaGVkdWxpbmcKaXQgd29uJ3QgY2F1c2UgYWRkaXRpb25hbCB3b3JrLiBXaGVyZWFz IHlvdXIgbXV0ZXhfdHJ5bG9jayB0cmljayBhYm92ZQpzZXRzIG9mIGFsbCBraW5kcyBvZiBhbGFy bSBiZWxsIGFib3V0IHJhY2VzIGFuZCBjYXVzaW5nIGlzc3VlcyB3aGVuIHdlCl9kb18gd2FudCB0 byBoYW5kbGUgdGhlIENQX0lSUS4KCklmIHdlIGRvIG5lZWQgdGhpcyBvcHRpbWl6YXRpb24sIHRo ZW4gd2UgbmVlZCB0byByZXdvcmsgdGhlIENQX0lSUQpoYW5kbGluZyB0byBkbyBjaGVjayB0aGUg aW50ZXJydXB0IHNvdXJjZXMgYmVmb3JlIHNjaGVkdWxpbmcgdGhlIHdvcmssCndoaWNoIGlzIGdv aW5nIHRvIGJlIGNvbXBsaWNhdGVkIGJlY2F1c2UgbG9ja2luZy4gQW5kIHRoZW4gZmlsdGVyIG91 dCB0aGUKcmlnaHQgaW50ZXJydXB0IHNvdXJjZXMsIGFuZCBub3QgdXNlIHNvbWV0aGluZyB3aGlj aCBpcyBvbmx5IGNvcnJlY3QgaW4KOTklIG9mIGFsbCBjYXNlcyBsaWtlIG11dGV4X3RyeWxvY2su CgpXZSd2ZSBoYWQgb3RoZXIgc3VjaCBjb2RlIGluIGRybS9pOTE1IGFidXNpbmcgbXV0ZXhfdHJ5 bG9jaywgd29ya3MgZ3JlYXQKaW4gYSBxdWljayB0ZXN0IGxvY2FsbHksIGZhaWxzIGluIHByb2R1 Y3Rpb24sIHNvIEkgZG9uJ3QgbGlrZSB0aGF0IHRyaWNrCjotKQoKPiA+IFNpbmNlIHlvdSBhbHJl YWR5IGhhdmUgYSBzZXBhcmF0ZSB3b3JrZXIganVzdCBzY2hlZHVsZSB0aGF0IG9uZSwgYW5kIGxl YXZlCj4gPiBpdCB1cCB0byB0aGUgd29ya2VyIHRvIGZpbHRlciBvdXQgZXZlbnRzIHdlIGRvbid0 IGNhcmUgYWJvdXQuCj4gPiA+ICsJCXJldHVybjsKPiA+ID4gKwo+ID4gPiArCWlmICghaGRjcC0+ aGRjcF9lbmNyeXB0ZWQpCj4gPiA+ICsJCXJldHVybjsKPiA+IFRoaXMgY2hlY2sgd291bGQgbmVl ZCB0byBiZSBtb3ZlZCBpbnRlbF9oZGNwX2NoZWNrX2xpbmsoKS4KPiAKPiBGdW5jdGlvbiBoYXMg dGhlIGNoZWNrIGFscmVhZHkuIEkgY2FuIGF2b2lkIHRoZSBjaGVjayBoZXJlIGFuZCBkaXJlY3Rs eSBsYW5kCj4gaW50byBjaGVja19saW5rIHdvcmsgZm4uCgpZZWFoIHRoYXQncyB3aGF0IEkgbWVh bnQuCi1EYW5pZWwKCj4gCj4gLVJhbQo+IAo+ID4gPiArCj4gPiA+ICsJbXV0ZXhfdW5sb2NrKCZo ZGNwLT5tdXRleCk7Cj4gPiA+ICsJX2ludGVsX2hkY3BfY2hlY2tfd29yayhjb25uZWN0b3IpOwo+ ID4gU28gaW5zdGVhZCBvZiB0aGUgZGlyZWN0IGNhbGwgd2UgbmVlZCBhIHNjaGVkdWxlX3dvcmso KSBoZXJlICh3aXRob3V0Cj4gPiBkZWxheSBvZmMpLiBOb3RlIHRoYXQgaWYgdGhlIHdvcmsgaXMg YWxyZWFkeSBzY2hlZHVsZWQgaXQgd29uJ3QgYmUKPiA+IHNjaGVkdWxlZCB0byBydW4gdHdpY2Us IHNvIHNob3VsZCBqdXN0IHdvcmsgYXMtaXMgSSB0aGluay4KPiA+IC1EYW5pZWwKPiA+ID4gK30K PiA+ID4gLS0gCj4gPiA+IDIuNy40Cj4gPiA+IAoKLS0gCkRhbmllbCBWZXR0ZXIKU29mdHdhcmUg RW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCmh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5n IGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=