From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ramalingam C Subject: [PATCH v6 11/35] drm/i915: Enable and Disable of HDCP2.2 Date: Sat, 14 Jul 2018 08:44:53 +0530 Message-ID: <1531538117-1606-12-git-send-email-ramalingam.c@intel.com> References: <1531538117-1606-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: <1531538117-1606-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@ffwll.ch, seanpaul@chromium.org, tomas.winkler@intel.com, alexander.usyskin@intel.com, uma.shankar@intel.com List-Id: dri-devel@lists.freedesktop.org Q29uc2lkZXJpbmcgdGhhdCBIRENQMi4yIGlzIG1vcmUgc2VjdXJlIHRoYW4gSERDUDEuNCwgV2hl biBhIHNldHVwCnN1cHBvcnRzIEhEQ1AyLjIgYW5kIEhEQ1AxLjQsIEhEQ1AyLjIgd2lsbCBiZSBl bmFibGVkLgoKV2hlbiBIRENQMi4yIGVuYWJsaW5nIGZhaWxzIGFuZCBIRENQMS40IGlzIHN1cHBv cnRlZCwgSERDUDEuNCBpcwplbmFibGVkLgoKVGhpcyBjaGFuZ2UgaW1wbGVtZW50cyBhIHNlcXVl bmNlIG9mIGVuYWJsaW5nIGFuZCBkaXNhYmxpbmcgb2YKSERDUDIuMiBhdXRoZW50aWNhdGlvbiBh bmQgSERDUDIuMiBwb3J0IGVuY3J5cHRpb24uCgp2MjoKICBJbmNsdWRlZCBmZXcgb3B0aW1pemF0 aW9uIHN1Z2dlc3Rpb25zIFtDaHJpcyBXaWxzb25dCiAgQ29tbWl0IG1lc3NhZ2UgaXMgdXBkYXRl ZCBhcyBwZXIgdGhlIHJlYmFzZWQgdmVyc2lvbi4KICBpbnRlbF93YWl0X2Zvcl9yZWdpc3RlciBp cyB1c2VkIGluc3RlYWQgb2Ygd2FpdF9mb3IuIFtDaHJpcyBXaWxzb25dCnYzOgogIE5vIGNoYW5n ZXMuCnY0OgogIEV4dHJhIGNvbW1lbnQgYWRkZWQgYW5kIFN0eWxlIGlzc3VlIGZpeGVkIFtVbWFd CnY1OgogIFJlYmFzZWQgYXMgcGFydCBvZiBwYXRjaCByZW9yZGVyaW5nLgogIEhEQ1AyIGVuY3J5 cHRpb24gc3RhdHVzIGlzIHRyYWNrZWQuCiAgSFcgc3RhdGUgY2hlY2sgaXMgbW92ZWQgaW50byBX QVJOX09OIFtEYW5pZWxdCnY2OgogIFJlZGVmaW5lZCB0aGUgbWVpIHNlcnZpY2UgZnVuY3Rpb25z IGFzIHBlciBjb21wIHJlZGVzaWduLgogIE1lcmdlZCBwYXRjaGVzIHJlbGF0ZWQgdG8gaGRjcDIu MiBlbmFibGluZyBhbmQgZGlzYWJsaW5nIFtTZWFuIFBhdWxdLgogIFJlcXVpcmVkIHNoaW0gZnVu Y3Rpb25hbGl0eSBpcyBkZWZpbmVkIFtTZWFuIFBhdWxdCgpTaWduZWQtb2ZmLWJ5OiBSYW1hbGlu Z2FtIEMgPHJhbWFsaW5nYW0uY0BpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHJ2LmggIHwgICA1ICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkY3AuYyB8 IDIyNiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLQogMiBmaWxlcyBjaGFu Z2VkLCAyMjEgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kcnYuaAppbmRleCAzODI2Mjc5MjgxM2EuLjIxNjgzNzAyYmNkYyAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHJ2LmgKQEAgLTM4MCw2ICszODAsMTAgQEAgc3RydWN0IGludGVsX2hkY3Bfc2hpbSB7 CiAKIAkvKiBEZXRlY3RzIHRoZSBIRENQIHByb3RvY29sKERQL0hETUkpIHJlcXVpcmVkIG9uIHRo ZSBwb3J0ICovCiAJZW51bSBoZGNwX3Byb3RvY29sICgqaGRjcF9wcm90b2NvbCkodm9pZCk7CisK KwkvKiBEZXRlY3RzIHdoZXRoZXIgUGFuZWwgaXMgSERDUDIuMiBjYXBhYmxlICovCisJaW50ICgq aGRjcF8yXzJfY2FwYWJsZSkoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3Bv cnQsCisJCQkJYm9vbCAqY2FwYWJsZSk7CiB9OwogCiBzdHJ1Y3QgaW50ZWxfaGRjcCB7CkBAIC0z OTMsNiArMzk3LDcgQEAgc3RydWN0IGludGVsX2hkY3AgewogCS8qIEhEQ1AyLjIgcmVsYXRlZCBk ZWZpbml0aW9ucyAqLwogCS8qIEZsYWcgaW5kaWNhdGVzIHdoZXRoZXIgdGhpcyBjb25uZWN0b3Ig c3VwcG9ydHMgSERDUDIuMiBvciBub3QuICovCiAJYm9vbCBoZGNwMl9zdXBwb3J0ZWQ7CisJYm9v bCBoZGNwMl9pbl91c2U7CiAKIAkvKgogCSAqIENvbnRlbnQgU3RyZWFtIFR5cGUgZGVmaW5lZCBi eSBjb250ZW50IG93bmVyLiBUWVBFMCgweDApIGNvbnRlbnQgY2FuCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZGNwLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9oZGNwLmMKaW5kZXggMTg1MDljM2JhZTA4Li40YWNlNjQzMTViYWEgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkY3AuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9oZGNwLmMKQEAgLTE3LDEwICsxNyw1MSBAQAogI2luY2x1ZGUgImk5MTVfcmVnLmgi CiAKICNkZWZpbmUgS0VZX0xPQURfVFJJRVMJNQorI2RlZmluZSBUSU1FX0ZPUl9FTkNSWVBUX1NU QVRVU19DSEFOR0UJMzIKICNkZWZpbmUgR0VUX01FSV9ERElfSU5ERVgocG9ydCkJCSgoKHBvcnQp ID09IFBPUlRfQSkgPyBERElfQSA6IFwKIAkJCQkJIChlbnVtIGhkY3BfcGh5c2ljYWxfcG9ydCko cG9ydCkpCiAKIHN0YXRpYyBpbnQgaW50ZWxfaGRjcDJfaW5pdChzdHJ1Y3QgaW50ZWxfY29ubmVj dG9yICpjb25uZWN0b3IpOworc3RhdGljIGludCBfaW50ZWxfaGRjcDJfZW5hYmxlKHN0cnVjdCBp bnRlbF9jb25uZWN0b3IgKmNvbm5lY3Rvcik7CitzdGF0aWMgaW50IF9pbnRlbF9oZGNwMl9kaXNh YmxlKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3Rvcik7CitzdGF0aWMKK2ludCBpbnRl bF9oZGNwX3JlYWRfdmFsaWRfYmtzdihzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9k aWdfcG9ydCwKKwkJCSAgICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfaGRjcF9zaGltICpzaGltLCB1 OCAqYmtzdik7CitzdGF0aWMKK3N0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmNvbm5fdG9fZGln X3BvcnQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKTsKKworLyogSXMgSERDUDEu NCBjYXBhYmxlIG9uIFBsYXRmb3JtIGFuZCBQYW5lbCAqLworc3RhdGljIGJvb2wgaW50ZWxfaGRj cF9jYXBhYmxlKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKK3sKKwlzdHJ1Y3Qg aW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCA9IGNvbm5fdG9fZGlnX3BvcnQoY29u bmVjdG9yKTsKKwlzdHJ1Y3QgaW50ZWxfaGRjcCAqaGRjcCA9ICZjb25uZWN0b3ItPmhkY3A7CisJ Ym9vbCBjYXBhYmxlID0gZmFsc2U7CisJdTggYmtzdls1XTsKKworCWlmIChoZGNwLT5zaGltLT5o ZGNwX2NhcGFibGUpIHsKKwkJaGRjcC0+c2hpbS0+aGRjcF9jYXBhYmxlKGludGVsX2RpZ19wb3J0 LCAmY2FwYWJsZSk7CisJfSBlbHNlIHsKKwkJaWYgKCFpbnRlbF9oZGNwX3JlYWRfdmFsaWRfYmtz dihpbnRlbF9kaWdfcG9ydCwKKwkJCQkJCWhkY3AtPnNoaW0sIGJrc3YpKQorCQkJY2FwYWJsZSA9 IHRydWU7CisJfQorCisJcmV0dXJuIGNhcGFibGU7Cit9CisKKy8qIElzIEhEQ1AyLjIgY2FwYWJs ZSBvbiBQbGF0Zm9ybSBhbmQgUGFuZWwgKi8KK3N0YXRpYyBib29sIGludGVsX2hkY3AyX2NhcGFi bGUoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQoreworCXN0cnVjdCBpbnRlbF9k aWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0ID0gY29ubl90b19kaWdfcG9ydChjb25uZWN0b3Ip OworCXN0cnVjdCBpbnRlbF9oZGNwICpoZGNwID0gJmNvbm5lY3Rvci0+aGRjcDsKKwlib29sIGNh cGFibGUgPSBmYWxzZTsKKworCS8qIENoZWNrIHRoZSBwYW5lbCdzIGhkY3AyLjIgY29tcGxpYW5j ZSBpZiBwbGF0Zm9ybSBzdXBwb3J0cyBpdC4gKi8KKwlpZiAoaGRjcC0+aGRjcDJfc3VwcG9ydGVk KQorCQloZGNwLT5zaGltLT5oZGNwXzJfMl9jYXBhYmxlKGludGVsX2RpZ19wb3J0LCAmY2FwYWJs ZSk7CisKKwlyZXR1cm4gY2FwYWJsZTsKK30KIAogc3RhdGljIGludCBpbnRlbF9oZGNwX3BvbGxf a3N2X2ZpZm8oc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQsCiAJCQkJ ICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9oZGNwX3NoaW0gKnNoaW0pCkBAIC03OTEsMjIgKzgzMiwz MyBAQCBpbnQgaW50ZWxfaGRjcF9pbml0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3Rv ciwKIGludCBpbnRlbF9oZGNwX2VuYWJsZShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0 b3IpCiB7CiAJc3RydWN0IGludGVsX2hkY3AgKmhkY3AgPSAmY29ubmVjdG9yLT5oZGNwOwotCWlu dCByZXQ7CisJaW50IHJldCA9IC1FSU5WQUw7CiAKIAlpZiAoIWhkY3AtPnNoaW0pCiAJCXJldHVy biAtRU5PRU5UOwogCiAJbXV0ZXhfbG9jaygmaGRjcC0+bXV0ZXgpOwogCi0JcmV0ID0gX2ludGVs X2hkY3BfZW5hYmxlKGNvbm5lY3Rvcik7Ci0JaWYgKHJldCkKLQkJZ290byBvdXQ7CisJLyoKKwkg KiBDb25zaWRlcmluZyB0aGF0IEhEQ1AyLjIgaXMgbW9yZSBzZWN1cmUgdGhhbiBIRENQMS40LCBJ ZiB0aGUgc2V0dXAKKwkgKiBpcyBjYXBhYmxlIG9mIEhEQ1AyLjIsIGl0IGlzIHByZWZlcnJlZCB0 byB1c2UgSERDUDIuMi4KKwkgKi8KKwlpZiAoaW50ZWxfaGRjcDJfY2FwYWJsZShjb25uZWN0b3Ip KQorCQlyZXQgPSBfaW50ZWxfaGRjcDJfZW5hYmxlKGNvbm5lY3Rvcik7CisKKwkvKiBXaGVuIEhE Q1AyLjIgZmFpbHMsIEhEQ1AxLjQgd2lsbCBiZSBhdHRlbXB0ZWQgKi8KKwlpZiAocmV0ICYmIGlu dGVsX2hkY3BfY2FwYWJsZShjb25uZWN0b3IpKSB7CisJCXJldCA9IF9pbnRlbF9oZGNwX2VuYWJs ZShjb25uZWN0b3IpOworCQlpZiAoIXJldCkKKwkJCXNjaGVkdWxlX2RlbGF5ZWRfd29yaygmaGRj cC0+Y2hlY2tfd29yaywKKwkJCQkJICAgICAgRFJNX0hEQ1BfQ0hFQ0tfUEVSSU9EX01TKTsKKwl9 CisKKwlpZiAoIXJldCkgeworCQloZGNwLT52YWx1ZSA9IERSTV9NT0RFX0NPTlRFTlRfUFJPVEVD VElPTl9FTkFCTEVEOworCQlzY2hlZHVsZV93b3JrKCZoZGNwLT5wcm9wX3dvcmspOworCX0KIAot CWhkY3AtPnZhbHVlID0gRFJNX01PREVfQ09OVEVOVF9QUk9URUNUSU9OX0VOQUJMRUQ7Ci0Jc2No ZWR1bGVfd29yaygmaGRjcC0+cHJvcF93b3JrKTsKLQlzY2hlZHVsZV9kZWxheWVkX3dvcmsoJmhk Y3AtPmNoZWNrX3dvcmssCi0JCQkgICAgICBEUk1fSERDUF9DSEVDS19QRVJJT0RfTVMpOwotb3V0 OgogCW11dGV4X3VubG9jaygmaGRjcC0+bXV0ZXgpOwogCXJldHVybiByZXQ7CiB9CkBAIC04MjMs NyArODc1LDEwIEBAIGludCBpbnRlbF9oZGNwX2Rpc2FibGUoc3RydWN0IGludGVsX2Nvbm5lY3Rv ciAqY29ubmVjdG9yKQogCiAJaWYgKGhkY3AtPnZhbHVlICE9IERSTV9NT0RFX0NPTlRFTlRfUFJP VEVDVElPTl9VTkRFU0lSRUQpIHsKIAkJaGRjcC0+dmFsdWUgPSBEUk1fTU9ERV9DT05URU5UX1BS T1RFQ1RJT05fVU5ERVNJUkVEOwotCQlyZXQgPSBfaW50ZWxfaGRjcF9kaXNhYmxlKGNvbm5lY3Rv cik7CisJCWlmIChoZGNwLT5oZGNwMl9pbl91c2UpCisJCQlyZXQgPSBfaW50ZWxfaGRjcDJfZGlz YWJsZShjb25uZWN0b3IpOworCQllbHNlCisJCQlyZXQgPSBfaW50ZWxfaGRjcF9kaXNhYmxlKGNv bm5lY3Rvcik7CiAJfQogCiAJbXV0ZXhfdW5sb2NrKCZoZGNwLT5tdXRleCk7CkBAIC05MjMsNiAr OTc4LDE1NyBAQCBpbnQgaW50ZWxfaGRjcF9jaGVja19saW5rKHN0cnVjdCBpbnRlbF9jb25uZWN0 b3IgKmNvbm5lY3RvcikKIAlyZXR1cm4gcmV0OwogfQogCitzdGF0aWMgaW50IGhkY3AyX2Nsb3Nl X21laV9zZXNzaW9uKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKK3sKKwlzdHJ1 Y3QgbWVpX2hkY3BfZGF0YSAqZGF0YSA9ICZjb25uZWN0b3ItPmhkY3AubWVpX2RhdGE7CisJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjb25uZWN0b3ItPmJhc2Uu ZGV2KTsKKwlzdHJ1Y3QgaTkxNV9jb21wb25lbnRfbWFzdGVyICpjb21wID0gZGV2X3ByaXYtPmNv bXBfbWFzdGVyOworCisJaWYgKCFjb21wKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWlmICghY29t cC0+aGRjcF9vcHMgfHwgIWNvbXAtPm1laV9jbGRldiB8fCBkYXRhLT5wb3J0ID09IElOVkFMSURf UE9SVCkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlyZXR1cm4gY29tcC0+aGRjcF9vcHMtPmNsb3Nl X2hkY3Bfc2Vzc2lvbihjb21wLT5tZWlfY2xkZXYsIGRhdGEpOworfQorCitzdGF0aWMgaW50IGhk Y3AyX2RlYXV0aGVudGljYXRlX3BvcnQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9y KQoreworCXJldHVybiBoZGNwMl9jbG9zZV9tZWlfc2Vzc2lvbihjb25uZWN0b3IpOworfQorCitz dGF0aWMgaW50IGhkY3AyX2F1dGhlbnRpY2F0ZV9zaW5rKHN0cnVjdCBpbnRlbF9jb25uZWN0b3Ig KmNvbm5lY3RvcikKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19p OTE1KGNvbm5lY3Rvci0+YmFzZS5kZXYpOworCisJRFJNX0VSUk9SKCJTaW5rIGF1dGhlbnRpY2F0 aW9uIGlzIGRvbmUgaW4gc3Vic2VxdWVudCBwYXRjaGVzXG4iKTsKKwlyZXR1cm4gLUVJTlZBTDsK K30KKworc3RhdGljIGludCBoZGNwMl9lbmFibGVfZW5jcnlwdGlvbihzdHJ1Y3QgaW50ZWxfY29u bmVjdG9yICpjb25uZWN0b3IpCit7CisJc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxf ZGlnX3BvcnQgPSBjb25uX3RvX2RpZ19wb3J0KGNvbm5lY3Rvcik7CisJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjb25uZWN0b3ItPmJhc2UuZGV2KTsKKwlzdHJ1 Y3QgaW50ZWxfaGRjcCAqaGRjcCA9ICZjb25uZWN0b3ItPmhkY3A7CisJZW51bSBwb3J0IHBvcnQg PSBjb25uZWN0b3ItPmVuY29kZXItPnBvcnQ7CisJaW50IHJldDsKKworCVdBUk5fT04oSTkxNV9S RUFEKEhEQ1AyX1NUQVRVU19EREkocG9ydCkpICYgTElOS19FTkNSWVBUSU9OX1NUQVRVUyk7CisK KwlpZiAoaGRjcC0+c2hpbS0+dG9nZ2xlX3NpZ25hbGxpbmcpCisJCWhkY3AtPnNoaW0tPnRvZ2ds ZV9zaWduYWxsaW5nKGludGVsX2RpZ19wb3J0LCB0cnVlKTsKKworCWlmIChJOTE1X1JFQUQoSERD UDJfU1RBVFVTX0RESShwb3J0KSkgJiBMSU5LX0FVVEhfU1RBVFVTKSB7CisJCS8qIExpbmsgaXMg QXV0aGVudGljYXRlZC4gTm93IHNldCBmb3IgRW5jcnlwdGlvbiAqLworCQlJOTE1X1dSSVRFKEhE Q1AyX0NUTF9EREkocG9ydCksCisJCQkgICBJOTE1X1JFQUQoSERDUDJfQ1RMX0RESShwb3J0KSkg fAorCQkJICAgQ1RMX0xJTktfRU5DUllQVElPTl9SRVEpOworCX0KKworCXJldCA9IGludGVsX3dh aXRfZm9yX3JlZ2lzdGVyKGRldl9wcml2LCBIRENQMl9TVEFUVVNfRERJKHBvcnQpLAorCQkJCSAg ICAgIExJTktfRU5DUllQVElPTl9TVEFUVVMsCisJCQkJICAgICAgTElOS19FTkNSWVBUSU9OX1NU QVRVUywKKwkJCQkgICAgICBUSU1FX0ZPUl9FTkNSWVBUX1NUQVRVU19DSEFOR0UpOworCisJcmV0 dXJuIHJldDsKK30KKworc3RhdGljIGludCBoZGNwMl9kaXNhYmxlX2VuY3J5cHRpb24oc3RydWN0 IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQoreworCXN0cnVjdCBpbnRlbF9kaWdpdGFsX3Bv cnQgKmludGVsX2RpZ19wb3J0ID0gY29ubl90b19kaWdfcG9ydChjb25uZWN0b3IpOworCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY29ubmVjdG9yLT5iYXNlLmRl dik7CisJc3RydWN0IGludGVsX2hkY3AgKmhkY3AgPSAmY29ubmVjdG9yLT5oZGNwOworCWVudW0g cG9ydCBwb3J0ID0gY29ubmVjdG9yLT5lbmNvZGVyLT5wb3J0OworCWludCByZXQ7CisKKwlXQVJO X09OKCEoSTkxNV9SRUFEKEhEQ1AyX1NUQVRVU19EREkocG9ydCkpICYgTElOS19FTkNSWVBUSU9O X1NUQVRVUykpOworCisJSTkxNV9XUklURShIRENQMl9DVExfRERJKHBvcnQpLAorCQkgICBJOTE1 X1JFQUQoSERDUDJfQ1RMX0RESShwb3J0KSkgJiB+Q1RMX0xJTktfRU5DUllQVElPTl9SRVEpOwor CisJcmV0ID0gaW50ZWxfd2FpdF9mb3JfcmVnaXN0ZXIoZGV2X3ByaXYsIEhEQ1AyX1NUQVRVU19E REkocG9ydCksCisJCQkJICAgICAgTElOS19FTkNSWVBUSU9OX1NUQVRVUywgMHgwLAorCQkJCSAg ICAgIFRJTUVfRk9SX0VOQ1JZUFRfU1RBVFVTX0NIQU5HRSk7CisJaWYgKHJldCA9PSAtRVRJTUVE T1VUKQorCQlEUk1fREVCVUdfS01TKCJEaXNhYmxlIEVuY3J5cHRpb24gVGltZWRvdXQiKTsKKwor CWlmIChoZGNwLT5zaGltLT50b2dnbGVfc2lnbmFsbGluZykKKwkJaGRjcC0+c2hpbS0+dG9nZ2xl X3NpZ25hbGxpbmcoaW50ZWxfZGlnX3BvcnQsIGZhbHNlKTsKKworCXJldHVybiByZXQ7Cit9CisK K3N0YXRpYyBpbnQgaGRjcDJfYXV0aGVudGljYXRlX2FuZF9lbmNyeXB0KHN0cnVjdCBpbnRlbF9j b25uZWN0b3IgKmNvbm5lY3RvcikKK3sKKwlpbnQgcmV0LCBpLCB0cmllcyA9IDM7CisKKwlmb3Ig KGkgPSAwOyBpIDwgdHJpZXM7IGkrKykgeworCQlyZXQgPSBoZGNwMl9hdXRoZW50aWNhdGVfc2lu ayhjb25uZWN0b3IpOworCQlpZiAoIXJldCkKKwkJCWJyZWFrOworCisJCS8qIENsZWFyaW5nIHRo ZSBtZWkgaGRjcCBzZXNzaW9uICovCisJCWhkY3AyX2RlYXV0aGVudGljYXRlX3BvcnQoY29ubmVj dG9yKTsKKwkJRFJNX0RFQlVHX0tNUygiSERDUDIuMiBBdXRoICVkIG9mICVkIEZhaWxlZC4oJWQp XG4iLAorCQkJICAgICAgaSArIDEsIHRyaWVzLCByZXQpOworCX0KKworCWlmIChpICE9IHRyaWVz KSB7CisJCS8qCisJCSAqIEVuc3VyaW5nIHRoZSByZXF1aXJlZCAyMDBtU2VjIG1pbiB0aW1lIGlu dGVydmFsIGJldHdlZW4KKwkJICogU2Vzc2lvbiBLZXkgRXhjaGFuZ2UgYW5kIGVuY3J5cHRpb24u CisJCSAqLworCQltc2xlZXAoSERDUF8yXzJfREVMQVlfQkVGT1JFX0VOQ1JZUFRJT05fRU4pOwor CQlyZXQgPSBoZGNwMl9lbmFibGVfZW5jcnlwdGlvbihjb25uZWN0b3IpOworCQlpZiAocmV0IDwg MCkgeworCQkJRFJNX0RFQlVHX0tNUygiRW5jcnlwdGlvbiBFbmFibGUgRmFpbGVkLiglZClcbiIs IHJldCk7CisJCQloZGNwMl9kZWF1dGhlbnRpY2F0ZV9wb3J0KGNvbm5lY3Rvcik7CisJCX0KKwl9 CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50IF9pbnRlbF9oZGNwMl9lbmFibGUoc3Ry dWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQoreworCXN0cnVjdCBpbnRlbF9oZGNwICpo ZGNwID0gJmNvbm5lY3Rvci0+aGRjcDsKKwlpbnQgcmV0OworCisJRFJNX0RFQlVHX0tNUygiWyVz OiVkXSBIRENQMi4yIGlzIGJlaW5nIGVuYWJsZWQuIFR5cGU6ICVkXG4iLAorCQkgICAgICBjb25u ZWN0b3ItPmJhc2UubmFtZSwgY29ubmVjdG9yLT5iYXNlLmJhc2UuaWQsCisJCSAgICAgIGhkY3At PmNvbnRlbnRfdHlwZSk7CisKKwlyZXQgPSBoZGNwMl9hdXRoZW50aWNhdGVfYW5kX2VuY3J5cHQo Y29ubmVjdG9yKTsKKwlpZiAocmV0KSB7CisJCURSTV9FUlJPUigiSERDUDIgVHlwZSVkICBFbmFi bGluZyBGYWlsZWQuICglZClcbiIsCisJCQkgIGhkY3AtPmNvbnRlbnRfdHlwZSwgcmV0KTsKKwkJ cmV0dXJuIHJldDsKKwl9CisKKwlEUk1fREVCVUdfS01TKCJbJXM6JWRdIEhEQ1AyLjIgaXMgZW5h YmxlZC4gVHlwZSAlZFxuIiwKKwkJICAgICAgY29ubmVjdG9yLT5iYXNlLm5hbWUsIGNvbm5lY3Rv ci0+YmFzZS5iYXNlLmlkLAorCQkgICAgICBoZGNwLT5jb250ZW50X3R5cGUpOworCisJaGRjcC0+ aGRjcDJfaW5fdXNlID0gdHJ1ZTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBfaW50ZWxf aGRjcDJfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCit7CisJaW50 IHJldDsKKworCURSTV9ERUJVR19LTVMoIlslczolZF0gSERDUDIuMiBpcyBiZWluZyBEaXNhYmxl ZFxuIiwKKwkJICAgICAgY29ubmVjdG9yLT5iYXNlLm5hbWUsIGNvbm5lY3Rvci0+YmFzZS5iYXNl LmlkKTsKKworCXJldCA9IGhkY3AyX2Rpc2FibGVfZW5jcnlwdGlvbihjb25uZWN0b3IpOworCisJ aGRjcDJfZGVhdXRoZW50aWNhdGVfcG9ydChjb25uZWN0b3IpOworCWNvbm5lY3Rvci0+aGRjcC5o ZGNwMl9pbl91c2UgPSBmYWxzZTsKKworCXJldHVybiByZXQ7Cit9CisKIHN0YXRpYyBpbnQgaTkx NV9oZGNwX2NvbXBvbmVudF9tYXRjaChzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEpCiB7 CiAJcmV0dXJuICFzdHJjbXAoZGV2LT5kcml2ZXItPm5hbWUsICJtZWlfaGRjcCIpOwotLSAKMi43 LjQKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1k ZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=