From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dhinakaran Pandiyan Subject: [PATCH 4/5] drm/i915/psr: Control PSR interrupts via debugfs Date: Tue, 20 Mar 2018 15:41:50 -0700 Message-ID: <20180320224151.6009-5-dhinakaran.pandiyan@intel.com> References: <20180320224151.6009-1-dhinakaran.pandiyan@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9BFE86E008 for ; Tue, 20 Mar 2018 22:42:26 +0000 (UTC) In-Reply-To: <20180320224151.6009-1-dhinakaran.pandiyan@intel.com> 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: Daniel Vetter , Dhinakaran Pandiyan , Rodrigo Vivi List-Id: intel-gfx@lists.freedesktop.org SW50ZXJydXB0cyBvdGhlciB0aGFuIHRoZSBvbmUgZm9yIEFVWCBlcnJvcnMgYXJlIHJlcXVpcmVk IG9ubHkgZm9yIGRlYnVnLApzbyB1bm1hc2sgdGhlbSB2aWEgZGVidWdmcyB3aGVuIHRoZSB1c2Vy IHJlcXVlc3RzIGRlYnVnLgoKVXNlciBjYW4gbWFrZSBzdWNoIGEgcmVxdWVzdCB3aXRoCmVjaG8g MSA+IDxERUJVR19GUz4vZHJpLzAvaTkxNV9lZHBfcHNyX2RlYnVnCgpDYzogUm9kcmlnbyBWaXZp IDxyb2RyaWdvLnZpdmlAaW50ZWwuY29tPgpDYzogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJq YWxhQGxpbnV4LmludGVsLmNvbT4KQ2M6IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAaW50 ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBEaGluYWthcmFuIFBhbmRpeWFuIDxkaGluYWthcmFuLnBh bmRpeWFuQGludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMu YyB8IDM2ICsrKysrKysrKysrKysrKysrKystCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5oICAgICB8ICAxICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMgICAgIHwgNjgg KysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHJ2LmggICAgfCAgMiArKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcHNy LmMgICAgfCA1NiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDUgZmlsZXMgY2hhbmdl ZCwgMTIzIGluc2VydGlvbnMoKyksIDQwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kZWJ1Z2ZzLmMKaW5kZXggOTY0ZWExYTEyMzU3Li42NjlmM2Q1NjA1NGEgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZGVidWdmcy5jCkBAIC0yNjkwLDYgKzI2OTAsMzkgQEAgc3RhdGljIGludCBp OTE1X2VkcF9wc3Jfc3RhdHVzKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKIAlyZXR1 cm4gMDsKIH0KIAorc3RhdGljIGludAoraTkxNV9lZHBfcHNyX2RlYnVnX3NldCh2b2lkICpkYXRh LCB1NjQgdmFsKQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRhdGE7 CisKKwlpZiAoIUNBTl9QU1IoZGV2X3ByaXYpKQorCQlyZXR1cm4gLUVOT0RFVjsKKworCWlmICh2 YWwgPCAwICB8fCB2YWwgPiAxKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCURSTV9ERUJVR19LTVMo IiVzIFBTUiBkZWJ1Z1xuIiwgdmFsID09IDEgPyAiRW5hYmxpbmciIDogIkRpc2FibGluZyIpOwor CWludGVsX3Bzcl9kZWJ1Z19jb250cm9sKGRldl9wcml2LCB2YWwpOworCisJcmV0dXJuIDA7Cit9 CisKK3N0YXRpYyBpbnQKK2k5MTVfZWRwX3Bzcl9kZWJ1Z19nZXQodm9pZCAqZGF0YSwgdTY0ICp2 YWwpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGF0YTsKKworCWlm ICghQ0FOX1BTUihkZXZfcHJpdikpCisJCXJldHVybiAtRU5PREVWOworCisJKnZhbCA9IFJFQURf T05DRShkZXZfcHJpdi0+cHNyLmRlYnVnKTsKKwlyZXR1cm4gMDsKK30KKworREVGSU5FX1NJTVBM RV9BVFRSSUJVVEUoaTkxNV9lZHBfcHNyX2RlYnVnX2ZvcHMsCisJCQlpOTE1X2VkcF9wc3JfZGVi dWdfZ2V0LCBpOTE1X2VkcF9wc3JfZGVidWdfc2V0LAorCQkJIiVsbHVcbiIpOworCiBzdGF0aWMg aW50IGk5MTVfc2lua19jcmMoc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQogewogCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IG5vZGVfdG9faTkxNShtLT5wcml2YXRl KTsKQEAgLTQ4MTEsNyArNDg0NCw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaTkxNV9kZWJ1Z2Zz X2ZpbGVzIHsKIAl7Imk5MTVfZ3VjX2xvZ19yZWxheSIsICZpOTE1X2d1Y19sb2dfcmVsYXlfZm9w c30sCiAJeyJpOTE1X2hwZF9zdG9ybV9jdGwiLCAmaTkxNV9ocGRfc3Rvcm1fY3RsX2ZvcHN9LAog CXsiaTkxNV9pcGNfc3RhdHVzIiwgJmk5MTVfaXBjX3N0YXR1c19mb3BzfSwKLQl7Imk5MTVfZHJy c19jdGwiLCAmaTkxNV9kcnJzX2N0bF9mb3BzfQorCXsiaTkxNV9kcnJzX2N0bCIsICZpOTE1X2Ry cnNfY3RsX2ZvcHN9LAorCXsiaTkxNV9lZHBfcHNyX2RlYnVnIiwgJmk5MTVfZWRwX3Bzcl9kZWJ1 Z19mb3BzfQogfTsKIAogaW50IGk5MTVfZGVidWdmc19yZWdpc3RlcihzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAppbmRleCBlMjdiYThmYjY0 ZTYuLjEzNmZhMjI2N2E2NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCkBAIC02MDgsNiArNjA4 LDcgQEAgc3RydWN0IGk5MTVfcHNyIHsKIAlib29sIGNvbG9yaW1ldHJ5X3N1cHBvcnQ7CiAJYm9v bCBhbHBtOwogCWJvb2wgaGFzX2h3X3RyYWNraW5nOworCWJvb2wgZGVidWc7CiAKIAl2b2lkICgq ZW5hYmxlX3NvdXJjZSkoc3RydWN0IGludGVsX2RwICosCiAJCQkgICAgICBjb25zdCBzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfaXJxLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCmluZGV4IDU2MjI4ZThl ZDk4MC4uOTQ5NDFiNTJmMWNmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2lycS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKQEAgLTIzOTIsNDAg KzIzOTIsNiBAQCBzdGF0aWMgdm9pZCBpbGtfZGlzcGxheV9pcnFfaGFuZGxlcihzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCWlyb25sYWtlX3Jwc19jaGFuZ2VfaXJxX2hhbmRs ZXIoZGV2X3ByaXYpOwogfQogCi1zdGF0aWMgdm9pZCBoc3dfZWRwX3Bzcl9pcnFfaGFuZGxlcihz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCi17Ci0JdTMyIGVkcF9wc3JfaWlyID0g STkxNV9SRUFEKEVEUF9QU1JfSUlSKTsKLQl1MzIgZWRwX3Bzcl9pbXIgPSBJOTE1X1JFQUQoRURQ X1BTUl9JTVIpOwotCXUzMiBtYXNrID0gQklUKFRSQU5TQ09ERVJfRURQKTsKLQllbnVtIHRyYW5z Y29kZXIgY3B1X3RyYW5zY29kZXI7Ci0KLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA4KQot CQltYXNrIHw9IEJJVChUUkFOU0NPREVSX0EpIHwKLQkJCUJJVChUUkFOU0NPREVSX0IpIHwKLQkJ CUJJVChUUkFOU0NPREVSX0MpOwotCi0JZm9yX2VhY2hfY3B1X3RyYW5zY29kZXJfbWFza2VkKGRl dl9wcml2LCBjcHVfdHJhbnNjb2RlciwgbWFzaykgewotCQlpZiAoZWRwX3Bzcl9paXIgJiBFRFBf UFNSX0VSUk9SKGNwdV90cmFuc2NvZGVyKSkKLQkJCURSTV9ERUJVR19LTVMoIlRyYW5zY29kZXIg JXMgUFNSIGVycm9yXG4iLAotCQkJCSAgICAgIHRyYW5zY29kZXJfbmFtZShjcHVfdHJhbnNjb2Rl cikpOwotCi0JCWlmIChlZHBfcHNyX2lpciAmIEVEUF9QU1JfUFJFX0VOVFJZKGNwdV90cmFuc2Nv ZGVyKSkgewotCQkJRFJNX0RFQlVHX0tNUygiVHJhbnNjb2RlciAlcyBQU1IgcHJlcGFyZSBlbnRy eSBpbiAyIHZibGFua3NcbiIsCi0JCQkJICAgICAgdHJhbnNjb2Rlcl9uYW1lKGNwdV90cmFuc2Nv ZGVyKSk7Ci0JCQllZHBfcHNyX2ltciB8PSBFRFBfUFNSX1BSRV9FTlRSWShjcHVfdHJhbnNjb2Rl cik7Ci0JCX0KLQotCQlpZiAoZWRwX3Bzcl9paXIgJiBFRFBfUFNSX1BPU1RfRVhJVChjcHVfdHJh bnNjb2RlcikpIHsKLQkJCURSTV9ERUJVR19LTVMoIlRyYW5zY29kZXIgJXMgUFNSIGV4aXQgY29t cGxldGVkXG4iLAotCQkJCSAgICAgIHRyYW5zY29kZXJfbmFtZShjcHVfdHJhbnNjb2RlcikpOwot CQkJZWRwX3Bzcl9pbXIgJj0gfkVEUF9QU1JfUFJFX0VOVFJZKGNwdV90cmFuc2NvZGVyKTsKLQkJ fQotCX0KLQotCUk5MTVfV1JJVEUoRURQX1BTUl9JTVIsIGVkcF9wc3JfaW1yKTsKLQlJOTE1X1dS SVRFKEVEUF9QU1JfSUlSLCBlZHBfcHNyX2lpcik7Ci19Ci0KIHN0YXRpYyB2b2lkIGl2Yl9kaXNw bGF5X2lycV9oYW5kbGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJCQkg ICAgdTMyIGRlX2lpcikKIHsKQEAgLTI0MzgsOCArMjQwNCwxMiBAQCBzdGF0aWMgdm9pZCBpdmJf ZGlzcGxheV9pcnFfaGFuZGxlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJ aWYgKGRlX2lpciAmIERFX0VSUl9JTlRfSVZCKQogCQlpdmJfZXJyX2ludF9oYW5kbGVyKGRldl9w cml2KTsKIAotCWlmIChkZV9paXIgJiBERV9FRFBfUFNSX0lOVF9IU1cpCi0JCWhzd19lZHBfcHNy X2lycV9oYW5kbGVyKGRldl9wcml2KTsKKwlpZiAoZGVfaWlyICYgREVfRURQX1BTUl9JTlRfSFNX KSB7CisJCXUzMiBwc3JfaWlyID0gSTkxNV9SRUFEKEVEUF9QU1JfSUlSKTsKKworCQlpbnRlbF9w c3JfaXJxX2hhbmRsZXIoZGV2X3ByaXYsIHBzcl9paXIpOworCQlJOTE1X1dSSVRFKEVEUF9QU1Jf SUlSLCBwc3JfaWlyKTsKKwl9CiAKIAlpZiAoZGVfaWlyICYgREVfQVVYX0NIQU5ORUxfQV9JVkIp CiAJCWRwX2F1eF9pcnFfaGFuZGxlcihkZXZfcHJpdik7CkBAIC0yNTgxLDcgKzI1NTEsMTAgQEAg Z2VuOF9kZV9pcnFfaGFuZGxlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUz MiBtYXN0ZXJfY3RsKQogCQkJfQogCiAJCQlpZiAoaWlyICYgR0VOOF9ERV9FRFBfUFNSKSB7Ci0J CQkJaHN3X2VkcF9wc3JfaXJxX2hhbmRsZXIoZGV2X3ByaXYpOworCQkJCXUzMiBwc3JfaWlyID0g STkxNV9SRUFEKEVEUF9QU1JfSUlSKTsKKworCQkJCWludGVsX3Bzcl9pcnFfaGFuZGxlcihkZXZf cHJpdiwgcHNyX2lpcik7CisJCQkJSTkxNV9XUklURShFRFBfUFNSX0lJUiwgcHNyX2lpcik7CiAJ CQkJZm91bmQgPSB0cnVlOwogCQkJfQogCkBAIC0zNjk5LDYgKzM2NzIsMjMgQEAgc3RhdGljIHZv aWQgZ2VuNV9ndF9pcnFfcG9zdGluc3RhbGwoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAl9CiB9 CiAKK3N0YXRpYyBpbmxpbmUgdTMyIHBzcl9tYXNrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKK3sKKwl1MzIgdHJhbnNjb2RlcnMgPSBCSVQoVFJBTlNDT0RFUl9FRFApOworCXUz MiBtYXNrID0gMDsKKwllbnVtIHRyYW5zY29kZXIgY3B1X3RyYW5zY29kZXI7CisKKwlpZiAoSU5U RUxfR0VOKGRldl9wcml2KSA+PSA4KQorCQl0cmFuc2NvZGVycyB8PSBCSVQoVFJBTlNDT0RFUl9B KSB8CisJCQkgICAgICAgQklUKFRSQU5TQ09ERVJfQikgfAorCQkJICAgICAgIEJJVChUUkFOU0NP REVSX0MpOworCisJZm9yX2VhY2hfY3B1X3RyYW5zY29kZXJfbWFza2VkKGRldl9wcml2LCBjcHVf dHJhbnNjb2RlciwgdHJhbnNjb2RlcnMpCisJCW1hc2sgfD0gIEVEUF9QU1JfRVJST1IoY3B1X3Ry YW5zY29kZXIpOworCisJcmV0dXJuIH5tYXNrOworfQorCiBzdGF0aWMgaW50IGlyb25sYWtlX2ly cV9wb3N0aW5zdGFsbChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogewogCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKQEAgLTM3MjEsNyArMzcxMSw3IEBA IHN0YXRpYyBpbnQgaXJvbmxha2VfaXJxX3Bvc3RpbnN0YWxsKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYpCiAKIAlpZiAoSVNfSEFTV0VMTChkZXZfcHJpdikpIHsKIAkJZ2VuM19hc3NlcnRfaWlyX2lz X3plcm8oZGV2X3ByaXYsIEVEUF9QU1JfSUlSKTsKLQkJSTkxNV9XUklURShFRFBfUFNSX0lNUiwg MCk7CisJCUk5MTVfV1JJVEUoRURQX1BTUl9JTVIsIHBzcl9tYXNrKGRldl9wcml2KSk7CiAJCWRp c3BsYXlfbWFzayB8PSBERV9FRFBfUFNSX0lOVF9IU1c7CiAJfQogCkBAIC0zODYxLDcgKzM4NTEs NyBAQCBzdGF0aWMgdm9pZCBnZW44X2RlX2lycV9wb3N0aW5zdGFsbChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCiAJCWRlX3BvcnRfZW5hYmxlcyB8PSBHRU44X1BPUlRfRFBfQV9I T1RQTFVHOwogCiAJZ2VuM19hc3NlcnRfaWlyX2lzX3plcm8oZGV2X3ByaXYsIEVEUF9QU1JfSUlS KTsKLQlJOTE1X1dSSVRFKEVEUF9QU1JfSU1SLCAwKTsKKwlJOTE1X1dSSVRFKEVEUF9QU1JfSU1S LCBwc3JfbWFzayhkZXZfcHJpdikpOwogCiAJZm9yX2VhY2hfcGlwZShkZXZfcHJpdiwgcGlwZSkg ewogCQlkZXZfcHJpdi0+ZGVfaXJxX21hc2tbcGlwZV0gPSB+ZGVfcGlwZV9tYXNrZWQ7CmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rydi5oCmluZGV4IGEyMTVhYTc4YjBiZS4uOGJlNzVjYzViZjI0IDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAorKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcnYuaApAQCAtMTg4Nyw2ICsxODg3LDggQEAgdm9pZCBpbnRlbF9w c3Jfc2luZ2xlX2ZyYW1lX3VwZGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs CiAJCQkJICAgdW5zaWduZWQgZnJvbnRidWZmZXJfYml0cyk7CiB2b2lkIGludGVsX3Bzcl9jb21w dXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAogCQkJICAgICAgc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpOwordm9pZCBpbnRlbF9wc3JfZGVidWdfY29udHJv bChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGJvb2wgZW5hYmxlKTsKK3ZvaWQg aW50ZWxfcHNyX2lycV9oYW5kbGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwg dTMyIHBzcl9paXIpOwogCiAvKiBpbnRlbF9ydW50aW1lX3BtLmMgKi8KIGludCBpbnRlbF9wb3dl cl9kb21haW5zX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKik7CmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wc3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3Bzci5jCmluZGV4IDMxN2NiNGExMjY5My4uNjRlY2VhODA0MzhkIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wc3IuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9wc3IuYwpAQCAtOTMsNiArOTMsNjIgQEAgc3RhdGljIHZvaWQgcHNyX2F1eF9pb19w b3dlcl9wdXQoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKIAlpbnRlbF9kaXNwbGF5X3Bvd2Vy X3B1dChkZXZfcHJpdiwgcHNyX2F1eF9kb21haW4oaW50ZWxfZHApKTsKIH0KIAordm9pZCBpbnRl bF9wc3JfZGVidWdfY29udHJvbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGJv b2wgZW5hYmxlKQoreworCXUzMiB0cmFuc2NvZGVycyA9IEJJVChUUkFOU0NPREVSX0VEUCk7CisJ dTMyIG1hc2sgPSAwOworCWVudW0gdHJhbnNjb2RlciBjcHVfdHJhbnNjb2RlcjsKKworCS8qIE5v IFBTUiBpbnRlcnJ1cHRzIG9uIFZMVi9DSFYgKi8KKwlpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJp dikgfHwgSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpCisJCXJldHVybjsKKworCWlmIChJTlRFTF9H RU4oZGV2X3ByaXYpID49IDgpCisJCXRyYW5zY29kZXJzIHw9IEJJVChUUkFOU0NPREVSX0EpIHwK KwkJCSAgICAgICBCSVQoVFJBTlNDT0RFUl9CKSB8CisJCQkgICAgICAgQklUKFRSQU5TQ09ERVJf Qyk7CisKKwlmb3JfZWFjaF9jcHVfdHJhbnNjb2Rlcl9tYXNrZWQoZGV2X3ByaXYsIGNwdV90cmFu c2NvZGVyLCB0cmFuc2NvZGVycykKKwkJbWFzayA9IEVEUF9QU1JfUE9TVF9FWElUKGNwdV90cmFu c2NvZGVyKSB8CisJCSAgICAgICBFRFBfUFNSX1BSRV9FTlRSWShjcHVfdHJhbnNjb2Rlcik7CisK KwlpZiAoZW5hYmxlKSB7CisJCVdSSVRFX09OQ0UoZGV2X3ByaXYtPnBzci5kZWJ1ZywgdHJ1ZSk7 CisJCUk5MTVfV1JJVEUoRURQX1BTUl9JTVIsIH5tYXNrKTsKKwl9IGVsc2UgeworCQlJOTE1X1dS SVRFKEVEUF9QU1JfSU1SLCBtYXNrKTsKKwkJV1JJVEVfT05DRShkZXZfcHJpdi0+cHNyLmRlYnVn LCBmYWxzZSk7CisJfQorfQorCit2b2lkIGludGVsX3Bzcl9pcnFfaGFuZGxlcihzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUzMiBwc3JfaWlyKQoreworCXUzMiB0cmFuc2NvZGVy cyA9IEJJVChUUkFOU0NPREVSX0VEUCk7CisJZW51bSB0cmFuc2NvZGVyIGNwdV90cmFuc2NvZGVy OworCisJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOCkKKwkJdHJhbnNjb2RlcnMgfD0gQklU KFRSQU5TQ09ERVJfQSkgfAorCQkJICAgICAgIEJJVChUUkFOU0NPREVSX0IpIHwKKwkJCSAgICAg ICBCSVQoVFJBTlNDT0RFUl9DKTsKKworCWZvcl9lYWNoX2NwdV90cmFuc2NvZGVyX21hc2tlZChk ZXZfcHJpdiwgY3B1X3RyYW5zY29kZXIsIHRyYW5zY29kZXJzKSB7CisJCS8qIEZJWE1FOiBFeGl0 IFBTUiB3aGVuIHRoaXMgaGFwcGVucy4gKi8KKwkJaWYgKHBzcl9paXIgJiBFRFBfUFNSX0VSUk9S KGNwdV90cmFuc2NvZGVyKSkKKwkJCURSTV9ERUJVR19LTVMoIlt0cmFuc2NvZGVyICVzXSBQU1Ig YXV4IGVycm9yXG4iLAorCQkJCSAgICAgIHRyYW5zY29kZXJfbmFtZShjcHVfdHJhbnNjb2Rlcikp OworCisJCWlmIChwc3JfaWlyICYgRURQX1BTUl9QUkVfRU5UUlkoY3B1X3RyYW5zY29kZXIpKSB7 CisJCQlEUk1fREVCVUdfS01TKCJbdHJhbnNjb2RlciAlc10gUFNSIGVudHJ5IGluIDIgdmJsYW5r c1xuIiwKKwkJCQkgICAgICB0cmFuc2NvZGVyX25hbWUoY3B1X3RyYW5zY29kZXIpKTsKKwkJfQor CisJCWlmIChwc3JfaWlyICYgRURQX1BTUl9QT1NUX0VYSVQoY3B1X3RyYW5zY29kZXIpKSB7CisJ CQlEUk1fREVCVUdfS01TKCJbdHJhbnNjb2RlciAlc10gUFNSIGV4aXQgY29tcGxldGVkXG4iLAor CQkJCSAgICAgIHRyYW5zY29kZXJfbmFtZShjcHVfdHJhbnNjb2RlcikpOworCQl9CisJfQorfQor CiBzdGF0aWMgYm9vbCBpbnRlbF9kcF9nZXRfeV9jb3JkX3N0YXR1cyhzdHJ1Y3QgaW50ZWxfZHAg KmludGVsX2RwKQogewogCXVpbnQ4X3QgcHNyX2NhcHMgPSAwOwotLSAKMi4xNC4xCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGlu ZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK