From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ramalingam C Subject: [PATCH v9 16/39] drm/i915: Implement the HDCP2.2 support for DP Date: Thu, 13 Dec 2018 09:31:18 +0530 Message-ID: <1544673701-6353-17-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 SW1wbGVtZW50cyB0aGUgRFAgYWRhcHRhdGlvbiBzcGVjaWZpYyBIRENQMi4yIGZ1bmN0aW9ucy4K ClRoZXNlIGZ1bmN0aW9ucyBwZXJmb3JtIHRoZSBEUENEIHJlYWQgYW5kIHdyaXRlIGZvciBjb21t dW5pY2F0aW5nIHRoZQpIRENQMi4yIGF1dGggbWVzc2FnZSBiYWNrIGFuZCBmb3J0aC4KCnYyOgog IHdhaXQgZm9yIGNwX2lycSBpcyBtZXJnZWQgd2l0aCB0aGlzIHBhdGNoLiBSZWJhc2VkLgp2MzoK ICB3YWl0X3F1ZXVlIGlzIHVzZWQgZm9yIHdhaXQgZm9yIGNwX2lycSBbQ2hyaXMgV2lsc29uXQp2 NDoKICBTdHlsZSBmaXhlZC4KICAlcy9QQVJJTkcvUEFJUklORwogIEZldyBzdHlsZSBmaXhlcyBb VW1hXQp2NToKICBMb29rdXAgdGFibGUgZm9yIERQIEhEQ1AyLjIgbXNnIGRldGFpbHMgW0Rhbmll bF0uCiAgRXh0cmEgbGluZXMgYXJlIHJlbW92ZWQuCnY2OiBSZWJhc2VkLgp2NzoKICBGaXhlZCBz b21lIHJlZ3Jlc3Npb24gaW50cm9kdWNlZCBhdCB2NS4gW0Fua2l0XQogIE1hY3JvIEhEQ1BfMl8y X1JYX0NBUFNfVkVSU0lPTl9WQUwgaXMgcmV1c2VkIFtVbWFdCiAgQ29udmVydGVkIGEgZnVuY3Rp b24gdG8gaW5saW5lIFtVbWFdCiAgJXMvdWludHh4X3QvdXh4CnY4OgogIEVycm9yIGR1ZSB0byB0 aGUgc2lua3MgYXJlIHJlcG9ydGVkIGFzIERFQlVHIGxvZ3MuCiAgQWRqdXN0IHRvIHRoZSBuZXcg bWVpIGludGVyZmFjZS4Kdjk6CiAgQVJSQVlfU0laRSBmb3Igbm8gb2YgYXJyYXkgbWVtYmVycyBb Sm9uICYgRGFuaWVsXQogIHJldHVybiBvZiB0aGUgd2FpdF9mb3JfY3BfaXJxIGlzIG1hZGUgYXMg dm9pZCBbRGFuaWVsXQogIFdhaXQgZm9yIEhEQ1AyLjIgbXNnIGlzIGRvbmUgYmFzZWQgb24gcG9s bGluZyB0aGUgcmVnIGJpdCB0aGFuCiAgICBDUF9JUlEgYmFzZWQuIFtEYW5pZWxdCiAgaGRjcCBh ZGFwdGF0aW9uIGlzIGFkZGVkIGFzIGEgY29uc3QgaW4gdGhlIGhkY3Bfc2hpbSBbRGFuaWVsXQoK U2lnbmVkLW9mZi1ieTogUmFtYWxpbmdhbSBDIDxyYW1hbGluZ2FtLmNAaW50ZWwuY29tPgpTaWdu ZWQtb2ZmLWJ5OiBBbmtpdCBLIE5hdXRpeWFsIDxhbmtpdC5rLm5hdXRpeWFsQGludGVsLmNvbT4K UmV2aWV3ZWQtYnk6IFVtYSBTaGFua2FyIDx1bWEuc2hhbmthckBpbnRlbC5jb20+Ci0tLQogZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyB8IDMxMCArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrCiAxIGZpbGUgY2hhbmdlZCwgMzEwIGluc2VydGlvbnMoKykKCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHAuYwppbmRleCA4OTMxNWUxNWZiMzQuLmE4YWNlN2Q4NTkxOCAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcC5jCkBAIC01Nzk3LDYgKzU3OTcsMzEwIEBAIGludCBpbnRlbF9k cF9oZGNwX2NhcGFibGUoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQs CiAJcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBzdHJ1Y3QgaGRjcDJfZHBfbXNnX2RhdGEgeworCXU4 IG1zZ19pZDsKKwl1MzIgb2Zmc2V0OworCWJvb2wgbXNnX2RldGVjdGFibGU7CisJdTMyIHRpbWVv dXQ7CisJdTMyIHRpbWVvdXQyOyAvKiBBZGRlZCBmb3Igbm9uX3BhaXJlZCBzaXR1YXRpb24gKi8K Kwl9IGhkY3AyX21zZ19kYXRhW10gPSB7CisJCXtIRENQXzJfMl9BS0VfSU5JVCwgRFBfSERDUF8y XzJfQUtFX0lOSVRfT0ZGU0VULCBmYWxzZSwgMCwgMH0sCisJCXtIRENQXzJfMl9BS0VfU0VORF9D RVJULCBEUF9IRENQXzJfMl9BS0VfU0VORF9DRVJUX09GRlNFVCwKKwkJCQlmYWxzZSwgSERDUF8y XzJfQ0VSVF9USU1FT1VUX01TLCAwfSwKKwkJe0hEQ1BfMl8yX0FLRV9OT19TVE9SRURfS00sIERQ X0hEQ1BfMl8yX0FLRV9OT19TVE9SRURfS01fT0ZGU0VULAorCQkJCWZhbHNlLCAwLCAwfSwKKwkJ e0hEQ1BfMl8yX0FLRV9TVE9SRURfS00sIERQX0hEQ1BfMl8yX0FLRV9TVE9SRURfS01fT0ZGU0VU LAorCQkJCWZhbHNlLCAwLCAwfSwKKwkJe0hEQ1BfMl8yX0FLRV9TRU5EX0hQUklNRSwgRFBfSERD UF8yXzJfQUtFX1NFTkRfSFBSSU1FX09GRlNFVCwKKwkJCQl0cnVlLCBIRENQXzJfMl9IUFJJTUVf UEFJUkVEX1RJTUVPVVRfTVMsCisJCQkJSERDUF8yXzJfSFBSSU1FX05PX1BBSVJFRF9USU1FT1VU X01TfSwKKwkJe0hEQ1BfMl8yX0FLRV9TRU5EX1BBSVJJTkdfSU5GTywKKwkJCQlEUF9IRENQXzJf Ml9BS0VfU0VORF9QQUlSSU5HX0lORk9fT0ZGU0VULCB0cnVlLAorCQkJCUhEQ1BfMl8yX1BBSVJJ TkdfVElNRU9VVF9NUywgMH0sCisJCXtIRENQXzJfMl9MQ19JTklULCBEUF9IRENQXzJfMl9MQ19J TklUX09GRlNFVCwgZmFsc2UsIDAsIDB9LAorCQl7SERDUF8yXzJfTENfU0VORF9MUFJJTUUsIERQ X0hEQ1BfMl8yX0xDX1NFTkRfTFBSSU1FX09GRlNFVCwKKwkJCQlmYWxzZSwgSERDUF8yXzJfRFBf TFBSSU1FX1RJTUVPVVRfTVMsIDB9LAorCQl7SERDUF8yXzJfU0tFX1NFTkRfRUtTLCBEUF9IRENQ XzJfMl9TS0VfU0VORF9FS1NfT0ZGU0VULCBmYWxzZSwKKwkJCQkwLCAwfSwKKwkJe0hEQ1BfMl8y X1JFUF9TRU5EX1JFQ1ZJRF9MSVNULAorCQkJCURQX0hEQ1BfMl8yX1JFUF9TRU5EX1JFQ1ZJRF9M SVNUX09GRlNFVCwgdHJ1ZSwKKwkJCQlIRENQXzJfMl9SRUNWSURfTElTVF9USU1FT1VUX01TLCAw fSwKKwkJe0hEQ1BfMl8yX1JFUF9TRU5EX0FDSywgRFBfSERDUF8yXzJfUkVQX1NFTkRfQUNLX09G RlNFVCwgZmFsc2UsCisJCQkJMCwgMH0sCisJCXtIRENQXzJfMl9SRVBfU1RSRUFNX01BTkFHRSwK KwkJCQlEUF9IRENQXzJfMl9SRVBfU1RSRUFNX01BTkFHRV9PRkZTRVQsIGZhbHNlLAorCQkJCTAs IDB9LAorCQl7SERDUF8yXzJfUkVQX1NUUkVBTV9SRUFEWSwgRFBfSERDUF8yXzJfUkVQX1NUUkVB TV9SRUFEWV9PRkZTRVQsCisJCQkJZmFsc2UsIEhEQ1BfMl8yX1NUUkVBTV9SRUFEWV9USU1FT1VU X01TLCAwfSwKKwkJe0hEQ1BfMl8yX0VSUkFUQV9EUF9TVFJFQU1fVFlQRSwKKwkJCQlEUF9IRENQ XzJfMl9SRUdfU1RSRUFNX1RZUEVfT0ZGU0VULCBmYWxzZSwKKwkJCQkwLCAwfSwKKwkJfTsKKwor c3RhdGljIGlubGluZQoraW50IGludGVsX2RwX2hkY3AyX3JlYWRfcnhfc3RhdHVzKHN0cnVjdCBp bnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0LAorCQkJCSAgdTggKnJ4X3N0YXR1cykK K3sKKwlzc2l6ZV90IHJldDsKKworCXJldCA9IGRybV9kcF9kcGNkX3JlYWQoJmludGVsX2RpZ19w b3J0LT5kcC5hdXgsCisJCQkgICAgICAgRFBfSERDUF8yXzJfUkVHX1JYU1RBVFVTX09GRlNFVCwg cnhfc3RhdHVzLAorCQkJICAgICAgIEhEQ1BfMl8yX0RQX1JYU1RBVFVTX0xFTik7CisJaWYgKHJl dCAhPSBIRENQXzJfMl9EUF9SWFNUQVRVU19MRU4pIHsKKwkJRFJNX0RFQlVHX0tNUygiUmVhZCBi c3RhdHVzIGZyb20gRFAvQVVYIGZhaWxlZCAoJXpkKVxuIiwgcmV0KTsKKwkJcmV0dXJuIHJldCA+ PSAwID8gLUVJTyA6IHJldDsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljCitpbnQgaGRj cDJfZGV0ZWN0X21zZ19hdmFpbGFiaWxpdHkoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50 ZWxfZGlnX3BvcnQsCisJCQkJICB1OCBtc2dfaWQsIGJvb2wgKm1zZ19yZWFkeSkKK3sKKwl1OCBy eF9zdGF0dXM7CisJaW50IHJldDsKKworCSptc2dfcmVhZHkgPSBmYWxzZTsKKwlyZXQgPSBpbnRl bF9kcF9oZGNwMl9yZWFkX3J4X3N0YXR1cyhpbnRlbF9kaWdfcG9ydCwgJnJ4X3N0YXR1cyk7CisJ aWYgKHJldCA8IDApCisJCXJldHVybiByZXQ7CisKKwlzd2l0Y2ggKG1zZ19pZCkgeworCWNhc2Ug SERDUF8yXzJfQUtFX1NFTkRfSFBSSU1FOgorCQlpZiAoSERDUF8yXzJfRFBfUlhTVEFUVVNfSF9Q UklNRShyeF9zdGF0dXMpKQorCQkJKm1zZ19yZWFkeSA9IHRydWU7CisJCWJyZWFrOworCWNhc2Ug SERDUF8yXzJfQUtFX1NFTkRfUEFJUklOR19JTkZPOgorCQlpZiAoSERDUF8yXzJfRFBfUlhTVEFU VVNfUEFJUklORyhyeF9zdGF0dXMpKQorCQkJKm1zZ19yZWFkeSA9IHRydWU7CisJCWJyZWFrOwor CWNhc2UgSERDUF8yXzJfUkVQX1NFTkRfUkVDVklEX0xJU1Q6CisJCWlmIChIRENQXzJfMl9EUF9S WFNUQVRVU19SRUFEWShyeF9zdGF0dXMpKQorCQkJKm1zZ19yZWFkeSA9IHRydWU7CisJCWJyZWFr OworCWRlZmF1bHQ6CisJCURSTV9FUlJPUigiVW5pZGVudGlmaWVkIG1zZ19pZDogJWRcbiIsIG1z Z19pZCk7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMg c3NpemVfdAoraW50ZWxfZHBfaGRjcDJfd2FpdF9mb3JfbXNnKHN0cnVjdCBpbnRlbF9kaWdpdGFs X3BvcnQgKmludGVsX2RpZ19wb3J0LAorCQkJICAgIHN0cnVjdCBoZGNwMl9kcF9tc2dfZGF0YSAq aGRjcDJfbXNnX2RhdGEpCit7CisJc3RydWN0IGludGVsX2RwICpkcCA9ICZpbnRlbF9kaWdfcG9y dC0+ZHA7CisJc3RydWN0IGludGVsX2hkY3AgKmhkY3AgPSAmZHAtPmF0dGFjaGVkX2Nvbm5lY3Rv ci0+aGRjcDsKKwl1OCBtc2dfaWQgPSBoZGNwMl9tc2dfZGF0YS0+bXNnX2lkOworCWludCByZXQs IHRpbWVvdXQ7CisJYm9vbCBtc2dfcmVhZHkgPSBmYWxzZTsKKworCWlmIChtc2dfaWQgPT0gSERD UF8yXzJfQUtFX1NFTkRfSFBSSU1FICYmICFoZGNwLT5pc19wYWlyZWQpCisJCXRpbWVvdXQgPSBo ZGNwMl9tc2dfZGF0YS0+dGltZW91dDI7CisJZWxzZQorCQl0aW1lb3V0ID0gaGRjcDJfbXNnX2Rh dGEtPnRpbWVvdXQ7CisKKwkvKgorCSAqIFRoZXJlIGlzIG5vIHdheSB0byBkZXRlY3QgdGhlIENF UlQsIExQUklNRSBhbmQgU1RSRUFNX1JFQURZCisJICogYXZhaWxhYmlsaXR5LiBTbyBXYWl0IGZv ciB0aW1lb3V0IGFuZCByZWFkIHRoZSBtc2cuCisJICovCisJaWYgKCFoZGNwMl9tc2dfZGF0YS0+ bXNnX2RldGVjdGFibGUpIHsKKwkJbWRlbGF5KHRpbWVvdXQpOworCQlyZXQgPSAwOworCX0gZWxz ZSB7CisJCS8qIFRPRE86IEluIGNhc2UgaWYgeW91IG5lZWQgdG8gd2FpdCBvbiBDUF9JUlEsIGRv IGl0IGhlcmUgKi8KKwkJcmV0ID0gX193YWl0X2ZvcihyZXQgPQorCQkJCSBoZGNwMl9kZXRlY3Rf bXNnX2F2YWlsYWJpbGl0eShpbnRlbF9kaWdfcG9ydCwKKwkJCQkJCQkgICAgICAgbXNnX2lkLAor CQkJCQkJCSAgICAgICAmbXNnX3JlYWR5KSwKKwkJCQkgIXJldCAmJiBtc2dfcmVhZHksIHRpbWVv dXQgKiAxMDAwLAorCQkJCSAxMDAwLCA1ICogMTAwMCk7CisKKwkJaWYgKCFtc2dfcmVhZHkpCisJ CQlyZXQgPSAtRVRJTUVET1VUOworCX0KKworCWlmIChyZXQpCisJCURSTV9ERUJVR19LTVMoIm1z Z19pZCAlZCwgcmV0ICVkLCB0aW1lb3V0KG1TZWMpOiAlZFxuIiwKKwkJCSAgICAgIGhkY3AyX21z Z19kYXRhLT5tc2dfaWQsIHJldCwgdGltZW91dCk7CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0 aWMgc3RydWN0IGhkY3AyX2RwX21zZ19kYXRhICpnZXRfaGRjcDJfZHBfbXNnX2RhdGEodTggbXNn X2lkKQoreworCWludCBpOworCisJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoaGRjcDJfbXNn X2RhdGEpOyBpKyspCisJCWlmIChoZGNwMl9tc2dfZGF0YVtpXS5tc2dfaWQgPT0gbXNnX2lkKQor CQkJcmV0dXJuICZoZGNwMl9tc2dfZGF0YVtpXTsKKworCXJldHVybiBOVUxMOworfQorCitzdGF0 aWMKK2ludCBpbnRlbF9kcF9oZGNwMl93cml0ZV9tc2coc3RydWN0IGludGVsX2RpZ2l0YWxfcG9y dCAqaW50ZWxfZGlnX3BvcnQsCisJCQkgICAgIHZvaWQgKmJ1Ziwgc2l6ZV90IHNpemUpCit7CisJ dW5zaWduZWQgaW50IG9mZnNldDsKKwl1OCAqYnl0ZSA9IGJ1ZjsKKwlzc2l6ZV90IHJldCwgYnl0 ZXNfdG9fd3JpdGUsIGxlbjsKKwlzdHJ1Y3QgaGRjcDJfZHBfbXNnX2RhdGEgKmhkY3AyX21zZ19k YXRhOworCisJaGRjcDJfbXNnX2RhdGEgPSBnZXRfaGRjcDJfZHBfbXNnX2RhdGEoKmJ5dGUpOwor CWlmICghaGRjcDJfbXNnX2RhdGEpCisJCXJldHVybiAtRUlOVkFMOworCisJb2Zmc2V0ID0gaGRj cDJfbXNnX2RhdGEtPm9mZnNldDsKKworCS8qIE5vIG1zZ19pZCBpbiBEUCBIRENQMi4yIG1zZ3Mg Ki8KKwlieXRlc190b193cml0ZSA9IHNpemUgLSAxOworCWJ5dGUrKzsKKworCXdoaWxlIChieXRl c190b193cml0ZSkgeworCQlsZW4gPSBieXRlc190b193cml0ZSA+IERQX0FVWF9NQVhfUEFZTE9B RF9CWVRFUyA/CisJCQkJRFBfQVVYX01BWF9QQVlMT0FEX0JZVEVTIDogYnl0ZXNfdG9fd3JpdGU7 CisKKwkJcmV0ID0gZHJtX2RwX2RwY2Rfd3JpdGUoJmludGVsX2RpZ19wb3J0LT5kcC5hdXgsCisJ CQkJCW9mZnNldCwgKHZvaWQgKilieXRlLCBsZW4pOworCQlpZiAocmV0IDwgMCkKKwkJCXJldHVy biByZXQ7CisKKwkJYnl0ZXNfdG9fd3JpdGUgLT0gcmV0OworCQlieXRlICs9IHJldDsKKwkJb2Zm c2V0ICs9IHJldDsKKwl9CisKKwlyZXR1cm4gc2l6ZTsKK30KKworc3RhdGljCitzc2l6ZV90IGdl dF9yZWNlaXZlcl9pZF9saXN0X3NpemUoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxf ZGlnX3BvcnQpCit7CisJdTggcnhfaW5mb1tIRENQXzJfMl9SWElORk9fTEVOXTsKKwl1MzIgZGV2 X2NudDsKKwlzc2l6ZV90IHJldDsKKworCXJldCA9IGRybV9kcF9kcGNkX3JlYWQoJmludGVsX2Rp Z19wb3J0LT5kcC5hdXgsCisJCQkgICAgICAgRFBfSERDUF8yXzJfUkVHX1JYSU5GT19PRkZTRVQs CisJCQkgICAgICAgKHZvaWQgKilyeF9pbmZvLCBIRENQXzJfMl9SWElORk9fTEVOKTsKKwlpZiAo cmV0ICE9IEhEQ1BfMl8yX1JYSU5GT19MRU4pCisJCXJldHVybiByZXQgPj0gMCA/IC1FSU8gOiBy ZXQ7CisKKwlkZXZfY250ID0gKEhEQ1BfMl8yX0RFVl9DT1VOVF9ISShyeF9pbmZvWzBdKSA8PCA0 IHwKKwkJICAgSERDUF8yXzJfREVWX0NPVU5UX0xPKHJ4X2luZm9bMV0pKTsKKworCWlmIChkZXZf Y250ID4gSERDUF8yXzJfTUFYX0RFVklDRV9DT1VOVCkKKwkJZGV2X2NudCA9IEhEQ1BfMl8yX01B WF9ERVZJQ0VfQ09VTlQ7CisKKwlyZXQgPSBzaXplb2Yoc3RydWN0IGhkY3AyX3JlcF9zZW5kX3Jl Y2VpdmVyaWRfbGlzdCkgLQorCQlIRENQXzJfMl9SRUNFSVZFUl9JRFNfTUFYX0xFTiArCisJCShk ZXZfY250ICogSERDUF8yXzJfUkVDRUlWRVJfSURfTEVOKTsKKworCXJldHVybiByZXQ7Cit9CisK K3N0YXRpYworaW50IGludGVsX2RwX2hkY3AyX3JlYWRfbXNnKHN0cnVjdCBpbnRlbF9kaWdpdGFs X3BvcnQgKmludGVsX2RpZ19wb3J0LAorCQkJICAgIHU4IG1zZ19pZCwgdm9pZCAqYnVmLCBzaXpl X3Qgc2l6ZSkKK3sKKwl1bnNpZ25lZCBpbnQgb2Zmc2V0OworCXU4ICpieXRlID0gYnVmOworCXNz aXplX3QgcmV0LCBieXRlc190b19yZWN2LCBsZW47CisJc3RydWN0IGhkY3AyX2RwX21zZ19kYXRh ICpoZGNwMl9tc2dfZGF0YTsKKworCWhkY3AyX21zZ19kYXRhID0gZ2V0X2hkY3AyX2RwX21zZ19k YXRhKG1zZ19pZCk7CisJaWYgKCFoZGNwMl9tc2dfZGF0YSkKKwkJcmV0dXJuIC1FSU5WQUw7CisJ b2Zmc2V0ID0gaGRjcDJfbXNnX2RhdGEtPm9mZnNldDsKKworCXJldCA9IGludGVsX2RwX2hkY3Ay X3dhaXRfZm9yX21zZyhpbnRlbF9kaWdfcG9ydCwgaGRjcDJfbXNnX2RhdGEpOworCWlmIChyZXQg PCAwKQorCQlyZXR1cm4gcmV0OworCisJaWYgKG1zZ19pZCA9PSBIRENQXzJfMl9SRVBfU0VORF9S RUNWSURfTElTVCkgeworCQlyZXQgPSBnZXRfcmVjZWl2ZXJfaWRfbGlzdF9zaXplKGludGVsX2Rp Z19wb3J0KTsKKwkJaWYgKHJldCA8IDApCisJCQlyZXR1cm4gcmV0OworCisJCXNpemUgPSByZXQ7 CisJfQorCWJ5dGVzX3RvX3JlY3YgPSBzaXplIC0gMTsKKworCS8qIERQIGFkYXB0YXRpb24gbXNn cyBoYXMgbm8gbXNnX2lkICovCisJYnl0ZSsrOworCisJd2hpbGUgKGJ5dGVzX3RvX3JlY3YpIHsK KwkJbGVuID0gYnl0ZXNfdG9fcmVjdiA+IERQX0FVWF9NQVhfUEFZTE9BRF9CWVRFUyA/CisJCSAg ICAgIERQX0FVWF9NQVhfUEFZTE9BRF9CWVRFUyA6IGJ5dGVzX3RvX3JlY3Y7CisKKwkJcmV0ID0g ZHJtX2RwX2RwY2RfcmVhZCgmaW50ZWxfZGlnX3BvcnQtPmRwLmF1eCwgb2Zmc2V0LAorCQkJCSAg ICAgICAodm9pZCAqKWJ5dGUsIGxlbik7CisJCWlmIChyZXQgPCAwKSB7CisJCQlEUk1fREVCVUdf S01TKCJtc2dfaWQgJWQsIHJldCAlemRcbiIsIG1zZ19pZCwgcmV0KTsKKwkJCXJldHVybiByZXQ7 CisJCX0KKworCQlieXRlc190b19yZWN2IC09IHJldDsKKwkJYnl0ZSArPSByZXQ7CisJCW9mZnNl dCArPSByZXQ7CisJfQorCWJ5dGUgPSBidWY7CisJKmJ5dGUgPSBtc2dfaWQ7CisKKwlyZXR1cm4g c2l6ZTsKK30KKworc3RhdGljCitpbnQgaW50ZWxfZHBfaGRjcDJfY29uZmlnX3N0cmVhbV90eXBl KHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0LAorCQkJCSAgICAgIHZv aWQgKmJ1Ziwgc2l6ZV90IHNpemUpCit7CisJcmV0dXJuIGludGVsX2RwX2hkY3AyX3dyaXRlX21z ZyhpbnRlbF9kaWdfcG9ydCwgYnVmLCBzaXplKTsKK30KKworc3RhdGljCitpbnQgaW50ZWxfZHBf aGRjcDJfY2hlY2tfbGluayhzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9y dCkKK3sKKwl1OCByeF9zdGF0dXM7CisJaW50IHJldDsKKworCXJldCA9IGludGVsX2RwX2hkY3Ay X3JlYWRfcnhfc3RhdHVzKGludGVsX2RpZ19wb3J0LCAmcnhfc3RhdHVzKTsKKwlpZiAocmV0KQor CQlyZXR1cm4gcmV0OworCisJaWYgKEhEQ1BfMl8yX0RQX1JYU1RBVFVTX1JFQVVUSF9SRVEocnhf c3RhdHVzKSkKKwkJcmV0ID0gRFJNX0hEQ1BfUkVBVVRIX1JFUVVFU1Q7CisJZWxzZSBpZiAoSERD UF8yXzJfRFBfUlhTVEFUVVNfTElOS19GQUlMRUQocnhfc3RhdHVzKSkKKwkJcmV0ID0gRFJNX0hE Q1BfTElOS19JTlRFR1JJVFlfRkFJTFVSRTsKKwllbHNlIGlmIChIRENQXzJfMl9EUF9SWFNUQVRV U19SRUFEWShyeF9zdGF0dXMpKQorCQlyZXQgPSBEUk1fSERDUF9UT1BPTE9HWV9DSEFOR0U7CisK KwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMKK2ludCBpbnRlbF9kcF9oZGNwMl9jYXBhYmxlKHN0 cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0LAorCQkJICAgYm9vbCAqY2Fw YWJsZSkKK3sKKwl1OCByeF9jYXBzWzNdOworCWludCByZXQ7CisKKwkqY2FwYWJsZSA9IGZhbHNl OworCXJldCA9IGRybV9kcF9kcGNkX3JlYWQoJmludGVsX2RpZ19wb3J0LT5kcC5hdXgsCisJCQkg ICAgICAgRFBfSERDUF8yXzJfUkVHX1JYX0NBUFNfT0ZGU0VULAorCQkJICAgICAgIHJ4X2NhcHMs IEhEQ1BfMl8yX1JYQ0FQU19MRU4pOworCWlmIChyZXQgIT0gSERDUF8yXzJfUlhDQVBTX0xFTikK KwkJcmV0dXJuIHJldCA+PSAwID8gLUVJTyA6IHJldDsKKworCWlmIChyeF9jYXBzWzBdID09IEhE Q1BfMl8yX1JYX0NBUFNfVkVSU0lPTl9WQUwgJiYKKwkgICAgSERDUF8yXzJfRFBfSERDUF9DQVBB QkxFKHJ4X2NhcHNbMl0pKQorCQkqY2FwYWJsZSA9IHRydWU7CisKKwlyZXR1cm4gMDsKK30KKwog c3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9oZGNwX3NoaW0gaW50ZWxfZHBfaGRjcF9zaGltID0g ewogCS53cml0ZV9hbl9ha3N2ID0gaW50ZWxfZHBfaGRjcF93cml0ZV9hbl9ha3N2LAogCS5yZWFk X2Jrc3YgPSBpbnRlbF9kcF9oZGNwX3JlYWRfYmtzdiwKQEAgLTU4MDksNiArNjExMywxMiBAQCBz dGF0aWMgY29uc3Qgc3RydWN0IGludGVsX2hkY3Bfc2hpbSBpbnRlbF9kcF9oZGNwX3NoaW0gPSB7 CiAJLnRvZ2dsZV9zaWduYWxsaW5nID0gaW50ZWxfZHBfaGRjcF90b2dnbGVfc2lnbmFsbGluZywK IAkuY2hlY2tfbGluayA9IGludGVsX2RwX2hkY3BfY2hlY2tfbGluaywKIAkuaGRjcF9jYXBhYmxl ID0gaW50ZWxfZHBfaGRjcF9jYXBhYmxlLAorCS53cml0ZV8yXzJfbXNnID0gaW50ZWxfZHBfaGRj cDJfd3JpdGVfbXNnLAorCS5yZWFkXzJfMl9tc2cgPSBpbnRlbF9kcF9oZGNwMl9yZWFkX21zZywK KwkuY29uZmlnX3N0cmVhbV90eXBlID0gaW50ZWxfZHBfaGRjcDJfY29uZmlnX3N0cmVhbV90eXBl LAorCS5jaGVja18yXzJfbGluayA9IGludGVsX2RwX2hkY3AyX2NoZWNrX2xpbmssCisJLmhkY3Bf Ml8yX2NhcGFibGUgPSBpbnRlbF9kcF9oZGNwMl9jYXBhYmxlLAorCS5wcm90b2NvbCA9IEhEQ1Bf UFJPVE9DT0xfRFAsCiB9OwogCiBzdGF0aWMgdm9pZCBpbnRlbF9lZHBfcGFuZWxfdmRkX3Nhbml0 aXplKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCi0tIAoyLjcuNAoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApk cmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==