From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH v9 10/39] drm/i915: Implement HDCP2.2 receiver authentication Date: Wed, 19 Dec 2018 15:35:12 +0100 Message-ID: <20181219143512.GF21184@phenom.ffwll.local> References: <1544673701-6353-1-git-send-email-ramalingam.c@intel.com> <1544673701-6353-11-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-ed1-x542.google.com (mail-ed1-x542.google.com [IPv6:2a00:1450:4864:20::542]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8C4B56EFDA for ; Wed, 19 Dec 2018 14:35:17 +0000 (UTC) Received: by mail-ed1-x542.google.com with SMTP id g22so11102484edr.7 for ; Wed, 19 Dec 2018 06:35:17 -0800 (PST) Content-Disposition: inline In-Reply-To: <1544673701-6353-11-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, dri-devel@lists.freedesktop.org, uma.shankar@intel.com, seanpaul@chromium.org, tomas.winkler@intel.com List-Id: dri-devel@lists.freedesktop.org T24gVGh1LCBEZWMgMTMsIDIwMTggYXQgMDk6MzE6MTJBTSArMDUzMCwgUmFtYWxpbmdhbSBDIHdy b3RlOgo+IEltcGxlbWVudHMgSERDUDIuMiBhdXRoZW50aWNhdGlvbiBmb3IgaGRjcDIuMiByZWNl aXZlcnMsIHdpdGgKPiBmb2xsb3dpbmcgc3RlcHM6Cj4gCUF1dGhlbnRpY2F0aW9uIGFuZCBLZXkg ZXhjaGFuZ2UgKEFLRSkuCj4gCUxvY2FsaXR5IENoZWNrIChMQykuCj4gCVNlc3Npb24gS2V5IEV4 Y2hhbmdlKFNLRSkuCj4gCURQIEVycmF0YSBmb3Igc3RyZWFtIHR5cGUgY29uZmlndXJhdGlvbiBm b3IgcmVjZWl2ZXJzLgo+IAo+IEF0IEFLRSwgdGhlIEhEQ1AgUmVjZWl2ZXLigJlzIHB1YmxpYyBr ZXkgY2VydGlmaWNhdGUgaXMgdmVyaWZpZWQgYnkgdGhlCj4gSERDUCBUcmFuc21pdHRlci4gQSBN YXN0ZXIgS2V5IGsgbSBpcyBleGNoYW5nZWQuCj4gCj4gQXQgTEMsIHRoZSBIRENQIFRyYW5zbWl0 dGVyIGVuZm9yY2VzIGxvY2FsaXR5IG9uIHRoZSBjb250ZW50IGJ5Cj4gcmVxdWlyaW5nIHRoYXQg dGhlIFJvdW5kIFRyaXAgVGltZSAoUlRUKSBiZXR3ZWVuIGEgcGFpciBvZiBtZXNzYWdlcwo+IGlz IG5vdCBtb3JlIHRoYW4gMjAgbXMuCj4gCj4gQXQgU0tFLCBUaGUgSERDUCBUcmFuc21pdHRlciBl eGNoYW5nZXMgU2Vzc2lvbiBLZXkga3Mgd2l0aAo+IHRoZSBIRENQIFJlY2VpdmVyLgo+IAo+IElu IERQIEhEQ1AyLjIgZW5jcnlwdGlvbiBhbmQgZGVjcnlwdGlvbiBsb2dpY3MgdXNlIHRoZSBzdHJl YW0gdHlwZSBhcwo+IG9uZSBvZiB0aGUgcGFyYW1ldGVyLiBTbyBCZWZvcmUgZW5hYmxpbmcgdGhl IEVuY3J5cHRpb24gRFAgSERDUDIuMgo+IHJlY2VpdmVyIG5lZWRzIHRvIGJlIGNvbW11bmljYXRl ZCB3aXRoIHN0cmVhbSB0eXBlLiBUaGlzIGlzIGFkZGVkIHRvCj4gc3BlYyBhcyBFUlJBVEEuCj4g Cj4gVGhpcyBnZW5lcmljIGltcGxlbWVudGF0aW9uIGlzIGNvbXBsZXRlIG9ubHkgd2l0aCB0aGUg aGRjcDIgc3BlY2lmaWMKPiBmdW5jdGlvbnMgZGVmaW5lZCBhdCBoZGNwX3NoaW0uCj4gCj4gdjI6 IFJlYmFzZWQuCj4gdjM6Cj4gICAlcy9QQVJJTkcvUEFJUklORwo+ICAgQ29kaW5nIHN0eWxlIGZp eGluZyBbVW1hXQo+IHY0Ogo+ICAgUmViYXNlZCBhcyBwYXJ0IG9mIHBhdGNoIHJlb3JkZXJpbmcu Cj4gICBEZWZpbmVkIHRoZSBmdW5jdGlvbnMgZm9yIG1laSBzZXJ2aWNlcy4gW0RhbmllbF0KPiB2 NToKPiAgIFJlZGVmaW5lZCB0aGUgbWVpIHNlcnZpY2UgZnVuY3Rpb25zIGFzIHBlciBjb21wIHJl ZGVzaWduLgo+ICAgUmVxdWlyZWQgaW50ZWxfaGRjcCBtZW1iZXJzIGFyZSBkZWZpbmVkIFtTZWFu IFBhdWxdCj4gdjY6Cj4gICBUeXBvIG9mIGNpcGhlciBpcyBGaXhlZCBbVW1hXQo+ICAgJXMvdWlu dHh4X3QvdXh4Cj4gICBDaGVjayBmb3IgY29tcF9tYXN0ZXIgaXMgcmVtb3ZlZC4KPiB2NzoKPiAg IEFkanVzdCB0byB0aGUgbmV3IGludGVyZmFjZS4KPiAgIEF2b2lkIHVzaW5nIGJvb2wgc3RydWN0 dXJlIG1lbWJlcnMuIFtUb21hc10KPiB2ODogUmViYXNlZC4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBS YW1hbGluZ2FtIEMgPHJhbWFsaW5nYW0uY0BpbnRlbC5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rydi5oICB8ICAzNCArKysrKysKPiAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfaGRjcC5jIHwgMjExICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr LS0tCj4gIDIgZmlsZXMgY2hhbmdlZCwgMjMwIGluc2VydGlvbnMoKyksIDE1IGRlbGV0aW9ucygt KQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gaW5kZXggNmQ1MzYxNjE2Y2EzLi5hNmI2 MzJkNzE0OTAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IEBAIC0zODcsNiArMzg3 LDIyIEBAIHN0cnVjdCBpbnRlbF9oZGNwX3NoaW0gewo+ICAJLyogRGV0ZWN0cyB3aGV0aGVyIFBh bmVsIGlzIEhEQ1AyLjIgY2FwYWJsZSAqLwo+ICAJaW50ICgqaGRjcF8yXzJfY2FwYWJsZSkoc3Ry dWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQsCj4gIAkJCQlib29sICpjYXBh YmxlKTsKPiArCj4gKwkvKiBXcml0ZSBIRENQMi4yIG1lc3NhZ2VzICovCj4gKwlpbnQgKCp3cml0 ZV8yXzJfbXNnKShzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCwKPiAr CQkJICAgICB2b2lkICpidWYsIHNpemVfdCBzaXplKTsKPiArCj4gKwkvKiBSZWFkIEhEQ1AyLjIg bWVzc2FnZXMgKi8KPiArCWludCAoKnJlYWRfMl8yX21zZykoc3RydWN0IGludGVsX2RpZ2l0YWxf cG9ydCAqaW50ZWxfZGlnX3BvcnQsCj4gKwkJCSAgICB1OCBtc2dfaWQsIHZvaWQgKmJ1Ziwgc2l6 ZV90IHNpemUpOwo+ICsKPiArCS8qCj4gKwkgKiBJbXBsZW1lbnRhdGlvbiBvZiBEUCBIRENQMi4y IEVycmF0YSBmb3IgdGhlIGNvbW11bmljYXRpb24gb2Ygc3RyZWFtCj4gKwkgKiB0eXBlIHRvIFJl Y2VpdmVycy4gSW4gRFAgSERDUDIuMiBTdHJlYW0gdHlwZSBpcyBvbmUgb2YgdGhlIGlucHV0IHRv Cj4gKwkgKiB0aGUgSERDUDIuMiBDaXBoZXIgZm9yIEVuL0RlLUNyeXB0aW9uLiBOb3QgYXBwbGlj YWJsZSBmb3IgSERNSS4KPiArCSAqLwo+ICsJaW50ICgqY29uZmlnX3N0cmVhbV90eXBlKShzdHJ1 Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCwKPiArCQkJCSAgdm9pZCAqYnVm LCBzaXplX3Qgc2l6ZSk7Cj4gIH07Cj4gIAo+ICBzdHJ1Y3QgaW50ZWxfaGRjcCB7Cj4gQEAgLTQx NCw2ICs0MzAsMjQgQEAgc3RydWN0IGludGVsX2hkY3Agewo+ICAJICovCj4gIAl1OCBjb250ZW50 X3R5cGU7Cj4gIAlzdHJ1Y3QgaGRjcF9wb3J0X2RhdGEgcG9ydF9kYXRhOwo+ICsKPiArCXU4IGlz X3BhaXJlZDsKPiArCXU4IGlzX3JlcGVhdGVyOwoKTWFrZSB0aGVzZSB0d28gYm9vbCwgd2lsbCBz aW1wbGlmeSB0aGUgY29kZSBhIGJ1bmNoLgoKPiArCj4gKwkvKgo+ICsJICogQ291bnQgb2YgUmVj ZWl2ZXJJRF9MaXN0IHJlY2VpdmVkLiBJbml0aWFsaXplZCB0byAwIGF0IEFLRV9JTklULgo+ICsJ ICogSW5jcmVtZW50ZWQgYWZ0ZXIgcHJvY2Vzc2luZyB0aGUgUmVwZWF0ZXJBdXRoX1NlbmRfUmVj ZWl2ZXJJRF9MaXN0Lgo+ICsJICogV2hlbiBpdCByb2xscyBvdmVyIHJlLWF1dGggaGFzIHRvIGJl IHRyaWdnZXJlZC4KPiArCSAqLwo+ICsJdTMyIHNlcV9udW1fdjsKPiArCj4gKwkvKgo+ICsJICog Q291bnQgb2YgUmVwZWF0ZXJBdXRoX1N0cmVhbV9NYW5hZ2UgbXNnIHByb3BhZ2F0ZWQuCj4gKwkg KiBJbml0aWFsaXplZCB0byAwIG9uIEFLRV9JTklULiBJbmNyZW1lbnRlZCBhZnRlciBldmVyeSBz dWNjZXNzZnVsCj4gKwkgKiB0cmFuc21pc3Npb24gb2YgUmVwZWF0ZXJBdXRoX1N0cmVhbV9NYW5h Z2UgbWVzc2FnZS4gV2hlbiBpdCByb2xscwo+ICsJICogb3ZlciByZS1BdXRoIGhhcyB0byBiZSB0 cmlnZ2VyZWQuCj4gKwkgKi8KPiArCXUzMiBzZXFfbnVtX207Cj4gIH07Cj4gIAo+ICBzdHJ1Y3Qg aW50ZWxfY29ubmVjdG9yIHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfaGRjcC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRjcC5jCj4gaW5kZXggZjBl ZTQ0OGU2NTQ2Li5mMWYwZWYyOTRlMjAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfaGRjcC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRjcC5j Cj4gQEAgLTE4LDYgKzE4LDcgQEAKPiAgCj4gICNkZWZpbmUgS0VZX0xPQURfVFJJRVMJNQo+ICAj ZGVmaW5lIEVOQ1JZUFRfU1RBVFVTX0NIQU5HRV9USU1FT1VUX01TCTUwCj4gKyNkZWZpbmUgSERD UDJfTENfUkVUUllfQ05UCQkJMwo+ICAKPiAgc3RhdGljCj4gIGJvb2wgaW50ZWxfaGRjcF9pc19r c3ZfdmFsaWQodTggKmtzdikKPiBAQCAtODU0LDcgKzg1NSw3IEBAIGJvb2wgaXNfaGRjcF9zdXBw b3J0ZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBlbnVtIHBvcnQgcG9ydCkK PiAgCXJldHVybiBJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkgJiYgcG9ydCA8IFBPUlRfRTsKPiAg fQo+ICAKPiAtc3RhdGljIF9fYXR0cmlidXRlX18oKHVudXNlZCkpIGludAo+ICtzdGF0aWMgaW50 Cj4gIGhkY3AyX3ByZXBhcmVfYWtlX2luaXQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVj dG9yLAo+ICAJCSAgICAgICBzdHJ1Y3QgaGRjcDJfYWtlX2luaXQgKmFrZV9kYXRhKQo+ICB7Cj4g QEAgLTg3NSw3ICs4NzYsNyBAQCBoZGNwMl9wcmVwYXJlX2FrZV9pbml0KHN0cnVjdCBpbnRlbF9j b25uZWN0b3IgKmNvbm5lY3RvciwKPiAgCXJldHVybiByZXQ7Cj4gIH0KPiAgCj4gLXN0YXRpYyBf X2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSBpbnQKPiArc3RhdGljIGludAo+ICBoZGNwMl92ZXJpZnlf cnhfY2VydF9wcmVwYXJlX2ttKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiAg CQkJCXN0cnVjdCBoZGNwMl9ha2Vfc2VuZF9jZXJ0ICpyeF9jZXJ0LAo+ICAJCQkJYm9vbCAqcGFp cmVkLAo+IEBAIC04OTcsOSArODk4LDggQEAgaGRjcDJfdmVyaWZ5X3J4X2NlcnRfcHJlcGFyZV9r bShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IsCj4gIAlyZXR1cm4gcmV0Owo+ICB9 Cj4gIAo+IC1zdGF0aWMgX19hdHRyaWJ1dGVfXygodW51c2VkKSkgaW50Cj4gLWhkY3AyX3Zlcmlm eV9ocHJpbWUoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+IC0JCSAgICBzdHJ1 Y3QgaGRjcDJfYWtlX3NlbmRfaHByaW1lICpyeF9ocHJpbWUpCj4gK3N0YXRpYyBpbnQgaGRjcDJf dmVyaWZ5X2hwcmltZShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IsCj4gKwkJCSAg ICAgICBzdHJ1Y3QgaGRjcDJfYWtlX3NlbmRfaHByaW1lICpyeF9ocHJpbWUpCj4gIHsKPiAgCXN0 cnVjdCBoZGNwX3BvcnRfZGF0YSAqZGF0YSA9ICZjb25uZWN0b3ItPmhkY3AucG9ydF9kYXRhOwo+ ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjb25uZWN0b3It PmJhc2UuZGV2KTsKPiBAQCAtOTEzLDcgKzkxMyw3IEBAIGhkY3AyX3ZlcmlmeV9ocHJpbWUoc3Ry dWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ICAJcmV0dXJuIHJldDsKPiAgfQo+ICAK PiAtc3RhdGljIF9fYXR0cmlidXRlX18oKHVudXNlZCkpIGludAo+ICtzdGF0aWMgaW50Cj4gIGhk Y3AyX3N0b3JlX3BhaXJpbmdfaW5mbyhzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3Is Cj4gIAkJCSBzdHJ1Y3QgaGRjcDJfYWtlX3NlbmRfcGFpcmluZ19pbmZvICpwYWlyaW5nX2luZm8p Cj4gIHsKPiBAQCAtOTMwLDcgKzkzMCw3IEBAIGhkY3AyX3N0b3JlX3BhaXJpbmdfaW5mbyhzdHJ1 Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IsCj4gIAlyZXR1cm4gcmV0Owo+ICB9Cj4gIAo+ IC1zdGF0aWMgX19hdHRyaWJ1dGVfXygodW51c2VkKSkgaW50Cj4gK3N0YXRpYyBpbnQKPiAgaGRj cDJfcHJlcGFyZV9sY19pbml0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiAg CQkgICAgICBzdHJ1Y3QgaGRjcDJfbGNfaW5pdCAqbGNfaW5pdCkKPiAgewo+IEBAIC05NDcsNyAr OTQ3LDcgQEAgaGRjcDJfcHJlcGFyZV9sY19pbml0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNv bm5lY3RvciwKPiAgCXJldHVybiByZXQ7Cj4gIH0KPiAgCj4gLXN0YXRpYyBfX2F0dHJpYnV0ZV9f KCh1bnVzZWQpKSBpbnQKPiArc3RhdGljIGludAo+ICBoZGNwMl92ZXJpZnlfbHByaW1lKHN0cnVj dCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiAgCQkgICAgc3RydWN0IGhkY3AyX2xjX3Nl bmRfbHByaW1lICpyeF9scHJpbWUpCj4gIHsKPiBAQCAtOTYzLDkgKzk2Myw4IEBAIGhkY3AyX3Zl cmlmeV9scHJpbWUoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ICAJcmV0dXJu IHJldDsKPiAgfQo+ICAKPiAtc3RhdGljIF9fYXR0cmlidXRlX18oKHVudXNlZCkpCj4gLWludCBo ZGNwMl9wcmVwYXJlX3NrZXkoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+IC0J CSAgICAgICBzdHJ1Y3QgaGRjcDJfc2tlX3NlbmRfZWtzICpza2VfZGF0YSkKPiArc3RhdGljIGlu dCBoZGNwMl9wcmVwYXJlX3NrZXkoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ ICsJCQkgICAgICBzdHJ1Y3QgaGRjcDJfc2tlX3NlbmRfZWtzICpza2VfZGF0YSkKPiAgewo+ICAJ c3RydWN0IGhkY3BfcG9ydF9kYXRhICpkYXRhID0gJmNvbm5lY3Rvci0+aGRjcC5wb3J0X2RhdGE7 Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNvbm5lY3Rv ci0+YmFzZS5kZXYpOwo+IEBAIC0xMDE2LDggKzEwMTUsNyBAQCBoZGNwMl92ZXJpZnlfbXByaW1l KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiAgCXJldHVybiByZXQ7Cj4gIH0K PiAgCj4gLXN0YXRpYyBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKQo+IC1pbnQgaGRjcDJfYXV0aGVu dGljYXRlX3BvcnQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ICtzdGF0aWMg aW50IGhkY3AyX2F1dGhlbnRpY2F0ZV9wb3J0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5l Y3RvcikKPiAgewo+ICAJc3RydWN0IGhkY3BfcG9ydF9kYXRhICpkYXRhID0gJmNvbm5lY3Rvci0+ aGRjcC5wb3J0X2RhdGE7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0 b19pOTE1KGNvbm5lY3Rvci0+YmFzZS5kZXYpOwo+IEBAIC0xMDQ1LDExICsxMDQzLDE5NCBAQCBz dGF0aWMgaW50IGhkY3AyX2RlYXV0aGVudGljYXRlX3BvcnQoc3RydWN0IGludGVsX2Nvbm5lY3Rv ciAqY29ubmVjdG9yKQo+ICAJcmV0dXJuIGhkY3AyX2Nsb3NlX21laV9zZXNzaW9uKGNvbm5lY3Rv cik7Cj4gIH0KPiAgCj4gKy8qIEF1dGhlbnRpY2F0aW9uIGZsb3cgc3RhcnRzIGZyb20gaGVyZSAq Lwo+ICtzdGF0aWMgaW50IGhkY3AyX2F1dGhlbnRpY2F0aW9uX2tleV9leGNoYW5nZShzdHJ1Y3Qg aW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCj4gK3sKPiArCXN0cnVjdCBpbnRlbF9kaWdpdGFs X3BvcnQgKmludGVsX2RpZ19wb3J0ID0gY29ubl90b19kaWdfcG9ydChjb25uZWN0b3IpOwo+ICsJ c3RydWN0IGludGVsX2hkY3AgKmhkY3AgPSAmY29ubmVjdG9yLT5oZGNwOwo+ICsJdW5pb24gewo+ ICsJCXN0cnVjdCBoZGNwMl9ha2VfaW5pdCBha2VfaW5pdDsKPiArCQlzdHJ1Y3QgaGRjcDJfYWtl X3NlbmRfY2VydCBzZW5kX2NlcnQ7Cj4gKwkJc3RydWN0IGhkY3AyX2FrZV9ub19zdG9yZWRfa20g bm9fc3RvcmVkX2ttOwo+ICsJCXN0cnVjdCBoZGNwMl9ha2Vfc2VuZF9ocHJpbWUgc2VuZF9ocHJp bWU7Cj4gKwkJc3RydWN0IGhkY3AyX2FrZV9zZW5kX3BhaXJpbmdfaW5mbyBwYWlyaW5nX2luZm87 Cj4gKwl9IG1zZ3M7Cj4gKwljb25zdCBzdHJ1Y3QgaW50ZWxfaGRjcF9zaGltICpzaGltID0gaGRj cC0+c2hpbTsKPiArCXNpemVfdCBzaXplOwo+ICsJaW50IHJldDsKPiArCWJvb2wgaXNfcGFpcmVk Owo+ICsKPiArCS8qIEluaXQgZm9yIHNlcV9udW0gKi8KPiArCWhkY3AtPnNlcV9udW1fdiA9IDA7 Cj4gKwloZGNwLT5zZXFfbnVtX20gPSAwOwo+ICsKPiArCXJldCA9IGhkY3AyX3ByZXBhcmVfYWtl X2luaXQoY29ubmVjdG9yLCAmbXNncy5ha2VfaW5pdCk7Cj4gKwlpZiAocmV0IDwgMCkKPiArCQly ZXR1cm4gcmV0Owo+ICsKPiArCXJldCA9IHNoaW0tPndyaXRlXzJfMl9tc2coaW50ZWxfZGlnX3Bv cnQsICZtc2dzLmFrZV9pbml0LAo+ICsJCQkJICBzaXplb2YobXNncy5ha2VfaW5pdCkpOwo+ICsJ aWYgKHJldCA8IDApCj4gKwkJcmV0dXJuIHJldDsKPiArCj4gKwlyZXQgPSBzaGltLT5yZWFkXzJf Ml9tc2coaW50ZWxfZGlnX3BvcnQsIEhEQ1BfMl8yX0FLRV9TRU5EX0NFUlQsCj4gKwkJCQkgJm1z Z3Muc2VuZF9jZXJ0LCBzaXplb2YobXNncy5zZW5kX2NlcnQpKTsKPiArCWlmIChyZXQgPCAwKQo+ ICsJCXJldHVybiByZXQ7CgpzaW5rIHNob3VsZCBnaXZlIHVzIHRoZSBpbml0aWFsIGtleSB3aXRo IDEwMG1zLiBJIGd1ZXNzIHRoZXJlJ3MgZ29pbmcgdG8KYmUgYSBwYXRjaCBsYXRlciBvbiB0byBj aGVjayB0aGF0PwoKPiArCj4gKwlpZiAobXNncy5zZW5kX2NlcnQucnhfY2Fwc1swXSAhPSBIRENQ XzJfMl9SWF9DQVBTX1ZFUlNJT05fVkFMKQo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsKPiArCWhk Y3AtPmlzX3JlcGVhdGVyID0gSERDUF8yXzJfUlhfUkVQRUFURVIobXNncy5zZW5kX2NlcnQucnhf Y2Fwc1syXSkgPwo+ICsJCQkgICAgMSA6IDA7CgpJZiB5b3UgbWFrZSBpc19yZXBlYXRlciBvZiB0 eXBlIGJvb2wgeW91IGNhbiBzaW1wbGlmeSB0aGlzLgoKPiArCj4gKwkvKgo+ICsJICogSGVyZSBt c2dzLm5vX3N0b3JlZF9rbSB3aWxsIGhvbGQgbXNncyBjb3JyZXNwb25kaW5nIHRvIHRoZSBrbQo+ ICsJICogc3RvcmVkIGFsc28uCj4gKwkgKi8KPiArCXJldCA9IGhkY3AyX3ZlcmlmeV9yeF9jZXJ0 X3ByZXBhcmVfa20oY29ubmVjdG9yLCAmbXNncy5zZW5kX2NlcnQsCj4gKwkJCQkJICAgICAgJmlz X3BhaXJlZCwKPiArCQkJCQkgICAgICAmbXNncy5ub19zdG9yZWRfa20sICZzaXplKTsKPiArCWlm IChyZXQgPCAwKQo+ICsJCXJldHVybiByZXQ7Cj4gKwo+ICsJaGRjcC0+aXNfcGFpcmVkID0gaXNf cGFpcmVkID8gMSA6IDA7CgpUaGUgPyAxIDogMCBpcyByZWR1bmRhbnQgaWYgeW91IG1ha2UgaXNf cGFpcmVkIHR5cGUgYm9vbC4KPiArCj4gKwlyZXQgPSBzaGltLT53cml0ZV8yXzJfbXNnKGludGVs X2RpZ19wb3J0LCAmbXNncy5ub19zdG9yZWRfa20sIHNpemUpOwo+ICsJaWYgKHJldCA8IDApCj4g KwkJcmV0dXJuIHJldDsKPiArCj4gKwlyZXQgPSBzaGltLT5yZWFkXzJfMl9tc2coaW50ZWxfZGln X3BvcnQsIEhEQ1BfMl8yX0FLRV9TRU5EX0hQUklNRSwKPiArCQkJCSAmbXNncy5zZW5kX2hwcmlt ZSwgc2l6ZW9mKG1zZ3Muc2VuZF9ocHJpbWUpKTsKPiArCWlmIChyZXQgPCAwKQo+ICsJCXJldHVy biByZXQ7Cj4gKwo+ICsJcmV0ID0gaGRjcDJfdmVyaWZ5X2hwcmltZShjb25uZWN0b3IsICZtc2dz LnNlbmRfaHByaW1lKTsKPiArCWlmIChyZXQgPCAwKQo+ICsJCXJldHVybiByZXQ7Cj4gKwo+ICsJ aWYgKCFoZGNwLT5pc19wYWlyZWQpIHsKPiArCQkvKiBQYWlyaW5nIGlzIHJlcXVpcmVkICovCj4g KwkJcmV0ID0gc2hpbS0+cmVhZF8yXzJfbXNnKGludGVsX2RpZ19wb3J0LAo+ICsJCQkJCSBIRENQ XzJfMl9BS0VfU0VORF9QQUlSSU5HX0lORk8sCj4gKwkJCQkJICZtc2dzLnBhaXJpbmdfaW5mbywK PiArCQkJCQkgc2l6ZW9mKG1zZ3MucGFpcmluZ19pbmZvKSk7Cj4gKwkJaWYgKHJldCA8IDApCj4g KwkJCXJldHVybiByZXQ7Cj4gKwo+ICsJCXJldCA9IGhkY3AyX3N0b3JlX3BhaXJpbmdfaW5mbyhj b25uZWN0b3IsICZtc2dzLnBhaXJpbmdfaW5mbyk7Cj4gKwkJaWYgKHJldCA8IDApCj4gKwkJCXJl dHVybiByZXQ7Cj4gKwkJaGRjcC0+aXNfcGFpcmVkID0gMTsKCnMvMS90cnVlLwoKPiArCX0KPiAr Cj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGludCBoZGNwMl9sb2NhbGl0eV9jaGVj ayhzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCj4gK3sKPiArCXN0cnVjdCBpbnRl bF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0ID0gY29ubl90b19kaWdfcG9ydChjb25uZWN0 b3IpOwo+ICsJc3RydWN0IGludGVsX2hkY3AgKmhkY3AgPSAmY29ubmVjdG9yLT5oZGNwOwo+ICsJ dW5pb24gewo+ICsJCXN0cnVjdCBoZGNwMl9sY19pbml0IGxjX2luaXQ7Cj4gKwkJc3RydWN0IGhk Y3AyX2xjX3NlbmRfbHByaW1lIHNlbmRfbHByaW1lOwo+ICsJfSBtc2dzOwo+ICsJY29uc3Qgc3Ry dWN0IGludGVsX2hkY3Bfc2hpbSAqc2hpbSA9IGhkY3AtPnNoaW07Cj4gKwlpbnQgdHJpZXMgPSBI RENQMl9MQ19SRVRSWV9DTlQsIHJldCwgaTsKPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgdHJpZXM7 IGkrKykgewo+ICsJCXJldCA9IGhkY3AyX3ByZXBhcmVfbGNfaW5pdChjb25uZWN0b3IsICZtc2dz LmxjX2luaXQpOwo+ICsJCWlmIChyZXQgPCAwKQo+ICsJCQljb250aW51ZTsKPiArCj4gKwkJcmV0 ID0gc2hpbS0+d3JpdGVfMl8yX21zZyhpbnRlbF9kaWdfcG9ydCwgJm1zZ3MubGNfaW5pdCwKPiAr CQkJCSAgICAgIHNpemVvZihtc2dzLmxjX2luaXQpKTsKPiArCQlpZiAocmV0IDwgMCkKPiArCQkJ Y29udGludWU7Cj4gKwo+ICsJCXJldCA9IHNoaW0tPnJlYWRfMl8yX21zZyhpbnRlbF9kaWdfcG9y dCwKPiArCQkJCQkgSERDUF8yXzJfTENfU0VORF9MUFJJTUUsCj4gKwkJCQkJICZtc2dzLnNlbmRf bHByaW1lLAo+ICsJCQkJCSBzaXplb2YobXNncy5zZW5kX2xwcmltZSkpOwo+ICsJCWlmIChyZXQg PCAwKQo+ICsJCQljb250aW51ZTsKPiArCj4gKwkJcmV0ID0gaGRjcDJfdmVyaWZ5X2xwcmltZShj b25uZWN0b3IsICZtc2dzLnNlbmRfbHByaW1lKTsKPiArCQlpZiAoIXJldCkKPiArCQkJYnJlYWs7 CgpXZSdyZSBub3QgY2hlY2tpbmcgdGhhdCB0aGUgc2luayByZXBsaWVzIHF1aWNrbHkgZW5vdWdo IGhlcmUuIFNpbmsgbmVlZHMKdG8gcmVwbHkgaW4gMjBtcy4gQ2FuIGJlIGEgZm9sbG93dXAgSSBn dWVzcy4KCkFsc28ganVzdCBub3RpY2VkIHRoYXQgd2Ugc2VlbSB0byBsYWNrIGFsbCB0aGVzZSB0 aW1pbmcgY2hlY2tzIGZvciBoZGNwMQp0b28sIGF0IGxlYXN0IHdlIGRvbid0IGZhaWwgYXV0aCBp ZiB0aGUgc2luayB0YWtlcyB0b28gbG9uZy4KCj4gKwl9Cj4gKwo+ICsJcmV0dXJuIHJldDsKPiAr fQo+ICsKPiArc3RhdGljIGludCBoZGNwMl9zZXNzaW9uX2tleV9leGNoYW5nZShzdHJ1Y3QgaW50 ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCj4gK3sKPiArCXN0cnVjdCBpbnRlbF9kaWdpdGFsX3Bv cnQgKmludGVsX2RpZ19wb3J0ID0gY29ubl90b19kaWdfcG9ydChjb25uZWN0b3IpOwo+ICsJc3Ry dWN0IGludGVsX2hkY3AgKmhkY3AgPSAmY29ubmVjdG9yLT5oZGNwOwo+ICsJc3RydWN0IGhkY3Ay X3NrZV9zZW5kX2VrcyBzZW5kX2VrczsKPiArCWludCByZXQ7Cj4gKwo+ICsJcmV0ID0gaGRjcDJf cHJlcGFyZV9za2V5KGNvbm5lY3RvciwgJnNlbmRfZWtzKTsKPiArCWlmIChyZXQgPCAwKQo+ICsJ CXJldHVybiByZXQ7Cj4gKwo+ICsJcmV0ID0gaGRjcC0+c2hpbS0+d3JpdGVfMl8yX21zZyhpbnRl bF9kaWdfcG9ydCwgJnNlbmRfZWtzLAo+ICsJCQkJCXNpemVvZihzZW5kX2VrcykpOwo+ICsJaWYg KHJldCA8IDApCj4gKwkJcmV0dXJuIHJldDsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiAg c3RhdGljIGludCBoZGNwMl9hdXRoZW50aWNhdGVfc2luayhzdHJ1Y3QgaW50ZWxfY29ubmVjdG9y ICpjb25uZWN0b3IpCj4gIHsKPiAtCURSTV9FUlJPUigiU2luayBhdXRoZW50aWNhdGlvbiBpcyBk b25lIGluIHN1YnNlcXVlbnQgcGF0Y2hlc1xuIik7Cj4gKwlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9w b3J0ICppbnRlbF9kaWdfcG9ydCA9IGNvbm5fdG9fZGlnX3BvcnQoY29ubmVjdG9yKTsKPiArCXN0 cnVjdCBpbnRlbF9oZGNwICpoZGNwID0gJmNvbm5lY3Rvci0+aGRjcDsKPiArCWNvbnN0IHN0cnVj dCBpbnRlbF9oZGNwX3NoaW0gKnNoaW0gPSBoZGNwLT5zaGltOwo+ICsJc3RydWN0IGhkY3AyX2Rw X2VycmF0YV9zdHJlYW1fdHlwZSBzdHJlYW1fdHlwZV9tc2c7Cj4gKwlpbnQgcmV0Owo+ICAKPiAt CXJldHVybiAtRUlOVkFMOwo+ICsJcmV0ID0gaGRjcDJfYXV0aGVudGljYXRpb25fa2V5X2V4Y2hh bmdlKGNvbm5lY3Rvcik7Cj4gKwlpZiAocmV0IDwgMCkgewo+ICsJCURSTV9ERUJVR19LTVMoIkFL RSBGYWlsZWQuIEVyciA6ICVkXG4iLCByZXQpOwo+ICsJCXJldHVybiByZXQ7Cj4gKwl9Cj4gKwo+ ICsJcmV0ID0gaGRjcDJfbG9jYWxpdHlfY2hlY2soY29ubmVjdG9yKTsKPiArCWlmIChyZXQgPCAw KSB7Cj4gKwkJRFJNX0RFQlVHX0tNUygiTG9jYWxpdHkgQ2hlY2sgZmFpbGVkLiBFcnIgOiAlZFxu IiwgcmV0KTsKPiArCQlyZXR1cm4gcmV0Owo+ICsJfQo+ICsKPiArCXJldCA9IGhkY3AyX3Nlc3Np b25fa2V5X2V4Y2hhbmdlKGNvbm5lY3Rvcik7Cj4gKwlpZiAocmV0IDwgMCkgewo+ICsJCURSTV9E RUJVR19LTVMoIlNLRSBGYWlsZWQuIEVyciA6ICVkXG4iLCByZXQpOwo+ICsJCXJldHVybiByZXQ7 Cj4gKwl9Cj4gKwo+ICsJaWYgKCFoZGNwLT5pc19yZXBlYXRlciAmJiBzaGltLT5jb25maWdfc3Ry ZWFtX3R5cGUpIHsKPiArCQkvKgo+ICsJCSAqIEVycmF0YSBmb3IgRFA6IEFzIFN0cmVhbSB0eXBl IGlzIHVzZWQgZm9yIGVuY3J5cHRpb24sCj4gKwkJICogUmVjZWl2ZXIgc2hvdWxkIGJlIGNvbW11 bmljYXRlZCB3aXRoIHN0cmVhbSB0eXBlIGZvciB0aGUKPiArCQkgKiBkZWNyeXB0aW9uIG9mIHRo ZSBjb250ZW50Lgo+ICsJCSAqIFJlcGVhdGVyIHdpbGwgYmUgY29tbXVuaWNhdGVkIHdpdGggc3Ry ZWFtIHR5cGUgYXMgYQo+ICsJCSAqIHBhcnQgb2YgaXQncyBhdXRoIGxhdGVyIGluIHRpbWUuCj4g KwkJICovCgpJJ20gbm90IGZvbGxvd2luZyB3aGF0IHlvdSB3YW50IHRvIHNheSB3aXRoIHRoaXMg Y29tbWVudCwgYW5kIGhhdmVuJ3QKZm91bmQgYW55dGhpbmcgaW4gdGhlIGhkY3AyIGRwIHNwZWMg YWJvdXQgdGhpcyBlaXRoZXIuCgo+ICsJCXN0cmVhbV90eXBlX21zZy5tc2dfaWQgPSBIRENQXzJf Ml9FUlJBVEFfRFBfU1RSRUFNX1RZUDpFOwo+ICsJCXN0cmVhbV90eXBlX21zZy5zdHJlYW1fdHlw ZSA9IGhkY3AtPmNvbnRlbnRfdHlwZTsKPiArCj4gKwkJcmV0ID0gc2hpbS0+Y29uZmlnX3N0cmVh bV90eXBlKGludGVsX2RpZ19wb3J0LCAmc3RyZWFtX3R5cGVfbXNnLAo+ICsJCQkJCSAgICAgICBz aXplb2Yoc3RyZWFtX3R5cGVfbXNnKSk7Cj4gKwkJaWYgKHJldCA8IDApCj4gKwkJCXJldHVybiBy ZXQ7Cj4gKwl9Cj4gKwo+ICsJaGRjcC0+cG9ydF9kYXRhLnN0cmVhbXNbMF0uc3RyZWFtX3R5cGUg PSBoZGNwLT5jb250ZW50X3R5cGU7Cj4gKwlyZXQgPSBoZGNwMl9hdXRoZW50aWNhdGVfcG9ydChj b25uZWN0b3IpOwo+ICsJaWYgKHJldCA8IDApCj4gKwkJcmV0dXJuIHJldDsKPiArCj4gKwlyZXR1 cm4gcmV0Owo+ICB9CgpXaXRoIHRoeSB0eXBlcyBjaGFuZ2VkIHRvIGJvb2wgYW5kIHRoZSBkcCBl cnJhdGEgY2xlYXJlZCB1cCBzb21laG93OgoKUmV2aWV3ZWQtYnk6IERhbmllbCBWZXR0ZXIgPGRh bmllbC52ZXR0ZXJAZmZ3bGwuY2g+Cgo+ICAKPiAgc3RhdGljIGludCBoZGNwMl9lbmFibGVfZW5j cnlwdGlvbihzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCj4gLS0gCj4gMi43LjQK PiAKCi0tIApEYW5pZWwgVmV0dGVyClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlv bgpodHRwOi8vYmxvZy5mZndsbC5jaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9kcmktZGV2ZWwK