From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ramalingam C Subject: [PATCH v8 07/35] drm/i915: Implement HDCP2.2 receiver authentication Date: Tue, 27 Nov 2018 16:13:05 +0530 Message-ID: <1543315413-24302-8-git-send-email-ramalingam.c@intel.com> References: <1543315413-24302-1-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: <1543315413-24302-1-git-send-email-ramalingam.c@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, daniel.vetter@ffwll.ch, tomas.winkler@intel.com List-Id: dri-devel@lists.freedesktop.org SW1wbGVtZW50cyBIRENQMi4yIGF1dGhlbnRpY2F0aW9uIGZvciBoZGNwMi4yIHJlY2VpdmVycywg d2l0aApmb2xsb3dpbmcgc3RlcHM6CglBdXRoZW50aWNhdGlvbiBhbmQgS2V5IGV4Y2hhbmdlIChB S0UpLgoJTG9jYWxpdHkgQ2hlY2sgKExDKS4KCVNlc3Npb24gS2V5IEV4Y2hhbmdlKFNLRSkuCglE UCBFcnJhdGEgZm9yIHN0cmVhbSB0eXBlIGNvbmZpZ3VyYXRpb24gZm9yIHJlY2VpdmVycy4KCkF0 IEFLRSwgdGhlIEhEQ1AgUmVjZWl2ZXLigJlzIHB1YmxpYyBrZXkgY2VydGlmaWNhdGUgaXMgdmVy aWZpZWQgYnkgdGhlCkhEQ1AgVHJhbnNtaXR0ZXIuIEEgTWFzdGVyIEtleSBrIG0gaXMgZXhjaGFu Z2VkLgoKQXQgTEMsIHRoZSBIRENQIFRyYW5zbWl0dGVyIGVuZm9yY2VzIGxvY2FsaXR5IG9uIHRo ZSBjb250ZW50IGJ5CnJlcXVpcmluZyB0aGF0IHRoZSBSb3VuZCBUcmlwIFRpbWUgKFJUVCkgYmV0 d2VlbiBhIHBhaXIgb2YgbWVzc2FnZXMKaXMgbm90IG1vcmUgdGhhbiAyMCBtcy4KCkF0IFNLRSwg VGhlIEhEQ1AgVHJhbnNtaXR0ZXIgZXhjaGFuZ2VzIFNlc3Npb24gS2V5IGtzIHdpdGgKdGhlIEhE Q1AgUmVjZWl2ZXIuCgpJbiBEUCBIRENQMi4yIGVuY3J5cHRpb24gYW5kIGRlY3J5cHRpb24gbG9n aWNzIHVzZSB0aGUgc3RyZWFtIHR5cGUgYXMKb25lIG9mIHRoZSBwYXJhbWV0ZXIuIFNvIEJlZm9y ZSBlbmFibGluZyB0aGUgRW5jcnlwdGlvbiBEUCBIRENQMi4yCnJlY2VpdmVyIG5lZWRzIHRvIGJl IGNvbW11bmljYXRlZCB3aXRoIHN0cmVhbSB0eXBlLiBUaGlzIGlzIGFkZGVkIHRvCnNwZWMgYXMg RVJSQVRBLgoKVGhpcyBnZW5lcmljIGltcGxlbWVudGF0aW9uIGlzIGNvbXBsZXRlIG9ubHkgd2l0 aCB0aGUgaGRjcDJfc2hpbQpkZWZpbmVkLgoKdjI6CiAgUmViYXNlZC4KdjM6CiAgTm8gQ2hhbmdl cy4KdjQ6CiAgJXMvUEFSSU5HL1BBSVJJTkcKICBDb2Rpbmcgc3R5bGUgZml4aW5nIFtVbWFdCnY1 OgogIFJlYmFzZWQgYXMgcGFydCBvZiBwYXRjaCByZW9yZGVyaW5nLgogIERlZmluZWQgdGhlIGZ1 bmN0aW9ucyBmb3IgbWVpIHNlcnZpY2VzLiBbRGFuaWVsXQp2NjoKICBSZWRlZmluZWQgdGhlIG1l aSBzZXJ2aWNlIGZ1bmN0aW9ucyBhcyBwZXIgY29tcCByZWRlc2lnbi4KICBSZXF1aXJlZCBpbnRl bF9oZGNwIG1lbWJlcnMgYXJlIGRlZmluZWQgW1NlYW4gUGF1bF0Kdjc6CiAgVHlwbyBvZiBjaXBo ZXIgaXMgRml4ZWQgW1VtYV0KICAlcy91aW50eHhfdC91eHgKICBDaGVjayBmb3IgY29tcF9tYXN0 ZXIgaXMgcmVtb3ZlZC4Kdjg6CiAgQWRqdXN0IHRvIHRoZSBuZXcgaW50ZXJmYWNlLgogIEF2b2lk IHVzaW5nIGJvb2wgc3RydWN0dXJlIG1lbWJlcnMuIFtUb21hc10KClNpZ25lZC1vZmYtYnk6IFJh bWFsaW5nYW0gQyA8cmFtYWxpbmdhbS5jQGludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kcnYuaCAgfCAgMzQgKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9oZGNwLmMgfCAyMTEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0KIDIg ZmlsZXMgY2hhbmdlZCwgMjMwIGluc2VydGlvbnMoKyksIDE1IGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHJ2LmgKaW5kZXggM2U5ZjIxZDIzNDQyLi4yNGQyNTg0ODhlZmUgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rydi5oCkBAIC0zODcsNiArMzg3LDIyIEBAIHN0cnVjdCBpbnRlbF9o ZGNwX3NoaW0gewogCS8qIERldGVjdHMgd2hldGhlciBQYW5lbCBpcyBIRENQMi4yIGNhcGFibGUg Ki8KIAlpbnQgKCpoZGNwXzJfMl9jYXBhYmxlKShzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpp bnRlbF9kaWdfcG9ydCwKIAkJCQlib29sICpjYXBhYmxlKTsKKworCS8qIFdyaXRlIEhEQ1AyLjIg bWVzc2FnZXMgKi8KKwlpbnQgKCp3cml0ZV8yXzJfbXNnKShzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9w b3J0ICppbnRlbF9kaWdfcG9ydCwKKwkJCSAgICAgdm9pZCAqYnVmLCBzaXplX3Qgc2l6ZSk7CisK KwkvKiBSZWFkIEhEQ1AyLjIgbWVzc2FnZXMgKi8KKwlpbnQgKCpyZWFkXzJfMl9tc2cpKHN0cnVj dCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0LAorCQkJICAgIHU4IG1zZ19pZCwg dm9pZCAqYnVmLCBzaXplX3Qgc2l6ZSk7CisKKwkvKgorCSAqIEltcGxlbWVudGF0aW9uIG9mIERQ IEhEQ1AyLjIgRXJyYXRhIGZvciB0aGUgY29tbXVuaWNhdGlvbiBvZiBzdHJlYW0KKwkgKiB0eXBl IHRvIFJlY2VpdmVycy4gSW4gRFAgSERDUDIuMiBTdHJlYW0gdHlwZSBpcyBvbmUgb2YgdGhlIGlu cHV0IHRvCisJICogdGhlIEhEQ1AyLjIgQ2lwaGVyIGZvciBFbi9EZS1DcnlwdGlvbi4gTm90IGFw cGxpY2FibGUgZm9yIEhETUkuCisJICovCisJaW50ICgqY29uZmlnX3N0cmVhbV90eXBlKShzdHJ1 Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCwKKwkJCQkgIHZvaWQgKmJ1Ziwg c2l6ZV90IHNpemUpOwogfTsKIAogc3RydWN0IGludGVsX2hkY3AgewpAQCAtNDExLDYgKzQyNywy NCBAQCBzdHJ1Y3QgaW50ZWxfaGRjcCB7CiAKIAkvKiBtZWkgaW50ZXJmYWNlIHJlbGF0ZWQgaW5m b3JtYXRpb24gKi8KIAlzdHJ1Y3QgbWVpX2hkY3BfZGF0YSBtZWlfZGF0YTsKKworCXU4IGlzX3Bh aXJlZDsKKwl1OCBpc19yZXBlYXRlcjsKKworCS8qCisJICogQ291bnQgb2YgUmVjZWl2ZXJJRF9M aXN0IHJlY2VpdmVkLiBJbml0aWFsaXplZCB0byAwIGF0IEFLRV9JTklULgorCSAqIEluY3JlbWVu dGVkIGFmdGVyIHByb2Nlc3NpbmcgdGhlIFJlcGVhdGVyQXV0aF9TZW5kX1JlY2VpdmVySURfTGlz dC4KKwkgKiBXaGVuIGl0IHJvbGxzIG92ZXIgcmUtYXV0aCBoYXMgdG8gYmUgdHJpZ2dlcmVkLgor CSAqLworCXUzMiBzZXFfbnVtX3Y7CisKKwkvKgorCSAqIENvdW50IG9mIFJlcGVhdGVyQXV0aF9T dHJlYW1fTWFuYWdlIG1zZyBwcm9wYWdhdGVkLgorCSAqIEluaXRpYWxpemVkIHRvIDAgb24gQUtF X0lOSVQuIEluY3JlbWVudGVkIGFmdGVyIGV2ZXJ5IHN1Y2Nlc3NmdWwKKwkgKiB0cmFuc21pc3Np b24gb2YgUmVwZWF0ZXJBdXRoX1N0cmVhbV9NYW5hZ2UgbWVzc2FnZS4gV2hlbiBpdCByb2xscwor CSAqIG92ZXIgcmUtQXV0aCBoYXMgdG8gYmUgdHJpZ2dlcmVkLgorCSAqLworCXUzMiBzZXFfbnVt X207CiB9OwogCiBzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2hkY3AuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hk Y3AuYwppbmRleCBjMWJkMWNjZDQ3Y2QuLjBkN2ZlYTljOWJiMSAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRjcC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2hkY3AuYwpAQCAtMTgsNiArMTgsNyBAQAogCiAjZGVmaW5lIEtFWV9MT0FEX1RSSUVTCTUK ICNkZWZpbmUgVElNRV9GT1JfRU5DUllQVF9TVEFUVVNfQ0hBTkdFCTUwCisjZGVmaW5lIEhEQ1Ay X0xDX1JFVFJZX0NOVAkJMwogI2RlZmluZSBHRVRfTUVJX0RESV9JTkRFWChwKSAoeyAgICAgICAg ICAgICAgICAgICAgICAgICAgICBcCiAJdHlwZW9mKHApIF9fcCA9IChwKTsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAogCV9fcCA9PSBQT1JUX0EgPyBNRUlfRERJX0EgOiAoZW51bSBt ZWlfaGRjcF9kZGkpX19wO1wKQEAgLTg3Niw3ICs4NzcsNyBAQCBib29sIGlzX2hkY3Bfc3VwcG9y dGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgZW51bSBwb3J0IHBvcnQpCiAJ CSFJU19DSEVSUllWSUVXKGRldl9wcml2KSAmJiBwb3J0IDwgUE9SVF9FKTsKIH0KIAotc3RhdGlj IF9fYXR0cmlidXRlX18oKHVudXNlZCkpIGludAorc3RhdGljIGludAogaGRjcDJfcHJlcGFyZV9h a2VfaW5pdChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IsCiAJCSAgICAgICBzdHJ1 Y3QgaGRjcDJfYWtlX2luaXQgKmFrZV9kYXRhKQogewpAQCAtOTA3LDcgKzkwOCw3IEBAIGhkY3Ay X3ByZXBhcmVfYWtlX2luaXQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLAogCXJl dHVybiByZXQ7CiB9CiAKLXN0YXRpYyBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSBpbnQKK3N0YXRp YyBpbnQKIGhkY3AyX3ZlcmlmeV9yeF9jZXJ0X3ByZXBhcmVfa20oc3RydWN0IGludGVsX2Nvbm5l Y3RvciAqY29ubmVjdG9yLAogCQkJCXN0cnVjdCBoZGNwMl9ha2Vfc2VuZF9jZXJ0ICpyeF9jZXJ0 LAogCQkJCWJvb2wgKnBhaXJlZCwKQEAgLTkzOCw5ICs5MzksOCBAQCBoZGNwMl92ZXJpZnlfcnhf Y2VydF9wcmVwYXJlX2ttKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwKIAlyZXR1 cm4gcmV0OwogfQogCi1zdGF0aWMgX19hdHRyaWJ1dGVfXygodW51c2VkKSkgaW50Ci1oZGNwMl92 ZXJpZnlfaHByaW1lKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwKLQkJICAgIHN0 cnVjdCBoZGNwMl9ha2Vfc2VuZF9ocHJpbWUgKnJ4X2hwcmltZSkKK3N0YXRpYyBpbnQgaGRjcDJf dmVyaWZ5X2hwcmltZShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IsCisJCQkgICAg ICAgc3RydWN0IGhkY3AyX2FrZV9zZW5kX2hwcmltZSAqcnhfaHByaW1lKQogewogCXN0cnVjdCBt ZWlfaGRjcF9kYXRhICpkYXRhID0gJmNvbm5lY3Rvci0+aGRjcC5tZWlfZGF0YTsKIAlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNvbm5lY3Rvci0+YmFzZS5kZXYp OwpAQCAtOTY0LDcgKzk2NCw3IEBAIGhkY3AyX3ZlcmlmeV9ocHJpbWUoc3RydWN0IGludGVsX2Nv bm5lY3RvciAqY29ubmVjdG9yLAogCXJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyBfX2F0dHJpYnV0 ZV9fKCh1bnVzZWQpKSBpbnQKK3N0YXRpYyBpbnQKIGhkY3AyX3N0b3JlX3BhaXJpbmdfaW5mbyhz dHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IsCiAJCQkgc3RydWN0IGhkY3AyX2FrZV9z ZW5kX3BhaXJpbmdfaW5mbyAqcGFpcmluZ19pbmZvKQogewpAQCAtOTkxLDcgKzk5MSw3IEBAIGhk Y3AyX3N0b3JlX3BhaXJpbmdfaW5mbyhzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3Is CiAJcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIF9fYXR0cmlidXRlX18oKHVudXNlZCkpIGludAor c3RhdGljIGludAogaGRjcDJfcHJlcGFyZV9sY19pbml0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3Ig KmNvbm5lY3RvciwKIAkJICAgICAgc3RydWN0IGhkY3AyX2xjX2luaXQgKmxjX2luaXQpCiB7CkBA IC0xMDE4LDcgKzEwMTgsNyBAQCBoZGNwMl9wcmVwYXJlX2xjX2luaXQoc3RydWN0IGludGVsX2Nv bm5lY3RvciAqY29ubmVjdG9yLAogCXJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyBfX2F0dHJpYnV0 ZV9fKCh1bnVzZWQpKSBpbnQKK3N0YXRpYyBpbnQKIGhkY3AyX3ZlcmlmeV9scHJpbWUoc3RydWN0 IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLAogCQkgICAgc3RydWN0IGhkY3AyX2xjX3NlbmRf bHByaW1lICpyeF9scHJpbWUpCiB7CkBAIC0xMDQ0LDkgKzEwNDQsOCBAQCBoZGNwMl92ZXJpZnlf bHByaW1lKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwKIAlyZXR1cm4gcmV0Owog fQogCi1zdGF0aWMgX19hdHRyaWJ1dGVfXygodW51c2VkKSkKLWludCBoZGNwMl9wcmVwYXJlX3Nr ZXkoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLAotCQkgICAgICAgc3RydWN0IGhk Y3AyX3NrZV9zZW5kX2VrcyAqc2tlX2RhdGEpCitzdGF0aWMgaW50IGhkY3AyX3ByZXBhcmVfc2tl eShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IsCisJCQkgICAgICBzdHJ1Y3QgaGRj cDJfc2tlX3NlbmRfZWtzICpza2VfZGF0YSkKIHsKIAlzdHJ1Y3QgbWVpX2hkY3BfZGF0YSAqZGF0 YSA9ICZjb25uZWN0b3ItPmhkY3AubWVpX2RhdGE7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gdG9faTkxNShjb25uZWN0b3ItPmJhc2UuZGV2KTsKQEAgLTExMjYsOCArMTEy NSw3IEBAIGhkY3AyX3ZlcmlmeV9tcHJpbWUoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVj dG9yLAogCXJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKQot aW50IGhkY3AyX2F1dGhlbnRpY2F0ZV9wb3J0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5l Y3RvcikKK3N0YXRpYyBpbnQgaGRjcDJfYXV0aGVudGljYXRlX3BvcnQoc3RydWN0IGludGVsX2Nv bm5lY3RvciAqY29ubmVjdG9yKQogewogCXN0cnVjdCBtZWlfaGRjcF9kYXRhICpkYXRhID0gJmNv bm5lY3Rvci0+aGRjcC5tZWlfZGF0YTsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSB0b19pOTE1KGNvbm5lY3Rvci0+YmFzZS5kZXYpOwpAQCAtMTE3OCwxMSArMTE3NiwxOTQg QEAgc3RhdGljIGludCBoZGNwMl9kZWF1dGhlbnRpY2F0ZV9wb3J0KHN0cnVjdCBpbnRlbF9jb25u ZWN0b3IgKmNvbm5lY3RvcikKIAlyZXR1cm4gaGRjcDJfY2xvc2VfbWVpX3Nlc3Npb24oY29ubmVj dG9yKTsKIH0KIAorLyogQXV0aGVudGljYXRpb24gZmxvdyBzdGFydHMgZnJvbSBoZXJlICovCitz dGF0aWMgaW50IGhkY3AyX2F1dGhlbnRpY2F0aW9uX2tleV9leGNoYW5nZShzdHJ1Y3QgaW50ZWxf Y29ubmVjdG9yICpjb25uZWN0b3IpCit7CisJc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50 ZWxfZGlnX3BvcnQgPSBjb25uX3RvX2RpZ19wb3J0KGNvbm5lY3Rvcik7CisJc3RydWN0IGludGVs X2hkY3AgKmhkY3AgPSAmY29ubmVjdG9yLT5oZGNwOworCXVuaW9uIHsKKwkJc3RydWN0IGhkY3Ay X2FrZV9pbml0IGFrZV9pbml0OworCQlzdHJ1Y3QgaGRjcDJfYWtlX3NlbmRfY2VydCBzZW5kX2Nl cnQ7CisJCXN0cnVjdCBoZGNwMl9ha2Vfbm9fc3RvcmVkX2ttIG5vX3N0b3JlZF9rbTsKKwkJc3Ry dWN0IGhkY3AyX2FrZV9zZW5kX2hwcmltZSBzZW5kX2hwcmltZTsKKwkJc3RydWN0IGhkY3AyX2Fr ZV9zZW5kX3BhaXJpbmdfaW5mbyBwYWlyaW5nX2luZm87CisJfSBtc2dzOworCWNvbnN0IHN0cnVj dCBpbnRlbF9oZGNwX3NoaW0gKnNoaW0gPSBoZGNwLT5zaGltOworCXNpemVfdCBzaXplOworCWlu dCByZXQ7CisJYm9vbCBpc19wYWlyZWQ7CisKKwkvKiBJbml0IGZvciBzZXFfbnVtICovCisJaGRj cC0+c2VxX251bV92ID0gMDsKKwloZGNwLT5zZXFfbnVtX20gPSAwOworCisJcmV0ID0gaGRjcDJf cHJlcGFyZV9ha2VfaW5pdChjb25uZWN0b3IsICZtc2dzLmFrZV9pbml0KTsKKwlpZiAocmV0IDwg MCkKKwkJcmV0dXJuIHJldDsKKworCXJldCA9IHNoaW0tPndyaXRlXzJfMl9tc2coaW50ZWxfZGln X3BvcnQsICZtc2dzLmFrZV9pbml0LAorCQkJCSAgc2l6ZW9mKG1zZ3MuYWtlX2luaXQpKTsKKwlp ZiAocmV0IDwgMCkKKwkJcmV0dXJuIHJldDsKKworCXJldCA9IHNoaW0tPnJlYWRfMl8yX21zZyhp bnRlbF9kaWdfcG9ydCwgSERDUF8yXzJfQUtFX1NFTkRfQ0VSVCwKKwkJCQkgJm1zZ3Muc2VuZF9j ZXJ0LCBzaXplb2YobXNncy5zZW5kX2NlcnQpKTsKKwlpZiAocmV0IDwgMCkKKwkJcmV0dXJuIHJl dDsKKworCWlmIChtc2dzLnNlbmRfY2VydC5yeF9jYXBzWzBdICE9IEhEQ1BfMl8yX1JYX0NBUFNf VkVSU0lPTl9WQUwpCisJCXJldHVybiAtRUlOVkFMOworCisJaGRjcC0+aXNfcmVwZWF0ZXIgPSBI RENQXzJfMl9SWF9SRVBFQVRFUihtc2dzLnNlbmRfY2VydC5yeF9jYXBzWzJdKSA/CisJCQkgICAg MSA6IDA7CisKKwkvKgorCSAqIEhlcmUgbXNncy5ub19zdG9yZWRfa20gd2lsbCBob2xkIG1zZ3Mg Y29ycmVzcG9uZGluZyB0byB0aGUga20KKwkgKiBzdG9yZWQgYWxzby4KKwkgKi8KKwlyZXQgPSBo ZGNwMl92ZXJpZnlfcnhfY2VydF9wcmVwYXJlX2ttKGNvbm5lY3RvciwgJm1zZ3Muc2VuZF9jZXJ0 LAorCQkJCQkgICAgICAmaXNfcGFpcmVkLAorCQkJCQkgICAgICAmbXNncy5ub19zdG9yZWRfa20s ICZzaXplKTsKKwlpZiAocmV0IDwgMCkKKwkJcmV0dXJuIHJldDsKKworCWhkY3AtPmlzX3BhaXJl ZCA9IGlzX3BhaXJlZCA/IDEgOiAwOworCisJcmV0ID0gc2hpbS0+d3JpdGVfMl8yX21zZyhpbnRl bF9kaWdfcG9ydCwgJm1zZ3Mubm9fc3RvcmVkX2ttLCBzaXplKTsKKwlpZiAocmV0IDwgMCkKKwkJ cmV0dXJuIHJldDsKKworCXJldCA9IHNoaW0tPnJlYWRfMl8yX21zZyhpbnRlbF9kaWdfcG9ydCwg SERDUF8yXzJfQUtFX1NFTkRfSFBSSU1FLAorCQkJCSAmbXNncy5zZW5kX2hwcmltZSwgc2l6ZW9m KG1zZ3Muc2VuZF9ocHJpbWUpKTsKKwlpZiAocmV0IDwgMCkKKwkJcmV0dXJuIHJldDsKKworCXJl dCA9IGhkY3AyX3ZlcmlmeV9ocHJpbWUoY29ubmVjdG9yLCAmbXNncy5zZW5kX2hwcmltZSk7CisJ aWYgKHJldCA8IDApCisJCXJldHVybiByZXQ7CisKKwlpZiAoIWhkY3AtPmlzX3BhaXJlZCkgewor CQkvKiBQYWlyaW5nIGlzIHJlcXVpcmVkICovCisJCXJldCA9IHNoaW0tPnJlYWRfMl8yX21zZyhp bnRlbF9kaWdfcG9ydCwKKwkJCQkJIEhEQ1BfMl8yX0FLRV9TRU5EX1BBSVJJTkdfSU5GTywKKwkJ CQkJICZtc2dzLnBhaXJpbmdfaW5mbywKKwkJCQkJIHNpemVvZihtc2dzLnBhaXJpbmdfaW5mbykp OworCQlpZiAocmV0IDwgMCkKKwkJCXJldHVybiByZXQ7CisKKwkJcmV0ID0gaGRjcDJfc3RvcmVf cGFpcmluZ19pbmZvKGNvbm5lY3RvciwgJm1zZ3MucGFpcmluZ19pbmZvKTsKKwkJaWYgKHJldCA8 IDApCisJCQlyZXR1cm4gcmV0OworCQloZGNwLT5pc19wYWlyZWQgPSAxOworCX0KKworCXJldHVy biAwOworfQorCitzdGF0aWMgaW50IGhkY3AyX2xvY2FsaXR5X2NoZWNrKHN0cnVjdCBpbnRlbF9j b25uZWN0b3IgKmNvbm5lY3RvcikKK3sKKwlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRl bF9kaWdfcG9ydCA9IGNvbm5fdG9fZGlnX3BvcnQoY29ubmVjdG9yKTsKKwlzdHJ1Y3QgaW50ZWxf aGRjcCAqaGRjcCA9ICZjb25uZWN0b3ItPmhkY3A7CisJdW5pb24geworCQlzdHJ1Y3QgaGRjcDJf bGNfaW5pdCBsY19pbml0OworCQlzdHJ1Y3QgaGRjcDJfbGNfc2VuZF9scHJpbWUgc2VuZF9scHJp bWU7CisJfSBtc2dzOworCWNvbnN0IHN0cnVjdCBpbnRlbF9oZGNwX3NoaW0gKnNoaW0gPSBoZGNw LT5zaGltOworCWludCB0cmllcyA9IEhEQ1AyX0xDX1JFVFJZX0NOVCwgcmV0LCBpOworCisJZm9y IChpID0gMDsgaSA8IHRyaWVzOyBpKyspIHsKKwkJcmV0ID0gaGRjcDJfcHJlcGFyZV9sY19pbml0 KGNvbm5lY3RvciwgJm1zZ3MubGNfaW5pdCk7CisJCWlmIChyZXQgPCAwKQorCQkJY29udGludWU7 CisKKwkJcmV0ID0gc2hpbS0+d3JpdGVfMl8yX21zZyhpbnRlbF9kaWdfcG9ydCwgJm1zZ3MubGNf aW5pdCwKKwkJCQkgICAgICBzaXplb2YobXNncy5sY19pbml0KSk7CisJCWlmIChyZXQgPCAwKQor CQkJY29udGludWU7CisKKwkJcmV0ID0gc2hpbS0+cmVhZF8yXzJfbXNnKGludGVsX2RpZ19wb3J0 LAorCQkJCQkgSERDUF8yXzJfTENfU0VORF9MUFJJTUUsCisJCQkJCSAmbXNncy5zZW5kX2xwcmlt ZSwKKwkJCQkJIHNpemVvZihtc2dzLnNlbmRfbHByaW1lKSk7CisJCWlmIChyZXQgPCAwKQorCQkJ Y29udGludWU7CisKKwkJcmV0ID0gaGRjcDJfdmVyaWZ5X2xwcmltZShjb25uZWN0b3IsICZtc2dz LnNlbmRfbHByaW1lKTsKKwkJaWYgKCFyZXQpCisJCQlicmVhazsKKwl9CisKKwlyZXR1cm4gcmV0 OworfQorCitzdGF0aWMgaW50IGhkY3AyX3Nlc3Npb25fa2V5X2V4Y2hhbmdlKHN0cnVjdCBpbnRl bF9jb25uZWN0b3IgKmNvbm5lY3RvcikKK3sKKwlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpp bnRlbF9kaWdfcG9ydCA9IGNvbm5fdG9fZGlnX3BvcnQoY29ubmVjdG9yKTsKKwlzdHJ1Y3QgaW50 ZWxfaGRjcCAqaGRjcCA9ICZjb25uZWN0b3ItPmhkY3A7CisJc3RydWN0IGhkY3AyX3NrZV9zZW5k X2VrcyBzZW5kX2VrczsKKwlpbnQgcmV0OworCisJcmV0ID0gaGRjcDJfcHJlcGFyZV9za2V5KGNv bm5lY3RvciwgJnNlbmRfZWtzKTsKKwlpZiAocmV0IDwgMCkKKwkJcmV0dXJuIHJldDsKKworCXJl dCA9IGhkY3AtPnNoaW0tPndyaXRlXzJfMl9tc2coaW50ZWxfZGlnX3BvcnQsICZzZW5kX2VrcywK KwkJCQkJc2l6ZW9mKHNlbmRfZWtzKSk7CisJaWYgKHJldCA8IDApCisJCXJldHVybiByZXQ7CisK KwlyZXR1cm4gMDsKK30KKwogc3RhdGljIGludCBoZGNwMl9hdXRoZW50aWNhdGVfc2luayhzdHJ1 Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCiB7Ci0JRFJNX0VSUk9SKCJTaW5rIGF1dGhl bnRpY2F0aW9uIGlzIGRvbmUgaW4gc3Vic2VxdWVudCBwYXRjaGVzXG4iKTsKKwlzdHJ1Y3QgaW50 ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCA9IGNvbm5fdG9fZGlnX3BvcnQoY29ubmVj dG9yKTsKKwlzdHJ1Y3QgaW50ZWxfaGRjcCAqaGRjcCA9ICZjb25uZWN0b3ItPmhkY3A7CisJY29u c3Qgc3RydWN0IGludGVsX2hkY3Bfc2hpbSAqc2hpbSA9IGhkY3AtPnNoaW07CisJc3RydWN0IGhk Y3AyX2RwX2VycmF0YV9zdHJlYW1fdHlwZSBzdHJlYW1fdHlwZV9tc2c7CisJaW50IHJldDsKIAot CXJldHVybiAtRUlOVkFMOworCXJldCA9IGhkY3AyX2F1dGhlbnRpY2F0aW9uX2tleV9leGNoYW5n ZShjb25uZWN0b3IpOworCWlmIChyZXQgPCAwKSB7CisJCURSTV9ERUJVR19LTVMoIkFLRSBGYWls ZWQuIEVyciA6ICVkXG4iLCByZXQpOworCQlyZXR1cm4gcmV0OworCX0KKworCXJldCA9IGhkY3Ay X2xvY2FsaXR5X2NoZWNrKGNvbm5lY3Rvcik7CisJaWYgKHJldCA8IDApIHsKKwkJRFJNX0RFQlVH X0tNUygiTG9jYWxpdHkgQ2hlY2sgZmFpbGVkLiBFcnIgOiAlZFxuIiwgcmV0KTsKKwkJcmV0dXJu IHJldDsKKwl9CisKKwlyZXQgPSBoZGNwMl9zZXNzaW9uX2tleV9leGNoYW5nZShjb25uZWN0b3Ip OworCWlmIChyZXQgPCAwKSB7CisJCURSTV9ERUJVR19LTVMoIlNLRSBGYWlsZWQuIEVyciA6ICVk XG4iLCByZXQpOworCQlyZXR1cm4gcmV0OworCX0KKworCWlmICghaGRjcC0+aXNfcmVwZWF0ZXIg JiYgc2hpbS0+Y29uZmlnX3N0cmVhbV90eXBlKSB7CisJCS8qCisJCSAqIEVycmF0YSBmb3IgRFA6 IEFzIFN0cmVhbSB0eXBlIGlzIHVzZWQgZm9yIGVuY3J5cHRpb24sCisJCSAqIFJlY2VpdmVyIHNo b3VsZCBiZSBjb21tdW5pY2F0ZWQgd2l0aCBzdHJlYW0gdHlwZSBmb3IgdGhlCisJCSAqIGRlY3J5 cHRpb24gb2YgdGhlIGNvbnRlbnQuCisJCSAqIFJlcGVhdGVyIHdpbGwgYmUgY29tbXVuaWNhdGVk IHdpdGggc3RyZWFtIHR5cGUgYXMgYQorCQkgKiBwYXJ0IG9mIGl0J3MgYXV0aCBsYXRlciBpbiB0 aW1lLgorCQkgKi8KKwkJc3RyZWFtX3R5cGVfbXNnLm1zZ19pZCA9IEhEQ1BfMl8yX0VSUkFUQV9E UF9TVFJFQU1fVFlQRTsKKwkJc3RyZWFtX3R5cGVfbXNnLnN0cmVhbV90eXBlID0gaGRjcC0+Y29u dGVudF90eXBlOworCisJCXJldCA9IHNoaW0tPmNvbmZpZ19zdHJlYW1fdHlwZShpbnRlbF9kaWdf cG9ydCwgJnN0cmVhbV90eXBlX21zZywKKwkJCQkJICAgICAgIHNpemVvZihzdHJlYW1fdHlwZV9t c2cpKTsKKwkJaWYgKHJldCA8IDApCisJCQlyZXR1cm4gcmV0OworCX0KKworCWhkY3AtPm1laV9k YXRhLnN0cmVhbXNbMF0uc3RyZWFtX3R5cGUgPSBoZGNwLT5jb250ZW50X3R5cGU7CisJcmV0ID0g aGRjcDJfYXV0aGVudGljYXRlX3BvcnQoY29ubmVjdG9yKTsKKwlpZiAocmV0IDwgMCkKKwkJcmV0 dXJuIHJldDsKKworCXJldHVybiByZXQ7CiB9CiAKIHN0YXRpYyBpbnQgaGRjcDJfZW5hYmxlX2Vu Y3J5cHRpb24oc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQotLSAKMi43LjQKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBt YWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=