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: Wed, 4 Jan 2017 05:27:23 -0800 Message-ID: <1483536450-4536-2-git-send-email-anusha.srivatsa@intel.com> References: <1483536450-4536-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 mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id BF51B6E702 for ; Wed, 4 Jan 2017 13:30:44 +0000 (UTC) In-Reply-To: <1483536450-4536-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 RnJvbTogUGV0ZXIgQW50b2luZSA8cGV0ZXIuYW50b2luZUBpbnRlbC5jb20+CgpSZW5hbWUgc29t ZSBvZiB0aGUgR3VDIGZ3IGxvYWRpbmcgY29kZSB0byBtYWtlIHRoZW0gbW9yZSBnZW5lcmFsLiBX ZQp3aWxsIHV0aWxpc2UgdGhlbSBmb3IgSHVDIGxvYWRpbmcgYXMgd2VsbC4KICAgICBzL2ludGVs X2d1Y19mdy9pbnRlbF91Y19mdy9nCiAgICAgcy9HVUNfRklSTVdBUkUvVUNfRklSTVdBUkUvZwoK U3RydWN0IGludGVsX2d1Y19mdyBpcyByZW5hbWVkIHRvIGludGVsX3VjX2Z3LiBQcmVmaXggb2Yg dHRzIG1lbWJlcnMsCnN1Y2ggYXMgJ2d1Yycgb3IgJ2d1Y19mdycgZWl0aGVyIGlzIHJlbmFtZWQg dG8gJ3VjJyBvciByZW1vdmVkIGZvcgpzYW1lIHB1cnBvc2UuCgp2MjogcmViYXNlZCBvbiB0b3Ag b2YgbmlnaHRseS4KICAgIHJlYXBwbGllZCB0aGUgc2VhcmNoL3JlcGxhY2UgYXMgdXBzdHJlYW0g Y29kZSBhcyBjaGFuZ2VkLgp2MzogcmViYXNlZCBhZ2FpbiBvbiBkcm0tbmlnaHRseS4KdjQ6IHJl bW92ZWQgRyBmcm9tIG1lc3NhZ2VzIGluIHNoYXJlZCBmdyBmZXRjaCBmdW5jdGlvbi4KdjU6IHJl YmFzZWQuCnY3OiByZWJhc2VkLgp2ODogcmViYXNlZC4Kdjk6IHJlYmFzZWQuCnYxMDogcmViYXNl ZC4KdjExOiByZWJhc2VkLgp2MTI6IHJlYmFzZWQgb24gdG9wIG9mIGRybS10aXAKdjEzOiByZWJh c2VkLlVwZGF0ZWQgZGV2IHRvIGRldl9wcml2IGluIGludGVsX2d1Y19zZXR1cCgpLCBndWNfZndf Z2V0Y2goKQphbmQgaW50ZWxfZ3VjX2luaXQoKS4KdjE0OiByZWJhc2VkLiBSZW1vdmUgdWludDMy X3QgZndfdHlwZSB0byBwYXRjaCAyLiBBZGQgSU5URUxfIHByZWZpeCBmb3IKZmllbGRzIGluIGVu dW0gaW50ZWxfdWNfZndfc3RhdHVzLiBSZW1vdmUgdWNfZGV2IGZpZWxkIHNpbmNlIGl0cyBuZXZl cgp1c2VkLlJlbmFtZSB1Y19mdyB0byBqdXN0IGZ3IGFuZCBndWNfZncgdG8gZncgdG8gYXZvaWQg cmVkdW5kZW5jeS4KdjE1OiByZWJhc2VkLiBSZW1vdmUgc2VjdGlvbnMgb2YgY29kZSB0aGF0IHdl cmUgY29tbWVudGVkIGFuZCBubyBsb25nZXIKcmVxdWlyZWQuCnYxNjogcmViYXNlZC4gUmVtb3Zl IHVjX2Z3XyBwcmVmaXggZnJvbSBwYXRoIGFuZCBvYmogZmllbGRzCmluIGludGVsX3VjX2Z3IHN0 cnVjdCBhcyBzdWdnZXN0ZWQgYnkgTWljaGFsLgoKQ2M6IE1pY2hhbCBXYWpkZWN6a28gPG1pY2hh bC53YWpkZWN6a29AaW50ZWwuY29tPgpDYzogQXJrYWRpdXN6IEhpbGVyIDxhcmthZGl1c3ouaGls ZXJAaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBBbnVzaGEgU3JpdmF0c2EgPGFudXNoYS5zcml2 YXRzYUBpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IEFsZXggRGFpIDx5dS5kYWlAaW50ZWwuY29t PgpTaWduZWQtb2ZmLWJ5OiBQZXRlciBBbnRvaW5lIDxwZXRlci5hbnRvaW5lQGludGVsLmNvbT4K LS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyAgICAgICAgfCAgMTIgKy0t CiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMgfCAgIDQgKy0KIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19sb2FkZXIuYyAgICB8IDE1NiArKysrKysrKysr KysrKy0tLS0tLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdWMuaCAgICAg ICAgICAgIHwgIDM2ICsrKy0tLS0KIDQgZmlsZXMgY2hhbmdlZCwgMTA0IGluc2VydGlvbnMoKyks IDEwNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2RlYnVnZnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCmluZGV4IDlk N2I1YTguLjE1MDUzNmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVi dWdmcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCkBAIC0yMzI4 LDcgKzIzMjgsNyBAQCBzdGF0aWMgaW50IGk5MTVfbGxjKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9p ZCAqZGF0YSkKIHN0YXRpYyBpbnQgaTkxNV9ndWNfbG9hZF9zdGF0dXNfaW5mbyhzdHJ1Y3Qgc2Vx X2ZpbGUgKm0sIHZvaWQgKmRhdGEpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gbm9kZV90b19pOTE1KG0tPnByaXZhdGUpOwotCXN0cnVjdCBpbnRlbF9ndWNfZncgKmd1 Y19mdyA9ICZkZXZfcHJpdi0+Z3VjLmd1Y19mdzsKKwlzdHJ1Y3QgaW50ZWxfdWNfZncgKmd1Y19m dyA9ICZkZXZfcHJpdi0+Z3VjLmZ3OwogCXUzMiB0bXAsIGk7CiAKIAlpZiAoIUhBU19HVUNfVUNP REUoZGV2X3ByaXYpKQpAQCAtMjMzNiwxNSArMjMzNiwxNSBAQCBzdGF0aWMgaW50IGk5MTVfZ3Vj X2xvYWRfc3RhdHVzX2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQogCiAJc2Vx X3ByaW50ZihtLCAiR3VDIGZpcm13YXJlIHN0YXR1czpcbiIpOwogCXNlcV9wcmludGYobSwgIlx0 cGF0aDogJXNcbiIsCi0JCWd1Y19mdy0+Z3VjX2Z3X3BhdGgpOworCQlndWNfZnctPnVjX2Z3X3Bh dGgpOwogCXNlcV9wcmludGYobSwgIlx0ZmV0Y2g6ICVzXG4iLAotCQlpbnRlbF9ndWNfZndfc3Rh dHVzX3JlcHIoZ3VjX2Z3LT5ndWNfZndfZmV0Y2hfc3RhdHVzKSk7CisJCWludGVsX3VjX2Z3X3N0 YXR1c19yZXByKGd1Y19mdy0+ZmV0Y2hfc3RhdHVzKSk7CiAJc2VxX3ByaW50ZihtLCAiXHRsb2Fk OiAlc1xuIiwKLQkJaW50ZWxfZ3VjX2Z3X3N0YXR1c19yZXByKGd1Y19mdy0+Z3VjX2Z3X2xvYWRf c3RhdHVzKSk7CisJCWludGVsX3VjX2Z3X3N0YXR1c19yZXByKGd1Y19mdy0+bG9hZF9zdGF0dXMp KTsKIAlzZXFfcHJpbnRmKG0sICJcdHZlcnNpb24gd2FudGVkOiAlZC4lZFxuIiwKLQkJZ3VjX2Z3 LT5ndWNfZndfbWFqb3Jfd2FudGVkLCBndWNfZnctPmd1Y19md19taW5vcl93YW50ZWQpOworCQln dWNfZnctPm1ham9yX3Zlcl93YW50ZWQsIGd1Y19mdy0+bWlub3JfdmVyX3dhbnRlZCk7CiAJc2Vx X3ByaW50ZihtLCAiXHR2ZXJzaW9uIGZvdW5kOiAlZC4lZFxuIiwKLQkJZ3VjX2Z3LT5ndWNfZndf bWFqb3JfZm91bmQsIGd1Y19mdy0+Z3VjX2Z3X21pbm9yX2ZvdW5kKTsKKwkJZ3VjX2Z3LT5tYWpv cl92ZXJfZm91bmQsIGd1Y19mdy0+bWlub3JfdmVyX2ZvdW5kKTsKIAlzZXFfcHJpbnRmKG0sICJc dGhlYWRlcjogb2Zmc2V0IGlzICVkOyBzaXplID0gJWRcbiIsCiAJCWd1Y19mdy0+aGVhZGVyX29m ZnNldCwgZ3VjX2Z3LT5oZWFkZXJfc2l6ZSk7CiAJc2VxX3ByaW50ZihtLCAiXHR1Q29kZTogb2Zm c2V0IGlzICVkOyBzaXplID0gJWRcbiIsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19z dWJtaXNzaW9uLmMKaW5kZXggMzBlMDEyYi4uNDhiZmQzNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYwpAQCAtMTQ4NCw3ICsxNDg0LDcgQEAgaW50IGludGVs X2d1Y19zdXNwZW5kKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAlzdHJ1Y3Qg aTkxNV9nZW1fY29udGV4dCAqY3R4OwogCXUzMiBkYXRhWzNdOwogCi0JaWYgKGd1Yy0+Z3VjX2Z3 Lmd1Y19md19sb2FkX3N0YXR1cyAhPSBHVUNfRklSTVdBUkVfU1VDQ0VTUykKKwlpZiAoZ3VjLT5m dy5sb2FkX3N0YXR1cyAhPSBJTlRFTF9VQ19GSVJNV0FSRV9TVUNDRVNTKQogCQlyZXR1cm4gMDsK IAogCWdlbjlfZGlzYWJsZV9ndWNfaW50ZXJydXB0cyhkZXZfcHJpdik7CkBAIC0xNTExLDcgKzE1 MTEsNyBAQCBpbnQgaW50ZWxfZ3VjX3Jlc3VtZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCiAJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eDsKIAl1MzIgZGF0YVszXTsKIAot CWlmIChndWMtPmd1Y19mdy5ndWNfZndfbG9hZF9zdGF0dXMgIT0gR1VDX0ZJUk1XQVJFX1NVQ0NF U1MpCisJaWYgKGd1Yy0+ZncubG9hZF9zdGF0dXMgIT0gSU5URUxfVUNfRklSTVdBUkVfU1VDQ0VT UykKIAkJcmV0dXJuIDA7CiAKIAlpZiAoaTkxNS5ndWNfbG9nX2xldmVsID49IDApCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMKaW5kZXggMzVkNTY5MC4uMTUyMTViNyAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19sb2FkZXIuYwpAQCAtODEsMTYgKzgxLDE2IEBA IE1PRFVMRV9GSVJNV0FSRShJOTE1X0JYVF9HVUNfVUNPREUpOwogTU9EVUxFX0ZJUk1XQVJFKEk5 MTVfS0JMX0dVQ19VQ09ERSk7CiAKIC8qIFVzZXItZnJpZW5kbHkgcmVwcmVzZW50YXRpb24gb2Yg YW4gZW51bSAqLwotY29uc3QgY2hhciAqaW50ZWxfZ3VjX2Z3X3N0YXR1c19yZXByKGVudW0gaW50 ZWxfZ3VjX2Z3X3N0YXR1cyBzdGF0dXMpCitjb25zdCBjaGFyICppbnRlbF91Y19md19zdGF0dXNf cmVwcihlbnVtIGludGVsX3VjX2Z3X3N0YXR1cyBzdGF0dXMpCiB7CiAJc3dpdGNoIChzdGF0dXMp IHsKLQljYXNlIEdVQ19GSVJNV0FSRV9GQUlMOgorCWNhc2UgSU5URUxfVUNfRklSTVdBUkVfRkFJ TDoKIAkJcmV0dXJuICJGQUlMIjsKLQljYXNlIEdVQ19GSVJNV0FSRV9OT05FOgorCWNhc2UgSU5U RUxfVUNfRklSTVdBUkVfTk9ORToKIAkJcmV0dXJuICJOT05FIjsKLQljYXNlIEdVQ19GSVJNV0FS RV9QRU5ESU5HOgorCWNhc2UgSU5URUxfVUNfRklSTVdBUkVfUEVORElORzoKIAkJcmV0dXJuICJQ RU5ESU5HIjsKLQljYXNlIEdVQ19GSVJNV0FSRV9TVUNDRVNTOgorCWNhc2UgSU5URUxfVUNfRklS TVdBUkVfU1VDQ0VTUzoKIAkJcmV0dXJuICJTVUNDRVNTIjsKIAlkZWZhdWx0OgogCQlyZXR1cm4g IlVOS05PV04hIjsKQEAgLTI3OCw3ICsyNzgsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgZ3VjX3Vj b2RlX3Jlc3BvbnNlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIHN0YXRpYyBp bnQgZ3VjX3Vjb2RlX3hmZXJfZG1hKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwK IAkJCSAgICAgIHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQogewotCXN0cnVjdCBpbnRlbF9ndWNfZncg Kmd1Y19mdyA9ICZkZXZfcHJpdi0+Z3VjLmd1Y19mdzsKKwlzdHJ1Y3QgaW50ZWxfdWNfZncgKmd1 Y19mdyA9ICZkZXZfcHJpdi0+Z3VjLmZ3OwogCXVuc2lnbmVkIGxvbmcgb2Zmc2V0OwogCXN0cnVj dCBzZ190YWJsZSAqc2cgPSB2bWEtPnBhZ2VzOwogCXUzMiBzdGF0dXMsIHJzYVtVT1NfUlNBX1ND UkFUQ0hfTUFYX0NPVU5UXTsKQEAgLTM1MCwxNyArMzUwLDE3IEBAIHN0YXRpYyB1MzIgZ3VjX3dv cGNtX3NpemUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogICovCiBzdGF0aWMg aW50IGd1Y191Y29kZV94ZmVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsK LQlzdHJ1Y3QgaW50ZWxfZ3VjX2Z3ICpndWNfZncgPSAmZGV2X3ByaXYtPmd1Yy5ndWNfZnc7CisJ c3RydWN0IGludGVsX3VjX2Z3ICpndWNfZncgPSAmZGV2X3ByaXYtPmd1Yy5mdzsKIAlzdHJ1Y3Qg aTkxNV92bWEgKnZtYTsKIAlpbnQgcmV0OwogCi0JcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3NldF90 b19ndHRfZG9tYWluKGd1Y19mdy0+Z3VjX2Z3X29iaiwgZmFsc2UpOworCXJldCA9IGk5MTVfZ2Vt X29iamVjdF9zZXRfdG9fZ3R0X2RvbWFpbihndWNfZnctPnVjX2Z3X29iaiwgZmFsc2UpOwogCWlm IChyZXQpIHsKIAkJRFJNX0RFQlVHX0RSSVZFUigic2V0LWRvbWFpbiBmYWlsZWQgJWRcbiIsIHJl dCk7CiAJCXJldHVybiByZXQ7CiAJfQogCi0Jdm1hID0gaTkxNV9nZW1fb2JqZWN0X2dndHRfcGlu KGd1Y19mdy0+Z3VjX2Z3X29iaiwgTlVMTCwgMCwgMCwgMCk7CisJdm1hID0gaTkxNV9nZW1fb2Jq ZWN0X2dndHRfcGluKGd1Y19mdy0+dWNfZndfb2JqLCBOVUxMLCAwLCAwLCAwKTsKIAlpZiAoSVNf RVJSKHZtYSkpIHsKIAkJRFJNX0RFQlVHX0RSSVZFUigicGluIGZhaWxlZCAlZFxuIiwgKGludClQ VFJfRVJSKHZtYSkpOwogCQlyZXR1cm4gUFRSX0VSUih2bWEpOwpAQCAtNDUwLDE0ICs0NTAsMTQg QEAgc3RhdGljIGludCBndWNfaHdfcmVzZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQogICovCiBpbnQgaW50ZWxfZ3VjX3NldHVwKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKIHsKLQlzdHJ1Y3QgaW50ZWxfZ3VjX2Z3ICpndWNfZncgPSAmZGV2X3ByaXYtPmd1 Yy5ndWNfZnc7Ci0JY29uc3QgY2hhciAqZndfcGF0aCA9IGd1Y19mdy0+Z3VjX2Z3X3BhdGg7CisJ c3RydWN0IGludGVsX3VjX2Z3ICpndWNfZncgPSAmZGV2X3ByaXYtPmd1Yy5mdzsKKwljb25zdCBj aGFyICpmd19wYXRoID0gZ3VjX2Z3LT51Y19md19wYXRoOwogCWludCByZXRyaWVzLCByZXQsIGVy cjsKIAogCURSTV9ERUJVR19EUklWRVIoIkd1QyBmdyBzdGF0dXM6IHBhdGggJXMsIGZldGNoICVz LCBsb2FkICVzXG4iLAogCQlmd19wYXRoLAotCQlpbnRlbF9ndWNfZndfc3RhdHVzX3JlcHIoZ3Vj X2Z3LT5ndWNfZndfZmV0Y2hfc3RhdHVzKSwKLQkJaW50ZWxfZ3VjX2Z3X3N0YXR1c19yZXByKGd1 Y19mdy0+Z3VjX2Z3X2xvYWRfc3RhdHVzKSk7CisJCWludGVsX3VjX2Z3X3N0YXR1c19yZXByKGd1 Y19mdy0+ZmV0Y2hfc3RhdHVzKSwKKwkJaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIoZ3VjX2Z3LT5s b2FkX3N0YXR1cykpOwogCiAJLyogTG9hZGluZyBmb3JiaWRkZW4sIG9yIG5vIGZpcm13YXJlIHRv IGxvYWQ/ICovCiAJaWYgKCFpOTE1LmVuYWJsZV9ndWNfbG9hZGluZykgewpAQCAtNDc1LDEwICs0 NzUsMTAgQEAgaW50IGludGVsX2d1Y19zZXR1cChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCiAJfQogCiAJLyogRmV0Y2ggZmFpbGVkLCBvciBhbHJlYWR5IGZldGNoZWQgYnV0IGZh aWxlZCB0byBsb2FkPyAqLwotCWlmIChndWNfZnctPmd1Y19md19mZXRjaF9zdGF0dXMgIT0gR1VD X0ZJUk1XQVJFX1NVQ0NFU1MpIHsKKwlpZiAoZ3VjX2Z3LT5mZXRjaF9zdGF0dXMgIT0gSU5URUxf VUNfRklSTVdBUkVfU1VDQ0VTUykgewogCQllcnIgPSAtRUlPOwogCQlnb3RvIGZhaWw7Ci0JfSBl bHNlIGlmIChndWNfZnctPmd1Y19md19sb2FkX3N0YXR1cyA9PSBHVUNfRklSTVdBUkVfRkFJTCkg eworCX0gZWxzZSBpZiAoZ3VjX2Z3LT5sb2FkX3N0YXR1cyA9PSBJTlRFTF9VQ19GSVJNV0FSRV9G QUlMKSB7CiAJCWVyciA9IC1FTk9FWEVDOwogCQlnb3RvIGZhaWw7CiAJfQpAQCAtNDg2LDExICs0 ODYsMTEgQEAgaW50IGludGVsX2d1Y19zZXR1cChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCiAJZ3VjX2ludGVycnVwdHNfcmVsZWFzZShkZXZfcHJpdik7CiAJZ2VuOV9yZXNldF9n dWNfaW50ZXJydXB0cyhkZXZfcHJpdik7CiAKLQlndWNfZnctPmd1Y19md19sb2FkX3N0YXR1cyA9 IEdVQ19GSVJNV0FSRV9QRU5ESU5HOworCWd1Y19mdy0+bG9hZF9zdGF0dXMgPSBJTlRFTF9VQ19G SVJNV0FSRV9QRU5ESU5HOwogCiAJRFJNX0RFQlVHX0RSSVZFUigiR3VDIGZ3IHN0YXR1czogZmV0 Y2ggJXMsIGxvYWQgJXNcbiIsCi0JCWludGVsX2d1Y19md19zdGF0dXNfcmVwcihndWNfZnctPmd1 Y19md19mZXRjaF9zdGF0dXMpLAotCQlpbnRlbF9ndWNfZndfc3RhdHVzX3JlcHIoZ3VjX2Z3LT5n dWNfZndfbG9hZF9zdGF0dXMpKTsKKwkJaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIoZ3VjX2Z3LT5m ZXRjaF9zdGF0dXMpLAorCQlpbnRlbF91Y19md19zdGF0dXNfcmVwcihndWNfZnctPmxvYWRfc3Rh dHVzKSk7CiAKIAllcnIgPSBpOTE1X2d1Y19zdWJtaXNzaW9uX2luaXQoZGV2X3ByaXYpOwogCWlm IChlcnIpCkBAIC01MjIsMTEgKzUyMiwxMSBAQCBpbnQgaW50ZWxfZ3VjX3NldHVwKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkJCSAicmV0cnkgJWQgbW9yZSB0aW1lKHMpXG4i LCBlcnIsIHJldHJpZXMpOwogCX0KIAotCWd1Y19mdy0+Z3VjX2Z3X2xvYWRfc3RhdHVzID0gR1VD X0ZJUk1XQVJFX1NVQ0NFU1M7CisJZ3VjX2Z3LT5sb2FkX3N0YXR1cyA9IElOVEVMX1VDX0ZJUk1X QVJFX1NVQ0NFU1M7CiAKIAlEUk1fREVCVUdfRFJJVkVSKCJHdUMgZncgc3RhdHVzOiBmZXRjaCAl cywgbG9hZCAlc1xuIiwKLQkJaW50ZWxfZ3VjX2Z3X3N0YXR1c19yZXByKGd1Y19mdy0+Z3VjX2Z3 X2ZldGNoX3N0YXR1cyksCi0JCWludGVsX2d1Y19md19zdGF0dXNfcmVwcihndWNfZnctPmd1Y19m d19sb2FkX3N0YXR1cykpOworCQlpbnRlbF91Y19md19zdGF0dXNfcmVwcihndWNfZnctPmZldGNo X3N0YXR1cyksCisJCWludGVsX3VjX2Z3X3N0YXR1c19yZXByKGd1Y19mdy0+bG9hZF9zdGF0dXMp KTsKIAogCWlmIChpOTE1LmVuYWJsZV9ndWNfc3VibWlzc2lvbikgewogCQlpZiAoaTkxNS5ndWNf bG9nX2xldmVsID49IDApCkBAIC01NDEsOCArNTQxLDggQEAgaW50IGludGVsX2d1Y19zZXR1cChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJcmV0dXJuIDA7CiAKIGZhaWw6Ci0J aWYgKGd1Y19mdy0+Z3VjX2Z3X2xvYWRfc3RhdHVzID09IEdVQ19GSVJNV0FSRV9QRU5ESU5HKQot CQlndWNfZnctPmd1Y19md19sb2FkX3N0YXR1cyA9IEdVQ19GSVJNV0FSRV9GQUlMOworCWlmIChn dWNfZnctPmxvYWRfc3RhdHVzID09IElOVEVMX1VDX0ZJUk1XQVJFX1BFTkRJTkcpCisJCWd1Y19m dy0+bG9hZF9zdGF0dXMgPSBJTlRFTF9VQ19GSVJNV0FSRV9GQUlMOwogCiAJZ3VjX2ludGVycnVw dHNfcmVsZWFzZShkZXZfcHJpdik7CiAJaTkxNV9ndWNfc3VibWlzc2lvbl9kaXNhYmxlKGRldl9w cml2KTsKQEAgLTU4Nyw4ICs1ODcsOCBAQCBpbnQgaW50ZWxfZ3VjX3NldHVwKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAlyZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgdm9pZCBn dWNfZndfZmV0Y2goc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAotCQkJIHN0cnVj dCBpbnRlbF9ndWNfZncgKmd1Y19mdykKK3ZvaWQgaW50ZWxfdWNfZndfZmV0Y2goc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAorCQkJIHN0cnVjdCBpbnRlbF91Y19mdyAqdWNfZncp CiB7CiAJc3RydWN0IHBjaV9kZXYgKnBkZXYgPSBkZXZfcHJpdi0+ZHJtLnBkZXY7CiAJc3RydWN0 IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKQEAgLTU5NywxNyArNTk3LDE3IEBAIHN0YXRpYyB2 b2lkIGd1Y19md19mZXRjaChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJc2l6 ZV90IHNpemU7CiAJaW50IGVycjsKIAotCURSTV9ERUJVR19EUklWRVIoImJlZm9yZSByZXF1ZXN0 aW5nIGZpcm13YXJlOiBHdUMgZncgZmV0Y2ggc3RhdHVzICVzXG4iLAotCQlpbnRlbF9ndWNfZndf c3RhdHVzX3JlcHIoZ3VjX2Z3LT5ndWNfZndfZmV0Y2hfc3RhdHVzKSk7CisJRFJNX0RFQlVHX0RS SVZFUigiYmVmb3JlIHJlcXVlc3RpbmcgZmlybXdhcmU6IHVDIGZ3IGZldGNoIHN0YXR1cyAlc1xu IiwKKwkJaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIodWNfZnctPmZldGNoX3N0YXR1cykpOwogCi0J ZXJyID0gcmVxdWVzdF9maXJtd2FyZSgmZncsIGd1Y19mdy0+Z3VjX2Z3X3BhdGgsICZwZGV2LT5k ZXYpOworCWVyciA9IHJlcXVlc3RfZmlybXdhcmUoJmZ3LCB1Y19mdy0+dWNfZndfcGF0aCwgJnBk ZXYtPmRldik7CiAJaWYgKGVycikKIAkJZ290byBmYWlsOwogCWlmICghZncpCiAJCWdvdG8gZmFp bDsKIAotCURSTV9ERUJVR19EUklWRVIoImZldGNoIEd1QyBmdyBmcm9tICVzIHN1Y2NlZWRlZCwg ZncgJXBcbiIsCi0JCWd1Y19mdy0+Z3VjX2Z3X3BhdGgsIGZ3KTsKKwlEUk1fREVCVUdfRFJJVkVS KCJmZXRjaCB1QyBmdyBmcm9tICVzIHN1Y2NlZWRlZCwgZncgJXBcbiIsCisJCXVjX2Z3LT51Y19m d19wYXRoLCBmdyk7CiAKIAkvKiBDaGVjayB0aGUgc2l6ZSBvZiB0aGUgYmxvYiBiZWZvcmUgZXhh bWluaW5nIGJ1ZmZlciBjb250ZW50cyAqLwogCWlmIChmdy0+c2l6ZSA8IHNpemVvZihzdHJ1Y3Qg Z3VjX2Nzc19oZWFkZXIpKSB7CkBAIC02MTgsMzYgKzYxOCwzNiBAQCBzdGF0aWMgdm9pZCBndWNf ZndfZmV0Y2goc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCWNzcyA9IChzdHJ1 Y3QgZ3VjX2Nzc19oZWFkZXIgKilmdy0+ZGF0YTsKIAogCS8qIEZpcm13YXJlIGJpdHMgYWx3YXlz IHN0YXJ0IGZyb20gaGVhZGVyICovCi0JZ3VjX2Z3LT5oZWFkZXJfb2Zmc2V0ID0gMDsKLQlndWNf ZnctPmhlYWRlcl9zaXplID0gKGNzcy0+aGVhZGVyX3NpemVfZHcgLSBjc3MtPm1vZHVsdXNfc2l6 ZV9kdyAtCisJdWNfZnctPmhlYWRlcl9vZmZzZXQgPSAwOworCXVjX2Z3LT5oZWFkZXJfc2l6ZSA9 IChjc3MtPmhlYWRlcl9zaXplX2R3IC0gY3NzLT5tb2R1bHVzX3NpemVfZHcgLQogCQljc3MtPmtl eV9zaXplX2R3IC0gY3NzLT5leHBvbmVudF9zaXplX2R3KSAqIHNpemVvZih1MzIpOwogCi0JaWYg KGd1Y19mdy0+aGVhZGVyX3NpemUgIT0gc2l6ZW9mKHN0cnVjdCBndWNfY3NzX2hlYWRlcikpIHsK KwlpZiAodWNfZnctPmhlYWRlcl9zaXplICE9IHNpemVvZihzdHJ1Y3QgZ3VjX2Nzc19oZWFkZXIp KSB7CiAJCURSTV9OT1RFKCJDU1MgaGVhZGVyIGRlZmluaXRpb24gbWlzbWF0Y2hcbiIpOwogCQln b3RvIGZhaWw7CiAJfQogCiAJLyogdGhlbiwgdUNvZGUgKi8KLQlndWNfZnctPnVjb2RlX29mZnNl dCA9IGd1Y19mdy0+aGVhZGVyX29mZnNldCArIGd1Y19mdy0+aGVhZGVyX3NpemU7Ci0JZ3VjX2Z3 LT51Y29kZV9zaXplID0gKGNzcy0+c2l6ZV9kdyAtIGNzcy0+aGVhZGVyX3NpemVfZHcpICogc2l6 ZW9mKHUzMik7CisJdWNfZnctPnVjb2RlX29mZnNldCA9IHVjX2Z3LT5oZWFkZXJfb2Zmc2V0ICsg dWNfZnctPmhlYWRlcl9zaXplOworCXVjX2Z3LT51Y29kZV9zaXplID0gKGNzcy0+c2l6ZV9kdyAt IGNzcy0+aGVhZGVyX3NpemVfZHcpICogc2l6ZW9mKHUzMik7CiAKIAkvKiBub3cgUlNBICovCiAJ aWYgKGNzcy0+a2V5X3NpemVfZHcgIT0gVU9TX1JTQV9TQ1JBVENIX01BWF9DT1VOVCkgewogCQlE Uk1fTk9URSgiUlNBIGtleSBzaXplIGlzIGJhZFxuIik7CiAJCWdvdG8gZmFpbDsKIAl9Ci0JZ3Vj X2Z3LT5yc2Ffb2Zmc2V0ID0gZ3VjX2Z3LT51Y29kZV9vZmZzZXQgKyBndWNfZnctPnVjb2RlX3Np emU7Ci0JZ3VjX2Z3LT5yc2Ffc2l6ZSA9IGNzcy0+a2V5X3NpemVfZHcgKiBzaXplb2YodTMyKTsK Kwl1Y19mdy0+cnNhX29mZnNldCA9IHVjX2Z3LT51Y29kZV9vZmZzZXQgKyB1Y19mdy0+dWNvZGVf c2l6ZTsKKwl1Y19mdy0+cnNhX3NpemUgPSBjc3MtPmtleV9zaXplX2R3ICogc2l6ZW9mKHUzMik7 CiAKIAkvKiBBdCBsZWFzdCwgaXQgc2hvdWxkIGhhdmUgaGVhZGVyLCB1Q29kZSBhbmQgUlNBLiBT aXplIG9mIGFsbCB0aHJlZS4gKi8KLQlzaXplID0gZ3VjX2Z3LT5oZWFkZXJfc2l6ZSArIGd1Y19m dy0+dWNvZGVfc2l6ZSArIGd1Y19mdy0+cnNhX3NpemU7CisJc2l6ZSA9IHVjX2Z3LT5oZWFkZXJf c2l6ZSArIHVjX2Z3LT51Y29kZV9zaXplICsgdWNfZnctPnJzYV9zaXplOwogCWlmIChmdy0+c2l6 ZSA8IHNpemUpIHsKIAkJRFJNX05PVEUoIk1pc3NpbmcgZmlybXdhcmUgY29tcG9uZW50c1xuIik7 CiAJCWdvdG8gZmFpbDsKIAl9CiAKIAkvKiBIZWFkZXIgYW5kIHVDb2RlIHdpbGwgYmUgbG9hZGVk IHRvIFdPUENNLiBTaXplIG9mIHRoZSB0d28uICovCi0Jc2l6ZSA9IGd1Y19mdy0+aGVhZGVyX3Np emUgKyBndWNfZnctPnVjb2RlX3NpemU7CisJc2l6ZSA9IHVjX2Z3LT5oZWFkZXJfc2l6ZSArIHVj X2Z3LT51Y29kZV9zaXplOwogCWlmIChzaXplID4gZ3VjX3dvcGNtX3NpemUoZGV2X3ByaXYpKSB7 CiAJCURSTV9OT1RFKCJGaXJtd2FyZSBpcyB0b28gbGFyZ2UgdG8gZml0IGluIFdPUENNXG4iKTsK IAkJZ290byBmYWlsOwpAQCAtNjU5LDIxICs2NTksMjEgQEAgc3RhdGljIHZvaWQgZ3VjX2Z3X2Zl dGNoKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkgKiBUV08gYnl0ZXMgZWFj aCAoaS5lLiB1MTYpLCBhbHRob3VnaCBhbGwgcG9pbnRlcnMgYW5kIG9mZnNldHMgYXJlIGRlZmlu ZWQKIAkgKiBpbiB0ZXJtcyBvZiBieXRlcyAodTgpLgogCSAqLwotCWd1Y19mdy0+Z3VjX2Z3X21h am9yX2ZvdW5kID0gY3NzLT5ndWNfc3dfdmVyc2lvbiA+PiAxNjsKLQlndWNfZnctPmd1Y19md19t aW5vcl9mb3VuZCA9IGNzcy0+Z3VjX3N3X3ZlcnNpb24gJiAweEZGRkY7Ci0KLQlpZiAoZ3VjX2Z3 LT5ndWNfZndfbWFqb3JfZm91bmQgIT0gZ3VjX2Z3LT5ndWNfZndfbWFqb3Jfd2FudGVkIHx8Ci0J ICAgIGd1Y19mdy0+Z3VjX2Z3X21pbm9yX2ZvdW5kIDwgZ3VjX2Z3LT5ndWNfZndfbWlub3Jfd2Fu dGVkKSB7Ci0JCURSTV9OT1RFKCJHdUMgZmlybXdhcmUgdmVyc2lvbiAlZC4lZCwgcmVxdWlyZWQg JWQuJWRcbiIsCi0JCQlndWNfZnctPmd1Y19md19tYWpvcl9mb3VuZCwgZ3VjX2Z3LT5ndWNfZndf bWlub3JfZm91bmQsCi0JCQlndWNfZnctPmd1Y19md19tYWpvcl93YW50ZWQsIGd1Y19mdy0+Z3Vj X2Z3X21pbm9yX3dhbnRlZCk7CisJdWNfZnctPm1ham9yX3Zlcl9mb3VuZCA9IGNzcy0+Z3VjX3N3 X3ZlcnNpb24gPj4gMTY7CisJdWNfZnctPm1pbm9yX3Zlcl9mb3VuZCA9IGNzcy0+Z3VjX3N3X3Zl cnNpb24gJiAweEZGRkY7CisKKwlpZiAodWNfZnctPm1ham9yX3Zlcl9mb3VuZCAhPSB1Y19mdy0+ bWFqb3JfdmVyX3dhbnRlZCB8fAorCSAgICB1Y19mdy0+bWlub3JfdmVyX2ZvdW5kIDwgdWNfZnct Pm1pbm9yX3Zlcl93YW50ZWQpIHsKKwkJRFJNX05PVEUoInVDIGZpcm13YXJlIHZlcnNpb24gJWQu JWQsIHJlcXVpcmVkICVkLiVkXG4iLAorCQkJdWNfZnctPm1ham9yX3Zlcl9mb3VuZCwgdWNfZnct Pm1pbm9yX3Zlcl9mb3VuZCwKKwkJCXVjX2Z3LT5tYWpvcl92ZXJfd2FudGVkLCB1Y19mdy0+bWlu b3JfdmVyX3dhbnRlZCk7CiAJCWVyciA9IC1FTk9FWEVDOwogCQlnb3RvIGZhaWw7CiAJfQogCiAJ RFJNX0RFQlVHX0RSSVZFUigiZmlybXdhcmUgdmVyc2lvbiAlZC4lZCBPSyAobWluaW11bSAlZC4l ZClcbiIsCi0JCQlndWNfZnctPmd1Y19md19tYWpvcl9mb3VuZCwgZ3VjX2Z3LT5ndWNfZndfbWlu b3JfZm91bmQsCi0JCQlndWNfZnctPmd1Y19md19tYWpvcl93YW50ZWQsIGd1Y19mdy0+Z3VjX2Z3 X21pbm9yX3dhbnRlZCk7CisJCQl1Y19mdy0+bWFqb3JfdmVyX2ZvdW5kLCB1Y19mdy0+bWlub3Jf dmVyX2ZvdW5kLAorCQkJdWNfZnctPm1ham9yX3Zlcl93YW50ZWQsIHVjX2Z3LT5taW5vcl92ZXJf d2FudGVkKTsKIAogCW11dGV4X2xvY2soJmRldl9wcml2LT5kcm0uc3RydWN0X211dGV4KTsKIAlv YmogPSBpOTE1X2dlbV9vYmplY3RfY3JlYXRlX2Zyb21fZGF0YShkZXZfcHJpdiwgZnctPmRhdGEs IGZ3LT5zaXplKTsKQEAgLTY4MywzMSArNjgzLDMxIEBAIHN0YXRpYyB2b2lkIGd1Y19md19mZXRj aChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCWdvdG8gZmFpbDsKIAl9CiAK LQlndWNfZnctPmd1Y19md19vYmogPSBvYmo7Ci0JZ3VjX2Z3LT5ndWNfZndfc2l6ZSA9IGZ3LT5z aXplOworCXVjX2Z3LT51Y19md19vYmogPSBvYmo7CisJdWNfZnctPnNpemUgPSBmdy0+c2l6ZTsK IAotCURSTV9ERUJVR19EUklWRVIoIkd1QyBmdyBmZXRjaCBzdGF0dXMgU1VDQ0VTUywgb2JqICVw XG4iLAotCQkJZ3VjX2Z3LT5ndWNfZndfb2JqKTsKKwlEUk1fREVCVUdfRFJJVkVSKCJ1QyBmdyBm ZXRjaCBzdGF0dXMgU1VDQ0VTUywgb2JqICVwXG4iLAorCQkJdWNfZnctPnVjX2Z3X29iaik7CiAK IAlyZWxlYXNlX2Zpcm13YXJlKGZ3KTsKLQlndWNfZnctPmd1Y19md19mZXRjaF9zdGF0dXMgPSBH VUNfRklSTVdBUkVfU1VDQ0VTUzsKKwl1Y19mdy0+ZmV0Y2hfc3RhdHVzID0gSU5URUxfVUNfRklS TVdBUkVfU1VDQ0VTUzsKIAlyZXR1cm47CiAKIGZhaWw6Ci0JRFJNX1dBUk4oIkZhaWxlZCB0byBm ZXRjaCB2YWxpZCBHdUMgZmlybXdhcmUgZnJvbSAlcyAoZXJyb3IgJWQpXG4iLAotCQkgZ3VjX2Z3 LT5ndWNfZndfcGF0aCwgZXJyKTsKLQlEUk1fREVCVUdfRFJJVkVSKCJHdUMgZncgZmV0Y2ggc3Rh dHVzIEZBSUw7IGVyciAlZCwgZncgJXAsIG9iaiAlcFxuIiwKLQkJZXJyLCBmdywgZ3VjX2Z3LT5n dWNfZndfb2JqKTsKKwlEUk1fV0FSTigiRmFpbGVkIHRvIGZldGNoIHZhbGlkIHVDIGZpcm13YXJl IGZyb20gJXMgKGVycm9yICVkKVxuIiwKKwkJIHVjX2Z3LT51Y19md19wYXRoLCBlcnIpOworCURS TV9ERUJVR19EUklWRVIoInVDIGZ3IGZldGNoIHN0YXR1cyBGQUlMOyBlcnIgJWQsIGZ3ICVwLCBv YmogJXBcbiIsCisJCWVyciwgZncsIHVjX2Z3LT51Y19md19vYmopOwogCiAJbXV0ZXhfbG9jaygm ZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXgpOwotCW9iaiA9IGd1Y19mdy0+Z3VjX2Z3X29iajsK KwlvYmogPSB1Y19mdy0+dWNfZndfb2JqOwogCWlmIChvYmopCiAJCWk5MTVfZ2VtX29iamVjdF9w dXQob2JqKTsKLQlndWNfZnctPmd1Y19md19vYmogPSBOVUxMOworCXVjX2Z3LT51Y19md19vYmog PSBOVUxMOwogCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXgpOwogCiAJ cmVsZWFzZV9maXJtd2FyZShmdyk7CQkvKiBPSyBldmVuIGlmIGZ3IGlzIE5VTEwgKi8KLQlndWNf ZnctPmd1Y19md19mZXRjaF9zdGF0dXMgPSBHVUNfRklSTVdBUkVfRkFJTDsKKwl1Y19mdy0+ZmV0 Y2hfc3RhdHVzID0gSU5URUxfVUNfRklSTVdBUkVfRkFJTDsKIH0KIAogLyoqCkBAIC03MjEsNyAr NzIxLDcgQEAgc3RhdGljIHZvaWQgZ3VjX2Z3X2ZldGNoKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKICAqLwogdm9pZCBpbnRlbF9ndWNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCiB7Ci0Jc3RydWN0IGludGVsX2d1Y19mdyAqZ3VjX2Z3ID0gJmRldl9w cml2LT5ndWMuZ3VjX2Z3OworCXN0cnVjdCBpbnRlbF91Y19mdyAqZ3VjX2Z3ID0gJmRldl9wcml2 LT5ndWMuZnc7CiAJY29uc3QgY2hhciAqZndfcGF0aDsKIAogCWlmICghSEFTX0dVQyhkZXZfcHJp dikpIHsKQEAgLTczOSwyMyArNzM5LDIzIEBAIHZvaWQgaW50ZWxfZ3VjX2luaXQoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCQlmd19wYXRoID0gTlVMTDsKIAl9IGVsc2UgaWYg KElTX1NLWUxBS0UoZGV2X3ByaXYpKSB7CiAJCWZ3X3BhdGggPSBJOTE1X1NLTF9HVUNfVUNPREU7 Ci0JCWd1Y19mdy0+Z3VjX2Z3X21ham9yX3dhbnRlZCA9IFNLTF9GV19NQUpPUjsKLQkJZ3VjX2Z3 LT5ndWNfZndfbWlub3Jfd2FudGVkID0gU0tMX0ZXX01JTk9SOworCQlndWNfZnctPm1ham9yX3Zl cl93YW50ZWQgPSBTS0xfRldfTUFKT1I7CisJCWd1Y19mdy0+bWlub3JfdmVyX3dhbnRlZCA9IFNL TF9GV19NSU5PUjsKIAl9IGVsc2UgaWYgKElTX0JST1hUT04oZGV2X3ByaXYpKSB7CiAJCWZ3X3Bh dGggPSBJOTE1X0JYVF9HVUNfVUNPREU7Ci0JCWd1Y19mdy0+Z3VjX2Z3X21ham9yX3dhbnRlZCA9 IEJYVF9GV19NQUpPUjsKLQkJZ3VjX2Z3LT5ndWNfZndfbWlub3Jfd2FudGVkID0gQlhUX0ZXX01J Tk9SOworCQlndWNfZnctPm1ham9yX3Zlcl93YW50ZWQgPSBCWFRfRldfTUFKT1I7CisJCWd1Y19m dy0+bWlub3JfdmVyX3dhbnRlZCA9IEJYVF9GV19NSU5PUjsKIAl9IGVsc2UgaWYgKElTX0tBQllM QUtFKGRldl9wcml2KSkgewogCQlmd19wYXRoID0gSTkxNV9LQkxfR1VDX1VDT0RFOwotCQlndWNf ZnctPmd1Y19md19tYWpvcl93YW50ZWQgPSBLQkxfRldfTUFKT1I7Ci0JCWd1Y19mdy0+Z3VjX2Z3 X21pbm9yX3dhbnRlZCA9IEtCTF9GV19NSU5PUjsKKwkJZ3VjX2Z3LT5tYWpvcl92ZXJfd2FudGVk ID0gS0JMX0ZXX01BSk9SOworCQlndWNfZnctPm1pbm9yX3Zlcl93YW50ZWQgPSBLQkxfRldfTUlO T1I7CiAJfSBlbHNlIHsKIAkJZndfcGF0aCA9ICIiOwkvKiB1bmtub3duIGRldmljZSAqLwogCX0K IAotCWd1Y19mdy0+Z3VjX2Z3X3BhdGggPSBmd19wYXRoOwotCWd1Y19mdy0+Z3VjX2Z3X2ZldGNo X3N0YXR1cyA9IEdVQ19GSVJNV0FSRV9OT05FOwotCWd1Y19mdy0+Z3VjX2Z3X2xvYWRfc3RhdHVz ID0gR1VDX0ZJUk1XQVJFX05PTkU7CisJZ3VjX2Z3LT51Y19md19wYXRoID0gZndfcGF0aDsKKwln dWNfZnctPmZldGNoX3N0YXR1cyA9IElOVEVMX1VDX0ZJUk1XQVJFX05PTkU7CisJZ3VjX2Z3LT5s b2FkX3N0YXR1cyA9IElOVEVMX1VDX0ZJUk1XQVJFX05PTkU7CiAKIAkvKiBFYXJseSAoYW5kIHNp bGVudCkgcmV0dXJuIGlmIEd1QyBsb2FkaW5nIGlzIGRpc2FibGVkICovCiAJaWYgKCFpOTE1LmVu YWJsZV9ndWNfbG9hZGluZykKQEAgLTc2NSw5ICs3NjUsOSBAQCB2b2lkIGludGVsX2d1Y19pbml0 KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAlpZiAoKmZ3X3BhdGggPT0gJ1ww JykKIAkJcmV0dXJuOwogCi0JZ3VjX2Z3LT5ndWNfZndfZmV0Y2hfc3RhdHVzID0gR1VDX0ZJUk1X QVJFX1BFTkRJTkc7CisJZ3VjX2Z3LT5mZXRjaF9zdGF0dXMgPSBJTlRFTF9VQ19GSVJNV0FSRV9Q RU5ESU5HOwogCURSTV9ERUJVR19EUklWRVIoIkd1QyBmaXJtd2FyZSBwZW5kaW5nLCBwYXRoICVz XG4iLCBmd19wYXRoKTsKLQlndWNfZndfZmV0Y2goZGV2X3ByaXYsIGd1Y19mdyk7CisJaW50ZWxf dWNfZndfZmV0Y2goZGV2X3ByaXYsIGd1Y19mdyk7CiAJLyogc3RhdHVzIG11c3Qgbm93IGJlIEZB SUwgb3IgU1VDQ0VTUyAqLwogfQogCkBAIC03NzcsMTcgKzc3NywxNyBAQCB2b2lkIGludGVsX2d1 Y19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKICAqLwogdm9pZCBpbnRl bF9ndWNfZmluaShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7Ci0Jc3RydWN0 IGludGVsX2d1Y19mdyAqZ3VjX2Z3ID0gJmRldl9wcml2LT5ndWMuZ3VjX2Z3OworCXN0cnVjdCBp bnRlbF91Y19mdyAqZ3VjX2Z3ID0gJmRldl9wcml2LT5ndWMuZnc7CiAKIAltdXRleF9sb2NrKCZk ZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleCk7CiAJZ3VjX2ludGVycnVwdHNfcmVsZWFzZShkZXZf cHJpdik7CiAJaTkxNV9ndWNfc3VibWlzc2lvbl9kaXNhYmxlKGRldl9wcml2KTsKIAlpOTE1X2d1 Y19zdWJtaXNzaW9uX2ZpbmkoZGV2X3ByaXYpOwogCi0JaWYgKGd1Y19mdy0+Z3VjX2Z3X29iaikK LQkJaTkxNV9nZW1fb2JqZWN0X3B1dChndWNfZnctPmd1Y19md19vYmopOwotCWd1Y19mdy0+Z3Vj X2Z3X29iaiA9IE5VTEw7CisJaWYgKGd1Y19mdy0+dWNfZndfb2JqKQorCQlpOTE1X2dlbV9vYmpl Y3RfcHV0KGd1Y19mdy0+dWNfZndfb2JqKTsKKwlndWNfZnctPnVjX2Z3X29iaiA9IE5VTEw7CiAJ bXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleCk7CiAKLQlndWNfZnctPmd1 Y19md19mZXRjaF9zdGF0dXMgPSBHVUNfRklSTVdBUkVfTk9ORTsKKwlndWNfZnctPmZldGNoX3N0 YXR1cyA9IElOVEVMX1VDX0ZJUk1XQVJFX05PTkU7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF91Yy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdWMuaApp bmRleCAzYjFlMzliLi43OTg2ZjIyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF91Yy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VjLmgKQEAgLTkzLDI4 ICs5MywyOCBAQCBzdHJ1Y3QgaTkxNV9ndWNfY2xpZW50IHsKIAl1aW50NjRfdCBzdWJtaXNzaW9u c1tJOTE1X05VTV9FTkdJTkVTXTsKIH07CiAKLWVudW0gaW50ZWxfZ3VjX2Z3X3N0YXR1cyB7Ci0J R1VDX0ZJUk1XQVJFX0ZBSUwgPSAtMSwKLQlHVUNfRklSTVdBUkVfTk9ORSA9IDAsCi0JR1VDX0ZJ Uk1XQVJFX1BFTkRJTkcsCi0JR1VDX0ZJUk1XQVJFX1NVQ0NFU1MKK2VudW0gaW50ZWxfdWNfZndf c3RhdHVzIHsKKwlJTlRFTF9VQ19GSVJNV0FSRV9GQUlMID0gLTEsCisJSU5URUxfVUNfRklSTVdB UkVfTk9ORSA9IDAsCisJSU5URUxfVUNfRklSTVdBUkVfUEVORElORywKKwlJTlRFTF9VQ19GSVJN V0FSRV9TVUNDRVNTCiB9OwogCiAvKgogICogVGhpcyBzdHJ1Y3R1cmUgZW5jYXBzdWxhdGVzIGFs bCB0aGUgZGF0YSBuZWVkZWQgZHVyaW5nIHRoZSBwcm9jZXNzCiAgKiBvZiBmZXRjaGluZywgY2Fj aGluZywgYW5kIGxvYWRpbmcgdGhlIGZpcm13YXJlIGltYWdlIGludG8gdGhlIEd1Qy4KICAqLwot c3RydWN0IGludGVsX2d1Y19mdyB7Ci0JY29uc3QgY2hhciAqCQkJZ3VjX2Z3X3BhdGg7Ci0Jc2l6 ZV90CQkJCWd1Y19md19zaXplOwotCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICoJZ3VjX2Z3 X29iajsKLQllbnVtIGludGVsX2d1Y19md19zdGF0dXMJZ3VjX2Z3X2ZldGNoX3N0YXR1czsKLQll bnVtIGludGVsX2d1Y19md19zdGF0dXMJZ3VjX2Z3X2xvYWRfc3RhdHVzOwotCi0JdWludDE2X3QJ CQlndWNfZndfbWFqb3Jfd2FudGVkOwotCXVpbnQxNl90CQkJZ3VjX2Z3X21pbm9yX3dhbnRlZDsK LQl1aW50MTZfdAkJCWd1Y19md19tYWpvcl9mb3VuZDsKLQl1aW50MTZfdAkJCWd1Y19md19taW5v cl9mb3VuZDsKK3N0cnVjdCBpbnRlbF91Y19mdyB7CisJY29uc3QgY2hhciAqdWNfZndfcGF0aDsK KwlzaXplX3Qgc2l6ZTsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqdWNfZndfb2JqOwor CWVudW0gaW50ZWxfdWNfZndfc3RhdHVzIGZldGNoX3N0YXR1czsKKwllbnVtIGludGVsX3VjX2Z3 X3N0YXR1cyBsb2FkX3N0YXR1czsKKworCXVpbnQxNl90IG1ham9yX3Zlcl93YW50ZWQ7CisJdWlu dDE2X3QgbWlub3JfdmVyX3dhbnRlZDsKKwl1aW50MTZfdCBtYWpvcl92ZXJfZm91bmQ7CisJdWlu dDE2X3QgbWlub3JfdmVyX2ZvdW5kOwogCiAJdWludDMyX3QgaGVhZGVyX3NpemU7CiAJdWludDMy X3QgaGVhZGVyX29mZnNldDsKQEAgLTE0MSw3ICsxNDEsNyBAQCBzdHJ1Y3QgaW50ZWxfZ3VjX2xv ZyB7CiB9OwogCiBzdHJ1Y3QgaW50ZWxfZ3VjIHsKLQlzdHJ1Y3QgaW50ZWxfZ3VjX2Z3IGd1Y19m dzsKKwlzdHJ1Y3QgaW50ZWxfdWNfZncgZnc7CiAJc3RydWN0IGludGVsX2d1Y19sb2cgbG9nOwog CiAJLyogaW50ZWxfZ3VjX3JlY3YgaW50ZXJydXB0IHJlbGF0ZWQgc3RhdGUgKi8KQEAgLTE4Miw3 ICsxODIsNyBAQCBpbnQgaW50ZWxfZ3VjX2xvZ19jb250cm9sKHN0cnVjdCBpbnRlbF9ndWMgKmd1 YywgdTMyIGNvbnRyb2xfdmFsKTsKIGV4dGVybiB2b2lkIGludGVsX2d1Y19pbml0KHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CiBleHRlcm4gaW50IGludGVsX2d1Y19zZXR1cChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwogZXh0ZXJuIHZvaWQgaW50ZWxfZ3Vj X2Zpbmkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKLWV4dGVybiBjb25zdCBj aGFyICppbnRlbF9ndWNfZndfc3RhdHVzX3JlcHIoZW51bSBpbnRlbF9ndWNfZndfc3RhdHVzIHN0 YXR1cyk7CitleHRlcm4gY29uc3QgY2hhciAqaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIoZW51bSBp bnRlbF91Y19md19zdGF0dXMgc3RhdHVzKTsKIGV4dGVybiBpbnQgaW50ZWxfZ3VjX3N1c3BlbmQo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKIGV4dGVybiBpbnQgaW50ZWxfZ3Vj X3Jlc3VtZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwogCi0tIAoyLjcuNAoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4 IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==