From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Shankar, Uma" Subject: RE: [PATCH v10 09/40] drm/i915: Implement HDCP2.2 receiver authentication Date: Mon, 4 Feb 2019 14:20:09 +0000 Message-ID: References: <1548917996-28081-1-git-send-email-ramalingam.c@intel.com> <1548917996-28081-10-git-send-email-ramalingam.c@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1548917996-28081-10-git-send-email-ramalingam.c@intel.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: "C, Ramalingam" , "intel-gfx@lists.freedesktop.org" , "dri-devel@lists.freedesktop.org" , "daniel.vetter@ffwll.ch" , "Winkler, Tomas" List-Id: dri-devel@lists.freedesktop.org DQoNCj4tLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPkZyb206IEMsIFJhbWFsaW5nYW0NCj5T ZW50OiBUaHVyc2RheSwgSmFudWFyeSAzMSwgMjAxOSAxMjoyOSBQTQ0KPlRvOiBpbnRlbC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnOyBkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnOw0K PmRhbmllbC52ZXR0ZXJAZmZ3bGwuY2g7IFdpbmtsZXIsIFRvbWFzIDx0b21hcy53aW5rbGVyQGlu dGVsLmNvbT47IFNoYW5rYXIsDQo+VW1hIDx1bWEuc2hhbmthckBpbnRlbC5jb20+DQo+Q2M6IEMs IFJhbWFsaW5nYW0gPHJhbWFsaW5nYW0uY0BpbnRlbC5jb20+DQo+U3ViamVjdDogW1BBVENIIHYx MCAwOS80MF0gZHJtL2k5MTU6IEltcGxlbWVudCBIRENQMi4yIHJlY2VpdmVyDQo+YXV0aGVudGlj YXRpb24NCj4NCj5JbXBsZW1lbnRzIEhEQ1AyLjIgYXV0aGVudGljYXRpb24gZm9yIGhkY3AyLjIg cmVjZWl2ZXJzLCB3aXRoIGZvbGxvd2luZyBzdGVwczoNCj4JQXV0aGVudGljYXRpb24gYW5kIEtl eSBleGNoYW5nZSAoQUtFKS4NCj4JTG9jYWxpdHkgQ2hlY2sgKExDKS4NCj4JU2Vzc2lvbiBLZXkg RXhjaGFuZ2UoU0tFKS4NCj4JRFAgRXJyYXRhIGZvciBzdHJlYW0gdHlwZSBjb25maWd1cmF0aW9u IGZvciByZWNlaXZlcnMuDQo+DQo+QXQgQUtFLCB0aGUgSERDUCBSZWNlaXZlcuKAmXMgcHVibGlj IGtleSBjZXJ0aWZpY2F0ZSBpcyB2ZXJpZmllZCBieSB0aGUgSERDUA0KPlRyYW5zbWl0dGVyLiBB IE1hc3RlciBLZXkgayBtIGlzIGV4Y2hhbmdlZC4NCj4NCj5BdCBMQywgdGhlIEhEQ1AgVHJhbnNt aXR0ZXIgZW5mb3JjZXMgbG9jYWxpdHkgb24gdGhlIGNvbnRlbnQgYnkgcmVxdWlyaW5nIHRoYXQg dGhlDQo+Um91bmQgVHJpcCBUaW1lIChSVFQpIGJldHdlZW4gYSBwYWlyIG9mIG1lc3NhZ2VzIGlz IG5vdCBtb3JlIHRoYW4gMjAgbXMuDQo+DQo+QXQgU0tFLCBUaGUgSERDUCBUcmFuc21pdHRlciBl eGNoYW5nZXMgU2Vzc2lvbiBLZXkga3Mgd2l0aCB0aGUgSERDUCBSZWNlaXZlci4NCj4NCj5JbiBE UCBIRENQMi4yIGVuY3J5cHRpb24gYW5kIGRlY3J5cHRpb24gbG9naWNzIHVzZSB0aGUgc3RyZWFt IHR5cGUgYXMgb25lIG9mIHRoZQ0KPnBhcmFtZXRlci4gU28gQmVmb3JlIGVuYWJsaW5nIHRoZSBF bmNyeXB0aW9uIERQIEhEQ1AyLjIgcmVjZWl2ZXIgbmVlZHMgdG8gYmUNCj5jb21tdW5pY2F0ZWQg d2l0aCBzdHJlYW0gdHlwZS4gVGhpcyBpcyBhZGRlZCB0byBzcGVjIGFzIEVSUkFUQS4NCj4NCj5U aGlzIGdlbmVyaWMgaW1wbGVtZW50YXRpb24gaXMgY29tcGxldGUgb25seSB3aXRoIHRoZSBoZGNw MiBzcGVjaWZpYyBmdW5jdGlvbnMNCj5kZWZpbmVkIGF0IGhkY3Bfc2hpbS4NCj4NCj52MjogUmVi YXNlZC4NCj52MzoNCj4gICVzL1BBUklORy9QQUlSSU5HDQo+ICBDb2Rpbmcgc3R5bGUgZml4aW5n IFtVbWFdDQo+djQ6DQo+ICBSZWJhc2VkIGFzIHBhcnQgb2YgcGF0Y2ggcmVvcmRlcmluZy4NCj4g IERlZmluZWQgdGhlIGZ1bmN0aW9ucyBmb3IgbWVpIHNlcnZpY2VzLiBbRGFuaWVsXQ0KPnY1Og0K PiAgUmVkZWZpbmVkIHRoZSBtZWkgc2VydmljZSBmdW5jdGlvbnMgYXMgcGVyIGNvbXAgcmVkZXNp Z24uDQo+ICBSZXF1aXJlZCBpbnRlbF9oZGNwIG1lbWJlcnMgYXJlIGRlZmluZWQgW1NlYW4gUGF1 bF0NCj52NjoNCj4gIFR5cG8gb2YgY2lwaGVyIGlzIEZpeGVkIFtVbWFdDQo+ICAlcy91aW50eHhf dC91eHgNCj4gIENoZWNrIGZvciBjb21wX21hc3RlciBpcyByZW1vdmVkLg0KPnY3Og0KPiAgQWRq dXN0IHRvIHRoZSBuZXcgaW50ZXJmYWNlLg0KPiAgQXZvaWQgdXNpbmcgYm9vbCBzdHJ1Y3R1cmUg bWVtYmVycy4gW1RvbWFzXQ0KPnY4OiBSZWJhc2VkLg0KPnY5Og0KPiAgYm9vbCBpcyB1c2VkIGlu IHN0cnVjdCBpbnRlbF9oZGNwIFtEYW5pZWxdDQo+ICBjb25maWdfc3RyZWFtX3R5cGUgaXMgcmVk ZXNpZ25lZCBbRGFuaWVsXQ0KPg0KPlNpZ25lZC1vZmYtYnk6IFJhbWFsaW5nYW0gQyA8cmFtYWxp bmdhbS5jQGludGVsLmNvbT4NCj5SZXZpZXdlZC1ieTogRGFuaWVsIFZldHRlciA8ZGFuaWVsLnZl dHRlckBmZndsbC5jaD4NCg0KTG9va3Mgb2sgdG8gbWUuDQpSZXZpZXdlZC1ieTogVW1hIFNoYW5r YXIgPHVtYS5zaGFua2FyQGludGVsLmNvbT4NCg0KPi0tLQ0KPiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcnYuaCAgfCAgMzQgKysrKysrKw0KPmRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2hkY3AuYyB8IDE5Nw0KPisrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tDQo+ IDIgZmlsZXMgY2hhbmdlZCwgMjE2IGluc2VydGlvbnMoKyksIDE1IGRlbGV0aW9ucygtKQ0KPg0K PmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rydi5oDQo+aW5kZXggMzFjN2E0NTc3Y2E5Li5lNjc5MjMwNDUy MGEgMTAwNjQ0DQo+LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgNCj4rKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaA0KPkBAIC0zOTMsNiArMzkzLDIyIEBA IHN0cnVjdCBpbnRlbF9oZGNwX3NoaW0gew0KPiAJLyogRGV0ZWN0cyB3aGV0aGVyIFBhbmVsIGlz IEhEQ1AyLjIgY2FwYWJsZSAqLw0KPiAJaW50ICgqaGRjcF8yXzJfY2FwYWJsZSkoc3RydWN0IGlu dGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQsDQo+IAkJCQlib29sICpjYXBhYmxlKTsN Cj4rDQo+KwkvKiBXcml0ZSBIRENQMi4yIG1lc3NhZ2VzICovDQo+KwlpbnQgKCp3cml0ZV8yXzJf bXNnKShzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCwNCj4rCQkJICAg ICB2b2lkICpidWYsIHNpemVfdCBzaXplKTsNCj4rDQo+KwkvKiBSZWFkIEhEQ1AyLjIgbWVzc2Fn ZXMgKi8NCj4rCWludCAoKnJlYWRfMl8yX21zZykoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAq aW50ZWxfZGlnX3BvcnQsDQo+KwkJCSAgICB1OCBtc2dfaWQsIHZvaWQgKmJ1Ziwgc2l6ZV90IHNp emUpOw0KPisNCj4rCS8qDQo+KwkgKiBJbXBsZW1lbnRhdGlvbiBvZiBEUCBIRENQMi4yIEVycmF0 YSBmb3IgdGhlIGNvbW11bmljYXRpb24gb2YNCj5zdHJlYW0NCj4rCSAqIHR5cGUgdG8gUmVjZWl2 ZXJzLiBJbiBEUCBIRENQMi4yIFN0cmVhbSB0eXBlIGlzIG9uZSBvZiB0aGUgaW5wdXQgdG8NCj4r CSAqIHRoZSBIRENQMi4yIENpcGhlciBmb3IgRW4vRGUtQ3J5cHRpb24uIE5vdCBhcHBsaWNhYmxl IGZvciBIRE1JLg0KPisJICovDQo+KwlpbnQgKCpjb25maWdfc3RyZWFtX3R5cGUpKHN0cnVjdCBp bnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0LA0KPisJCQkJICBib29sIGlzX3JlcGVh dGVyLCB1OCB0eXBlKTsNCj4gfTsNCj4NCj4gc3RydWN0IGludGVsX2hkY3Agew0KPkBAIC00MjAs NiArNDM2LDI0IEBAIHN0cnVjdCBpbnRlbF9oZGNwIHsNCj4gCSAqLw0KPiAJdTggY29udGVudF90 eXBlOw0KPiAJc3RydWN0IGhkY3BfcG9ydF9kYXRhIHBvcnRfZGF0YTsNCj4rDQo+Kwlib29sIGlz X3BhaXJlZDsNCj4rCWJvb2wgaXNfcmVwZWF0ZXI7DQo+Kw0KPisJLyoNCj4rCSAqIENvdW50IG9m IFJlY2VpdmVySURfTGlzdCByZWNlaXZlZC4gSW5pdGlhbGl6ZWQgdG8gMCBhdCBBS0VfSU5JVC4N Cj4rCSAqIEluY3JlbWVudGVkIGFmdGVyIHByb2Nlc3NpbmcgdGhlIFJlcGVhdGVyQXV0aF9TZW5k X1JlY2VpdmVySURfTGlzdC4NCj4rCSAqIFdoZW4gaXQgcm9sbHMgb3ZlciByZS1hdXRoIGhhcyB0 byBiZSB0cmlnZ2VyZWQuDQo+KwkgKi8NCj4rCXUzMiBzZXFfbnVtX3Y7DQo+Kw0KPisJLyoNCj4r CSAqIENvdW50IG9mIFJlcGVhdGVyQXV0aF9TdHJlYW1fTWFuYWdlIG1zZyBwcm9wYWdhdGVkLg0K PisJICogSW5pdGlhbGl6ZWQgdG8gMCBvbiBBS0VfSU5JVC4gSW5jcmVtZW50ZWQgYWZ0ZXIgZXZl cnkgc3VjY2Vzc2Z1bA0KPisJICogdHJhbnNtaXNzaW9uIG9mIFJlcGVhdGVyQXV0aF9TdHJlYW1f TWFuYWdlIG1lc3NhZ2UuIFdoZW4gaXQgcm9sbHMNCj4rCSAqIG92ZXIgcmUtQXV0aCBoYXMgdG8g YmUgdHJpZ2dlcmVkLg0KPisJICovDQo+Kwl1MzIgc2VxX251bV9tOw0KPiB9Ow0KPg0KPiBzdHJ1 Y3QgaW50ZWxfY29ubmVjdG9yIHsNCj5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfaGRjcC5jDQo+Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZGNwLmMNCj5pbmRl eCBmYmY4Yjc4OTNiZmEuLjFjODFlMTdkYzZjNCAxMDA2NDQNCj4tLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9oZGNwLmMNCj4rKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9o ZGNwLmMNCj5AQCAtMTcsNiArMTcsNyBAQA0KPg0KPiAjZGVmaW5lIEtFWV9MT0FEX1RSSUVTCTUN Cj4gI2RlZmluZSBFTkNSWVBUX1NUQVRVU19DSEFOR0VfVElNRU9VVF9NUwk1MA0KPisjZGVmaW5l IEhEQ1AyX0xDX1JFVFJZX0NOVAkJCTMNCj4NCj4gc3RhdGljDQo+IGJvb2wgaW50ZWxfaGRjcF9p c19rc3ZfdmFsaWQodTggKmtzdikNCj5AQCAtODUzLDcgKzg1NCw3IEBAIGJvb2wgaXNfaGRjcF9z dXBwb3J0ZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUNCj4qZGV2X3ByaXYsIGVudW0gcG9ydCBw b3J0KQ0KPiAJcmV0dXJuIElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSAmJiBwb3J0IDwgUE9SVF9F OyAgfQ0KPg0KPi1zdGF0aWMgX19hdHRyaWJ1dGVfXygodW51c2VkKSkgaW50DQo+K3N0YXRpYyBp bnQNCj4gaGRjcDJfcHJlcGFyZV9ha2VfaW5pdChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25u ZWN0b3IsDQo+IAkJICAgICAgIHN0cnVjdCBoZGNwMl9ha2VfaW5pdCAqYWtlX2RhdGEpICB7IEBA IC04NzgsNyArODc5LDcgQEANCj5oZGNwMl9wcmVwYXJlX2FrZV9pbml0KHN0cnVjdCBpbnRlbF9j b25uZWN0b3IgKmNvbm5lY3RvciwNCj4gCXJldHVybiByZXQ7DQo+IH0NCj4NCj4tc3RhdGljIF9f YXR0cmlidXRlX18oKHVudXNlZCkpIGludA0KPitzdGF0aWMgaW50DQo+IGhkY3AyX3ZlcmlmeV9y eF9jZXJ0X3ByZXBhcmVfa20oc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLA0KPiAJ CQkJc3RydWN0IGhkY3AyX2FrZV9zZW5kX2NlcnQgKnJ4X2NlcnQsDQo+IAkJCQlib29sICpwYWly ZWQsDQo+QEAgLTkwOCw5ICs5MDksOCBAQCBoZGNwMl92ZXJpZnlfcnhfY2VydF9wcmVwYXJlX2tt KHN0cnVjdCBpbnRlbF9jb25uZWN0b3INCj4qY29ubmVjdG9yLA0KPiAJcmV0dXJuIHJldDsNCj4g fQ0KPg0KPi1zdGF0aWMgX19hdHRyaWJ1dGVfXygodW51c2VkKSkgaW50DQo+LWhkY3AyX3Zlcmlm eV9ocHJpbWUoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLA0KPi0JCSAgICBzdHJ1 Y3QgaGRjcDJfYWtlX3NlbmRfaHByaW1lICpyeF9ocHJpbWUpDQo+K3N0YXRpYyBpbnQgaGRjcDJf dmVyaWZ5X2hwcmltZShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IsDQo+KwkJCSAg ICAgICBzdHJ1Y3QgaGRjcDJfYWtlX3NlbmRfaHByaW1lICpyeF9ocHJpbWUpDQo+IHsNCj4gCXN0 cnVjdCBoZGNwX3BvcnRfZGF0YSAqZGF0YSA9ICZjb25uZWN0b3ItPmhkY3AucG9ydF9kYXRhOw0K PiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjb25uZWN0b3It PmJhc2UuZGV2KTsgQEANCj4tOTMzLDcgKzkzMyw3IEBAIGhkY3AyX3ZlcmlmeV9ocHJpbWUoc3Ry dWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLA0KPiAJcmV0dXJuIHJldDsNCj4gfQ0KPg0K Pi1zdGF0aWMgX19hdHRyaWJ1dGVfXygodW51c2VkKSkgaW50DQo+K3N0YXRpYyBpbnQNCj4gaGRj cDJfc3RvcmVfcGFpcmluZ19pbmZvKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwN Cj4gCQkJIHN0cnVjdCBoZGNwMl9ha2Vfc2VuZF9wYWlyaW5nX2luZm8gKnBhaXJpbmdfaW5mbykg IHsNCj5AQCAtOTU4LDcgKzk1OCw3IEBAIGhkY3AyX3N0b3JlX3BhaXJpbmdfaW5mbyhzdHJ1Y3Qg aW50ZWxfY29ubmVjdG9yDQo+KmNvbm5lY3RvciwNCj4gCXJldHVybiByZXQ7DQo+IH0NCj4NCj4t c3RhdGljIF9fYXR0cmlidXRlX18oKHVudXNlZCkpIGludA0KPitzdGF0aWMgaW50DQo+IGhkY3Ay X3ByZXBhcmVfbGNfaW5pdChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IsDQo+IAkJ ICAgICAgc3RydWN0IGhkY3AyX2xjX2luaXQgKmxjX2luaXQpDQo+IHsNCj5AQCAtOTgzLDcgKzk4 Myw3IEBAIGhkY3AyX3ByZXBhcmVfbGNfaW5pdChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yDQo+KmNv bm5lY3RvciwNCj4gCXJldHVybiByZXQ7DQo+IH0NCj4NCj4tc3RhdGljIF9fYXR0cmlidXRlX18o KHVudXNlZCkpIGludA0KPitzdGF0aWMgaW50DQo+IGhkY3AyX3ZlcmlmeV9scHJpbWUoc3RydWN0 IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLA0KPiAJCSAgICBzdHJ1Y3QgaGRjcDJfbGNfc2Vu ZF9scHJpbWUgKnJ4X2xwcmltZSkgIHsgQEAgLTEwMDgsOQ0KPisxMDA4LDggQEAgaGRjcDJfdmVy aWZ5X2xwcmltZShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IsDQo+IAlyZXR1cm4g cmV0Ow0KPiB9DQo+DQo+LXN0YXRpYyBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKQ0KPi1pbnQgaGRj cDJfcHJlcGFyZV9za2V5KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwNCj4tCQkg ICAgICAgc3RydWN0IGhkY3AyX3NrZV9zZW5kX2VrcyAqc2tlX2RhdGEpDQo+K3N0YXRpYyBpbnQg aGRjcDJfcHJlcGFyZV9za2V5KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwNCj4r CQkJICAgICAgc3RydWN0IGhkY3AyX3NrZV9zZW5kX2VrcyAqc2tlX2RhdGEpDQo+IHsNCj4gCXN0 cnVjdCBoZGNwX3BvcnRfZGF0YSAqZGF0YSA9ICZjb25uZWN0b3ItPmhkY3AucG9ydF9kYXRhOw0K PiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjb25uZWN0b3It PmJhc2UuZGV2KTsgQEANCj4tMTA4Nyw4ICsxMDg2LDcgQEAgaGRjcDJfdmVyaWZ5X21wcmltZShz dHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IsDQo+IAlyZXR1cm4gcmV0Ow0KPiB9DQo+ DQo+LXN0YXRpYyBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKQ0KPi1pbnQgaGRjcDJfYXV0aGVudGlj YXRlX3BvcnQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQ0KPitzdGF0aWMgaW50 IGhkY3AyX2F1dGhlbnRpY2F0ZV9wb3J0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3Rv cikNCj4gew0KPiAJc3RydWN0IGhkY3BfcG9ydF9kYXRhICpkYXRhID0gJmNvbm5lY3Rvci0+aGRj cC5wb3J0X2RhdGE7DQo+IAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19p OTE1KGNvbm5lY3Rvci0+YmFzZS5kZXYpOyBAQA0KPi0xMTM3LDExICsxMTM1LDE4MCBAQCBzdGF0 aWMgaW50IGhkY3AyX2RlYXV0aGVudGljYXRlX3BvcnQoc3RydWN0DQo+aW50ZWxfY29ubmVjdG9y ICpjb25uZWN0b3IpDQo+IAlyZXR1cm4gaGRjcDJfY2xvc2VfbWVpX3Nlc3Npb24oY29ubmVjdG9y KTsNCj4gfQ0KPg0KPisvKiBBdXRoZW50aWNhdGlvbiBmbG93IHN0YXJ0cyBmcm9tIGhlcmUgKi8g c3RhdGljIGludA0KPitoZGNwMl9hdXRoZW50aWNhdGlvbl9rZXlfZXhjaGFuZ2Uoc3RydWN0IGlu dGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKSB7DQo+KwlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0 ICppbnRlbF9kaWdfcG9ydCA9IGNvbm5fdG9fZGlnX3BvcnQoY29ubmVjdG9yKTsNCj4rCXN0cnVj dCBpbnRlbF9oZGNwICpoZGNwID0gJmNvbm5lY3Rvci0+aGRjcDsNCj4rCXVuaW9uIHsNCj4rCQlz dHJ1Y3QgaGRjcDJfYWtlX2luaXQgYWtlX2luaXQ7DQo+KwkJc3RydWN0IGhkY3AyX2FrZV9zZW5k X2NlcnQgc2VuZF9jZXJ0Ow0KPisJCXN0cnVjdCBoZGNwMl9ha2Vfbm9fc3RvcmVkX2ttIG5vX3N0 b3JlZF9rbTsNCj4rCQlzdHJ1Y3QgaGRjcDJfYWtlX3NlbmRfaHByaW1lIHNlbmRfaHByaW1lOw0K PisJCXN0cnVjdCBoZGNwMl9ha2Vfc2VuZF9wYWlyaW5nX2luZm8gcGFpcmluZ19pbmZvOw0KPisJ fSBtc2dzOw0KPisJY29uc3Qgc3RydWN0IGludGVsX2hkY3Bfc2hpbSAqc2hpbSA9IGhkY3AtPnNo aW07DQo+KwlzaXplX3Qgc2l6ZTsNCj4rCWludCByZXQ7DQo+Kw0KPisJLyogSW5pdCBmb3Igc2Vx X251bSAqLw0KPisJaGRjcC0+c2VxX251bV92ID0gMDsNCj4rCWhkY3AtPnNlcV9udW1fbSA9IDA7 DQo+Kw0KPisJcmV0ID0gaGRjcDJfcHJlcGFyZV9ha2VfaW5pdChjb25uZWN0b3IsICZtc2dzLmFr ZV9pbml0KTsNCj4rCWlmIChyZXQgPCAwKQ0KPisJCXJldHVybiByZXQ7DQo+Kw0KPisJcmV0ID0g c2hpbS0+d3JpdGVfMl8yX21zZyhpbnRlbF9kaWdfcG9ydCwgJm1zZ3MuYWtlX2luaXQsDQo+KwkJ CQkgIHNpemVvZihtc2dzLmFrZV9pbml0KSk7DQo+KwlpZiAocmV0IDwgMCkNCj4rCQlyZXR1cm4g cmV0Ow0KPisNCj4rCXJldCA9IHNoaW0tPnJlYWRfMl8yX21zZyhpbnRlbF9kaWdfcG9ydCwgSERD UF8yXzJfQUtFX1NFTkRfQ0VSVCwNCj4rCQkJCSAmbXNncy5zZW5kX2NlcnQsIHNpemVvZihtc2dz LnNlbmRfY2VydCkpOw0KPisJaWYgKHJldCA8IDApDQo+KwkJcmV0dXJuIHJldDsNCj4rDQo+Kwlp ZiAobXNncy5zZW5kX2NlcnQucnhfY2Fwc1swXSAhPSBIRENQXzJfMl9SWF9DQVBTX1ZFUlNJT05f VkFMKQ0KPisJCXJldHVybiAtRUlOVkFMOw0KPisNCj4rCWhkY3AtPmlzX3JlcGVhdGVyID0NCj5I RENQXzJfMl9SWF9SRVBFQVRFUihtc2dzLnNlbmRfY2VydC5yeF9jYXBzWzJdKTsNCj4rDQo+Kwkv Kg0KPisJICogSGVyZSBtc2dzLm5vX3N0b3JlZF9rbSB3aWxsIGhvbGQgbXNncyBjb3JyZXNwb25k aW5nIHRvIHRoZSBrbQ0KPisJICogc3RvcmVkIGFsc28uDQo+KwkgKi8NCj4rCXJldCA9IGhkY3Ay X3ZlcmlmeV9yeF9jZXJ0X3ByZXBhcmVfa20oY29ubmVjdG9yLCAmbXNncy5zZW5kX2NlcnQsDQo+ KwkJCQkJICAgICAgJmhkY3AtPmlzX3BhaXJlZCwNCj4rCQkJCQkgICAgICAmbXNncy5ub19zdG9y ZWRfa20sICZzaXplKTsNCj4rCWlmIChyZXQgPCAwKQ0KPisJCXJldHVybiByZXQ7DQo+Kw0KPisJ cmV0ID0gc2hpbS0+d3JpdGVfMl8yX21zZyhpbnRlbF9kaWdfcG9ydCwgJm1zZ3Mubm9fc3RvcmVk X2ttLCBzaXplKTsNCj4rCWlmIChyZXQgPCAwKQ0KPisJCXJldHVybiByZXQ7DQo+Kw0KPisJcmV0 ID0gc2hpbS0+cmVhZF8yXzJfbXNnKGludGVsX2RpZ19wb3J0LA0KPkhEQ1BfMl8yX0FLRV9TRU5E X0hQUklNRSwNCj4rCQkJCSAmbXNncy5zZW5kX2hwcmltZSwNCj5zaXplb2YobXNncy5zZW5kX2hw cmltZSkpOw0KPisJaWYgKHJldCA8IDApDQo+KwkJcmV0dXJuIHJldDsNCj4rDQo+KwlyZXQgPSBo ZGNwMl92ZXJpZnlfaHByaW1lKGNvbm5lY3RvciwgJm1zZ3Muc2VuZF9ocHJpbWUpOw0KPisJaWYg KHJldCA8IDApDQo+KwkJcmV0dXJuIHJldDsNCj4rDQo+KwlpZiAoIWhkY3AtPmlzX3BhaXJlZCkg ew0KPisJCS8qIFBhaXJpbmcgaXMgcmVxdWlyZWQgKi8NCj4rCQlyZXQgPSBzaGltLT5yZWFkXzJf Ml9tc2coaW50ZWxfZGlnX3BvcnQsDQo+KwkJCQkJIEhEQ1BfMl8yX0FLRV9TRU5EX1BBSVJJTkdf SU5GTywNCj4rCQkJCQkgJm1zZ3MucGFpcmluZ19pbmZvLA0KPisJCQkJCSBzaXplb2YobXNncy5w YWlyaW5nX2luZm8pKTsNCj4rCQlpZiAocmV0IDwgMCkNCj4rCQkJcmV0dXJuIHJldDsNCj4rDQo+ KwkJcmV0ID0gaGRjcDJfc3RvcmVfcGFpcmluZ19pbmZvKGNvbm5lY3RvciwgJm1zZ3MucGFpcmlu Z19pbmZvKTsNCj4rCQlpZiAocmV0IDwgMCkNCj4rCQkJcmV0dXJuIHJldDsNCj4rCQloZGNwLT5p c19wYWlyZWQgPSB0cnVlOw0KPisJfQ0KPisNCj4rCXJldHVybiAwOw0KPit9DQo+Kw0KPitzdGF0 aWMgaW50IGhkY3AyX2xvY2FsaXR5X2NoZWNrKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5l Y3Rvcikgew0KPisJc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQgPSBj b25uX3RvX2RpZ19wb3J0KGNvbm5lY3Rvcik7DQo+KwlzdHJ1Y3QgaW50ZWxfaGRjcCAqaGRjcCA9 ICZjb25uZWN0b3ItPmhkY3A7DQo+Kwl1bmlvbiB7DQo+KwkJc3RydWN0IGhkY3AyX2xjX2luaXQg bGNfaW5pdDsNCj4rCQlzdHJ1Y3QgaGRjcDJfbGNfc2VuZF9scHJpbWUgc2VuZF9scHJpbWU7DQo+ Kwl9IG1zZ3M7DQo+Kwljb25zdCBzdHJ1Y3QgaW50ZWxfaGRjcF9zaGltICpzaGltID0gaGRjcC0+ c2hpbTsNCj4rCWludCB0cmllcyA9IEhEQ1AyX0xDX1JFVFJZX0NOVCwgcmV0LCBpOw0KPisNCj4r CWZvciAoaSA9IDA7IGkgPCB0cmllczsgaSsrKSB7DQo+KwkJcmV0ID0gaGRjcDJfcHJlcGFyZV9s Y19pbml0KGNvbm5lY3RvciwgJm1zZ3MubGNfaW5pdCk7DQo+KwkJaWYgKHJldCA8IDApDQo+KwkJ CWNvbnRpbnVlOw0KPisNCj4rCQlyZXQgPSBzaGltLT53cml0ZV8yXzJfbXNnKGludGVsX2RpZ19w b3J0LCAmbXNncy5sY19pbml0LA0KPisJCQkJICAgICAgc2l6ZW9mKG1zZ3MubGNfaW5pdCkpOw0K PisJCWlmIChyZXQgPCAwKQ0KPisJCQljb250aW51ZTsNCj4rDQo+KwkJcmV0ID0gc2hpbS0+cmVh ZF8yXzJfbXNnKGludGVsX2RpZ19wb3J0LA0KPisJCQkJCSBIRENQXzJfMl9MQ19TRU5EX0xQUklN RSwNCj4rCQkJCQkgJm1zZ3Muc2VuZF9scHJpbWUsDQo+KwkJCQkJIHNpemVvZihtc2dzLnNlbmRf bHByaW1lKSk7DQo+KwkJaWYgKHJldCA8IDApDQo+KwkJCWNvbnRpbnVlOw0KPisNCj4rCQlyZXQg PSBoZGNwMl92ZXJpZnlfbHByaW1lKGNvbm5lY3RvciwgJm1zZ3Muc2VuZF9scHJpbWUpOw0KPisJ CWlmICghcmV0KQ0KPisJCQlicmVhazsNCj4rCX0NCj4rDQo+KwlyZXR1cm4gcmV0Ow0KPit9DQo+ Kw0KPitzdGF0aWMgaW50IGhkY3AyX3Nlc3Npb25fa2V5X2V4Y2hhbmdlKHN0cnVjdCBpbnRlbF9j b25uZWN0b3INCj4rKmNvbm5lY3Rvcikgew0KPisJc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAq aW50ZWxfZGlnX3BvcnQgPSBjb25uX3RvX2RpZ19wb3J0KGNvbm5lY3Rvcik7DQo+KwlzdHJ1Y3Qg aW50ZWxfaGRjcCAqaGRjcCA9ICZjb25uZWN0b3ItPmhkY3A7DQo+KwlzdHJ1Y3QgaGRjcDJfc2tl X3NlbmRfZWtzIHNlbmRfZWtzOw0KPisJaW50IHJldDsNCj4rDQo+KwlyZXQgPSBoZGNwMl9wcmVw YXJlX3NrZXkoY29ubmVjdG9yLCAmc2VuZF9la3MpOw0KPisJaWYgKHJldCA8IDApDQo+KwkJcmV0 dXJuIHJldDsNCj4rDQo+KwlyZXQgPSBoZGNwLT5zaGltLT53cml0ZV8yXzJfbXNnKGludGVsX2Rp Z19wb3J0LCAmc2VuZF9la3MsDQo+KwkJCQkJc2l6ZW9mKHNlbmRfZWtzKSk7DQo+KwlpZiAocmV0 IDwgMCkNCj4rCQlyZXR1cm4gcmV0Ow0KPisNCj4rCXJldHVybiAwOw0KPit9DQo+Kw0KPiBzdGF0 aWMgaW50IGhkY3AyX2F1dGhlbnRpY2F0ZV9zaW5rKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNv bm5lY3RvcikgIHsNCj4tCURSTV9FUlJPUigiU2luayBhdXRoZW50aWNhdGlvbiBpcyBkb25lIGlu IHN1YnNlcXVlbnQgcGF0Y2hlc1xuIik7DQo+KwlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpp bnRlbF9kaWdfcG9ydCA9IGNvbm5fdG9fZGlnX3BvcnQoY29ubmVjdG9yKTsNCj4rCXN0cnVjdCBp bnRlbF9oZGNwICpoZGNwID0gJmNvbm5lY3Rvci0+aGRjcDsNCj4rCWNvbnN0IHN0cnVjdCBpbnRl bF9oZGNwX3NoaW0gKnNoaW0gPSBoZGNwLT5zaGltOw0KPisJaW50IHJldDsNCj4NCj4tCXJldHVy biAtRUlOVkFMOw0KPisJcmV0ID0gaGRjcDJfYXV0aGVudGljYXRpb25fa2V5X2V4Y2hhbmdlKGNv bm5lY3Rvcik7DQo+KwlpZiAocmV0IDwgMCkgew0KPisJCURSTV9ERUJVR19LTVMoIkFLRSBGYWls ZWQuIEVyciA6ICVkXG4iLCByZXQpOw0KPisJCXJldHVybiByZXQ7DQo+Kwl9DQo+Kw0KPisJcmV0 ID0gaGRjcDJfbG9jYWxpdHlfY2hlY2soY29ubmVjdG9yKTsNCj4rCWlmIChyZXQgPCAwKSB7DQo+ KwkJRFJNX0RFQlVHX0tNUygiTG9jYWxpdHkgQ2hlY2sgZmFpbGVkLiBFcnIgOiAlZFxuIiwgcmV0 KTsNCj4rCQlyZXR1cm4gcmV0Ow0KPisJfQ0KPisNCj4rCXJldCA9IGhkY3AyX3Nlc3Npb25fa2V5 X2V4Y2hhbmdlKGNvbm5lY3Rvcik7DQo+KwlpZiAocmV0IDwgMCkgew0KPisJCURSTV9ERUJVR19L TVMoIlNLRSBGYWlsZWQuIEVyciA6ICVkXG4iLCByZXQpOw0KPisJCXJldHVybiByZXQ7DQo+Kwl9 DQo+Kw0KPisJaWYgKHNoaW0tPmNvbmZpZ19zdHJlYW1fdHlwZSkgew0KPisJCXJldCA9IHNoaW0t PmNvbmZpZ19zdHJlYW1fdHlwZShpbnRlbF9kaWdfcG9ydCwNCj4rCQkJCQkgICAgICAgaGRjcC0+ aXNfcmVwZWF0ZXIsDQo+KwkJCQkJICAgICAgIGhkY3AtPmNvbnRlbnRfdHlwZSk7DQo+KwkJaWYg KHJldCA8IDApDQo+KwkJCXJldHVybiByZXQ7DQo+Kwl9DQo+Kw0KPisJaGRjcC0+cG9ydF9kYXRh LnN0cmVhbXNbMF0uc3RyZWFtX3R5cGUgPSBoZGNwLT5jb250ZW50X3R5cGU7DQo+KwlyZXQgPSBo ZGNwMl9hdXRoZW50aWNhdGVfcG9ydChjb25uZWN0b3IpOw0KPisJaWYgKHJldCA8IDApDQo+KwkJ cmV0dXJuIHJldDsNCj4rDQo+KwlyZXR1cm4gcmV0Ow0KPiB9DQo+DQo+IHN0YXRpYyBpbnQgaGRj cDJfZW5hYmxlX2VuY3J5cHRpb24oc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQ0K Pi0tDQo+Mi43LjQNCg0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRl dmVsCg==