From mboxrd@z Thu Jan 1 00:00:00 1970 From: Anusha Srivatsa Subject: [PATCH 1/8] drm/i915/guc: Make the GuC fw loading helper functions general Date: Fri, 13 Jan 2017 10:08:36 -0800 Message-ID: <1484330923-22031-2-git-send-email-anusha.srivatsa@intel.com> References: <1484330923-22031-1-git-send-email-anusha.srivatsa@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id E08166EE54 for ; Fri, 13 Jan 2017 18:11:58 +0000 (UTC) In-Reply-To: <1484330923-22031-1-git-send-email-anusha.srivatsa@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: Alex Dai , Peter Antoine List-Id: intel-gfx@lists.freedesktop.org UmVuYW1lIHNvbWUgb2YgdGhlIEd1QyBmdyBsb2FkaW5nIGNvZGUgdG8gbWFrZSB0aGVtIG1vcmUg Z2VuZXJhbC4gV2UKd2lsbCB1dGlsaXNlIHRoZW0gZm9yIEh1QyBsb2FkaW5nIGFzIHdlbGwuCiAg ICAgcy9pbnRlbF9ndWNfZncvaW50ZWxfdWNfZncvZwogICAgIHMvR1VDX0ZJUk1XQVJFL0lOVEVM X1VDX0ZJUk1XQVJFL2cKClN0cnVjdCBpbnRlbF9ndWNfZncgaXMgcmVuYW1lZCB0byBpbnRlbF91 Y19mdy4gUHJlZml4IG9mIHR0cyBtZW1iZXJzLApzdWNoIGFzICdndWMnIG9yICdndWNfZncnIGVp dGhlciBpcyByZW5hbWVkIHRvICd1Yycgb3IgcmVtb3ZlZCBmb3IKc2FtZSBwdXJwb3NlLgoKdjI6 IHJlYmFzZWQgb24gdG9wIG9mIG5pZ2h0bHkuCiAgICByZWFwcGxpZWQgdGhlIHNlYXJjaC9yZXBs YWNlIGFzIHVwc3RyZWFtIGNvZGUgYXMgY2hhbmdlZC4KdjM6IHJlbW92ZWQgRyBmcm9tIG1lc3Nh Z2VzIGluIHNoYXJlZCBmdyBmZXRjaCBmdW5jdGlvbi4KdjQ6IHJlYmFzZWQuVXBkYXRlZCBkZXYg dG8gZGV2X3ByaXYgaW4gaW50ZWxfZ3VjX3NldHVwKCksIGd1Y19md19nZXRjaCgpCmFuZCBpbnRl bF9ndWNfaW5pdCgpLgp2NTogcmViYXNlZC4gUmVtb3ZlIHVpbnQzMl90IGZ3X3R5cGUgdG8gcGF0 Y2ggMi4gQWRkIElOVEVMXyBwcmVmaXggZm9yCmZpZWxkcyBpbiBlbnVtIGludGVsX3VjX2Z3X3N0 YXR1cy4gUmVtb3ZlIHVjX2RldiBmaWVsZCBzaW5jZSBpdHMgbmV2ZXIKdXNlZC5SZW5hbWUgdWNf ZncgdG8ganVzdCBmdyBhbmQgZ3VjX2Z3IHRvIGZ3IHRvIGF2b2lkIHJlZHVuZGVuY3kuCnY2OiBy ZWJhc2VkLiBSZW1vdmUgc2VjdGlvbnMgb2YgY29kZSB0aGF0IHdlcmUgY29tbWVudGVkIGFuZCBu byBsb25nZXIKcmVxdWlyZWQuCnY3OiByZWJhc2VkLiBSZW1vdmUgdWNfZndfIHByZWZpeCBmcm9t IHBhdGggYW5kIG9iaiBmaWVsZHMKaW4gaW50ZWxfdWNfZncgc3RydWN0IGFzIHN1Z2dlc3RlZCBi eSBNaWNoYWwuCnY4OiByZWJhc2VkLiBBZGQgZGVjbGFyYXRpb24gb2YgaW50ZWxfZ3VjX3dvcGNt X3NpemUoKSBpbgp0aGlzIHBhdGNoIGluc3RlYWQgb2YgcGF0Y2ggMy4KCkNjOiBNaWNoYWwgV2Fq ZGVjemtvIDxtaWNoYWwud2FqZGVjemtvQGludGVsLmNvbT4KQ2M6IEFya2FkaXVzeiBIaWxlciA8 YXJrYWRpdXN6LmhpbGVyQGludGVsLmNvbT4KU2lnbmVkLW9mZi1ieTogQW51c2hhIFNyaXZhdHNh IDxhbnVzaGEuc3JpdmF0c2FAaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBBbGV4IERhaSA8eXUu ZGFpQGludGVsLmNvbT4KU2lnbmVkLW9mZi1ieTogUGV0ZXIgQW50b2luZSA8cGV0ZXIuYW50b2lu ZUBpbnRlbC5jb20+ClJldmlld2VkLWJ5OiBBcmthZGl1c3ogSGlsZXIgPGFya2FkaXVzei5oaWxl ckBpbnRlbC5jb20+ClJldmlld2VkLWJ5OiBNaWNoYWwgV2FqZGVjemtvIDxtaWNoYWwud2FqZGVj emtvQGludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyAg ICAgICAgfCAgMTIgKy0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9u LmMgfCAgIDQgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19sb2FkZXIuYyAgICB8 IDE1NiArKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfdWMuaCAgICAgICAgICAgIHwgIDM3ICsrKy0tLS0KIDQgZmlsZXMgY2hhbmdlZCwgMTA1 IGluc2VydGlvbnMoKyksIDEwNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVi dWdmcy5jCmluZGV4IGUzNjdmMDYuLjhjYTg0MjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZGVidWdmcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVi dWdmcy5jCkBAIC0yMzU1LDcgKzIzNTUsNyBAQCBzdGF0aWMgaW50IGk5MTVfbGxjKHN0cnVjdCBz ZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKIHN0YXRpYyBpbnQgaTkxNV9ndWNfbG9hZF9zdGF0dXNf aW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCiB7CiAJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gbm9kZV90b19pOTE1KG0tPnByaXZhdGUpOwotCXN0cnVjdCBp bnRlbF9ndWNfZncgKmd1Y19mdyA9ICZkZXZfcHJpdi0+Z3VjLmd1Y19mdzsKKwlzdHJ1Y3QgaW50 ZWxfdWNfZncgKmd1Y19mdyA9ICZkZXZfcHJpdi0+Z3VjLmZ3OwogCXUzMiB0bXAsIGk7CiAKIAlp ZiAoIUhBU19HVUNfVUNPREUoZGV2X3ByaXYpKQpAQCAtMjM2MywxNSArMjM2MywxNSBAQCBzdGF0 aWMgaW50IGk5MTVfZ3VjX2xvYWRfc3RhdHVzX2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lk ICpkYXRhKQogCiAJc2VxX3ByaW50ZihtLCAiR3VDIGZpcm13YXJlIHN0YXR1czpcbiIpOwogCXNl cV9wcmludGYobSwgIlx0cGF0aDogJXNcbiIsCi0JCWd1Y19mdy0+Z3VjX2Z3X3BhdGgpOworCQln dWNfZnctPnBhdGgpOwogCXNlcV9wcmludGYobSwgIlx0ZmV0Y2g6ICVzXG4iLAotCQlpbnRlbF9n dWNfZndfc3RhdHVzX3JlcHIoZ3VjX2Z3LT5ndWNfZndfZmV0Y2hfc3RhdHVzKSk7CisJCWludGVs X3VjX2Z3X3N0YXR1c19yZXByKGd1Y19mdy0+ZmV0Y2hfc3RhdHVzKSk7CiAJc2VxX3ByaW50Ziht LCAiXHRsb2FkOiAlc1xuIiwKLQkJaW50ZWxfZ3VjX2Z3X3N0YXR1c19yZXByKGd1Y19mdy0+Z3Vj X2Z3X2xvYWRfc3RhdHVzKSk7CisJCWludGVsX3VjX2Z3X3N0YXR1c19yZXByKGd1Y19mdy0+bG9h ZF9zdGF0dXMpKTsKIAlzZXFfcHJpbnRmKG0sICJcdHZlcnNpb24gd2FudGVkOiAlZC4lZFxuIiwK LQkJZ3VjX2Z3LT5ndWNfZndfbWFqb3Jfd2FudGVkLCBndWNfZnctPmd1Y19md19taW5vcl93YW50 ZWQpOworCQlndWNfZnctPm1ham9yX3Zlcl93YW50ZWQsIGd1Y19mdy0+bWlub3JfdmVyX3dhbnRl ZCk7CiAJc2VxX3ByaW50ZihtLCAiXHR2ZXJzaW9uIGZvdW5kOiAlZC4lZFxuIiwKLQkJZ3VjX2Z3 LT5ndWNfZndfbWFqb3JfZm91bmQsIGd1Y19mdy0+Z3VjX2Z3X21pbm9yX2ZvdW5kKTsKKwkJZ3Vj X2Z3LT5tYWpvcl92ZXJfZm91bmQsIGd1Y19mdy0+bWlub3JfdmVyX2ZvdW5kKTsKIAlzZXFfcHJp bnRmKG0sICJcdGhlYWRlcjogb2Zmc2V0IGlzICVkOyBzaXplID0gJWRcbiIsCiAJCWd1Y19mdy0+ aGVhZGVyX29mZnNldCwgZ3VjX2Z3LT5oZWFkZXJfc2l6ZSk7CiAJc2VxX3ByaW50ZihtLCAiXHR1 Q29kZTogb2Zmc2V0IGlzICVkOyBzaXplID0gJWRcbiIsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2d1Y19zdWJtaXNzaW9uLmMKaW5kZXggOTEzZDg3My4uYmI3Y2Y5NSAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYwpAQCAtMTQ4MSw3ICsxNDgxLDcgQEAg aW50IGludGVsX2d1Y19zdXNwZW5kKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikK IAlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4OwogCXUzMiBkYXRhWzNdOwogCi0JaWYgKGd1 Yy0+Z3VjX2Z3Lmd1Y19md19sb2FkX3N0YXR1cyAhPSBHVUNfRklSTVdBUkVfU1VDQ0VTUykKKwlp ZiAoZ3VjLT5mdy5sb2FkX3N0YXR1cyAhPSBJTlRFTF9VQ19GSVJNV0FSRV9TVUNDRVNTKQogCQly ZXR1cm4gMDsKIAogCWdlbjlfZGlzYWJsZV9ndWNfaW50ZXJydXB0cyhkZXZfcHJpdik7CkBAIC0x NTA4LDcgKzE1MDgsNyBAQCBpbnQgaW50ZWxfZ3VjX3Jlc3VtZShzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCiAJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eDsKIAl1MzIgZGF0 YVszXTsKIAotCWlmIChndWMtPmd1Y19mdy5ndWNfZndfbG9hZF9zdGF0dXMgIT0gR1VDX0ZJUk1X QVJFX1NVQ0NFU1MpCisJaWYgKGd1Yy0+ZncubG9hZF9zdGF0dXMgIT0gSU5URUxfVUNfRklSTVdB UkVfU1VDQ0VTUykKIAkJcmV0dXJuIDA7CiAKIAlpZiAoaTkxNS5ndWNfbG9nX2xldmVsID49IDAp CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMKaW5kZXggYjg4OTE5MS4uNWEy Yzg2ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19sb2FkZXIuYwpAQCAtODEsMTYg KzgxLDE2IEBAIE1PRFVMRV9GSVJNV0FSRShJOTE1X0JYVF9HVUNfVUNPREUpOwogTU9EVUxFX0ZJ Uk1XQVJFKEk5MTVfS0JMX0dVQ19VQ09ERSk7CiAKIC8qIFVzZXItZnJpZW5kbHkgcmVwcmVzZW50 YXRpb24gb2YgYW4gZW51bSAqLwotY29uc3QgY2hhciAqaW50ZWxfZ3VjX2Z3X3N0YXR1c19yZXBy KGVudW0gaW50ZWxfZ3VjX2Z3X3N0YXR1cyBzdGF0dXMpCitjb25zdCBjaGFyICppbnRlbF91Y19m d19zdGF0dXNfcmVwcihlbnVtIGludGVsX3VjX2Z3X3N0YXR1cyBzdGF0dXMpCiB7CiAJc3dpdGNo IChzdGF0dXMpIHsKLQljYXNlIEdVQ19GSVJNV0FSRV9GQUlMOgorCWNhc2UgSU5URUxfVUNfRklS TVdBUkVfRkFJTDoKIAkJcmV0dXJuICJGQUlMIjsKLQljYXNlIEdVQ19GSVJNV0FSRV9OT05FOgor CWNhc2UgSU5URUxfVUNfRklSTVdBUkVfTk9ORToKIAkJcmV0dXJuICJOT05FIjsKLQljYXNlIEdV Q19GSVJNV0FSRV9QRU5ESU5HOgorCWNhc2UgSU5URUxfVUNfRklSTVdBUkVfUEVORElORzoKIAkJ cmV0dXJuICJQRU5ESU5HIjsKLQljYXNlIEdVQ19GSVJNV0FSRV9TVUNDRVNTOgorCWNhc2UgSU5U RUxfVUNfRklSTVdBUkVfU1VDQ0VTUzoKIAkJcmV0dXJuICJTVUNDRVNTIjsKIAlkZWZhdWx0Ogog CQlyZXR1cm4gIlVOS05PV04hIjsKQEAgLTI3OCw3ICsyNzgsNyBAQCBzdGF0aWMgaW5saW5lIGJv b2wgZ3VjX3Vjb2RlX3Jlc3BvbnNlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwK IHN0YXRpYyBpbnQgZ3VjX3Vjb2RlX3hmZXJfZG1hKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwKIAkJCSAgICAgIHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQogewotCXN0cnVjdCBpbnRl bF9ndWNfZncgKmd1Y19mdyA9ICZkZXZfcHJpdi0+Z3VjLmd1Y19mdzsKKwlzdHJ1Y3QgaW50ZWxf dWNfZncgKmd1Y19mdyA9ICZkZXZfcHJpdi0+Z3VjLmZ3OwogCXVuc2lnbmVkIGxvbmcgb2Zmc2V0 OwogCXN0cnVjdCBzZ190YWJsZSAqc2cgPSB2bWEtPnBhZ2VzOwogCXUzMiBzdGF0dXMsIHJzYVtV T1NfUlNBX1NDUkFUQ0hfTUFYX0NPVU5UXTsKQEAgLTM1MCwxNyArMzUwLDE3IEBAIHN0YXRpYyB1 MzIgZ3VjX3dvcGNtX3NpemUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogICov CiBzdGF0aWMgaW50IGd1Y191Y29kZV94ZmVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKIHsKLQlzdHJ1Y3QgaW50ZWxfZ3VjX2Z3ICpndWNfZncgPSAmZGV2X3ByaXYtPmd1Yy5n dWNfZnc7CisJc3RydWN0IGludGVsX3VjX2Z3ICpndWNfZncgPSAmZGV2X3ByaXYtPmd1Yy5mdzsK IAlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKIAlpbnQgcmV0OwogCi0JcmV0ID0gaTkxNV9nZW1fb2Jq ZWN0X3NldF90b19ndHRfZG9tYWluKGd1Y19mdy0+Z3VjX2Z3X29iaiwgZmFsc2UpOworCXJldCA9 IGk5MTVfZ2VtX29iamVjdF9zZXRfdG9fZ3R0X2RvbWFpbihndWNfZnctPm9iaiwgZmFsc2UpOwog CWlmIChyZXQpIHsKIAkJRFJNX0RFQlVHX0RSSVZFUigic2V0LWRvbWFpbiBmYWlsZWQgJWRcbiIs IHJldCk7CiAJCXJldHVybiByZXQ7CiAJfQogCi0Jdm1hID0gaTkxNV9nZW1fb2JqZWN0X2dndHRf cGluKGd1Y19mdy0+Z3VjX2Z3X29iaiwgTlVMTCwgMCwgMCwKKwl2bWEgPSBpOTE1X2dlbV9vYmpl Y3RfZ2d0dF9waW4oZ3VjX2Z3LT5vYmosIE5VTEwsIDAsIDAsCiAJCQkJICAgICAgIFBJTl9PRkZT RVRfQklBUyB8IEdVQ19XT1BDTV9UT1ApOwogCWlmIChJU19FUlIodm1hKSkgewogCQlEUk1fREVC VUdfRFJJVkVSKCJwaW4gZmFpbGVkICVkXG4iLCAoaW50KVBUUl9FUlIodm1hKSk7CkBAIC00NDgs MTQgKzQ0OCwxNCBAQCBzdGF0aWMgaW50IGd1Y19od19yZXNldChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCiAgKi8KIGludCBpbnRlbF9ndWNfc2V0dXAoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KQogewotCXN0cnVjdCBpbnRlbF9ndWNfZncgKmd1Y19mdyA9ICZk ZXZfcHJpdi0+Z3VjLmd1Y19mdzsKLQljb25zdCBjaGFyICpmd19wYXRoID0gZ3VjX2Z3LT5ndWNf ZndfcGF0aDsKKwlzdHJ1Y3QgaW50ZWxfdWNfZncgKmd1Y19mdyA9ICZkZXZfcHJpdi0+Z3VjLmZ3 OworCWNvbnN0IGNoYXIgKmZ3X3BhdGggPSBndWNfZnctPnBhdGg7CiAJaW50IHJldHJpZXMsIHJl dCwgZXJyOwogCiAJRFJNX0RFQlVHX0RSSVZFUigiR3VDIGZ3IHN0YXR1czogcGF0aCAlcywgZmV0 Y2ggJXMsIGxvYWQgJXNcbiIsCiAJCWZ3X3BhdGgsCi0JCWludGVsX2d1Y19md19zdGF0dXNfcmVw cihndWNfZnctPmd1Y19md19mZXRjaF9zdGF0dXMpLAotCQlpbnRlbF9ndWNfZndfc3RhdHVzX3Jl cHIoZ3VjX2Z3LT5ndWNfZndfbG9hZF9zdGF0dXMpKTsKKwkJaW50ZWxfdWNfZndfc3RhdHVzX3Jl cHIoZ3VjX2Z3LT5mZXRjaF9zdGF0dXMpLAorCQlpbnRlbF91Y19md19zdGF0dXNfcmVwcihndWNf ZnctPmxvYWRfc3RhdHVzKSk7CiAKIAkvKiBMb2FkaW5nIGZvcmJpZGRlbiwgb3Igbm8gZmlybXdh cmUgdG8gbG9hZD8gKi8KIAlpZiAoIWk5MTUuZW5hYmxlX2d1Y19sb2FkaW5nKSB7CkBAIC00NzMs MTAgKzQ3MywxMCBAQCBpbnQgaW50ZWxfZ3VjX3NldHVwKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKIAl9CiAKIAkvKiBGZXRjaCBmYWlsZWQsIG9yIGFscmVhZHkgZmV0Y2hlZCBi dXQgZmFpbGVkIHRvIGxvYWQ/ICovCi0JaWYgKGd1Y19mdy0+Z3VjX2Z3X2ZldGNoX3N0YXR1cyAh PSBHVUNfRklSTVdBUkVfU1VDQ0VTUykgeworCWlmIChndWNfZnctPmZldGNoX3N0YXR1cyAhPSBJ TlRFTF9VQ19GSVJNV0FSRV9TVUNDRVNTKSB7CiAJCWVyciA9IC1FSU87CiAJCWdvdG8gZmFpbDsK LQl9IGVsc2UgaWYgKGd1Y19mdy0+Z3VjX2Z3X2xvYWRfc3RhdHVzID09IEdVQ19GSVJNV0FSRV9G QUlMKSB7CisJfSBlbHNlIGlmIChndWNfZnctPmxvYWRfc3RhdHVzID09IElOVEVMX1VDX0ZJUk1X QVJFX0ZBSUwpIHsKIAkJZXJyID0gLUVOT0VYRUM7CiAJCWdvdG8gZmFpbDsKIAl9CkBAIC00ODcs MTEgKzQ4NywxMSBAQCBpbnQgaW50ZWxfZ3VjX3NldHVwKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKIAkvKiBXZSBuZWVkIHRvIG5vdGlmeSB0aGUgZ3VjIHdoZW5ldmVyIHdlIGNo YW5nZSB0aGUgR0dUVCAqLwogCWk5MTVfZ2d0dF9lbmFibGVfZ3VjKGRldl9wcml2KTsKIAotCWd1 Y19mdy0+Z3VjX2Z3X2xvYWRfc3RhdHVzID0gR1VDX0ZJUk1XQVJFX1BFTkRJTkc7CisJZ3VjX2Z3 LT5sb2FkX3N0YXR1cyA9IElOVEVMX1VDX0ZJUk1XQVJFX1BFTkRJTkc7CiAKIAlEUk1fREVCVUdf RFJJVkVSKCJHdUMgZncgc3RhdHVzOiBmZXRjaCAlcywgbG9hZCAlc1xuIiwKLQkJaW50ZWxfZ3Vj X2Z3X3N0YXR1c19yZXByKGd1Y19mdy0+Z3VjX2Z3X2ZldGNoX3N0YXR1cyksCi0JCWludGVsX2d1 Y19md19zdGF0dXNfcmVwcihndWNfZnctPmd1Y19md19sb2FkX3N0YXR1cykpOworCQlpbnRlbF91 Y19md19zdGF0dXNfcmVwcihndWNfZnctPmZldGNoX3N0YXR1cyksCisJCWludGVsX3VjX2Z3X3N0 YXR1c19yZXByKGd1Y19mdy0+bG9hZF9zdGF0dXMpKTsKIAogCWVyciA9IGk5MTVfZ3VjX3N1Ym1p c3Npb25faW5pdChkZXZfcHJpdik7CiAJaWYgKGVycikKQEAgLTUyMywxMSArNTIzLDExIEBAIGlu dCBpbnRlbF9ndWNfc2V0dXAoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCQkJ ICJyZXRyeSAlZCBtb3JlIHRpbWUocylcbiIsIGVyciwgcmV0cmllcyk7CiAJfQogCi0JZ3VjX2Z3 LT5ndWNfZndfbG9hZF9zdGF0dXMgPSBHVUNfRklSTVdBUkVfU1VDQ0VTUzsKKwlndWNfZnctPmxv YWRfc3RhdHVzID0gSU5URUxfVUNfRklSTVdBUkVfU1VDQ0VTUzsKIAogCURSTV9ERUJVR19EUklW RVIoIkd1QyBmdyBzdGF0dXM6IGZldGNoICVzLCBsb2FkICVzXG4iLAotCQlpbnRlbF9ndWNfZndf c3RhdHVzX3JlcHIoZ3VjX2Z3LT5ndWNfZndfZmV0Y2hfc3RhdHVzKSwKLQkJaW50ZWxfZ3VjX2Z3 X3N0YXR1c19yZXByKGd1Y19mdy0+Z3VjX2Z3X2xvYWRfc3RhdHVzKSk7CisJCWludGVsX3VjX2Z3 X3N0YXR1c19yZXByKGd1Y19mdy0+ZmV0Y2hfc3RhdHVzKSwKKwkJaW50ZWxfdWNfZndfc3RhdHVz X3JlcHIoZ3VjX2Z3LT5sb2FkX3N0YXR1cykpOwogCiAJaWYgKGk5MTUuZW5hYmxlX2d1Y19zdWJt aXNzaW9uKSB7CiAJCWlmIChpOTE1Lmd1Y19sb2dfbGV2ZWwgPj0gMCkKQEAgLTU0Miw4ICs1NDIs OCBAQCBpbnQgaW50ZWxfZ3VjX3NldHVwKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKIAlyZXR1cm4gMDsKIAogZmFpbDoKLQlpZiAoZ3VjX2Z3LT5ndWNfZndfbG9hZF9zdGF0dXMg PT0gR1VDX0ZJUk1XQVJFX1BFTkRJTkcpCi0JCWd1Y19mdy0+Z3VjX2Z3X2xvYWRfc3RhdHVzID0g R1VDX0ZJUk1XQVJFX0ZBSUw7CisJaWYgKGd1Y19mdy0+bG9hZF9zdGF0dXMgPT0gSU5URUxfVUNf RklSTVdBUkVfUEVORElORykKKwkJZ3VjX2Z3LT5sb2FkX3N0YXR1cyA9IElOVEVMX1VDX0ZJUk1X QVJFX0ZBSUw7CiAKIAlndWNfaW50ZXJydXB0c19yZWxlYXNlKGRldl9wcml2KTsKIAlpOTE1X2d1 Y19zdWJtaXNzaW9uX2Rpc2FibGUoZGV2X3ByaXYpOwpAQCAtNTg5LDggKzU4OSw4IEBAIGludCBp bnRlbF9ndWNfc2V0dXAoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCXJldHVy biByZXQ7CiB9CiAKLXN0YXRpYyB2b2lkIGd1Y19md19mZXRjaChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCi0JCQkgc3RydWN0IGludGVsX2d1Y19mdyAqZ3VjX2Z3KQordm9pZCBp bnRlbF91Y19md19mZXRjaChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkg c3RydWN0IGludGVsX3VjX2Z3ICp1Y19mdykKIHsKIAlzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IGRl dl9wcml2LT5kcm0ucGRldjsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOwpAQCAt NTk5LDE3ICs1OTksMTcgQEAgc3RhdGljIHZvaWQgZ3VjX2Z3X2ZldGNoKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwKIAlzaXplX3Qgc2l6ZTsKIAlpbnQgZXJyOwogCi0JRFJNX0RF QlVHX0RSSVZFUigiYmVmb3JlIHJlcXVlc3RpbmcgZmlybXdhcmU6IEd1QyBmdyBmZXRjaCBzdGF0 dXMgJXNcbiIsCi0JCWludGVsX2d1Y19md19zdGF0dXNfcmVwcihndWNfZnctPmd1Y19md19mZXRj aF9zdGF0dXMpKTsKKwlEUk1fREVCVUdfRFJJVkVSKCJiZWZvcmUgcmVxdWVzdGluZyBmaXJtd2Fy ZTogdUMgZncgZmV0Y2ggc3RhdHVzICVzXG4iLAorCQlpbnRlbF91Y19md19zdGF0dXNfcmVwcih1 Y19mdy0+ZmV0Y2hfc3RhdHVzKSk7CiAKLQllcnIgPSByZXF1ZXN0X2Zpcm13YXJlKCZmdywgZ3Vj X2Z3LT5ndWNfZndfcGF0aCwgJnBkZXYtPmRldik7CisJZXJyID0gcmVxdWVzdF9maXJtd2FyZSgm ZncsIHVjX2Z3LT5wYXRoLCAmcGRldi0+ZGV2KTsKIAlpZiAoZXJyKQogCQlnb3RvIGZhaWw7CiAJ aWYgKCFmdykKIAkJZ290byBmYWlsOwogCi0JRFJNX0RFQlVHX0RSSVZFUigiZmV0Y2ggR3VDIGZ3 IGZyb20gJXMgc3VjY2VlZGVkLCBmdyAlcFxuIiwKLQkJZ3VjX2Z3LT5ndWNfZndfcGF0aCwgZncp OworCURSTV9ERUJVR19EUklWRVIoImZldGNoIHVDIGZ3IGZyb20gJXMgc3VjY2VlZGVkLCBmdyAl cFxuIiwKKwkJdWNfZnctPnBhdGgsIGZ3KTsKIAogCS8qIENoZWNrIHRoZSBzaXplIG9mIHRoZSBi bG9iIGJlZm9yZSBleGFtaW5pbmcgYnVmZmVyIGNvbnRlbnRzICovCiAJaWYgKGZ3LT5zaXplIDwg c2l6ZW9mKHN0cnVjdCBndWNfY3NzX2hlYWRlcikpIHsKQEAgLTYyMCwzNiArNjIwLDM2IEBAIHN0 YXRpYyB2b2lkIGd1Y19md19mZXRjaChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs CiAJY3NzID0gKHN0cnVjdCBndWNfY3NzX2hlYWRlciAqKWZ3LT5kYXRhOwogCiAJLyogRmlybXdh cmUgYml0cyBhbHdheXMgc3RhcnQgZnJvbSBoZWFkZXIgKi8KLQlndWNfZnctPmhlYWRlcl9vZmZz ZXQgPSAwOwotCWd1Y19mdy0+aGVhZGVyX3NpemUgPSAoY3NzLT5oZWFkZXJfc2l6ZV9kdyAtIGNz cy0+bW9kdWx1c19zaXplX2R3IC0KKwl1Y19mdy0+aGVhZGVyX29mZnNldCA9IDA7CisJdWNfZnct PmhlYWRlcl9zaXplID0gKGNzcy0+aGVhZGVyX3NpemVfZHcgLSBjc3MtPm1vZHVsdXNfc2l6ZV9k dyAtCiAJCWNzcy0+a2V5X3NpemVfZHcgLSBjc3MtPmV4cG9uZW50X3NpemVfZHcpICogc2l6ZW9m KHUzMik7CiAKLQlpZiAoZ3VjX2Z3LT5oZWFkZXJfc2l6ZSAhPSBzaXplb2Yoc3RydWN0IGd1Y19j c3NfaGVhZGVyKSkgeworCWlmICh1Y19mdy0+aGVhZGVyX3NpemUgIT0gc2l6ZW9mKHN0cnVjdCBn dWNfY3NzX2hlYWRlcikpIHsKIAkJRFJNX05PVEUoIkNTUyBoZWFkZXIgZGVmaW5pdGlvbiBtaXNt YXRjaFxuIik7CiAJCWdvdG8gZmFpbDsKIAl9CiAKIAkvKiB0aGVuLCB1Q29kZSAqLwotCWd1Y19m dy0+dWNvZGVfb2Zmc2V0ID0gZ3VjX2Z3LT5oZWFkZXJfb2Zmc2V0ICsgZ3VjX2Z3LT5oZWFkZXJf c2l6ZTsKLQlndWNfZnctPnVjb2RlX3NpemUgPSAoY3NzLT5zaXplX2R3IC0gY3NzLT5oZWFkZXJf c2l6ZV9kdykgKiBzaXplb2YodTMyKTsKKwl1Y19mdy0+dWNvZGVfb2Zmc2V0ID0gdWNfZnctPmhl YWRlcl9vZmZzZXQgKyB1Y19mdy0+aGVhZGVyX3NpemU7CisJdWNfZnctPnVjb2RlX3NpemUgPSAo Y3NzLT5zaXplX2R3IC0gY3NzLT5oZWFkZXJfc2l6ZV9kdykgKiBzaXplb2YodTMyKTsKIAogCS8q IG5vdyBSU0EgKi8KIAlpZiAoY3NzLT5rZXlfc2l6ZV9kdyAhPSBVT1NfUlNBX1NDUkFUQ0hfTUFY X0NPVU5UKSB7CiAJCURSTV9OT1RFKCJSU0Ega2V5IHNpemUgaXMgYmFkXG4iKTsKIAkJZ290byBm YWlsOwogCX0KLQlndWNfZnctPnJzYV9vZmZzZXQgPSBndWNfZnctPnVjb2RlX29mZnNldCArIGd1 Y19mdy0+dWNvZGVfc2l6ZTsKLQlndWNfZnctPnJzYV9zaXplID0gY3NzLT5rZXlfc2l6ZV9kdyAq IHNpemVvZih1MzIpOworCXVjX2Z3LT5yc2Ffb2Zmc2V0ID0gdWNfZnctPnVjb2RlX29mZnNldCAr IHVjX2Z3LT51Y29kZV9zaXplOworCXVjX2Z3LT5yc2Ffc2l6ZSA9IGNzcy0+a2V5X3NpemVfZHcg KiBzaXplb2YodTMyKTsKIAogCS8qIEF0IGxlYXN0LCBpdCBzaG91bGQgaGF2ZSBoZWFkZXIsIHVD b2RlIGFuZCBSU0EuIFNpemUgb2YgYWxsIHRocmVlLiAqLwotCXNpemUgPSBndWNfZnctPmhlYWRl cl9zaXplICsgZ3VjX2Z3LT51Y29kZV9zaXplICsgZ3VjX2Z3LT5yc2Ffc2l6ZTsKKwlzaXplID0g dWNfZnctPmhlYWRlcl9zaXplICsgdWNfZnctPnVjb2RlX3NpemUgKyB1Y19mdy0+cnNhX3NpemU7 CiAJaWYgKGZ3LT5zaXplIDwgc2l6ZSkgewogCQlEUk1fTk9URSgiTWlzc2luZyBmaXJtd2FyZSBj b21wb25lbnRzXG4iKTsKIAkJZ290byBmYWlsOwogCX0KIAogCS8qIEhlYWRlciBhbmQgdUNvZGUg d2lsbCBiZSBsb2FkZWQgdG8gV09QQ00uIFNpemUgb2YgdGhlIHR3by4gKi8KLQlzaXplID0gZ3Vj X2Z3LT5oZWFkZXJfc2l6ZSArIGd1Y19mdy0+dWNvZGVfc2l6ZTsKKwlzaXplID0gdWNfZnctPmhl YWRlcl9zaXplICsgdWNfZnctPnVjb2RlX3NpemU7CiAJaWYgKHNpemUgPiBndWNfd29wY21fc2l6 ZShkZXZfcHJpdikpIHsKIAkJRFJNX05PVEUoIkZpcm13YXJlIGlzIHRvbyBsYXJnZSB0byBmaXQg aW4gV09QQ01cbiIpOwogCQlnb3RvIGZhaWw7CkBAIC02NjEsMjEgKzY2MSwyMSBAQCBzdGF0aWMg dm9pZCBndWNfZndfZmV0Y2goc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCSAq IFRXTyBieXRlcyBlYWNoIChpLmUuIHUxNiksIGFsdGhvdWdoIGFsbCBwb2ludGVycyBhbmQgb2Zm c2V0cyBhcmUgZGVmaW5lZAogCSAqIGluIHRlcm1zIG9mIGJ5dGVzICh1OCkuCiAJICovCi0JZ3Vj X2Z3LT5ndWNfZndfbWFqb3JfZm91bmQgPSBjc3MtPmd1Y19zd192ZXJzaW9uID4+IDE2OwotCWd1 Y19mdy0+Z3VjX2Z3X21pbm9yX2ZvdW5kID0gY3NzLT5ndWNfc3dfdmVyc2lvbiAmIDB4RkZGRjsK LQotCWlmIChndWNfZnctPmd1Y19md19tYWpvcl9mb3VuZCAhPSBndWNfZnctPmd1Y19md19tYWpv cl93YW50ZWQgfHwKLQkgICAgZ3VjX2Z3LT5ndWNfZndfbWlub3JfZm91bmQgPCBndWNfZnctPmd1 Y19md19taW5vcl93YW50ZWQpIHsKLQkJRFJNX05PVEUoIkd1QyBmaXJtd2FyZSB2ZXJzaW9uICVk LiVkLCByZXF1aXJlZCAlZC4lZFxuIiwKLQkJCWd1Y19mdy0+Z3VjX2Z3X21ham9yX2ZvdW5kLCBn dWNfZnctPmd1Y19md19taW5vcl9mb3VuZCwKLQkJCWd1Y19mdy0+Z3VjX2Z3X21ham9yX3dhbnRl ZCwgZ3VjX2Z3LT5ndWNfZndfbWlub3Jfd2FudGVkKTsKKwl1Y19mdy0+bWFqb3JfdmVyX2ZvdW5k ID0gY3NzLT5ndWNfc3dfdmVyc2lvbiA+PiAxNjsKKwl1Y19mdy0+bWlub3JfdmVyX2ZvdW5kID0g Y3NzLT5ndWNfc3dfdmVyc2lvbiAmIDB4RkZGRjsKKworCWlmICh1Y19mdy0+bWFqb3JfdmVyX2Zv dW5kICE9IHVjX2Z3LT5tYWpvcl92ZXJfd2FudGVkIHx8CisJICAgIHVjX2Z3LT5taW5vcl92ZXJf Zm91bmQgPCB1Y19mdy0+bWlub3JfdmVyX3dhbnRlZCkgeworCQlEUk1fTk9URSgidUMgZmlybXdh cmUgdmVyc2lvbiAlZC4lZCwgcmVxdWlyZWQgJWQuJWRcbiIsCisJCQl1Y19mdy0+bWFqb3JfdmVy X2ZvdW5kLCB1Y19mdy0+bWlub3JfdmVyX2ZvdW5kLAorCQkJdWNfZnctPm1ham9yX3Zlcl93YW50 ZWQsIHVjX2Z3LT5taW5vcl92ZXJfd2FudGVkKTsKIAkJZXJyID0gLUVOT0VYRUM7CiAJCWdvdG8g ZmFpbDsKIAl9CiAKIAlEUk1fREVCVUdfRFJJVkVSKCJmaXJtd2FyZSB2ZXJzaW9uICVkLiVkIE9L IChtaW5pbXVtICVkLiVkKVxuIiwKLQkJCWd1Y19mdy0+Z3VjX2Z3X21ham9yX2ZvdW5kLCBndWNf ZnctPmd1Y19md19taW5vcl9mb3VuZCwKLQkJCWd1Y19mdy0+Z3VjX2Z3X21ham9yX3dhbnRlZCwg Z3VjX2Z3LT5ndWNfZndfbWlub3Jfd2FudGVkKTsKKwkJCXVjX2Z3LT5tYWpvcl92ZXJfZm91bmQs IHVjX2Z3LT5taW5vcl92ZXJfZm91bmQsCisJCQl1Y19mdy0+bWFqb3JfdmVyX3dhbnRlZCwgdWNf ZnctPm1pbm9yX3Zlcl93YW50ZWQpOwogCiAJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPmRybS5zdHJ1 Y3RfbXV0ZXgpOwogCW9iaiA9IGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfZnJvbV9kYXRhKGRldl9w cml2LCBmdy0+ZGF0YSwgZnctPnNpemUpOwpAQCAtNjg1LDMxICs2ODUsMzEgQEAgc3RhdGljIHZv aWQgZ3VjX2Z3X2ZldGNoKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJZ290 byBmYWlsOwogCX0KIAotCWd1Y19mdy0+Z3VjX2Z3X29iaiA9IG9iajsKLQlndWNfZnctPmd1Y19m d19zaXplID0gZnctPnNpemU7CisJdWNfZnctPm9iaiA9IG9iajsKKwl1Y19mdy0+c2l6ZSA9IGZ3 LT5zaXplOwogCi0JRFJNX0RFQlVHX0RSSVZFUigiR3VDIGZ3IGZldGNoIHN0YXR1cyBTVUNDRVNT LCBvYmogJXBcbiIsCi0JCQlndWNfZnctPmd1Y19md19vYmopOworCURSTV9ERUJVR19EUklWRVIo InVDIGZ3IGZldGNoIHN0YXR1cyBTVUNDRVNTLCBvYmogJXBcbiIsCisJCQl1Y19mdy0+b2JqKTsK IAogCXJlbGVhc2VfZmlybXdhcmUoZncpOwotCWd1Y19mdy0+Z3VjX2Z3X2ZldGNoX3N0YXR1cyA9 IEdVQ19GSVJNV0FSRV9TVUNDRVNTOworCXVjX2Z3LT5mZXRjaF9zdGF0dXMgPSBJTlRFTF9VQ19G SVJNV0FSRV9TVUNDRVNTOwogCXJldHVybjsKIAogZmFpbDoKLQlEUk1fV0FSTigiRmFpbGVkIHRv IGZldGNoIHZhbGlkIEd1QyBmaXJtd2FyZSBmcm9tICVzIChlcnJvciAlZClcbiIsCi0JCSBndWNf ZnctPmd1Y19md19wYXRoLCBlcnIpOwotCURSTV9ERUJVR19EUklWRVIoIkd1QyBmdyBmZXRjaCBz dGF0dXMgRkFJTDsgZXJyICVkLCBmdyAlcCwgb2JqICVwXG4iLAotCQllcnIsIGZ3LCBndWNfZnct Pmd1Y19md19vYmopOworCURSTV9XQVJOKCJGYWlsZWQgdG8gZmV0Y2ggdmFsaWQgdUMgZmlybXdh cmUgZnJvbSAlcyAoZXJyb3IgJWQpXG4iLAorCQkgdWNfZnctPnBhdGgsIGVycik7CisJRFJNX0RF QlVHX0RSSVZFUigidUMgZncgZmV0Y2ggc3RhdHVzIEZBSUw7IGVyciAlZCwgZncgJXAsIG9iaiAl cFxuIiwKKwkJZXJyLCBmdywgdWNfZnctPm9iaik7CiAKIAltdXRleF9sb2NrKCZkZXZfcHJpdi0+ ZHJtLnN0cnVjdF9tdXRleCk7Ci0Jb2JqID0gZ3VjX2Z3LT5ndWNfZndfb2JqOworCW9iaiA9IHVj X2Z3LT5vYmo7CiAJaWYgKG9iaikKIAkJaTkxNV9nZW1fb2JqZWN0X3B1dChvYmopOwotCWd1Y19m dy0+Z3VjX2Z3X29iaiA9IE5VTEw7CisJdWNfZnctPm9iaiA9IE5VTEw7CiAJbXV0ZXhfdW5sb2Nr KCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleCk7CiAKIAlyZWxlYXNlX2Zpcm13YXJlKGZ3KTsJ CS8qIE9LIGV2ZW4gaWYgZncgaXMgTlVMTCAqLwotCWd1Y19mdy0+Z3VjX2Z3X2ZldGNoX3N0YXR1 cyA9IEdVQ19GSVJNV0FSRV9GQUlMOworCXVjX2Z3LT5mZXRjaF9zdGF0dXMgPSBJTlRFTF9VQ19G SVJNV0FSRV9GQUlMOwogfQogCiAvKioKQEAgLTcyMyw3ICs3MjMsNyBAQCBzdGF0aWMgdm9pZCBn dWNfZndfZmV0Y2goc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogICovCiB2b2lk IGludGVsX2d1Y19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKLQlz dHJ1Y3QgaW50ZWxfZ3VjX2Z3ICpndWNfZncgPSAmZGV2X3ByaXYtPmd1Yy5ndWNfZnc7CisJc3Ry dWN0IGludGVsX3VjX2Z3ICpndWNfZncgPSAmZGV2X3ByaXYtPmd1Yy5mdzsKIAljb25zdCBjaGFy ICpmd19wYXRoOwogCiAJaWYgKCFIQVNfR1VDKGRldl9wcml2KSkgewpAQCAtNzQxLDIzICs3NDEs MjMgQEAgdm9pZCBpbnRlbF9ndWNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCiAJCWZ3X3BhdGggPSBOVUxMOwogCX0gZWxzZSBpZiAoSVNfU0tZTEFLRShkZXZfcHJpdikp IHsKIAkJZndfcGF0aCA9IEk5MTVfU0tMX0dVQ19VQ09ERTsKLQkJZ3VjX2Z3LT5ndWNfZndfbWFq b3Jfd2FudGVkID0gU0tMX0ZXX01BSk9SOwotCQlndWNfZnctPmd1Y19md19taW5vcl93YW50ZWQg PSBTS0xfRldfTUlOT1I7CisJCWd1Y19mdy0+bWFqb3JfdmVyX3dhbnRlZCA9IFNLTF9GV19NQUpP UjsKKwkJZ3VjX2Z3LT5taW5vcl92ZXJfd2FudGVkID0gU0tMX0ZXX01JTk9SOwogCX0gZWxzZSBp ZiAoSVNfQlJPWFRPTihkZXZfcHJpdikpIHsKIAkJZndfcGF0aCA9IEk5MTVfQlhUX0dVQ19VQ09E RTsKLQkJZ3VjX2Z3LT5ndWNfZndfbWFqb3Jfd2FudGVkID0gQlhUX0ZXX01BSk9SOwotCQlndWNf ZnctPmd1Y19md19taW5vcl93YW50ZWQgPSBCWFRfRldfTUlOT1I7CisJCWd1Y19mdy0+bWFqb3Jf dmVyX3dhbnRlZCA9IEJYVF9GV19NQUpPUjsKKwkJZ3VjX2Z3LT5taW5vcl92ZXJfd2FudGVkID0g QlhUX0ZXX01JTk9SOwogCX0gZWxzZSBpZiAoSVNfS0FCWUxBS0UoZGV2X3ByaXYpKSB7CiAJCWZ3 X3BhdGggPSBJOTE1X0tCTF9HVUNfVUNPREU7Ci0JCWd1Y19mdy0+Z3VjX2Z3X21ham9yX3dhbnRl ZCA9IEtCTF9GV19NQUpPUjsKLQkJZ3VjX2Z3LT5ndWNfZndfbWlub3Jfd2FudGVkID0gS0JMX0ZX X01JTk9SOworCQlndWNfZnctPm1ham9yX3Zlcl93YW50ZWQgPSBLQkxfRldfTUFKT1I7CisJCWd1 Y19mdy0+bWlub3JfdmVyX3dhbnRlZCA9IEtCTF9GV19NSU5PUjsKIAl9IGVsc2UgewogCQlmd19w YXRoID0gIiI7CS8qIHVua25vd24gZGV2aWNlICovCiAJfQogCi0JZ3VjX2Z3LT5ndWNfZndfcGF0 aCA9IGZ3X3BhdGg7Ci0JZ3VjX2Z3LT5ndWNfZndfZmV0Y2hfc3RhdHVzID0gR1VDX0ZJUk1XQVJF X05PTkU7Ci0JZ3VjX2Z3LT5ndWNfZndfbG9hZF9zdGF0dXMgPSBHVUNfRklSTVdBUkVfTk9ORTsK KwlndWNfZnctPnBhdGggPSBmd19wYXRoOworCWd1Y19mdy0+ZmV0Y2hfc3RhdHVzID0gSU5URUxf VUNfRklSTVdBUkVfTk9ORTsKKwlndWNfZnctPmxvYWRfc3RhdHVzID0gSU5URUxfVUNfRklSTVdB UkVfTk9ORTsKIAogCS8qIEVhcmx5IChhbmQgc2lsZW50KSByZXR1cm4gaWYgR3VDIGxvYWRpbmcg aXMgZGlzYWJsZWQgKi8KIAlpZiAoIWk5MTUuZW5hYmxlX2d1Y19sb2FkaW5nKQpAQCAtNzY3LDkg Kzc2Nyw5IEBAIHZvaWQgaW50ZWxfZ3VjX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KQogCWlmICgqZndfcGF0aCA9PSAnXDAnKQogCQlyZXR1cm47CiAKLQlndWNfZnctPmd1 Y19md19mZXRjaF9zdGF0dXMgPSBHVUNfRklSTVdBUkVfUEVORElORzsKKwlndWNfZnctPmZldGNo X3N0YXR1cyA9IElOVEVMX1VDX0ZJUk1XQVJFX1BFTkRJTkc7CiAJRFJNX0RFQlVHX0RSSVZFUigi R3VDIGZpcm13YXJlIHBlbmRpbmcsIHBhdGggJXNcbiIsIGZ3X3BhdGgpOwotCWd1Y19md19mZXRj aChkZXZfcHJpdiwgZ3VjX2Z3KTsKKwlpbnRlbF91Y19md19mZXRjaChkZXZfcHJpdiwgZ3VjX2Z3 KTsKIAkvKiBzdGF0dXMgbXVzdCBub3cgYmUgRkFJTCBvciBTVUNDRVNTICovCiB9CiAKQEAgLTc3 OSwxNyArNzc5LDE3IEBAIHZvaWQgaW50ZWxfZ3VjX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KQogICovCiB2b2lkIGludGVsX2d1Y19maW5pKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdikKIHsKLQlzdHJ1Y3QgaW50ZWxfZ3VjX2Z3ICpndWNfZncgPSAmZGV2 X3ByaXYtPmd1Yy5ndWNfZnc7CisJc3RydWN0IGludGVsX3VjX2Z3ICpndWNfZncgPSAmZGV2X3By aXYtPmd1Yy5mdzsKIAogCW11dGV4X2xvY2soJmRldl9wcml2LT5kcm0uc3RydWN0X211dGV4KTsK IAlndWNfaW50ZXJydXB0c19yZWxlYXNlKGRldl9wcml2KTsKIAlpOTE1X2d1Y19zdWJtaXNzaW9u X2Rpc2FibGUoZGV2X3ByaXYpOwogCWk5MTVfZ3VjX3N1Ym1pc3Npb25fZmluaShkZXZfcHJpdik7 CiAKLQlpZiAoZ3VjX2Z3LT5ndWNfZndfb2JqKQotCQlpOTE1X2dlbV9vYmplY3RfcHV0KGd1Y19m dy0+Z3VjX2Z3X29iaik7Ci0JZ3VjX2Z3LT5ndWNfZndfb2JqID0gTlVMTDsKKwlpZiAoZ3VjX2Z3 LT5vYmopCisJCWk5MTVfZ2VtX29iamVjdF9wdXQoZ3VjX2Z3LT5vYmopOworCWd1Y19mdy0+b2Jq ID0gTlVMTDsKIAltdXRleF91bmxvY2soJmRldl9wcml2LT5kcm0uc3RydWN0X211dGV4KTsKIAot CWd1Y19mdy0+Z3VjX2Z3X2ZldGNoX3N0YXR1cyA9IEdVQ19GSVJNV0FSRV9OT05FOworCWd1Y19m dy0+ZmV0Y2hfc3RhdHVzID0gSU5URUxfVUNfRklSTVdBUkVfTk9ORTsKIH0KZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VjLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF91Yy5oCmluZGV4IDk0OTBhOGUuLjliYjhhMWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3VjLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdWMu aApAQCAtOTMsMjggKzkzLDI4IEBAIHN0cnVjdCBpOTE1X2d1Y19jbGllbnQgewogCXVpbnQ2NF90 IHN1Ym1pc3Npb25zW0k5MTVfTlVNX0VOR0lORVNdOwogfTsKIAotZW51bSBpbnRlbF9ndWNfZndf c3RhdHVzIHsKLQlHVUNfRklSTVdBUkVfRkFJTCA9IC0xLAotCUdVQ19GSVJNV0FSRV9OT05FID0g MCwKLQlHVUNfRklSTVdBUkVfUEVORElORywKLQlHVUNfRklSTVdBUkVfU1VDQ0VTUworZW51bSBp bnRlbF91Y19md19zdGF0dXMgeworCUlOVEVMX1VDX0ZJUk1XQVJFX0ZBSUwgPSAtMSwKKwlJTlRF TF9VQ19GSVJNV0FSRV9OT05FID0gMCwKKwlJTlRFTF9VQ19GSVJNV0FSRV9QRU5ESU5HLAorCUlO VEVMX1VDX0ZJUk1XQVJFX1NVQ0NFU1MKIH07CiAKIC8qCiAgKiBUaGlzIHN0cnVjdHVyZSBlbmNh cHN1bGF0ZXMgYWxsIHRoZSBkYXRhIG5lZWRlZCBkdXJpbmcgdGhlIHByb2Nlc3MKICAqIG9mIGZl dGNoaW5nLCBjYWNoaW5nLCBhbmQgbG9hZGluZyB0aGUgZmlybXdhcmUgaW1hZ2UgaW50byB0aGUg R3VDLgogICovCi1zdHJ1Y3QgaW50ZWxfZ3VjX2Z3IHsKLQljb25zdCBjaGFyICoJCQlndWNfZndf cGF0aDsKLQlzaXplX3QJCQkJZ3VjX2Z3X3NpemU7Ci0Jc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QgKglndWNfZndfb2JqOwotCWVudW0gaW50ZWxfZ3VjX2Z3X3N0YXR1cwlndWNfZndfZmV0Y2hf c3RhdHVzOwotCWVudW0gaW50ZWxfZ3VjX2Z3X3N0YXR1cwlndWNfZndfbG9hZF9zdGF0dXM7Ci0K LQl1aW50MTZfdAkJCWd1Y19md19tYWpvcl93YW50ZWQ7Ci0JdWludDE2X3QJCQlndWNfZndfbWlu b3Jfd2FudGVkOwotCXVpbnQxNl90CQkJZ3VjX2Z3X21ham9yX2ZvdW5kOwotCXVpbnQxNl90CQkJ Z3VjX2Z3X21pbm9yX2ZvdW5kOworc3RydWN0IGludGVsX3VjX2Z3IHsKKwljb25zdCBjaGFyICpw YXRoOworCXNpemVfdCBzaXplOworCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7CisJ ZW51bSBpbnRlbF91Y19md19zdGF0dXMgZmV0Y2hfc3RhdHVzOworCWVudW0gaW50ZWxfdWNfZndf c3RhdHVzIGxvYWRfc3RhdHVzOworCisJdWludDE2X3QgbWFqb3JfdmVyX3dhbnRlZDsKKwl1aW50 MTZfdCBtaW5vcl92ZXJfd2FudGVkOworCXVpbnQxNl90IG1ham9yX3Zlcl9mb3VuZDsKKwl1aW50 MTZfdCBtaW5vcl92ZXJfZm91bmQ7CiAKIAl1aW50MzJfdCBoZWFkZXJfc2l6ZTsKIAl1aW50MzJf dCBoZWFkZXJfb2Zmc2V0OwpAQCAtMTQxLDcgKzE0MSw3IEBAIHN0cnVjdCBpbnRlbF9ndWNfbG9n IHsKIH07CiAKIHN0cnVjdCBpbnRlbF9ndWMgewotCXN0cnVjdCBpbnRlbF9ndWNfZncgZ3VjX2Z3 OworCXN0cnVjdCBpbnRlbF91Y19mdyBmdzsKIAlzdHJ1Y3QgaW50ZWxfZ3VjX2xvZyBsb2c7CiAK IAkvKiBpbnRlbF9ndWNfcmVjdiBpbnRlcnJ1cHQgcmVsYXRlZCBzdGF0ZSAqLwpAQCAtMTgyLDkg KzE4MiwxMCBAQCBpbnQgaW50ZWxfZ3VjX2xvZ19jb250cm9sKHN0cnVjdCBpbnRlbF9ndWMgKmd1 YywgdTMyIGNvbnRyb2xfdmFsKTsKIGV4dGVybiB2b2lkIGludGVsX2d1Y19pbml0KHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CiBleHRlcm4gaW50IGludGVsX2d1Y19zZXR1cChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwogZXh0ZXJuIHZvaWQgaW50ZWxfZ3Vj X2Zpbmkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKLWV4dGVybiBjb25zdCBj aGFyICppbnRlbF9ndWNfZndfc3RhdHVzX3JlcHIoZW51bSBpbnRlbF9ndWNfZndfc3RhdHVzIHN0 YXR1cyk7CitleHRlcm4gY29uc3QgY2hhciAqaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIoZW51bSBp bnRlbF91Y19md19zdGF0dXMgc3RhdHVzKTsKIGV4dGVybiBpbnQgaW50ZWxfZ3VjX3N1c3BlbmQo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKIGV4dGVybiBpbnQgaW50ZWxfZ3Vj X3Jlc3VtZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwordTMyIGludGVsX2d1 Y193b3BjbV9zaXplKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CiAKIC8qIGk5 MTVfZ3VjX3N1Ym1pc3Npb24uYyAqLwogaW50IGk5MTVfZ3VjX3N1Ym1pc3Npb25faW5pdChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwotLSAKMi43LjQKCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QK SW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=