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 06:55:48 -0800 Message-ID: <1483541755-647-2-git-send-email-anusha.srivatsa@intel.com> References: <1483541755-647-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 227606E73C for ; Wed, 4 Jan 2017 14:59:09 +0000 (UTC) In-Reply-To: <1483541755-647-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 N2I1YTguLjE5ZmUzOGUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVi dWdmcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCkBAIC0yMzI4 LDcgKzIzMjgsNyBAQCBzdGF0aWMgaW50IGk5MTVfbGxjKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9p ZCAqZGF0YSkKIHN0YXRpYyBpbnQgaTkxNV9ndWNfbG9hZF9zdGF0dXNfaW5mbyhzdHJ1Y3Qgc2Vx X2ZpbGUgKm0sIHZvaWQgKmRhdGEpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gbm9kZV90b19pOTE1KG0tPnByaXZhdGUpOwotCXN0cnVjdCBpbnRlbF9ndWNfZncgKmd1 Y19mdyA9ICZkZXZfcHJpdi0+Z3VjLmd1Y19mdzsKKwlzdHJ1Y3QgaW50ZWxfdWNfZncgKmd1Y19m dyA9ICZkZXZfcHJpdi0+Z3VjLmZ3OwogCXUzMiB0bXAsIGk7CiAKIAlpZiAoIUhBU19HVUNfVUNP REUoZGV2X3ByaXYpKQpAQCAtMjMzNiwxNSArMjMzNiwxNSBAQCBzdGF0aWMgaW50IGk5MTVfZ3Vj X2xvYWRfc3RhdHVzX2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQogCiAJc2Vx X3ByaW50ZihtLCAiR3VDIGZpcm13YXJlIHN0YXR1czpcbiIpOwogCXNlcV9wcmludGYobSwgIlx0 cGF0aDogJXNcbiIsCi0JCWd1Y19mdy0+Z3VjX2Z3X3BhdGgpOworCQlndWNfZnctPnBhdGgpOwog CXNlcV9wcmludGYobSwgIlx0ZmV0Y2g6ICVzXG4iLAotCQlpbnRlbF9ndWNfZndfc3RhdHVzX3Jl cHIoZ3VjX2Z3LT5ndWNfZndfZmV0Y2hfc3RhdHVzKSk7CisJCWludGVsX3VjX2Z3X3N0YXR1c19y ZXByKGd1Y19mdy0+ZmV0Y2hfc3RhdHVzKSk7CiAJc2VxX3ByaW50ZihtLCAiXHRsb2FkOiAlc1xu IiwKLQkJaW50ZWxfZ3VjX2Z3X3N0YXR1c19yZXByKGd1Y19mdy0+Z3VjX2Z3X2xvYWRfc3RhdHVz KSk7CisJCWludGVsX3VjX2Z3X3N0YXR1c19yZXByKGd1Y19mdy0+bG9hZF9zdGF0dXMpKTsKIAlz ZXFfcHJpbnRmKG0sICJcdHZlcnNpb24gd2FudGVkOiAlZC4lZFxuIiwKLQkJZ3VjX2Z3LT5ndWNf ZndfbWFqb3Jfd2FudGVkLCBndWNfZnctPmd1Y19md19taW5vcl93YW50ZWQpOworCQlndWNfZnct Pm1ham9yX3Zlcl93YW50ZWQsIGd1Y19mdy0+bWlub3JfdmVyX3dhbnRlZCk7CiAJc2VxX3ByaW50 ZihtLCAiXHR2ZXJzaW9uIGZvdW5kOiAlZC4lZFxuIiwKLQkJZ3VjX2Z3LT5ndWNfZndfbWFqb3Jf Zm91bmQsIGd1Y19mdy0+Z3VjX2Z3X21pbm9yX2ZvdW5kKTsKKwkJZ3VjX2Z3LT5tYWpvcl92ZXJf Zm91bmQsIGd1Y19mdy0+bWlub3JfdmVyX2ZvdW5kKTsKIAlzZXFfcHJpbnRmKG0sICJcdGhlYWRl cjogb2Zmc2V0IGlzICVkOyBzaXplID0gJWRcbiIsCiAJCWd1Y19mdy0+aGVhZGVyX29mZnNldCwg Z3VjX2Z3LT5oZWFkZXJfc2l6ZSk7CiAJc2VxX3ByaW50ZihtLCAiXHR1Q29kZTogb2Zmc2V0IGlz ICVkOyBzaXplID0gJWRcbiIsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2d1Y19zdWJtaXNzaW9uLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNz aW9uLmMKaW5kZXggMzBlMDEyYi4uNDhiZmQzNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ3VjX3N1Ym1pc3Npb24uYwpAQCAtMTQ4NCw3ICsxNDg0LDcgQEAgaW50IGludGVsX2d1Y19z dXNwZW5kKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAlzdHJ1Y3QgaTkxNV9n ZW1fY29udGV4dCAqY3R4OwogCXUzMiBkYXRhWzNdOwogCi0JaWYgKGd1Yy0+Z3VjX2Z3Lmd1Y19m d19sb2FkX3N0YXR1cyAhPSBHVUNfRklSTVdBUkVfU1VDQ0VTUykKKwlpZiAoZ3VjLT5mdy5sb2Fk X3N0YXR1cyAhPSBJTlRFTF9VQ19GSVJNV0FSRV9TVUNDRVNTKQogCQlyZXR1cm4gMDsKIAogCWdl bjlfZGlzYWJsZV9ndWNfaW50ZXJydXB0cyhkZXZfcHJpdik7CkBAIC0xNTExLDcgKzE1MTEsNyBA QCBpbnQgaW50ZWxfZ3VjX3Jlc3VtZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp CiAJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eDsKIAl1MzIgZGF0YVszXTsKIAotCWlmIChn dWMtPmd1Y19mdy5ndWNfZndfbG9hZF9zdGF0dXMgIT0gR1VDX0ZJUk1XQVJFX1NVQ0NFU1MpCisJ aWYgKGd1Yy0+ZncubG9hZF9zdGF0dXMgIT0gSU5URUxfVUNfRklSTVdBUkVfU1VDQ0VTUykKIAkJ cmV0dXJuIDA7CiAKIAlpZiAoaTkxNS5ndWNfbG9nX2xldmVsID49IDApCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMKaW5kZXggMzVkNTY5MC4uYTU1Y2ZhNyAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2d1Y19sb2FkZXIuYwpAQCAtODEsMTYgKzgxLDE2IEBAIE1PRFVM RV9GSVJNV0FSRShJOTE1X0JYVF9HVUNfVUNPREUpOwogTU9EVUxFX0ZJUk1XQVJFKEk5MTVfS0JM X0dVQ19VQ09ERSk7CiAKIC8qIFVzZXItZnJpZW5kbHkgcmVwcmVzZW50YXRpb24gb2YgYW4gZW51 bSAqLwotY29uc3QgY2hhciAqaW50ZWxfZ3VjX2Z3X3N0YXR1c19yZXByKGVudW0gaW50ZWxfZ3Vj X2Z3X3N0YXR1cyBzdGF0dXMpCitjb25zdCBjaGFyICppbnRlbF91Y19md19zdGF0dXNfcmVwcihl bnVtIGludGVsX3VjX2Z3X3N0YXR1cyBzdGF0dXMpCiB7CiAJc3dpdGNoIChzdGF0dXMpIHsKLQlj YXNlIEdVQ19GSVJNV0FSRV9GQUlMOgorCWNhc2UgSU5URUxfVUNfRklSTVdBUkVfRkFJTDoKIAkJ cmV0dXJuICJGQUlMIjsKLQljYXNlIEdVQ19GSVJNV0FSRV9OT05FOgorCWNhc2UgSU5URUxfVUNf RklSTVdBUkVfTk9ORToKIAkJcmV0dXJuICJOT05FIjsKLQljYXNlIEdVQ19GSVJNV0FSRV9QRU5E SU5HOgorCWNhc2UgSU5URUxfVUNfRklSTVdBUkVfUEVORElORzoKIAkJcmV0dXJuICJQRU5ESU5H IjsKLQljYXNlIEdVQ19GSVJNV0FSRV9TVUNDRVNTOgorCWNhc2UgSU5URUxfVUNfRklSTVdBUkVf U1VDQ0VTUzoKIAkJcmV0dXJuICJTVUNDRVNTIjsKIAlkZWZhdWx0OgogCQlyZXR1cm4gIlVOS05P V04hIjsKQEAgLTI3OCw3ICsyNzgsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgZ3VjX3Vjb2RlX3Jl c3BvbnNlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIHN0YXRpYyBpbnQgZ3Vj X3Vjb2RlX3hmZXJfZG1hKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJCSAg ICAgIHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQogewotCXN0cnVjdCBpbnRlbF9ndWNfZncgKmd1Y19m dyA9ICZkZXZfcHJpdi0+Z3VjLmd1Y19mdzsKKwlzdHJ1Y3QgaW50ZWxfdWNfZncgKmd1Y19mdyA9 ICZkZXZfcHJpdi0+Z3VjLmZ3OwogCXVuc2lnbmVkIGxvbmcgb2Zmc2V0OwogCXN0cnVjdCBzZ190 YWJsZSAqc2cgPSB2bWEtPnBhZ2VzOwogCXUzMiBzdGF0dXMsIHJzYVtVT1NfUlNBX1NDUkFUQ0hf TUFYX0NPVU5UXTsKQEAgLTM1MCwxNyArMzUwLDE3IEBAIHN0YXRpYyB1MzIgZ3VjX3dvcGNtX3Np emUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogICovCiBzdGF0aWMgaW50IGd1 Y191Y29kZV94ZmVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKLQlzdHJ1 Y3QgaW50ZWxfZ3VjX2Z3ICpndWNfZncgPSAmZGV2X3ByaXYtPmd1Yy5ndWNfZnc7CisJc3RydWN0 IGludGVsX3VjX2Z3ICpndWNfZncgPSAmZGV2X3ByaXYtPmd1Yy5mdzsKIAlzdHJ1Y3QgaTkxNV92 bWEgKnZtYTsKIAlpbnQgcmV0OwogCi0JcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3NldF90b19ndHRf ZG9tYWluKGd1Y19mdy0+Z3VjX2Z3X29iaiwgZmFsc2UpOworCXJldCA9IGk5MTVfZ2VtX29iamVj dF9zZXRfdG9fZ3R0X2RvbWFpbihndWNfZnctPm9iaiwgZmFsc2UpOwogCWlmIChyZXQpIHsKIAkJ RFJNX0RFQlVHX0RSSVZFUigic2V0LWRvbWFpbiBmYWlsZWQgJWRcbiIsIHJldCk7CiAJCXJldHVy biByZXQ7CiAJfQogCi0Jdm1hID0gaTkxNV9nZW1fb2JqZWN0X2dndHRfcGluKGd1Y19mdy0+Z3Vj X2Z3X29iaiwgTlVMTCwgMCwgMCwgMCk7CisJdm1hID0gaTkxNV9nZW1fb2JqZWN0X2dndHRfcGlu KGd1Y19mdy0+b2JqLCBOVUxMLCAwLCAwLCAwKTsKIAlpZiAoSVNfRVJSKHZtYSkpIHsKIAkJRFJN X0RFQlVHX0RSSVZFUigicGluIGZhaWxlZCAlZFxuIiwgKGludClQVFJfRVJSKHZtYSkpOwogCQly ZXR1cm4gUFRSX0VSUih2bWEpOwpAQCAtNDUwLDE0ICs0NTAsMTQgQEAgc3RhdGljIGludCBndWNf aHdfcmVzZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogICovCiBpbnQgaW50 ZWxfZ3VjX3NldHVwKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKLQlzdHJ1 Y3QgaW50ZWxfZ3VjX2Z3ICpndWNfZncgPSAmZGV2X3ByaXYtPmd1Yy5ndWNfZnc7Ci0JY29uc3Qg Y2hhciAqZndfcGF0aCA9IGd1Y19mdy0+Z3VjX2Z3X3BhdGg7CisJc3RydWN0IGludGVsX3VjX2Z3 ICpndWNfZncgPSAmZGV2X3ByaXYtPmd1Yy5mdzsKKwljb25zdCBjaGFyICpmd19wYXRoID0gZ3Vj X2Z3LT5wYXRoOwogCWludCByZXRyaWVzLCByZXQsIGVycjsKIAogCURSTV9ERUJVR19EUklWRVIo Ikd1QyBmdyBzdGF0dXM6IHBhdGggJXMsIGZldGNoICVzLCBsb2FkICVzXG4iLAogCQlmd19wYXRo LAotCQlpbnRlbF9ndWNfZndfc3RhdHVzX3JlcHIoZ3VjX2Z3LT5ndWNfZndfZmV0Y2hfc3RhdHVz KSwKLQkJaW50ZWxfZ3VjX2Z3X3N0YXR1c19yZXByKGd1Y19mdy0+Z3VjX2Z3X2xvYWRfc3RhdHVz KSk7CisJCWludGVsX3VjX2Z3X3N0YXR1c19yZXByKGd1Y19mdy0+ZmV0Y2hfc3RhdHVzKSwKKwkJ aW50ZWxfdWNfZndfc3RhdHVzX3JlcHIoZ3VjX2Z3LT5sb2FkX3N0YXR1cykpOwogCiAJLyogTG9h ZGluZyBmb3JiaWRkZW4sIG9yIG5vIGZpcm13YXJlIHRvIGxvYWQ/ICovCiAJaWYgKCFpOTE1LmVu YWJsZV9ndWNfbG9hZGluZykgewpAQCAtNDc1LDEwICs0NzUsMTAgQEAgaW50IGludGVsX2d1Y19z ZXR1cChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJfQogCiAJLyogRmV0Y2gg ZmFpbGVkLCBvciBhbHJlYWR5IGZldGNoZWQgYnV0IGZhaWxlZCB0byBsb2FkPyAqLwotCWlmIChn dWNfZnctPmd1Y19md19mZXRjaF9zdGF0dXMgIT0gR1VDX0ZJUk1XQVJFX1NVQ0NFU1MpIHsKKwlp ZiAoZ3VjX2Z3LT5mZXRjaF9zdGF0dXMgIT0gSU5URUxfVUNfRklSTVdBUkVfU1VDQ0VTUykgewog CQllcnIgPSAtRUlPOwogCQlnb3RvIGZhaWw7Ci0JfSBlbHNlIGlmIChndWNfZnctPmd1Y19md19s b2FkX3N0YXR1cyA9PSBHVUNfRklSTVdBUkVfRkFJTCkgeworCX0gZWxzZSBpZiAoZ3VjX2Z3LT5s b2FkX3N0YXR1cyA9PSBJTlRFTF9VQ19GSVJNV0FSRV9GQUlMKSB7CiAJCWVyciA9IC1FTk9FWEVD OwogCQlnb3RvIGZhaWw7CiAJfQpAQCAtNDg2LDExICs0ODYsMTEgQEAgaW50IGludGVsX2d1Y19z ZXR1cChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJZ3VjX2ludGVycnVwdHNf cmVsZWFzZShkZXZfcHJpdik7CiAJZ2VuOV9yZXNldF9ndWNfaW50ZXJydXB0cyhkZXZfcHJpdik7 CiAKLQlndWNfZnctPmd1Y19md19sb2FkX3N0YXR1cyA9IEdVQ19GSVJNV0FSRV9QRU5ESU5HOwor CWd1Y19mdy0+bG9hZF9zdGF0dXMgPSBJTlRFTF9VQ19GSVJNV0FSRV9QRU5ESU5HOwogCiAJRFJN X0RFQlVHX0RSSVZFUigiR3VDIGZ3IHN0YXR1czogZmV0Y2ggJXMsIGxvYWQgJXNcbiIsCi0JCWlu dGVsX2d1Y19md19zdGF0dXNfcmVwcihndWNfZnctPmd1Y19md19mZXRjaF9zdGF0dXMpLAotCQlp bnRlbF9ndWNfZndfc3RhdHVzX3JlcHIoZ3VjX2Z3LT5ndWNfZndfbG9hZF9zdGF0dXMpKTsKKwkJ aW50ZWxfdWNfZndfc3RhdHVzX3JlcHIoZ3VjX2Z3LT5mZXRjaF9zdGF0dXMpLAorCQlpbnRlbF91 Y19md19zdGF0dXNfcmVwcihndWNfZnctPmxvYWRfc3RhdHVzKSk7CiAKIAllcnIgPSBpOTE1X2d1 Y19zdWJtaXNzaW9uX2luaXQoZGV2X3ByaXYpOwogCWlmIChlcnIpCkBAIC01MjIsMTEgKzUyMiwx MSBAQCBpbnQgaW50ZWxfZ3VjX3NldHVwKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKIAkJCSAicmV0cnkgJWQgbW9yZSB0aW1lKHMpXG4iLCBlcnIsIHJldHJpZXMpOwogCX0KIAot CWd1Y19mdy0+Z3VjX2Z3X2xvYWRfc3RhdHVzID0gR1VDX0ZJUk1XQVJFX1NVQ0NFU1M7CisJZ3Vj X2Z3LT5sb2FkX3N0YXR1cyA9IElOVEVMX1VDX0ZJUk1XQVJFX1NVQ0NFU1M7CiAKIAlEUk1fREVC VUdfRFJJVkVSKCJHdUMgZncgc3RhdHVzOiBmZXRjaCAlcywgbG9hZCAlc1xuIiwKLQkJaW50ZWxf Z3VjX2Z3X3N0YXR1c19yZXByKGd1Y19mdy0+Z3VjX2Z3X2ZldGNoX3N0YXR1cyksCi0JCWludGVs X2d1Y19md19zdGF0dXNfcmVwcihndWNfZnctPmd1Y19md19sb2FkX3N0YXR1cykpOworCQlpbnRl bF91Y19md19zdGF0dXNfcmVwcihndWNfZnctPmZldGNoX3N0YXR1cyksCisJCWludGVsX3VjX2Z3 X3N0YXR1c19yZXByKGd1Y19mdy0+bG9hZF9zdGF0dXMpKTsKIAogCWlmIChpOTE1LmVuYWJsZV9n dWNfc3VibWlzc2lvbikgewogCQlpZiAoaTkxNS5ndWNfbG9nX2xldmVsID49IDApCkBAIC01NDEs OCArNTQxLDggQEAgaW50IGludGVsX2d1Y19zZXR1cChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpCiAJcmV0dXJuIDA7CiAKIGZhaWw6Ci0JaWYgKGd1Y19mdy0+Z3VjX2Z3X2xvYWRf c3RhdHVzID09IEdVQ19GSVJNV0FSRV9QRU5ESU5HKQotCQlndWNfZnctPmd1Y19md19sb2FkX3N0 YXR1cyA9IEdVQ19GSVJNV0FSRV9GQUlMOworCWlmIChndWNfZnctPmxvYWRfc3RhdHVzID09IElO VEVMX1VDX0ZJUk1XQVJFX1BFTkRJTkcpCisJCWd1Y19mdy0+bG9hZF9zdGF0dXMgPSBJTlRFTF9V Q19GSVJNV0FSRV9GQUlMOwogCiAJZ3VjX2ludGVycnVwdHNfcmVsZWFzZShkZXZfcHJpdik7CiAJ aTkxNV9ndWNfc3VibWlzc2lvbl9kaXNhYmxlKGRldl9wcml2KTsKQEAgLTU4Nyw4ICs1ODcsOCBA QCBpbnQgaW50ZWxfZ3VjX3NldHVwKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikK IAlyZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgdm9pZCBndWNfZndfZmV0Y2goc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAotCQkJIHN0cnVjdCBpbnRlbF9ndWNfZncgKmd1Y19mdykK K3ZvaWQgaW50ZWxfdWNfZndfZmV0Y2goc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LAorCQkJIHN0cnVjdCBpbnRlbF91Y19mdyAqdWNfZncpCiB7CiAJc3RydWN0IHBjaV9kZXYgKnBk ZXYgPSBkZXZfcHJpdi0+ZHJtLnBkZXY7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9i ajsKQEAgLTU5NywxNyArNTk3LDE3IEBAIHN0YXRpYyB2b2lkIGd1Y19md19mZXRjaChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJc2l6ZV90IHNpemU7CiAJaW50IGVycjsKIAot CURSTV9ERUJVR19EUklWRVIoImJlZm9yZSByZXF1ZXN0aW5nIGZpcm13YXJlOiBHdUMgZncgZmV0 Y2ggc3RhdHVzICVzXG4iLAotCQlpbnRlbF9ndWNfZndfc3RhdHVzX3JlcHIoZ3VjX2Z3LT5ndWNf ZndfZmV0Y2hfc3RhdHVzKSk7CisJRFJNX0RFQlVHX0RSSVZFUigiYmVmb3JlIHJlcXVlc3Rpbmcg ZmlybXdhcmU6IHVDIGZ3IGZldGNoIHN0YXR1cyAlc1xuIiwKKwkJaW50ZWxfdWNfZndfc3RhdHVz X3JlcHIodWNfZnctPmZldGNoX3N0YXR1cykpOwogCi0JZXJyID0gcmVxdWVzdF9maXJtd2FyZSgm ZncsIGd1Y19mdy0+Z3VjX2Z3X3BhdGgsICZwZGV2LT5kZXYpOworCWVyciA9IHJlcXVlc3RfZmly bXdhcmUoJmZ3LCB1Y19mdy0+cGF0aCwgJnBkZXYtPmRldik7CiAJaWYgKGVycikKIAkJZ290byBm YWlsOwogCWlmICghZncpCiAJCWdvdG8gZmFpbDsKIAotCURSTV9ERUJVR19EUklWRVIoImZldGNo IEd1QyBmdyBmcm9tICVzIHN1Y2NlZWRlZCwgZncgJXBcbiIsCi0JCWd1Y19mdy0+Z3VjX2Z3X3Bh dGgsIGZ3KTsKKwlEUk1fREVCVUdfRFJJVkVSKCJmZXRjaCB1QyBmdyBmcm9tICVzIHN1Y2NlZWRl ZCwgZncgJXBcbiIsCisJCXVjX2Z3LT5wYXRoLCBmdyk7CiAKIAkvKiBDaGVjayB0aGUgc2l6ZSBv ZiB0aGUgYmxvYiBiZWZvcmUgZXhhbWluaW5nIGJ1ZmZlciBjb250ZW50cyAqLwogCWlmIChmdy0+ c2l6ZSA8IHNpemVvZihzdHJ1Y3QgZ3VjX2Nzc19oZWFkZXIpKSB7CkBAIC02MTgsMzYgKzYxOCwz NiBAQCBzdGF0aWMgdm9pZCBndWNfZndfZmV0Y2goc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAogCWNzcyA9IChzdHJ1Y3QgZ3VjX2Nzc19oZWFkZXIgKilmdy0+ZGF0YTsKIAogCS8q IEZpcm13YXJlIGJpdHMgYWx3YXlzIHN0YXJ0IGZyb20gaGVhZGVyICovCi0JZ3VjX2Z3LT5oZWFk ZXJfb2Zmc2V0ID0gMDsKLQlndWNfZnctPmhlYWRlcl9zaXplID0gKGNzcy0+aGVhZGVyX3NpemVf ZHcgLSBjc3MtPm1vZHVsdXNfc2l6ZV9kdyAtCisJdWNfZnctPmhlYWRlcl9vZmZzZXQgPSAwOwor CXVjX2Z3LT5oZWFkZXJfc2l6ZSA9IChjc3MtPmhlYWRlcl9zaXplX2R3IC0gY3NzLT5tb2R1bHVz X3NpemVfZHcgLQogCQljc3MtPmtleV9zaXplX2R3IC0gY3NzLT5leHBvbmVudF9zaXplX2R3KSAq IHNpemVvZih1MzIpOwogCi0JaWYgKGd1Y19mdy0+aGVhZGVyX3NpemUgIT0gc2l6ZW9mKHN0cnVj dCBndWNfY3NzX2hlYWRlcikpIHsKKwlpZiAodWNfZnctPmhlYWRlcl9zaXplICE9IHNpemVvZihz dHJ1Y3QgZ3VjX2Nzc19oZWFkZXIpKSB7CiAJCURSTV9OT1RFKCJDU1MgaGVhZGVyIGRlZmluaXRp b24gbWlzbWF0Y2hcbiIpOwogCQlnb3RvIGZhaWw7CiAJfQogCiAJLyogdGhlbiwgdUNvZGUgKi8K LQlndWNfZnctPnVjb2RlX29mZnNldCA9IGd1Y19mdy0+aGVhZGVyX29mZnNldCArIGd1Y19mdy0+ aGVhZGVyX3NpemU7Ci0JZ3VjX2Z3LT51Y29kZV9zaXplID0gKGNzcy0+c2l6ZV9kdyAtIGNzcy0+ aGVhZGVyX3NpemVfZHcpICogc2l6ZW9mKHUzMik7CisJdWNfZnctPnVjb2RlX29mZnNldCA9IHVj X2Z3LT5oZWFkZXJfb2Zmc2V0ICsgdWNfZnctPmhlYWRlcl9zaXplOworCXVjX2Z3LT51Y29kZV9z aXplID0gKGNzcy0+c2l6ZV9kdyAtIGNzcy0+aGVhZGVyX3NpemVfZHcpICogc2l6ZW9mKHUzMik7 CiAKIAkvKiBub3cgUlNBICovCiAJaWYgKGNzcy0+a2V5X3NpemVfZHcgIT0gVU9TX1JTQV9TQ1JB VENIX01BWF9DT1VOVCkgewogCQlEUk1fTk9URSgiUlNBIGtleSBzaXplIGlzIGJhZFxuIik7CiAJ CWdvdG8gZmFpbDsKIAl9Ci0JZ3VjX2Z3LT5yc2Ffb2Zmc2V0ID0gZ3VjX2Z3LT51Y29kZV9vZmZz ZXQgKyBndWNfZnctPnVjb2RlX3NpemU7Ci0JZ3VjX2Z3LT5yc2Ffc2l6ZSA9IGNzcy0+a2V5X3Np emVfZHcgKiBzaXplb2YodTMyKTsKKwl1Y19mdy0+cnNhX29mZnNldCA9IHVjX2Z3LT51Y29kZV9v ZmZzZXQgKyB1Y19mdy0+dWNvZGVfc2l6ZTsKKwl1Y19mdy0+cnNhX3NpemUgPSBjc3MtPmtleV9z aXplX2R3ICogc2l6ZW9mKHUzMik7CiAKIAkvKiBBdCBsZWFzdCwgaXQgc2hvdWxkIGhhdmUgaGVh ZGVyLCB1Q29kZSBhbmQgUlNBLiBTaXplIG9mIGFsbCB0aHJlZS4gKi8KLQlzaXplID0gZ3VjX2Z3 LT5oZWFkZXJfc2l6ZSArIGd1Y19mdy0+dWNvZGVfc2l6ZSArIGd1Y19mdy0+cnNhX3NpemU7CisJ c2l6ZSA9IHVjX2Z3LT5oZWFkZXJfc2l6ZSArIHVjX2Z3LT51Y29kZV9zaXplICsgdWNfZnctPnJz YV9zaXplOwogCWlmIChmdy0+c2l6ZSA8IHNpemUpIHsKIAkJRFJNX05PVEUoIk1pc3NpbmcgZmly bXdhcmUgY29tcG9uZW50c1xuIik7CiAJCWdvdG8gZmFpbDsKIAl9CiAKIAkvKiBIZWFkZXIgYW5k IHVDb2RlIHdpbGwgYmUgbG9hZGVkIHRvIFdPUENNLiBTaXplIG9mIHRoZSB0d28uICovCi0Jc2l6 ZSA9IGd1Y19mdy0+aGVhZGVyX3NpemUgKyBndWNfZnctPnVjb2RlX3NpemU7CisJc2l6ZSA9IHVj X2Z3LT5oZWFkZXJfc2l6ZSArIHVjX2Z3LT51Y29kZV9zaXplOwogCWlmIChzaXplID4gZ3VjX3dv cGNtX3NpemUoZGV2X3ByaXYpKSB7CiAJCURSTV9OT1RFKCJGaXJtd2FyZSBpcyB0b28gbGFyZ2Ug dG8gZml0IGluIFdPUENNXG4iKTsKIAkJZ290byBmYWlsOwpAQCAtNjU5LDIxICs2NTksMjEgQEAg c3RhdGljIHZvaWQgZ3VjX2Z3X2ZldGNoKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKIAkgKiBUV08gYnl0ZXMgZWFjaCAoaS5lLiB1MTYpLCBhbHRob3VnaCBhbGwgcG9pbnRlcnMg YW5kIG9mZnNldHMgYXJlIGRlZmluZWQKIAkgKiBpbiB0ZXJtcyBvZiBieXRlcyAodTgpLgogCSAq LwotCWd1Y19mdy0+Z3VjX2Z3X21ham9yX2ZvdW5kID0gY3NzLT5ndWNfc3dfdmVyc2lvbiA+PiAx NjsKLQlndWNfZnctPmd1Y19md19taW5vcl9mb3VuZCA9IGNzcy0+Z3VjX3N3X3ZlcnNpb24gJiAw eEZGRkY7Ci0KLQlpZiAoZ3VjX2Z3LT5ndWNfZndfbWFqb3JfZm91bmQgIT0gZ3VjX2Z3LT5ndWNf ZndfbWFqb3Jfd2FudGVkIHx8Ci0JICAgIGd1Y19mdy0+Z3VjX2Z3X21pbm9yX2ZvdW5kIDwgZ3Vj X2Z3LT5ndWNfZndfbWlub3Jfd2FudGVkKSB7Ci0JCURSTV9OT1RFKCJHdUMgZmlybXdhcmUgdmVy c2lvbiAlZC4lZCwgcmVxdWlyZWQgJWQuJWRcbiIsCi0JCQlndWNfZnctPmd1Y19md19tYWpvcl9m b3VuZCwgZ3VjX2Z3LT5ndWNfZndfbWlub3JfZm91bmQsCi0JCQlndWNfZnctPmd1Y19md19tYWpv cl93YW50ZWQsIGd1Y19mdy0+Z3VjX2Z3X21pbm9yX3dhbnRlZCk7CisJdWNfZnctPm1ham9yX3Zl cl9mb3VuZCA9IGNzcy0+Z3VjX3N3X3ZlcnNpb24gPj4gMTY7CisJdWNfZnctPm1pbm9yX3Zlcl9m b3VuZCA9IGNzcy0+Z3VjX3N3X3ZlcnNpb24gJiAweEZGRkY7CisKKwlpZiAodWNfZnctPm1ham9y X3Zlcl9mb3VuZCAhPSB1Y19mdy0+bWFqb3JfdmVyX3dhbnRlZCB8fAorCSAgICB1Y19mdy0+bWlu b3JfdmVyX2ZvdW5kIDwgdWNfZnctPm1pbm9yX3Zlcl93YW50ZWQpIHsKKwkJRFJNX05PVEUoInVD IGZpcm13YXJlIHZlcnNpb24gJWQuJWQsIHJlcXVpcmVkICVkLiVkXG4iLAorCQkJdWNfZnctPm1h am9yX3Zlcl9mb3VuZCwgdWNfZnctPm1pbm9yX3Zlcl9mb3VuZCwKKwkJCXVjX2Z3LT5tYWpvcl92 ZXJfd2FudGVkLCB1Y19mdy0+bWlub3JfdmVyX3dhbnRlZCk7CiAJCWVyciA9IC1FTk9FWEVDOwog CQlnb3RvIGZhaWw7CiAJfQogCiAJRFJNX0RFQlVHX0RSSVZFUigiZmlybXdhcmUgdmVyc2lvbiAl ZC4lZCBPSyAobWluaW11bSAlZC4lZClcbiIsCi0JCQlndWNfZnctPmd1Y19md19tYWpvcl9mb3Vu ZCwgZ3VjX2Z3LT5ndWNfZndfbWlub3JfZm91bmQsCi0JCQlndWNfZnctPmd1Y19md19tYWpvcl93 YW50ZWQsIGd1Y19mdy0+Z3VjX2Z3X21pbm9yX3dhbnRlZCk7CisJCQl1Y19mdy0+bWFqb3JfdmVy X2ZvdW5kLCB1Y19mdy0+bWlub3JfdmVyX2ZvdW5kLAorCQkJdWNfZnctPm1ham9yX3Zlcl93YW50 ZWQsIHVjX2Z3LT5taW5vcl92ZXJfd2FudGVkKTsKIAogCW11dGV4X2xvY2soJmRldl9wcml2LT5k cm0uc3RydWN0X211dGV4KTsKIAlvYmogPSBpOTE1X2dlbV9vYmplY3RfY3JlYXRlX2Zyb21fZGF0 YShkZXZfcHJpdiwgZnctPmRhdGEsIGZ3LT5zaXplKTsKQEAgLTY4MywzMSArNjgzLDMxIEBAIHN0 YXRpYyB2b2lkIGd1Y19md19mZXRjaChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs CiAJCWdvdG8gZmFpbDsKIAl9CiAKLQlndWNfZnctPmd1Y19md19vYmogPSBvYmo7Ci0JZ3VjX2Z3 LT5ndWNfZndfc2l6ZSA9IGZ3LT5zaXplOworCXVjX2Z3LT5vYmogPSBvYmo7CisJdWNfZnctPnNp emUgPSBmdy0+c2l6ZTsKIAotCURSTV9ERUJVR19EUklWRVIoIkd1QyBmdyBmZXRjaCBzdGF0dXMg U1VDQ0VTUywgb2JqICVwXG4iLAotCQkJZ3VjX2Z3LT5ndWNfZndfb2JqKTsKKwlEUk1fREVCVUdf RFJJVkVSKCJ1QyBmdyBmZXRjaCBzdGF0dXMgU1VDQ0VTUywgb2JqICVwXG4iLAorCQkJdWNfZnct Pm9iaik7CiAKIAlyZWxlYXNlX2Zpcm13YXJlKGZ3KTsKLQlndWNfZnctPmd1Y19md19mZXRjaF9z dGF0dXMgPSBHVUNfRklSTVdBUkVfU1VDQ0VTUzsKKwl1Y19mdy0+ZmV0Y2hfc3RhdHVzID0gSU5U RUxfVUNfRklSTVdBUkVfU1VDQ0VTUzsKIAlyZXR1cm47CiAKIGZhaWw6Ci0JRFJNX1dBUk4oIkZh aWxlZCB0byBmZXRjaCB2YWxpZCBHdUMgZmlybXdhcmUgZnJvbSAlcyAoZXJyb3IgJWQpXG4iLAot CQkgZ3VjX2Z3LT5ndWNfZndfcGF0aCwgZXJyKTsKLQlEUk1fREVCVUdfRFJJVkVSKCJHdUMgZncg ZmV0Y2ggc3RhdHVzIEZBSUw7IGVyciAlZCwgZncgJXAsIG9iaiAlcFxuIiwKLQkJZXJyLCBmdywg Z3VjX2Z3LT5ndWNfZndfb2JqKTsKKwlEUk1fV0FSTigiRmFpbGVkIHRvIGZldGNoIHZhbGlkIHVD IGZpcm13YXJlIGZyb20gJXMgKGVycm9yICVkKVxuIiwKKwkJIHVjX2Z3LT5wYXRoLCBlcnIpOwor CURSTV9ERUJVR19EUklWRVIoInVDIGZ3IGZldGNoIHN0YXR1cyBGQUlMOyBlcnIgJWQsIGZ3ICVw LCBvYmogJXBcbiIsCisJCWVyciwgZncsIHVjX2Z3LT5vYmopOwogCiAJbXV0ZXhfbG9jaygmZGV2 X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXgpOwotCW9iaiA9IGd1Y19mdy0+Z3VjX2Z3X29iajsKKwlv YmogPSB1Y19mdy0+b2JqOwogCWlmIChvYmopCiAJCWk5MTVfZ2VtX29iamVjdF9wdXQob2JqKTsK LQlndWNfZnctPmd1Y19md19vYmogPSBOVUxMOworCXVjX2Z3LT5vYmogPSBOVUxMOwogCW11dGV4 X3VubG9jaygmZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXgpOwogCiAJcmVsZWFzZV9maXJtd2Fy ZShmdyk7CQkvKiBPSyBldmVuIGlmIGZ3IGlzIE5VTEwgKi8KLQlndWNfZnctPmd1Y19md19mZXRj aF9zdGF0dXMgPSBHVUNfRklSTVdBUkVfRkFJTDsKKwl1Y19mdy0+ZmV0Y2hfc3RhdHVzID0gSU5U RUxfVUNfRklSTVdBUkVfRkFJTDsKIH0KIAogLyoqCkBAIC03MjEsNyArNzIxLDcgQEAgc3RhdGlj IHZvaWQgZ3VjX2Z3X2ZldGNoKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKICAq Lwogdm9pZCBpbnRlbF9ndWNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp CiB7Ci0Jc3RydWN0IGludGVsX2d1Y19mdyAqZ3VjX2Z3ID0gJmRldl9wcml2LT5ndWMuZ3VjX2Z3 OworCXN0cnVjdCBpbnRlbF91Y19mdyAqZ3VjX2Z3ID0gJmRldl9wcml2LT5ndWMuZnc7CiAJY29u c3QgY2hhciAqZndfcGF0aDsKIAogCWlmICghSEFTX0dVQyhkZXZfcHJpdikpIHsKQEAgLTczOSwy MyArNzM5LDIzIEBAIHZvaWQgaW50ZWxfZ3VjX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQogCQlmd19wYXRoID0gTlVMTDsKIAl9IGVsc2UgaWYgKElTX1NLWUxBS0UoZGV2 X3ByaXYpKSB7CiAJCWZ3X3BhdGggPSBJOTE1X1NLTF9HVUNfVUNPREU7Ci0JCWd1Y19mdy0+Z3Vj X2Z3X21ham9yX3dhbnRlZCA9IFNLTF9GV19NQUpPUjsKLQkJZ3VjX2Z3LT5ndWNfZndfbWlub3Jf d2FudGVkID0gU0tMX0ZXX01JTk9SOworCQlndWNfZnctPm1ham9yX3Zlcl93YW50ZWQgPSBTS0xf RldfTUFKT1I7CisJCWd1Y19mdy0+bWlub3JfdmVyX3dhbnRlZCA9IFNLTF9GV19NSU5PUjsKIAl9 IGVsc2UgaWYgKElTX0JST1hUT04oZGV2X3ByaXYpKSB7CiAJCWZ3X3BhdGggPSBJOTE1X0JYVF9H VUNfVUNPREU7Ci0JCWd1Y19mdy0+Z3VjX2Z3X21ham9yX3dhbnRlZCA9IEJYVF9GV19NQUpPUjsK LQkJZ3VjX2Z3LT5ndWNfZndfbWlub3Jfd2FudGVkID0gQlhUX0ZXX01JTk9SOworCQlndWNfZnct Pm1ham9yX3Zlcl93YW50ZWQgPSBCWFRfRldfTUFKT1I7CisJCWd1Y19mdy0+bWlub3JfdmVyX3dh bnRlZCA9IEJYVF9GV19NSU5PUjsKIAl9IGVsc2UgaWYgKElTX0tBQllMQUtFKGRldl9wcml2KSkg ewogCQlmd19wYXRoID0gSTkxNV9LQkxfR1VDX1VDT0RFOwotCQlndWNfZnctPmd1Y19md19tYWpv cl93YW50ZWQgPSBLQkxfRldfTUFKT1I7Ci0JCWd1Y19mdy0+Z3VjX2Z3X21pbm9yX3dhbnRlZCA9 IEtCTF9GV19NSU5PUjsKKwkJZ3VjX2Z3LT5tYWpvcl92ZXJfd2FudGVkID0gS0JMX0ZXX01BSk9S OworCQlndWNfZnctPm1pbm9yX3Zlcl93YW50ZWQgPSBLQkxfRldfTUlOT1I7CiAJfSBlbHNlIHsK IAkJZndfcGF0aCA9ICIiOwkvKiB1bmtub3duIGRldmljZSAqLwogCX0KIAotCWd1Y19mdy0+Z3Vj X2Z3X3BhdGggPSBmd19wYXRoOwotCWd1Y19mdy0+Z3VjX2Z3X2ZldGNoX3N0YXR1cyA9IEdVQ19G SVJNV0FSRV9OT05FOwotCWd1Y19mdy0+Z3VjX2Z3X2xvYWRfc3RhdHVzID0gR1VDX0ZJUk1XQVJF X05PTkU7CisJZ3VjX2Z3LT5wYXRoID0gZndfcGF0aDsKKwlndWNfZnctPmZldGNoX3N0YXR1cyA9 IElOVEVMX1VDX0ZJUk1XQVJFX05PTkU7CisJZ3VjX2Z3LT5sb2FkX3N0YXR1cyA9IElOVEVMX1VD X0ZJUk1XQVJFX05PTkU7CiAKIAkvKiBFYXJseSAoYW5kIHNpbGVudCkgcmV0dXJuIGlmIEd1QyBs b2FkaW5nIGlzIGRpc2FibGVkICovCiAJaWYgKCFpOTE1LmVuYWJsZV9ndWNfbG9hZGluZykKQEAg LTc2NSw5ICs3NjUsOSBAQCB2b2lkIGludGVsX2d1Y19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKIAlpZiAoKmZ3X3BhdGggPT0gJ1wwJykKIAkJcmV0dXJuOwogCi0JZ3Vj X2Z3LT5ndWNfZndfZmV0Y2hfc3RhdHVzID0gR1VDX0ZJUk1XQVJFX1BFTkRJTkc7CisJZ3VjX2Z3 LT5mZXRjaF9zdGF0dXMgPSBJTlRFTF9VQ19GSVJNV0FSRV9QRU5ESU5HOwogCURSTV9ERUJVR19E UklWRVIoIkd1QyBmaXJtd2FyZSBwZW5kaW5nLCBwYXRoICVzXG4iLCBmd19wYXRoKTsKLQlndWNf ZndfZmV0Y2goZGV2X3ByaXYsIGd1Y19mdyk7CisJaW50ZWxfdWNfZndfZmV0Y2goZGV2X3ByaXYs IGd1Y19mdyk7CiAJLyogc3RhdHVzIG11c3Qgbm93IGJlIEZBSUwgb3IgU1VDQ0VTUyAqLwogfQog CkBAIC03NzcsMTcgKzc3NywxNyBAQCB2b2lkIGludGVsX2d1Y19pbml0KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKICAqLwogdm9pZCBpbnRlbF9ndWNfZmluaShzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7Ci0Jc3RydWN0IGludGVsX2d1Y19mdyAqZ3VjX2Z3 ID0gJmRldl9wcml2LT5ndWMuZ3VjX2Z3OworCXN0cnVjdCBpbnRlbF91Y19mdyAqZ3VjX2Z3ID0g JmRldl9wcml2LT5ndWMuZnc7CiAKIAltdXRleF9sb2NrKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9t dXRleCk7CiAJZ3VjX2ludGVycnVwdHNfcmVsZWFzZShkZXZfcHJpdik7CiAJaTkxNV9ndWNfc3Vi bWlzc2lvbl9kaXNhYmxlKGRldl9wcml2KTsKIAlpOTE1X2d1Y19zdWJtaXNzaW9uX2ZpbmkoZGV2 X3ByaXYpOwogCi0JaWYgKGd1Y19mdy0+Z3VjX2Z3X29iaikKLQkJaTkxNV9nZW1fb2JqZWN0X3B1 dChndWNfZnctPmd1Y19md19vYmopOwotCWd1Y19mdy0+Z3VjX2Z3X29iaiA9IE5VTEw7CisJaWYg KGd1Y19mdy0+b2JqKQorCQlpOTE1X2dlbV9vYmplY3RfcHV0KGd1Y19mdy0+b2JqKTsKKwlndWNf ZnctPm9iaiA9IE5VTEw7CiAJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRl eCk7CiAKLQlndWNfZnctPmd1Y19md19mZXRjaF9zdGF0dXMgPSBHVUNfRklSTVdBUkVfTk9ORTsK KwlndWNfZnctPmZldGNoX3N0YXR1cyA9IElOVEVMX1VDX0ZJUk1XQVJFX05PTkU7CiB9CmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91Yy5oIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfdWMuaAppbmRleCAzYjFlMzliLi4yNjM0YjU3IDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91Yy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3VjLmgKQEAgLTkzLDI4ICs5MywyOCBAQCBzdHJ1Y3QgaTkxNV9ndWNfY2xpZW50IHsKIAl1 aW50NjRfdCBzdWJtaXNzaW9uc1tJOTE1X05VTV9FTkdJTkVTXTsKIH07CiAKLWVudW0gaW50ZWxf Z3VjX2Z3X3N0YXR1cyB7Ci0JR1VDX0ZJUk1XQVJFX0ZBSUwgPSAtMSwKLQlHVUNfRklSTVdBUkVf Tk9ORSA9IDAsCi0JR1VDX0ZJUk1XQVJFX1BFTkRJTkcsCi0JR1VDX0ZJUk1XQVJFX1NVQ0NFU1MK K2VudW0gaW50ZWxfdWNfZndfc3RhdHVzIHsKKwlJTlRFTF9VQ19GSVJNV0FSRV9GQUlMID0gLTEs CisJSU5URUxfVUNfRklSTVdBUkVfTk9ORSA9IDAsCisJSU5URUxfVUNfRklSTVdBUkVfUEVORElO RywKKwlJTlRFTF9VQ19GSVJNV0FSRV9TVUNDRVNTCiB9OwogCiAvKgogICogVGhpcyBzdHJ1Y3R1 cmUgZW5jYXBzdWxhdGVzIGFsbCB0aGUgZGF0YSBuZWVkZWQgZHVyaW5nIHRoZSBwcm9jZXNzCiAg KiBvZiBmZXRjaGluZywgY2FjaGluZywgYW5kIGxvYWRpbmcgdGhlIGZpcm13YXJlIGltYWdlIGlu dG8gdGhlIEd1Qy4KICAqLwotc3RydWN0IGludGVsX2d1Y19mdyB7Ci0JY29uc3QgY2hhciAqCQkJ Z3VjX2Z3X3BhdGg7Ci0Jc2l6ZV90CQkJCWd1Y19md19zaXplOwotCXN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0ICoJZ3VjX2Z3X29iajsKLQllbnVtIGludGVsX2d1Y19md19zdGF0dXMJZ3VjX2Z3 X2ZldGNoX3N0YXR1czsKLQllbnVtIGludGVsX2d1Y19md19zdGF0dXMJZ3VjX2Z3X2xvYWRfc3Rh dHVzOwotCi0JdWludDE2X3QJCQlndWNfZndfbWFqb3Jfd2FudGVkOwotCXVpbnQxNl90CQkJZ3Vj X2Z3X21pbm9yX3dhbnRlZDsKLQl1aW50MTZfdAkJCWd1Y19md19tYWpvcl9mb3VuZDsKLQl1aW50 MTZfdAkJCWd1Y19md19taW5vcl9mb3VuZDsKK3N0cnVjdCBpbnRlbF91Y19mdyB7CisJY29uc3Qg Y2hhciAqcGF0aDsKKwlzaXplX3Qgc2l6ZTsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq b2JqOworCWVudW0gaW50ZWxfdWNfZndfc3RhdHVzIGZldGNoX3N0YXR1czsKKwllbnVtIGludGVs X3VjX2Z3X3N0YXR1cyBsb2FkX3N0YXR1czsKKworCXVpbnQxNl90IG1ham9yX3Zlcl93YW50ZWQ7 CisJdWludDE2X3QgbWlub3JfdmVyX3dhbnRlZDsKKwl1aW50MTZfdCBtYWpvcl92ZXJfZm91bmQ7 CisJdWludDE2X3QgbWlub3JfdmVyX2ZvdW5kOwogCiAJdWludDMyX3QgaGVhZGVyX3NpemU7CiAJ dWludDMyX3QgaGVhZGVyX29mZnNldDsKQEAgLTE0MSw3ICsxNDEsNyBAQCBzdHJ1Y3QgaW50ZWxf Z3VjX2xvZyB7CiB9OwogCiBzdHJ1Y3QgaW50ZWxfZ3VjIHsKLQlzdHJ1Y3QgaW50ZWxfZ3VjX2Z3 IGd1Y19mdzsKKwlzdHJ1Y3QgaW50ZWxfdWNfZncgZnc7CiAJc3RydWN0IGludGVsX2d1Y19sb2cg bG9nOwogCiAJLyogaW50ZWxfZ3VjX3JlY3YgaW50ZXJydXB0IHJlbGF0ZWQgc3RhdGUgKi8KQEAg LTE4Miw3ICsxODIsNyBAQCBpbnQgaW50ZWxfZ3VjX2xvZ19jb250cm9sKHN0cnVjdCBpbnRlbF9n dWMgKmd1YywgdTMyIGNvbnRyb2xfdmFsKTsKIGV4dGVybiB2b2lkIGludGVsX2d1Y19pbml0KHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CiBleHRlcm4gaW50IGludGVsX2d1Y19z ZXR1cChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwogZXh0ZXJuIHZvaWQgaW50 ZWxfZ3VjX2Zpbmkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKLWV4dGVybiBj b25zdCBjaGFyICppbnRlbF9ndWNfZndfc3RhdHVzX3JlcHIoZW51bSBpbnRlbF9ndWNfZndfc3Rh dHVzIHN0YXR1cyk7CitleHRlcm4gY29uc3QgY2hhciAqaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIo ZW51bSBpbnRlbF91Y19md19zdGF0dXMgc3RhdHVzKTsKIGV4dGVybiBpbnQgaW50ZWxfZ3VjX3N1 c3BlbmQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKIGV4dGVybiBpbnQgaW50 ZWxfZ3VjX3Jlc3VtZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwogCi0tIAoy LjcuNAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50 ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBz Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==