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 08:40:42 -0800 Message-ID: <1484325649-18720-2-git-send-email-anusha.srivatsa@intel.com> References: <1484325649-18720-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 mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id A69016EE10 for ; Fri, 13 Jan 2017 16:44:09 +0000 (UTC) In-Reply-To: <1484325649-18720-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 dWdmcy5jCmluZGV4IDlkN2I1YTguLjE5ZmUzOGUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZGVidWdmcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVi dWdmcy5jCkBAIC0yMzI4LDcgKzIzMjgsNyBAQCBzdGF0aWMgaW50IGk5MTVfbGxjKHN0cnVjdCBz ZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKIHN0YXRpYyBpbnQgaTkxNV9ndWNfbG9hZF9zdGF0dXNf aW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCiB7CiAJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gbm9kZV90b19pOTE1KG0tPnByaXZhdGUpOwotCXN0cnVjdCBp bnRlbF9ndWNfZncgKmd1Y19mdyA9ICZkZXZfcHJpdi0+Z3VjLmd1Y19mdzsKKwlzdHJ1Y3QgaW50 ZWxfdWNfZncgKmd1Y19mdyA9ICZkZXZfcHJpdi0+Z3VjLmZ3OwogCXUzMiB0bXAsIGk7CiAKIAlp ZiAoIUhBU19HVUNfVUNPREUoZGV2X3ByaXYpKQpAQCAtMjMzNiwxNSArMjMzNiwxNSBAQCBzdGF0 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 OTE1X2d1Y19zdWJtaXNzaW9uLmMKaW5kZXggNzEwZmJiOS4uZjBlYjYyZCAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYwpAQCAtMTQ4NCw3ICsxNDg0LDcgQEAg aW50IGludGVsX2d1Y19zdXNwZW5kKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikK IAlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4OwogCXUzMiBkYXRhWzNdOwogCi0JaWYgKGd1 Yy0+Z3VjX2Z3Lmd1Y19md19sb2FkX3N0YXR1cyAhPSBHVUNfRklSTVdBUkVfU1VDQ0VTUykKKwlp ZiAoZ3VjLT5mdy5sb2FkX3N0YXR1cyAhPSBJTlRFTF9VQ19GSVJNV0FSRV9TVUNDRVNTKQogCQly ZXR1cm4gMDsKIAogCWdlbjlfZGlzYWJsZV9ndWNfaW50ZXJydXB0cyhkZXZfcHJpdik7CkBAIC0x NTExLDcgKzE1MTEsNyBAQCBpbnQgaW50ZWxfZ3VjX3Jlc3VtZShzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCiAJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eDsKIAl1MzIgZGF0 YVszXTsKIAotCWlmIChndWMtPmd1Y19mdy5ndWNfZndfbG9hZF9zdGF0dXMgIT0gR1VDX0ZJUk1X QVJFX1NVQ0NFU1MpCisJaWYgKGd1Yy0+ZncubG9hZF9zdGF0dXMgIT0gSU5URUxfVUNfRklSTVdB UkVfU1VDQ0VTUykKIAkJcmV0dXJuIDA7CiAKIAlpZiAoaTkxNS5ndWNfbG9nX2xldmVsID49IDAp CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMKaW5kZXggNWE2YWI4Ny4uOTA3 MTU3NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5j 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 VUdfRFJJVkVSKCJwaW4gZmFpbGVkICVkXG4iLCAoaW50KVBUUl9FUlIodm1hKSk7CkBAIC00NTEs MTQgKzQ1MSwxNCBAQCBzdGF0aWMgaW50IGd1Y19od19yZXNldChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCiAgKi8KIGludCBpbnRlbF9ndWNfc2V0dXAoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KQogewotCXN0cnVjdCBpbnRlbF9ndWNfZncgKmd1Y19mdyA9ICZk ZXZfcHJpdi0+Z3VjLmd1Y19mdzsKLQljb25zdCBjaGFyICpmd19wYXRoID0gZ3VjX2Z3LT5ndWNf ZndfcGF0aDsKKwlzdHJ1Y3QgaW50ZWxfdWNfZncgKmd1Y19mdyA9ICZkZXZfcHJpdi0+Z3VjLmZ3 OworCWNvbnN0IGNoYXIgKmZ3X3BhdGggPSBndWNfZnctPnBhdGg7CiAJaW50IHJldHJpZXMsIHJl dCwgZXJyOwogCiAJRFJNX0RFQlVHX0RSSVZFUigiR3VDIGZ3IHN0YXR1czogcGF0aCAlcywgZmV0 Y2ggJXMsIGxvYWQgJXNcbiIsCiAJCWZ3X3BhdGgsCi0JCWludGVsX2d1Y19md19zdGF0dXNfcmVw cihndWNfZnctPmd1Y19md19mZXRjaF9zdGF0dXMpLAotCQlpbnRlbF9ndWNfZndfc3RhdHVzX3Jl cHIoZ3VjX2Z3LT5ndWNfZndfbG9hZF9zdGF0dXMpKTsKKwkJaW50ZWxfdWNfZndfc3RhdHVzX3Jl cHIoZ3VjX2Z3LT5mZXRjaF9zdGF0dXMpLAorCQlpbnRlbF91Y19md19zdGF0dXNfcmVwcihndWNf ZnctPmxvYWRfc3RhdHVzKSk7CiAKIAkvKiBMb2FkaW5nIGZvcmJpZGRlbiwgb3Igbm8gZmlybXdh cmUgdG8gbG9hZD8gKi8KIAlpZiAoIWk5MTUuZW5hYmxlX2d1Y19sb2FkaW5nKSB7CkBAIC00NzYs MTAgKzQ3NiwxMCBAQCBpbnQgaW50ZWxfZ3VjX3NldHVwKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKIAl9CiAKIAkvKiBGZXRjaCBmYWlsZWQsIG9yIGFscmVhZHkgZmV0Y2hlZCBi dXQgZmFpbGVkIHRvIGxvYWQ/ICovCi0JaWYgKGd1Y19mdy0+Z3VjX2Z3X2ZldGNoX3N0YXR1cyAh PSBHVUNfRklSTVdBUkVfU1VDQ0VTUykgeworCWlmIChndWNfZnctPmZldGNoX3N0YXR1cyAhPSBJ TlRFTF9VQ19GSVJNV0FSRV9TVUNDRVNTKSB7CiAJCWVyciA9IC1FSU87CiAJCWdvdG8gZmFpbDsK LQl9IGVsc2UgaWYgKGd1Y19mdy0+Z3VjX2Z3X2xvYWRfc3RhdHVzID09IEdVQ19GSVJNV0FSRV9G QUlMKSB7CisJfSBlbHNlIGlmIChndWNfZnctPmxvYWRfc3RhdHVzID09IElOVEVMX1VDX0ZJUk1X QVJFX0ZBSUwpIHsKIAkJZXJyID0gLUVOT0VYRUM7CiAJCWdvdG8gZmFpbDsKIAl9CkBAIC00ODcs MTEgKzQ4NywxMSBAQCBpbnQgaW50ZWxfZ3VjX3NldHVwKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKIAlndWNfaW50ZXJydXB0c19yZWxlYXNlKGRldl9wcml2KTsKIAlnZW45X3Jl c2V0X2d1Y19pbnRlcnJ1cHRzKGRldl9wcml2KTsKIAotCWd1Y19mdy0+Z3VjX2Z3X2xvYWRfc3Rh dHVzID0gR1VDX0ZJUk1XQVJFX1BFTkRJTkc7CisJZ3VjX2Z3LT5sb2FkX3N0YXR1cyA9IElOVEVM X1VDX0ZJUk1XQVJFX1BFTkRJTkc7CiAKIAlEUk1fREVCVUdfRFJJVkVSKCJHdUMgZncgc3RhdHVz OiBmZXRjaCAlcywgbG9hZCAlc1xuIiwKLQkJaW50ZWxfZ3VjX2Z3X3N0YXR1c19yZXByKGd1Y19m dy0+Z3VjX2Z3X2ZldGNoX3N0YXR1cyksCi0JCWludGVsX2d1Y19md19zdGF0dXNfcmVwcihndWNf ZnctPmd1Y19md19sb2FkX3N0YXR1cykpOworCQlpbnRlbF91Y19md19zdGF0dXNfcmVwcihndWNf ZnctPmZldGNoX3N0YXR1cyksCisJCWludGVsX3VjX2Z3X3N0YXR1c19yZXByKGd1Y19mdy0+bG9h ZF9zdGF0dXMpKTsKIAogCWVyciA9IGk5MTVfZ3VjX3N1Ym1pc3Npb25faW5pdChkZXZfcHJpdik7 CiAJaWYgKGVycikKQEAgLTUyMywxMSArNTIzLDExIEBAIGludCBpbnRlbF9ndWNfc2V0dXAoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCQkJICJyZXRyeSAlZCBtb3JlIHRpbWUo cylcbiIsIGVyciwgcmV0cmllcyk7CiAJfQogCi0JZ3VjX2Z3LT5ndWNfZndfbG9hZF9zdGF0dXMg PSBHVUNfRklSTVdBUkVfU1VDQ0VTUzsKKwlndWNfZnctPmxvYWRfc3RhdHVzID0gSU5URUxfVUNf RklSTVdBUkVfU1VDQ0VTUzsKIAogCURSTV9ERUJVR19EUklWRVIoIkd1QyBmdyBzdGF0dXM6IGZl dGNoICVzLCBsb2FkICVzXG4iLAotCQlpbnRlbF9ndWNfZndfc3RhdHVzX3JlcHIoZ3VjX2Z3LT5n dWNfZndfZmV0Y2hfc3RhdHVzKSwKLQkJaW50ZWxfZ3VjX2Z3X3N0YXR1c19yZXByKGd1Y19mdy0+ Z3VjX2Z3X2xvYWRfc3RhdHVzKSk7CisJCWludGVsX3VjX2Z3X3N0YXR1c19yZXByKGd1Y19mdy0+ ZmV0Y2hfc3RhdHVzKSwKKwkJaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIoZ3VjX2Z3LT5sb2FkX3N0 YXR1cykpOwogCiAJaWYgKGk5MTUuZW5hYmxlX2d1Y19zdWJtaXNzaW9uKSB7CiAJCWlmIChpOTE1 Lmd1Y19sb2dfbGV2ZWwgPj0gMCkKQEAgLTU0Miw4ICs1NDIsOCBAQCBpbnQgaW50ZWxfZ3VjX3Nl dHVwKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAlyZXR1cm4gMDsKIAogZmFp bDoKLQlpZiAoZ3VjX2Z3LT5ndWNfZndfbG9hZF9zdGF0dXMgPT0gR1VDX0ZJUk1XQVJFX1BFTkRJ TkcpCi0JCWd1Y19mdy0+Z3VjX2Z3X2xvYWRfc3RhdHVzID0gR1VDX0ZJUk1XQVJFX0ZBSUw7CisJ aWYgKGd1Y19mdy0+bG9hZF9zdGF0dXMgPT0gSU5URUxfVUNfRklSTVdBUkVfUEVORElORykKKwkJ Z3VjX2Z3LT5sb2FkX3N0YXR1cyA9IElOVEVMX1VDX0ZJUk1XQVJFX0ZBSUw7CiAKIAlndWNfaW50 ZXJydXB0c19yZWxlYXNlKGRldl9wcml2KTsKIAlpOTE1X2d1Y19zdWJtaXNzaW9uX2Rpc2FibGUo ZGV2X3ByaXYpOwpAQCAtNTg4LDggKzU4OCw4IEBAIGludCBpbnRlbF9ndWNfc2V0dXAoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCXJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyB2 b2lkIGd1Y19md19mZXRjaChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCi0JCQkg c3RydWN0IGludGVsX2d1Y19mdyAqZ3VjX2Z3KQordm9pZCBpbnRlbF91Y19md19mZXRjaChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkgc3RydWN0IGludGVsX3VjX2Z3ICp1 Y19mdykKIHsKIAlzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IGRldl9wcml2LT5kcm0ucGRldjsKIAlz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOwpAQCAtNTk4LDE3ICs1OTgsMTcgQEAgc3Rh dGljIHZvaWQgZ3VjX2Z3X2ZldGNoKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwK IAlzaXplX3Qgc2l6ZTsKIAlpbnQgZXJyOwogCi0JRFJNX0RFQlVHX0RSSVZFUigiYmVmb3JlIHJl cXVlc3RpbmcgZmlybXdhcmU6IEd1QyBmdyBmZXRjaCBzdGF0dXMgJXNcbiIsCi0JCWludGVsX2d1 Y19md19zdGF0dXNfcmVwcihndWNfZnctPmd1Y19md19mZXRjaF9zdGF0dXMpKTsKKwlEUk1fREVC VUdfRFJJVkVSKCJiZWZvcmUgcmVxdWVzdGluZyBmaXJtd2FyZTogdUMgZncgZmV0Y2ggc3RhdHVz ICVzXG4iLAorCQlpbnRlbF91Y19md19zdGF0dXNfcmVwcih1Y19mdy0+ZmV0Y2hfc3RhdHVzKSk7 CiAKLQllcnIgPSByZXF1ZXN0X2Zpcm13YXJlKCZmdywgZ3VjX2Z3LT5ndWNfZndfcGF0aCwgJnBk ZXYtPmRldik7CisJZXJyID0gcmVxdWVzdF9maXJtd2FyZSgmZncsIHVjX2Z3LT5wYXRoLCAmcGRl di0+ZGV2KTsKIAlpZiAoZXJyKQogCQlnb3RvIGZhaWw7CiAJaWYgKCFmdykKIAkJZ290byBmYWls OwogCi0JRFJNX0RFQlVHX0RSSVZFUigiZmV0Y2ggR3VDIGZ3IGZyb20gJXMgc3VjY2VlZGVkLCBm dyAlcFxuIiwKLQkJZ3VjX2Z3LT5ndWNfZndfcGF0aCwgZncpOworCURSTV9ERUJVR19EUklWRVIo ImZldGNoIHVDIGZ3IGZyb20gJXMgc3VjY2VlZGVkLCBmdyAlcFxuIiwKKwkJdWNfZnctPnBhdGgs IGZ3KTsKIAogCS8qIENoZWNrIHRoZSBzaXplIG9mIHRoZSBibG9iIGJlZm9yZSBleGFtaW5pbmcg YnVmZmVyIGNvbnRlbnRzICovCiAJaWYgKGZ3LT5zaXplIDwgc2l6ZW9mKHN0cnVjdCBndWNfY3Nz X2hlYWRlcikpIHsKQEAgLTYxOSwzNiArNjE5LDM2IEBAIHN0YXRpYyB2b2lkIGd1Y19md19mZXRj aChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJY3NzID0gKHN0cnVjdCBndWNf Y3NzX2hlYWRlciAqKWZ3LT5kYXRhOwogCiAJLyogRmlybXdhcmUgYml0cyBhbHdheXMgc3RhcnQg ZnJvbSBoZWFkZXIgKi8KLQlndWNfZnctPmhlYWRlcl9vZmZzZXQgPSAwOwotCWd1Y19mdy0+aGVh ZGVyX3NpemUgPSAoY3NzLT5oZWFkZXJfc2l6ZV9kdyAtIGNzcy0+bW9kdWx1c19zaXplX2R3IC0K Kwl1Y19mdy0+aGVhZGVyX29mZnNldCA9IDA7CisJdWNfZnctPmhlYWRlcl9zaXplID0gKGNzcy0+ aGVhZGVyX3NpemVfZHcgLSBjc3MtPm1vZHVsdXNfc2l6ZV9kdyAtCiAJCWNzcy0+a2V5X3NpemVf ZHcgLSBjc3MtPmV4cG9uZW50X3NpemVfZHcpICogc2l6ZW9mKHUzMik7CiAKLQlpZiAoZ3VjX2Z3 LT5oZWFkZXJfc2l6ZSAhPSBzaXplb2Yoc3RydWN0IGd1Y19jc3NfaGVhZGVyKSkgeworCWlmICh1 Y19mdy0+aGVhZGVyX3NpemUgIT0gc2l6ZW9mKHN0cnVjdCBndWNfY3NzX2hlYWRlcikpIHsKIAkJ RFJNX05PVEUoIkNTUyBoZWFkZXIgZGVmaW5pdGlvbiBtaXNtYXRjaFxuIik7CiAJCWdvdG8gZmFp bDsKIAl9CiAKIAkvKiB0aGVuLCB1Q29kZSAqLwotCWd1Y19mdy0+dWNvZGVfb2Zmc2V0ID0gZ3Vj X2Z3LT5oZWFkZXJfb2Zmc2V0ICsgZ3VjX2Z3LT5oZWFkZXJfc2l6ZTsKLQlndWNfZnctPnVjb2Rl X3NpemUgPSAoY3NzLT5zaXplX2R3IC0gY3NzLT5oZWFkZXJfc2l6ZV9kdykgKiBzaXplb2YodTMy KTsKKwl1Y19mdy0+dWNvZGVfb2Zmc2V0ID0gdWNfZnctPmhlYWRlcl9vZmZzZXQgKyB1Y19mdy0+ aGVhZGVyX3NpemU7CisJdWNfZnctPnVjb2RlX3NpemUgPSAoY3NzLT5zaXplX2R3IC0gY3NzLT5o ZWFkZXJfc2l6ZV9kdykgKiBzaXplb2YodTMyKTsKIAogCS8qIG5vdyBSU0EgKi8KIAlpZiAoY3Nz LT5rZXlfc2l6ZV9kdyAhPSBVT1NfUlNBX1NDUkFUQ0hfTUFYX0NPVU5UKSB7CiAJCURSTV9OT1RF KCJSU0Ega2V5IHNpemUgaXMgYmFkXG4iKTsKIAkJZ290byBmYWlsOwogCX0KLQlndWNfZnctPnJz YV9vZmZzZXQgPSBndWNfZnctPnVjb2RlX29mZnNldCArIGd1Y19mdy0+dWNvZGVfc2l6ZTsKLQln dWNfZnctPnJzYV9zaXplID0gY3NzLT5rZXlfc2l6ZV9kdyAqIHNpemVvZih1MzIpOworCXVjX2Z3 LT5yc2Ffb2Zmc2V0ID0gdWNfZnctPnVjb2RlX29mZnNldCArIHVjX2Z3LT51Y29kZV9zaXplOwor CXVjX2Z3LT5yc2Ffc2l6ZSA9IGNzcy0+a2V5X3NpemVfZHcgKiBzaXplb2YodTMyKTsKIAogCS8q IEF0IGxlYXN0LCBpdCBzaG91bGQgaGF2ZSBoZWFkZXIsIHVDb2RlIGFuZCBSU0EuIFNpemUgb2Yg YWxsIHRocmVlLiAqLwotCXNpemUgPSBndWNfZnctPmhlYWRlcl9zaXplICsgZ3VjX2Z3LT51Y29k ZV9zaXplICsgZ3VjX2Z3LT5yc2Ffc2l6ZTsKKwlzaXplID0gdWNfZnctPmhlYWRlcl9zaXplICsg dWNfZnctPnVjb2RlX3NpemUgKyB1Y19mdy0+cnNhX3NpemU7CiAJaWYgKGZ3LT5zaXplIDwgc2l6 ZSkgewogCQlEUk1fTk9URSgiTWlzc2luZyBmaXJtd2FyZSBjb21wb25lbnRzXG4iKTsKIAkJZ290 byBmYWlsOwogCX0KIAogCS8qIEhlYWRlciBhbmQgdUNvZGUgd2lsbCBiZSBsb2FkZWQgdG8gV09Q Q00uIFNpemUgb2YgdGhlIHR3by4gKi8KLQlzaXplID0gZ3VjX2Z3LT5oZWFkZXJfc2l6ZSArIGd1 Y19mdy0+dWNvZGVfc2l6ZTsKKwlzaXplID0gdWNfZnctPmhlYWRlcl9zaXplICsgdWNfZnctPnVj b2RlX3NpemU7CiAJaWYgKHNpemUgPiBndWNfd29wY21fc2l6ZShkZXZfcHJpdikpIHsKIAkJRFJN X05PVEUoIkZpcm13YXJlIGlzIHRvbyBsYXJnZSB0byBmaXQgaW4gV09QQ01cbiIpOwogCQlnb3Rv IGZhaWw7CkBAIC02NjAsMjEgKzY2MCwyMSBAQCBzdGF0aWMgdm9pZCBndWNfZndfZmV0Y2goc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCSAqIFRXTyBieXRlcyBlYWNoIChpLmUu IHUxNiksIGFsdGhvdWdoIGFsbCBwb2ludGVycyBhbmQgb2Zmc2V0cyBhcmUgZGVmaW5lZAogCSAq IGluIHRlcm1zIG9mIGJ5dGVzICh1OCkuCiAJICovCi0JZ3VjX2Z3LT5ndWNfZndfbWFqb3JfZm91 bmQgPSBjc3MtPmd1Y19zd192ZXJzaW9uID4+IDE2OwotCWd1Y19mdy0+Z3VjX2Z3X21pbm9yX2Zv dW5kID0gY3NzLT5ndWNfc3dfdmVyc2lvbiAmIDB4RkZGRjsKLQotCWlmIChndWNfZnctPmd1Y19m d19tYWpvcl9mb3VuZCAhPSBndWNfZnctPmd1Y19md19tYWpvcl93YW50ZWQgfHwKLQkgICAgZ3Vj X2Z3LT5ndWNfZndfbWlub3JfZm91bmQgPCBndWNfZnctPmd1Y19md19taW5vcl93YW50ZWQpIHsK LQkJRFJNX05PVEUoIkd1QyBmaXJtd2FyZSB2ZXJzaW9uICVkLiVkLCByZXF1aXJlZCAlZC4lZFxu IiwKLQkJCWd1Y19mdy0+Z3VjX2Z3X21ham9yX2ZvdW5kLCBndWNfZnctPmd1Y19md19taW5vcl9m b3VuZCwKLQkJCWd1Y19mdy0+Z3VjX2Z3X21ham9yX3dhbnRlZCwgZ3VjX2Z3LT5ndWNfZndfbWlu b3Jfd2FudGVkKTsKKwl1Y19mdy0+bWFqb3JfdmVyX2ZvdW5kID0gY3NzLT5ndWNfc3dfdmVyc2lv biA+PiAxNjsKKwl1Y19mdy0+bWlub3JfdmVyX2ZvdW5kID0gY3NzLT5ndWNfc3dfdmVyc2lvbiAm IDB4RkZGRjsKKworCWlmICh1Y19mdy0+bWFqb3JfdmVyX2ZvdW5kICE9IHVjX2Z3LT5tYWpvcl92 ZXJfd2FudGVkIHx8CisJICAgIHVjX2Z3LT5taW5vcl92ZXJfZm91bmQgPCB1Y19mdy0+bWlub3Jf dmVyX3dhbnRlZCkgeworCQlEUk1fTk9URSgidUMgZmlybXdhcmUgdmVyc2lvbiAlZC4lZCwgcmVx dWlyZWQgJWQuJWRcbiIsCisJCQl1Y19mdy0+bWFqb3JfdmVyX2ZvdW5kLCB1Y19mdy0+bWlub3Jf dmVyX2ZvdW5kLAorCQkJdWNfZnctPm1ham9yX3Zlcl93YW50ZWQsIHVjX2Z3LT5taW5vcl92ZXJf d2FudGVkKTsKIAkJZXJyID0gLUVOT0VYRUM7CiAJCWdvdG8gZmFpbDsKIAl9CiAKIAlEUk1fREVC VUdfRFJJVkVSKCJmaXJtd2FyZSB2ZXJzaW9uICVkLiVkIE9LIChtaW5pbXVtICVkLiVkKVxuIiwK LQkJCWd1Y19mdy0+Z3VjX2Z3X21ham9yX2ZvdW5kLCBndWNfZnctPmd1Y19md19taW5vcl9mb3Vu ZCwKLQkJCWd1Y19mdy0+Z3VjX2Z3X21ham9yX3dhbnRlZCwgZ3VjX2Z3LT5ndWNfZndfbWlub3Jf d2FudGVkKTsKKwkJCXVjX2Z3LT5tYWpvcl92ZXJfZm91bmQsIHVjX2Z3LT5taW5vcl92ZXJfZm91 bmQsCisJCQl1Y19mdy0+bWFqb3JfdmVyX3dhbnRlZCwgdWNfZnctPm1pbm9yX3Zlcl93YW50ZWQp OwogCiAJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXgpOwogCW9iaiA9IGk5 MTVfZ2VtX29iamVjdF9jcmVhdGVfZnJvbV9kYXRhKGRldl9wcml2LCBmdy0+ZGF0YSwgZnctPnNp emUpOwpAQCAtNjg0LDMxICs2ODQsMzEgQEAgc3RhdGljIHZvaWQgZ3VjX2Z3X2ZldGNoKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJZ290byBmYWlsOwogCX0KIAotCWd1Y19m dy0+Z3VjX2Z3X29iaiA9IG9iajsKLQlndWNfZnctPmd1Y19md19zaXplID0gZnctPnNpemU7CisJ dWNfZnctPm9iaiA9IG9iajsKKwl1Y19mdy0+c2l6ZSA9IGZ3LT5zaXplOwogCi0JRFJNX0RFQlVH X0RSSVZFUigiR3VDIGZ3IGZldGNoIHN0YXR1cyBTVUNDRVNTLCBvYmogJXBcbiIsCi0JCQlndWNf ZnctPmd1Y19md19vYmopOworCURSTV9ERUJVR19EUklWRVIoInVDIGZ3IGZldGNoIHN0YXR1cyBT VUNDRVNTLCBvYmogJXBcbiIsCisJCQl1Y19mdy0+b2JqKTsKIAogCXJlbGVhc2VfZmlybXdhcmUo ZncpOwotCWd1Y19mdy0+Z3VjX2Z3X2ZldGNoX3N0YXR1cyA9IEdVQ19GSVJNV0FSRV9TVUNDRVNT OworCXVjX2Z3LT5mZXRjaF9zdGF0dXMgPSBJTlRFTF9VQ19GSVJNV0FSRV9TVUNDRVNTOwogCXJl dHVybjsKIAogZmFpbDoKLQlEUk1fV0FSTigiRmFpbGVkIHRvIGZldGNoIHZhbGlkIEd1QyBmaXJt d2FyZSBmcm9tICVzIChlcnJvciAlZClcbiIsCi0JCSBndWNfZnctPmd1Y19md19wYXRoLCBlcnIp OwotCURSTV9ERUJVR19EUklWRVIoIkd1QyBmdyBmZXRjaCBzdGF0dXMgRkFJTDsgZXJyICVkLCBm dyAlcCwgb2JqICVwXG4iLAotCQllcnIsIGZ3LCBndWNfZnctPmd1Y19md19vYmopOworCURSTV9X QVJOKCJGYWlsZWQgdG8gZmV0Y2ggdmFsaWQgdUMgZmlybXdhcmUgZnJvbSAlcyAoZXJyb3IgJWQp XG4iLAorCQkgdWNfZnctPnBhdGgsIGVycik7CisJRFJNX0RFQlVHX0RSSVZFUigidUMgZncgZmV0 Y2ggc3RhdHVzIEZBSUw7IGVyciAlZCwgZncgJXAsIG9iaiAlcFxuIiwKKwkJZXJyLCBmdywgdWNf ZnctPm9iaik7CiAKIAltdXRleF9sb2NrKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleCk7Ci0J b2JqID0gZ3VjX2Z3LT5ndWNfZndfb2JqOworCW9iaiA9IHVjX2Z3LT5vYmo7CiAJaWYgKG9iaikK IAkJaTkxNV9nZW1fb2JqZWN0X3B1dChvYmopOwotCWd1Y19mdy0+Z3VjX2Z3X29iaiA9IE5VTEw7 CisJdWNfZnctPm9iaiA9IE5VTEw7CiAJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ZHJtLnN0cnVj dF9tdXRleCk7CiAKIAlyZWxlYXNlX2Zpcm13YXJlKGZ3KTsJCS8qIE9LIGV2ZW4gaWYgZncgaXMg TlVMTCAqLwotCWd1Y19mdy0+Z3VjX2Z3X2ZldGNoX3N0YXR1cyA9IEdVQ19GSVJNV0FSRV9GQUlM OworCXVjX2Z3LT5mZXRjaF9zdGF0dXMgPSBJTlRFTF9VQ19GSVJNV0FSRV9GQUlMOwogfQogCiAv KioKQEAgLTcyMiw3ICs3MjIsNyBAQCBzdGF0aWMgdm9pZCBndWNfZndfZmV0Y2goc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogICovCiB2b2lkIGludGVsX2d1Y19pbml0KHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKLQlzdHJ1Y3QgaW50ZWxfZ3VjX2Z3ICpn dWNfZncgPSAmZGV2X3ByaXYtPmd1Yy5ndWNfZnc7CisJc3RydWN0IGludGVsX3VjX2Z3ICpndWNf ZncgPSAmZGV2X3ByaXYtPmd1Yy5mdzsKIAljb25zdCBjaGFyICpmd19wYXRoOwogCiAJaWYgKCFI QVNfR1VDKGRldl9wcml2KSkgewpAQCAtNzQwLDIzICs3NDAsMjMgQEAgdm9pZCBpbnRlbF9ndWNf aW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCWZ3X3BhdGggPSBOVUxM OwogCX0gZWxzZSBpZiAoSVNfU0tZTEFLRShkZXZfcHJpdikpIHsKIAkJZndfcGF0aCA9IEk5MTVf U0tMX0dVQ19VQ09ERTsKLQkJZ3VjX2Z3LT5ndWNfZndfbWFqb3Jfd2FudGVkID0gU0tMX0ZXX01B Sk9SOwotCQlndWNfZnctPmd1Y19md19taW5vcl93YW50ZWQgPSBTS0xfRldfTUlOT1I7CisJCWd1 Y19mdy0+bWFqb3JfdmVyX3dhbnRlZCA9IFNLTF9GV19NQUpPUjsKKwkJZ3VjX2Z3LT5taW5vcl92 ZXJfd2FudGVkID0gU0tMX0ZXX01JTk9SOwogCX0gZWxzZSBpZiAoSVNfQlJPWFRPTihkZXZfcHJp dikpIHsKIAkJZndfcGF0aCA9IEk5MTVfQlhUX0dVQ19VQ09ERTsKLQkJZ3VjX2Z3LT5ndWNfZndf bWFqb3Jfd2FudGVkID0gQlhUX0ZXX01BSk9SOwotCQlndWNfZnctPmd1Y19md19taW5vcl93YW50 ZWQgPSBCWFRfRldfTUlOT1I7CisJCWd1Y19mdy0+bWFqb3JfdmVyX3dhbnRlZCA9IEJYVF9GV19N QUpPUjsKKwkJZ3VjX2Z3LT5taW5vcl92ZXJfd2FudGVkID0gQlhUX0ZXX01JTk9SOwogCX0gZWxz ZSBpZiAoSVNfS0FCWUxBS0UoZGV2X3ByaXYpKSB7CiAJCWZ3X3BhdGggPSBJOTE1X0tCTF9HVUNf VUNPREU7Ci0JCWd1Y19mdy0+Z3VjX2Z3X21ham9yX3dhbnRlZCA9IEtCTF9GV19NQUpPUjsKLQkJ Z3VjX2Z3LT5ndWNfZndfbWlub3Jfd2FudGVkID0gS0JMX0ZXX01JTk9SOworCQlndWNfZnctPm1h am9yX3Zlcl93YW50ZWQgPSBLQkxfRldfTUFKT1I7CisJCWd1Y19mdy0+bWlub3JfdmVyX3dhbnRl ZCA9IEtCTF9GV19NSU5PUjsKIAl9IGVsc2UgewogCQlmd19wYXRoID0gIiI7CS8qIHVua25vd24g ZGV2aWNlICovCiAJfQogCi0JZ3VjX2Z3LT5ndWNfZndfcGF0aCA9IGZ3X3BhdGg7Ci0JZ3VjX2Z3 LT5ndWNfZndfZmV0Y2hfc3RhdHVzID0gR1VDX0ZJUk1XQVJFX05PTkU7Ci0JZ3VjX2Z3LT5ndWNf ZndfbG9hZF9zdGF0dXMgPSBHVUNfRklSTVdBUkVfTk9ORTsKKwlndWNfZnctPnBhdGggPSBmd19w YXRoOworCWd1Y19mdy0+ZmV0Y2hfc3RhdHVzID0gSU5URUxfVUNfRklSTVdBUkVfTk9ORTsKKwln dWNfZnctPmxvYWRfc3RhdHVzID0gSU5URUxfVUNfRklSTVdBUkVfTk9ORTsKIAogCS8qIEVhcmx5 IChhbmQgc2lsZW50KSByZXR1cm4gaWYgR3VDIGxvYWRpbmcgaXMgZGlzYWJsZWQgKi8KIAlpZiAo IWk5MTUuZW5hYmxlX2d1Y19sb2FkaW5nKQpAQCAtNzY2LDkgKzc2Niw5IEBAIHZvaWQgaW50ZWxf Z3VjX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCWlmICgqZndfcGF0 aCA9PSAnXDAnKQogCQlyZXR1cm47CiAKLQlndWNfZnctPmd1Y19md19mZXRjaF9zdGF0dXMgPSBH VUNfRklSTVdBUkVfUEVORElORzsKKwlndWNfZnctPmZldGNoX3N0YXR1cyA9IElOVEVMX1VDX0ZJ Uk1XQVJFX1BFTkRJTkc7CiAJRFJNX0RFQlVHX0RSSVZFUigiR3VDIGZpcm13YXJlIHBlbmRpbmcs IHBhdGggJXNcbiIsIGZ3X3BhdGgpOwotCWd1Y19md19mZXRjaChkZXZfcHJpdiwgZ3VjX2Z3KTsK KwlpbnRlbF91Y19md19mZXRjaChkZXZfcHJpdiwgZ3VjX2Z3KTsKIAkvKiBzdGF0dXMgbXVzdCBu b3cgYmUgRkFJTCBvciBTVUNDRVNTICovCiB9CiAKQEAgLTc3OCwxNyArNzc4LDE3IEBAIHZvaWQg aW50ZWxfZ3VjX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogICovCiB2 b2lkIGludGVsX2d1Y19maW5pKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsK LQlzdHJ1Y3QgaW50ZWxfZ3VjX2Z3ICpndWNfZncgPSAmZGV2X3ByaXYtPmd1Yy5ndWNfZnc7CisJ c3RydWN0IGludGVsX3VjX2Z3ICpndWNfZncgPSAmZGV2X3ByaXYtPmd1Yy5mdzsKIAogCW11dGV4 X2xvY2soJmRldl9wcml2LT5kcm0uc3RydWN0X211dGV4KTsKIAlndWNfaW50ZXJydXB0c19yZWxl YXNlKGRldl9wcml2KTsKIAlpOTE1X2d1Y19zdWJtaXNzaW9uX2Rpc2FibGUoZGV2X3ByaXYpOwog CWk5MTVfZ3VjX3N1Ym1pc3Npb25fZmluaShkZXZfcHJpdik7CiAKLQlpZiAoZ3VjX2Z3LT5ndWNf Zndfb2JqKQotCQlpOTE1X2dlbV9vYmplY3RfcHV0KGd1Y19mdy0+Z3VjX2Z3X29iaik7Ci0JZ3Vj X2Z3LT5ndWNfZndfb2JqID0gTlVMTDsKKwlpZiAoZ3VjX2Z3LT5vYmopCisJCWk5MTVfZ2VtX29i amVjdF9wdXQoZ3VjX2Z3LT5vYmopOworCWd1Y19mdy0+b2JqID0gTlVMTDsKIAltdXRleF91bmxv Y2soJmRldl9wcml2LT5kcm0uc3RydWN0X211dGV4KTsKIAotCWd1Y19mdy0+Z3VjX2Z3X2ZldGNo X3N0YXR1cyA9IEdVQ19GSVJNV0FSRV9OT05FOworCWd1Y19mdy0+ZmV0Y2hfc3RhdHVzID0gSU5U RUxfVUNfRklSTVdBUkVfTk9ORTsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3VjLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91Yy5oCmluZGV4IDk0OTBh OGUuLjliYjhhMWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VjLmgK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdWMuaApAQCAtOTMsMjggKzkzLDI4IEBA IHN0cnVjdCBpOTE1X2d1Y19jbGllbnQgewogCXVpbnQ2NF90IHN1Ym1pc3Npb25zW0k5MTVfTlVN X0VOR0lORVNdOwogfTsKIAotZW51bSBpbnRlbF9ndWNfZndfc3RhdHVzIHsKLQlHVUNfRklSTVdB UkVfRkFJTCA9IC0xLAotCUdVQ19GSVJNV0FSRV9OT05FID0gMCwKLQlHVUNfRklSTVdBUkVfUEVO RElORywKLQlHVUNfRklSTVdBUkVfU1VDQ0VTUworZW51bSBpbnRlbF91Y19md19zdGF0dXMgewor CUlOVEVMX1VDX0ZJUk1XQVJFX0ZBSUwgPSAtMSwKKwlJTlRFTF9VQ19GSVJNV0FSRV9OT05FID0g MCwKKwlJTlRFTF9VQ19GSVJNV0FSRV9QRU5ESU5HLAorCUlOVEVMX1VDX0ZJUk1XQVJFX1NVQ0NF U1MKIH07CiAKIC8qCiAgKiBUaGlzIHN0cnVjdHVyZSBlbmNhcHN1bGF0ZXMgYWxsIHRoZSBkYXRh IG5lZWRlZCBkdXJpbmcgdGhlIHByb2Nlc3MKICAqIG9mIGZldGNoaW5nLCBjYWNoaW5nLCBhbmQg bG9hZGluZyB0aGUgZmlybXdhcmUgaW1hZ2UgaW50byB0aGUgR3VDLgogICovCi1zdHJ1Y3QgaW50 ZWxfZ3VjX2Z3IHsKLQljb25zdCBjaGFyICoJCQlndWNfZndfcGF0aDsKLQlzaXplX3QJCQkJZ3Vj X2Z3X3NpemU7Ci0Jc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKglndWNfZndfb2JqOwotCWVu dW0gaW50ZWxfZ3VjX2Z3X3N0YXR1cwlndWNfZndfZmV0Y2hfc3RhdHVzOwotCWVudW0gaW50ZWxf Z3VjX2Z3X3N0YXR1cwlndWNfZndfbG9hZF9zdGF0dXM7Ci0KLQl1aW50MTZfdAkJCWd1Y19md19t YWpvcl93YW50ZWQ7Ci0JdWludDE2X3QJCQlndWNfZndfbWlub3Jfd2FudGVkOwotCXVpbnQxNl90 CQkJZ3VjX2Z3X21ham9yX2ZvdW5kOwotCXVpbnQxNl90CQkJZ3VjX2Z3X21pbm9yX2ZvdW5kOwor c3RydWN0IGludGVsX3VjX2Z3IHsKKwljb25zdCBjaGFyICpwYXRoOworCXNpemVfdCBzaXplOwor CXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7CisJZW51bSBpbnRlbF91Y19md19zdGF0 dXMgZmV0Y2hfc3RhdHVzOworCWVudW0gaW50ZWxfdWNfZndfc3RhdHVzIGxvYWRfc3RhdHVzOwor CisJdWludDE2X3QgbWFqb3JfdmVyX3dhbnRlZDsKKwl1aW50MTZfdCBtaW5vcl92ZXJfd2FudGVk OworCXVpbnQxNl90IG1ham9yX3Zlcl9mb3VuZDsKKwl1aW50MTZfdCBtaW5vcl92ZXJfZm91bmQ7 CiAKIAl1aW50MzJfdCBoZWFkZXJfc2l6ZTsKIAl1aW50MzJfdCBoZWFkZXJfb2Zmc2V0OwpAQCAt MTQxLDcgKzE0MSw3IEBAIHN0cnVjdCBpbnRlbF9ndWNfbG9nIHsKIH07CiAKIHN0cnVjdCBpbnRl bF9ndWMgewotCXN0cnVjdCBpbnRlbF9ndWNfZncgZ3VjX2Z3OworCXN0cnVjdCBpbnRlbF91Y19m dyBmdzsKIAlzdHJ1Y3QgaW50ZWxfZ3VjX2xvZyBsb2c7CiAKIAkvKiBpbnRlbF9ndWNfcmVjdiBp bnRlcnJ1cHQgcmVsYXRlZCBzdGF0ZSAqLwpAQCAtMTgyLDkgKzE4MiwxMCBAQCBpbnQgaW50ZWxf Z3VjX2xvZ19jb250cm9sKHN0cnVjdCBpbnRlbF9ndWMgKmd1YywgdTMyIGNvbnRyb2xfdmFsKTsK IGV4dGVybiB2b2lkIGludGVsX2d1Y19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdik7CiBleHRlcm4gaW50IGludGVsX2d1Y19zZXR1cChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpOwogZXh0ZXJuIHZvaWQgaW50ZWxfZ3VjX2Zpbmkoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KTsKLWV4dGVybiBjb25zdCBjaGFyICppbnRlbF9ndWNfZndfc3Rh dHVzX3JlcHIoZW51bSBpbnRlbF9ndWNfZndfc3RhdHVzIHN0YXR1cyk7CitleHRlcm4gY29uc3Qg Y2hhciAqaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIoZW51bSBpbnRlbF91Y19md19zdGF0dXMgc3Rh dHVzKTsKIGV4dGVybiBpbnQgaW50ZWxfZ3VjX3N1c3BlbmQoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KTsKIGV4dGVybiBpbnQgaW50ZWxfZ3VjX3Jlc3VtZShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwordTMyIGludGVsX2d1Y193b3BjbV9zaXplKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CiAKIC8qIGk5MTVfZ3VjX3N1Ym1pc3Npb24uYyAq LwogaW50IGk5MTVfZ3VjX3N1Ym1pc3Npb25faW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpOwotLSAKMi43LjQKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2ludGVsLWdmeAo=