From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ramalingam C Subject: [PATCH v10 06/40] drm/i915: MEI interface definition Date: Thu, 31 Jan 2019 12:29:22 +0530 Message-ID: <1548917996-28081-7-git-send-email-ramalingam.c@intel.com> References: <1548917996-28081-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: <1548917996-28081-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.vetter@ffwll.ch, tomas.winkler@intel.com, uma.shankar@intel.com List-Id: dri-devel@lists.freedesktop.org RGVmaW5pbmcgdGhlIG1laS1pOTE1IGludGVyZmFjZSBmdW5jdGlvbnMgYW5kIGluaXRpYWxpemF0 aW9uIG9mCnRoZSBpbnRlcmZhY2UuCgp2MjoKICBBZGp1c3QgdG8gdGhlIG5ldyBpbnRlcmZhY2Ug Y2hhbmdlcy4gW1RvbWFzXQogIEFkZGVkIGZ1cnRoZXIgZGVidWcgbG9ncyBmb3IgdGhlIGZhaWx1 cmVzIGF0IE1FSSBpL2YuCiAgcG9ydCBpbiBoZGNwX3BvcnQgZGF0YSBpcyBlcXVpcHBlZCB0byBo YW5kbGUgLXZlIHZhbHVlcy4KdjM6CiAgbWVpIGNvbXAgaXMgbWF0Y2hlZCBmb3IgZ2xvYmFsIGk5 MTUgY29tcCBtYXN0ZXIuIFtEYW5pZWxdCiAgSW4gaGRjcF9zaGltIGhkY3BfcHJvdG9jb2woKSBp cyByZXBsYWNlZCB3aXRoIGNvbnN0IHZhcmlhYmxlLiBbRGFuaWVsXQogIG1laSB3cmFwcGVycyBh cmUgYWRqdXN0ZWQgYXMgcGVyIHRoZSBpL2YgY2hhbmdlIFtEYW5pZWxdCnY0OgogIHBvcnQgaW5p dGlhbGl6YXRpb24gaXMgZG9uZSBvbmx5IGF0IGhkY3AyX2luaXQgb25seSBbRGFudmV0XQp2NToK ICBJOTE1IHJlZ2lzdGVycyBhIHN1YmNvbXBvbmVudCB0byBiZSBtYXRjaGVkIHdpdGggbWVpX2hk Y3AgW0RhbmllbF0KClNpZ25lZC1vZmYtYnk6IFJhbWFsaW5nYW0gQyA8cmFtYWxpbmdhbS5jQGlu dGVsLmNvbT4KUmV2aWV3ZWQtYnk6IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAZmZ3bGwu Y2g+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyAgIHwgICAxICsKIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICB8ICAgNyArCiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcnYuaCAgfCAgIDUgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRjcC5j IHwgMzc4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCiBpbmNsdWRlL2Ry bS9pOTE1X2NvbXBvbmVudC5oICAgICAgfCAgIDMgKwogNSBmaWxlcyBjaGFuZ2VkLCAzOTMgaW5z ZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCmluZGV4IGE3 YWFhMWFjNGM5OS4uNzVhZmY5MDdiYTY5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKQEAgLTkw NCw2ICs5MDQsNyBAQCBzdGF0aWMgaW50IGk5MTVfZHJpdmVyX2luaXRfZWFybHkoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCW11dGV4X2luaXQoJmRldl9wcml2LT5hdl9tdXRl eCk7CiAJbXV0ZXhfaW5pdCgmZGV2X3ByaXYtPndtLndtX211dGV4KTsKIAltdXRleF9pbml0KCZk ZXZfcHJpdi0+cHBzX211dGV4KTsKKwltdXRleF9pbml0KCZkZXZfcHJpdi0+aGRjcF9jb21wX211 dGV4KTsKIAogCWk5MTVfbWVtY3B5X2luaXRfZWFybHkoZGV2X3ByaXYpOwogCWludGVsX3J1bnRp bWVfcG1faW5pdF9lYXJseShkZXZfcHJpdik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAppbmRleCAy MmRhOWRmMWYwYTcuLmQ5YTA3NzFhZjRkMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCkBAIC01 NSw2ICs1NSw3IEBACiAjaW5jbHVkZSA8ZHJtL2RybV91dGlsLmg+CiAjaW5jbHVkZSA8ZHJtL2Ry bV9kc2MuaD4KICNpbmNsdWRlIDxkcm0vZHJtX2Nvbm5lY3Rvci5oPgorI2luY2x1ZGUgPGRybS9p OTE1X21laV9oZGNwX2ludGVyZmFjZS5oPgogCiAjaW5jbHVkZSAiaTkxNV9maXhlZC5oIgogI2lu Y2x1ZGUgImk5MTVfcGFyYW1zLmgiCkBAIC0yMDQzLDYgKzIwNDQsMTIgQEAgc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgewogCiAJc3RydWN0IGk5MTVfcG11IHBtdTsKIAorCXN0cnVjdCBpOTE1X2hk Y3BfY29tcF9tYXN0ZXIgKmhkY3BfbWFzdGVyOworCWJvb2wgaGRjcF9jb21wX2FkZGVkOworCisJ LyogTXV0ZXggdG8gcHJvdGVjdCB0aGUgYWJvdmUgaGRjcCBjb21wb25lbnQgcmVsYXRlZCB2YWx1 ZXMuICovCisJc3RydWN0IG11dGV4IGhkY3BfY29tcF9tdXRleDsKKwogCS8qCiAJICogTk9URTog VGhpcyBpcyB0aGUgZHJpMS91bXMgZHVuZ2VvbiwgZG9uJ3QgYWRkIHN0dWZmIGhlcmUuIFlvdXIg cGF0Y2gKIAkgKiB3aWxsIGJlIHJlamVjdGVkLiBJbnN0ZWFkIGxvb2sgZm9yIGEgYmV0dGVyIHBs YWNlLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAppbmRleCAwYWM4NzBmZWI1ZTkuLjYzZTAwOTI4 NmQ1ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNs dWRlIDxkcm0vZHJtX3JlY3QuaD4KICNpbmNsdWRlIDxkcm0vZHJtX3ZibGFuay5oPgogI2luY2x1 ZGUgPGRybS9kcm1fYXRvbWljLmg+CisjaW5jbHVkZSA8ZHJtL2k5MTVfbWVpX2hkY3BfaW50ZXJm YWNlLmg+CiAjaW5jbHVkZSA8bWVkaWEvY2VjLW5vdGlmaWVyLmg+CiAKIHN0cnVjdCBkcm1fcHJp bnRlcjsKQEAgLTM4NSw2ICszODYsOSBAQCBzdHJ1Y3QgaW50ZWxfaGRjcF9zaGltIHsKIAkvKiBE ZXRlY3RzIHBhbmVsJ3MgaGRjcCBjYXBhYmlsaXR5LiBUaGlzIGlzIG9wdGlvbmFsIGZvciBIRE1J LiAqLwogCWludCAoKmhkY3BfY2FwYWJsZSkoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50 ZWxfZGlnX3BvcnQsCiAJCQkgICAgYm9vbCAqaGRjcF9jYXBhYmxlKTsKKworCS8qIEhEQ1AgYWRh cHRhdGlvbihEUC9IRE1JKSByZXF1aXJlZCBvbiB0aGUgcG9ydCAqLworCWVudW0gaGRjcF93aXJl ZF9wcm90b2NvbCBwcm90b2NvbDsKIH07CiAKIHN0cnVjdCBpbnRlbF9oZGNwIHsKQEAgLTQwNSw2 ICs0MDksNyBAQCBzdHJ1Y3QgaW50ZWxfaGRjcCB7CiAJICogY29udGVudCBjYW4gZmxvdyBvbmx5 IHRocm91Z2ggYSBsaW5rIHByb3RlY3RlZCBieSBIRENQMi4yLgogCSAqLwogCXU4IGNvbnRlbnRf dHlwZTsKKwlzdHJ1Y3QgaGRjcF9wb3J0X2RhdGEgcG9ydF9kYXRhOwogfTsKIAogc3RydWN0IGlu dGVsX2Nvbm5lY3RvciB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9o ZGNwLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZGNwLmMKaW5kZXggMWE4NWRjNDY2 OTJkLi5lMGJiNWYzMmJhOTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2hkY3AuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZGNwLmMKQEAgLTcsOCAr NywxMCBAQAogICovCiAKICNpbmNsdWRlIDxkcm0vZHJtX2hkY3AuaD4KKyNpbmNsdWRlIDxkcm0v aTkxNV9jb21wb25lbnQuaD4KICNpbmNsdWRlIDxsaW51eC9pMmMuaD4KICNpbmNsdWRlIDxsaW51 eC9yYW5kb20uaD4KKyNpbmNsdWRlIDxsaW51eC9jb21wb25lbnQuaD4KIAogI2luY2x1ZGUgImlu dGVsX2Rydi5oIgogI2luY2x1ZGUgImk5MTVfcmVnLmgiCkBAIC04MzIsNiArODM0LDM0OCBAQCBi b29sIGlzX2hkY3Bfc3VwcG9ydGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwg ZW51bSBwb3J0IHBvcnQpCiAJcmV0dXJuIElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSAmJiBwb3J0 IDwgUE9SVF9FOwogfQogCitzdGF0aWMgX19hdHRyaWJ1dGVfXygodW51c2VkKSkgaW50CitoZGNw Ml9wcmVwYXJlX2FrZV9pbml0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwKKwkJ ICAgICAgIHN0cnVjdCBoZGNwMl9ha2VfaW5pdCAqYWtlX2RhdGEpCit7CisJc3RydWN0IGhkY3Bf cG9ydF9kYXRhICpkYXRhID0gJmNvbm5lY3Rvci0+aGRjcC5wb3J0X2RhdGE7CisJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjb25uZWN0b3ItPmJhc2UuZGV2KTsK KwlzdHJ1Y3QgaTkxNV9oZGNwX2NvbXBfbWFzdGVyICpjb21wOworCWludCByZXQ7CisKKwltdXRl eF9sb2NrKCZkZXZfcHJpdi0+aGRjcF9jb21wX211dGV4KTsKKwljb21wID0gZGV2X3ByaXYtPmhk Y3BfbWFzdGVyOworCisJaWYgKCFjb21wIHx8ICFjb21wLT5vcHMpIHsKKwkJbXV0ZXhfdW5sb2Nr KCZkZXZfcHJpdi0+aGRjcF9jb21wX211dGV4KTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJ cmV0ID0gY29tcC0+b3BzLT5pbml0aWF0ZV9oZGNwMl9zZXNzaW9uKGNvbXAtPm1laV9kZXYsIGRh dGEsIGFrZV9kYXRhKTsKKwlpZiAocmV0KQorCQlEUk1fREVCVUdfS01TKCJQcmVwYXJlX2FrZV9p bml0IGZhaWxlZC4gJWRcbiIsIHJldCk7CisJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+aGRjcF9j b21wX211dGV4KTsKKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBfX2F0dHJpYnV0ZV9fKCh1 bnVzZWQpKSBpbnQKK2hkY3AyX3ZlcmlmeV9yeF9jZXJ0X3ByZXBhcmVfa20oc3RydWN0IGludGVs X2Nvbm5lY3RvciAqY29ubmVjdG9yLAorCQkJCXN0cnVjdCBoZGNwMl9ha2Vfc2VuZF9jZXJ0ICpy eF9jZXJ0LAorCQkJCWJvb2wgKnBhaXJlZCwKKwkJCQlzdHJ1Y3QgaGRjcDJfYWtlX25vX3N0b3Jl ZF9rbSAqZWtfcHViX2ttLAorCQkJCXNpemVfdCAqbXNnX3N6KQoreworCXN0cnVjdCBoZGNwX3Bv cnRfZGF0YSAqZGF0YSA9ICZjb25uZWN0b3ItPmhkY3AucG9ydF9kYXRhOworCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY29ubmVjdG9yLT5iYXNlLmRldik7CisJ c3RydWN0IGk5MTVfaGRjcF9jb21wX21hc3RlciAqY29tcDsKKwlpbnQgcmV0OworCisJbXV0ZXhf bG9jaygmZGV2X3ByaXYtPmhkY3BfY29tcF9tdXRleCk7CisJY29tcCA9IGRldl9wcml2LT5oZGNw X21hc3RlcjsKKworCWlmICghY29tcCB8fCAhY29tcC0+b3BzKSB7CisJCW11dGV4X3VubG9jaygm ZGV2X3ByaXYtPmhkY3BfY29tcF9tdXRleCk7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCXJl dCA9IGNvbXAtPm9wcy0+dmVyaWZ5X3JlY2VpdmVyX2NlcnRfcHJlcGFyZV9rbShjb21wLT5tZWlf ZGV2LCBkYXRhLAorCQkJCQkJCSByeF9jZXJ0LCBwYWlyZWQsCisJCQkJCQkJIGVrX3B1Yl9rbSwg bXNnX3N6KTsKKwlpZiAocmV0IDwgMCkKKwkJRFJNX0RFQlVHX0tNUygiVmVyaWZ5IHJ4X2NlcnQg ZmFpbGVkLiAlZFxuIiwgcmV0KTsKKwltdXRleF91bmxvY2soJmRldl9wcml2LT5oZGNwX2NvbXBf bXV0ZXgpOworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIF9fYXR0cmlidXRlX18oKHVudXNl ZCkpIGludAoraGRjcDJfdmVyaWZ5X2hwcmltZShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25u ZWN0b3IsCisJCSAgICBzdHJ1Y3QgaGRjcDJfYWtlX3NlbmRfaHByaW1lICpyeF9ocHJpbWUpCit7 CisJc3RydWN0IGhkY3BfcG9ydF9kYXRhICpkYXRhID0gJmNvbm5lY3Rvci0+aGRjcC5wb3J0X2Rh dGE7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjb25uZWN0 b3ItPmJhc2UuZGV2KTsKKwlzdHJ1Y3QgaTkxNV9oZGNwX2NvbXBfbWFzdGVyICpjb21wOworCWlu dCByZXQ7CisKKwltdXRleF9sb2NrKCZkZXZfcHJpdi0+aGRjcF9jb21wX211dGV4KTsKKwljb21w ID0gZGV2X3ByaXYtPmhkY3BfbWFzdGVyOworCisJaWYgKCFjb21wIHx8ICFjb21wLT5vcHMpIHsK KwkJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+aGRjcF9jb21wX211dGV4KTsKKwkJcmV0dXJuIC1F SU5WQUw7CisJfQorCisJcmV0ID0gY29tcC0+b3BzLT52ZXJpZnlfaHByaW1lKGNvbXAtPm1laV9k ZXYsIGRhdGEsIHJ4X2hwcmltZSk7CisJaWYgKHJldCA8IDApCisJCURSTV9ERUJVR19LTVMoIlZl cmlmeSBocHJpbWUgZmFpbGVkLiAlZFxuIiwgcmV0KTsKKwltdXRleF91bmxvY2soJmRldl9wcml2 LT5oZGNwX2NvbXBfbXV0ZXgpOworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIF9fYXR0cmli dXRlX18oKHVudXNlZCkpIGludAoraGRjcDJfc3RvcmVfcGFpcmluZ19pbmZvKHN0cnVjdCBpbnRl bF9jb25uZWN0b3IgKmNvbm5lY3RvciwKKwkJCSBzdHJ1Y3QgaGRjcDJfYWtlX3NlbmRfcGFpcmlu Z19pbmZvICpwYWlyaW5nX2luZm8pCit7CisJc3RydWN0IGhkY3BfcG9ydF9kYXRhICpkYXRhID0g JmNvbm5lY3Rvci0+aGRjcC5wb3J0X2RhdGE7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gdG9faTkxNShjb25uZWN0b3ItPmJhc2UuZGV2KTsKKwlzdHJ1Y3QgaTkxNV9oZGNw X2NvbXBfbWFzdGVyICpjb21wOworCWludCByZXQ7CisKKwltdXRleF9sb2NrKCZkZXZfcHJpdi0+ aGRjcF9jb21wX211dGV4KTsKKwljb21wID0gZGV2X3ByaXYtPmhkY3BfbWFzdGVyOworCisJaWYg KCFjb21wIHx8ICFjb21wLT5vcHMpIHsKKwkJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+aGRjcF9j b21wX211dGV4KTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJcmV0ID0gY29tcC0+b3BzLT5z dG9yZV9wYWlyaW5nX2luZm8oY29tcC0+bWVpX2RldiwgZGF0YSwgcGFpcmluZ19pbmZvKTsKKwlp ZiAocmV0IDwgMCkKKwkJRFJNX0RFQlVHX0tNUygiU3RvcmUgcGFpcmluZyBpbmZvIGZhaWxlZC4g JWRcbiIsIHJldCk7CisJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+aGRjcF9jb21wX211dGV4KTsK KworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSBpbnQK K2hkY3AyX3ByZXBhcmVfbGNfaW5pdChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3Is CisJCSAgICAgIHN0cnVjdCBoZGNwMl9sY19pbml0ICpsY19pbml0KQoreworCXN0cnVjdCBoZGNw X3BvcnRfZGF0YSAqZGF0YSA9ICZjb25uZWN0b3ItPmhkY3AucG9ydF9kYXRhOworCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY29ubmVjdG9yLT5iYXNlLmRldik7 CisJc3RydWN0IGk5MTVfaGRjcF9jb21wX21hc3RlciAqY29tcDsKKwlpbnQgcmV0OworCisJbXV0 ZXhfbG9jaygmZGV2X3ByaXYtPmhkY3BfY29tcF9tdXRleCk7CisJY29tcCA9IGRldl9wcml2LT5o ZGNwX21hc3RlcjsKKworCWlmICghY29tcCB8fCAhY29tcC0+b3BzKSB7CisJCW11dGV4X3VubG9j aygmZGV2X3ByaXYtPmhkY3BfY29tcF9tdXRleCk7CisJCXJldHVybiAtRUlOVkFMOworCX0KKwor CXJldCA9IGNvbXAtPm9wcy0+aW5pdGlhdGVfbG9jYWxpdHlfY2hlY2soY29tcC0+bWVpX2Rldiwg ZGF0YSwgbGNfaW5pdCk7CisJaWYgKHJldCA8IDApCisJCURSTV9ERUJVR19LTVMoIlByZXBhcmUg bGNfaW5pdCBmYWlsZWQuICVkXG4iLCByZXQpOworCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmhk Y3BfY29tcF9tdXRleCk7CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgX19hdHRyaWJ1dGVf XygodW51c2VkKSkgaW50CitoZGNwMl92ZXJpZnlfbHByaW1lKHN0cnVjdCBpbnRlbF9jb25uZWN0 b3IgKmNvbm5lY3RvciwKKwkJICAgIHN0cnVjdCBoZGNwMl9sY19zZW5kX2xwcmltZSAqcnhfbHBy aW1lKQoreworCXN0cnVjdCBoZGNwX3BvcnRfZGF0YSAqZGF0YSA9ICZjb25uZWN0b3ItPmhkY3Au cG9ydF9kYXRhOworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUo Y29ubmVjdG9yLT5iYXNlLmRldik7CisJc3RydWN0IGk5MTVfaGRjcF9jb21wX21hc3RlciAqY29t cDsKKwlpbnQgcmV0OworCisJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPmhkY3BfY29tcF9tdXRleCk7 CisJY29tcCA9IGRldl9wcml2LT5oZGNwX21hc3RlcjsKKworCWlmICghY29tcCB8fCAhY29tcC0+ b3BzKSB7CisJCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmhkY3BfY29tcF9tdXRleCk7CisJCXJl dHVybiAtRUlOVkFMOworCX0KKworCXJldCA9IGNvbXAtPm9wcy0+dmVyaWZ5X2xwcmltZShjb21w LT5tZWlfZGV2LCBkYXRhLCByeF9scHJpbWUpOworCWlmIChyZXQgPCAwKQorCQlEUk1fREVCVUdf S01TKCJWZXJpZnkgTF9QcmltZSBmYWlsZWQuICVkXG4iLCByZXQpOworCW11dGV4X3VubG9jaygm ZGV2X3ByaXYtPmhkY3BfY29tcF9tdXRleCk7CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMg X19hdHRyaWJ1dGVfXygodW51c2VkKSkKK2ludCBoZGNwMl9wcmVwYXJlX3NrZXkoc3RydWN0IGlu dGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLAorCQkgICAgICAgc3RydWN0IGhkY3AyX3NrZV9zZW5k X2VrcyAqc2tlX2RhdGEpCit7CisJc3RydWN0IGhkY3BfcG9ydF9kYXRhICpkYXRhID0gJmNvbm5l Y3Rvci0+aGRjcC5wb3J0X2RhdGE7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gdG9faTkxNShjb25uZWN0b3ItPmJhc2UuZGV2KTsKKwlzdHJ1Y3QgaTkxNV9oZGNwX2NvbXBf bWFzdGVyICpjb21wOworCWludCByZXQ7CisKKwltdXRleF9sb2NrKCZkZXZfcHJpdi0+aGRjcF9j b21wX211dGV4KTsKKwljb21wID0gZGV2X3ByaXYtPmhkY3BfbWFzdGVyOworCisJaWYgKCFjb21w IHx8ICFjb21wLT5vcHMpIHsKKwkJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+aGRjcF9jb21wX211 dGV4KTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJcmV0ID0gY29tcC0+b3BzLT5nZXRfc2Vz c2lvbl9rZXkoY29tcC0+bWVpX2RldiwgZGF0YSwgc2tlX2RhdGEpOworCWlmIChyZXQgPCAwKQor CQlEUk1fREVCVUdfS01TKCJHZXQgc2Vzc2lvbiBrZXkgZmFpbGVkLiAlZFxuIiwgcmV0KTsKKwlt dXRleF91bmxvY2soJmRldl9wcml2LT5oZGNwX2NvbXBfbXV0ZXgpOworCisJcmV0dXJuIHJldDsK K30KKworc3RhdGljIF9fYXR0cmlidXRlX18oKHVudXNlZCkpIGludAoraGRjcDJfdmVyaWZ5X3Jl cF90b3BvbG9neV9wcmVwYXJlX2FjayhzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3Is CisJCQkJICAgICAgc3RydWN0IGhkY3AyX3JlcF9zZW5kX3JlY2VpdmVyaWRfbGlzdAorCQkJCQkJ CQkqcmVwX3RvcG9sb2d5LAorCQkJCSAgICAgIHN0cnVjdCBoZGNwMl9yZXBfc2VuZF9hY2sgKnJl cF9zZW5kX2FjaykKK3sKKwlzdHJ1Y3QgaGRjcF9wb3J0X2RhdGEgKmRhdGEgPSAmY29ubmVjdG9y LT5oZGNwLnBvcnRfZGF0YTsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0 b19pOTE1KGNvbm5lY3Rvci0+YmFzZS5kZXYpOworCXN0cnVjdCBpOTE1X2hkY3BfY29tcF9tYXN0 ZXIgKmNvbXA7CisJaW50IHJldDsKKworCW11dGV4X2xvY2soJmRldl9wcml2LT5oZGNwX2NvbXBf bXV0ZXgpOworCWNvbXAgPSBkZXZfcHJpdi0+aGRjcF9tYXN0ZXI7CisKKwlpZiAoIWNvbXAgfHwg IWNvbXAtPm9wcykgeworCQltdXRleF91bmxvY2soJmRldl9wcml2LT5oZGNwX2NvbXBfbXV0ZXgp OworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlyZXQgPSBjb21wLT5vcHMtPnJlcGVhdGVyX2No ZWNrX2Zsb3dfcHJlcGFyZV9hY2soY29tcC0+bWVpX2RldiwgZGF0YSwKKwkJCQkJCQkgcmVwX3Rv cG9sb2d5LAorCQkJCQkJCSByZXBfc2VuZF9hY2spOworCWlmIChyZXQgPCAwKQorCQlEUk1fREVC VUdfS01TKCJWZXJpZnkgcmVwIHRvcG9sb2d5IGZhaWxlZC4gJWRcbiIsIHJldCk7CisJbXV0ZXhf dW5sb2NrKCZkZXZfcHJpdi0+aGRjcF9jb21wX211dGV4KTsKKworCXJldHVybiByZXQ7Cit9CisK K3N0YXRpYyBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSBpbnQKK2hkY3AyX3ZlcmlmeV9tcHJpbWUo c3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLAorCQkgICAgc3RydWN0IGhkY3AyX3Jl cF9zdHJlYW1fcmVhZHkgKnN0cmVhbV9yZWFkeSkKK3sKKwlzdHJ1Y3QgaGRjcF9wb3J0X2RhdGEg KmRhdGEgPSAmY29ubmVjdG9yLT5oZGNwLnBvcnRfZGF0YTsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNvbm5lY3Rvci0+YmFzZS5kZXYpOworCXN0cnVjdCBp OTE1X2hkY3BfY29tcF9tYXN0ZXIgKmNvbXA7CisJaW50IHJldDsKKworCW11dGV4X2xvY2soJmRl dl9wcml2LT5oZGNwX2NvbXBfbXV0ZXgpOworCWNvbXAgPSBkZXZfcHJpdi0+aGRjcF9tYXN0ZXI7 CisKKwlpZiAoIWNvbXAgfHwgIWNvbXAtPm9wcykgeworCQltdXRleF91bmxvY2soJmRldl9wcml2 LT5oZGNwX2NvbXBfbXV0ZXgpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlyZXQgPSBjb21w LT5vcHMtPnZlcmlmeV9tcHJpbWUoY29tcC0+bWVpX2RldiwgZGF0YSwgc3RyZWFtX3JlYWR5KTsK KwlpZiAocmV0IDwgMCkKKwkJRFJNX0RFQlVHX0tNUygiVmVyaWZ5IG1wcmltZSBmYWlsZWQuICVk XG4iLCByZXQpOworCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmhkY3BfY29tcF9tdXRleCk7CisK KwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgX19hdHRyaWJ1dGVfXygodW51c2VkKSkKK2ludCBo ZGNwMl9hdXRoZW50aWNhdGVfcG9ydChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3Ip Cit7CisJc3RydWN0IGhkY3BfcG9ydF9kYXRhICpkYXRhID0gJmNvbm5lY3Rvci0+aGRjcC5wb3J0 X2RhdGE7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjb25u ZWN0b3ItPmJhc2UuZGV2KTsKKwlzdHJ1Y3QgaTkxNV9oZGNwX2NvbXBfbWFzdGVyICpjb21wOwor CWludCByZXQ7CisKKwltdXRleF9sb2NrKCZkZXZfcHJpdi0+aGRjcF9jb21wX211dGV4KTsKKwlj b21wID0gZGV2X3ByaXYtPmhkY3BfbWFzdGVyOworCisJaWYgKCFjb21wIHx8ICFjb21wLT5vcHMp IHsKKwkJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+aGRjcF9jb21wX211dGV4KTsKKwkJcmV0dXJu IC1FSU5WQUw7CisJfQorCisJcmV0ID0gY29tcC0+b3BzLT5lbmFibGVfaGRjcF9hdXRoZW50aWNh dGlvbihjb21wLT5tZWlfZGV2LCBkYXRhKTsKKwlpZiAocmV0IDwgMCkKKwkJRFJNX0RFQlVHX0tN UygiRW5hYmxlIGhkY3AgYXV0aCBmYWlsZWQuICVkXG4iLCByZXQpOworCW11dGV4X3VubG9jaygm ZGV2X3ByaXYtPmhkY3BfY29tcF9tdXRleCk7CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMg X19hdHRyaWJ1dGVfXygodW51c2VkKSkKK2ludCBoZGNwMl9jbG9zZV9tZWlfc2Vzc2lvbihzdHJ1 Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gdG9faTkxNShjb25uZWN0b3ItPmJhc2UuZGV2KTsKKwlzdHJ1Y3QgaTkx NV9oZGNwX2NvbXBfbWFzdGVyICpjb21wOworCWludCByZXQ7CisKKwltdXRleF9sb2NrKCZkZXZf cHJpdi0+aGRjcF9jb21wX211dGV4KTsKKwljb21wID0gZGV2X3ByaXYtPmhkY3BfbWFzdGVyOwor CisJaWYgKCFjb21wIHx8ICFjb21wLT5vcHMpIHsKKwkJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ aGRjcF9jb21wX211dGV4KTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJcmV0ID0gY29tcC0+ b3BzLT5jbG9zZV9oZGNwX3Nlc3Npb24oY29tcC0+bWVpX2RldiwKKwkJCQkJICAgICAmY29ubmVj dG9yLT5oZGNwLnBvcnRfZGF0YSk7CisJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+aGRjcF9jb21w X211dGV4KTsKKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBfX2F0dHJpYnV0ZV9fKCh1bnVz ZWQpKQoraW50IGhkY3AyX2RlYXV0aGVudGljYXRlX3BvcnQoc3RydWN0IGludGVsX2Nvbm5lY3Rv ciAqY29ubmVjdG9yKQoreworCXJldHVybiBoZGNwMl9jbG9zZV9tZWlfc2Vzc2lvbihjb25uZWN0 b3IpOworfQorCitzdGF0aWMgaW50IGk5MTVfaGRjcF9jb21wb25lbnRfYmluZChzdHJ1Y3QgZGV2 aWNlICppOTE1X2tkZXYsCisJCQkJICAgIHN0cnVjdCBkZXZpY2UgKm1laV9rZGV2LCB2b2lkICpk YXRhKQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGtkZXZfdG9faTkx NShpOTE1X2tkZXYpOworCisJRFJNX0RFQlVHKCJJOTE1IEhEQ1AgY29tcCBiaW5kXG4iKTsKKwlt dXRleF9sb2NrKCZkZXZfcHJpdi0+aGRjcF9jb21wX211dGV4KTsKKwlkZXZfcHJpdi0+aGRjcF9t YXN0ZXIgPSAoc3RydWN0IGk5MTVfaGRjcF9jb21wX21hc3RlciAqKWRhdGE7CisJZGV2X3ByaXYt PmhkY3BfbWFzdGVyLT5tZWlfZGV2ID0gbWVpX2tkZXY7CisJbXV0ZXhfdW5sb2NrKCZkZXZfcHJp di0+aGRjcF9jb21wX211dGV4KTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBpOTE1 X2hkY3BfY29tcG9uZW50X3VuYmluZChzdHJ1Y3QgZGV2aWNlICppOTE1X2tkZXYsCisJCQkJICAg ICAgIHN0cnVjdCBkZXZpY2UgKm1laV9rZGV2LCB2b2lkICpkYXRhKQoreworCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGtkZXZfdG9faTkxNShpOTE1X2tkZXYpOworCisJRFJN X0RFQlVHKCJJOTE1IEhEQ1AgY29tcCB1bmJpbmRcbiIpOworCW11dGV4X2xvY2soJmRldl9wcml2 LT5oZGNwX2NvbXBfbXV0ZXgpOworCWRldl9wcml2LT5oZGNwX21hc3Rlci0+bWVpX2RldiA9IE5V TEw7CisJZGV2X3ByaXYtPmhkY3BfbWFzdGVyID0gTlVMTDsKKwltdXRleF91bmxvY2soJmRldl9w cml2LT5oZGNwX2NvbXBfbXV0ZXgpOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGNvbXBvbmVu dF9vcHMgaTkxNV9oZGNwX2NvbXBvbmVudF9vcHMgPSB7CisJLmJpbmQgICA9IGk5MTVfaGRjcF9j b21wb25lbnRfYmluZCwKKwkudW5iaW5kID0gaTkxNV9oZGNwX2NvbXBvbmVudF91bmJpbmQsCit9 OworCitzdGF0aWMgaW50IGluaXRpYWxpemVfaGRjcF9wb3J0X2RhdGEoc3RydWN0IGludGVsX2Nv bm5lY3RvciAqY29ubmVjdG9yKQoreworCXN0cnVjdCBpbnRlbF9oZGNwICpoZGNwID0gJmNvbm5l Y3Rvci0+aGRjcDsKKwlzdHJ1Y3QgaGRjcF9wb3J0X2RhdGEgKmRhdGEgPSAmaGRjcC0+cG9ydF9k YXRhOworCisJZGF0YS0+cG9ydCA9IGNvbm5lY3Rvci0+ZW5jb2Rlci0+cG9ydDsKKwlkYXRhLT5w b3J0X3R5cGUgPSAodTgpSERDUF9QT1JUX1RZUEVfSU5URUdSQVRFRDsKKwlkYXRhLT5wcm90b2Nv bCA9ICh1OCloZGNwLT5zaGltLT5wcm90b2NvbDsKKworCWRhdGEtPmsgPSAxOworCWlmICghZGF0 YS0+c3RyZWFtcykKKwkJZGF0YS0+c3RyZWFtcyA9IGtjYWxsb2MoZGF0YS0+aywKKwkJCQkJc2l6 ZW9mKHN0cnVjdCBoZGNwMl9zdHJlYW1pZF90eXBlKSwKKwkJCQkJR0ZQX0tFUk5FTCk7CisJaWYg KCFkYXRhLT5zdHJlYW1zKSB7CisJCURSTV9FUlJPUigiT3V0IG9mIE1lbW9yeVxuIik7CisJCXJl dHVybiAtRU5PTUVNOworCX0KKworCWRhdGEtPnN0cmVhbXNbMF0uc3RyZWFtX2lkID0gMDsKKwlk YXRhLT5zdHJlYW1zWzBdLnN0cmVhbV90eXBlID0gaGRjcC0+Y29udGVudF90eXBlOworCisJcmV0 dXJuIDA7Cit9CisKIGJvb2wgaXNfaGRjcDJfc3VwcG9ydGVkKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKIHsKIAlpZiAoIUlTX0VOQUJMRUQoQ09ORklHX0lOVEVMX01FSV9IRENQ KSkKQEAgLTg0NSwxMCArMTE4OSw0MiBAQCBzdGF0aWMgdm9pZCBpbnRlbF9oZGNwMl9pbml0KHN0 cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNvbm5lY3Rvci0+YmFzZS5kZXYpOwogCXN0cnVjdCBp bnRlbF9oZGNwICpoZGNwID0gJmNvbm5lY3Rvci0+aGRjcDsKKwlib29sIGFkZF9jb21wb25lbnQg PSBmYWxzZTsKKwlpbnQgcmV0OwogCiAJV0FSTl9PTighaXNfaGRjcDJfc3VwcG9ydGVkKGRldl9w cml2KSk7CiAKLQkvKiBUT0RPOiBNRUkgaW50ZXJmYWNlIG5lZWRzIHRvIGJlIGluaXRpYWxpemVk IGhlcmUgKi8KKwlyZXQgPSBpbml0aWFsaXplX2hkY3BfcG9ydF9kYXRhKGNvbm5lY3Rvcik7CisJ aWYgKHJldCkgeworCQlEUk1fREVCVUdfS01TKCJNZWkgaGRjcCBkYXRhIGluaXQgZmFpbGVkXG4i KTsKKwkJcmV0dXJuOworCX0KKworCW11dGV4X2xvY2soJmRldl9wcml2LT5oZGNwX2NvbXBfbXV0 ZXgpOworCS8qCisJICogQ29tcG9uZW50IGZvciBtZWkgaXMgY29tbW9uIGFjcm9zcyB0aGUgY29u bmVjdG9yLgorCSAqIEFkZGluZyB0aGUgY29tcG9uZW50IG9uY2UgaXMgc3VmZmljaWVudC4KKwkg Ki8KKwlpZiAoIWRldl9wcml2LT5oZGNwX2NvbXBfYWRkZWQpIHsKKwkJZGV2X3ByaXYtPmhkY3Bf Y29tcF9hZGRlZCA9IHRydWU7CisJCWFkZF9jb21wb25lbnQgPSB0cnVlOworCX0KKwltdXRleF91 bmxvY2soJmRldl9wcml2LT5oZGNwX2NvbXBfbXV0ZXgpOworCisJaWYgKGFkZF9jb21wb25lbnQp IHsKKwkJcmV0ID0gY29tcG9uZW50X2FkZF90eXBlZChkZXZfcHJpdi0+ZHJtLmRldiwKKwkJCQkJ ICAmaTkxNV9oZGNwX2NvbXBvbmVudF9vcHMsCisJCQkJCSAgSTkxNV9DT01QT05FTlRfSERDUCk7 CisJCWlmIChyZXQgPCAwKSB7CisJCQlEUk1fREVCVUdfS01TKCJGYWlsZWQgYXQgY29tcG9uZW50 IGFkZCglZClcbiIsIHJldCk7CisJCQltdXRleF9sb2NrKCZkZXZfcHJpdi0+aGRjcF9jb21wX211 dGV4KTsKKwkJCWRldl9wcml2LT5oZGNwX2NvbXBfYWRkZWQgPSBmYWxzZTsKKwkJCW11dGV4X3Vu bG9jaygmZGV2X3ByaXYtPmhkY3BfY29tcF9tdXRleCk7CisJCQlrZnJlZShoZGNwLT5wb3J0X2Rh dGEuc3RyZWFtcyk7CisJCQlyZXR1cm47CisJCX0KKwl9CisKIAloZGNwLT5oZGNwMl9zdXBwb3J0 ZWQgPSB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9pOTE1X2NvbXBvbmVudC5o IGIvaW5jbHVkZS9kcm0vaTkxNV9jb21wb25lbnQuaAppbmRleCA3MmZiYjAzN2Y5YjMuLmYzODUx YmEzZTRjMyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9kcm0vaTkxNV9jb21wb25lbnQuaAorKysgYi9p bmNsdWRlL2RybS9pOTE1X2NvbXBvbmVudC5oCkBAIC0yNCwxMCArMjQsMTMgQEAKICNpZm5kZWYg X0k5MTVfQ09NUE9ORU5UX0hfCiAjZGVmaW5lIF9JOTE1X0NPTVBPTkVOVF9IXwogCisjaW5jbHVk ZSA8bGludXgvZGV2aWNlLmg+CisKICNpbmNsdWRlICJkcm1fYXVkaW9fY29tcG9uZW50LmgiCiAK IGVudW0gaTkxNV9jb21wb25lbnRfdHlwZSB7CiAJSTkxNV9DT01QT05FTlRfQVVESU8gPSAxLAor CUk5MTVfQ09NUE9ORU5UX0hEQ1AsCiB9OwogCiAvKiBNQVhfUE9SVCBpcyB0aGUgbnVtYmVyIG9m IHBvcnQKLS0gCjIuNy40CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmkt ZGV2ZWwK