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: Fri, 7 Dec 2018 15:33:25 +0100 Message-ID: <20181207143325.GG21184@phenom.ffwll.local> 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" Content-Transfer-Encoding: base64 Return-path: Received: from mail-ed1-x544.google.com (mail-ed1-x544.google.com [IPv6:2a00:1450:4864:20::544]) by gabe.freedesktop.org (Postfix) with ESMTPS id C8A326E796 for ; Fri, 7 Dec 2018 14:33:29 +0000 (UTC) Received: by mail-ed1-x544.google.com with SMTP id b3so3900795ede.1 for ; Fri, 07 Dec 2018 06:33:29 -0800 (PST) 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, tomas.winkler@intel.com List-Id: dri-devel@lists.freedesktop.org T24gRnJpLCBEZWMgMDcsIDIwMTggYXQgMTE6NTI6MjFBTSArMDUzMCwgQywgUmFtYWxpbmdhbSB3 cm90ZToKPiAKPiBPbiAxMi82LzIwMTggNDowMCBQTSwgRGFuaWVsIFZldHRlciB3cm90ZToKPiA+ IE9uIFR1ZSwgTm92IDI3LCAyMDE4IGF0IDA0OjEzOjA0UE0gKzA1MzAsIFJhbWFsaW5nYW0gQyB3 cm90ZToKPiA+ID4gQ29uc2lkZXJpbmcgdGhhdCBIRENQMi4yIGlzIG1vcmUgc2VjdXJlIHRoYW4g SERDUDEuNCwgV2hlbiBhIHNldHVwCj4gPiA+IHN1cHBvcnRzIEhEQ1AyLjIgYW5kIEhEQ1AxLjQs IEhEQ1AyLjIgd2lsbCBiZSBlbmFibGVkLgo+ID4gPiAKPiA+ID4gV2hlbiBIRENQMi4yIGVuYWJs aW5nIGZhaWxzIGFuZCBIRENQMS40IGlzIHN1cHBvcnRlZCwgSERDUDEuNCBpcwo+ID4gPiBlbmFi bGVkLgo+ID4gPiAKPiA+ID4gVGhpcyBjaGFuZ2UgaW1wbGVtZW50cyBhIHNlcXVlbmNlIG9mIGVu YWJsaW5nIGFuZCBkaXNhYmxpbmcgb2YKPiA+ID4gSERDUDIuMiBhdXRoZW50aWNhdGlvbiBhbmQg SERDUDIuMiBwb3J0IGVuY3J5cHRpb24uCj4gPiBQYXRjaCBzZXJpZXMgc3VnZ2VzdGlvbiBmb3Ig bmV4dCB0aW1lIGFyb3VuZDogRmlyc3QgYnVpbGQgb3V0IHRoZSBoZWxwZXIKPiA+IGZ1bmN0aW9u cywgdGhlbiB0aW1lIHRoZW0gaW50byB0aGUgYmlnIHBpY3R1cmUgbGlrZSBoZXJlLiBQZXJzb25h bGx5IEkKPiA+IHRoaW5rIHRoYXQgbWFrZXMgaXQgZWFzaWVyIHRvIHVuZGVyc3RhbmQsIGJ1dCBp dCdzIGtpbmRhIHBlcnNvbmFsIGNob2ljZS4KPiAKPiBUcmllZCB0aGF0IGFscmVhZHkuIEJ1dCBi aXNlY3Rpbmcgd2lsbCBnaXZlIHdhcm5pbmdzIGFzICJkZWZpbmVkIGJ1dCB1bnVzZWQKPiBmdW5j dGlvbnMiCj4gCj4gSGVuY2UgbW92ZWQgdG8gdGhpcyBhcHByb2FjaC4KCkFoIHJpZ2h0LCB0aGF0 J3MgdGhlIGFubm95aW5nIHBhcnQgd2l0aCB0aGF0IGFwcHJvYWNoLiBJIHRlbmQgdG8ganVzdApp Z25vcmUgdGhhdCB1bnRpbCB0aGUgc2VyaWVzIGlzIGJ1aWx0IHVwIChpdCdzIGp1c3QgYSB3YXJu aW5nKSwgYnV0IGdvb2QKcG9pbnQuIEFzIG1lbnRpb25lZCwgdGhlcmUncyBwcm8vY29ucyB0byBl YWNoIGFwcHJvYWNoLgotRGFuaWVsCgo+IAo+ID4gSSBndWVzcyB0aGlzIGhlcmUgd29ya3MgdG9v Lgo+ID4gCj4gPiA+IHYyOgo+ID4gPiAgICBJbmNsdWRlZCBmZXcgb3B0aW1pemF0aW9uIHN1Z2dl c3Rpb25zIFtDaHJpcyBXaWxzb25dCj4gPiA+ICAgIENvbW1pdCBtZXNzYWdlIGlzIHVwZGF0ZWQg YXMgcGVyIHRoZSByZWJhc2VkIHZlcnNpb24uCj4gPiA+ICAgIGludGVsX3dhaXRfZm9yX3JlZ2lz dGVyIGlzIHVzZWQgaW5zdGVhZCBvZiB3YWl0X2Zvci4gW0NocmlzIFdpbHNvbl0KPiA+ID4gdjM6 Cj4gPiA+ICAgIE5vIGNoYW5nZXMuCj4gPiA+IHY0Ogo+ID4gPiAgICBFeHRyYSBjb21tZW50IGFk ZGVkIGFuZCBTdHlsZSBpc3N1ZSBmaXhlZCBbVW1hXQo+ID4gPiB2NToKPiA+ID4gICAgUmViYXNl ZCBhcyBwYXJ0IG9mIHBhdGNoIHJlb3JkZXJpbmcuCj4gPiA+ICAgIEhEQ1AyIGVuY3J5cHRpb24g c3RhdHVzIGlzIHRyYWNrZWQuCj4gPiA+ICAgIEhXIHN0YXRlIGNoZWNrIGlzIG1vdmVkIGludG8g V0FSTl9PTiBbRGFuaWVsXQo+ID4gPiB2NjoKPiA+ID4gICAgUmVkZWZpbmVkIHRoZSBtZWkgc2Vy dmljZSBmdW5jdGlvbnMgYXMgcGVyIGNvbXAgcmVkZXNpZ24uCj4gPiA+ICAgIE1lcmdlZCBwYXRj aGVzIHJlbGF0ZWQgdG8gaGRjcDIuMiBlbmFibGluZyBhbmQgZGlzYWJsaW5nIFtTZWFuIFBhdWxd Lgo+ID4gPiAgICBSZXF1aXJlZCBzaGltIGZ1bmN0aW9uYWxpdHkgaXMgZGVmaW5lZCBbU2VhbiBQ YXVsXQo+ID4gPiB2NzoKPiA+ID4gICAgUmV0dXJuIHZhbHVlcyBhcmUgaGFuZGxlcyBbVW1hXQo+ ID4gPiAgICBSZWFsaWduZWQgdGhlIGNvZGUuCj4gPiA+ICAgIENoZWNrIGZvciBjb21wX21hc3Rl ciBpcyByZW1vdmVkLgo+ID4gPiB2ODoKPiA+ID4gICAgSERDUDIuMiBpcyBhdHRlbXB0ZWQgb25s eSBpZiBtZWkgaW50ZXJmYWNlIGlzIHVwLgo+ID4gPiAgICBBZGp1c3QgdG8gdGhlIG5ldyBpbnRl cmZhY2UKPiA+ID4gICAgQXZvaWQgYm9vbCB1c2FnZSBpbiBzdHJ1Y3QgW1RvbWFzXQo+ID4gPiAK PiA+ID4gU2lnbmVkLW9mZi1ieTogUmFtYWxpbmdhbSBDIDxyYW1hbGluZ2FtLmNAaW50ZWwuY29t Pgo+ID4gPiAtLS0KPiA+ID4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgfCAg IDUgKwo+ID4gPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkY3AuYyB8IDIyMyArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLQo+ID4gPiAgIDIgZmlsZXMgY2hhbmdl ZCwgMjE0IGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQo+ID4gPiAKPiA+ID4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHJ2LmgKPiA+ID4gaW5kZXggYmRlODJmM2FkYTg1Li4zZTlmMjFkMjM0NDIg MTAwNjQ0Cj4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gPiA+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gPiA+IEBAIC0zODMsNiAr MzgzLDEwIEBAIHN0cnVjdCBpbnRlbF9oZGNwX3NoaW0gewo+ID4gPiAgIAkvKiBEZXRlY3RzIHRo ZSBIRENQIHByb3RvY29sKERQL0hETUkpIHJlcXVpcmVkIG9uIHRoZSBwb3J0ICovCj4gPiA+ICAg CWVudW0gbWVpX2hkY3Bfd2lyZWRfcHJvdG9jb2wgKCpoZGNwX3Byb3RvY29sKSh2b2lkKTsKPiA+ ID4gKwo+ID4gPiArCS8qIERldGVjdHMgd2hldGhlciBQYW5lbCBpcyBIRENQMi4yIGNhcGFibGUg Ki8KPiA+ID4gKwlpbnQgKCpoZGNwXzJfMl9jYXBhYmxlKShzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9w b3J0ICppbnRlbF9kaWdfcG9ydCwKPiA+ID4gKwkJCQlib29sICpjYXBhYmxlKTsKPiA+ID4gICB9 Owo+ID4gPiAgIHN0cnVjdCBpbnRlbF9oZGNwIHsKPiA+ID4gQEAgLTM5Niw2ICs0MDAsNyBAQCBz dHJ1Y3QgaW50ZWxfaGRjcCB7Cj4gPiA+ICAgCS8qIEhEQ1AyLjIgcmVsYXRlZCBkZWZpbml0aW9u cyAqLwo+ID4gPiAgIAkvKiBGbGFnIGluZGljYXRlcyB3aGV0aGVyIHRoaXMgY29ubmVjdG9yIHN1 cHBvcnRzIEhEQ1AyLjIgb3Igbm90LiAqLwo+ID4gPiAgIAl1OCBoZGNwMl9zdXBwb3J0ZWQ7Cj4g PiA+ICsJdTggaGRjcDJfaW5fdXNlOwo+ID4gPiAgIAkvKgo+ID4gPiAgIAkgKiBDb250ZW50IFN0 cmVhbSBUeXBlIGRlZmluZWQgYnkgY29udGVudCBvd25lci4gVFlQRTAoMHgwKSBjb250ZW50IGNh bgo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRjcC5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRjcC5jCj4gPiA+IGluZGV4IDc2MDc4MGYxMTA1 Yy4uYzFiZDFjY2Q0N2NkIDEwMDY0NAo+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9oZGNwLmMKPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRjcC5j Cj4gPiA+IEBAIC03OSw2ICs3OSw0MyBAQCBib29sIGludGVsX2hkY3BfY2FwYWJsZShzdHJ1Y3Qg aW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCj4gPiA+ICAgCXJldHVybiBjYXBhYmxlOwo+ID4g PiAgIH0KPiA+ID4gKy8qIEF0IHByZXNlbnQgd2hldGhlciBtZWlfaGRjcCBjb21wb25lbnQgaXMg YmluZGVkIHdpdGggaTkxNSBtYXN0ZXIgY29tcG9uZW50ICovCj4gPiA+ICtzdGF0aWMgYm9vbCBp bnRlbF9oZGNwMl9tZWlfYmluZGVkKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikK PiA+ID4gK3sKPiA+ID4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19p OTE1KGNvbm5lY3Rvci0+YmFzZS5kZXYpOwo+ID4gPiArCXN0cnVjdCBpOTE1X2hkY3BfY29tcG9u ZW50X21hc3RlciAqY29tcCA9IGRldl9wcml2LT5oZGNwX2NvbXA7Cj4gPiA+ICsKPiA+ID4gKwlt dXRleF9sb2NrKCZjb21wLT5tdXRleCk7Cj4gPiA+ICsJaWYgKCFjb21wLT5vcHMgfHwgIWNvbXAt PmRldikgewo+ID4gPiArCQltdXRleF91bmxvY2soJmNvbXAtPm11dGV4KTsKPiA+ID4gKwkJcmV0 dXJuIGZhbHNlOwo+ID4gPiArCX0KPiA+ID4gKwltdXRleF91bmxvY2soJmNvbXAtPm11dGV4KTsK PiA+ID4gKwo+ID4gPiArCXJldHVybiB0cnVlOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICsvKiBJ cyBIRENQMi4yIGNhcGFibGUgb24gUGxhdGZvcm0gYW5kIFNpbmsgKi8KPiA+ID4gK3N0YXRpYyBi b29sIGludGVsX2hkY3AyX2NhcGFibGUoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9y KQo+ID4gPiArewo+ID4gPiArCXN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19w b3J0ID0gY29ubl90b19kaWdfcG9ydChjb25uZWN0b3IpOwo+ID4gPiArCXN0cnVjdCBpbnRlbF9o ZGNwICpoZGNwID0gJmNvbm5lY3Rvci0+aGRjcDsKPiA+ID4gKwlib29sIGNhcGFibGUgPSBmYWxz ZTsKPiA+ID4gKwo+ID4gPiArCS8qIEk5MTUgc3VwcG9ydCBmb3IgSERDUDIuMiAqLwo+ID4gPiAr CWlmICghaGRjcC0+aGRjcDJfc3VwcG9ydGVkKQo+ID4gPiArCQlyZXR1cm4gZmFsc2U7Cj4gPiA+ ICsKPiA+ID4gKwkvKiBNRUkgc2VydmljZXMgZm9yIEhEQ1AyLjIgKi8KPiA+ID4gKwlpZiAoIWlu dGVsX2hkY3AyX21laV9iaW5kZWQoY29ubmVjdG9yKSkKPiA+ID4gKwkJcmV0dXJuIGZhbHNlOwo+ ID4gV2h5IGRvIHdlIHN0aWxsIG5lZWQgdGhpcyB3aXRoIGNvbXBvbmVudD8gRHJpdmVyIGxvYWQg c2hvdWxkIGJlIHN0YWxsZWQKPiA+IG91dCB1bnRpbCBpdCdzIGFsbCB0aGVyZSwgdGhhdCB3YXMg a2luZGEgdGhlIGVudGlyZSBwb2ludCBvZiBjb21wb25lbnQsCj4gPiBzbyB3ZSBkb24ndCBoYXZl IHRvIHJlY2hlY2sgYWxsIHRoZSB0aW1lIHdoZXRoZXIgaGRjcDIgaXMgc3RpbGwgdGhlcmUgb3IK PiA+IG5vdC4KPiAKPiBXZSBkaXNjdXNzZWQgdGhpcyBpbiBwcmV2aW91cyBwYXRjaGVzLiBMZXRz IGRlY2lkZSB3aGV0aGVyIHRoaXMgYXBwcm9hY2ggaXMKPiBnb29kIGVub3VnaCBvciBub3QuCj4g Cj4gLS1SYW0KPiAKPiA+IAo+ID4gPiArCj4gPiA+ICsJLyogU2luaydzIGNhcGFiaWxpdHkgZm9y IEhEQ1AyLjIgKi8KPiA+ID4gKwloZGNwLT5zaGltLT5oZGNwXzJfMl9jYXBhYmxlKGludGVsX2Rp Z19wb3J0LCAmY2FwYWJsZSk7Cj4gPiA+ICsKPiA+ID4gKwlyZXR1cm4gY2FwYWJsZTsKPiA+ID4g K30KPiA+ID4gKwo+ID4gPiAgIHN0YXRpYyBpbnQgaW50ZWxfaGRjcF9wb2xsX2tzdl9maWZvKHN0 cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0LAo+ID4gPiAgIAkJCQkgICAg Y29uc3Qgc3RydWN0IGludGVsX2hkY3Bfc2hpbSAqc2hpbSkKPiA+ID4gICB7Cj4gPiA+IEBAIC0x MTE0LDggKzExNTEsNyBAQCBpbnQgaGRjcDJfYXV0aGVudGljYXRlX3BvcnQoc3RydWN0IGludGVs X2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ID4gPiAgIAlyZXR1cm4gcmV0Owo+ID4gPiAgIH0KPiA+ ID4gLXN0YXRpYyBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKQo+ID4gPiAtaW50IGhkY3AyX2Nsb3Nl X21laV9zZXNzaW9uKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiA+ID4gK3N0 YXRpYyBpbnQgaGRjcDJfY2xvc2VfbWVpX3Nlc3Npb24oc3RydWN0IGludGVsX2Nvbm5lY3RvciAq Y29ubmVjdG9yKQo+ID4gPiAgIHsKPiA+ID4gICAJc3RydWN0IG1laV9oZGNwX2RhdGEgKmRhdGEg PSAmY29ubmVjdG9yLT5oZGNwLm1laV9kYXRhOwo+ID4gPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNvbm5lY3Rvci0+YmFzZS5kZXYpOwo+ID4gPiBAQCAt MTEzNywxMiArMTE3MywxNTcgQEAgaW50IGhkY3AyX2Nsb3NlX21laV9zZXNzaW9uKHN0cnVjdCBp bnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiA+ID4gICAJcmV0dXJuIHJldDsKPiA+ID4gICB9 Cj4gPiA+IC1zdGF0aWMgX19hdHRyaWJ1dGVfXygodW51c2VkKSkKPiA+ID4gLWludCBoZGNwMl9k ZWF1dGhlbnRpY2F0ZV9wb3J0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiA+ ID4gK3N0YXRpYyBpbnQgaGRjcDJfZGVhdXRoZW50aWNhdGVfcG9ydChzdHJ1Y3QgaW50ZWxfY29u bmVjdG9yICpjb25uZWN0b3IpCj4gPiA+ICAgewo+ID4gPiAgIAlyZXR1cm4gaGRjcDJfY2xvc2Vf bWVpX3Nlc3Npb24oY29ubmVjdG9yKTsKPiA+ID4gICB9Cj4gPiA+ICtzdGF0aWMgaW50IGhkY3Ay X2F1dGhlbnRpY2F0ZV9zaW5rKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiA+ ID4gK3sKPiA+ID4gKwlEUk1fRVJST1IoIlNpbmsgYXV0aGVudGljYXRpb24gaXMgZG9uZSBpbiBz dWJzZXF1ZW50IHBhdGNoZXNcbiIpOwo+ID4gPiArCj4gPiA+ICsJcmV0dXJuIC1FSU5WQUw7Cj4g PiA+ICt9Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyBpbnQgaGRjcDJfZW5hYmxlX2VuY3J5cHRpb24o c3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ID4gPiArewo+ID4gPiArCXN0cnVj dCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0ID0gY29ubl90b19kaWdfcG9ydChj b25uZWN0b3IpOwo+ID4gPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRv X2k5MTUoY29ubmVjdG9yLT5iYXNlLmRldik7Cj4gPiA+ICsJc3RydWN0IGludGVsX2hkY3AgKmhk Y3AgPSAmY29ubmVjdG9yLT5oZGNwOwo+ID4gPiArCWVudW0gcG9ydCBwb3J0ID0gY29ubmVjdG9y LT5lbmNvZGVyLT5wb3J0Owo+ID4gPiArCWludCByZXQ7Cj4gPiA+ICsKPiA+ID4gKwlXQVJOX09O KEk5MTVfUkVBRChIRENQMl9TVEFUVVNfRERJKHBvcnQpKSAmIExJTktfRU5DUllQVElPTl9TVEFU VVMpOwo+ID4gPiArCj4gPiA+ICsJaWYgKGhkY3AtPnNoaW0tPnRvZ2dsZV9zaWduYWxsaW5nKSB7 Cj4gPiA+ICsJCXJldCA9IGhkY3AtPnNoaW0tPnRvZ2dsZV9zaWduYWxsaW5nKGludGVsX2RpZ19w b3J0LCB0cnVlKTsKPiA+ID4gKwkJaWYgKHJldCkgewo+ID4gPiArCQkJRFJNX0VSUk9SKCJGYWls ZWQgdG8gZW5hYmxlIEhEQ1Agc2lnbmFsbGluZy4gJWRcbiIsCj4gPiA+ICsJCQkJICByZXQpOwo+ ID4gPiArCQkJcmV0dXJuIHJldDsKPiA+ID4gKwkJfQo+ID4gPiArCX0KPiA+ID4gKwo+ID4gPiAr CWlmIChJOTE1X1JFQUQoSERDUDJfU1RBVFVTX0RESShwb3J0KSkgJiBMSU5LX0FVVEhfU1RBVFVT KSB7Cj4gPiA+ICsJCS8qIExpbmsgaXMgQXV0aGVudGljYXRlZC4gTm93IHNldCBmb3IgRW5jcnlw dGlvbiAqLwo+ID4gPiArCQlJOTE1X1dSSVRFKEhEQ1AyX0NUTF9EREkocG9ydCksCj4gPiA+ICsJ CQkgICBJOTE1X1JFQUQoSERDUDJfQ1RMX0RESShwb3J0KSkgfAo+ID4gPiArCQkJICAgQ1RMX0xJ TktfRU5DUllQVElPTl9SRVEpOwo+ID4gPiArCX0KPiA+ID4gKwo+ID4gPiArCXJldCA9IGludGVs X3dhaXRfZm9yX3JlZ2lzdGVyKGRldl9wcml2LCBIRENQMl9TVEFUVVNfRERJKHBvcnQpLAo+ID4g PiArCQkJCSAgICAgIExJTktfRU5DUllQVElPTl9TVEFUVVMsCj4gPiA+ICsJCQkJICAgICAgTElO S19FTkNSWVBUSU9OX1NUQVRVUywKPiA+ID4gKwkJCQkgICAgICBUSU1FX0ZPUl9FTkNSWVBUX1NU QVRVU19DSEFOR0UpOwo+ID4gPiArCj4gPiA+ICsJcmV0dXJuIHJldDsKPiA+ID4gK30KPiA+ID4g Kwo+ID4gPiArc3RhdGljIGludCBoZGNwMl9kaXNhYmxlX2VuY3J5cHRpb24oc3RydWN0IGludGVs X2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ID4gPiArewo+ID4gPiArCXN0cnVjdCBpbnRlbF9kaWdp dGFsX3BvcnQgKmludGVsX2RpZ19wb3J0ID0gY29ubl90b19kaWdfcG9ydChjb25uZWN0b3IpOwo+ ID4gPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY29ubmVj dG9yLT5iYXNlLmRldik7Cj4gPiA+ICsJc3RydWN0IGludGVsX2hkY3AgKmhkY3AgPSAmY29ubmVj dG9yLT5oZGNwOwo+ID4gPiArCWVudW0gcG9ydCBwb3J0ID0gY29ubmVjdG9yLT5lbmNvZGVyLT5w b3J0Owo+ID4gPiArCWludCByZXQ7Cj4gPiA+ICsKPiA+ID4gKwlXQVJOX09OKCEoSTkxNV9SRUFE KEhEQ1AyX1NUQVRVU19EREkocG9ydCkpICYgTElOS19FTkNSWVBUSU9OX1NUQVRVUykpOwo+ID4g PiArCj4gPiA+ICsJSTkxNV9XUklURShIRENQMl9DVExfRERJKHBvcnQpLAo+ID4gPiArCQkgICBJ OTE1X1JFQUQoSERDUDJfQ1RMX0RESShwb3J0KSkgJiB+Q1RMX0xJTktfRU5DUllQVElPTl9SRVEp Owo+ID4gPiArCj4gPiA+ICsJcmV0ID0gaW50ZWxfd2FpdF9mb3JfcmVnaXN0ZXIoZGV2X3ByaXYs IEhEQ1AyX1NUQVRVU19EREkocG9ydCksCj4gPiA+ICsJCQkJICAgICAgTElOS19FTkNSWVBUSU9O X1NUQVRVUywgMHgwLAo+ID4gPiArCQkJCSAgICAgIFRJTUVfRk9SX0VOQ1JZUFRfU1RBVFVTX0NI QU5HRSk7Cj4gPiA+ICsJaWYgKHJldCA9PSAtRVRJTUVET1VUKQo+ID4gPiArCQlEUk1fREVCVUdf S01TKCJEaXNhYmxlIEVuY3J5cHRpb24gVGltZWRvdXQiKTsKPiA+ID4gKwo+ID4gPiArCWlmICho ZGNwLT5zaGltLT50b2dnbGVfc2lnbmFsbGluZykgewo+ID4gPiArCQlyZXQgPSBoZGNwLT5zaGlt LT50b2dnbGVfc2lnbmFsbGluZyhpbnRlbF9kaWdfcG9ydCwgZmFsc2UpOwo+ID4gPiArCQlpZiAo cmV0KSB7Cj4gPiA+ICsJCQlEUk1fRVJST1IoIkZhaWxlZCB0byBkaXNhYmxlIEhEQ1Agc2lnbmFs bGluZy4gJWRcbiIsCj4gPiA+ICsJCQkJICByZXQpOwo+ID4gPiArCQkJcmV0dXJuIHJldDsKPiA+ ID4gKwkJfQo+ID4gPiArCX0KPiA+ID4gKwo+ID4gPiArCXJldHVybiByZXQ7Cj4gPiA+ICt9Cj4g PiA+ICsKPiA+ID4gK3N0YXRpYyBpbnQgaGRjcDJfYXV0aGVudGljYXRlX2FuZF9lbmNyeXB0KHN0 cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiA+ID4gK3sKPiA+ID4gKwlpbnQgcmV0 LCBpLCB0cmllcyA9IDM7Cj4gPiA+ICsKPiA+ID4gKwlmb3IgKGkgPSAwOyBpIDwgdHJpZXM7IGkr Kykgewo+ID4gPiArCQlyZXQgPSBoZGNwMl9hdXRoZW50aWNhdGVfc2luayhjb25uZWN0b3IpOwo+ ID4gPiArCQlpZiAoIXJldCkKPiA+ID4gKwkJCWJyZWFrOwo+ID4gPiArCj4gPiA+ICsJCS8qIENs ZWFyaW5nIHRoZSBtZWkgaGRjcCBzZXNzaW9uICovCj4gPiA+ICsJCURSTV9ERUJVR19LTVMoIkhE Q1AyLjIgQXV0aCAlZCBvZiAlZCBGYWlsZWQuKCVkKVxuIiwKPiA+ID4gKwkJCSAgICAgIGkgKyAx LCB0cmllcywgcmV0KTsKPiA+ID4gKwkJaWYgKGhkY3AyX2RlYXV0aGVudGljYXRlX3BvcnQoY29u bmVjdG9yKSA8IDApCj4gPiA+ICsJCQlEUk1fREVCVUdfS01TKCJQb3J0IGRlYXV0aCBmYWlsZWQu XG4iKTsKPiA+ID4gKwl9Cj4gPiA+ICsKPiA+ID4gKwlpZiAoaSAhPSB0cmllcykgewo+ID4gPiAr CQkvKgo+ID4gPiArCQkgKiBFbnN1cmluZyB0aGUgcmVxdWlyZWQgMjAwbVNlYyBtaW4gdGltZSBp bnRlcnZhbCBiZXR3ZWVuCj4gPiA+ICsJCSAqIFNlc3Npb24gS2V5IEV4Y2hhbmdlIGFuZCBlbmNy eXB0aW9uLgo+ID4gPiArCQkgKi8KPiA+ID4gKwkJbXNsZWVwKEhEQ1BfMl8yX0RFTEFZX0JFRk9S RV9FTkNSWVBUSU9OX0VOKTsKPiA+ID4gKwkJcmV0ID0gaGRjcDJfZW5hYmxlX2VuY3J5cHRpb24o Y29ubmVjdG9yKTsKPiA+ID4gKwkJaWYgKHJldCA8IDApIHsKPiA+ID4gKwkJCURSTV9ERUJVR19L TVMoIkVuY3J5cHRpb24gRW5hYmxlIEZhaWxlZC4oJWQpXG4iLCByZXQpOwo+ID4gPiArCQkJaWYg KGhkY3AyX2RlYXV0aGVudGljYXRlX3BvcnQoY29ubmVjdG9yKSA8IDApCj4gPiA+ICsJCQkJRFJN X0RFQlVHX0tNUygiUG9ydCBkZWF1dGggZmFpbGVkLlxuIik7Cj4gPiA+ICsJCX0KPiA+ID4gKwl9 Cj4gPiA+ICsKPiA+ID4gKwlyZXR1cm4gcmV0Owo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICtzdGF0 aWMgaW50IF9pbnRlbF9oZGNwMl9lbmFibGUoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVj dG9yKQo+ID4gPiArewo+ID4gPiArCXN0cnVjdCBpbnRlbF9oZGNwICpoZGNwID0gJmNvbm5lY3Rv ci0+aGRjcDsKPiA+ID4gKwlpbnQgcmV0Owo+ID4gPiArCj4gPiA+ICsJRFJNX0RFQlVHX0tNUygi WyVzOiVkXSBIRENQMi4yIGlzIGJlaW5nIGVuYWJsZWQuIFR5cGU6ICVkXG4iLAo+ID4gPiArCQkg ICAgICBjb25uZWN0b3ItPmJhc2UubmFtZSwgY29ubmVjdG9yLT5iYXNlLmJhc2UuaWQsCj4gPiA+ ICsJCSAgICAgIGhkY3AtPmNvbnRlbnRfdHlwZSk7Cj4gPiA+ICsKPiA+ID4gKwlyZXQgPSBoZGNw Ml9hdXRoZW50aWNhdGVfYW5kX2VuY3J5cHQoY29ubmVjdG9yKTsKPiA+ID4gKwlpZiAocmV0KSB7 Cj4gPiA+ICsJCURSTV9ERUJVR19LTVMoIkhEQ1AyIFR5cGUlZCAgRW5hYmxpbmcgRmFpbGVkLiAo JWQpXG4iLAo+ID4gPiArCQkJICAgICAgaGRjcC0+Y29udGVudF90eXBlLCByZXQpOwo+ID4gPiAr CQlyZXR1cm4gcmV0Owo+ID4gPiArCX0KPiA+ID4gKwo+ID4gPiArCURSTV9ERUJVR19LTVMoIlsl czolZF0gSERDUDIuMiBpcyBlbmFibGVkLiBUeXBlICVkXG4iLAo+ID4gPiArCQkgICAgICBjb25u ZWN0b3ItPmJhc2UubmFtZSwgY29ubmVjdG9yLT5iYXNlLmJhc2UuaWQsCj4gPiA+ICsJCSAgICAg IGhkY3AtPmNvbnRlbnRfdHlwZSk7Cj4gPiA+ICsKPiA+ID4gKwloZGNwLT5oZGNwMl9pbl91c2Ug PSB0cnVlOwo+ID4gPiArCXJldHVybiAwOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICtzdGF0aWMg aW50IF9pbnRlbF9oZGNwMl9kaXNhYmxlKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3Rv cikKPiA+ID4gK3sKPiA+ID4gKwlpbnQgcmV0Owo+ID4gPiArCj4gPiA+ICsJRFJNX0RFQlVHX0tN UygiWyVzOiVkXSBIRENQMi4yIGlzIGJlaW5nIERpc2FibGVkXG4iLAo+ID4gPiArCQkgICAgICBj b25uZWN0b3ItPmJhc2UubmFtZSwgY29ubmVjdG9yLT5iYXNlLmJhc2UuaWQpOwo+ID4gPiArCj4g PiA+ICsJcmV0ID0gaGRjcDJfZGlzYWJsZV9lbmNyeXB0aW9uKGNvbm5lY3Rvcik7Cj4gPiA+ICsK PiA+ID4gKwlpZiAoaGRjcDJfZGVhdXRoZW50aWNhdGVfcG9ydChjb25uZWN0b3IpIDwgMCkKPiA+ ID4gKwkJRFJNX0RFQlVHX0tNUygiUG9ydCBkZWF1dGggZmFpbGVkLlxuIik7Cj4gPiA+ICsKPiA+ ID4gKwljb25uZWN0b3ItPmhkY3AuaGRjcDJfaW5fdXNlID0gZmFsc2U7Cj4gPiA+ICsKPiA+ID4g KwlyZXR1cm4gcmV0Owo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICAgc3RhdGljIGludCBpOTE1X2hk Y3BfY29tcG9uZW50X21hc3Rlcl9iaW5kKHN0cnVjdCBkZXZpY2UgKmRldikKPiA+ID4gICB7Cj4g PiA+ICAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGtkZXZfdG9faTkxNShk ZXYpOwo+ID4gPiBAQCAtMTM0MiwyMiArMTUyMywzMyBAQCB2b2lkIGludGVsX2hkY3BfZXhpdChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiA+ICAgaW50IGludGVsX2hkY3Bf ZW5hYmxlKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiA+ID4gICB7Cj4gPiA+ ICAgCXN0cnVjdCBpbnRlbF9oZGNwICpoZGNwID0gJmNvbm5lY3Rvci0+aGRjcDsKPiA+ID4gLQlp bnQgcmV0Owo+ID4gPiArCWludCByZXQgPSAtRUlOVkFMOwo+ID4gPiAgIAlpZiAoIWhkY3AtPnNo aW0pCj4gPiA+ICAgCQlyZXR1cm4gLUVOT0VOVDsKPiA+ID4gICAJbXV0ZXhfbG9jaygmaGRjcC0+ bXV0ZXgpOwo+ID4gPiAtCXJldCA9IF9pbnRlbF9oZGNwX2VuYWJsZShjb25uZWN0b3IpOwo+ID4g PiAtCWlmIChyZXQpCj4gPiA+IC0JCWdvdG8gb3V0Owo+ID4gPiArCS8qCj4gPiA+ICsJICogQ29u c2lkZXJpbmcgdGhhdCBIRENQMi4yIGlzIG1vcmUgc2VjdXJlIHRoYW4gSERDUDEuNCwgSWYgdGhl IHNldHVwCj4gPiA+ICsJICogaXMgY2FwYWJsZSBvZiBIRENQMi4yLCBpdCBpcyBwcmVmZXJyZWQg dG8gdXNlIEhEQ1AyLjIuCj4gPiA+ICsJICovCj4gPiA+ICsJaWYgKGludGVsX2hkY3AyX2NhcGFi bGUoY29ubmVjdG9yKSkKPiA+ID4gKwkJcmV0ID0gX2ludGVsX2hkY3AyX2VuYWJsZShjb25uZWN0 b3IpOwo+ID4gPiArCj4gPiA+ICsJLyogV2hlbiBIRENQMi4yIGZhaWxzLCBIRENQMS40IHdpbGwg YmUgYXR0ZW1wdGVkICovCj4gPiA+ICsJaWYgKHJldCAmJiBpbnRlbF9oZGNwX2NhcGFibGUoY29u bmVjdG9yKSkgewo+ID4gPiArCQlyZXQgPSBfaW50ZWxfaGRjcF9lbmFibGUoY29ubmVjdG9yKTsK PiA+ID4gKwkJaWYgKCFyZXQpCj4gPiA+ICsJCQlzY2hlZHVsZV9kZWxheWVkX3dvcmsoJmhkY3At PmNoZWNrX3dvcmssCj4gPiA+ICsJCQkJCSAgICAgIERSTV9IRENQX0NIRUNLX1BFUklPRF9NUyk7 Cj4gPiA+ICsJfQo+ID4gPiArCj4gPiA+ICsJaWYgKCFyZXQpIHsKPiA+ID4gKwkJaGRjcC0+dmFs dWUgPSBEUk1fTU9ERV9DT05URU5UX1BST1RFQ1RJT05fRU5BQkxFRDsKPiA+ID4gKwkJc2NoZWR1 bGVfd29yaygmaGRjcC0+cHJvcF93b3JrKTsKPiA+ID4gKwl9Cj4gPiA+IC0JaGRjcC0+dmFsdWUg PSBEUk1fTU9ERV9DT05URU5UX1BST1RFQ1RJT05fRU5BQkxFRDsKPiA+ID4gLQlzY2hlZHVsZV93 b3JrKCZoZGNwLT5wcm9wX3dvcmspOwo+ID4gPiAtCXNjaGVkdWxlX2RlbGF5ZWRfd29yaygmaGRj cC0+Y2hlY2tfd29yaywKPiA+ID4gLQkJCSAgICAgIERSTV9IRENQX0NIRUNLX1BFUklPRF9NUyk7 Cj4gPiA+IC1vdXQ6Cj4gPiA+ICAgCW11dGV4X3VubG9jaygmaGRjcC0+bXV0ZXgpOwo+ID4gPiAg IAlyZXR1cm4gcmV0Owo+ID4gPiAgIH0KPiA+ID4gQEAgLTEzNzQsNyArMTU2NiwxMCBAQCBpbnQg aW50ZWxfaGRjcF9kaXNhYmxlKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiA+ ID4gICAJaWYgKGhkY3AtPnZhbHVlICE9IERSTV9NT0RFX0NPTlRFTlRfUFJPVEVDVElPTl9VTkRF U0lSRUQpIHsKPiA+ID4gICAJCWhkY3AtPnZhbHVlID0gRFJNX01PREVfQ09OVEVOVF9QUk9URUNU SU9OX1VOREVTSVJFRDsKPiA+ID4gLQkJcmV0ID0gX2ludGVsX2hkY3BfZGlzYWJsZShjb25uZWN0 b3IpOwo+ID4gPiArCQlpZiAoaGRjcC0+aGRjcDJfaW5fdXNlKQo+ID4gPiArCQkJcmV0ID0gX2lu dGVsX2hkY3AyX2Rpc2FibGUoY29ubmVjdG9yKTsKPiA+ID4gKwkJZWxzZQo+ID4gPiArCQkJcmV0 ID0gX2ludGVsX2hkY3BfZGlzYWJsZShjb25uZWN0b3IpOwo+ID4gTG9va3MgcmVhc29uYWJsZS4g U28gb25lIHRoaW5nIHdlIGNvdWxkIGJlIGRvaW5nIGlzIGFscmVhZHkgaW50ZXJuYWxseQo+ID4g aGF2ZSBhIERSTV9NT0RFX0NPTlRFTlRfUFJPVEVDVElPTl9FTkFCTEVEX1RZUEUxIGZvciBoZGNw Mi5CdXQgdGhlIHVhcGkKPiA+IHdvdWxkIG9ubHkgcmV0dXJuIF9FTkFCTEVEIHRvIHVzZXJzcGFj ZS4gQnV0IGZvciBpbnRlcm5hbCB0cmFja2luZyB0aGlzCj4gPiB3b3VsZCBhdm9pZCB0aGUgbmVl ZCBmb3IgdGhlIHNlcGFyYXRlIGhkY3AyX2luX3VzZSB2YXJpYWJsZS4KPiA+IAo+ID4gUHJvYmFi bHkgZ29vZCBjbGVhbnVwL3ByZXAgcGF0Y2ggZm9yIHRoZSB0eXBlMC8xIHVhcGkgZXh0ZW5zaW9u LCBvbmNlIHdlCj4gPiBnZXQgdGhlcmUuCj4gPiAKPiA+IEFzaWRlIGZyb20gdGhlIGNvbXBvbmVu dCBpbnRlcmdyYXRpb24gcXVlc3Rpb24gc2VlbXMgYWxsIHJlYXNvbmFibGUuIEJ1dCBJCj4gPiBk aWRuJ3QgeWV0IHJldmlldyB0aGUgaGRjcDIgZmxvdywgd2lsbCBkbyB0aGF0IG9uY2UgaXQncyBt b3JlIGNvbXBsZXRlIGluCj4gPiBsYXRlciBwYXRjaGVzLgo+ID4gLURhbmllbAo+ID4gCj4gPiA+ ICAgCX0KPiA+ID4gICAJbXV0ZXhfdW5sb2NrKCZoZGNwLT5tdXRleCk7Cj4gPiA+IC0tIAo+ID4g PiAyLjcuNAo+ID4gPiAKCi0tIApEYW5pZWwgVmV0dGVyClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRl bCBDb3Jwb3JhdGlvbgpodHRwOi8vYmxvZy5mZndsbC5jaApfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZl bEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9kcmktZGV2ZWwK