From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: [PATCH v6 1/2] drm/i915: Allow control of PSR at runtime through debugfs, v6 Date: Thu, 9 Aug 2018 16:21:01 +0200 Message-ID: <20180809142101.26155-1-maarten.lankhorst@linux.intel.com> References: Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mblankhorst.nl (mblankhorst.nl [IPv6:2a02:2308::216:3eff:fe92:dfa3]) by gabe.freedesktop.org (Postfix) with ESMTPS id 434A56E762 for ; Thu, 9 Aug 2018 14:21:07 +0000 (UTC) In-Reply-To: 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 Cc: Dhinakaran Pandiyan , Rodrigo Vivi List-Id: intel-gfx@lists.freedesktop.org Q3VycmVudGx5IHRlc3RzIG1vZGlmeSBpOTE1LmVuYWJsZV9wc3IgYW5kIHRoZW4gZG8gYSBtb2Rl c2V0IGN5Y2xlCnRvIGNoYW5nZSBQU1IuIFdlIGNhbiB3cml0ZSBhIHZhbHVlIHRvIGk5MTVfZWRw X3Bzcl9kZWJ1ZyB0byBmb3JjZQphIGNlcnRhaW4gUFNSIG1vZGUgd2l0aG91dCBhIG1vZGVzZXQu CgpUbyByZXRhaW4gY29tcGF0aWJpbGl0eSB3aXRoIG9sZGVyIHVzZXJzcGFjZSwgd2UgYWxzbyBz dGlsbCBhbGxvdwp0aGUgb3ZlcnJpZGUgdGhyb3VnaCB0aGUgbW9kdWxlIHBhcmFtZXRlciwgYW5k IGFkZCBzb21lIHRyYWNraW5nCnRvIGNoZWNrIHdoZXRoZXIgYSBkZWJ1Z2ZzIG1vZGUgaXMgc3Bl Y2lmaWVkLgoKQ2hhbmdlcyBzaW5jZSB2MToKLSBSZW5hbWUgZGV2X3ByaXYtPnBzci5lbmFibGVk IHRvIC5kcCwgYW5kIC5od19jb25maWd1cmVkIHRvIC5lbmFibGVkLgotIEZpeCBpOTE1X3Bzcl9k ZWJ1Z2ZzX21vZGUgdG8gbWF0Y2ggdGhlIHdyaXRlcyB0byBkZWJ1Z2ZzLgotIFJlbmFtZSBfX2k5 MTVfZWRwX3Bzcl93cml0ZSB0byBpbnRlbF9wc3Jfc2V0X2RlYnVnZnNfbW9kZSwgc2ltcGxpZnkK ICBpdCBhbmQgbW92ZSBpdCB0byBpbnRlbF9wc3IuYy4gVGhpcyBrZWVwcyBhbGwgaW50ZXJuYWxz IGluIGludGVsX3Bzci5jCi0gUGVyZm9ybSBhbiBpbnRlcnJ1cHRpYmxlIHdhaXQgZm9yIGh3IGNv bXBsZXRpb24gb3V0c2lkZSBvZiB0aGUgcHNyCiAgbG9jaywgaW5zdGVhZCBvZiBiZWluZyBmb3Jj ZWQgdG8gdHJ5d2FpdCBhbmQgcmV0dXJuIC1FQlVTWS4KQ2hhbmdlcyBzaW5jZSB2MjoKLSBSZWJh c2Ugb24gdG9wIG9mIGludGVsX3BzciBjaGFuZ2VzLgpDaGFuZ2VzIHNpbmNlIHYzOgotIEFzc2ln biBwc3IuZHAgZHVyaW5nIGluaXQuIChkaG5rcm4pCi0gQWRkIHByZXBhcmVkIGJvb2wsIHdoaWNo IHNob3VsZCBiZSB1c2VkIGluc3RlYWQgb2YgcmVseWluZyBvbiBwc3IuZHAuIChkaG5rcm4pCi0g Rml4IC1FREVBRExLIGhhbmRsaW5nIGluIGRlYnVnZnMuIChkaG5rcm4pCi0gQ2xlYW4gdXAgd2Fp dGluZyBmb3IgaWRsZSBpbiBpbnRlbF9wc3Jfc2V0X2RlYnVnZnNfbW9kZS4KLSBQcmludCBQU1Ig bW9kZSB3aGVuIHRyeWluZyB0byBlbmFibGUgUFNSLiAoZGhua3JuKQotIE1vdmUgY2hhbmdpbmcg cHNyIGRlYnVnIHNldHRpbmcgdG8gaTkxNV9lZHBfcHNyX2RlYnVnX3NldC4gKGRobmtybikKQ2hh bmdlcyBzaW5jZSB2NDoKLSBSZXR1cm4gZXJyb3IgaW4gX3NldCgpIGZ1bmN0aW9uLgotIENoYW5n ZSBmbGFnIHZhbHVlcyB0byBtYWtlIHRoZW0gZWFzaWVyIHRvIHJlbWVtYmVyLiAoZGhua3JuKQot IE9ubHkgYXNzaWduIHBzci5kcCBvbmNlLiAoZGhua3JuKQotIE9ubHkgc2V0IGNydGNfc3RhdGUt Pmhhc19wc3Igb24gdGhlIGNydGMgd2l0aCBwc3IuZHAuCi0gRml4IHR5cG8uIChkaG5rcm4pCkNo YW5nZXMgc2luY2UgdjU6Ci0gT25seSB3YWl0IGZvciBQU1IgaWRsZSBvbiB0aGUgUFNSIGNvbm5l Y3RvciBjb3JyZWN0bHkuIChkaG5rcm4pCi0gUmVpbnN0YXRlIFdBUk5fT04oZHJycy5kcCkgaW4g aW50ZWxfcHNyX2VuYWJsZS4gKGRobmtybikKLSBSZW1vdmUgc3RyYXkgY29tbWVudC4gKGRobmty bikKLSBCZSBzaWxlbnQgaW4gaW50ZWxfcHNyX2NvbXB1dGVfY29uZmlnIG9uIHdyb25nIGNvbm5l Y3Rvci4gKGRobmtybikKClNpZ25lZC1vZmYtYnk6IE1hYXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVu Lmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+CkNjOiBSb2RyaWdvIFZpdmkgPHJvZHJpZ28udml2 aUBpbnRlbC5jb20+CkNjOiBEaGluYWthcmFuIFBhbmRpeWFuIDxkaGluYWthcmFuLnBhbmRpeWFu QGludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyB8ICAy MyArKysrLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgfCAgMTIgKystCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jICAgICB8ICAgMiArLQogZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgfCAgIDMgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfcHNyLmMgICAgfCAxMzQgKysrKysrKysrKysrKysrKysrKysrKystLS0tLQogNSBmaWxlcyBj aGFuZ2VkLCAxNDYgaW5zZXJ0aW9ucygrKSwgMjggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2RlYnVnZnMuYwppbmRleCBmOWNlMzVkYTQxMjMuLjNlODEzMDFhOTRiYSAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKQEAgLTI3MDgsNyArMjcwOCw3IEBAIHN0YXRpYyBp bnQgaTkxNV9lZHBfcHNyX3N0YXR1cyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCiAJ aW50ZWxfcnVudGltZV9wbV9nZXQoZGV2X3ByaXYpOwogCiAJbXV0ZXhfbG9jaygmZGV2X3ByaXYt PnBzci5sb2NrKTsKLQlzZXFfcHJpbnRmKG0sICJFbmFibGVkOiAlc1xuIiwgeWVzbm8oKGJvb2wp ZGV2X3ByaXYtPnBzci5lbmFibGVkKSk7CisJc2VxX3ByaW50ZihtLCAiRW5hYmxlZDogJXNcbiIs IHllc25vKGRldl9wcml2LT5wc3IuZW5hYmxlZCkpOwogCXNlcV9wcmludGYobSwgIkJ1c3kgZnJv bnRidWZmZXIgYml0czogMHglMDN4XG4iLAogCQkgICBkZXZfcHJpdi0+cHNyLmJ1c3lfZnJvbnRi dWZmZXJfYml0cyk7CiAKQEAgLTI3NTAsMTcgKzI3NTAsMzIgQEAgc3RhdGljIGludAogaTkxNV9l ZHBfcHNyX2RlYnVnX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKQogewogCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IGRhdGE7CisJc3RydWN0IGRybV9tb2Rlc2V0X2FjcXVpcmVf Y3R4IGN0eDsKKwlpbnQgcmV0OwogCiAJaWYgKCFDQU5fUFNSKGRldl9wcml2KSkKIAkJcmV0dXJu IC1FTk9ERVY7CiAKLQlEUk1fREVCVUdfS01TKCJQU1IgZGVidWcgJXNcbiIsIGVuYWJsZWRkaXNh YmxlZCh2YWwpKTsKKwlEUk1fREVCVUdfS01TKCJTZXR0aW5nIFBTUiBkZWJ1ZyB0byAlbGx4XG4i LCB2YWwpOwogCiAJaW50ZWxfcnVudGltZV9wbV9nZXQoZGV2X3ByaXYpOwotCWludGVsX3Bzcl9p cnFfY29udHJvbChkZXZfcHJpdiwgISF2YWwpOworCisJZHJtX21vZGVzZXRfYWNxdWlyZV9pbml0 KCZjdHgsIERSTV9NT0RFU0VUX0FDUVVJUkVfSU5URVJSVVBUSUJMRSk7CisKK3JldHJ5OgorCXJl dCA9IGludGVsX3Bzcl9zZXRfZGVidWdmc19tb2RlKGRldl9wcml2LCAmY3R4LCB2YWwpOworCWlm IChyZXQgPT0gLUVERUFETEspIHsKKwkJcmV0ID0gZHJtX21vZGVzZXRfYmFja29mZigmY3R4KTsK KwkJaWYgKCFyZXQpCisJCQlnb3RvIHJldHJ5OworCX0KKworCWRybV9tb2Rlc2V0X2Ryb3BfbG9j a3MoJmN0eCk7CisJZHJtX21vZGVzZXRfYWNxdWlyZV9maW5pKCZjdHgpOworCiAJaW50ZWxfcnVu dGltZV9wbV9wdXQoZGV2X3ByaXYpOwogCi0JcmV0dXJuIDA7CisJcmV0dXJuIHJldDsKIH0KIAog c3RhdGljIGludApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXggNjU3ZjQ2ZTBjYWU5Li5hM2Vh NDhjZTE4MTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAtNjExLDggKzYxMSwxNyBAQCBz dHJ1Y3QgaTkxNV9kcnJzIHsKIAogc3RydWN0IGk5MTVfcHNyIHsKIAlzdHJ1Y3QgbXV0ZXggbG9j azsKKworI2RlZmluZSBJOTE1X1BTUl9ERUJVR19NT0RFX01BU0sJMHgwZgorI2RlZmluZSBJOTE1 X1BTUl9ERUJVR19ERUZBVUxUCQkweDAwCisjZGVmaW5lIEk5MTVfUFNSX0RFQlVHX0RJU0FCTEUJ CTB4MDEKKyNkZWZpbmUgSTkxNV9QU1JfREVCVUdfRU5BQkxFCQkweDAyCisjZGVmaW5lIEk5MTVf UFNSX0RFQlVHX0lSUQkJMHgxMAorCisJdTMyIGRlYnVnOwogCWJvb2wgc2lua19zdXBwb3J0Owot CXN0cnVjdCBpbnRlbF9kcCAqZW5hYmxlZDsKKwlib29sIHByZXBhcmVkLCBlbmFibGVkOworCXN0 cnVjdCBpbnRlbF9kcCAqZHA7CiAJYm9vbCBhY3RpdmU7CiAJc3RydWN0IHdvcmtfc3RydWN0IHdv cms7CiAJdW5zaWduZWQgYnVzeV9mcm9udGJ1ZmZlcl9iaXRzOwpAQCAtNjIyLDcgKzYzMSw2IEBA IHN0cnVjdCBpOTE1X3BzciB7CiAJYm9vbCBhbHBtOwogCWJvb2wgcHNyMl9lbmFibGVkOwogCXU4 IHNpbmtfc3luY19sYXRlbmN5OwotCWJvb2wgZGVidWc7CiAJa3RpbWVfdCBsYXN0X2VudHJ5X2F0 dGVtcHQ7CiAJa3RpbWVfdCBsYXN0X2V4aXQ7CiB9OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9pcnEuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKaW5k ZXggODA4NGUzNWIyNWM1Li5iMmM5ODM4NDQyYmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfaXJxLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYwpA QCAtNDA0OCw3ICs0MDQ4LDcgQEAgc3RhdGljIGludCBpcm9ubGFrZV9pcnFfcG9zdGluc3RhbGwo c3RydWN0IGRybV9kZXZpY2UgKmRldikKIAogCWlmIChJU19IQVNXRUxMKGRldl9wcml2KSkgewog CQlnZW4zX2Fzc2VydF9paXJfaXNfemVybyhkZXZfcHJpdiwgRURQX1BTUl9JSVIpOwotCQlpbnRl bF9wc3JfaXJxX2NvbnRyb2woZGV2X3ByaXYsIGRldl9wcml2LT5wc3IuZGVidWcpOworCQlpbnRl bF9wc3JfaXJxX2NvbnRyb2woZGV2X3ByaXYsIGRldl9wcml2LT5wc3IuZGVidWcgJiBJOTE1X1BT Ul9ERUJVR19JUlEpOwogCQlkaXNwbGF5X21hc2sgfD0gREVfRURQX1BTUl9JTlRfSFNXOwogCX0K IApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAppbmRleCAxYWQ3YzExMjRiZWYuLjRhYzQ2OGI3Mjk3 ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKQEAgLTE5MzIsNiArMTkzMiw5IEBAIHZvaWQg aW50ZWxfcHNyX2VuYWJsZShzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAogCQkgICAgICBjb25z dCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSk7CiB2b2lkIGludGVsX3Bzcl9k aXNhYmxlKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCiAJCSAgICAgIGNvbnN0IHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZSk7CitpbnQgaW50ZWxfcHNyX3NldF9kZWJ1 Z2ZzX21vZGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAorCQkJICAgICAgIHN0 cnVjdCBkcm1fbW9kZXNldF9hY3F1aXJlX2N0eCAqY3R4LAorCQkJICAgICAgIHU2NCB2YWx1ZSk7 CiB2b2lkIGludGVsX3Bzcl9pbnZhbGlkYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwKIAkJCSAgdW5zaWduZWQgZnJvbnRidWZmZXJfYml0cywKIAkJCSAgZW51bSBmYl9vcF9v cmlnaW4gb3JpZ2luKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bz ci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcHNyLmMKaW5kZXggNGJkNTc2ODczMWVl Li5lOWNhNDEwZTE4YzQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bz ci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bzci5jCkBAIC01Niw2ICs1Niwx OCBAQAogI2luY2x1ZGUgImludGVsX2Rydi5oIgogI2luY2x1ZGUgImk5MTVfZHJ2LmgiCiAKK3N0 YXRpYyBib29sIHBzcl9nbG9iYWxfZW5hYmxlZCh1MzIgZGVidWcpCit7CisJc3dpdGNoIChkZWJ1 ZyAmIEk5MTVfUFNSX0RFQlVHX01PREVfTUFTSykgeworCWNhc2UgSTkxNV9QU1JfREVCVUdfREVG QVVMVDoKKwkJcmV0dXJuIGk5MTVfbW9kcGFyYW1zLmVuYWJsZV9wc3I7CisJY2FzZSBJOTE1X1BT Ul9ERUJVR19ESVNBQkxFOgorCQlyZXR1cm4gZmFsc2U7CisJZGVmYXVsdDoKKwkJcmV0dXJuIHRy dWU7CisJfQorfQorCiB2b2lkIGludGVsX3Bzcl9pcnFfY29udHJvbChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsIGJvb2wgZGVidWcpCiB7CiAJdTMyIGRlYnVnX21hc2ssIG1hc2s7 CkBAIC04MCw3ICs5Miw2IEBAIHZvaWQgaW50ZWxfcHNyX2lycV9jb250cm9sKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwgYm9vbCBkZWJ1ZykKIAlpZiAoZGVidWcpCiAJCW1hc2sg fD0gZGVidWdfbWFzazsKIAotCVdSSVRFX09OQ0UoZGV2X3ByaXYtPnBzci5kZWJ1ZywgZGVidWcp OwogCUk5MTVfV1JJVEUoRURQX1BTUl9JTVIsIH5tYXNrKTsKIH0KIApAQCAtMjEzLDYgKzIyNCw5 IEBAIHZvaWQgaW50ZWxfcHNyX2luaXRfZHBjZChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQog CWRldl9wcml2LT5wc3Iuc2lua19zeW5jX2xhdGVuY3kgPQogCQlpbnRlbF9kcF9nZXRfc2lua19z eW5jX2xhdGVuY3koaW50ZWxfZHApOwogCisJV0FSTl9PTihkZXZfcHJpdi0+cHNyLmRwKTsKKwlk ZXZfcHJpdi0+cHNyLmRwID0gaW50ZWxfZHA7CisKIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+ PSA5ICYmCiAJICAgIChpbnRlbF9kcC0+cHNyX2RwY2RbMF0gPT0gRFBfUFNSMl9XSVRIX1lfQ09P UkRfSVNfU1VQUE9SVEVEKSkgewogCQlib29sIHlfcmVxID0gaW50ZWxfZHAtPnBzcl9kcGNkWzFd ICYKQEAgLTQ3MSwxMCArNDg1LDggQEAgdm9pZCBpbnRlbF9wc3JfY29tcHV0ZV9jb25maWcoc3Ry dWN0IGludGVsX2RwICppbnRlbF9kcCwKIAlpZiAoIUNBTl9QU1IoZGV2X3ByaXYpKQogCQlyZXR1 cm47CiAKLQlpZiAoIWk5MTVfbW9kcGFyYW1zLmVuYWJsZV9wc3IpIHsKLQkJRFJNX0RFQlVHX0tN UygiUFNSIGRpc2FibGUgYnkgZmxhZ1xuIik7CisJaWYgKGludGVsX2RwICE9IGRldl9wcml2LT5w c3IuZHApCiAJCXJldHVybjsKLQl9CiAKIAkvKgogCSAqIEhTVyBzcGVjIGV4cGxpY2l0bHkgc2F5 cyBQU1IgaXMgdGllZCB0byBwb3J0IEEuCkBAIC01MTcsNyArNTI5LDYgQEAgdm9pZCBpbnRlbF9w c3JfY29tcHV0ZV9jb25maWcoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKIAogCWNydGNfc3Rh dGUtPmhhc19wc3IgPSB0cnVlOwogCWNydGNfc3RhdGUtPmhhc19wc3IyID0gaW50ZWxfcHNyMl9j b25maWdfdmFsaWQoaW50ZWxfZHAsIGNydGNfc3RhdGUpOwotCURSTV9ERUJVR19LTVMoIkVuYWJs aW5nIFBTUiVzXG4iLCBjcnRjX3N0YXRlLT5oYXNfcHNyMiA/ICIyIiA6ICIiKTsKIH0KIAogc3Rh dGljIHZvaWQgaW50ZWxfcHNyX2FjdGl2YXRlKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCkBA IC01ODksNiArNjAwLDI0IEBAIHN0YXRpYyB2b2lkIGludGVsX3Bzcl9lbmFibGVfc291cmNlKHN0 cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCiAJfQogfQogCitzdGF0aWMgdm9pZCBpbnRlbF9wc3Jf ZW5hYmxlX2xvY2tlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkJICAg IGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQoreworCXN0cnVjdCBp bnRlbF9kcCAqaW50ZWxfZHAgPSBkZXZfcHJpdi0+cHNyLmRwOworCisJaWYgKGRldl9wcml2LT5w c3IuZW5hYmxlZCkKKwkJcmV0dXJuOworCisJRFJNX0RFQlVHX0tNUygiRW5hYmxpbmcgUFNSJXNc biIsCisJCSAgICAgIGRldl9wcml2LT5wc3IucHNyMl9lbmFibGVkID8gIjIiIDogIjEiKTsKKwlp bnRlbF9wc3Jfc2V0dXBfdnNjKGludGVsX2RwLCBjcnRjX3N0YXRlKTsKKwlpbnRlbF9wc3JfZW5h YmxlX3NpbmsoaW50ZWxfZHApOworCWludGVsX3Bzcl9lbmFibGVfc291cmNlKGludGVsX2RwLCBj cnRjX3N0YXRlKTsKKwlkZXZfcHJpdi0+cHNyLmVuYWJsZWQgPSB0cnVlOworCisJaW50ZWxfcHNy X2FjdGl2YXRlKGludGVsX2RwKTsKK30KKwogLyoqCiAgKiBpbnRlbF9wc3JfZW5hYmxlIC0gRW5h YmxlIFBTUgogICogQGludGVsX2RwOiBJbnRlbCBEUApAQCAtNjEwLDIxICs2MzksMjEgQEAgdm9p ZCBpbnRlbF9wc3JfZW5hYmxlKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCiAJCXJldHVybjsK IAogCVdBUk5fT04oZGV2X3ByaXYtPmRycnMuZHApOworCiAJbXV0ZXhfbG9jaygmZGV2X3ByaXYt PnBzci5sb2NrKTsKLQlpZiAoZGV2X3ByaXYtPnBzci5lbmFibGVkKSB7CisJaWYgKGRldl9wcml2 LT5wc3IucHJlcGFyZWQpIHsKIAkJRFJNX0RFQlVHX0tNUygiUFNSIGFscmVhZHkgaW4gdXNlXG4i KTsKIAkJZ290byB1bmxvY2s7CiAJfQogCiAJZGV2X3ByaXYtPnBzci5wc3IyX2VuYWJsZWQgPSBj cnRjX3N0YXRlLT5oYXNfcHNyMjsKIAlkZXZfcHJpdi0+cHNyLmJ1c3lfZnJvbnRidWZmZXJfYml0 cyA9IDA7CisJZGV2X3ByaXYtPnBzci5wcmVwYXJlZCA9IHRydWU7CiAKLQlpbnRlbF9wc3Jfc2V0 dXBfdnNjKGludGVsX2RwLCBjcnRjX3N0YXRlKTsKLQlpbnRlbF9wc3JfZW5hYmxlX3NpbmsoaW50 ZWxfZHApOwotCWludGVsX3Bzcl9lbmFibGVfc291cmNlKGludGVsX2RwLCBjcnRjX3N0YXRlKTsK LQlkZXZfcHJpdi0+cHNyLmVuYWJsZWQgPSBpbnRlbF9kcDsKLQotCWludGVsX3Bzcl9hY3RpdmF0 ZShpbnRlbF9kcCk7CisJaWYgKHBzcl9nbG9iYWxfZW5hYmxlZChkZXZfcHJpdi0+cHNyLmRlYnVn KSkKKwkJaW50ZWxfcHNyX2VuYWJsZV9sb2NrZWQoZGV2X3ByaXYsIGNydGNfc3RhdGUpOworCWVs c2UKKwkJRFJNX0RFQlVHX0tNUygiUFNSIGRpc2FibGVkIGJ5IGZsYWdcbiIpOwogCiB1bmxvY2s6 CiAJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cHNyLmxvY2spOwpAQCAtNjgzLDEyICs3MTIsMTQg QEAgc3RhdGljIHZvaWQgaW50ZWxfcHNyX2Rpc2FibGVfbG9ja2VkKHN0cnVjdCBpbnRlbF9kcCAq aW50ZWxfZHApCiAJaWYgKCFkZXZfcHJpdi0+cHNyLmVuYWJsZWQpCiAJCXJldHVybjsKIAorCURS TV9ERUJVR19LTVMoIkRpc2FibGluZyBQU1Ilc1xuIiwKKwkJICAgICAgZGV2X3ByaXYtPnBzci5w c3IyX2VuYWJsZWQgPyAiMiIgOiAiMSIpOwogCWludGVsX3Bzcl9kaXNhYmxlX3NvdXJjZShpbnRl bF9kcCk7CiAKIAkvKiBEaXNhYmxlIFBTUiBvbiBTaW5rICovCiAJZHJtX2RwX2RwY2Rfd3JpdGVi KCZpbnRlbF9kcC0+YXV4LCBEUF9QU1JfRU5fQ0ZHLCAwKTsKIAotCWRldl9wcml2LT5wc3IuZW5h YmxlZCA9IE5VTEw7CisJZGV2X3ByaXYtPnBzci5lbmFibGVkID0gZmFsc2U7CiB9CiAKIC8qKgpA QCAtNzEyLDcgKzc0MywxNCBAQCB2b2lkIGludGVsX3Bzcl9kaXNhYmxlKHN0cnVjdCBpbnRlbF9k cCAqaW50ZWxfZHAsCiAJCXJldHVybjsKIAogCW11dGV4X2xvY2soJmRldl9wcml2LT5wc3IubG9j ayk7CisJaWYgKCFkZXZfcHJpdi0+cHNyLnByZXBhcmVkKSB7CisJCW11dGV4X3VubG9jaygmZGV2 X3ByaXYtPnBzci5sb2NrKTsKKwkJcmV0dXJuOworCX0KKwogCWludGVsX3Bzcl9kaXNhYmxlX2xv Y2tlZChpbnRlbF9kcCk7CisKKwlkZXZfcHJpdi0+cHNyLnByZXBhcmVkID0gZmFsc2U7CiAJbXV0 ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cHNyLmxvY2spOwogCWNhbmNlbF93b3JrX3N5bmMoJmRldl9w cml2LT5wc3Iud29yayk7CiB9CkBAIC03MjQsNyArNzYyLDcgQEAgaW50IGludGVsX3Bzcl93YWl0 X2Zvcl9pZGxlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpuZXdfY3J0Y19zdGF0ZSkK IAlpOTE1X3JlZ190IHJlZzsKIAl1MzIgbWFzazsKIAotCWlmICghbmV3X2NydGNfc3RhdGUtPmhh c19wc3IpCisJaWYgKCFkZXZfcHJpdi0+cHNyLmVuYWJsZWQgfHwgIW5ld19jcnRjX3N0YXRlLT5o YXNfcHNyKQogCQlyZXR1cm4gMDsKIAogCS8qCkBAIC03NTYsMTMgKzc5NCwxMSBAQCBpbnQgaW50 ZWxfcHNyX3dhaXRfZm9yX2lkbGUoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm5ld19j cnRjX3N0YXRlKQogCiBzdGF0aWMgYm9vbCBfX3Bzcl93YWl0X2Zvcl9pZGxlX2xvY2tlZChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7Ci0Jc3RydWN0IGludGVsX2RwICppbnRl bF9kcDsKIAlpOTE1X3JlZ190IHJlZzsKIAl1MzIgbWFzazsKIAlpbnQgZXJyOwogCi0JaW50ZWxf ZHAgPSBkZXZfcHJpdi0+cHNyLmVuYWJsZWQ7Ci0JaWYgKCFpbnRlbF9kcCkKKwlpZiAoIWRldl9w cml2LT5wc3IuZW5hYmxlZCkKIAkJcmV0dXJuIGZhbHNlOwogCiAJaWYgKGRldl9wcml2LT5wc3Iu cHNyMl9lbmFibGVkKSB7CkBAIC03ODQsNiArODIwLDYyIEBAIHN0YXRpYyBib29sIF9fcHNyX3dh aXRfZm9yX2lkbGVfbG9ja2VkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAly ZXR1cm4gZXJyID09IDAgJiYgZGV2X3ByaXYtPnBzci5lbmFibGVkOwogfQogCitpbnQgaW50ZWxf cHNyX3NldF9kZWJ1Z2ZzX21vZGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAor CQkJICAgICAgIHN0cnVjdCBkcm1fbW9kZXNldF9hY3F1aXJlX2N0eCAqY3R4LAorCQkJICAgICAg IHU2NCB2YWwpCit7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9ICZkZXZfcHJpdi0+ZHJtOwor CXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlOworCXN0cnVjdCBkcm1fY3J0 YyAqY3J0YzsKKwlzdHJ1Y3QgaW50ZWxfZHAgKmRwOworCWludCByZXQ7CisJYm9vbCBlbmFibGU7 CisKKwlpZiAodmFsICYgfihJOTE1X1BTUl9ERUJVR19JUlEgfCBJOTE1X1BTUl9ERUJVR19NT0RF X01BU0spIHx8CisJICAgICh2YWwgJiBJOTE1X1BTUl9ERUJVR19NT0RFX01BU0spID4gSTkxNV9Q U1JfREVCVUdfRU5BQkxFKSB7CisJCURSTV9ERUJVR19LTVMoIkludmFsaWQgZGVidWcgbWFzayAl bGx4XG4iLCB2YWwpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlyZXQgPSBkcm1fbW9kZXNl dF9sb2NrKCZkZXYtPm1vZGVfY29uZmlnLmNvbm5lY3Rpb25fbXV0ZXgsIGN0eCk7CisJaWYgKHJl dCkKKwkJcmV0dXJuIHJldDsKKworCS8qIGRldl9wcml2LT5wc3IuZHAgc2hvdWxkIGJlIHNldCBv bmNlIGFuZCB0aGVuIG5ldmVyIHRvdWNoZWQgYWdhaW4uICovCisJZHAgPSBSRUFEX09OQ0UoZGV2 X3ByaXYtPnBzci5kcCk7CisJY29ubl9zdGF0ZSA9IGRwLT5hdHRhY2hlZF9jb25uZWN0b3ItPmJh c2Uuc3RhdGU7CisJY3J0YyA9IGNvbm5fc3RhdGUtPmNydGM7CisJaWYgKGNydGMpIHsKKwkJcmV0 ID0gZHJtX21vZGVzZXRfbG9jaygmY3J0Yy0+bXV0ZXgsIGN0eCk7CisJCWlmIChyZXQpCisJCQly ZXR1cm4gcmV0OworCisJCXJldCA9IHdhaXRfZm9yX2NvbXBsZXRpb25faW50ZXJydXB0aWJsZSgm Y3J0Yy0+c3RhdGUtPmNvbW1pdC0+aHdfZG9uZSk7CisJfSBlbHNlCisJCXJldCA9IHdhaXRfZm9y X2NvbXBsZXRpb25faW50ZXJydXB0aWJsZSgmY29ubl9zdGF0ZS0+Y29tbWl0LT5od19kb25lKTsK KworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwlyZXQgPSBtdXRleF9sb2NrX2ludGVycnVw dGlibGUoJmRldl9wcml2LT5wc3IubG9jayk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKwor CWVuYWJsZSA9IHBzcl9nbG9iYWxfZW5hYmxlZCh2YWwpOworCisJaWYgKCFlbmFibGUpCisJCWlu dGVsX3Bzcl9kaXNhYmxlX2xvY2tlZChkZXZfcHJpdi0+cHNyLmRwKTsKKworCWRldl9wcml2LT5w c3IuZGVidWcgPSB2YWw7CisJaW50ZWxfcHNyX2lycV9jb250cm9sKGRldl9wcml2LCBkZXZfcHJp di0+cHNyLmRlYnVnICYgSTkxNV9QU1JfREVCVUdfSVJRKTsKKworCWlmIChkZXZfcHJpdi0+cHNy LnByZXBhcmVkICYmIGVuYWJsZSkKKwkJaW50ZWxfcHNyX2VuYWJsZV9sb2NrZWQoZGV2X3ByaXYs IHRvX2ludGVsX2NydGNfc3RhdGUoY3J0Yy0+c3RhdGUpKTsKKworCW11dGV4X3VubG9jaygmZGV2 X3ByaXYtPnBzci5sb2NrKTsKKwlyZXR1cm4gcmV0OworfQorCiBzdGF0aWMgdm9pZCBpbnRlbF9w c3Jfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiB7CiAJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0KQEAgLTgxMSw3ICs5MDMsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9w c3Jfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAJaWYgKGRldl9wcml2LT5wc3IuYnVz eV9mcm9udGJ1ZmZlcl9iaXRzIHx8IGRldl9wcml2LT5wc3IuYWN0aXZlKQogCQlnb3RvIHVubG9j azsKIAotCWludGVsX3Bzcl9hY3RpdmF0ZShkZXZfcHJpdi0+cHNyLmVuYWJsZWQpOworCWludGVs X3Bzcl9hY3RpdmF0ZShkZXZfcHJpdi0+cHNyLmRwKTsKIHVubG9jazoKIAltdXRleF91bmxvY2so JmRldl9wcml2LT5wc3IubG9jayk7CiB9CkBAIC04NjYsNyArOTU4LDcgQEAgdm9pZCBpbnRlbF9w c3JfaW52YWxpZGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCXJldHVy bjsKIAl9CiAKLQljcnRjID0gZHBfdG9fZGlnX3BvcnQoZGV2X3ByaXYtPnBzci5lbmFibGVkKS0+ YmFzZS5iYXNlLmNydGM7CisJY3J0YyA9IGRwX3RvX2RpZ19wb3J0KGRldl9wcml2LT5wc3IuZHAp LT5iYXNlLmJhc2UuY3J0YzsKIAlwaXBlID0gdG9faW50ZWxfY3J0YyhjcnRjKS0+cGlwZTsKIAog CWZyb250YnVmZmVyX2JpdHMgJj0gSU5URUxfRlJPTlRCVUZGRVJfQUxMX01BU0socGlwZSk7CkBA IC05MDksNyArMTAwMSw3IEBAIHZvaWQgaW50ZWxfcHNyX2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKIAkJcmV0dXJuOwogCX0KIAotCWNydGMgPSBkcF90b19kaWdfcG9y dChkZXZfcHJpdi0+cHNyLmVuYWJsZWQpLT5iYXNlLmJhc2UuY3J0YzsKKwljcnRjID0gZHBfdG9f ZGlnX3BvcnQoZGV2X3ByaXYtPnBzci5kcCktPmJhc2UuYmFzZS5jcnRjOwogCXBpcGUgPSB0b19p bnRlbF9jcnRjKGNydGMpLT5waXBlOwogCiAJZnJvbnRidWZmZXJfYml0cyAmPSBJTlRFTF9GUk9O VEJVRkZFUl9BTExfTUFTSyhwaXBlKTsKQEAgLTk5MSw3ICsxMDgzLDcgQEAgdm9pZCBpbnRlbF9w c3Jfc2hvcnRfcHVsc2Uoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKIAogCW11dGV4X2xvY2so JnBzci0+bG9jayk7CiAKLQlpZiAocHNyLT5lbmFibGVkICE9IGludGVsX2RwKQorCWlmICghcHNy LT5lbmFibGVkIHx8IHBzci0+ZHAgIT0gaW50ZWxfZHApCiAJCWdvdG8gZXhpdDsKIAogCWlmIChk cm1fZHBfZHBjZF9yZWFkYigmaW50ZWxfZHAtPmF1eCwgRFBfUFNSX1NUQVRVUywgJnZhbCkgIT0g MSkgewotLSAKMi4xOC4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRl bC1nZngK