From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ramalingam C Subject: [PATCH v12 08/38] drm/i915: Implement HDCP2.2 receiver authentication Date: Sat, 9 Feb 2019 12:42:37 +0530 Message-ID: <1549696387-28268-9-git-send-email-ramalingam.c@intel.com> References: <1549696387-28268-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: <1549696387-28268-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, 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 aWdfc3RyZWFtX3R5cGUgaXMgcmVkZXNpZ25lZCBbRGFuaWVsXQogIFJldmlld2VkLWJ5IFVtYS4K ClNpZ25lZC1vZmYtYnk6IFJhbWFsaW5nYW0gQyA8cmFtYWxpbmdhbS5jQGludGVsLmNvbT4KUmV2 aWV3ZWQtYnk6IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAZmZ3bGwuY2g+ClJldmlld2Vk LWJ5OiBVbWEgU2hhbmthciA8dW1hLnNoYW5rYXJAaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rydi5oICB8ICAzNCArKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9oZGNwLmMgfCAxOTcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKyst LS0KIDIgZmlsZXMgY2hhbmdlZCwgMjE2IGluc2VydGlvbnMoKyksIDE1IGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKaW5kZXggYzA2OTRmYzYzZWE2Li4xNWQxNDhiNGRiNDEg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCkBAIC00MDMsNiArNDAzLDIyIEBAIHN0cnVjdCBp bnRlbF9oZGNwX3NoaW0gewogCS8qIERldGVjdHMgd2hldGhlciBzaW5rIGlzIEhEQ1AyLjIgY2Fw YWJsZSAqLwogCWludCAoKmhkY3BfMl8yX2NhcGFibGUpKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3Bv cnQgKmludGVsX2RpZ19wb3J0LAogCQkJCWJvb2wgKmNhcGFibGUpOworCisJLyogV3JpdGUgSERD UDIuMiBtZXNzYWdlcyAqLworCWludCAoKndyaXRlXzJfMl9tc2cpKHN0cnVjdCBpbnRlbF9kaWdp dGFsX3BvcnQgKmludGVsX2RpZ19wb3J0LAorCQkJICAgICB2b2lkICpidWYsIHNpemVfdCBzaXpl KTsKKworCS8qIFJlYWQgSERDUDIuMiBtZXNzYWdlcyAqLworCWludCAoKnJlYWRfMl8yX21zZyko c3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQsCisJCQkgICAgdTggbXNn X2lkLCB2b2lkICpidWYsIHNpemVfdCBzaXplKTsKKworCS8qCisJICogSW1wbGVtZW50YXRpb24g b2YgRFAgSERDUDIuMiBFcnJhdGEgZm9yIHRoZSBjb21tdW5pY2F0aW9uIG9mIHN0cmVhbQorCSAq IHR5cGUgdG8gUmVjZWl2ZXJzLiBJbiBEUCBIRENQMi4yIFN0cmVhbSB0eXBlIGlzIG9uZSBvZiB0 aGUgaW5wdXQgdG8KKwkgKiB0aGUgSERDUDIuMiBDaXBoZXIgZm9yIEVuL0RlLUNyeXB0aW9uLiBO b3QgYXBwbGljYWJsZSBmb3IgSERNSS4KKwkgKi8KKwlpbnQgKCpjb25maWdfc3RyZWFtX3R5cGUp KHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0LAorCQkJCSAgYm9vbCBp c19yZXBlYXRlciwgdTggdHlwZSk7CiB9OwogCiBzdHJ1Y3QgaW50ZWxfaGRjcCB7CkBAIC00MzAs NiArNDQ2LDI0IEBAIHN0cnVjdCBpbnRlbF9oZGNwIHsKIAkgKi8KIAl1OCBjb250ZW50X3R5cGU7 CiAJc3RydWN0IGhkY3BfcG9ydF9kYXRhIHBvcnRfZGF0YTsKKworCWJvb2wgaXNfcGFpcmVkOwor CWJvb2wgaXNfcmVwZWF0ZXI7CisKKwkvKgorCSAqIENvdW50IG9mIFJlY2VpdmVySURfTGlzdCBy ZWNlaXZlZC4gSW5pdGlhbGl6ZWQgdG8gMCBhdCBBS0VfSU5JVC4KKwkgKiBJbmNyZW1lbnRlZCBh ZnRlciBwcm9jZXNzaW5nIHRoZSBSZXBlYXRlckF1dGhfU2VuZF9SZWNlaXZlcklEX0xpc3QuCisJ ICogV2hlbiBpdCByb2xscyBvdmVyIHJlLWF1dGggaGFzIHRvIGJlIHRyaWdnZXJlZC4KKwkgKi8K Kwl1MzIgc2VxX251bV92OworCisJLyoKKwkgKiBDb3VudCBvZiBSZXBlYXRlckF1dGhfU3RyZWFt X01hbmFnZSBtc2cgcHJvcGFnYXRlZC4KKwkgKiBJbml0aWFsaXplZCB0byAwIG9uIEFLRV9JTklU LiBJbmNyZW1lbnRlZCBhZnRlciBldmVyeSBzdWNjZXNzZnVsCisJICogdHJhbnNtaXNzaW9uIG9m IFJlcGVhdGVyQXV0aF9TdHJlYW1fTWFuYWdlIG1lc3NhZ2UuIFdoZW4gaXQgcm9sbHMKKwkgKiBv dmVyIHJlLUF1dGggaGFzIHRvIGJlIHRyaWdnZXJlZC4KKwkgKi8KKwl1MzIgc2VxX251bV9tOwog fTsKIAogc3RydWN0IGludGVsX2Nvbm5lY3RvciB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9oZGNwLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZGNwLmMK aW5kZXggMGI2Y2NiM2QyNGZlLi5kNjNmNjIwNTgxYWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2hkY3AuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9o ZGNwLmMKQEAgLTE3LDYgKzE3LDcgQEAKIAogI2RlZmluZSBLRVlfTE9BRF9UUklFUwk1CiAjZGVm aW5lIEVOQ1JZUFRfU1RBVFVTX0NIQU5HRV9USU1FT1VUX01TCTUwCisjZGVmaW5lIEhEQ1AyX0xD X1JFVFJZX0NOVAkJCTMKIAogc3RhdGljCiBib29sIGludGVsX2hkY3BfaXNfa3N2X3ZhbGlkKHU4 ICprc3YpCkBAIC04NjIsNyArODYzLDcgQEAgYm9vbCBpc19oZGNwX3N1cHBvcnRlZChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGVudW0gcG9ydCBwb3J0KQogCXJldHVybiBJTlRF TF9HRU4oZGV2X3ByaXYpID49IDkgJiYgcG9ydCA8IFBPUlRfRTsKIH0KIAotc3RhdGljIF9fYXR0 cmlidXRlX18oKHVudXNlZCkpIGludAorc3RhdGljIGludAogaGRjcDJfcHJlcGFyZV9ha2VfaW5p dChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IsCiAJCSAgICAgICBzdHJ1Y3QgaGRj cDJfYWtlX2luaXQgKmFrZV9kYXRhKQogewpAQCAtODg3LDcgKzg4OCw3IEBAIGhkY3AyX3ByZXBh cmVfYWtlX2luaXQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLAogCXJldHVybiBy ZXQ7CiB9CiAKLXN0YXRpYyBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSBpbnQKK3N0YXRpYyBpbnQK IGhkY3AyX3ZlcmlmeV9yeF9jZXJ0X3ByZXBhcmVfa20oc3RydWN0IGludGVsX2Nvbm5lY3RvciAq Y29ubmVjdG9yLAogCQkJCXN0cnVjdCBoZGNwMl9ha2Vfc2VuZF9jZXJ0ICpyeF9jZXJ0LAogCQkJ CWJvb2wgKnBhaXJlZCwKQEAgLTkxNyw5ICs5MTgsOCBAQCBoZGNwMl92ZXJpZnlfcnhfY2VydF9w cmVwYXJlX2ttKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwKIAlyZXR1cm4gcmV0 OwogfQogCi1zdGF0aWMgX19hdHRyaWJ1dGVfXygodW51c2VkKSkgaW50Ci1oZGNwMl92ZXJpZnlf aHByaW1lKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwKLQkJICAgIHN0cnVjdCBo ZGNwMl9ha2Vfc2VuZF9ocHJpbWUgKnJ4X2hwcmltZSkKK3N0YXRpYyBpbnQgaGRjcDJfdmVyaWZ5 X2hwcmltZShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IsCisJCQkgICAgICAgc3Ry dWN0IGhkY3AyX2FrZV9zZW5kX2hwcmltZSAqcnhfaHByaW1lKQogewogCXN0cnVjdCBoZGNwX3Bv cnRfZGF0YSAqZGF0YSA9ICZjb25uZWN0b3ItPmhkY3AucG9ydF9kYXRhOwogCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY29ubmVjdG9yLT5iYXNlLmRldik7CkBA IC05NDIsNyArOTQyLDcgQEAgaGRjcDJfdmVyaWZ5X2hwcmltZShzdHJ1Y3QgaW50ZWxfY29ubmVj dG9yICpjb25uZWN0b3IsCiAJcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIF9fYXR0cmlidXRlX18o KHVudXNlZCkpIGludAorc3RhdGljIGludAogaGRjcDJfc3RvcmVfcGFpcmluZ19pbmZvKHN0cnVj dCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwKIAkJCSBzdHJ1Y3QgaGRjcDJfYWtlX3NlbmRf cGFpcmluZ19pbmZvICpwYWlyaW5nX2luZm8pCiB7CkBAIC05NjcsNyArOTY3LDcgQEAgaGRjcDJf c3RvcmVfcGFpcmluZ19pbmZvKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwKIAly ZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgX19hdHRyaWJ1dGVfXygodW51c2VkKSkgaW50CitzdGF0 aWMgaW50CiBoZGNwMl9wcmVwYXJlX2xjX2luaXQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29u bmVjdG9yLAogCQkgICAgICBzdHJ1Y3QgaGRjcDJfbGNfaW5pdCAqbGNfaW5pdCkKIHsKQEAgLTk5 Miw3ICs5OTIsNyBAQCBoZGNwMl9wcmVwYXJlX2xjX2luaXQoc3RydWN0IGludGVsX2Nvbm5lY3Rv ciAqY29ubmVjdG9yLAogCXJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyBfX2F0dHJpYnV0ZV9fKCh1 bnVzZWQpKSBpbnQKK3N0YXRpYyBpbnQKIGhkY3AyX3ZlcmlmeV9scHJpbWUoc3RydWN0IGludGVs X2Nvbm5lY3RvciAqY29ubmVjdG9yLAogCQkgICAgc3RydWN0IGhkY3AyX2xjX3NlbmRfbHByaW1l ICpyeF9scHJpbWUpCiB7CkBAIC0xMDE3LDkgKzEwMTcsOCBAQCBoZGNwMl92ZXJpZnlfbHByaW1l KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwKIAlyZXR1cm4gcmV0OwogfQogCi1z dGF0aWMgX19hdHRyaWJ1dGVfXygodW51c2VkKSkKLWludCBoZGNwMl9wcmVwYXJlX3NrZXkoc3Ry dWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLAotCQkgICAgICAgc3RydWN0IGhkY3AyX3Nr ZV9zZW5kX2VrcyAqc2tlX2RhdGEpCitzdGF0aWMgaW50IGhkY3AyX3ByZXBhcmVfc2tleShzdHJ1 Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IsCisJCQkgICAgICBzdHJ1Y3QgaGRjcDJfc2tl X3NlbmRfZWtzICpza2VfZGF0YSkKIHsKIAlzdHJ1Y3QgaGRjcF9wb3J0X2RhdGEgKmRhdGEgPSAm Y29ubmVjdG9yLT5oZGNwLnBvcnRfZGF0YTsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSB0b19pOTE1KGNvbm5lY3Rvci0+YmFzZS5kZXYpOwpAQCAtMTA5Niw4ICsxMDk1LDcg QEAgaGRjcDJfdmVyaWZ5X21wcmltZShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3Is CiAJcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIF9fYXR0cmlidXRlX18oKHVudXNlZCkpCi1pbnQg aGRjcDJfYXV0aGVudGljYXRlX3BvcnQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9y KQorc3RhdGljIGludCBoZGNwMl9hdXRoZW50aWNhdGVfcG9ydChzdHJ1Y3QgaW50ZWxfY29ubmVj dG9yICpjb25uZWN0b3IpCiB7CiAJc3RydWN0IGhkY3BfcG9ydF9kYXRhICpkYXRhID0gJmNvbm5l Y3Rvci0+aGRjcC5wb3J0X2RhdGE7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gdG9faTkxNShjb25uZWN0b3ItPmJhc2UuZGV2KTsKQEAgLTExNDYsMTEgKzExNDQsMTgwIEBA IHN0YXRpYyBpbnQgaGRjcDJfZGVhdXRoZW50aWNhdGVfcG9ydChzdHJ1Y3QgaW50ZWxfY29ubmVj dG9yICpjb25uZWN0b3IpCiAJcmV0dXJuIGhkY3AyX2Nsb3NlX21laV9zZXNzaW9uKGNvbm5lY3Rv cik7CiB9CiAKKy8qIEF1dGhlbnRpY2F0aW9uIGZsb3cgc3RhcnRzIGZyb20gaGVyZSAqLworc3Rh dGljIGludCBoZGNwMl9hdXRoZW50aWNhdGlvbl9rZXlfZXhjaGFuZ2Uoc3RydWN0IGludGVsX2Nv bm5lY3RvciAqY29ubmVjdG9yKQoreworCXN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVs X2RpZ19wb3J0ID0gY29ubl90b19kaWdfcG9ydChjb25uZWN0b3IpOworCXN0cnVjdCBpbnRlbF9o ZGNwICpoZGNwID0gJmNvbm5lY3Rvci0+aGRjcDsKKwl1bmlvbiB7CisJCXN0cnVjdCBoZGNwMl9h a2VfaW5pdCBha2VfaW5pdDsKKwkJc3RydWN0IGhkY3AyX2FrZV9zZW5kX2NlcnQgc2VuZF9jZXJ0 OworCQlzdHJ1Y3QgaGRjcDJfYWtlX25vX3N0b3JlZF9rbSBub19zdG9yZWRfa207CisJCXN0cnVj dCBoZGNwMl9ha2Vfc2VuZF9ocHJpbWUgc2VuZF9ocHJpbWU7CisJCXN0cnVjdCBoZGNwMl9ha2Vf c2VuZF9wYWlyaW5nX2luZm8gcGFpcmluZ19pbmZvOworCX0gbXNnczsKKwljb25zdCBzdHJ1Y3Qg aW50ZWxfaGRjcF9zaGltICpzaGltID0gaGRjcC0+c2hpbTsKKwlzaXplX3Qgc2l6ZTsKKwlpbnQg cmV0OworCisJLyogSW5pdCBmb3Igc2VxX251bSAqLworCWhkY3AtPnNlcV9udW1fdiA9IDA7CisJ aGRjcC0+c2VxX251bV9tID0gMDsKKworCXJldCA9IGhkY3AyX3ByZXBhcmVfYWtlX2luaXQoY29u bmVjdG9yLCAmbXNncy5ha2VfaW5pdCk7CisJaWYgKHJldCA8IDApCisJCXJldHVybiByZXQ7CisK KwlyZXQgPSBzaGltLT53cml0ZV8yXzJfbXNnKGludGVsX2RpZ19wb3J0LCAmbXNncy5ha2VfaW5p dCwKKwkJCQkgIHNpemVvZihtc2dzLmFrZV9pbml0KSk7CisJaWYgKHJldCA8IDApCisJCXJldHVy biByZXQ7CisKKwlyZXQgPSBzaGltLT5yZWFkXzJfMl9tc2coaW50ZWxfZGlnX3BvcnQsIEhEQ1Bf Ml8yX0FLRV9TRU5EX0NFUlQsCisJCQkJICZtc2dzLnNlbmRfY2VydCwgc2l6ZW9mKG1zZ3Muc2Vu ZF9jZXJ0KSk7CisJaWYgKHJldCA8IDApCisJCXJldHVybiByZXQ7CisKKwlpZiAobXNncy5zZW5k X2NlcnQucnhfY2Fwc1swXSAhPSBIRENQXzJfMl9SWF9DQVBTX1ZFUlNJT05fVkFMKQorCQlyZXR1 cm4gLUVJTlZBTDsKKworCWhkY3AtPmlzX3JlcGVhdGVyID0gSERDUF8yXzJfUlhfUkVQRUFURVIo bXNncy5zZW5kX2NlcnQucnhfY2Fwc1syXSk7CisKKwkvKgorCSAqIEhlcmUgbXNncy5ub19zdG9y ZWRfa20gd2lsbCBob2xkIG1zZ3MgY29ycmVzcG9uZGluZyB0byB0aGUga20KKwkgKiBzdG9yZWQg YWxzby4KKwkgKi8KKwlyZXQgPSBoZGNwMl92ZXJpZnlfcnhfY2VydF9wcmVwYXJlX2ttKGNvbm5l Y3RvciwgJm1zZ3Muc2VuZF9jZXJ0LAorCQkJCQkgICAgICAmaGRjcC0+aXNfcGFpcmVkLAorCQkJ CQkgICAgICAmbXNncy5ub19zdG9yZWRfa20sICZzaXplKTsKKwlpZiAocmV0IDwgMCkKKwkJcmV0 dXJuIHJldDsKKworCXJldCA9IHNoaW0tPndyaXRlXzJfMl9tc2coaW50ZWxfZGlnX3BvcnQsICZt c2dzLm5vX3N0b3JlZF9rbSwgc2l6ZSk7CisJaWYgKHJldCA8IDApCisJCXJldHVybiByZXQ7CisK KwlyZXQgPSBzaGltLT5yZWFkXzJfMl9tc2coaW50ZWxfZGlnX3BvcnQsIEhEQ1BfMl8yX0FLRV9T RU5EX0hQUklNRSwKKwkJCQkgJm1zZ3Muc2VuZF9ocHJpbWUsIHNpemVvZihtc2dzLnNlbmRfaHBy aW1lKSk7CisJaWYgKHJldCA8IDApCisJCXJldHVybiByZXQ7CisKKwlyZXQgPSBoZGNwMl92ZXJp ZnlfaHByaW1lKGNvbm5lY3RvciwgJm1zZ3Muc2VuZF9ocHJpbWUpOworCWlmIChyZXQgPCAwKQor CQlyZXR1cm4gcmV0OworCisJaWYgKCFoZGNwLT5pc19wYWlyZWQpIHsKKwkJLyogUGFpcmluZyBp cyByZXF1aXJlZCAqLworCQlyZXQgPSBzaGltLT5yZWFkXzJfMl9tc2coaW50ZWxfZGlnX3BvcnQs CisJCQkJCSBIRENQXzJfMl9BS0VfU0VORF9QQUlSSU5HX0lORk8sCisJCQkJCSAmbXNncy5wYWly aW5nX2luZm8sCisJCQkJCSBzaXplb2YobXNncy5wYWlyaW5nX2luZm8pKTsKKwkJaWYgKHJldCA8 IDApCisJCQlyZXR1cm4gcmV0OworCisJCXJldCA9IGhkY3AyX3N0b3JlX3BhaXJpbmdfaW5mbyhj b25uZWN0b3IsICZtc2dzLnBhaXJpbmdfaW5mbyk7CisJCWlmIChyZXQgPCAwKQorCQkJcmV0dXJu IHJldDsKKwkJaGRjcC0+aXNfcGFpcmVkID0gdHJ1ZTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKwor c3RhdGljIGludCBoZGNwMl9sb2NhbGl0eV9jaGVjayhzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpj b25uZWN0b3IpCit7CisJc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQg PSBjb25uX3RvX2RpZ19wb3J0KGNvbm5lY3Rvcik7CisJc3RydWN0IGludGVsX2hkY3AgKmhkY3Ag PSAmY29ubmVjdG9yLT5oZGNwOworCXVuaW9uIHsKKwkJc3RydWN0IGhkY3AyX2xjX2luaXQgbGNf aW5pdDsKKwkJc3RydWN0IGhkY3AyX2xjX3NlbmRfbHByaW1lIHNlbmRfbHByaW1lOworCX0gbXNn czsKKwljb25zdCBzdHJ1Y3QgaW50ZWxfaGRjcF9zaGltICpzaGltID0gaGRjcC0+c2hpbTsKKwlp bnQgdHJpZXMgPSBIRENQMl9MQ19SRVRSWV9DTlQsIHJldCwgaTsKKworCWZvciAoaSA9IDA7IGkg PCB0cmllczsgaSsrKSB7CisJCXJldCA9IGhkY3AyX3ByZXBhcmVfbGNfaW5pdChjb25uZWN0b3Is ICZtc2dzLmxjX2luaXQpOworCQlpZiAocmV0IDwgMCkKKwkJCWNvbnRpbnVlOworCisJCXJldCA9 IHNoaW0tPndyaXRlXzJfMl9tc2coaW50ZWxfZGlnX3BvcnQsICZtc2dzLmxjX2luaXQsCisJCQkJ ICAgICAgc2l6ZW9mKG1zZ3MubGNfaW5pdCkpOworCQlpZiAocmV0IDwgMCkKKwkJCWNvbnRpbnVl OworCisJCXJldCA9IHNoaW0tPnJlYWRfMl8yX21zZyhpbnRlbF9kaWdfcG9ydCwKKwkJCQkJIEhE Q1BfMl8yX0xDX1NFTkRfTFBSSU1FLAorCQkJCQkgJm1zZ3Muc2VuZF9scHJpbWUsCisJCQkJCSBz aXplb2YobXNncy5zZW5kX2xwcmltZSkpOworCQlpZiAocmV0IDwgMCkKKwkJCWNvbnRpbnVlOwor CisJCXJldCA9IGhkY3AyX3ZlcmlmeV9scHJpbWUoY29ubmVjdG9yLCAmbXNncy5zZW5kX2xwcmlt ZSk7CisJCWlmICghcmV0KQorCQkJYnJlYWs7CisJfQorCisJcmV0dXJuIHJldDsKK30KKworc3Rh dGljIGludCBoZGNwMl9zZXNzaW9uX2tleV9leGNoYW5nZShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9y ICpjb25uZWN0b3IpCit7CisJc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3Bv cnQgPSBjb25uX3RvX2RpZ19wb3J0KGNvbm5lY3Rvcik7CisJc3RydWN0IGludGVsX2hkY3AgKmhk Y3AgPSAmY29ubmVjdG9yLT5oZGNwOworCXN0cnVjdCBoZGNwMl9za2Vfc2VuZF9la3Mgc2VuZF9l a3M7CisJaW50IHJldDsKKworCXJldCA9IGhkY3AyX3ByZXBhcmVfc2tleShjb25uZWN0b3IsICZz ZW5kX2Vrcyk7CisJaWYgKHJldCA8IDApCisJCXJldHVybiByZXQ7CisKKwlyZXQgPSBoZGNwLT5z aGltLT53cml0ZV8yXzJfbXNnKGludGVsX2RpZ19wb3J0LCAmc2VuZF9la3MsCisJCQkJCXNpemVv ZihzZW5kX2VrcykpOworCWlmIChyZXQgPCAwKQorCQlyZXR1cm4gcmV0OworCisJcmV0dXJuIDA7 Cit9CisKIHN0YXRpYyBpbnQgaGRjcDJfYXV0aGVudGljYXRlX3Npbmsoc3RydWN0IGludGVsX2Nv bm5lY3RvciAqY29ubmVjdG9yKQogewotCURSTV9FUlJPUigiU2luayBhdXRoZW50aWNhdGlvbiBp cyBkb25lIGluIHN1YnNlcXVlbnQgcGF0Y2hlc1xuIik7CisJc3RydWN0IGludGVsX2RpZ2l0YWxf cG9ydCAqaW50ZWxfZGlnX3BvcnQgPSBjb25uX3RvX2RpZ19wb3J0KGNvbm5lY3Rvcik7CisJc3Ry dWN0IGludGVsX2hkY3AgKmhkY3AgPSAmY29ubmVjdG9yLT5oZGNwOworCWNvbnN0IHN0cnVjdCBp bnRlbF9oZGNwX3NoaW0gKnNoaW0gPSBoZGNwLT5zaGltOworCWludCByZXQ7CiAKLQlyZXR1cm4g LUVJTlZBTDsKKwlyZXQgPSBoZGNwMl9hdXRoZW50aWNhdGlvbl9rZXlfZXhjaGFuZ2UoY29ubmVj dG9yKTsKKwlpZiAocmV0IDwgMCkgeworCQlEUk1fREVCVUdfS01TKCJBS0UgRmFpbGVkLiBFcnIg OiAlZFxuIiwgcmV0KTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlyZXQgPSBoZGNwMl9sb2NhbGl0 eV9jaGVjayhjb25uZWN0b3IpOworCWlmIChyZXQgPCAwKSB7CisJCURSTV9ERUJVR19LTVMoIkxv Y2FsaXR5IENoZWNrIGZhaWxlZC4gRXJyIDogJWRcbiIsIHJldCk7CisJCXJldHVybiByZXQ7CisJ fQorCisJcmV0ID0gaGRjcDJfc2Vzc2lvbl9rZXlfZXhjaGFuZ2UoY29ubmVjdG9yKTsKKwlpZiAo cmV0IDwgMCkgeworCQlEUk1fREVCVUdfS01TKCJTS0UgRmFpbGVkLiBFcnIgOiAlZFxuIiwgcmV0 KTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlpZiAoc2hpbS0+Y29uZmlnX3N0cmVhbV90eXBlKSB7 CisJCXJldCA9IHNoaW0tPmNvbmZpZ19zdHJlYW1fdHlwZShpbnRlbF9kaWdfcG9ydCwKKwkJCQkJ ICAgICAgIGhkY3AtPmlzX3JlcGVhdGVyLAorCQkJCQkgICAgICAgaGRjcC0+Y29udGVudF90eXBl KTsKKwkJaWYgKHJldCA8IDApCisJCQlyZXR1cm4gcmV0OworCX0KKworCWhkY3AtPnBvcnRfZGF0 YS5zdHJlYW1zWzBdLnN0cmVhbV90eXBlID0gaGRjcC0+Y29udGVudF90eXBlOworCXJldCA9IGhk Y3AyX2F1dGhlbnRpY2F0ZV9wb3J0KGNvbm5lY3Rvcik7CisJaWYgKHJldCA8IDApCisJCXJldHVy biByZXQ7CisKKwlyZXR1cm4gcmV0OwogfQogCiBzdGF0aWMgaW50IGhkY3AyX2VuYWJsZV9lbmNy eXB0aW9uKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKLS0gCjIuNy40CgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFp bGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK