From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ramalingam C Subject: [PATCH v9 10/39] drm/i915: Implement HDCP2.2 receiver authentication Date: Thu, 13 Dec 2018 09:31:12 +0530 Message-ID: <1544673701-6353-11-git-send-email-ramalingam.c@intel.com> References: <1544673701-6353-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: <1544673701-6353-1-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: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, seanpaul@chromium.org, daniel.vetter@ffwll.ch, tomas.winkler@intel.com, uma.shankar@intel.com List-Id: intel-gfx@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 LgoKU2lnbmVkLW9mZi1ieTogUmFtYWxpbmdhbSBDIDxyYW1hbGluZ2FtLmNAaW50ZWwuY29tPgot LS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICB8ICAzNCArKysrKysKIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkY3AuYyB8IDIxMSArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKy0tLQogMiBmaWxlcyBjaGFuZ2VkLCAyMzAgaW5zZXJ0aW9ucygrKSwgMTUg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2 LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAppbmRleCA2ZDUzNjE2MTZjYTMu LmE2YjYzMmQ3MTQ5MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2 LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKQEAgLTM4Nyw2ICszODcs MjIgQEAgc3RydWN0IGludGVsX2hkY3Bfc2hpbSB7CiAJLyogRGV0ZWN0cyB3aGV0aGVyIFBhbmVs IGlzIEhEQ1AyLjIgY2FwYWJsZSAqLwogCWludCAoKmhkY3BfMl8yX2NhcGFibGUpKHN0cnVjdCBp bnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0LAogCQkJCWJvb2wgKmNhcGFibGUpOwor CisJLyogV3JpdGUgSERDUDIuMiBtZXNzYWdlcyAqLworCWludCAoKndyaXRlXzJfMl9tc2cpKHN0 cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0LAorCQkJICAgICB2b2lkICpi dWYsIHNpemVfdCBzaXplKTsKKworCS8qIFJlYWQgSERDUDIuMiBtZXNzYWdlcyAqLworCWludCAo KnJlYWRfMl8yX21zZykoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQs CisJCQkgICAgdTggbXNnX2lkLCB2b2lkICpidWYsIHNpemVfdCBzaXplKTsKKworCS8qCisJICog SW1wbGVtZW50YXRpb24gb2YgRFAgSERDUDIuMiBFcnJhdGEgZm9yIHRoZSBjb21tdW5pY2F0aW9u IG9mIHN0cmVhbQorCSAqIHR5cGUgdG8gUmVjZWl2ZXJzLiBJbiBEUCBIRENQMi4yIFN0cmVhbSB0 eXBlIGlzIG9uZSBvZiB0aGUgaW5wdXQgdG8KKwkgKiB0aGUgSERDUDIuMiBDaXBoZXIgZm9yIEVu L0RlLUNyeXB0aW9uLiBOb3QgYXBwbGljYWJsZSBmb3IgSERNSS4KKwkgKi8KKwlpbnQgKCpjb25m aWdfc3RyZWFtX3R5cGUpKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0 LAorCQkJCSAgdm9pZCAqYnVmLCBzaXplX3Qgc2l6ZSk7CiB9OwogCiBzdHJ1Y3QgaW50ZWxfaGRj cCB7CkBAIC00MTQsNiArNDMwLDI0IEBAIHN0cnVjdCBpbnRlbF9oZGNwIHsKIAkgKi8KIAl1OCBj b250ZW50X3R5cGU7CiAJc3RydWN0IGhkY3BfcG9ydF9kYXRhIHBvcnRfZGF0YTsKKworCXU4IGlz X3BhaXJlZDsKKwl1OCBpc19yZXBlYXRlcjsKKworCS8qCisJICogQ291bnQgb2YgUmVjZWl2ZXJJ RF9MaXN0IHJlY2VpdmVkLiBJbml0aWFsaXplZCB0byAwIGF0IEFLRV9JTklULgorCSAqIEluY3Jl bWVudGVkIGFmdGVyIHByb2Nlc3NpbmcgdGhlIFJlcGVhdGVyQXV0aF9TZW5kX1JlY2VpdmVySURf TGlzdC4KKwkgKiBXaGVuIGl0IHJvbGxzIG92ZXIgcmUtYXV0aCBoYXMgdG8gYmUgdHJpZ2dlcmVk LgorCSAqLworCXUzMiBzZXFfbnVtX3Y7CisKKwkvKgorCSAqIENvdW50IG9mIFJlcGVhdGVyQXV0 aF9TdHJlYW1fTWFuYWdlIG1zZyBwcm9wYWdhdGVkLgorCSAqIEluaXRpYWxpemVkIHRvIDAgb24g QUtFX0lOSVQuIEluY3JlbWVudGVkIGFmdGVyIGV2ZXJ5IHN1Y2Nlc3NmdWwKKwkgKiB0cmFuc21p c3Npb24gb2YgUmVwZWF0ZXJBdXRoX1N0cmVhbV9NYW5hZ2UgbWVzc2FnZS4gV2hlbiBpdCByb2xs cworCSAqIG92ZXIgcmUtQXV0aCBoYXMgdG8gYmUgdHJpZ2dlcmVkLgorCSAqLworCXUzMiBzZXFf bnVtX207CiB9OwogCiBzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yIHsKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkY3AuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2hkY3AuYwppbmRleCBmMGVlNDQ4ZTY1NDYuLmYxZjBlZjI5NGUyMCAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRjcC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2hkY3AuYwpAQCAtMTgsNiArMTgsNyBAQAogCiAjZGVmaW5lIEtFWV9MT0FEX1RSSUVT CTUKICNkZWZpbmUgRU5DUllQVF9TVEFUVVNfQ0hBTkdFX1RJTUVPVVRfTVMJNTAKKyNkZWZpbmUg SERDUDJfTENfUkVUUllfQ05UCQkJMwogCiBzdGF0aWMKIGJvb2wgaW50ZWxfaGRjcF9pc19rc3Zf dmFsaWQodTggKmtzdikKQEAgLTg1NCw3ICs4NTUsNyBAQCBib29sIGlzX2hkY3Bfc3VwcG9ydGVk KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgZW51bSBwb3J0IHBvcnQpCiAJcmV0 dXJuIElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSAmJiBwb3J0IDwgUE9SVF9FOwogfQogCi1zdGF0 aWMgX19hdHRyaWJ1dGVfXygodW51c2VkKSkgaW50CitzdGF0aWMgaW50CiBoZGNwMl9wcmVwYXJl X2FrZV9pbml0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwKIAkJICAgICAgIHN0 cnVjdCBoZGNwMl9ha2VfaW5pdCAqYWtlX2RhdGEpCiB7CkBAIC04NzUsNyArODc2LDcgQEAgaGRj cDJfcHJlcGFyZV9ha2VfaW5pdChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IsCiAJ cmV0dXJuIHJldDsKIH0KIAotc3RhdGljIF9fYXR0cmlidXRlX18oKHVudXNlZCkpIGludAorc3Rh dGljIGludAogaGRjcDJfdmVyaWZ5X3J4X2NlcnRfcHJlcGFyZV9rbShzdHJ1Y3QgaW50ZWxfY29u bmVjdG9yICpjb25uZWN0b3IsCiAJCQkJc3RydWN0IGhkY3AyX2FrZV9zZW5kX2NlcnQgKnJ4X2Nl cnQsCiAJCQkJYm9vbCAqcGFpcmVkLApAQCAtODk3LDkgKzg5OCw4IEBAIGhkY3AyX3ZlcmlmeV9y eF9jZXJ0X3ByZXBhcmVfa20oc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLAogCXJl dHVybiByZXQ7CiB9CiAKLXN0YXRpYyBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSBpbnQKLWhkY3Ay X3ZlcmlmeV9ocHJpbWUoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLAotCQkgICAg c3RydWN0IGhkY3AyX2FrZV9zZW5kX2hwcmltZSAqcnhfaHByaW1lKQorc3RhdGljIGludCBoZGNw Ml92ZXJpZnlfaHByaW1lKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwKKwkJCSAg ICAgICBzdHJ1Y3QgaGRjcDJfYWtlX3NlbmRfaHByaW1lICpyeF9ocHJpbWUpCiB7CiAJc3RydWN0 IGhkY3BfcG9ydF9kYXRhICpkYXRhID0gJmNvbm5lY3Rvci0+aGRjcC5wb3J0X2RhdGE7CiAJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjb25uZWN0b3ItPmJhc2Uu ZGV2KTsKQEAgLTkxMyw3ICs5MTMsNyBAQCBoZGNwMl92ZXJpZnlfaHByaW1lKHN0cnVjdCBpbnRl bF9jb25uZWN0b3IgKmNvbm5lY3RvciwKIAlyZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgX19hdHRy aWJ1dGVfXygodW51c2VkKSkgaW50CitzdGF0aWMgaW50CiBoZGNwMl9zdG9yZV9wYWlyaW5nX2lu Zm8oc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLAogCQkJIHN0cnVjdCBoZGNwMl9h a2Vfc2VuZF9wYWlyaW5nX2luZm8gKnBhaXJpbmdfaW5mbykKIHsKQEAgLTkzMCw3ICs5MzAsNyBA QCBoZGNwMl9zdG9yZV9wYWlyaW5nX2luZm8oc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVj dG9yLAogCXJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSBp bnQKK3N0YXRpYyBpbnQKIGhkY3AyX3ByZXBhcmVfbGNfaW5pdChzdHJ1Y3QgaW50ZWxfY29ubmVj dG9yICpjb25uZWN0b3IsCiAJCSAgICAgIHN0cnVjdCBoZGNwMl9sY19pbml0ICpsY19pbml0KQog ewpAQCAtOTQ3LDcgKzk0Nyw3IEBAIGhkY3AyX3ByZXBhcmVfbGNfaW5pdChzdHJ1Y3QgaW50ZWxf Y29ubmVjdG9yICpjb25uZWN0b3IsCiAJcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIF9fYXR0cmli dXRlX18oKHVudXNlZCkpIGludAorc3RhdGljIGludAogaGRjcDJfdmVyaWZ5X2xwcmltZShzdHJ1 Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IsCiAJCSAgICBzdHJ1Y3QgaGRjcDJfbGNfc2Vu ZF9scHJpbWUgKnJ4X2xwcmltZSkKIHsKQEAgLTk2Myw5ICs5NjMsOCBAQCBoZGNwMl92ZXJpZnlf bHByaW1lKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwKIAlyZXR1cm4gcmV0Owog fQogCi1zdGF0aWMgX19hdHRyaWJ1dGVfXygodW51c2VkKSkKLWludCBoZGNwMl9wcmVwYXJlX3Nr ZXkoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLAotCQkgICAgICAgc3RydWN0IGhk Y3AyX3NrZV9zZW5kX2VrcyAqc2tlX2RhdGEpCitzdGF0aWMgaW50IGhkY3AyX3ByZXBhcmVfc2tl eShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IsCisJCQkgICAgICBzdHJ1Y3QgaGRj cDJfc2tlX3NlbmRfZWtzICpza2VfZGF0YSkKIHsKIAlzdHJ1Y3QgaGRjcF9wb3J0X2RhdGEgKmRh dGEgPSAmY29ubmVjdG9yLT5oZGNwLnBvcnRfZGF0YTsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNvbm5lY3Rvci0+YmFzZS5kZXYpOwpAQCAtMTAxNiw4ICsx MDE1LDcgQEAgaGRjcDJfdmVyaWZ5X21wcmltZShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25u ZWN0b3IsCiAJcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIF9fYXR0cmlidXRlX18oKHVudXNlZCkp Ci1pbnQgaGRjcDJfYXV0aGVudGljYXRlX3BvcnQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29u bmVjdG9yKQorc3RhdGljIGludCBoZGNwMl9hdXRoZW50aWNhdGVfcG9ydChzdHJ1Y3QgaW50ZWxf Y29ubmVjdG9yICpjb25uZWN0b3IpCiB7CiAJc3RydWN0IGhkY3BfcG9ydF9kYXRhICpkYXRhID0g JmNvbm5lY3Rvci0+aGRjcC5wb3J0X2RhdGE7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gdG9faTkxNShjb25uZWN0b3ItPmJhc2UuZGV2KTsKQEAgLTEwNDUsMTEgKzEwNDMs MTk0IEBAIHN0YXRpYyBpbnQgaGRjcDJfZGVhdXRoZW50aWNhdGVfcG9ydChzdHJ1Y3QgaW50ZWxf Y29ubmVjdG9yICpjb25uZWN0b3IpCiAJcmV0dXJuIGhkY3AyX2Nsb3NlX21laV9zZXNzaW9uKGNv bm5lY3Rvcik7CiB9CiAKKy8qIEF1dGhlbnRpY2F0aW9uIGZsb3cgc3RhcnRzIGZyb20gaGVyZSAq Lworc3RhdGljIGludCBoZGNwMl9hdXRoZW50aWNhdGlvbl9rZXlfZXhjaGFuZ2Uoc3RydWN0IGlu dGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQoreworCXN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQg KmludGVsX2RpZ19wb3J0ID0gY29ubl90b19kaWdfcG9ydChjb25uZWN0b3IpOworCXN0cnVjdCBp bnRlbF9oZGNwICpoZGNwID0gJmNvbm5lY3Rvci0+aGRjcDsKKwl1bmlvbiB7CisJCXN0cnVjdCBo ZGNwMl9ha2VfaW5pdCBha2VfaW5pdDsKKwkJc3RydWN0IGhkY3AyX2FrZV9zZW5kX2NlcnQgc2Vu ZF9jZXJ0OworCQlzdHJ1Y3QgaGRjcDJfYWtlX25vX3N0b3JlZF9rbSBub19zdG9yZWRfa207CisJ CXN0cnVjdCBoZGNwMl9ha2Vfc2VuZF9ocHJpbWUgc2VuZF9ocHJpbWU7CisJCXN0cnVjdCBoZGNw Ml9ha2Vfc2VuZF9wYWlyaW5nX2luZm8gcGFpcmluZ19pbmZvOworCX0gbXNnczsKKwljb25zdCBz dHJ1Y3QgaW50ZWxfaGRjcF9zaGltICpzaGltID0gaGRjcC0+c2hpbTsKKwlzaXplX3Qgc2l6ZTsK KwlpbnQgcmV0OworCWJvb2wgaXNfcGFpcmVkOworCisJLyogSW5pdCBmb3Igc2VxX251bSAqLwor CWhkY3AtPnNlcV9udW1fdiA9IDA7CisJaGRjcC0+c2VxX251bV9tID0gMDsKKworCXJldCA9IGhk Y3AyX3ByZXBhcmVfYWtlX2luaXQoY29ubmVjdG9yLCAmbXNncy5ha2VfaW5pdCk7CisJaWYgKHJl dCA8IDApCisJCXJldHVybiByZXQ7CisKKwlyZXQgPSBzaGltLT53cml0ZV8yXzJfbXNnKGludGVs X2RpZ19wb3J0LCAmbXNncy5ha2VfaW5pdCwKKwkJCQkgIHNpemVvZihtc2dzLmFrZV9pbml0KSk7 CisJaWYgKHJldCA8IDApCisJCXJldHVybiByZXQ7CisKKwlyZXQgPSBzaGltLT5yZWFkXzJfMl9t c2coaW50ZWxfZGlnX3BvcnQsIEhEQ1BfMl8yX0FLRV9TRU5EX0NFUlQsCisJCQkJICZtc2dzLnNl bmRfY2VydCwgc2l6ZW9mKG1zZ3Muc2VuZF9jZXJ0KSk7CisJaWYgKHJldCA8IDApCisJCXJldHVy biByZXQ7CisKKwlpZiAobXNncy5zZW5kX2NlcnQucnhfY2Fwc1swXSAhPSBIRENQXzJfMl9SWF9D QVBTX1ZFUlNJT05fVkFMKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWhkY3AtPmlzX3JlcGVhdGVy ID0gSERDUF8yXzJfUlhfUkVQRUFURVIobXNncy5zZW5kX2NlcnQucnhfY2Fwc1syXSkgPworCQkJ ICAgIDEgOiAwOworCisJLyoKKwkgKiBIZXJlIG1zZ3Mubm9fc3RvcmVkX2ttIHdpbGwgaG9sZCBt c2dzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGttCisJICogc3RvcmVkIGFsc28uCisJICovCisJcmV0 ID0gaGRjcDJfdmVyaWZ5X3J4X2NlcnRfcHJlcGFyZV9rbShjb25uZWN0b3IsICZtc2dzLnNlbmRf Y2VydCwKKwkJCQkJICAgICAgJmlzX3BhaXJlZCwKKwkJCQkJICAgICAgJm1zZ3Mubm9fc3RvcmVk X2ttLCAmc2l6ZSk7CisJaWYgKHJldCA8IDApCisJCXJldHVybiByZXQ7CisKKwloZGNwLT5pc19w YWlyZWQgPSBpc19wYWlyZWQgPyAxIDogMDsKKworCXJldCA9IHNoaW0tPndyaXRlXzJfMl9tc2co aW50ZWxfZGlnX3BvcnQsICZtc2dzLm5vX3N0b3JlZF9rbSwgc2l6ZSk7CisJaWYgKHJldCA8IDAp CisJCXJldHVybiByZXQ7CisKKwlyZXQgPSBzaGltLT5yZWFkXzJfMl9tc2coaW50ZWxfZGlnX3Bv cnQsIEhEQ1BfMl8yX0FLRV9TRU5EX0hQUklNRSwKKwkJCQkgJm1zZ3Muc2VuZF9ocHJpbWUsIHNp emVvZihtc2dzLnNlbmRfaHByaW1lKSk7CisJaWYgKHJldCA8IDApCisJCXJldHVybiByZXQ7CisK KwlyZXQgPSBoZGNwMl92ZXJpZnlfaHByaW1lKGNvbm5lY3RvciwgJm1zZ3Muc2VuZF9ocHJpbWUp OworCWlmIChyZXQgPCAwKQorCQlyZXR1cm4gcmV0OworCisJaWYgKCFoZGNwLT5pc19wYWlyZWQp IHsKKwkJLyogUGFpcmluZyBpcyByZXF1aXJlZCAqLworCQlyZXQgPSBzaGltLT5yZWFkXzJfMl9t c2coaW50ZWxfZGlnX3BvcnQsCisJCQkJCSBIRENQXzJfMl9BS0VfU0VORF9QQUlSSU5HX0lORk8s CisJCQkJCSAmbXNncy5wYWlyaW5nX2luZm8sCisJCQkJCSBzaXplb2YobXNncy5wYWlyaW5nX2lu Zm8pKTsKKwkJaWYgKHJldCA8IDApCisJCQlyZXR1cm4gcmV0OworCisJCXJldCA9IGhkY3AyX3N0 b3JlX3BhaXJpbmdfaW5mbyhjb25uZWN0b3IsICZtc2dzLnBhaXJpbmdfaW5mbyk7CisJCWlmIChy ZXQgPCAwKQorCQkJcmV0dXJuIHJldDsKKwkJaGRjcC0+aXNfcGFpcmVkID0gMTsKKwl9CisKKwly ZXR1cm4gMDsKK30KKworc3RhdGljIGludCBoZGNwMl9sb2NhbGl0eV9jaGVjayhzdHJ1Y3QgaW50 ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCit7CisJc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAq aW50ZWxfZGlnX3BvcnQgPSBjb25uX3RvX2RpZ19wb3J0KGNvbm5lY3Rvcik7CisJc3RydWN0IGlu dGVsX2hkY3AgKmhkY3AgPSAmY29ubmVjdG9yLT5oZGNwOworCXVuaW9uIHsKKwkJc3RydWN0IGhk Y3AyX2xjX2luaXQgbGNfaW5pdDsKKwkJc3RydWN0IGhkY3AyX2xjX3NlbmRfbHByaW1lIHNlbmRf bHByaW1lOworCX0gbXNnczsKKwljb25zdCBzdHJ1Y3QgaW50ZWxfaGRjcF9zaGltICpzaGltID0g aGRjcC0+c2hpbTsKKwlpbnQgdHJpZXMgPSBIRENQMl9MQ19SRVRSWV9DTlQsIHJldCwgaTsKKwor CWZvciAoaSA9IDA7IGkgPCB0cmllczsgaSsrKSB7CisJCXJldCA9IGhkY3AyX3ByZXBhcmVfbGNf aW5pdChjb25uZWN0b3IsICZtc2dzLmxjX2luaXQpOworCQlpZiAocmV0IDwgMCkKKwkJCWNvbnRp bnVlOworCisJCXJldCA9IHNoaW0tPndyaXRlXzJfMl9tc2coaW50ZWxfZGlnX3BvcnQsICZtc2dz LmxjX2luaXQsCisJCQkJICAgICAgc2l6ZW9mKG1zZ3MubGNfaW5pdCkpOworCQlpZiAocmV0IDwg MCkKKwkJCWNvbnRpbnVlOworCisJCXJldCA9IHNoaW0tPnJlYWRfMl8yX21zZyhpbnRlbF9kaWdf cG9ydCwKKwkJCQkJIEhEQ1BfMl8yX0xDX1NFTkRfTFBSSU1FLAorCQkJCQkgJm1zZ3Muc2VuZF9s cHJpbWUsCisJCQkJCSBzaXplb2YobXNncy5zZW5kX2xwcmltZSkpOworCQlpZiAocmV0IDwgMCkK KwkJCWNvbnRpbnVlOworCisJCXJldCA9IGhkY3AyX3ZlcmlmeV9scHJpbWUoY29ubmVjdG9yLCAm bXNncy5zZW5kX2xwcmltZSk7CisJCWlmICghcmV0KQorCQkJYnJlYWs7CisJfQorCisJcmV0dXJu IHJldDsKK30KKworc3RhdGljIGludCBoZGNwMl9zZXNzaW9uX2tleV9leGNoYW5nZShzdHJ1Y3Qg aW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCit7CisJc3RydWN0IGludGVsX2RpZ2l0YWxfcG9y dCAqaW50ZWxfZGlnX3BvcnQgPSBjb25uX3RvX2RpZ19wb3J0KGNvbm5lY3Rvcik7CisJc3RydWN0 IGludGVsX2hkY3AgKmhkY3AgPSAmY29ubmVjdG9yLT5oZGNwOworCXN0cnVjdCBoZGNwMl9za2Vf c2VuZF9la3Mgc2VuZF9la3M7CisJaW50IHJldDsKKworCXJldCA9IGhkY3AyX3ByZXBhcmVfc2tl eShjb25uZWN0b3IsICZzZW5kX2Vrcyk7CisJaWYgKHJldCA8IDApCisJCXJldHVybiByZXQ7CisK KwlyZXQgPSBoZGNwLT5zaGltLT53cml0ZV8yXzJfbXNnKGludGVsX2RpZ19wb3J0LCAmc2VuZF9l a3MsCisJCQkJCXNpemVvZihzZW5kX2VrcykpOworCWlmIChyZXQgPCAwKQorCQlyZXR1cm4gcmV0 OworCisJcmV0dXJuIDA7Cit9CisKIHN0YXRpYyBpbnQgaGRjcDJfYXV0aGVudGljYXRlX3Npbmso c3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQogewotCURSTV9FUlJPUigiU2luayBh dXRoZW50aWNhdGlvbiBpcyBkb25lIGluIHN1YnNlcXVlbnQgcGF0Y2hlc1xuIik7CisJc3RydWN0 IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQgPSBjb25uX3RvX2RpZ19wb3J0KGNv bm5lY3Rvcik7CisJc3RydWN0IGludGVsX2hkY3AgKmhkY3AgPSAmY29ubmVjdG9yLT5oZGNwOwor CWNvbnN0IHN0cnVjdCBpbnRlbF9oZGNwX3NoaW0gKnNoaW0gPSBoZGNwLT5zaGltOworCXN0cnVj dCBoZGNwMl9kcF9lcnJhdGFfc3RyZWFtX3R5cGUgc3RyZWFtX3R5cGVfbXNnOworCWludCByZXQ7 CiAKLQlyZXR1cm4gLUVJTlZBTDsKKwlyZXQgPSBoZGNwMl9hdXRoZW50aWNhdGlvbl9rZXlfZXhj aGFuZ2UoY29ubmVjdG9yKTsKKwlpZiAocmV0IDwgMCkgeworCQlEUk1fREVCVUdfS01TKCJBS0Ug RmFpbGVkLiBFcnIgOiAlZFxuIiwgcmV0KTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlyZXQgPSBo ZGNwMl9sb2NhbGl0eV9jaGVjayhjb25uZWN0b3IpOworCWlmIChyZXQgPCAwKSB7CisJCURSTV9E RUJVR19LTVMoIkxvY2FsaXR5IENoZWNrIGZhaWxlZC4gRXJyIDogJWRcbiIsIHJldCk7CisJCXJl dHVybiByZXQ7CisJfQorCisJcmV0ID0gaGRjcDJfc2Vzc2lvbl9rZXlfZXhjaGFuZ2UoY29ubmVj dG9yKTsKKwlpZiAocmV0IDwgMCkgeworCQlEUk1fREVCVUdfS01TKCJTS0UgRmFpbGVkLiBFcnIg OiAlZFxuIiwgcmV0KTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlpZiAoIWhkY3AtPmlzX3JlcGVh dGVyICYmIHNoaW0tPmNvbmZpZ19zdHJlYW1fdHlwZSkgeworCQkvKgorCQkgKiBFcnJhdGEgZm9y IERQOiBBcyBTdHJlYW0gdHlwZSBpcyB1c2VkIGZvciBlbmNyeXB0aW9uLAorCQkgKiBSZWNlaXZl ciBzaG91bGQgYmUgY29tbXVuaWNhdGVkIHdpdGggc3RyZWFtIHR5cGUgZm9yIHRoZQorCQkgKiBk ZWNyeXB0aW9uIG9mIHRoZSBjb250ZW50LgorCQkgKiBSZXBlYXRlciB3aWxsIGJlIGNvbW11bmlj YXRlZCB3aXRoIHN0cmVhbSB0eXBlIGFzIGEKKwkJICogcGFydCBvZiBpdCdzIGF1dGggbGF0ZXIg aW4gdGltZS4KKwkJICovCisJCXN0cmVhbV90eXBlX21zZy5tc2dfaWQgPSBIRENQXzJfMl9FUlJB VEFfRFBfU1RSRUFNX1RZUEU7CisJCXN0cmVhbV90eXBlX21zZy5zdHJlYW1fdHlwZSA9IGhkY3At PmNvbnRlbnRfdHlwZTsKKworCQlyZXQgPSBzaGltLT5jb25maWdfc3RyZWFtX3R5cGUoaW50ZWxf ZGlnX3BvcnQsICZzdHJlYW1fdHlwZV9tc2csCisJCQkJCSAgICAgICBzaXplb2Yoc3RyZWFtX3R5 cGVfbXNnKSk7CisJCWlmIChyZXQgPCAwKQorCQkJcmV0dXJuIHJldDsKKwl9CisKKwloZGNwLT5w b3J0X2RhdGEuc3RyZWFtc1swXS5zdHJlYW1fdHlwZSA9IGhkY3AtPmNvbnRlbnRfdHlwZTsKKwly ZXQgPSBoZGNwMl9hdXRoZW50aWNhdGVfcG9ydChjb25uZWN0b3IpOworCWlmIChyZXQgPCAwKQor CQlyZXR1cm4gcmV0OworCisJcmV0dXJuIHJldDsKIH0KIAogc3RhdGljIGludCBoZGNwMl9lbmFi bGVfZW5jcnlwdGlvbihzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCi0tIAoyLjcu NAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRl dmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==