From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ramalingam C Subject: [PATCH v8 05/35] drm/i915: MEI interface definition Date: Tue, 27 Nov 2018 16:13:03 +0530 Message-ID: <1543315413-24302-6-git-send-email-ramalingam.c@intel.com> References: <1543315413-24302-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: <1543315413-24302-1-git-send-email-ramalingam.c@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, dri-devel@lists.freedesktop.org, daniel.vetter@ffwll.ch, tomas.winkler@intel.com List-Id: dri-devel@lists.freedesktop.org RGVmaW5pbmcgdGhlIG1laS1pOTE1IGludGVyZmFjZSBmdW5jdGlvbnMgYW5kIGluaXRpYWxpemF0 aW9uIG9mCnRoZSBpbnRlcmZhY2UuCgpTaWduZWQtb2ZmLWJ5OiBSYW1hbGluZ2FtIEMgPHJhbWFs aW5nYW0uY0BpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IFRvbWFzIFdpbmtsZXIgPHRvbWFzLndp bmtsZXJAaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICB8 ICAgMiArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgfCAgIDcgKwogZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRjcC5jIHwgNDQyICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKystCiBpbmNsdWRlL2RybS9pOTE1X2NvbXBvbmVudC5oICAgICAgfCAgNzEg KysrKysrCiA0IGZpbGVzIGNoYW5nZWQsIDUyMSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0p CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXggZjc2M2IzMGY5OGQ5Li5iNjhiYzk4MGI3Y2Qg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAtMjAxNSw2ICsyMDE1LDggQEAgc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgewogCiAJc3RydWN0IGk5MTVfcG11IHBtdTsKIAorCXN0cnVjdCBpOTE1 X2hkY3BfY29tcG9uZW50X21hc3RlciAqaGRjcF9jb21wOworCiAJLyoKIAkgKiBOT1RFOiBUaGlz IGlzIHRoZSBkcmkxL3VtcyBkdW5nZW9uLCBkb24ndCBhZGQgc3R1ZmYgaGVyZS4gWW91ciBwYXRj aAogCSAqIHdpbGwgYmUgcmVqZWN0ZWQuIEluc3RlYWQgbG9vayBmb3IgYSBiZXR0ZXIgcGxhY2Uu CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCmluZGV4IDg1YTUyNjU5ODA5Ni4uYmRlODJmM2FkYTg1 IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAorKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUg PGxpbnV4L2kyYy5oPgogI2luY2x1ZGUgPGxpbnV4L2hkbWkuaD4KICNpbmNsdWRlIDxsaW51eC9z Y2hlZC9jbG9jay5oPgorI2luY2x1ZGUgPGxpbnV4L21laV9oZGNwLmg+CiAjaW5jbHVkZSA8ZHJt L2k5MTVfZHJtLmg+CiAjaW5jbHVkZSAiaTkxNV9kcnYuaCIKICNpbmNsdWRlIDxkcm0vZHJtX2Ny dGMuaD4KQEAgLTM3OSw2ICszODAsOSBAQCBzdHJ1Y3QgaW50ZWxfaGRjcF9zaGltIHsKIAkvKiBE ZXRlY3RzIHBhbmVsJ3MgaGRjcCBjYXBhYmlsaXR5LiBUaGlzIGlzIG9wdGlvbmFsIGZvciBIRE1J LiAqLwogCWludCAoKmhkY3BfY2FwYWJsZSkoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50 ZWxfZGlnX3BvcnQsCiAJCQkgICAgYm9vbCAqaGRjcF9jYXBhYmxlKTsKKworCS8qIERldGVjdHMg dGhlIEhEQ1AgcHJvdG9jb2woRFAvSERNSSkgcmVxdWlyZWQgb24gdGhlIHBvcnQgKi8KKwllbnVt IG1laV9oZGNwX3dpcmVkX3Byb3RvY29sICgqaGRjcF9wcm90b2NvbCkodm9pZCk7CiB9OwogCiBz dHJ1Y3QgaW50ZWxfaGRjcCB7CkBAIC0zOTksNiArNDAzLDkgQEAgc3RydWN0IGludGVsX2hkY3Ag ewogCSAqIGNvbnRlbnQgY2FuIGZsb3cgb25seSB0aHJvdWdoIGEgbGluayBwcm90ZWN0ZWQgYnkg SERDUDIuMi4KIAkgKi8KIAl1OCBjb250ZW50X3R5cGU7CisKKwkvKiBtZWkgaW50ZXJmYWNlIHJl bGF0ZWQgaW5mb3JtYXRpb24gKi8KKwlzdHJ1Y3QgbWVpX2hkY3BfZGF0YSBtZWlfZGF0YTsKIH07 CiAKIHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfaGRjcC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRjcC5jCmlu ZGV4IDk5ZGRkYjU0MDk1OC4uNzYwNzgwZjExMDVjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9oZGNwLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRj cC5jCkBAIC04LDE0ICs4LDIwIEBACiAKICNpbmNsdWRlIDxkcm0vZHJtUC5oPgogI2luY2x1ZGUg PGRybS9kcm1faGRjcC5oPgorI2luY2x1ZGUgPGRybS9pOTE1X2NvbXBvbmVudC5oPgogI2luY2x1 ZGUgPGxpbnV4L2kyYy5oPgogI2luY2x1ZGUgPGxpbnV4L3JhbmRvbS5oPgorI2luY2x1ZGUgPGxp bnV4L2NvbXBvbmVudC5oPgogCiAjaW5jbHVkZSAiaW50ZWxfZHJ2LmgiCiAjaW5jbHVkZSAiaTkx NV9yZWcuaCIKIAogI2RlZmluZSBLRVlfTE9BRF9UUklFUwk1CiAjZGVmaW5lIFRJTUVfRk9SX0VO Q1JZUFRfU1RBVFVTX0NIQU5HRQk1MAorI2RlZmluZSBHRVRfTUVJX0RESV9JTkRFWChwKSAoeyAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisJdHlwZW9mKHApIF9fcCA9IChwKTsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAorCV9fcCA9PSBQT1JUX0EgPyBNRUlfRERJX0EgOiAo ZW51bSBtZWlfaGRjcF9kZGkpX19wO1wKK30pCiAKIHN0YXRpYwogYm9vbCBpbnRlbF9oZGNwX2lz X2tzdl92YWxpZCh1OCAqa3N2KQpAQCAtODMzLDYgKzgzOSw0MTcgQEAgYm9vbCBpc19oZGNwX3N1 cHBvcnRlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGVudW0gcG9ydCBwb3J0 KQogCQkhSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikgJiYgcG9ydCA8IFBPUlRfRSk7CiB9CiAKK3N0 YXRpYyBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSBpbnQKK2hkY3AyX3ByZXBhcmVfYWtlX2luaXQo c3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLAorCQkgICAgICAgc3RydWN0IGhkY3Ay X2FrZV9pbml0ICpha2VfZGF0YSkKK3sKKwlzdHJ1Y3QgbWVpX2hkY3BfZGF0YSAqZGF0YSA9ICZj b25uZWN0b3ItPmhkY3AubWVpX2RhdGE7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gdG9faTkxNShjb25uZWN0b3ItPmJhc2UuZGV2KTsKKwlzdHJ1Y3QgaTkxNV9oZGNwX2Nv bXBvbmVudF9tYXN0ZXIgKmNvbXAgPSBkZXZfcHJpdi0+aGRjcF9jb21wOworCWludCByZXQ7CisK KwlpZiAoIWNvbXApCisJCXJldHVybiAtRUlOVkFMOworCisJbXV0ZXhfbG9jaygmY29tcC0+bXV0 ZXgpOworCWlmICghY29tcC0+b3BzIHx8ICFjb21wLT5kZXYpIHsKKwkJbXV0ZXhfdW5sb2NrKCZj b21wLT5tdXRleCk7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCWlmIChkYXRhLT5wb3J0ID09 IE1FSV9ERElfSU5WQUxJRF9QT1JUICYmIGNvbm5lY3Rvci0+ZW5jb2RlcikKKwkJZGF0YS0+cG9y dCA9IEdFVF9NRUlfRERJX0lOREVYKGNvbm5lY3Rvci0+ZW5jb2Rlci0+cG9ydCk7CisKKwkvKiBD bGVhciBNRSBGVyBpbnN0YW5jZSBmb3IgdGhlIHBvcnQsIGp1c3QgaW5jYXNlICovCisJY29tcC0+ b3BzLT5jbG9zZV9oZGNwX3Nlc3Npb24oY29tcC0+ZGV2LCBkYXRhKTsKKworCXJldCA9IGNvbXAt Pm9wcy0+aW5pdGlhdGVfaGRjcDJfc2Vzc2lvbihjb21wLT5kZXYsCisJCQkJCQlkYXRhLCBha2Vf ZGF0YSk7CisJbXV0ZXhfdW5sb2NrKCZjb21wLT5tdXRleCk7CisKKwlyZXR1cm4gcmV0OworfQor CitzdGF0aWMgX19hdHRyaWJ1dGVfXygodW51c2VkKSkgaW50CitoZGNwMl92ZXJpZnlfcnhfY2Vy dF9wcmVwYXJlX2ttKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwKKwkJCQlzdHJ1 Y3QgaGRjcDJfYWtlX3NlbmRfY2VydCAqcnhfY2VydCwKKwkJCQlib29sICpwYWlyZWQsCisJCQkJ c3RydWN0IGhkY3AyX2FrZV9ub19zdG9yZWRfa20gKmVrX3B1Yl9rbSwKKwkJCQlzaXplX3QgKm1z Z19zeikKK3sKKwlzdHJ1Y3QgbWVpX2hkY3BfZGF0YSAqZGF0YSA9ICZjb25uZWN0b3ItPmhkY3Au bWVpX2RhdGE7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShj b25uZWN0b3ItPmJhc2UuZGV2KTsKKwlzdHJ1Y3QgaTkxNV9oZGNwX2NvbXBvbmVudF9tYXN0ZXIg KmNvbXAgPSBkZXZfcHJpdi0+aGRjcF9jb21wOworCWludCByZXQ7CisKKwlpZiAoIWNvbXApCisJ CXJldHVybiAtRUlOVkFMOworCisJbXV0ZXhfbG9jaygmY29tcC0+bXV0ZXgpOworCWlmICghY29t cC0+b3BzIHx8ICFjb21wLT5kZXYgfHwgZGF0YS0+cG9ydCA9PSBNRUlfRERJX0lOVkFMSURfUE9S VCkgeworCQltdXRleF91bmxvY2soJmNvbXAtPm11dGV4KTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJ fQorCisJcmV0ID0gY29tcC0+b3BzLT52ZXJpZnlfcmVjZWl2ZXJfY2VydF9wcmVwYXJlX2ttKGNv bXAtPmRldiwgZGF0YSwKKwkJCQkJCQkgcnhfY2VydCwgcGFpcmVkLAorCQkJCQkJCSBla19wdWJf a20sIG1zZ19zeik7CisJaWYgKHJldCA8IDApCisJCWNvbXAtPm9wcy0+Y2xvc2VfaGRjcF9zZXNz aW9uKGNvbXAtPmRldiwgZGF0YSk7CisJbXV0ZXhfdW5sb2NrKCZjb21wLT5tdXRleCk7CisKKwly ZXR1cm4gcmV0OworfQorCitzdGF0aWMgX19hdHRyaWJ1dGVfXygodW51c2VkKSkgaW50CitoZGNw Ml92ZXJpZnlfaHByaW1lKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwKKwkJICAg IHN0cnVjdCBoZGNwMl9ha2Vfc2VuZF9ocHJpbWUgKnJ4X2hwcmltZSkKK3sKKwlzdHJ1Y3QgbWVp X2hkY3BfZGF0YSAqZGF0YSA9ICZjb25uZWN0b3ItPmhkY3AubWVpX2RhdGE7CisJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjb25uZWN0b3ItPmJhc2UuZGV2KTsK KwlzdHJ1Y3QgaTkxNV9oZGNwX2NvbXBvbmVudF9tYXN0ZXIgKmNvbXAgPSBkZXZfcHJpdi0+aGRj cF9jb21wOworCWludCByZXQ7CisKKwlpZiAoIWNvbXApCisJCXJldHVybiAtRUlOVkFMOworCisJ bXV0ZXhfbG9jaygmY29tcC0+bXV0ZXgpOworCWlmICghY29tcC0+b3BzIHx8ICFjb21wLT5kZXYg fHwgZGF0YS0+cG9ydCA9PSBNRUlfRERJX0lOVkFMSURfUE9SVCkgeworCQltdXRleF91bmxvY2so JmNvbXAtPm11dGV4KTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJcmV0ID0gY29tcC0+b3Bz LT52ZXJpZnlfaHByaW1lKGNvbXAtPmRldiwgZGF0YSwgcnhfaHByaW1lKTsKKwlpZiAocmV0IDwg MCkKKwkJY29tcC0+b3BzLT5jbG9zZV9oZGNwX3Nlc3Npb24oY29tcC0+ZGV2LCBkYXRhKTsKKwlt dXRleF91bmxvY2soJmNvbXAtPm11dGV4KTsKKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBf X2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSBpbnQKK2hkY3AyX3N0b3JlX3BhaXJpbmdfaW5mbyhzdHJ1 Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IsCisJCQkgc3RydWN0IGhkY3AyX2FrZV9zZW5k X3BhaXJpbmdfaW5mbyAqcGFpcmluZ19pbmZvKQoreworCXN0cnVjdCBtZWlfaGRjcF9kYXRhICpk YXRhID0gJmNvbm5lY3Rvci0+aGRjcC5tZWlfZGF0YTsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNvbm5lY3Rvci0+YmFzZS5kZXYpOworCXN0cnVjdCBpOTE1 X2hkY3BfY29tcG9uZW50X21hc3RlciAqY29tcCA9IGRldl9wcml2LT5oZGNwX2NvbXA7CisJaW50 IHJldDsKKworCWlmICghY29tcCkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwltdXRleF9sb2NrKCZj b21wLT5tdXRleCk7CisJaWYgKCFjb21wLT5vcHMgfHwgIWNvbXAtPmRldiB8fCBkYXRhLT5wb3J0 ID09IE1FSV9ERElfSU5WQUxJRF9QT1JUKSB7CisJCW11dGV4X3VubG9jaygmY29tcC0+bXV0ZXgp OworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlyZXQgPSBjb21wLT5vcHMtPnN0b3JlX3BhaXJp bmdfaW5mbyhjb21wLT5kZXYsCisJCQkJCSAgICBkYXRhLCBwYWlyaW5nX2luZm8pOworCWlmIChy ZXQgPCAwKQorCQljb21wLT5vcHMtPmNsb3NlX2hkY3Bfc2Vzc2lvbihjb21wLT5kZXYsIGRhdGEp OworCW11dGV4X3VubG9jaygmY29tcC0+bXV0ZXgpOworCisJcmV0dXJuIHJldDsKK30KKworc3Rh dGljIF9fYXR0cmlidXRlX18oKHVudXNlZCkpIGludAoraGRjcDJfcHJlcGFyZV9sY19pbml0KHN0 cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwKKwkJICAgICAgc3RydWN0IGhkY3AyX2xj X2luaXQgKmxjX2luaXQpCit7CisJc3RydWN0IG1laV9oZGNwX2RhdGEgKmRhdGEgPSAmY29ubmVj dG9yLT5oZGNwLm1laV9kYXRhOworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IHRvX2k5MTUoY29ubmVjdG9yLT5iYXNlLmRldik7CisJc3RydWN0IGk5MTVfaGRjcF9jb21wb25l bnRfbWFzdGVyICpjb21wID0gZGV2X3ByaXYtPmhkY3BfY29tcDsKKwlpbnQgcmV0OworCisJaWYg KCFjb21wKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCW11dGV4X2xvY2soJmNvbXAtPm11dGV4KTsK KwlpZiAoIWNvbXAtPm9wcyB8fCAhY29tcC0+ZGV2IHx8IGRhdGEtPnBvcnQgPT0gTUVJX0RESV9J TlZBTElEX1BPUlQpIHsKKwkJbXV0ZXhfdW5sb2NrKCZjb21wLT5tdXRleCk7CisJCXJldHVybiAt RUlOVkFMOworCX0KKworCXJldCA9IGNvbXAtPm9wcy0+aW5pdGlhdGVfbG9jYWxpdHlfY2hlY2so Y29tcC0+ZGV2LAorCQkJCQkJIGRhdGEsIGxjX2luaXQpOworCWlmIChyZXQgPCAwKQorCQljb21w LT5vcHMtPmNsb3NlX2hkY3Bfc2Vzc2lvbihjb21wLT5kZXYsIGRhdGEpOworCW11dGV4X3VubG9j aygmY29tcC0+bXV0ZXgpOworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIF9fYXR0cmlidXRl X18oKHVudXNlZCkpIGludAoraGRjcDJfdmVyaWZ5X2xwcmltZShzdHJ1Y3QgaW50ZWxfY29ubmVj dG9yICpjb25uZWN0b3IsCisJCSAgICBzdHJ1Y3QgaGRjcDJfbGNfc2VuZF9scHJpbWUgKnJ4X2xw cmltZSkKK3sKKwlzdHJ1Y3QgbWVpX2hkY3BfZGF0YSAqZGF0YSA9ICZjb25uZWN0b3ItPmhkY3Au bWVpX2RhdGE7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShj b25uZWN0b3ItPmJhc2UuZGV2KTsKKwlzdHJ1Y3QgaTkxNV9oZGNwX2NvbXBvbmVudF9tYXN0ZXIg KmNvbXAgPSBkZXZfcHJpdi0+aGRjcF9jb21wOworCWludCByZXQ7CisKKwlpZiAoIWNvbXApCisJ CXJldHVybiAtRUlOVkFMOworCisJbXV0ZXhfbG9jaygmY29tcC0+bXV0ZXgpOworCWlmICghY29t cC0+b3BzIHx8ICFjb21wLT5kZXYgfHwgZGF0YS0+cG9ydCA9PSBNRUlfRERJX0lOVkFMSURfUE9S VCkgeworCQltdXRleF91bmxvY2soJmNvbXAtPm11dGV4KTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJ fQorCisJcmV0ID0gY29tcC0+b3BzLT52ZXJpZnlfbHByaW1lKGNvbXAtPmRldiwgZGF0YSwgcnhf bHByaW1lKTsKKwlpZiAocmV0IDwgMCkKKwkJY29tcC0+b3BzLT5jbG9zZV9oZGNwX3Nlc3Npb24o Y29tcC0+ZGV2LCBkYXRhKTsKKwltdXRleF91bmxvY2soJmNvbXAtPm11dGV4KTsKKworCXJldHVy biByZXQ7Cit9CisKK3N0YXRpYyBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKQoraW50IGhkY3AyX3By ZXBhcmVfc2tleShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IsCisJCSAgICAgICBz dHJ1Y3QgaGRjcDJfc2tlX3NlbmRfZWtzICpza2VfZGF0YSkKK3sKKwlzdHJ1Y3QgbWVpX2hkY3Bf ZGF0YSAqZGF0YSA9ICZjb25uZWN0b3ItPmhkY3AubWVpX2RhdGE7CisJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjb25uZWN0b3ItPmJhc2UuZGV2KTsKKwlzdHJ1 Y3QgaTkxNV9oZGNwX2NvbXBvbmVudF9tYXN0ZXIgKmNvbXAgPSBkZXZfcHJpdi0+aGRjcF9jb21w OworCWludCByZXQ7CisKKwlpZiAoIWNvbXApCisJCXJldHVybiAtRUlOVkFMOworCisJbXV0ZXhf bG9jaygmY29tcC0+bXV0ZXgpOworCWlmICghY29tcC0+b3BzIHx8ICFjb21wLT5kZXYgfHwgZGF0 YS0+cG9ydCA9PSBNRUlfRERJX0lOVkFMSURfUE9SVCkgeworCQltdXRleF91bmxvY2soJmNvbXAt Pm11dGV4KTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJcmV0ID0gY29tcC0+b3BzLT5nZXRf c2Vzc2lvbl9rZXkoY29tcC0+ZGV2LCBkYXRhLCBza2VfZGF0YSk7CisJaWYgKHJldCA8IDApCisJ CWNvbXAtPm9wcy0+Y2xvc2VfaGRjcF9zZXNzaW9uKGNvbXAtPmRldiwgZGF0YSk7CisJbXV0ZXhf dW5sb2NrKCZjb21wLT5tdXRleCk7CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgX19hdHRy aWJ1dGVfXygodW51c2VkKSkgaW50CitoZGNwMl92ZXJpZnlfcmVwX3RvcG9sb2d5X3ByZXBhcmVf YWNrKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwKKwkJCQkgICAgICBzdHJ1Y3Qg aGRjcDJfcmVwX3NlbmRfcmVjZWl2ZXJpZF9saXN0CisJCQkJCQkJCSpyZXBfdG9wb2xvZ3ksCisJ CQkJICAgICAgc3RydWN0IGhkY3AyX3JlcF9zZW5kX2FjayAqcmVwX3NlbmRfYWNrKQoreworCXN0 cnVjdCBtZWlfaGRjcF9kYXRhICpkYXRhID0gJmNvbm5lY3Rvci0+aGRjcC5tZWlfZGF0YTsKKwlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNvbm5lY3Rvci0+YmFz ZS5kZXYpOworCXN0cnVjdCBpOTE1X2hkY3BfY29tcG9uZW50X21hc3RlciAqY29tcCA9IGRldl9w cml2LT5oZGNwX2NvbXA7CisJaW50IHJldDsKKworCWlmICghY29tcCkKKwkJcmV0dXJuIC1FSU5W QUw7CisKKwltdXRleF9sb2NrKCZjb21wLT5tdXRleCk7CisJaWYgKCFjb21wLT5vcHMgfHwgIWNv bXAtPmRldiB8fCBkYXRhLT5wb3J0ID09IE1FSV9ERElfSU5WQUxJRF9QT1JUKSB7CisJCW11dGV4 X3VubG9jaygmY29tcC0+bXV0ZXgpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisKKwlyZXQgPSBj b21wLT5vcHMtPnJlcGVhdGVyX2NoZWNrX2Zsb3dfcHJlcGFyZV9hY2soY29tcC0+ZGV2LAorCQkJ CQkJCSBkYXRhLCByZXBfdG9wb2xvZ3ksCisJCQkJCQkJIHJlcF9zZW5kX2Fjayk7CisJaWYgKHJl dCA8IDApCisJCWNvbXAtPm9wcy0+Y2xvc2VfaGRjcF9zZXNzaW9uKGNvbXAtPmRldiwgZGF0YSk7 CisJbXV0ZXhfdW5sb2NrKCZjb21wLT5tdXRleCk7CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0 aWMgX19hdHRyaWJ1dGVfXygodW51c2VkKSkgaW50CitoZGNwMl92ZXJpZnlfbXByaW1lKHN0cnVj dCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwKKwkJICAgIHN0cnVjdCBoZGNwMl9yZXBfc3Ry ZWFtX3JlYWR5ICpzdHJlYW1fcmVhZHkpCit7CisJc3RydWN0IG1laV9oZGNwX2RhdGEgKmRhdGEg PSAmY29ubmVjdG9yLT5oZGNwLm1laV9kYXRhOworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IHRvX2k5MTUoY29ubmVjdG9yLT5iYXNlLmRldik7CisJc3RydWN0IGk5MTVfaGRj cF9jb21wb25lbnRfbWFzdGVyICpjb21wID0gZGV2X3ByaXYtPmhkY3BfY29tcDsKKwlpbnQgcmV0 OworCisJaWYgKCFjb21wKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCW11dGV4X2xvY2soJmNvbXAt Pm11dGV4KTsKKwlpZiAoIWNvbXAtPm9wcyB8fCAhY29tcC0+ZGV2IHx8IGRhdGEtPnBvcnQgPT0g TUVJX0RESV9JTlZBTElEX1BPUlQpIHsKKwkJbXV0ZXhfdW5sb2NrKCZjb21wLT5tdXRleCk7CisJ CXJldHVybiAtRUlOVkFMOworCX0KKworCXJldCA9IGNvbXAtPm9wcy0+dmVyaWZ5X21wcmltZShj b21wLT5kZXYsIGRhdGEsIHN0cmVhbV9yZWFkeSk7CisJaWYgKHJldCA8IDApCisJCWNvbXAtPm9w cy0+Y2xvc2VfaGRjcF9zZXNzaW9uKGNvbXAtPmRldiwgZGF0YSk7CisJbXV0ZXhfdW5sb2NrKCZj b21wLT5tdXRleCk7CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgX19hdHRyaWJ1dGVfXygo dW51c2VkKSkKK2ludCBoZGNwMl9hdXRoZW50aWNhdGVfcG9ydChzdHJ1Y3QgaW50ZWxfY29ubmVj dG9yICpjb25uZWN0b3IpCit7CisJc3RydWN0IG1laV9oZGNwX2RhdGEgKmRhdGEgPSAmY29ubmVj dG9yLT5oZGNwLm1laV9kYXRhOworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IHRvX2k5MTUoY29ubmVjdG9yLT5iYXNlLmRldik7CisJc3RydWN0IGk5MTVfaGRjcF9jb21wb25l bnRfbWFzdGVyICpjb21wID0gZGV2X3ByaXYtPmhkY3BfY29tcDsKKwlpbnQgcmV0OworCisJaWYg KCFjb21wKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCW11dGV4X2xvY2soJmNvbXAtPm11dGV4KTsK KwlpZiAoIWNvbXAtPm9wcyB8fCAhY29tcC0+ZGV2IHx8IGRhdGEtPnBvcnQgPT0gTUVJX0RESV9J TlZBTElEX1BPUlQpIHsKKwkJbXV0ZXhfdW5sb2NrKCZjb21wLT5tdXRleCk7CisJCXJldHVybiAt RUlOVkFMOworCX0KKworCXJldCA9IGNvbXAtPm9wcy0+ZW5hYmxlX2hkY3BfYXV0aGVudGljYXRp b24oY29tcC0+ZGV2LCBkYXRhKTsKKwlpZiAocmV0IDwgMCkKKwkJY29tcC0+b3BzLT5jbG9zZV9o ZGNwX3Nlc3Npb24oY29tcC0+ZGV2LCBkYXRhKTsKKwltdXRleF91bmxvY2soJmNvbXAtPm11dGV4 KTsKKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKQor aW50IGhkY3AyX2Nsb3NlX21laV9zZXNzaW9uKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5l Y3RvcikKK3sKKwlzdHJ1Y3QgbWVpX2hkY3BfZGF0YSAqZGF0YSA9ICZjb25uZWN0b3ItPmhkY3Au bWVpX2RhdGE7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShj b25uZWN0b3ItPmJhc2UuZGV2KTsKKwlzdHJ1Y3QgaTkxNV9oZGNwX2NvbXBvbmVudF9tYXN0ZXIg KmNvbXAgPSBkZXZfcHJpdi0+aGRjcF9jb21wOworCWludCByZXQ7CisKKwlpZiAoIWNvbXApCisJ CXJldHVybiAtRUlOVkFMOworCisJbXV0ZXhfbG9jaygmY29tcC0+bXV0ZXgpOworCWlmICghY29t cC0+b3BzIHx8ICFjb21wLT5kZXYgfHwKKwkgICAgZGF0YS0+cG9ydCA9PSBNRUlfRERJX0lOVkFM SURfUE9SVCkgeworCQltdXRleF91bmxvY2soJmNvbXAtPm11dGV4KTsKKwkJcmV0dXJuIC1FSU5W QUw7CisJfQorCisJcmV0ID0gY29tcC0+b3BzLT5jbG9zZV9oZGNwX3Nlc3Npb24oY29tcC0+ZGV2 LCBkYXRhKTsKKwltdXRleF91bmxvY2soJmNvbXAtPm11dGV4KTsKKwlyZXR1cm4gcmV0OworfQor CitzdGF0aWMgX19hdHRyaWJ1dGVfXygodW51c2VkKSkKK2ludCBoZGNwMl9kZWF1dGhlbnRpY2F0 ZV9wb3J0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKK3sKKwlyZXR1cm4gaGRj cDJfY2xvc2VfbWVpX3Nlc3Npb24oY29ubmVjdG9yKTsKK30KKworc3RhdGljIGludCBpOTE1X2hk Y3BfY29tcG9uZW50X21hc3Rlcl9iaW5kKHN0cnVjdCBkZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBrZGV2X3RvX2k5MTUoZGV2KTsKKworCXJldHVy biBjb21wb25lbnRfYmluZF9hbGwoZGV2LCBkZXZfcHJpdi0+aGRjcF9jb21wKTsKK30KKworc3Rh dGljIHZvaWQgaW50ZWxfY29ubmVjdG9yc19oZGNwX2Rpc2FibGUoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KQoreworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSAmZGV2X3ByaXYt PmRybTsKKwlzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICppbnRlbF9jb25uZWN0b3I7CisJc3RydWN0 IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcjsKKwlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9saXN0X2l0 ZXIgY29ubl9pdGVyOworCisJZHJtX2Nvbm5lY3Rvcl9saXN0X2l0ZXJfYmVnaW4oZGV2LCAmY29u bl9pdGVyKTsKKwlkcm1fZm9yX2VhY2hfY29ubmVjdG9yX2l0ZXIoY29ubmVjdG9yLCAmY29ubl9p dGVyKSB7CisJCWludGVsX2Nvbm5lY3RvciA9IHRvX2ludGVsX2Nvbm5lY3Rvcihjb25uZWN0b3Ip OworCQlpZiAoIShpbnRlbF9jb25uZWN0b3ItPmhkY3Auc2hpbSkpCisJCQljb250aW51ZTsKKwor CQlpbnRlbF9oZGNwX2Rpc2FibGUoaW50ZWxfY29ubmVjdG9yKTsKKwl9CisJZHJtX2Nvbm5lY3Rv cl9saXN0X2l0ZXJfZW5kKCZjb25uX2l0ZXIpOworfQorCitzdGF0aWMgdm9pZCBpOTE1X2hkY3Bf Y29tcG9uZW50X21hc3Rlcl91bmJpbmQoc3RydWN0IGRldmljZSAqZGV2KQoreworCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGtkZXZfdG9faTkxNShkZXYpOworCisJaW50ZWxf Y29ubmVjdG9yc19oZGNwX2Rpc2FibGUoZGV2X3ByaXYpOworCWNvbXBvbmVudF91bmJpbmRfYWxs KGRldiwgZGV2X3ByaXYtPmhkY3BfY29tcCk7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgY29t cG9uZW50X21hc3Rlcl9vcHMgaTkxNV9oZGNwX2NvbXBvbmVudF9tYXN0ZXJfb3BzID0geworCS5i aW5kID0gaTkxNV9oZGNwX2NvbXBvbmVudF9tYXN0ZXJfYmluZCwKKwkudW5iaW5kID0gaTkxNV9o ZGNwX2NvbXBvbmVudF9tYXN0ZXJfdW5iaW5kLAorfTsKKworc3RhdGljIGludCBpOTE1X2hkY3Bf Y29tcG9uZW50X21hdGNoKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqZGF0YSkKK3sKKwlyZXR1 cm4gIXN0cmNtcChkZXYtPmRyaXZlci0+bmFtZSwgIm1laV9oZGNwIik7Cit9CisKK3N0YXRpYyBp bnQgaW50ZWxfaGRjcF9jb21wb25lbnRfaW5pdChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25u ZWN0b3IpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShj b25uZWN0b3ItPmJhc2UuZGV2KTsKKwlzdHJ1Y3QgaTkxNV9oZGNwX2NvbXBvbmVudF9tYXN0ZXIg KmNvbXA7CisJc3RydWN0IGNvbXBvbmVudF9tYXRjaCAqbWF0Y2ggPSBOVUxMOworCWludCByZXQ7 CisKKwljb21wID0ga3phbGxvYyhzaXplb2YoKmNvbXApLCBHRlBfS0VSTkVMKTsKKwlpZiAoIWNv bXApCisJCXJldHVybiAtRU5PTUVNOworCisJbXV0ZXhfaW5pdCgmY29tcC0+bXV0ZXgpOworCWRl dl9wcml2LT5oZGNwX2NvbXAgPSBjb21wOworCisJY29tcG9uZW50X21hdGNoX2FkZChkZXZfcHJp di0+ZHJtLmRldiwgJm1hdGNoLAorCQkJICAgIGk5MTVfaGRjcF9jb21wb25lbnRfbWF0Y2gsIGRl dl9wcml2KTsKKwlyZXQgPSBjb21wb25lbnRfbWFzdGVyX2FkZF93aXRoX21hdGNoKGRldl9wcml2 LT5kcm0uZGV2LAorCQkJCQkgICAgICAmaTkxNV9oZGNwX2NvbXBvbmVudF9tYXN0ZXJfb3BzLAor CQkJCQkgICAgICBtYXRjaCk7CisJaWYgKHJldCA8IDApCisJCWdvdG8gb3V0X2VycjsKKworCURS TV9JTkZPKCJJOTE1IGhkY3AgY29tcG9uZW50IG1hc3RlciBhZGRlZC5cbiIpOworCXJldHVybiBy ZXQ7CisKK291dF9lcnI6CisJY29tcG9uZW50X21hc3Rlcl9kZWwoZGV2X3ByaXYtPmRybS5kZXYs CisJCQkgICAgICZpOTE1X2hkY3BfY29tcG9uZW50X21hc3Rlcl9vcHMpOworCWtmcmVlKGNvbXAp OworCWRldl9wcml2LT5oZGNwX2NvbXAgPSBOVUxMOworCURSTV9FUlJPUigiRmFpbGVkIHRvIGFk ZCBpOTE1IGhkY3AgY29tcG9uZW50IG1hc3RlciAoJWQpXG4iLCByZXQpOworCisJcmV0dXJuIHJl dDsKK30KKworc3RhdGljIGludCBpbml0aWFsaXplX21laV9oZGNwX2RhdGEoc3RydWN0IGludGVs X2Nvbm5lY3RvciAqY29ubmVjdG9yKQoreworCXN0cnVjdCBpbnRlbF9oZGNwICpoZGNwID0gJmNv bm5lY3Rvci0+aGRjcDsKKwlzdHJ1Y3QgbWVpX2hkY3BfZGF0YSAqZGF0YSA9ICZoZGNwLT5tZWlf ZGF0YTsKKwllbnVtIHBvcnQgcG9ydDsKKworCWlmIChjb25uZWN0b3ItPmVuY29kZXIpIHsKKwkJ cG9ydCA9IGNvbm5lY3Rvci0+ZW5jb2Rlci0+cG9ydDsKKwkJZGF0YS0+cG9ydCA9IEdFVF9NRUlf RERJX0lOREVYKHBvcnQpOworCX0KKworCWRhdGEtPnBvcnRfdHlwZSA9IE1FSV9IRENQX1BPUlRf VFlQRV9JTlRFR1JBVEVEOworCWRhdGEtPnByb3RvY29sID0gaGRjcC0+c2hpbS0+aGRjcF9wcm90 b2NvbCgpOworCisJZGF0YS0+ayA9IDE7CisJaWYgKCFkYXRhLT5zdHJlYW1zKQorCQlkYXRhLT5z dHJlYW1zID0ga2NhbGxvYyhkYXRhLT5rLCBzaXplb2YoZGF0YS0+c3RyZWFtc1swXSksCisJCQkJ CUdGUF9LRVJORUwpOworCWlmICghZGF0YS0+c3RyZWFtcykgeworCQlEUk1fRVJST1IoIk91dCBv ZiBNZW1vcnlcbiIpOworCQlyZXR1cm4gLUVOT01FTTsKKwl9CisKKwlkYXRhLT5zdHJlYW1zWzBd LnN0cmVhbV9pZCA9IDA7CisJZGF0YS0+c3RyZWFtc1swXS5zdHJlYW1fdHlwZSA9IGhkY3AtPmNv bnRlbnRfdHlwZTsKKworCXJldHVybiAwOworfQorCiBib29sIGlzX2hkY3AyX3N1cHBvcnRlZChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7CiAJcmV0dXJuICgoSU5URUxfR0VO KGRldl9wcml2KSA+PSAxMCB8fCBJU19HRU1JTklMQUtFKGRldl9wcml2KSB8fApAQCAtODQzLDEw ICsxMjYwLDI1IEBAIHN0YXRpYyB2b2lkIGludGVsX2hkY3AyX2luaXQoc3RydWN0IGludGVsX2Nv bm5lY3RvciAqY29ubmVjdG9yKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IHRvX2k5MTUoY29ubmVjdG9yLT5iYXNlLmRldik7CiAJc3RydWN0IGludGVsX2hkY3AgKmhk Y3AgPSAmY29ubmVjdG9yLT5oZGNwOworCWludCByZXQ7CiAKIAlXQVJOX09OKCFpc19oZGNwMl9z dXBwb3J0ZWQoZGV2X3ByaXYpKTsKIAotCS8qIFRPRE86IE1FSSBpbnRlcmZhY2UgbmVlZHMgdG8g YmUgaW5pdGlhbGl6ZWQgaGVyZSAqLworCXJldCA9IGluaXRpYWxpemVfbWVpX2hkY3BfZGF0YShj b25uZWN0b3IpOworCWlmIChyZXQpIHsKKwkJRFJNX0RFQlVHX0tNUygiTWVpIGhkY3AgZGF0YSBp bml0IGZhaWxlZFxuIik7CisJCXJldHVybjsKKwl9CisKKwlpZiAoIWRldl9wcml2LT5oZGNwX2Nv bXApCisJCXJldCA9IGludGVsX2hkY3BfY29tcG9uZW50X2luaXQoY29ubmVjdG9yKTsKKworCWlm IChyZXQpIHsKKwkJRFJNX0RFQlVHX0tNUygiSERDUCBjb21wIGluaXQgZmFpbGVkXG4iKTsKKwkJ a2ZyZWUoaGRjcC0+bWVpX2RhdGEuc3RyZWFtcyk7CisJCXJldHVybjsKKwl9CisKIAloZGNwLT5o ZGNwMl9zdXBwb3J0ZWQgPSAxOwogfQogCkBAIC04OTQsOSArMTMyNiwxNyBAQCB2b2lkIGludGVs X2hkY3BfZXhpdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCW11dGV4X2xv Y2soJmludGVsX2Nvbm5lY3Rvci0+aGRjcC5tdXRleCk7CiAJCWludGVsX2Nvbm5lY3Rvci0+aGRj cC5oZGNwMl9zdXBwb3J0ZWQgPSAwOwogCQlpbnRlbF9jb25uZWN0b3ItPmhkY3Auc2hpbSA9IE5V TEw7CisJCWtmcmVlKGludGVsX2Nvbm5lY3Rvci0+aGRjcC5tZWlfZGF0YS5zdHJlYW1zKTsKIAkJ bXV0ZXhfdW5sb2NrKCZpbnRlbF9jb25uZWN0b3ItPmhkY3AubXV0ZXgpOwogCX0KIAlkcm1fY29u bmVjdG9yX2xpc3RfaXRlcl9lbmQoJmNvbm5faXRlcik7CisKKwlpZiAoZGV2X3ByaXYtPmhkY3Bf Y29tcCkgeworCQljb21wb25lbnRfbWFzdGVyX2RlbChkZXZfcHJpdi0+ZHJtLmRldiwKKwkJCQkg ICAgICZpOTE1X2hkY3BfY29tcG9uZW50X21hc3Rlcl9vcHMpOworCQlrZnJlZShkZXZfcHJpdi0+ aGRjcF9jb21wKTsKKwkJZGV2X3ByaXYtPmhkY3BfY29tcCA9IE5VTEw7CisJfQogfQogCiBpbnQg aW50ZWxfaGRjcF9lbmFibGUoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQpkaWZm IC0tZ2l0IGEvaW5jbHVkZS9kcm0vaTkxNV9jb21wb25lbnQuaCBiL2luY2x1ZGUvZHJtL2k5MTVf Y29tcG9uZW50LmgKaW5kZXggZmNhMjJkNDYzZTFiLi4xMjI2ODIyOGY0ZGMgMTAwNjQ0Ci0tLSBh L2luY2x1ZGUvZHJtL2k5MTVfY29tcG9uZW50LmgKKysrIGIvaW5jbHVkZS9kcm0vaTkxNV9jb21w b25lbnQuaApAQCAtMjQsOCArMjQsMTIgQEAKICNpZm5kZWYgX0k5MTVfQ09NUE9ORU5UX0hfCiAj ZGVmaW5lIF9JOTE1X0NPTVBPTkVOVF9IXwogCisjaW5jbHVkZSA8bGludXgvbXV0ZXguaD4KKwog I2luY2x1ZGUgImRybV9hdWRpb19jb21wb25lbnQuaCIKIAorI2luY2x1ZGUgPGRybS9kcm1faGRj cC5oPgorCiAvKiBNQVhfUE9SVCBpcyB0aGUgbnVtYmVyIG9mIHBvcnQKICAqIEl0IG11c3QgYmUg c3luYyB3aXRoIEk5MTVfTUFYX1BPUlRTIGRlZmluZWQgaTkxNV9kcnYuaAogICovCkBAIC00Niw0 ICs1MCw3MSBAQCBzdHJ1Y3QgaTkxNV9hdWRpb19jb21wb25lbnQgewogCWludCBhdWRfc2FtcGxl X3JhdGVbTUFYX1BPUlRTXTsKIH07CiAKK3N0cnVjdCBpOTE1X2hkY3BfY29tcG9uZW50X29wcyB7 CisJLyoqCisJICogQG93bmVyOiBtZWlfaGRjcCBtb2R1bGUKKwkgKi8KKwlzdHJ1Y3QgbW9kdWxl ICpvd25lcjsKKworCWludCAoKmluaXRpYXRlX2hkY3AyX3Nlc3Npb24pKHN0cnVjdCBkZXZpY2Ug KmRldiwKKwkJCQkgICAgICB2b2lkICpoZGNwX2RhdGEsCisJCQkJICAgICAgc3RydWN0IGhkY3Ay X2FrZV9pbml0ICpha2VfZGF0YSk7CisJaW50ICgqdmVyaWZ5X3JlY2VpdmVyX2NlcnRfcHJlcGFy ZV9rbSkoc3RydWN0IGRldmljZSAqZGV2LAorCQkJCQkgICAgICAgdm9pZCAqaGRjcF9kYXRhLAor CQkJCQkgICAgICAgc3RydWN0IGhkY3AyX2FrZV9zZW5kX2NlcnQKKwkJCQkJCQkJKnJ4X2NlcnQs CisJCQkJCSAgICAgICBib29sICprbV9zdG9yZWQsCisJCQkJCSAgICAgICBzdHJ1Y3QgaGRjcDJf YWtlX25vX3N0b3JlZF9rbQorCQkJCQkJCQkqZWtfcHViX2ttLAorCQkJCQkgICAgICAgc2l6ZV90 ICptc2dfc3opOworCWludCAoKnZlcmlmeV9ocHJpbWUpKHN0cnVjdCBkZXZpY2UgKmRldiwKKwkJ CSAgICAgdm9pZCAqaGRjcF9kYXRhLAorCQkJICAgICBzdHJ1Y3QgaGRjcDJfYWtlX3NlbmRfaHBy aW1lICpyeF9ocHJpbWUpOworCWludCAoKnN0b3JlX3BhaXJpbmdfaW5mbykoc3RydWN0IGRldmlj ZSAqZGV2LAorCQkJCSAgdm9pZCAqaGRjcF9kYXRhLAorCQkJCSAgc3RydWN0IGhkY3AyX2FrZV9z ZW5kX3BhaXJpbmdfaW5mbworCQkJCQkJCQkqcGFpcmluZ19pbmZvKTsKKwlpbnQgKCppbml0aWF0 ZV9sb2NhbGl0eV9jaGVjaykoc3RydWN0IGRldmljZSAqZGV2LAorCQkJCSAgICAgICB2b2lkICpo ZGNwX2RhdGEsCisJCQkJICAgICAgIHN0cnVjdCBoZGNwMl9sY19pbml0ICpsY19pbml0X2RhdGEp OworCWludCAoKnZlcmlmeV9scHJpbWUpKHN0cnVjdCBkZXZpY2UgKmRldiwKKwkJCSAgICAgdm9p ZCAqaGRjcF9kYXRhLAorCQkJICAgICBzdHJ1Y3QgaGRjcDJfbGNfc2VuZF9scHJpbWUgKnJ4X2xw cmltZSk7CisJaW50ICgqZ2V0X3Nlc3Npb25fa2V5KShzdHJ1Y3QgZGV2aWNlICpkZXYsCisJCQkg ICAgICAgdm9pZCAqaGRjcF9kYXRhLAorCQkJICAgICAgIHN0cnVjdCBoZGNwMl9za2Vfc2VuZF9l a3MgKnNrZV9kYXRhKTsKKwlpbnQgKCpyZXBlYXRlcl9jaGVja19mbG93X3ByZXBhcmVfYWNrKShz dHJ1Y3QgZGV2aWNlICpkZXYsCisJCQkJCSAgICAgICB2b2lkICpoZGNwX2RhdGEsCisJCQkJCSAg ICAgICBzdHJ1Y3QgaGRjcDJfcmVwX3NlbmRfcmVjZWl2ZXJpZF9saXN0CisJCQkJCQkJCSpyZXBf dG9wb2xvZ3ksCisJCQkJCSAgICAgICBzdHJ1Y3QgaGRjcDJfcmVwX3NlbmRfYWNrCisJCQkJCQkJ CSpyZXBfc2VuZF9hY2spOworCWludCAoKnZlcmlmeV9tcHJpbWUpKHN0cnVjdCBkZXZpY2UgKmRl diwKKwkJCSAgICAgdm9pZCAqaGRjcF9kYXRhLAorCQkJICAgICBzdHJ1Y3QgaGRjcDJfcmVwX3N0 cmVhbV9yZWFkeSAqc3RyZWFtX3JlYWR5KTsKKwlpbnQgKCplbmFibGVfaGRjcF9hdXRoZW50aWNh dGlvbikoc3RydWN0IGRldmljZSAqZGV2LAorCQkJCQkgIHZvaWQgKmhkY3BfZGF0YSk7CisJaW50 ICgqY2xvc2VfaGRjcF9zZXNzaW9uKShzdHJ1Y3QgZGV2aWNlICpkZXYsCisJCQkJICB2b2lkICpo ZGNwX2RhdGEpOworfTsKKworLyoqCisgKiBzdHJ1Y3QgaTkxNV9oZGNwX2NvbXBvbmVudF9tYXN0 ZXIgLSBVc2VkIGZvciBjb21tdW5pY2F0aW9uIGJldHdlZW4gaTkxNQorICogYW5kIG1laV9oZGNw IGZvciBIRENQMi4yIHNlcnZpY2VzLgorICovCitzdHJ1Y3QgaTkxNV9oZGNwX2NvbXBvbmVudF9t YXN0ZXIgeworCS8qKgorCSAqIEBkZXY6IGEgZGV2aWNlIHByb3ZpZGluZyBoZGNwCisJICovCisJ c3RydWN0IGRldmljZSAqZGV2OworCS8qKgorCSAqIEBtdXRleDogTXV0ZXggdG8gcHJvdGVjdCB0 aGUgc3RhdGUgb2YgZGV2CisJICovCisJc3RydWN0IG11dGV4IG11dGV4OworCS8qKgorCSAqIEBv cHM6IE9wcyBpbXBsZW1lbnRlZCBieSBtZWlfaGRjcCBkcml2ZXIsIHVzZWQgYnkgaTkxNSBkcml2 ZXIuCisJICovCisJY29uc3Qgc3RydWN0IGk5MTVfaGRjcF9jb21wb25lbnRfb3BzICpvcHM7Cit9 OworCiAjZW5kaWYgLyogX0k5MTVfQ09NUE9ORU5UX0hfICovCi0tIAoyLjcuNAoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcg bGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==