From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alex Deucher Subject: [PATCH 08/13] drm/amd: add pm domain for ACP IP sub blocks Date: Fri, 4 Dec 2015 18:40:36 -0500 Message-ID: <1449272440-8735-9-git-send-email-alexander.deucher@amd.com> References: <1449272440-8735-1-git-send-email-alexander.deucher@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1449272440-8735-1-git-send-email-alexander.deucher@amd.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: broonie@kernel.org, airlied@gmail.com, dri-devel@lists.freedesktop.org, alsa-devel@alsa-project.org, maruthi.bayyavarapu@amd.com, rajeevkumar.linux@gmail.com Cc: Alex Deucher , lgirdwood@gmail.com, perex@perex.cz List-Id: alsa-devel@alsa-project.org QUNQIElQIGhhdmUgaW50ZXJuYWwgRE1BIGNvbnRyb2xsZXIsIERXIEkyUyBjb250cm9sbGVyIGFu ZCBEU1BzCmFzIHNlcGFyYXRlIHBvd2VyIHRpbGVzLiBETUEgYW5kIEkyUyBkZXZpY2VzIGFyZSBh ZGRlZCB0byBnZW5lcmljCnBtIGRvbWFpbiwgc28gdGhhdCBlbnRpcmUgSVAgY2FuIGJlIHBvd2Vy ZWQgb2ZmL29uIGF0IGFwcHJvcHJpYXRlCnRpbWVzLiBVbnVzZWQgRFNQcyBhcmUgbWFkZSB0byBi ZSBwb3dlcmVkIG9mZiB0aG91Z2ggdGhleSBhcmUgcG93ZXJlZApvbiBkdXJpbmcgQUNQIHBtIGRv bWFpbiBwb3dlciBvbiBzZXF1ZW5jZS4KClNpZ25lZC1vZmYtYnk6IE1hcnV0aGkgQmF5eWF2YXJh cHUgPG1hcnV0aGkuYmF5eWF2YXJhcHVAYW1kLmNvbT4KUmV2aWV3ZWQtYnk6IEFsZXggRGV1Y2hl ciA8YWxleGFuZGVyLmRldWNoZXJAYW1kLmNvbT4KU2lnbmVkLW9mZi1ieTogQWxleCBEZXVjaGVy IDxhbGV4YW5kZXIuZGV1Y2hlckBhbWQuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvYWNw L0tjb25maWcgICAgICAgICB8ICAgMSArCiBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRn cHVfYWNwLmMgfCAyMDYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KIGRyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hY3AuaCB8ICAgMSArCiAzIGZpbGVzIGNoYW5nZWQs IDIwNyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2FtZC9hY3AvS2NvbmZpZyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYWNwL0tjb25maWcK aW5kZXggMjhiNWU3MC4uMmIwNzgxMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9h Y3AvS2NvbmZpZworKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FjcC9LY29uZmlnCkBAIC00LDYg KzQsNyBAQCBjb25maWcgRFJNX0FNRF9BQ1AKICAgICAgICBib29sICJFbmFibGUgQUNQIElQIHN1 cHBvcnQiCiAgICAgICAgZGVmYXVsdCB5CiAgICAgICAgc2VsZWN0IE1GRF9DT1JFCisgICAgICAg c2VsZWN0IFBNX0dFTkVSSUNfRE9NQUlOUyBpZiBQTQogICAgICAgIGhlbHAKIAlDaG9vc2UgdGhp cyBvcHRpb24gdG8gZW5hYmxlIEFDUCBJUCBzdXBwb3J0IGZvciBBTUQgU09Dcy4KIApkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FjcC5jIGIvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FjcC5jCmluZGV4IGViNWRjMTAuLmI0MjVjNDQgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hY3AuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYWNwLmMKQEAgLTI0LDYgKzI0LDcgQEAK ICAqLwogCiAjaW5jbHVkZSA8bGludXgvaXJxZG9tYWluLmg+CisjaW5jbHVkZSA8bGludXgvcG1f ZG9tYWluLmg+CiAjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+CiAjaW5jbHVkZSA8 c291bmQvZGVzaWdud2FyZV9pMnMuaD4KICNpbmNsdWRlIDxzb3VuZC9wY20uaD4KQEAgLTEwMiw2 ICsxMDMsMTU1IEBAIHN0YXRpYyBpbnQgYWNwX3N3X2Zpbmkodm9pZCAqaGFuZGxlKQogCXJldHVy biAwOwogfQogCisvKiBwb3dlciBvZmYgYSB0aWxlL2Jsb2NrIHdpdGhpbiBBQ1AgKi8KK3N0YXRp YyBpbnQgYWNwX3N1c3BlbmRfdGlsZSh2b2lkICpjZ3NfZGV2LCBpbnQgdGlsZSkKK3sKKwl1MzIg dmFsID0gMDsKKwl1MzIgY291bnQgPSAwOworCisJaWYgKCh0aWxlICA8IEFDUF9USUxFX1AxKSB8 fCAodGlsZSA+IEFDUF9USUxFX0RTUDIpKSB7CisJCXByX2VycigiSW52YWxpZCBBQ1AgdGlsZSA6 ICVkIHRvIHN1c3BlbmRcbiIsIHRpbGUpOworCQlyZXR1cm4gLTE7CisJfQorCisJdmFsID0gY2dz X3JlYWRfcmVnaXN0ZXIoY2dzX2RldiwgbW1BQ1BfUEdGU01fUkVBRF9SRUdfMCArIHRpbGUpOwor CXZhbCAmPSBBQ1BfVElMRV9PTl9NQVNLOworCisJaWYgKHZhbCA9PSAweDApIHsKKwkJdmFsID0g Y2dzX3JlYWRfcmVnaXN0ZXIoY2dzX2RldiwgbW1BQ1BfUEdGU01fUkVUQUlOX1JFRyk7CisJCXZh bCA9IHZhbCB8ICgxIDw8IHRpbGUpOworCQljZ3Nfd3JpdGVfcmVnaXN0ZXIoY2dzX2RldiwgbW1B Q1BfUEdGU01fUkVUQUlOX1JFRywgdmFsKTsKKwkJY2dzX3dyaXRlX3JlZ2lzdGVyKGNnc19kZXYs IG1tQUNQX1BHRlNNX0NPTkZJR19SRUcsCisJCQkJCTB4NTAwICsgdGlsZSk7CisKKwkJY291bnQg PSBBQ1BfVElNRU9VVF9MT09QOworCQl3aGlsZSAodHJ1ZSkgeworCQkJdmFsID0gY2dzX3JlYWRf cmVnaXN0ZXIoY2dzX2RldiwgbW1BQ1BfUEdGU01fUkVBRF9SRUdfMAorCQkJCQkJCQkrIHRpbGUp OworCQkJdmFsID0gdmFsICYgQUNQX1RJTEVfT05fTUFTSzsKKwkJCWlmICh2YWwgPT0gQUNQX1RJ TEVfT0ZGX01BU0spCisJCQkJYnJlYWs7CisJCQlpZiAoLS1jb3VudCA9PSAwKSB7CisJCQkJcHJf ZXJyKCJUaW1lb3V0IHJlYWRpbmcgQUNQIFBHRlNNIHN0YXR1c1xuIik7CisJCQkJcmV0dXJuIC1F VElNRURPVVQ7CisJCQl9CisJCQl1ZGVsYXkoMTAwKTsKKwkJfQorCisJCXZhbCA9IGNnc19yZWFk X3JlZ2lzdGVyKGNnc19kZXYsIG1tQUNQX1BHRlNNX1JFVEFJTl9SRUcpOworCisJCXZhbCB8PSBB Q1BfVElMRV9PRkZfUkVUQUlOX1JFR19NQVNLOworCQljZ3Nfd3JpdGVfcmVnaXN0ZXIoY2dzX2Rl diwgbW1BQ1BfUEdGU01fUkVUQUlOX1JFRywgdmFsKTsKKwl9CisJcmV0dXJuIDA7Cit9CisKKy8q IHBvd2VyIG9uIGEgdGlsZS9ibG9jayB3aXRoaW4gQUNQICovCitzdGF0aWMgaW50IGFjcF9yZXN1 bWVfdGlsZSh2b2lkICpjZ3NfZGV2LCBpbnQgdGlsZSkKK3sKKwl1MzIgdmFsID0gMDsKKwl1MzIg Y291bnQgPSAwOworCisJaWYgKCh0aWxlICA8IEFDUF9USUxFX1AxKSB8fCAodGlsZSA+IEFDUF9U SUxFX0RTUDIpKSB7CisJCXByX2VycigiSW52YWxpZCBBQ1AgdGlsZSB0byByZXN1bWVcbiIpOwor CQlyZXR1cm4gLTE7CisJfQorCisJdmFsID0gY2dzX3JlYWRfcmVnaXN0ZXIoY2dzX2RldiwgbW1B Q1BfUEdGU01fUkVBRF9SRUdfMCArIHRpbGUpOworCXZhbCA9IHZhbCAmIEFDUF9USUxFX09OX01B U0s7CisKKwlpZiAodmFsICE9IDB4MCkgeworCQljZ3Nfd3JpdGVfcmVnaXN0ZXIoY2dzX2Rldiwg bW1BQ1BfUEdGU01fQ09ORklHX1JFRywKKwkJCQkJMHg2MDAgKyB0aWxlKTsKKwkJY291bnQgPSBB Q1BfVElNRU9VVF9MT09QOworCQl3aGlsZSAodHJ1ZSkgeworCQkJdmFsID0gY2dzX3JlYWRfcmVn aXN0ZXIoY2dzX2RldiwgbW1BQ1BfUEdGU01fUkVBRF9SRUdfMAorCQkJCQkJCSsgdGlsZSk7CisJ CQl2YWwgPSB2YWwgJiBBQ1BfVElMRV9PTl9NQVNLOworCQkJaWYgKHZhbCA9PSAweDApCisJCQkJ YnJlYWs7CisJCQlpZiAoLS1jb3VudCA9PSAwKSB7CisJCQkJcHJfZXJyKCJUaW1lb3V0IHJlYWRp bmcgQUNQIFBHRlNNIHN0YXR1c1xuIik7CisJCQkJcmV0dXJuIC1FVElNRURPVVQ7CisJCQl9CisJ CQl1ZGVsYXkoMTAwKTsKKwkJfQorCQl2YWwgPSBjZ3NfcmVhZF9yZWdpc3RlcihjZ3NfZGV2LCBt bUFDUF9QR0ZTTV9SRVRBSU5fUkVHKTsKKwkJaWYgKHRpbGUgPT0gQUNQX1RJTEVfUDEpCisJCQl2 YWwgPSB2YWwgJiAoQUNQX1RJTEVfUDFfTUFTSyk7CisJCWVsc2UgaWYgKHRpbGUgPT0gQUNQX1RJ TEVfUDIpCisJCQl2YWwgPSB2YWwgJiAoQUNQX1RJTEVfUDJfTUFTSyk7CisKKwkJY2dzX3dyaXRl X3JlZ2lzdGVyKGNnc19kZXYsIG1tQUNQX1BHRlNNX1JFVEFJTl9SRUcsIHZhbCk7CisJfQorCXJl dHVybiAwOworfQorCitzdHJ1Y3QgYWNwX3BtX2RvbWFpbiB7CisJdm9pZCAqY2dzX2RldjsKKwlz dHJ1Y3QgZ2VuZXJpY19wbV9kb21haW4gZ3BkOworfTsKKworc3RhdGljIGludCBhY3BfcG93ZXJv ZmYoc3RydWN0IGdlbmVyaWNfcG1fZG9tYWluICpnZW5wZCkKK3sKKwlpbnQgaSwgcmV0OworCXN0 cnVjdCBhY3BfcG1fZG9tYWluICphcGQ7CisKKwlhcGQgPSBjb250YWluZXJfb2YoZ2VucGQsIHN0 cnVjdCBhY3BfcG1fZG9tYWluLCBncGQpOworCWlmIChhcGQgIT0gTlVMTCkgeworCQkvKiBEb25v dCByZXR1cm4gYWJydXB0bHkgaWYgYW55IG9mIHBvd2VyIHRpbGUgZmFpbHMgdG8gc3VzcGVuZC4K KwkJICogTG9nIGl0IGFuZCBjb250aW51ZSBwb3dlcmluZyBvZmYgb3RoZXIgdGlsZQorCQkgKi8K KwkJZm9yIChpID0gNDsgaSA+PSAwIDsgaS0tKSB7CisJCQlyZXQgPSBhY3Bfc3VzcGVuZF90aWxl KGFwZC0+Y2dzX2RldiwgQUNQX1RJTEVfUDEgKyBpKTsKKwkJCWlmIChyZXQpCisJCQkJcHJfZXJy KCJBQ1AgdGlsZSAlZCB0aWxlIHN1c3BlbmQgZmFpbGVkXG4iLCBpKTsKKwkJfQorCX0KKwlyZXR1 cm4gMDsKK30KKworc3RhdGljIGludCBhY3BfcG93ZXJvbihzdHJ1Y3QgZ2VuZXJpY19wbV9kb21h aW4gKmdlbnBkKQoreworCWludCBpLCByZXQ7CisJc3RydWN0IGFjcF9wbV9kb21haW4gKmFwZDsK KworCWFwZCA9IGNvbnRhaW5lcl9vZihnZW5wZCwgc3RydWN0IGFjcF9wbV9kb21haW4sIGdwZCk7 CisJaWYgKGFwZCAhPSBOVUxMKSB7CisJCWZvciAoaSA9IDA7IGkgPCAyOyBpKyspIHsKKwkJCXJl dCA9IGFjcF9yZXN1bWVfdGlsZShhcGQtPmNnc19kZXYsIEFDUF9USUxFX1AxICsgaSk7CisJCQlp ZiAocmV0KSB7CisJCQkJcHJfZXJyKCJBQ1AgdGlsZSAlZCByZXN1bWUgZmFpbGVkXG4iLCBpKTsK KwkJCQlicmVhazsKKwkJCX0KKwkJfQorCisJCS8qIERpc2FibGUgRFNQcyB3aGljaCBhcmUgbm90 IGdvaW5nIHRvIGJlIHVzZWQgKi8KKwkJZm9yIChpID0gMDsgaSA8IDM7IGkrKykgeworCQkJcmV0 ID0gYWNwX3N1c3BlbmRfdGlsZShhcGQtPmNnc19kZXYsIEFDUF9USUxFX0RTUDAgKyBpKTsKKwkJ CS8qIENvbnRpbnVlIHN1c3BlbmRpbmcgb3RoZXIgRFNQLCBldmVuIGlmIG9uZSBmYWlscyAqLwor CQkJaWYgKHJldCkKKwkJCQlwcl9lcnIoIkFDUCBEU1AgJWQgc3VzcGVuZCBmYWlsZWRcbiIsIGkp OworCQl9CisJfQorCXJldHVybiAwOworfQorCitzdGF0aWMgc3RydWN0IGRldmljZSAqZ2V0X21m ZF9jZWxsX2Rldihjb25zdCBjaGFyICpkZXZpY2VfbmFtZSwgaW50IHIpCit7CisJY2hhciBhdXRv X2Rldl9uYW1lWzI1XTsKKwljaGFyIGJ1Zls4XTsKKwlzdHJ1Y3QgZGV2aWNlICpkZXY7CisKKwlz cHJpbnRmKGJ1ZiwgIi4lZC5hdXRvIiwgcik7CisJc3RyY3B5KGF1dG9fZGV2X25hbWUsIGRldmlj ZV9uYW1lKTsKKwlzdHJjYXQoYXV0b19kZXZfbmFtZSwgYnVmKTsKKwlkZXYgPSBidXNfZmluZF9k ZXZpY2VfYnlfbmFtZSgmcGxhdGZvcm1fYnVzX3R5cGUsIE5VTEwsIGF1dG9fZGV2X25hbWUpOwor CWRldl9pbmZvKGRldiwgImRldmljZSAlcyBhZGRlZCB0byBwbSBkb21haW5cbiIsIGF1dG9fZGV2 X25hbWUpOworCisJcmV0dXJuIGRldjsKK30KKwogLyoqCiAgKiBhY3BfaHdfaW5pdCAtIHN0YXJ0 IGFuZCB0ZXN0IEFDUCBibG9jawogICoKQEAgLTExMCw4ICsyNjAsOSBAQCBzdGF0aWMgaW50IGFj cF9zd19maW5pKHZvaWQgKmhhbmRsZSkKICAqLwogc3RhdGljIGludCBhY3BfaHdfaW5pdCh2b2lk ICpoYW5kbGUpCiB7Ci0JaW50IHI7CisJaW50IHIsIGk7CiAJdWludDY0X3QgYWNwX2Jhc2U7CisJ c3RydWN0IGRldmljZSAqZGV2OwogCXN0cnVjdCBpMnNfcGxhdGZvcm1fZGF0YSAqaTJzX3BkYXRh OwogCiAJc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSAoc3RydWN0IGFtZGdwdV9kZXZpY2Ug KiloYW5kbGU7CkBAIC0xMzcsNiArMjg4LDE5IEBAIHN0YXRpYyBpbnQgYWNwX2h3X2luaXQodm9p ZCAqaGFuZGxlKQogCWVsc2UgaWYgKHIpCiAJCXJldHVybiByOwogCisJYWRldi0+YWNwLmFjcF9n ZW5wZCA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBhY3BfcG1fZG9tYWluKSwgR0ZQX0tFUk5FTCk7 CisJaWYgKGFkZXYtPmFjcC5hY3BfZ2VucGQgPT0gTlVMTCkKKwkJcmV0dXJuIC1FTk9NRU07CisK KwlhZGV2LT5hY3AuYWNwX2dlbnBkLT5ncGQubmFtZSA9ICJBQ1BfQVVESU8iOworCWFkZXYtPmFj cC5hY3BfZ2VucGQtPmdwZC5wb3dlcl9vZmYgPSBhY3BfcG93ZXJvZmY7CisJYWRldi0+YWNwLmFj cF9nZW5wZC0+Z3BkLnBvd2VyX29uID0gYWNwX3Bvd2Vyb247CisKKworCWFkZXYtPmFjcC5hY3Bf Z2VucGQtPmNnc19kZXYgPSBhZGV2LT5hY3AuY2dzX2RldmljZTsKKworCXBtX2dlbnBkX2luaXQo JmFkZXYtPmFjcC5hY3BfZ2VucGQtPmdwZCwgTlVMTCwgZmFsc2UpOworCiAJYWRldi0+YWNwLmFj cF9jZWxsID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IG1mZF9jZWxsKSAqIEFDUF9ERVZTLAogCQkJ CQkJCUdGUF9LRVJORUwpOwogCkBAIC0yMTAsNiArMzc0LDE1IEBAIHN0YXRpYyBpbnQgYWNwX2h3 X2luaXQodm9pZCAqaGFuZGxlKQogCWlmIChyKQogCQlyZXR1cm4gcjsKIAorCWZvciAoaSA9IDA7 IGkgPCBBQ1BfREVWUyA7IGkrKykgeworCQlkZXYgPSBnZXRfbWZkX2NlbGxfZGV2KGFkZXYtPmFj cC5hY3BfY2VsbFtpXS5uYW1lLCBpKTsKKwkJciA9IHBtX2dlbnBkX2FkZF9kZXZpY2UoJmFkZXYt PmFjcC5hY3BfZ2VucGQtPmdwZCwgZGV2KTsKKwkJaWYgKHIpIHsKKwkJCWRldl9lcnIoZGV2LCAi RmFpbGVkIHRvIGFkZCBkZXYgdG8gZ2VucGRcbiIpOworCQkJcmV0dXJuIHI7CisJCX0KKwl9CisK IAlyZXR1cm4gMDsKIH0KIApAQCAtMjIxLDEwICszOTQsMjIgQEAgc3RhdGljIGludCBhY3BfaHdf aW5pdCh2b2lkICpoYW5kbGUpCiAgKi8KIHN0YXRpYyBpbnQgYWNwX2h3X2Zpbmkodm9pZCAqaGFu ZGxlKQogeworCWludCBpLCByZXQ7CisJc3RydWN0IGRldmljZSAqZGV2OworCiAJc3RydWN0IGFt ZGdwdV9kZXZpY2UgKmFkZXYgPSAoc3RydWN0IGFtZGdwdV9kZXZpY2UgKiloYW5kbGU7CiAKKwlm b3IgKGkgPSAwOyBpIDwgQUNQX0RFVlMgOyBpKyspIHsKKwkJZGV2ID0gZ2V0X21mZF9jZWxsX2Rl dihhZGV2LT5hY3AuYWNwX2NlbGxbaV0ubmFtZSwgaSk7CisJCXJldCA9IHBtX2dlbnBkX3JlbW92 ZV9kZXZpY2UoJmFkZXYtPmFjcC5hY3BfZ2VucGQtPmdwZCwgZGV2KTsKKwkJLyogSWYgcmVtb3Zh bCBmYWlscywgZG9udCBnaXZldXAgYW5kIHRyeSByZXN0ICovCisJCWlmIChyZXQpCisJCQlkZXZf ZXJyKGRldiwgInJlbW92ZSBkZXYgZnJvbSBnZW5wZCBmYWlsZWRcbiIpOworCX0KKwogCW1mZF9y ZW1vdmVfZGV2aWNlcyhhZGV2LT5hY3AucGFyZW50KTsKIAlrZnJlZShhZGV2LT5hY3AuYWNwX3Jl cyk7CisJa2ZyZWUoYWRldi0+YWNwLmFjcF9nZW5wZCk7CiAJa2ZyZWUoYWRldi0+YWNwLmFjcF9j ZWxsKTsKIAogCXJldHVybiAwOwpAQCAtMjM3LDYgKzQyMiwyNSBAQCBzdGF0aWMgaW50IGFjcF9z dXNwZW5kKHZvaWQgKmhhbmRsZSkKIAogc3RhdGljIGludCBhY3BfcmVzdW1lKHZvaWQgKmhhbmRs ZSkKIHsKKwlpbnQgaSwgcmV0OworCXN0cnVjdCBhY3BfcG1fZG9tYWluICphcGQ7CisJc3RydWN0 IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSAoc3RydWN0IGFtZGdwdV9kZXZpY2UgKiloYW5kbGU7CisK KwkvKiBTTVUgYmxvY2sgd2lsbCBwb3dlciBvbiBBQ1AgaXJyZXNwZWN0aXZlIG9mIEFDUCBydW50 aW1lIHN0YXR1cy4KKwkgKiBQb3dlciBvZmYgZXhwbGljaXRseSBiYXNlZCBvbiBnZW5wZCBBQ1Ag cnVudGltZSBzdGF0dXMgc28gdGhhdCBBQ1AKKwkgKiBodyBhbmQgQUNQLWdlbnBkIHN0YXR1cyBh cmUgaW4gc3luYy4KKwkgKiAnc3VzcGVuZF9wb3dlcl9vZmYnIHJlcHJlc2VudHMgIlBvd2VyIHN0 YXR1cyBiZWZvcmUgc3lzdGVtIHN1c3BlbmQiCisJKi8KKwlpZiAoYWRldi0+YWNwLmFjcF9nZW5w ZC0+Z3BkLnN1c3BlbmRfcG93ZXJfb2ZmID09IHRydWUpIHsKKwkJYXBkID0gY29udGFpbmVyX29m KCZhZGV2LT5hY3AuYWNwX2dlbnBkLT5ncGQsCisJCQkJCXN0cnVjdCBhY3BfcG1fZG9tYWluLCBn cGQpOworCisJCWZvciAoaSA9IDQ7IGkgPj0gMCA7IGktLSkgeworCQkJcmV0ID0gYWNwX3N1c3Bl bmRfdGlsZShhcGQtPmNnc19kZXYsIEFDUF9USUxFX1AxICsgaSk7CisJCQlpZiAocmV0KQorCQkJ CXByX2VycigiQUNQIHRpbGUgJWQgdGlsZSBzdXNwZW5kIGZhaWxlZFxuIiwgaSk7CisJCX0KKwl9 CiAJcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdV9hY3AuaCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hY3AuaApp bmRleCAyNDk1MmVkLi5mNmUzMmE2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9hbWRncHVfYWNwLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1 X2FjcC5oCkBAIC0zNCw2ICszNCw3IEBAIHN0cnVjdCBhbWRncHVfYWNwIHsKIAlzdHJ1Y3QgYW1k X2FjcF9wcml2YXRlICpwcml2YXRlOwogCXN0cnVjdCBtZmRfY2VsbCAqYWNwX2NlbGw7CiAJc3Ry dWN0IHJlc291cmNlICphY3BfcmVzOworCXN0cnVjdCBhY3BfcG1fZG9tYWluICphY3BfZ2VucGQ7 CiB9OwogCiBleHRlcm4gY29uc3Qgc3RydWN0IGFtZF9pcF9mdW5jcyBhY3BfaXBfZnVuY3M7Ci0t IAoxLjguMy4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK aHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=