From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH v8 06/35] drm/i915: Enable and Disable of HDCP2.2 Date: Thu, 6 Dec 2018 11:30:42 +0100 Message-ID: <20181206103042.GP21184@phenom.ffwll.local> References: <1543315413-24302-1-git-send-email-ramalingam.c@intel.com> <1543315413-24302-7-git-send-email-ramalingam.c@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wr1-x444.google.com (mail-wr1-x444.google.com [IPv6:2a00:1450:4864:20::444]) by gabe.freedesktop.org (Postfix) with ESMTPS id C76976E578 for ; Thu, 6 Dec 2018 10:38:16 +0000 (UTC) Received: by mail-wr1-x444.google.com with SMTP id r10so22695363wrs.10 for ; Thu, 06 Dec 2018 02:38:16 -0800 (PST) Content-Disposition: inline In-Reply-To: <1543315413-24302-7-git-send-email-ramalingam.c@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Ramalingam C 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: dri-devel@lists.freedesktop.org T24gVHVlLCBOb3YgMjcsIDIwMTggYXQgMDQ6MTM6MDRQTSArMDUzMCwgUmFtYWxpbmdhbSBDIHdy b3RlOgo+IENvbnNpZGVyaW5nIHRoYXQgSERDUDIuMiBpcyBtb3JlIHNlY3VyZSB0aGFuIEhEQ1Ax LjQsIFdoZW4gYSBzZXR1cAo+IHN1cHBvcnRzIEhEQ1AyLjIgYW5kIEhEQ1AxLjQsIEhEQ1AyLjIg d2lsbCBiZSBlbmFibGVkLgo+IAo+IFdoZW4gSERDUDIuMiBlbmFibGluZyBmYWlscyBhbmQgSERD UDEuNCBpcyBzdXBwb3J0ZWQsIEhEQ1AxLjQgaXMKPiBlbmFibGVkLgo+IAo+IFRoaXMgY2hhbmdl IGltcGxlbWVudHMgYSBzZXF1ZW5jZSBvZiBlbmFibGluZyBhbmQgZGlzYWJsaW5nIG9mCj4gSERD UDIuMiBhdXRoZW50aWNhdGlvbiBhbmQgSERDUDIuMiBwb3J0IGVuY3J5cHRpb24uCgpQYXRjaCBz ZXJpZXMgc3VnZ2VzdGlvbiBmb3IgbmV4dCB0aW1lIGFyb3VuZDogRmlyc3QgYnVpbGQgb3V0IHRo ZSBoZWxwZXIKZnVuY3Rpb25zLCB0aGVuIHRpbWUgdGhlbSBpbnRvIHRoZSBiaWcgcGljdHVyZSBs aWtlIGhlcmUuIFBlcnNvbmFsbHkgSQp0aGluayB0aGF0IG1ha2VzIGl0IGVhc2llciB0byB1bmRl cnN0YW5kLCBidXQgaXQncyBraW5kYSBwZXJzb25hbCBjaG9pY2UuCkkgZ3Vlc3MgdGhpcyBoZXJl IHdvcmtzIHRvby4KCj4gCj4gdjI6Cj4gICBJbmNsdWRlZCBmZXcgb3B0aW1pemF0aW9uIHN1Z2dl c3Rpb25zIFtDaHJpcyBXaWxzb25dCj4gICBDb21taXQgbWVzc2FnZSBpcyB1cGRhdGVkIGFzIHBl ciB0aGUgcmViYXNlZCB2ZXJzaW9uLgo+ICAgaW50ZWxfd2FpdF9mb3JfcmVnaXN0ZXIgaXMgdXNl ZCBpbnN0ZWFkIG9mIHdhaXRfZm9yLiBbQ2hyaXMgV2lsc29uXQo+IHYzOgo+ICAgTm8gY2hhbmdl cy4KPiB2NDoKPiAgIEV4dHJhIGNvbW1lbnQgYWRkZWQgYW5kIFN0eWxlIGlzc3VlIGZpeGVkIFtV bWFdCj4gdjU6Cj4gICBSZWJhc2VkIGFzIHBhcnQgb2YgcGF0Y2ggcmVvcmRlcmluZy4KPiAgIEhE Q1AyIGVuY3J5cHRpb24gc3RhdHVzIGlzIHRyYWNrZWQuCj4gICBIVyBzdGF0ZSBjaGVjayBpcyBt b3ZlZCBpbnRvIFdBUk5fT04gW0RhbmllbF0KPiB2NjoKPiAgIFJlZGVmaW5lZCB0aGUgbWVpIHNl cnZpY2UgZnVuY3Rpb25zIGFzIHBlciBjb21wIHJlZGVzaWduLgo+ICAgTWVyZ2VkIHBhdGNoZXMg cmVsYXRlZCB0byBoZGNwMi4yIGVuYWJsaW5nIGFuZCBkaXNhYmxpbmcgW1NlYW4gUGF1bF0uCj4g ICBSZXF1aXJlZCBzaGltIGZ1bmN0aW9uYWxpdHkgaXMgZGVmaW5lZCBbU2VhbiBQYXVsXQo+IHY3 Ogo+ICAgUmV0dXJuIHZhbHVlcyBhcmUgaGFuZGxlcyBbVW1hXQo+ICAgUmVhbGlnbmVkIHRoZSBj b2RlLgo+ICAgQ2hlY2sgZm9yIGNvbXBfbWFzdGVyIGlzIHJlbW92ZWQuCj4gdjg6Cj4gICBIRENQ Mi4yIGlzIGF0dGVtcHRlZCBvbmx5IGlmIG1laSBpbnRlcmZhY2UgaXMgdXAuCj4gICBBZGp1c3Qg dG8gdGhlIG5ldyBpbnRlcmZhY2UKPiAgIEF2b2lkIGJvb2wgdXNhZ2UgaW4gc3RydWN0IFtUb21h c10KPiAKPiBTaWduZWQtb2ZmLWJ5OiBSYW1hbGluZ2FtIEMgPHJhbWFsaW5nYW0uY0BpbnRlbC5j b20+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICB8ICAgNSArCj4g IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkY3AuYyB8IDIyMyArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKy0tLQo+ICAyIGZpbGVzIGNoYW5nZWQsIDIxNCBpbnNlcnRpb25z KCspLCAxNCBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IGluZGV4 IGJkZTgyZjNhZGE4NS4uM2U5ZjIxZDIzNDQyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2 LmgKPiBAQCAtMzgzLDYgKzM4MywxMCBAQCBzdHJ1Y3QgaW50ZWxfaGRjcF9zaGltIHsKPiAgCj4g IAkvKiBEZXRlY3RzIHRoZSBIRENQIHByb3RvY29sKERQL0hETUkpIHJlcXVpcmVkIG9uIHRoZSBw b3J0ICovCj4gIAllbnVtIG1laV9oZGNwX3dpcmVkX3Byb3RvY29sICgqaGRjcF9wcm90b2NvbCko dm9pZCk7Cj4gKwo+ICsJLyogRGV0ZWN0cyB3aGV0aGVyIFBhbmVsIGlzIEhEQ1AyLjIgY2FwYWJs ZSAqLwo+ICsJaW50ICgqaGRjcF8yXzJfY2FwYWJsZSkoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9y dCAqaW50ZWxfZGlnX3BvcnQsCj4gKwkJCQlib29sICpjYXBhYmxlKTsKPiAgfTsKPiAgCj4gIHN0 cnVjdCBpbnRlbF9oZGNwIHsKPiBAQCAtMzk2LDYgKzQwMCw3IEBAIHN0cnVjdCBpbnRlbF9oZGNw IHsKPiAgCS8qIEhEQ1AyLjIgcmVsYXRlZCBkZWZpbml0aW9ucyAqLwo+ICAJLyogRmxhZyBpbmRp Y2F0ZXMgd2hldGhlciB0aGlzIGNvbm5lY3RvciBzdXBwb3J0cyBIRENQMi4yIG9yIG5vdC4gKi8K PiAgCXU4IGhkY3AyX3N1cHBvcnRlZDsKPiArCXU4IGhkY3AyX2luX3VzZTsKPiAgCj4gIAkvKgo+ ICAJICogQ29udGVudCBTdHJlYW0gVHlwZSBkZWZpbmVkIGJ5IGNvbnRlbnQgb3duZXIuIFRZUEUw KDB4MCkgY29udGVudCBjYW4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfaGRjcC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRjcC5jCj4gaW5kZXggNzYw NzgwZjExMDVjLi5jMWJkMWNjZDQ3Y2QgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfaGRjcC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRjcC5j Cj4gQEAgLTc5LDYgKzc5LDQzIEBAIGJvb2wgaW50ZWxfaGRjcF9jYXBhYmxlKHN0cnVjdCBpbnRl bF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiAgCXJldHVybiBjYXBhYmxlOwo+ICB9Cj4gIAo+ICsv KiBBdCBwcmVzZW50IHdoZXRoZXIgbWVpX2hkY3AgY29tcG9uZW50IGlzIGJpbmRlZCB3aXRoIGk5 MTUgbWFzdGVyIGNvbXBvbmVudCAqLwo+ICtzdGF0aWMgYm9vbCBpbnRlbF9oZGNwMl9tZWlfYmlu ZGVkKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiArewo+ICsJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjb25uZWN0b3ItPmJhc2UuZGV2KTsK PiArCXN0cnVjdCBpOTE1X2hkY3BfY29tcG9uZW50X21hc3RlciAqY29tcCA9IGRldl9wcml2LT5o ZGNwX2NvbXA7Cj4gKwo+ICsJbXV0ZXhfbG9jaygmY29tcC0+bXV0ZXgpOwo+ICsJaWYgKCFjb21w LT5vcHMgfHwgIWNvbXAtPmRldikgewo+ICsJCW11dGV4X3VubG9jaygmY29tcC0+bXV0ZXgpOwo+ ICsJCXJldHVybiBmYWxzZTsKPiArCX0KPiArCW11dGV4X3VubG9jaygmY29tcC0+bXV0ZXgpOwo+ ICsKPiArCXJldHVybiB0cnVlOwo+ICt9Cj4gKwo+ICsvKiBJcyBIRENQMi4yIGNhcGFibGUgb24g UGxhdGZvcm0gYW5kIFNpbmsgKi8KPiArc3RhdGljIGJvb2wgaW50ZWxfaGRjcDJfY2FwYWJsZShz dHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCj4gK3sKPiArCXN0cnVjdCBpbnRlbF9k aWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0ID0gY29ubl90b19kaWdfcG9ydChjb25uZWN0b3Ip Owo+ICsJc3RydWN0IGludGVsX2hkY3AgKmhkY3AgPSAmY29ubmVjdG9yLT5oZGNwOwo+ICsJYm9v bCBjYXBhYmxlID0gZmFsc2U7Cj4gKwo+ICsJLyogSTkxNSBzdXBwb3J0IGZvciBIRENQMi4yICov Cj4gKwlpZiAoIWhkY3AtPmhkY3AyX3N1cHBvcnRlZCkKPiArCQlyZXR1cm4gZmFsc2U7Cj4gKwo+ ICsJLyogTUVJIHNlcnZpY2VzIGZvciBIRENQMi4yICovCj4gKwlpZiAoIWludGVsX2hkY3AyX21l aV9iaW5kZWQoY29ubmVjdG9yKSkKPiArCQlyZXR1cm4gZmFsc2U7CgpXaHkgZG8gd2Ugc3RpbGwg bmVlZCB0aGlzIHdpdGggY29tcG9uZW50PyBEcml2ZXIgbG9hZCBzaG91bGQgYmUgc3RhbGxlZApv dXQgdW50aWwgaXQncyBhbGwgdGhlcmUsIHRoYXQgd2FzIGtpbmRhIHRoZSBlbnRpcmUgcG9pbnQg b2YgY29tcG9uZW50LApzbyB3ZSBkb24ndCBoYXZlIHRvIHJlY2hlY2sgYWxsIHRoZSB0aW1lIHdo ZXRoZXIgaGRjcDIgaXMgc3RpbGwgdGhlcmUgb3IKbm90LgoKPiArCj4gKwkvKiBTaW5rJ3MgY2Fw YWJpbGl0eSBmb3IgSERDUDIuMiAqLwo+ICsJaGRjcC0+c2hpbS0+aGRjcF8yXzJfY2FwYWJsZShp bnRlbF9kaWdfcG9ydCwgJmNhcGFibGUpOwo+ICsKPiArCXJldHVybiBjYXBhYmxlOwo+ICt9Cj4g Kwo+ICBzdGF0aWMgaW50IGludGVsX2hkY3BfcG9sbF9rc3ZfZmlmbyhzdHJ1Y3QgaW50ZWxfZGln aXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCwKPiAgCQkJCSAgICBjb25zdCBzdHJ1Y3QgaW50ZWxf aGRjcF9zaGltICpzaGltKQo+ICB7Cj4gQEAgLTExMTQsOCArMTE1MSw3IEBAIGludCBoZGNwMl9h dXRoZW50aWNhdGVfcG9ydChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCj4gIAly ZXR1cm4gcmV0Owo+ICB9Cj4gIAo+IC1zdGF0aWMgX19hdHRyaWJ1dGVfXygodW51c2VkKSkKPiAt aW50IGhkY3AyX2Nsb3NlX21laV9zZXNzaW9uKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5l Y3RvcikKPiArc3RhdGljIGludCBoZGNwMl9jbG9zZV9tZWlfc2Vzc2lvbihzdHJ1Y3QgaW50ZWxf Y29ubmVjdG9yICpjb25uZWN0b3IpCj4gIHsKPiAgCXN0cnVjdCBtZWlfaGRjcF9kYXRhICpkYXRh ID0gJmNvbm5lY3Rvci0+aGRjcC5tZWlfZGF0YTsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IHRvX2k5MTUoY29ubmVjdG9yLT5iYXNlLmRldik7Cj4gQEAgLTExMzcsMTIg KzExNzMsMTU3IEBAIGludCBoZGNwMl9jbG9zZV9tZWlfc2Vzc2lvbihzdHJ1Y3QgaW50ZWxfY29u bmVjdG9yICpjb25uZWN0b3IpCj4gIAlyZXR1cm4gcmV0Owo+ICB9Cj4gIAo+IC1zdGF0aWMgX19h dHRyaWJ1dGVfXygodW51c2VkKSkKPiAtaW50IGhkY3AyX2RlYXV0aGVudGljYXRlX3BvcnQoc3Ry dWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ICtzdGF0aWMgaW50IGhkY3AyX2RlYXV0 aGVudGljYXRlX3BvcnQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ICB7Cj4g IAlyZXR1cm4gaGRjcDJfY2xvc2VfbWVpX3Nlc3Npb24oY29ubmVjdG9yKTsKPiAgfQo+ICAKPiAr c3RhdGljIGludCBoZGNwMl9hdXRoZW50aWNhdGVfc2luayhzdHJ1Y3QgaW50ZWxfY29ubmVjdG9y ICpjb25uZWN0b3IpCj4gK3sKPiArCURSTV9FUlJPUigiU2luayBhdXRoZW50aWNhdGlvbiBpcyBk b25lIGluIHN1YnNlcXVlbnQgcGF0Y2hlc1xuIik7Cj4gKwo+ICsJcmV0dXJuIC1FSU5WQUw7Cj4g K30KPiArCj4gK3N0YXRpYyBpbnQgaGRjcDJfZW5hYmxlX2VuY3J5cHRpb24oc3RydWN0IGludGVs X2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ICt7Cj4gKwlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0 ICppbnRlbF9kaWdfcG9ydCA9IGNvbm5fdG9fZGlnX3BvcnQoY29ubmVjdG9yKTsKPiArCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY29ubmVjdG9yLT5iYXNlLmRl dik7Cj4gKwlzdHJ1Y3QgaW50ZWxfaGRjcCAqaGRjcCA9ICZjb25uZWN0b3ItPmhkY3A7Cj4gKwll bnVtIHBvcnQgcG9ydCA9IGNvbm5lY3Rvci0+ZW5jb2Rlci0+cG9ydDsKPiArCWludCByZXQ7Cj4g Kwo+ICsJV0FSTl9PTihJOTE1X1JFQUQoSERDUDJfU1RBVFVTX0RESShwb3J0KSkgJiBMSU5LX0VO Q1JZUFRJT05fU1RBVFVTKTsKPiArCj4gKwlpZiAoaGRjcC0+c2hpbS0+dG9nZ2xlX3NpZ25hbGxp bmcpIHsKPiArCQlyZXQgPSBoZGNwLT5zaGltLT50b2dnbGVfc2lnbmFsbGluZyhpbnRlbF9kaWdf cG9ydCwgdHJ1ZSk7Cj4gKwkJaWYgKHJldCkgewo+ICsJCQlEUk1fRVJST1IoIkZhaWxlZCB0byBl bmFibGUgSERDUCBzaWduYWxsaW5nLiAlZFxuIiwKPiArCQkJCSAgcmV0KTsKPiArCQkJcmV0dXJu IHJldDsKPiArCQl9Cj4gKwl9Cj4gKwo+ICsJaWYgKEk5MTVfUkVBRChIRENQMl9TVEFUVVNfRERJ KHBvcnQpKSAmIExJTktfQVVUSF9TVEFUVVMpIHsKPiArCQkvKiBMaW5rIGlzIEF1dGhlbnRpY2F0 ZWQuIE5vdyBzZXQgZm9yIEVuY3J5cHRpb24gKi8KPiArCQlJOTE1X1dSSVRFKEhEQ1AyX0NUTF9E REkocG9ydCksCj4gKwkJCSAgIEk5MTVfUkVBRChIRENQMl9DVExfRERJKHBvcnQpKSB8Cj4gKwkJ CSAgIENUTF9MSU5LX0VOQ1JZUFRJT05fUkVRKTsKPiArCX0KPiArCj4gKwlyZXQgPSBpbnRlbF93 YWl0X2Zvcl9yZWdpc3RlcihkZXZfcHJpdiwgSERDUDJfU1RBVFVTX0RESShwb3J0KSwKPiArCQkJ CSAgICAgIExJTktfRU5DUllQVElPTl9TVEFUVVMsCj4gKwkJCQkgICAgICBMSU5LX0VOQ1JZUFRJ T05fU1RBVFVTLAo+ICsJCQkJICAgICAgVElNRV9GT1JfRU5DUllQVF9TVEFUVVNfQ0hBTkdFKTsK PiArCj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGhkY3AyX2Rpc2FibGVf ZW5jcnlwdGlvbihzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCj4gK3sKPiArCXN0 cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0ID0gY29ubl90b19kaWdfcG9y dChjb25uZWN0b3IpOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9f aTkxNShjb25uZWN0b3ItPmJhc2UuZGV2KTsKPiArCXN0cnVjdCBpbnRlbF9oZGNwICpoZGNwID0g JmNvbm5lY3Rvci0+aGRjcDsKPiArCWVudW0gcG9ydCBwb3J0ID0gY29ubmVjdG9yLT5lbmNvZGVy LT5wb3J0Owo+ICsJaW50IHJldDsKPiArCj4gKwlXQVJOX09OKCEoSTkxNV9SRUFEKEhEQ1AyX1NU QVRVU19EREkocG9ydCkpICYgTElOS19FTkNSWVBUSU9OX1NUQVRVUykpOwo+ICsKPiArCUk5MTVf V1JJVEUoSERDUDJfQ1RMX0RESShwb3J0KSwKPiArCQkgICBJOTE1X1JFQUQoSERDUDJfQ1RMX0RE SShwb3J0KSkgJiB+Q1RMX0xJTktfRU5DUllQVElPTl9SRVEpOwo+ICsKPiArCXJldCA9IGludGVs X3dhaXRfZm9yX3JlZ2lzdGVyKGRldl9wcml2LCBIRENQMl9TVEFUVVNfRERJKHBvcnQpLAo+ICsJ CQkJICAgICAgTElOS19FTkNSWVBUSU9OX1NUQVRVUywgMHgwLAo+ICsJCQkJICAgICAgVElNRV9G T1JfRU5DUllQVF9TVEFUVVNfQ0hBTkdFKTsKPiArCWlmIChyZXQgPT0gLUVUSU1FRE9VVCkKPiAr CQlEUk1fREVCVUdfS01TKCJEaXNhYmxlIEVuY3J5cHRpb24gVGltZWRvdXQiKTsKPiArCj4gKwlp ZiAoaGRjcC0+c2hpbS0+dG9nZ2xlX3NpZ25hbGxpbmcpIHsKPiArCQlyZXQgPSBoZGNwLT5zaGlt LT50b2dnbGVfc2lnbmFsbGluZyhpbnRlbF9kaWdfcG9ydCwgZmFsc2UpOwo+ICsJCWlmIChyZXQp IHsKPiArCQkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gZGlzYWJsZSBIRENQIHNpZ25hbGxpbmcuICVk XG4iLAo+ICsJCQkJICByZXQpOwo+ICsJCQlyZXR1cm4gcmV0Owo+ICsJCX0KPiArCX0KPiArCj4g KwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGhkY3AyX2F1dGhlbnRpY2F0ZV9h bmRfZW5jcnlwdChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCj4gK3sKPiArCWlu dCByZXQsIGksIHRyaWVzID0gMzsKPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgdHJpZXM7IGkrKykg ewo+ICsJCXJldCA9IGhkY3AyX2F1dGhlbnRpY2F0ZV9zaW5rKGNvbm5lY3Rvcik7Cj4gKwkJaWYg KCFyZXQpCj4gKwkJCWJyZWFrOwo+ICsKPiArCQkvKiBDbGVhcmluZyB0aGUgbWVpIGhkY3Agc2Vz c2lvbiAqLwo+ICsJCURSTV9ERUJVR19LTVMoIkhEQ1AyLjIgQXV0aCAlZCBvZiAlZCBGYWlsZWQu KCVkKVxuIiwKPiArCQkJICAgICAgaSArIDEsIHRyaWVzLCByZXQpOwo+ICsJCWlmIChoZGNwMl9k ZWF1dGhlbnRpY2F0ZV9wb3J0KGNvbm5lY3RvcikgPCAwKQo+ICsJCQlEUk1fREVCVUdfS01TKCJQ b3J0IGRlYXV0aCBmYWlsZWQuXG4iKTsKPiArCX0KPiArCj4gKwlpZiAoaSAhPSB0cmllcykgewo+ ICsJCS8qCj4gKwkJICogRW5zdXJpbmcgdGhlIHJlcXVpcmVkIDIwMG1TZWMgbWluIHRpbWUgaW50 ZXJ2YWwgYmV0d2Vlbgo+ICsJCSAqIFNlc3Npb24gS2V5IEV4Y2hhbmdlIGFuZCBlbmNyeXB0aW9u Lgo+ICsJCSAqLwo+ICsJCW1zbGVlcChIRENQXzJfMl9ERUxBWV9CRUZPUkVfRU5DUllQVElPTl9F Tik7Cj4gKwkJcmV0ID0gaGRjcDJfZW5hYmxlX2VuY3J5cHRpb24oY29ubmVjdG9yKTsKPiArCQlp ZiAocmV0IDwgMCkgewo+ICsJCQlEUk1fREVCVUdfS01TKCJFbmNyeXB0aW9uIEVuYWJsZSBGYWls ZWQuKCVkKVxuIiwgcmV0KTsKPiArCQkJaWYgKGhkY3AyX2RlYXV0aGVudGljYXRlX3BvcnQoY29u bmVjdG9yKSA8IDApCj4gKwkJCQlEUk1fREVCVUdfS01TKCJQb3J0IGRlYXV0aCBmYWlsZWQuXG4i KTsKPiArCQl9Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIHJldDsKPiArfQo+ICsKPiArc3RhdGljIGlu dCBfaW50ZWxfaGRjcDJfZW5hYmxlKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikK PiArewo+ICsJc3RydWN0IGludGVsX2hkY3AgKmhkY3AgPSAmY29ubmVjdG9yLT5oZGNwOwo+ICsJ aW50IHJldDsKPiArCj4gKwlEUk1fREVCVUdfS01TKCJbJXM6JWRdIEhEQ1AyLjIgaXMgYmVpbmcg ZW5hYmxlZC4gVHlwZTogJWRcbiIsCj4gKwkJICAgICAgY29ubmVjdG9yLT5iYXNlLm5hbWUsIGNv bm5lY3Rvci0+YmFzZS5iYXNlLmlkLAo+ICsJCSAgICAgIGhkY3AtPmNvbnRlbnRfdHlwZSk7Cj4g Kwo+ICsJcmV0ID0gaGRjcDJfYXV0aGVudGljYXRlX2FuZF9lbmNyeXB0KGNvbm5lY3Rvcik7Cj4g KwlpZiAocmV0KSB7Cj4gKwkJRFJNX0RFQlVHX0tNUygiSERDUDIgVHlwZSVkICBFbmFibGluZyBG YWlsZWQuICglZClcbiIsCj4gKwkJCSAgICAgIGhkY3AtPmNvbnRlbnRfdHlwZSwgcmV0KTsKPiAr CQlyZXR1cm4gcmV0Owo+ICsJfQo+ICsKPiArCURSTV9ERUJVR19LTVMoIlslczolZF0gSERDUDIu MiBpcyBlbmFibGVkLiBUeXBlICVkXG4iLAo+ICsJCSAgICAgIGNvbm5lY3Rvci0+YmFzZS5uYW1l LCBjb25uZWN0b3ItPmJhc2UuYmFzZS5pZCwKPiArCQkgICAgICBoZGNwLT5jb250ZW50X3R5cGUp Owo+ICsKPiArCWhkY3AtPmhkY3AyX2luX3VzZSA9IHRydWU7Cj4gKwlyZXR1cm4gMDsKPiArfQo+ ICsKPiArc3RhdGljIGludCBfaW50ZWxfaGRjcDJfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfY29ubmVj dG9yICpjb25uZWN0b3IpCj4gK3sKPiArCWludCByZXQ7Cj4gKwo+ICsJRFJNX0RFQlVHX0tNUygi WyVzOiVkXSBIRENQMi4yIGlzIGJlaW5nIERpc2FibGVkXG4iLAo+ICsJCSAgICAgIGNvbm5lY3Rv ci0+YmFzZS5uYW1lLCBjb25uZWN0b3ItPmJhc2UuYmFzZS5pZCk7Cj4gKwo+ICsJcmV0ID0gaGRj cDJfZGlzYWJsZV9lbmNyeXB0aW9uKGNvbm5lY3Rvcik7Cj4gKwo+ICsJaWYgKGhkY3AyX2RlYXV0 aGVudGljYXRlX3BvcnQoY29ubmVjdG9yKSA8IDApCj4gKwkJRFJNX0RFQlVHX0tNUygiUG9ydCBk ZWF1dGggZmFpbGVkLlxuIik7Cj4gKwo+ICsJY29ubmVjdG9yLT5oZGNwLmhkY3AyX2luX3VzZSA9 IGZhbHNlOwo+ICsKPiArCXJldHVybiByZXQ7Cj4gK30KPiArCj4gIHN0YXRpYyBpbnQgaTkxNV9o ZGNwX2NvbXBvbmVudF9tYXN0ZXJfYmluZChzdHJ1Y3QgZGV2aWNlICpkZXYpCj4gIHsKPiAgCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGtkZXZfdG9faTkxNShkZXYpOwo+IEBA IC0xMzQyLDIyICsxNTIzLDMzIEBAIHZvaWQgaW50ZWxfaGRjcF9leGl0KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKPiAgaW50IGludGVsX2hkY3BfZW5hYmxlKHN0cnVjdCBpbnRl bF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiAgewo+ICAJc3RydWN0IGludGVsX2hkY3AgKmhkY3Ag PSAmY29ubmVjdG9yLT5oZGNwOwo+IC0JaW50IHJldDsKPiArCWludCByZXQgPSAtRUlOVkFMOwo+ ICAKPiAgCWlmICghaGRjcC0+c2hpbSkKPiAgCQlyZXR1cm4gLUVOT0VOVDsKPiAgCj4gIAltdXRl eF9sb2NrKCZoZGNwLT5tdXRleCk7Cj4gIAo+IC0JcmV0ID0gX2ludGVsX2hkY3BfZW5hYmxlKGNv bm5lY3Rvcik7Cj4gLQlpZiAocmV0KQo+IC0JCWdvdG8gb3V0Owo+ICsJLyoKPiArCSAqIENvbnNp ZGVyaW5nIHRoYXQgSERDUDIuMiBpcyBtb3JlIHNlY3VyZSB0aGFuIEhEQ1AxLjQsIElmIHRoZSBz ZXR1cAo+ICsJICogaXMgY2FwYWJsZSBvZiBIRENQMi4yLCBpdCBpcyBwcmVmZXJyZWQgdG8gdXNl IEhEQ1AyLjIuCj4gKwkgKi8KPiArCWlmIChpbnRlbF9oZGNwMl9jYXBhYmxlKGNvbm5lY3Rvcikp Cj4gKwkJcmV0ID0gX2ludGVsX2hkY3AyX2VuYWJsZShjb25uZWN0b3IpOwo+ICsKPiArCS8qIFdo ZW4gSERDUDIuMiBmYWlscywgSERDUDEuNCB3aWxsIGJlIGF0dGVtcHRlZCAqLwo+ICsJaWYgKHJl dCAmJiBpbnRlbF9oZGNwX2NhcGFibGUoY29ubmVjdG9yKSkgewo+ICsJCXJldCA9IF9pbnRlbF9o ZGNwX2VuYWJsZShjb25uZWN0b3IpOwo+ICsJCWlmICghcmV0KQo+ICsJCQlzY2hlZHVsZV9kZWxh eWVkX3dvcmsoJmhkY3AtPmNoZWNrX3dvcmssCj4gKwkJCQkJICAgICAgRFJNX0hEQ1BfQ0hFQ0tf UEVSSU9EX01TKTsKPiArCX0KPiArCj4gKwlpZiAoIXJldCkgewo+ICsJCWhkY3AtPnZhbHVlID0g RFJNX01PREVfQ09OVEVOVF9QUk9URUNUSU9OX0VOQUJMRUQ7Cj4gKwkJc2NoZWR1bGVfd29yaygm aGRjcC0+cHJvcF93b3JrKTsKPiArCX0KPiAgCj4gLQloZGNwLT52YWx1ZSA9IERSTV9NT0RFX0NP TlRFTlRfUFJPVEVDVElPTl9FTkFCTEVEOwo+IC0Jc2NoZWR1bGVfd29yaygmaGRjcC0+cHJvcF93 b3JrKTsKPiAtCXNjaGVkdWxlX2RlbGF5ZWRfd29yaygmaGRjcC0+Y2hlY2tfd29yaywKPiAtCQkJ ICAgICAgRFJNX0hEQ1BfQ0hFQ0tfUEVSSU9EX01TKTsKPiAtb3V0Ogo+ICAJbXV0ZXhfdW5sb2Nr KCZoZGNwLT5tdXRleCk7Cj4gIAlyZXR1cm4gcmV0Owo+ICB9Cj4gQEAgLTEzNzQsNyArMTU2Niwx MCBAQCBpbnQgaW50ZWxfaGRjcF9kaXNhYmxlKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5l Y3RvcikKPiAgCj4gIAlpZiAoaGRjcC0+dmFsdWUgIT0gRFJNX01PREVfQ09OVEVOVF9QUk9URUNU SU9OX1VOREVTSVJFRCkgewo+ICAJCWhkY3AtPnZhbHVlID0gRFJNX01PREVfQ09OVEVOVF9QUk9U RUNUSU9OX1VOREVTSVJFRDsKPiAtCQlyZXQgPSBfaW50ZWxfaGRjcF9kaXNhYmxlKGNvbm5lY3Rv cik7Cj4gKwkJaWYgKGhkY3AtPmhkY3AyX2luX3VzZSkKPiArCQkJcmV0ID0gX2ludGVsX2hkY3Ay X2Rpc2FibGUoY29ubmVjdG9yKTsKPiArCQllbHNlCj4gKwkJCXJldCA9IF9pbnRlbF9oZGNwX2Rp c2FibGUoY29ubmVjdG9yKTsKCkxvb2tzIHJlYXNvbmFibGUuIFNvIG9uZSB0aGluZyB3ZSBjb3Vs ZCBiZSBkb2luZyBpcyBhbHJlYWR5IGludGVybmFsbHkKaGF2ZSBhIERSTV9NT0RFX0NPTlRFTlRf UFJPVEVDVElPTl9FTkFCTEVEX1RZUEUxIGZvciBoZGNwMi4gQnV0IHRoZSB1YXBpCndvdWxkIG9u bHkgcmV0dXJuIF9FTkFCTEVEIHRvIHVzZXJzcGFjZS4gQnV0IGZvciBpbnRlcm5hbCB0cmFja2lu ZyB0aGlzCndvdWxkIGF2b2lkIHRoZSBuZWVkIGZvciB0aGUgc2VwYXJhdGUgaGRjcDJfaW5fdXNl IHZhcmlhYmxlLgoKUHJvYmFibHkgZ29vZCBjbGVhbnVwL3ByZXAgcGF0Y2ggZm9yIHRoZSB0eXBl MC8xIHVhcGkgZXh0ZW5zaW9uLCBvbmNlIHdlCmdldCB0aGVyZS4KCkFzaWRlIGZyb20gdGhlIGNv bXBvbmVudCBpbnRlcmdyYXRpb24gcXVlc3Rpb24gc2VlbXMgYWxsIHJlYXNvbmFibGUuIEJ1dCBJ CmRpZG4ndCB5ZXQgcmV2aWV3IHRoZSBoZGNwMiBmbG93LCB3aWxsIGRvIHRoYXQgb25jZSBpdCdz IG1vcmUgY29tcGxldGUgaW4KbGF0ZXIgcGF0Y2hlcy4KLURhbmllbAoKPiAgCX0KPiAgCj4gIAlt dXRleF91bmxvY2soJmhkY3AtPm11dGV4KTsKPiAtLSAKPiAyLjcuNAo+IAoKLS0gCkRhbmllbCBW ZXR0ZXIKU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCmh0dHA6Ly9ibG9nLmZm d2xsLmNoCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRy aS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRw czovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=