From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ramalingam C Subject: [PATCH v10 09/40] drm/i915: Implement HDCP2.2 receiver authentication Date: Thu, 31 Jan 2019 12:29:25 +0530 Message-ID: <1548917996-28081-10-git-send-email-ramalingam.c@intel.com> References: <1548917996-28081-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: <1548917996-28081-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, uma.shankar@intel.com List-Id: dri-devel@lists.freedesktop.org SW1wbGVtZW50cyBIRENQMi4yIGF1dGhlbnRpY2F0aW9uIGZvciBoZGNwMi4yIHJlY2VpdmVycywg d2l0aApmb2xsb3dpbmcgc3RlcHM6CglBdXRoZW50aWNhdGlvbiBhbmQgS2V5IGV4Y2hhbmdlIChB S0UpLgoJTG9jYWxpdHkgQ2hlY2sgKExDKS4KCVNlc3Npb24gS2V5IEV4Y2hhbmdlKFNLRSkuCglE UCBFcnJhdGEgZm9yIHN0cmVhbSB0eXBlIGNvbmZpZ3VyYXRpb24gZm9yIHJlY2VpdmVycy4KCkF0 IEFLRSwgdGhlIEhEQ1AgUmVjZWl2ZXLigJlzIHB1YmxpYyBrZXkgY2VydGlmaWNhdGUgaXMgdmVy aWZpZWQgYnkgdGhlCkhEQ1AgVHJhbnNtaXR0ZXIuIEEgTWFzdGVyIEtleSBrIG0gaXMgZXhjaGFu Z2VkLgoKQXQgTEMsIHRoZSBIRENQIFRyYW5zbWl0dGVyIGVuZm9yY2VzIGxvY2FsaXR5IG9uIHRo ZSBjb250ZW50IGJ5CnJlcXVpcmluZyB0aGF0IHRoZSBSb3VuZCBUcmlwIFRpbWUgKFJUVCkgYmV0 d2VlbiBhIHBhaXIgb2YgbWVzc2FnZXMKaXMgbm90IG1vcmUgdGhhbiAyMCBtcy4KCkF0IFNLRSwg VGhlIEhEQ1AgVHJhbnNtaXR0ZXIgZXhjaGFuZ2VzIFNlc3Npb24gS2V5IGtzIHdpdGgKdGhlIEhE Q1AgUmVjZWl2ZXIuCgpJbiBEUCBIRENQMi4yIGVuY3J5cHRpb24gYW5kIGRlY3J5cHRpb24gbG9n aWNzIHVzZSB0aGUgc3RyZWFtIHR5cGUgYXMKb25lIG9mIHRoZSBwYXJhbWV0ZXIuIFNvIEJlZm9y ZSBlbmFibGluZyB0aGUgRW5jcnlwdGlvbiBEUCBIRENQMi4yCnJlY2VpdmVyIG5lZWRzIHRvIGJl IGNvbW11bmljYXRlZCB3aXRoIHN0cmVhbSB0eXBlLiBUaGlzIGlzIGFkZGVkIHRvCnNwZWMgYXMg RVJSQVRBLgoKVGhpcyBnZW5lcmljIGltcGxlbWVudGF0aW9uIGlzIGNvbXBsZXRlIG9ubHkgd2l0 aCB0aGUgaGRjcDIgc3BlY2lmaWMKZnVuY3Rpb25zIGRlZmluZWQgYXQgaGRjcF9zaGltLgoKdjI6 IFJlYmFzZWQuCnYzOgogICVzL1BBUklORy9QQUlSSU5HCiAgQ29kaW5nIHN0eWxlIGZpeGluZyBb VW1hXQp2NDoKICBSZWJhc2VkIGFzIHBhcnQgb2YgcGF0Y2ggcmVvcmRlcmluZy4KICBEZWZpbmVk IHRoZSBmdW5jdGlvbnMgZm9yIG1laSBzZXJ2aWNlcy4gW0RhbmllbF0KdjU6CiAgUmVkZWZpbmVk IHRoZSBtZWkgc2VydmljZSBmdW5jdGlvbnMgYXMgcGVyIGNvbXAgcmVkZXNpZ24uCiAgUmVxdWly ZWQgaW50ZWxfaGRjcCBtZW1iZXJzIGFyZSBkZWZpbmVkIFtTZWFuIFBhdWxdCnY2OgogIFR5cG8g b2YgY2lwaGVyIGlzIEZpeGVkIFtVbWFdCiAgJXMvdWludHh4X3QvdXh4CiAgQ2hlY2sgZm9yIGNv bXBfbWFzdGVyIGlzIHJlbW92ZWQuCnY3OgogIEFkanVzdCB0byB0aGUgbmV3IGludGVyZmFjZS4K ICBBdm9pZCB1c2luZyBib29sIHN0cnVjdHVyZSBtZW1iZXJzLiBbVG9tYXNdCnY4OiBSZWJhc2Vk Lgp2OToKICBib29sIGlzIHVzZWQgaW4gc3RydWN0IGludGVsX2hkY3AgW0RhbmllbF0KICBjb25m aWdfc3RyZWFtX3R5cGUgaXMgcmVkZXNpZ25lZCBbRGFuaWVsXQoKU2lnbmVkLW9mZi1ieTogUmFt YWxpbmdhbSBDIDxyYW1hbGluZ2FtLmNAaW50ZWwuY29tPgpSZXZpZXdlZC1ieTogRGFuaWVsIFZl dHRlciA8ZGFuaWVsLnZldHRlckBmZndsbC5jaD4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcnYuaCAgfCAgMzQgKysrKysrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRj cC5jIHwgMTk3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tCiAyIGZpbGVz IGNoYW5nZWQsIDIxNiBpbnNlcnRpb25zKCspLCAxNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rydi5oCmluZGV4IDMxYzdhNDU3N2NhOS4uZTY3OTIzMDQ1MjBhIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kcnYuaApAQCAtMzkzLDYgKzM5MywyMiBAQCBzdHJ1Y3QgaW50ZWxfaGRjcF9z aGltIHsKIAkvKiBEZXRlY3RzIHdoZXRoZXIgUGFuZWwgaXMgSERDUDIuMiBjYXBhYmxlICovCiAJ aW50ICgqaGRjcF8yXzJfY2FwYWJsZSkoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxf ZGlnX3BvcnQsCiAJCQkJYm9vbCAqY2FwYWJsZSk7CisKKwkvKiBXcml0ZSBIRENQMi4yIG1lc3Nh Z2VzICovCisJaW50ICgqd3JpdGVfMl8yX21zZykoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAq aW50ZWxfZGlnX3BvcnQsCisJCQkgICAgIHZvaWQgKmJ1Ziwgc2l6ZV90IHNpemUpOworCisJLyog UmVhZCBIRENQMi4yIG1lc3NhZ2VzICovCisJaW50ICgqcmVhZF8yXzJfbXNnKShzdHJ1Y3QgaW50 ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCwKKwkJCSAgICB1OCBtc2dfaWQsIHZvaWQg KmJ1Ziwgc2l6ZV90IHNpemUpOworCisJLyoKKwkgKiBJbXBsZW1lbnRhdGlvbiBvZiBEUCBIRENQ Mi4yIEVycmF0YSBmb3IgdGhlIGNvbW11bmljYXRpb24gb2Ygc3RyZWFtCisJICogdHlwZSB0byBS ZWNlaXZlcnMuIEluIERQIEhEQ1AyLjIgU3RyZWFtIHR5cGUgaXMgb25lIG9mIHRoZSBpbnB1dCB0 bworCSAqIHRoZSBIRENQMi4yIENpcGhlciBmb3IgRW4vRGUtQ3J5cHRpb24uIE5vdCBhcHBsaWNh YmxlIGZvciBIRE1JLgorCSAqLworCWludCAoKmNvbmZpZ19zdHJlYW1fdHlwZSkoc3RydWN0IGlu dGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQsCisJCQkJICBib29sIGlzX3JlcGVhdGVy LCB1OCB0eXBlKTsKIH07CiAKIHN0cnVjdCBpbnRlbF9oZGNwIHsKQEAgLTQyMCw2ICs0MzYsMjQg QEAgc3RydWN0IGludGVsX2hkY3AgewogCSAqLwogCXU4IGNvbnRlbnRfdHlwZTsKIAlzdHJ1Y3Qg aGRjcF9wb3J0X2RhdGEgcG9ydF9kYXRhOworCisJYm9vbCBpc19wYWlyZWQ7CisJYm9vbCBpc19y ZXBlYXRlcjsKKworCS8qCisJICogQ291bnQgb2YgUmVjZWl2ZXJJRF9MaXN0IHJlY2VpdmVkLiBJ bml0aWFsaXplZCB0byAwIGF0IEFLRV9JTklULgorCSAqIEluY3JlbWVudGVkIGFmdGVyIHByb2Nl c3NpbmcgdGhlIFJlcGVhdGVyQXV0aF9TZW5kX1JlY2VpdmVySURfTGlzdC4KKwkgKiBXaGVuIGl0 IHJvbGxzIG92ZXIgcmUtYXV0aCBoYXMgdG8gYmUgdHJpZ2dlcmVkLgorCSAqLworCXUzMiBzZXFf bnVtX3Y7CisKKwkvKgorCSAqIENvdW50IG9mIFJlcGVhdGVyQXV0aF9TdHJlYW1fTWFuYWdlIG1z ZyBwcm9wYWdhdGVkLgorCSAqIEluaXRpYWxpemVkIHRvIDAgb24gQUtFX0lOSVQuIEluY3JlbWVu dGVkIGFmdGVyIGV2ZXJ5IHN1Y2Nlc3NmdWwKKwkgKiB0cmFuc21pc3Npb24gb2YgUmVwZWF0ZXJB dXRoX1N0cmVhbV9NYW5hZ2UgbWVzc2FnZS4gV2hlbiBpdCByb2xscworCSAqIG92ZXIgcmUtQXV0 aCBoYXMgdG8gYmUgdHJpZ2dlcmVkLgorCSAqLworCXUzMiBzZXFfbnVtX207CiB9OwogCiBzdHJ1 Y3QgaW50ZWxfY29ubmVjdG9yIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2hkY3AuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkY3AuYwppbmRleCBmYmY4 Yjc4OTNiZmEuLjFjODFlMTdkYzZjNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfaGRjcC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkY3AuYwpAQCAt MTcsNiArMTcsNyBAQAogCiAjZGVmaW5lIEtFWV9MT0FEX1RSSUVTCTUKICNkZWZpbmUgRU5DUllQ VF9TVEFUVVNfQ0hBTkdFX1RJTUVPVVRfTVMJNTAKKyNkZWZpbmUgSERDUDJfTENfUkVUUllfQ05U CQkJMwogCiBzdGF0aWMKIGJvb2wgaW50ZWxfaGRjcF9pc19rc3ZfdmFsaWQodTggKmtzdikKQEAg LTg1Myw3ICs4NTQsNyBAQCBib29sIGlzX2hkY3Bfc3VwcG9ydGVkKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwgZW51bSBwb3J0IHBvcnQpCiAJcmV0dXJuIElOVEVMX0dFTihkZXZf cHJpdikgPj0gOSAmJiBwb3J0IDwgUE9SVF9FOwogfQogCi1zdGF0aWMgX19hdHRyaWJ1dGVfXygo dW51c2VkKSkgaW50CitzdGF0aWMgaW50CiBoZGNwMl9wcmVwYXJlX2FrZV9pbml0KHN0cnVjdCBp bnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwKIAkJICAgICAgIHN0cnVjdCBoZGNwMl9ha2VfaW5p dCAqYWtlX2RhdGEpCiB7CkBAIC04NzgsNyArODc5LDcgQEAgaGRjcDJfcHJlcGFyZV9ha2VfaW5p dChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IsCiAJcmV0dXJuIHJldDsKIH0KIAot c3RhdGljIF9fYXR0cmlidXRlX18oKHVudXNlZCkpIGludAorc3RhdGljIGludAogaGRjcDJfdmVy aWZ5X3J4X2NlcnRfcHJlcGFyZV9rbShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3Is CiAJCQkJc3RydWN0IGhkY3AyX2FrZV9zZW5kX2NlcnQgKnJ4X2NlcnQsCiAJCQkJYm9vbCAqcGFp cmVkLApAQCAtOTA4LDkgKzkwOSw4IEBAIGhkY3AyX3ZlcmlmeV9yeF9jZXJ0X3ByZXBhcmVfa20o c3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLAogCXJldHVybiByZXQ7CiB9CiAKLXN0 YXRpYyBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSBpbnQKLWhkY3AyX3ZlcmlmeV9ocHJpbWUoc3Ry dWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLAotCQkgICAgc3RydWN0IGhkY3AyX2FrZV9z ZW5kX2hwcmltZSAqcnhfaHByaW1lKQorc3RhdGljIGludCBoZGNwMl92ZXJpZnlfaHByaW1lKHN0 cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwKKwkJCSAgICAgICBzdHJ1Y3QgaGRjcDJf YWtlX3NlbmRfaHByaW1lICpyeF9ocHJpbWUpCiB7CiAJc3RydWN0IGhkY3BfcG9ydF9kYXRhICpk YXRhID0gJmNvbm5lY3Rvci0+aGRjcC5wb3J0X2RhdGE7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gdG9faTkxNShjb25uZWN0b3ItPmJhc2UuZGV2KTsKQEAgLTkzMyw3ICs5 MzMsNyBAQCBoZGNwMl92ZXJpZnlfaHByaW1lKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5l Y3RvciwKIAlyZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgX19hdHRyaWJ1dGVfXygodW51c2VkKSkg aW50CitzdGF0aWMgaW50CiBoZGNwMl9zdG9yZV9wYWlyaW5nX2luZm8oc3RydWN0IGludGVsX2Nv bm5lY3RvciAqY29ubmVjdG9yLAogCQkJIHN0cnVjdCBoZGNwMl9ha2Vfc2VuZF9wYWlyaW5nX2lu Zm8gKnBhaXJpbmdfaW5mbykKIHsKQEAgLTk1OCw3ICs5NTgsNyBAQCBoZGNwMl9zdG9yZV9wYWly aW5nX2luZm8oc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLAogCXJldHVybiByZXQ7 CiB9CiAKLXN0YXRpYyBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSBpbnQKK3N0YXRpYyBpbnQKIGhk Y3AyX3ByZXBhcmVfbGNfaW5pdChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IsCiAJ CSAgICAgIHN0cnVjdCBoZGNwMl9sY19pbml0ICpsY19pbml0KQogewpAQCAtOTgzLDcgKzk4Myw3 IEBAIGhkY3AyX3ByZXBhcmVfbGNfaW5pdChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0 b3IsCiAJcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIF9fYXR0cmlidXRlX18oKHVudXNlZCkpIGlu dAorc3RhdGljIGludAogaGRjcDJfdmVyaWZ5X2xwcmltZShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9y ICpjb25uZWN0b3IsCiAJCSAgICBzdHJ1Y3QgaGRjcDJfbGNfc2VuZF9scHJpbWUgKnJ4X2xwcmlt ZSkKIHsKQEAgLTEwMDgsOSArMTAwOCw4IEBAIGhkY3AyX3ZlcmlmeV9scHJpbWUoc3RydWN0IGlu dGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLAogCXJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyBfX2F0 dHJpYnV0ZV9fKCh1bnVzZWQpKQotaW50IGhkY3AyX3ByZXBhcmVfc2tleShzdHJ1Y3QgaW50ZWxf Y29ubmVjdG9yICpjb25uZWN0b3IsCi0JCSAgICAgICBzdHJ1Y3QgaGRjcDJfc2tlX3NlbmRfZWtz ICpza2VfZGF0YSkKK3N0YXRpYyBpbnQgaGRjcDJfcHJlcGFyZV9za2V5KHN0cnVjdCBpbnRlbF9j b25uZWN0b3IgKmNvbm5lY3RvciwKKwkJCSAgICAgIHN0cnVjdCBoZGNwMl9za2Vfc2VuZF9la3Mg KnNrZV9kYXRhKQogewogCXN0cnVjdCBoZGNwX3BvcnRfZGF0YSAqZGF0YSA9ICZjb25uZWN0b3It PmhkY3AucG9ydF9kYXRhOwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRv X2k5MTUoY29ubmVjdG9yLT5iYXNlLmRldik7CkBAIC0xMDg3LDggKzEwODYsNyBAQCBoZGNwMl92 ZXJpZnlfbXByaW1lKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwKIAlyZXR1cm4g cmV0OwogfQogCi1zdGF0aWMgX19hdHRyaWJ1dGVfXygodW51c2VkKSkKLWludCBoZGNwMl9hdXRo ZW50aWNhdGVfcG9ydChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCitzdGF0aWMg aW50IGhkY3AyX2F1dGhlbnRpY2F0ZV9wb3J0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5l Y3RvcikKIHsKIAlzdHJ1Y3QgaGRjcF9wb3J0X2RhdGEgKmRhdGEgPSAmY29ubmVjdG9yLT5oZGNw LnBvcnRfZGF0YTsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1 KGNvbm5lY3Rvci0+YmFzZS5kZXYpOwpAQCAtMTEzNywxMSArMTEzNSwxODAgQEAgc3RhdGljIGlu dCBoZGNwMl9kZWF1dGhlbnRpY2F0ZV9wb3J0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5l Y3RvcikKIAlyZXR1cm4gaGRjcDJfY2xvc2VfbWVpX3Nlc3Npb24oY29ubmVjdG9yKTsKIH0KIAor LyogQXV0aGVudGljYXRpb24gZmxvdyBzdGFydHMgZnJvbSBoZXJlICovCitzdGF0aWMgaW50IGhk Y3AyX2F1dGhlbnRpY2F0aW9uX2tleV9leGNoYW5nZShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpj b25uZWN0b3IpCit7CisJc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQg PSBjb25uX3RvX2RpZ19wb3J0KGNvbm5lY3Rvcik7CisJc3RydWN0IGludGVsX2hkY3AgKmhkY3Ag PSAmY29ubmVjdG9yLT5oZGNwOworCXVuaW9uIHsKKwkJc3RydWN0IGhkY3AyX2FrZV9pbml0IGFr ZV9pbml0OworCQlzdHJ1Y3QgaGRjcDJfYWtlX3NlbmRfY2VydCBzZW5kX2NlcnQ7CisJCXN0cnVj dCBoZGNwMl9ha2Vfbm9fc3RvcmVkX2ttIG5vX3N0b3JlZF9rbTsKKwkJc3RydWN0IGhkY3AyX2Fr ZV9zZW5kX2hwcmltZSBzZW5kX2hwcmltZTsKKwkJc3RydWN0IGhkY3AyX2FrZV9zZW5kX3BhaXJp bmdfaW5mbyBwYWlyaW5nX2luZm87CisJfSBtc2dzOworCWNvbnN0IHN0cnVjdCBpbnRlbF9oZGNw X3NoaW0gKnNoaW0gPSBoZGNwLT5zaGltOworCXNpemVfdCBzaXplOworCWludCByZXQ7CisKKwkv KiBJbml0IGZvciBzZXFfbnVtICovCisJaGRjcC0+c2VxX251bV92ID0gMDsKKwloZGNwLT5zZXFf bnVtX20gPSAwOworCisJcmV0ID0gaGRjcDJfcHJlcGFyZV9ha2VfaW5pdChjb25uZWN0b3IsICZt c2dzLmFrZV9pbml0KTsKKwlpZiAocmV0IDwgMCkKKwkJcmV0dXJuIHJldDsKKworCXJldCA9IHNo aW0tPndyaXRlXzJfMl9tc2coaW50ZWxfZGlnX3BvcnQsICZtc2dzLmFrZV9pbml0LAorCQkJCSAg c2l6ZW9mKG1zZ3MuYWtlX2luaXQpKTsKKwlpZiAocmV0IDwgMCkKKwkJcmV0dXJuIHJldDsKKwor CXJldCA9IHNoaW0tPnJlYWRfMl8yX21zZyhpbnRlbF9kaWdfcG9ydCwgSERDUF8yXzJfQUtFX1NF TkRfQ0VSVCwKKwkJCQkgJm1zZ3Muc2VuZF9jZXJ0LCBzaXplb2YobXNncy5zZW5kX2NlcnQpKTsK KwlpZiAocmV0IDwgMCkKKwkJcmV0dXJuIHJldDsKKworCWlmIChtc2dzLnNlbmRfY2VydC5yeF9j YXBzWzBdICE9IEhEQ1BfMl8yX1JYX0NBUFNfVkVSU0lPTl9WQUwpCisJCXJldHVybiAtRUlOVkFM OworCisJaGRjcC0+aXNfcmVwZWF0ZXIgPSBIRENQXzJfMl9SWF9SRVBFQVRFUihtc2dzLnNlbmRf Y2VydC5yeF9jYXBzWzJdKTsKKworCS8qCisJICogSGVyZSBtc2dzLm5vX3N0b3JlZF9rbSB3aWxs IGhvbGQgbXNncyBjb3JyZXNwb25kaW5nIHRvIHRoZSBrbQorCSAqIHN0b3JlZCBhbHNvLgorCSAq LworCXJldCA9IGhkY3AyX3ZlcmlmeV9yeF9jZXJ0X3ByZXBhcmVfa20oY29ubmVjdG9yLCAmbXNn cy5zZW5kX2NlcnQsCisJCQkJCSAgICAgICZoZGNwLT5pc19wYWlyZWQsCisJCQkJCSAgICAgICZt c2dzLm5vX3N0b3JlZF9rbSwgJnNpemUpOworCWlmIChyZXQgPCAwKQorCQlyZXR1cm4gcmV0Owor CisJcmV0ID0gc2hpbS0+d3JpdGVfMl8yX21zZyhpbnRlbF9kaWdfcG9ydCwgJm1zZ3Mubm9fc3Rv cmVkX2ttLCBzaXplKTsKKwlpZiAocmV0IDwgMCkKKwkJcmV0dXJuIHJldDsKKworCXJldCA9IHNo aW0tPnJlYWRfMl8yX21zZyhpbnRlbF9kaWdfcG9ydCwgSERDUF8yXzJfQUtFX1NFTkRfSFBSSU1F LAorCQkJCSAmbXNncy5zZW5kX2hwcmltZSwgc2l6ZW9mKG1zZ3Muc2VuZF9ocHJpbWUpKTsKKwlp ZiAocmV0IDwgMCkKKwkJcmV0dXJuIHJldDsKKworCXJldCA9IGhkY3AyX3ZlcmlmeV9ocHJpbWUo Y29ubmVjdG9yLCAmbXNncy5zZW5kX2hwcmltZSk7CisJaWYgKHJldCA8IDApCisJCXJldHVybiBy ZXQ7CisKKwlpZiAoIWhkY3AtPmlzX3BhaXJlZCkgeworCQkvKiBQYWlyaW5nIGlzIHJlcXVpcmVk ICovCisJCXJldCA9IHNoaW0tPnJlYWRfMl8yX21zZyhpbnRlbF9kaWdfcG9ydCwKKwkJCQkJIEhE Q1BfMl8yX0FLRV9TRU5EX1BBSVJJTkdfSU5GTywKKwkJCQkJICZtc2dzLnBhaXJpbmdfaW5mbywK KwkJCQkJIHNpemVvZihtc2dzLnBhaXJpbmdfaW5mbykpOworCQlpZiAocmV0IDwgMCkKKwkJCXJl dHVybiByZXQ7CisKKwkJcmV0ID0gaGRjcDJfc3RvcmVfcGFpcmluZ19pbmZvKGNvbm5lY3Rvciwg Jm1zZ3MucGFpcmluZ19pbmZvKTsKKwkJaWYgKHJldCA8IDApCisJCQlyZXR1cm4gcmV0OworCQlo ZGNwLT5pc19wYWlyZWQgPSB0cnVlOworCX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50 IGhkY3AyX2xvY2FsaXR5X2NoZWNrKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikK K3sKKwlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCA9IGNvbm5fdG9f ZGlnX3BvcnQoY29ubmVjdG9yKTsKKwlzdHJ1Y3QgaW50ZWxfaGRjcCAqaGRjcCA9ICZjb25uZWN0 b3ItPmhkY3A7CisJdW5pb24geworCQlzdHJ1Y3QgaGRjcDJfbGNfaW5pdCBsY19pbml0OworCQlz dHJ1Y3QgaGRjcDJfbGNfc2VuZF9scHJpbWUgc2VuZF9scHJpbWU7CisJfSBtc2dzOworCWNvbnN0 IHN0cnVjdCBpbnRlbF9oZGNwX3NoaW0gKnNoaW0gPSBoZGNwLT5zaGltOworCWludCB0cmllcyA9 IEhEQ1AyX0xDX1JFVFJZX0NOVCwgcmV0LCBpOworCisJZm9yIChpID0gMDsgaSA8IHRyaWVzOyBp KyspIHsKKwkJcmV0ID0gaGRjcDJfcHJlcGFyZV9sY19pbml0KGNvbm5lY3RvciwgJm1zZ3MubGNf aW5pdCk7CisJCWlmIChyZXQgPCAwKQorCQkJY29udGludWU7CisKKwkJcmV0ID0gc2hpbS0+d3Jp dGVfMl8yX21zZyhpbnRlbF9kaWdfcG9ydCwgJm1zZ3MubGNfaW5pdCwKKwkJCQkgICAgICBzaXpl b2YobXNncy5sY19pbml0KSk7CisJCWlmIChyZXQgPCAwKQorCQkJY29udGludWU7CisKKwkJcmV0 ID0gc2hpbS0+cmVhZF8yXzJfbXNnKGludGVsX2RpZ19wb3J0LAorCQkJCQkgSERDUF8yXzJfTENf U0VORF9MUFJJTUUsCisJCQkJCSAmbXNncy5zZW5kX2xwcmltZSwKKwkJCQkJIHNpemVvZihtc2dz LnNlbmRfbHByaW1lKSk7CisJCWlmIChyZXQgPCAwKQorCQkJY29udGludWU7CisKKwkJcmV0ID0g aGRjcDJfdmVyaWZ5X2xwcmltZShjb25uZWN0b3IsICZtc2dzLnNlbmRfbHByaW1lKTsKKwkJaWYg KCFyZXQpCisJCQlicmVhazsKKwl9CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50IGhk Y3AyX3Nlc3Npb25fa2V5X2V4Y2hhbmdlKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3Rv cikKK3sKKwlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCA9IGNvbm5f dG9fZGlnX3BvcnQoY29ubmVjdG9yKTsKKwlzdHJ1Y3QgaW50ZWxfaGRjcCAqaGRjcCA9ICZjb25u ZWN0b3ItPmhkY3A7CisJc3RydWN0IGhkY3AyX3NrZV9zZW5kX2VrcyBzZW5kX2VrczsKKwlpbnQg cmV0OworCisJcmV0ID0gaGRjcDJfcHJlcGFyZV9za2V5KGNvbm5lY3RvciwgJnNlbmRfZWtzKTsK KwlpZiAocmV0IDwgMCkKKwkJcmV0dXJuIHJldDsKKworCXJldCA9IGhkY3AtPnNoaW0tPndyaXRl XzJfMl9tc2coaW50ZWxfZGlnX3BvcnQsICZzZW5kX2VrcywKKwkJCQkJc2l6ZW9mKHNlbmRfZWtz KSk7CisJaWYgKHJldCA8IDApCisJCXJldHVybiByZXQ7CisKKwlyZXR1cm4gMDsKK30KKwogc3Rh dGljIGludCBoZGNwMl9hdXRoZW50aWNhdGVfc2luayhzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpj b25uZWN0b3IpCiB7Ci0JRFJNX0VSUk9SKCJTaW5rIGF1dGhlbnRpY2F0aW9uIGlzIGRvbmUgaW4g c3Vic2VxdWVudCBwYXRjaGVzXG4iKTsKKwlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRl bF9kaWdfcG9ydCA9IGNvbm5fdG9fZGlnX3BvcnQoY29ubmVjdG9yKTsKKwlzdHJ1Y3QgaW50ZWxf aGRjcCAqaGRjcCA9ICZjb25uZWN0b3ItPmhkY3A7CisJY29uc3Qgc3RydWN0IGludGVsX2hkY3Bf c2hpbSAqc2hpbSA9IGhkY3AtPnNoaW07CisJaW50IHJldDsKIAotCXJldHVybiAtRUlOVkFMOwor CXJldCA9IGhkY3AyX2F1dGhlbnRpY2F0aW9uX2tleV9leGNoYW5nZShjb25uZWN0b3IpOworCWlm IChyZXQgPCAwKSB7CisJCURSTV9ERUJVR19LTVMoIkFLRSBGYWlsZWQuIEVyciA6ICVkXG4iLCBy ZXQpOworCQlyZXR1cm4gcmV0OworCX0KKworCXJldCA9IGhkY3AyX2xvY2FsaXR5X2NoZWNrKGNv bm5lY3Rvcik7CisJaWYgKHJldCA8IDApIHsKKwkJRFJNX0RFQlVHX0tNUygiTG9jYWxpdHkgQ2hl Y2sgZmFpbGVkLiBFcnIgOiAlZFxuIiwgcmV0KTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlyZXQg PSBoZGNwMl9zZXNzaW9uX2tleV9leGNoYW5nZShjb25uZWN0b3IpOworCWlmIChyZXQgPCAwKSB7 CisJCURSTV9ERUJVR19LTVMoIlNLRSBGYWlsZWQuIEVyciA6ICVkXG4iLCByZXQpOworCQlyZXR1 cm4gcmV0OworCX0KKworCWlmIChzaGltLT5jb25maWdfc3RyZWFtX3R5cGUpIHsKKwkJcmV0ID0g c2hpbS0+Y29uZmlnX3N0cmVhbV90eXBlKGludGVsX2RpZ19wb3J0LAorCQkJCQkgICAgICAgaGRj cC0+aXNfcmVwZWF0ZXIsCisJCQkJCSAgICAgICBoZGNwLT5jb250ZW50X3R5cGUpOworCQlpZiAo cmV0IDwgMCkKKwkJCXJldHVybiByZXQ7CisJfQorCisJaGRjcC0+cG9ydF9kYXRhLnN0cmVhbXNb MF0uc3RyZWFtX3R5cGUgPSBoZGNwLT5jb250ZW50X3R5cGU7CisJcmV0ID0gaGRjcDJfYXV0aGVu dGljYXRlX3BvcnQoY29ubmVjdG9yKTsKKwlpZiAocmV0IDwgMCkKKwkJcmV0dXJuIHJldDsKKwor CXJldHVybiByZXQ7CiB9CiAKIHN0YXRpYyBpbnQgaGRjcDJfZW5hYmxlX2VuY3J5cHRpb24oc3Ry dWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQotLSAKMi43LjQKCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QK SW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=