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: Thu, 22 Dec 2016 15:12:17 -0800 Message-ID: <1482448344-6505-2-git-send-email-anusha.srivatsa@intel.com> References: <1482448344-6505-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 mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id DBE536F3CE for ; Thu, 22 Dec 2016 23:12:30 +0000 (UTC) In-Reply-To: <1482448344-6505-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 cmUgY29tbWVudGVkIGFuZCBubyBsb25nZXIKcmVxdWlyZWQuCgpTaWduZWQtb2ZmLWJ5OiBBbnVz aGEgU3JpdmF0c2EgPGFudXNoYS5zcml2YXRzYUBpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IEFs ZXggRGFpIDx5dS5kYWlAaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBQZXRlciBBbnRvaW5lIDxw ZXRlci5hbnRvaW5lQGludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rl YnVnZnMuYyAgICAgICAgfCAgMTIgKy0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19z dWJtaXNzaW9uLmMgfCAgIDQgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19sb2Fk ZXIuYyAgICB8IDE1NiArKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQogZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfdWMuaCAgICAgICAgICAgIHwgIDM2ICsrKy0tLS0KIDQgZmlsZXMgY2hh bmdlZCwgMTA0IGluc2VydGlvbnMoKyksIDEwNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZGVidWdmcy5jCmluZGV4IGE1NTUyYTEuLjBhM2M1NzUgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZGVidWdmcy5jCkBAIC0yMzI4LDcgKzIzMjgsNyBAQCBzdGF0aWMgaW50IGk5MTVfbGxj KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKIHN0YXRpYyBpbnQgaTkxNV9ndWNfbG9h ZF9zdGF0dXNfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCiB7CiAJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gbm9kZV90b19pOTE1KG0tPnByaXZhdGUpOwot CXN0cnVjdCBpbnRlbF9ndWNfZncgKmd1Y19mdyA9ICZkZXZfcHJpdi0+Z3VjLmd1Y19mdzsKKwlz dHJ1Y3QgaW50ZWxfdWNfZncgKmd1Y19mdyA9ICZkZXZfcHJpdi0+Z3VjLmZ3OwogCXUzMiB0bXAs IGk7CiAKIAlpZiAoIUhBU19HVUNfVUNPREUoZGV2X3ByaXYpKQpAQCAtMjMzNiwxNSArMjMzNiwx NSBAQCBzdGF0aWMgaW50IGk5MTVfZ3VjX2xvYWRfc3RhdHVzX2luZm8oc3RydWN0IHNlcV9maWxl ICptLCB2b2lkICpkYXRhKQogCiAJc2VxX3ByaW50ZihtLCAiR3VDIGZpcm13YXJlIHN0YXR1czpc biIpOwogCXNlcV9wcmludGYobSwgIlx0cGF0aDogJXNcbiIsCi0JCWd1Y19mdy0+Z3VjX2Z3X3Bh dGgpOworCQlndWNfZnctPnVjX2Z3X3BhdGgpOwogCXNlcV9wcmludGYobSwgIlx0ZmV0Y2g6ICVz XG4iLAotCQlpbnRlbF9ndWNfZndfc3RhdHVzX3JlcHIoZ3VjX2Z3LT5ndWNfZndfZmV0Y2hfc3Rh dHVzKSk7CisJCWludGVsX3VjX2Z3X3N0YXR1c19yZXByKGd1Y19mdy0+ZmV0Y2hfc3RhdHVzKSk7 CiAJc2VxX3ByaW50ZihtLCAiXHRsb2FkOiAlc1xuIiwKLQkJaW50ZWxfZ3VjX2Z3X3N0YXR1c19y ZXByKGd1Y19mdy0+Z3VjX2Z3X2xvYWRfc3RhdHVzKSk7CisJCWludGVsX3VjX2Z3X3N0YXR1c19y ZXByKGd1Y19mdy0+bG9hZF9zdGF0dXMpKTsKIAlzZXFfcHJpbnRmKG0sICJcdHZlcnNpb24gd2Fu dGVkOiAlZC4lZFxuIiwKLQkJZ3VjX2Z3LT5ndWNfZndfbWFqb3Jfd2FudGVkLCBndWNfZnctPmd1 Y19md19taW5vcl93YW50ZWQpOworCQlndWNfZnctPm1ham9yX3Zlcl93YW50ZWQsIGd1Y19mdy0+ bWlub3JfdmVyX3dhbnRlZCk7CiAJc2VxX3ByaW50ZihtLCAiXHR2ZXJzaW9uIGZvdW5kOiAlZC4l ZFxuIiwKLQkJZ3VjX2Z3LT5ndWNfZndfbWFqb3JfZm91bmQsIGd1Y19mdy0+Z3VjX2Z3X21pbm9y X2ZvdW5kKTsKKwkJZ3VjX2Z3LT5tYWpvcl92ZXJfZm91bmQsIGd1Y19mdy0+bWlub3JfdmVyX2Zv dW5kKTsKIAlzZXFfcHJpbnRmKG0sICJcdGhlYWRlcjogb2Zmc2V0IGlzICVkOyBzaXplID0gJWRc biIsCiAJCWd1Y19mdy0+aGVhZGVyX29mZnNldCwgZ3VjX2Z3LT5oZWFkZXJfc2l6ZSk7CiAJc2Vx X3ByaW50ZihtLCAiXHR1Q29kZTogb2Zmc2V0IGlzICVkOyBzaXplID0gJWRcbiIsCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMKaW5kZXggM2UyMGZlMi4uNmUyZDQw MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYwpAQCAtMTQ4 NCw3ICsxNDg0LDcgQEAgaW50IGludGVsX2d1Y19zdXNwZW5kKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKIAlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4OwogCXUzMiBkYXRh WzNdOwogCi0JaWYgKGd1Yy0+Z3VjX2Z3Lmd1Y19md19sb2FkX3N0YXR1cyAhPSBHVUNfRklSTVdB UkVfU1VDQ0VTUykKKwlpZiAoZ3VjLT5mdy5sb2FkX3N0YXR1cyAhPSBJTlRFTF9VQ19GSVJNV0FS RV9TVUNDRVNTKQogCQlyZXR1cm4gMDsKIAogCWdlbjlfZGlzYWJsZV9ndWNfaW50ZXJydXB0cyhk ZXZfcHJpdik7CkBAIC0xNTExLDcgKzE1MTEsNyBAQCBpbnQgaW50ZWxfZ3VjX3Jlc3VtZShzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQg KmN0eDsKIAl1MzIgZGF0YVszXTsKIAotCWlmIChndWMtPmd1Y19mdy5ndWNfZndfbG9hZF9zdGF0 dXMgIT0gR1VDX0ZJUk1XQVJFX1NVQ0NFU1MpCisJaWYgKGd1Yy0+ZncubG9hZF9zdGF0dXMgIT0g SU5URUxfVUNfRklSTVdBUkVfU1VDQ0VTUykKIAkJcmV0dXJuIDA7CiAKIAlpZiAoaTkxNS5ndWNf bG9nX2xldmVsID49IDApCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9n dWNfbG9hZGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMKaW5k ZXggMjFkYjY5Ny4uZmZlNTNkZDcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2d1Y19sb2FkZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9h ZGVyLmMKQEAgLTgxLDE2ICs4MSwxNiBAQCBNT0RVTEVfRklSTVdBUkUoSTkxNV9CWFRfR1VDX1VD T0RFKTsKIE1PRFVMRV9GSVJNV0FSRShJOTE1X0tCTF9HVUNfVUNPREUpOwogCiAvKiBVc2VyLWZy aWVuZGx5IHJlcHJlc2VudGF0aW9uIG9mIGFuIGVudW0gKi8KLWNvbnN0IGNoYXIgKmludGVsX2d1 Y19md19zdGF0dXNfcmVwcihlbnVtIGludGVsX2d1Y19md19zdGF0dXMgc3RhdHVzKQorY29uc3Qg Y2hhciAqaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIoZW51bSBpbnRlbF91Y19md19zdGF0dXMgc3Rh dHVzKQogewogCXN3aXRjaCAoc3RhdHVzKSB7Ci0JY2FzZSBHVUNfRklSTVdBUkVfRkFJTDoKKwlj YXNlIElOVEVMX1VDX0ZJUk1XQVJFX0ZBSUw6CiAJCXJldHVybiAiRkFJTCI7Ci0JY2FzZSBHVUNf RklSTVdBUkVfTk9ORToKKwljYXNlIElOVEVMX1VDX0ZJUk1XQVJFX05PTkU6CiAJCXJldHVybiAi Tk9ORSI7Ci0JY2FzZSBHVUNfRklSTVdBUkVfUEVORElORzoKKwljYXNlIElOVEVMX1VDX0ZJUk1X QVJFX1BFTkRJTkc6CiAJCXJldHVybiAiUEVORElORyI7Ci0JY2FzZSBHVUNfRklSTVdBUkVfU1VD Q0VTUzoKKwljYXNlIElOVEVMX1VDX0ZJUk1XQVJFX1NVQ0NFU1M6CiAJCXJldHVybiAiU1VDQ0VT UyI7CiAJZGVmYXVsdDoKIAkJcmV0dXJuICJVTktOT1dOISI7CkBAIC0yNzgsNyArMjc4LDcgQEAg c3RhdGljIGlubGluZSBib29sIGd1Y191Y29kZV9yZXNwb25zZShzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCiBzdGF0aWMgaW50IGd1Y191Y29kZV94ZmVyX2RtYShzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQkgICAgICBzdHJ1Y3QgaTkxNV92bWEgKnZtYSkK IHsKLQlzdHJ1Y3QgaW50ZWxfZ3VjX2Z3ICpndWNfZncgPSAmZGV2X3ByaXYtPmd1Yy5ndWNfZnc7 CisJc3RydWN0IGludGVsX3VjX2Z3ICpndWNfZncgPSAmZGV2X3ByaXYtPmd1Yy5mdzsKIAl1bnNp Z25lZCBsb25nIG9mZnNldDsKIAlzdHJ1Y3Qgc2dfdGFibGUgKnNnID0gdm1hLT5wYWdlczsKIAl1 MzIgc3RhdHVzLCByc2FbVU9TX1JTQV9TQ1JBVENIX01BWF9DT1VOVF07CkBAIC0zNTAsMTcgKzM1 MCwxNyBAQCBzdGF0aWMgdTMyIGd1Y193b3BjbV9zaXplKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKICAqLwogc3RhdGljIGludCBndWNfdWNvZGVfeGZlcihzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7Ci0Jc3RydWN0IGludGVsX2d1Y19mdyAqZ3VjX2Z3ID0g JmRldl9wcml2LT5ndWMuZ3VjX2Z3OworCXN0cnVjdCBpbnRlbF91Y19mdyAqZ3VjX2Z3ID0gJmRl dl9wcml2LT5ndWMuZnc7CiAJc3RydWN0IGk5MTVfdm1hICp2bWE7CiAJaW50IHJldDsKIAotCXJl dCA9IGk5MTVfZ2VtX29iamVjdF9zZXRfdG9fZ3R0X2RvbWFpbihndWNfZnctPmd1Y19md19vYmos IGZhbHNlKTsKKwlyZXQgPSBpOTE1X2dlbV9vYmplY3Rfc2V0X3RvX2d0dF9kb21haW4oZ3VjX2Z3 LT51Y19md19vYmosIGZhbHNlKTsKIAlpZiAocmV0KSB7CiAJCURSTV9ERUJVR19EUklWRVIoInNl dC1kb21haW4gZmFpbGVkICVkXG4iLCByZXQpOwogCQlyZXR1cm4gcmV0OwogCX0KIAotCXZtYSA9 IGk5MTVfZ2VtX29iamVjdF9nZ3R0X3BpbihndWNfZnctPmd1Y19md19vYmosIE5VTEwsIDAsIDAs IDApOworCXZtYSA9IGk5MTVfZ2VtX29iamVjdF9nZ3R0X3BpbihndWNfZnctPnVjX2Z3X29iaiwg TlVMTCwgMCwgMCwgMCk7CiAJaWYgKElTX0VSUih2bWEpKSB7CiAJCURSTV9ERUJVR19EUklWRVIo InBpbiBmYWlsZWQgJWRcbiIsIChpbnQpUFRSX0VSUih2bWEpKTsKIAkJcmV0dXJuIFBUUl9FUlIo dm1hKTsKQEAgLTQ1MCwxNCArNDUwLDE0IEBAIHN0YXRpYyBpbnQgZ3VjX2h3X3Jlc2V0KHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKICAqLwogaW50IGludGVsX2d1Y19zZXR1cChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7Ci0Jc3RydWN0IGludGVsX2d1Y19m dyAqZ3VjX2Z3ID0gJmRldl9wcml2LT5ndWMuZ3VjX2Z3OwotCWNvbnN0IGNoYXIgKmZ3X3BhdGgg PSBndWNfZnctPmd1Y19md19wYXRoOworCXN0cnVjdCBpbnRlbF91Y19mdyAqZ3VjX2Z3ID0gJmRl dl9wcml2LT5ndWMuZnc7CisJY29uc3QgY2hhciAqZndfcGF0aCA9IGd1Y19mdy0+dWNfZndfcGF0 aDsKIAlpbnQgcmV0cmllcywgcmV0LCBlcnI7CiAKIAlEUk1fREVCVUdfRFJJVkVSKCJHdUMgZncg c3RhdHVzOiBwYXRoICVzLCBmZXRjaCAlcywgbG9hZCAlc1xuIiwKIAkJZndfcGF0aCwKLQkJaW50 ZWxfZ3VjX2Z3X3N0YXR1c19yZXByKGd1Y19mdy0+Z3VjX2Z3X2ZldGNoX3N0YXR1cyksCi0JCWlu dGVsX2d1Y19md19zdGF0dXNfcmVwcihndWNfZnctPmd1Y19md19sb2FkX3N0YXR1cykpOworCQlp bnRlbF91Y19md19zdGF0dXNfcmVwcihndWNfZnctPmZldGNoX3N0YXR1cyksCisJCWludGVsX3Vj X2Z3X3N0YXR1c19yZXByKGd1Y19mdy0+bG9hZF9zdGF0dXMpKTsKIAogCS8qIExvYWRpbmcgZm9y YmlkZGVuLCBvciBubyBmaXJtd2FyZSB0byBsb2FkPyAqLwogCWlmICghaTkxNS5lbmFibGVfZ3Vj X2xvYWRpbmcpIHsKQEAgLTQ3NSwxMCArNDc1LDEwIEBAIGludCBpbnRlbF9ndWNfc2V0dXAoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCX0KIAogCS8qIEZldGNoIGZhaWxlZCwg b3IgYWxyZWFkeSBmZXRjaGVkIGJ1dCBmYWlsZWQgdG8gbG9hZD8gKi8KLQlpZiAoZ3VjX2Z3LT5n dWNfZndfZmV0Y2hfc3RhdHVzICE9IEdVQ19GSVJNV0FSRV9TVUNDRVNTKSB7CisJaWYgKGd1Y19m dy0+ZmV0Y2hfc3RhdHVzICE9IElOVEVMX1VDX0ZJUk1XQVJFX1NVQ0NFU1MpIHsKIAkJZXJyID0g LUVJTzsKIAkJZ290byBmYWlsOwotCX0gZWxzZSBpZiAoZ3VjX2Z3LT5ndWNfZndfbG9hZF9zdGF0 dXMgPT0gR1VDX0ZJUk1XQVJFX0ZBSUwpIHsKKwl9IGVsc2UgaWYgKGd1Y19mdy0+bG9hZF9zdGF0 dXMgPT0gSU5URUxfVUNfRklSTVdBUkVfRkFJTCkgewogCQllcnIgPSAtRU5PRVhFQzsKIAkJZ290 byBmYWlsOwogCX0KQEAgLTQ4NiwxMSArNDg2LDExIEBAIGludCBpbnRlbF9ndWNfc2V0dXAoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCWd1Y19pbnRlcnJ1cHRzX3JlbGVhc2Uo ZGV2X3ByaXYpOwogCWdlbjlfcmVzZXRfZ3VjX2ludGVycnVwdHMoZGV2X3ByaXYpOwogCi0JZ3Vj X2Z3LT5ndWNfZndfbG9hZF9zdGF0dXMgPSBHVUNfRklSTVdBUkVfUEVORElORzsKKwlndWNfZnct PmxvYWRfc3RhdHVzID0gSU5URUxfVUNfRklSTVdBUkVfUEVORElORzsKIAogCURSTV9ERUJVR19E UklWRVIoIkd1QyBmdyBzdGF0dXM6IGZldGNoICVzLCBsb2FkICVzXG4iLAotCQlpbnRlbF9ndWNf Zndfc3RhdHVzX3JlcHIoZ3VjX2Z3LT5ndWNfZndfZmV0Y2hfc3RhdHVzKSwKLQkJaW50ZWxfZ3Vj X2Z3X3N0YXR1c19yZXByKGd1Y19mdy0+Z3VjX2Z3X2xvYWRfc3RhdHVzKSk7CisJCWludGVsX3Vj X2Z3X3N0YXR1c19yZXByKGd1Y19mdy0+ZmV0Y2hfc3RhdHVzKSwKKwkJaW50ZWxfdWNfZndfc3Rh dHVzX3JlcHIoZ3VjX2Z3LT5sb2FkX3N0YXR1cykpOwogCiAJZXJyID0gaTkxNV9ndWNfc3VibWlz c2lvbl9pbml0KGRldl9wcml2KTsKIAlpZiAoZXJyKQpAQCAtNTIyLDExICs1MjIsMTEgQEAgaW50 IGludGVsX2d1Y19zZXR1cChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCQkg InJldHJ5ICVkIG1vcmUgdGltZShzKVxuIiwgZXJyLCByZXRyaWVzKTsKIAl9CiAKLQlndWNfZnct Pmd1Y19md19sb2FkX3N0YXR1cyA9IEdVQ19GSVJNV0FSRV9TVUNDRVNTOworCWd1Y19mdy0+bG9h ZF9zdGF0dXMgPSBJTlRFTF9VQ19GSVJNV0FSRV9TVUNDRVNTOwogCiAJRFJNX0RFQlVHX0RSSVZF UigiR3VDIGZ3IHN0YXR1czogZmV0Y2ggJXMsIGxvYWQgJXNcbiIsCi0JCWludGVsX2d1Y19md19z dGF0dXNfcmVwcihndWNfZnctPmd1Y19md19mZXRjaF9zdGF0dXMpLAotCQlpbnRlbF9ndWNfZndf c3RhdHVzX3JlcHIoZ3VjX2Z3LT5ndWNfZndfbG9hZF9zdGF0dXMpKTsKKwkJaW50ZWxfdWNfZndf c3RhdHVzX3JlcHIoZ3VjX2Z3LT5mZXRjaF9zdGF0dXMpLAorCQlpbnRlbF91Y19md19zdGF0dXNf cmVwcihndWNfZnctPmxvYWRfc3RhdHVzKSk7CiAKIAlpZiAoaTkxNS5lbmFibGVfZ3VjX3N1Ym1p c3Npb24pIHsKIAkJaWYgKGk5MTUuZ3VjX2xvZ19sZXZlbCA+PSAwKQpAQCAtNTQxLDggKzU0MSw4 IEBAIGludCBpbnRlbF9ndWNfc2V0dXAoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQogCXJldHVybiAwOwogCiBmYWlsOgotCWlmIChndWNfZnctPmd1Y19md19sb2FkX3N0YXR1cyA9 PSBHVUNfRklSTVdBUkVfUEVORElORykKLQkJZ3VjX2Z3LT5ndWNfZndfbG9hZF9zdGF0dXMgPSBH VUNfRklSTVdBUkVfRkFJTDsKKwlpZiAoZ3VjX2Z3LT5sb2FkX3N0YXR1cyA9PSBJTlRFTF9VQ19G SVJNV0FSRV9QRU5ESU5HKQorCQlndWNfZnctPmxvYWRfc3RhdHVzID0gSU5URUxfVUNfRklSTVdB UkVfRkFJTDsKIAogCWd1Y19pbnRlcnJ1cHRzX3JlbGVhc2UoZGV2X3ByaXYpOwogCWk5MTVfZ3Vj X3N1Ym1pc3Npb25fZGlzYWJsZShkZXZfcHJpdik7CkBAIC01ODcsOCArNTg3LDggQEAgaW50IGlu dGVsX2d1Y19zZXR1cChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJcmV0dXJu IHJldDsKIH0KIAotc3RhdGljIHZvaWQgZ3VjX2Z3X2ZldGNoKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwKLQkJCSBzdHJ1Y3QgaW50ZWxfZ3VjX2Z3ICpndWNfZncpCit2b2lkIGlu dGVsX3VjX2Z3X2ZldGNoKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKKwkJCSBz dHJ1Y3QgaW50ZWxfdWNfZncgKnVjX2Z3KQogewogCXN0cnVjdCBwY2lfZGV2ICpwZGV2ID0gZGV2 X3ByaXYtPmRybS5wZGV2OwogCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7CkBAIC01 OTcsMTcgKzU5NywxNyBAQCBzdGF0aWMgdm9pZCBndWNfZndfZmV0Y2goc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LAogCXNpemVfdCBzaXplOwogCWludCBlcnI7CiAKLQlEUk1fREVC VUdfRFJJVkVSKCJiZWZvcmUgcmVxdWVzdGluZyBmaXJtd2FyZTogR3VDIGZ3IGZldGNoIHN0YXR1 cyAlc1xuIiwKLQkJaW50ZWxfZ3VjX2Z3X3N0YXR1c19yZXByKGd1Y19mdy0+Z3VjX2Z3X2ZldGNo X3N0YXR1cykpOworCURSTV9ERUJVR19EUklWRVIoImJlZm9yZSByZXF1ZXN0aW5nIGZpcm13YXJl OiB1QyBmdyBmZXRjaCBzdGF0dXMgJXNcbiIsCisJCWludGVsX3VjX2Z3X3N0YXR1c19yZXByKHVj X2Z3LT5mZXRjaF9zdGF0dXMpKTsKIAotCWVyciA9IHJlcXVlc3RfZmlybXdhcmUoJmZ3LCBndWNf ZnctPmd1Y19md19wYXRoLCAmcGRldi0+ZGV2KTsKKwllcnIgPSByZXF1ZXN0X2Zpcm13YXJlKCZm dywgdWNfZnctPnVjX2Z3X3BhdGgsICZwZGV2LT5kZXYpOwogCWlmIChlcnIpCiAJCWdvdG8gZmFp bDsKIAlpZiAoIWZ3KQogCQlnb3RvIGZhaWw7CiAKLQlEUk1fREVCVUdfRFJJVkVSKCJmZXRjaCBH dUMgZncgZnJvbSAlcyBzdWNjZWVkZWQsIGZ3ICVwXG4iLAotCQlndWNfZnctPmd1Y19md19wYXRo LCBmdyk7CisJRFJNX0RFQlVHX0RSSVZFUigiZmV0Y2ggdUMgZncgZnJvbSAlcyBzdWNjZWVkZWQs IGZ3ICVwXG4iLAorCQl1Y19mdy0+dWNfZndfcGF0aCwgZncpOwogCiAJLyogQ2hlY2sgdGhlIHNp emUgb2YgdGhlIGJsb2IgYmVmb3JlIGV4YW1pbmluZyBidWZmZXIgY29udGVudHMgKi8KIAlpZiAo ZnctPnNpemUgPCBzaXplb2Yoc3RydWN0IGd1Y19jc3NfaGVhZGVyKSkgewpAQCAtNjE4LDM2ICs2 MTgsMzYgQEAgc3RhdGljIHZvaWQgZ3VjX2Z3X2ZldGNoKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKIAljc3MgPSAoc3RydWN0IGd1Y19jc3NfaGVhZGVyICopZnctPmRhdGE7CiAK IAkvKiBGaXJtd2FyZSBiaXRzIGFsd2F5cyBzdGFydCBmcm9tIGhlYWRlciAqLwotCWd1Y19mdy0+ aGVhZGVyX29mZnNldCA9IDA7Ci0JZ3VjX2Z3LT5oZWFkZXJfc2l6ZSA9IChjc3MtPmhlYWRlcl9z aXplX2R3IC0gY3NzLT5tb2R1bHVzX3NpemVfZHcgLQorCXVjX2Z3LT5oZWFkZXJfb2Zmc2V0ID0g MDsKKwl1Y19mdy0+aGVhZGVyX3NpemUgPSAoY3NzLT5oZWFkZXJfc2l6ZV9kdyAtIGNzcy0+bW9k dWx1c19zaXplX2R3IC0KIAkJY3NzLT5rZXlfc2l6ZV9kdyAtIGNzcy0+ZXhwb25lbnRfc2l6ZV9k dykgKiBzaXplb2YodTMyKTsKIAotCWlmIChndWNfZnctPmhlYWRlcl9zaXplICE9IHNpemVvZihz dHJ1Y3QgZ3VjX2Nzc19oZWFkZXIpKSB7CisJaWYgKHVjX2Z3LT5oZWFkZXJfc2l6ZSAhPSBzaXpl b2Yoc3RydWN0IGd1Y19jc3NfaGVhZGVyKSkgewogCQlEUk1fTk9URSgiQ1NTIGhlYWRlciBkZWZp bml0aW9uIG1pc21hdGNoXG4iKTsKIAkJZ290byBmYWlsOwogCX0KIAogCS8qIHRoZW4sIHVDb2Rl ICovCi0JZ3VjX2Z3LT51Y29kZV9vZmZzZXQgPSBndWNfZnctPmhlYWRlcl9vZmZzZXQgKyBndWNf ZnctPmhlYWRlcl9zaXplOwotCWd1Y19mdy0+dWNvZGVfc2l6ZSA9IChjc3MtPnNpemVfZHcgLSBj c3MtPmhlYWRlcl9zaXplX2R3KSAqIHNpemVvZih1MzIpOworCXVjX2Z3LT51Y29kZV9vZmZzZXQg PSB1Y19mdy0+aGVhZGVyX29mZnNldCArIHVjX2Z3LT5oZWFkZXJfc2l6ZTsKKwl1Y19mdy0+dWNv ZGVfc2l6ZSA9IChjc3MtPnNpemVfZHcgLSBjc3MtPmhlYWRlcl9zaXplX2R3KSAqIHNpemVvZih1 MzIpOwogCiAJLyogbm93IFJTQSAqLwogCWlmIChjc3MtPmtleV9zaXplX2R3ICE9IFVPU19SU0Ff U0NSQVRDSF9NQVhfQ09VTlQpIHsKIAkJRFJNX05PVEUoIlJTQSBrZXkgc2l6ZSBpcyBiYWRcbiIp OwogCQlnb3RvIGZhaWw7CiAJfQotCWd1Y19mdy0+cnNhX29mZnNldCA9IGd1Y19mdy0+dWNvZGVf b2Zmc2V0ICsgZ3VjX2Z3LT51Y29kZV9zaXplOwotCWd1Y19mdy0+cnNhX3NpemUgPSBjc3MtPmtl eV9zaXplX2R3ICogc2l6ZW9mKHUzMik7CisJdWNfZnctPnJzYV9vZmZzZXQgPSB1Y19mdy0+dWNv ZGVfb2Zmc2V0ICsgdWNfZnctPnVjb2RlX3NpemU7CisJdWNfZnctPnJzYV9zaXplID0gY3NzLT5r ZXlfc2l6ZV9kdyAqIHNpemVvZih1MzIpOwogCiAJLyogQXQgbGVhc3QsIGl0IHNob3VsZCBoYXZl IGhlYWRlciwgdUNvZGUgYW5kIFJTQS4gU2l6ZSBvZiBhbGwgdGhyZWUuICovCi0Jc2l6ZSA9IGd1 Y19mdy0+aGVhZGVyX3NpemUgKyBndWNfZnctPnVjb2RlX3NpemUgKyBndWNfZnctPnJzYV9zaXpl OworCXNpemUgPSB1Y19mdy0+aGVhZGVyX3NpemUgKyB1Y19mdy0+dWNvZGVfc2l6ZSArIHVjX2Z3 LT5yc2Ffc2l6ZTsKIAlpZiAoZnctPnNpemUgPCBzaXplKSB7CiAJCURSTV9OT1RFKCJNaXNzaW5n IGZpcm13YXJlIGNvbXBvbmVudHNcbiIpOwogCQlnb3RvIGZhaWw7CiAJfQogCiAJLyogSGVhZGVy IGFuZCB1Q29kZSB3aWxsIGJlIGxvYWRlZCB0byBXT1BDTS4gU2l6ZSBvZiB0aGUgdHdvLiAqLwot CXNpemUgPSBndWNfZnctPmhlYWRlcl9zaXplICsgZ3VjX2Z3LT51Y29kZV9zaXplOworCXNpemUg PSB1Y19mdy0+aGVhZGVyX3NpemUgKyB1Y19mdy0+dWNvZGVfc2l6ZTsKIAlpZiAoc2l6ZSA+IGd1 Y193b3BjbV9zaXplKGRldl9wcml2KSkgewogCQlEUk1fTk9URSgiRmlybXdhcmUgaXMgdG9vIGxh cmdlIHRvIGZpdCBpbiBXT1BDTVxuIik7CiAJCWdvdG8gZmFpbDsKQEAgLTY1OSwyMSArNjU5LDIx IEBAIHN0YXRpYyB2b2lkIGd1Y19md19mZXRjaChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCiAJICogVFdPIGJ5dGVzIGVhY2ggKGkuZS4gdTE2KSwgYWx0aG91Z2ggYWxsIHBvaW50 ZXJzIGFuZCBvZmZzZXRzIGFyZSBkZWZpbmVkCiAJICogaW4gdGVybXMgb2YgYnl0ZXMgKHU4KS4K IAkgKi8KLQlndWNfZnctPmd1Y19md19tYWpvcl9mb3VuZCA9IGNzcy0+Z3VjX3N3X3ZlcnNpb24g Pj4gMTY7Ci0JZ3VjX2Z3LT5ndWNfZndfbWlub3JfZm91bmQgPSBjc3MtPmd1Y19zd192ZXJzaW9u ICYgMHhGRkZGOwotCi0JaWYgKGd1Y19mdy0+Z3VjX2Z3X21ham9yX2ZvdW5kICE9IGd1Y19mdy0+ Z3VjX2Z3X21ham9yX3dhbnRlZCB8fAotCSAgICBndWNfZnctPmd1Y19md19taW5vcl9mb3VuZCA8 IGd1Y19mdy0+Z3VjX2Z3X21pbm9yX3dhbnRlZCkgewotCQlEUk1fTk9URSgiR3VDIGZpcm13YXJl IHZlcnNpb24gJWQuJWQsIHJlcXVpcmVkICVkLiVkXG4iLAotCQkJZ3VjX2Z3LT5ndWNfZndfbWFq b3JfZm91bmQsIGd1Y19mdy0+Z3VjX2Z3X21pbm9yX2ZvdW5kLAotCQkJZ3VjX2Z3LT5ndWNfZndf bWFqb3Jfd2FudGVkLCBndWNfZnctPmd1Y19md19taW5vcl93YW50ZWQpOworCXVjX2Z3LT5tYWpv cl92ZXJfZm91bmQgPSBjc3MtPmd1Y19zd192ZXJzaW9uID4+IDE2OworCXVjX2Z3LT5taW5vcl92 ZXJfZm91bmQgPSBjc3MtPmd1Y19zd192ZXJzaW9uICYgMHhGRkZGOworCisJaWYgKHVjX2Z3LT5t YWpvcl92ZXJfZm91bmQgIT0gdWNfZnctPm1ham9yX3Zlcl93YW50ZWQgfHwKKwkgICAgdWNfZnct Pm1pbm9yX3Zlcl9mb3VuZCA8IHVjX2Z3LT5taW5vcl92ZXJfd2FudGVkKSB7CisJCURSTV9OT1RF KCJ1QyBmaXJtd2FyZSB2ZXJzaW9uICVkLiVkLCByZXF1aXJlZCAlZC4lZFxuIiwKKwkJCXVjX2Z3 LT5tYWpvcl92ZXJfZm91bmQsIHVjX2Z3LT5taW5vcl92ZXJfZm91bmQsCisJCQl1Y19mdy0+bWFq b3JfdmVyX3dhbnRlZCwgdWNfZnctPm1pbm9yX3Zlcl93YW50ZWQpOwogCQllcnIgPSAtRU5PRVhF QzsKIAkJZ290byBmYWlsOwogCX0KIAogCURSTV9ERUJVR19EUklWRVIoImZpcm13YXJlIHZlcnNp b24gJWQuJWQgT0sgKG1pbmltdW0gJWQuJWQpXG4iLAotCQkJZ3VjX2Z3LT5ndWNfZndfbWFqb3Jf Zm91bmQsIGd1Y19mdy0+Z3VjX2Z3X21pbm9yX2ZvdW5kLAotCQkJZ3VjX2Z3LT5ndWNfZndfbWFq b3Jfd2FudGVkLCBndWNfZnctPmd1Y19md19taW5vcl93YW50ZWQpOworCQkJdWNfZnctPm1ham9y X3Zlcl9mb3VuZCwgdWNfZnctPm1pbm9yX3Zlcl9mb3VuZCwKKwkJCXVjX2Z3LT5tYWpvcl92ZXJf d2FudGVkLCB1Y19mdy0+bWlub3JfdmVyX3dhbnRlZCk7CiAKIAltdXRleF9sb2NrKCZkZXZfcHJp di0+ZHJtLnN0cnVjdF9tdXRleCk7CiAJb2JqID0gaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9mcm9t X2RhdGEoZGV2X3ByaXYsIGZ3LT5kYXRhLCBmdy0+c2l6ZSk7CkBAIC02ODMsMzEgKzY4MywzMSBA QCBzdGF0aWMgdm9pZCBndWNfZndfZmV0Y2goc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LAogCQlnb3RvIGZhaWw7CiAJfQogCi0JZ3VjX2Z3LT5ndWNfZndfb2JqID0gb2JqOwotCWd1 Y19mdy0+Z3VjX2Z3X3NpemUgPSBmdy0+c2l6ZTsKKwl1Y19mdy0+dWNfZndfb2JqID0gb2JqOwor CXVjX2Z3LT5zaXplID0gZnctPnNpemU7CiAKLQlEUk1fREVCVUdfRFJJVkVSKCJHdUMgZncgZmV0 Y2ggc3RhdHVzIFNVQ0NFU1MsIG9iaiAlcFxuIiwKLQkJCWd1Y19mdy0+Z3VjX2Z3X29iaik7CisJ RFJNX0RFQlVHX0RSSVZFUigidUMgZncgZmV0Y2ggc3RhdHVzIFNVQ0NFU1MsIG9iaiAlcFxuIiwK KwkJCXVjX2Z3LT51Y19md19vYmopOwogCiAJcmVsZWFzZV9maXJtd2FyZShmdyk7Ci0JZ3VjX2Z3 LT5ndWNfZndfZmV0Y2hfc3RhdHVzID0gR1VDX0ZJUk1XQVJFX1NVQ0NFU1M7CisJdWNfZnctPmZl dGNoX3N0YXR1cyA9IElOVEVMX1VDX0ZJUk1XQVJFX1NVQ0NFU1M7CiAJcmV0dXJuOwogCiBmYWls OgotCURSTV9XQVJOKCJGYWlsZWQgdG8gZmV0Y2ggdmFsaWQgR3VDIGZpcm13YXJlIGZyb20gJXMg KGVycm9yICVkKVxuIiwKLQkJIGd1Y19mdy0+Z3VjX2Z3X3BhdGgsIGVycik7Ci0JRFJNX0RFQlVH X0RSSVZFUigiR3VDIGZ3IGZldGNoIHN0YXR1cyBGQUlMOyBlcnIgJWQsIGZ3ICVwLCBvYmogJXBc biIsCi0JCWVyciwgZncsIGd1Y19mdy0+Z3VjX2Z3X29iaik7CisJRFJNX1dBUk4oIkZhaWxlZCB0 byBmZXRjaCB2YWxpZCB1QyBmaXJtd2FyZSBmcm9tICVzIChlcnJvciAlZClcbiIsCisJCSB1Y19m dy0+dWNfZndfcGF0aCwgZXJyKTsKKwlEUk1fREVCVUdfRFJJVkVSKCJ1QyBmdyBmZXRjaCBzdGF0 dXMgRkFJTDsgZXJyICVkLCBmdyAlcCwgb2JqICVwXG4iLAorCQllcnIsIGZ3LCB1Y19mdy0+dWNf Zndfb2JqKTsKIAogCW11dGV4X2xvY2soJmRldl9wcml2LT5kcm0uc3RydWN0X211dGV4KTsKLQlv YmogPSBndWNfZnctPmd1Y19md19vYmo7CisJb2JqID0gdWNfZnctPnVjX2Z3X29iajsKIAlpZiAo b2JqKQogCQlpOTE1X2dlbV9vYmplY3RfcHV0KG9iaik7Ci0JZ3VjX2Z3LT5ndWNfZndfb2JqID0g TlVMTDsKKwl1Y19mdy0+dWNfZndfb2JqID0gTlVMTDsKIAltdXRleF91bmxvY2soJmRldl9wcml2 LT5kcm0uc3RydWN0X211dGV4KTsKIAogCXJlbGVhc2VfZmlybXdhcmUoZncpOwkJLyogT0sgZXZl biBpZiBmdyBpcyBOVUxMICovCi0JZ3VjX2Z3LT5ndWNfZndfZmV0Y2hfc3RhdHVzID0gR1VDX0ZJ Uk1XQVJFX0ZBSUw7CisJdWNfZnctPmZldGNoX3N0YXR1cyA9IElOVEVMX1VDX0ZJUk1XQVJFX0ZB SUw7CiB9CiAKIC8qKgpAQCAtNzIxLDcgKzcyMSw3IEBAIHN0YXRpYyB2b2lkIGd1Y19md19mZXRj aChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAgKi8KIHZvaWQgaW50ZWxfZ3Vj X2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogewotCXN0cnVjdCBpbnRl bF9ndWNfZncgKmd1Y19mdyA9ICZkZXZfcHJpdi0+Z3VjLmd1Y19mdzsKKwlzdHJ1Y3QgaW50ZWxf dWNfZncgKmd1Y19mdyA9ICZkZXZfcHJpdi0+Z3VjLmZ3OwogCWNvbnN0IGNoYXIgKmZ3X3BhdGg7 CiAKIAlpZiAoIUhBU19HVUMoZGV2X3ByaXYpKSB7CkBAIC03MzksMjMgKzczOSwyMyBAQCB2b2lk IGludGVsX2d1Y19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkJZndf cGF0aCA9IE5VTEw7CiAJfSBlbHNlIGlmIChJU19TS1lMQUtFKGRldl9wcml2KSkgewogCQlmd19w YXRoID0gSTkxNV9TS0xfR1VDX1VDT0RFOwotCQlndWNfZnctPmd1Y19md19tYWpvcl93YW50ZWQg PSBTS0xfRldfTUFKT1I7Ci0JCWd1Y19mdy0+Z3VjX2Z3X21pbm9yX3dhbnRlZCA9IFNLTF9GV19N SU5PUjsKKwkJZ3VjX2Z3LT5tYWpvcl92ZXJfd2FudGVkID0gU0tMX0ZXX01BSk9SOworCQlndWNf ZnctPm1pbm9yX3Zlcl93YW50ZWQgPSBTS0xfRldfTUlOT1I7CiAJfSBlbHNlIGlmIChJU19CUk9Y VE9OKGRldl9wcml2KSkgewogCQlmd19wYXRoID0gSTkxNV9CWFRfR1VDX1VDT0RFOwotCQlndWNf ZnctPmd1Y19md19tYWpvcl93YW50ZWQgPSBCWFRfRldfTUFKT1I7Ci0JCWd1Y19mdy0+Z3VjX2Z3 X21pbm9yX3dhbnRlZCA9IEJYVF9GV19NSU5PUjsKKwkJZ3VjX2Z3LT5tYWpvcl92ZXJfd2FudGVk ID0gQlhUX0ZXX01BSk9SOworCQlndWNfZnctPm1pbm9yX3Zlcl93YW50ZWQgPSBCWFRfRldfTUlO T1I7CiAJfSBlbHNlIGlmIChJU19LQUJZTEFLRShkZXZfcHJpdikpIHsKIAkJZndfcGF0aCA9IEk5 MTVfS0JMX0dVQ19VQ09ERTsKLQkJZ3VjX2Z3LT5ndWNfZndfbWFqb3Jfd2FudGVkID0gS0JMX0ZX X01BSk9SOwotCQlndWNfZnctPmd1Y19md19taW5vcl93YW50ZWQgPSBLQkxfRldfTUlOT1I7CisJ CWd1Y19mdy0+bWFqb3JfdmVyX3dhbnRlZCA9IEtCTF9GV19NQUpPUjsKKwkJZ3VjX2Z3LT5taW5v cl92ZXJfd2FudGVkID0gS0JMX0ZXX01JTk9SOwogCX0gZWxzZSB7CiAJCWZ3X3BhdGggPSAiIjsJ LyogdW5rbm93biBkZXZpY2UgKi8KIAl9CiAKLQlndWNfZnctPmd1Y19md19wYXRoID0gZndfcGF0 aDsKLQlndWNfZnctPmd1Y19md19mZXRjaF9zdGF0dXMgPSBHVUNfRklSTVdBUkVfTk9ORTsKLQln dWNfZnctPmd1Y19md19sb2FkX3N0YXR1cyA9IEdVQ19GSVJNV0FSRV9OT05FOworCWd1Y19mdy0+ dWNfZndfcGF0aCA9IGZ3X3BhdGg7CisJZ3VjX2Z3LT5mZXRjaF9zdGF0dXMgPSBJTlRFTF9VQ19G SVJNV0FSRV9OT05FOworCWd1Y19mdy0+bG9hZF9zdGF0dXMgPSBJTlRFTF9VQ19GSVJNV0FSRV9O T05FOwogCiAJLyogRWFybHkgKGFuZCBzaWxlbnQpIHJldHVybiBpZiBHdUMgbG9hZGluZyBpcyBk aXNhYmxlZCAqLwogCWlmICghaTkxNS5lbmFibGVfZ3VjX2xvYWRpbmcpCkBAIC03NjUsOSArNzY1 LDkgQEAgdm9pZCBpbnRlbF9ndWNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCiAJaWYgKCpmd19wYXRoID09ICdcMCcpCiAJCXJldHVybjsKIAotCWd1Y19mdy0+Z3VjX2Z3 X2ZldGNoX3N0YXR1cyA9IEdVQ19GSVJNV0FSRV9QRU5ESU5HOworCWd1Y19mdy0+ZmV0Y2hfc3Rh dHVzID0gSU5URUxfVUNfRklSTVdBUkVfUEVORElORzsKIAlEUk1fREVCVUdfRFJJVkVSKCJHdUMg ZmlybXdhcmUgcGVuZGluZywgcGF0aCAlc1xuIiwgZndfcGF0aCk7Ci0JZ3VjX2Z3X2ZldGNoKGRl dl9wcml2LCBndWNfZncpOworCWludGVsX3VjX2Z3X2ZldGNoKGRldl9wcml2LCBndWNfZncpOwog CS8qIHN0YXR1cyBtdXN0IG5vdyBiZSBGQUlMIG9yIFNVQ0NFU1MgKi8KIH0KIApAQCAtNzc3LDE3 ICs3NzcsMTcgQEAgdm9pZCBpbnRlbF9ndWNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpCiAgKi8KIHZvaWQgaW50ZWxfZ3VjX2Zpbmkoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KQogewotCXN0cnVjdCBpbnRlbF9ndWNfZncgKmd1Y19mdyA9ICZkZXZfcHJp di0+Z3VjLmd1Y19mdzsKKwlzdHJ1Y3QgaW50ZWxfdWNfZncgKmd1Y19mdyA9ICZkZXZfcHJpdi0+ Z3VjLmZ3OwogCiAJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXgpOwogCWd1 Y19pbnRlcnJ1cHRzX3JlbGVhc2UoZGV2X3ByaXYpOwogCWk5MTVfZ3VjX3N1Ym1pc3Npb25fZGlz YWJsZShkZXZfcHJpdik7CiAJaTkxNV9ndWNfc3VibWlzc2lvbl9maW5pKGRldl9wcml2KTsKIAot CWlmIChndWNfZnctPmd1Y19md19vYmopCi0JCWk5MTVfZ2VtX29iamVjdF9wdXQoZ3VjX2Z3LT5n dWNfZndfb2JqKTsKLQlndWNfZnctPmd1Y19md19vYmogPSBOVUxMOworCWlmIChndWNfZnctPnVj X2Z3X29iaikKKwkJaTkxNV9nZW1fb2JqZWN0X3B1dChndWNfZnctPnVjX2Z3X29iaik7CisJZ3Vj X2Z3LT51Y19md19vYmogPSBOVUxMOwogCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmRybS5zdHJ1 Y3RfbXV0ZXgpOwogCi0JZ3VjX2Z3LT5ndWNfZndfZmV0Y2hfc3RhdHVzID0gR1VDX0ZJUk1XQVJF X05PTkU7CisJZ3VjX2Z3LT5mZXRjaF9zdGF0dXMgPSBJTlRFTF9VQ19GSVJNV0FSRV9OT05FOwog fQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdWMuaCBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3VjLmgKaW5kZXggMTFmNTYwOC4uODkzYmNlYyAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdWMuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF91Yy5oCkBAIC05MSwyOCArOTEsMjggQEAgc3RydWN0IGk5MTVfZ3VjX2NsaWVu dCB7CiAJdWludDY0X3Qgc3VibWlzc2lvbnNbSTkxNV9OVU1fRU5HSU5FU107CiB9OwogCi1lbnVt IGludGVsX2d1Y19md19zdGF0dXMgewotCUdVQ19GSVJNV0FSRV9GQUlMID0gLTEsCi0JR1VDX0ZJ Uk1XQVJFX05PTkUgPSAwLAotCUdVQ19GSVJNV0FSRV9QRU5ESU5HLAotCUdVQ19GSVJNV0FSRV9T VUNDRVNTCitlbnVtIGludGVsX3VjX2Z3X3N0YXR1cyB7CisJSU5URUxfVUNfRklSTVdBUkVfRkFJ TCA9IC0xLAorCUlOVEVMX1VDX0ZJUk1XQVJFX05PTkUgPSAwLAorCUlOVEVMX1VDX0ZJUk1XQVJF X1BFTkRJTkcsCisJSU5URUxfVUNfRklSTVdBUkVfU1VDQ0VTUwogfTsKIAogLyoKICAqIFRoaXMg c3RydWN0dXJlIGVuY2Fwc3VsYXRlcyBhbGwgdGhlIGRhdGEgbmVlZGVkIGR1cmluZyB0aGUgcHJv Y2VzcwogICogb2YgZmV0Y2hpbmcsIGNhY2hpbmcsIGFuZCBsb2FkaW5nIHRoZSBmaXJtd2FyZSBp bWFnZSBpbnRvIHRoZSBHdUMuCiAgKi8KLXN0cnVjdCBpbnRlbF9ndWNfZncgewotCWNvbnN0IGNo YXIgKgkJCWd1Y19md19wYXRoOwotCXNpemVfdAkJCQlndWNfZndfc2l6ZTsKLQlzdHJ1Y3QgZHJt X2k5MTVfZ2VtX29iamVjdCAqCWd1Y19md19vYmo7Ci0JZW51bSBpbnRlbF9ndWNfZndfc3RhdHVz CWd1Y19md19mZXRjaF9zdGF0dXM7Ci0JZW51bSBpbnRlbF9ndWNfZndfc3RhdHVzCWd1Y19md19s b2FkX3N0YXR1czsKLQotCXVpbnQxNl90CQkJZ3VjX2Z3X21ham9yX3dhbnRlZDsKLQl1aW50MTZf dAkJCWd1Y19md19taW5vcl93YW50ZWQ7Ci0JdWludDE2X3QJCQlndWNfZndfbWFqb3JfZm91bmQ7 Ci0JdWludDE2X3QJCQlndWNfZndfbWlub3JfZm91bmQ7CitzdHJ1Y3QgaW50ZWxfdWNfZncgewor CWNvbnN0IGNoYXIgKnVjX2Z3X3BhdGg7CisJc2l6ZV90IHNpemU7CisJc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QgKnVjX2Z3X29iajsKKwllbnVtIGludGVsX3VjX2Z3X3N0YXR1cyBmZXRjaF9z dGF0dXM7CisJZW51bSBpbnRlbF91Y19md19zdGF0dXMgbG9hZF9zdGF0dXM7CisKKwl1aW50MTZf dCBtYWpvcl92ZXJfd2FudGVkOworCXVpbnQxNl90IG1pbm9yX3Zlcl93YW50ZWQ7CisJdWludDE2 X3QgbWFqb3JfdmVyX2ZvdW5kOworCXVpbnQxNl90IG1pbm9yX3Zlcl9mb3VuZDsKIAogCXVpbnQz Ml90IGhlYWRlcl9zaXplOwogCXVpbnQzMl90IGhlYWRlcl9vZmZzZXQ7CkBAIC0xMzksNyArMTM5 LDcgQEAgc3RydWN0IGludGVsX2d1Y19sb2cgewogfTsKIAogc3RydWN0IGludGVsX2d1YyB7Ci0J c3RydWN0IGludGVsX2d1Y19mdyBndWNfZnc7CisJc3RydWN0IGludGVsX3VjX2Z3IGZ3OwogCXN0 cnVjdCBpbnRlbF9ndWNfbG9nIGxvZzsKIAogCS8qIGludGVsX2d1Y19yZWN2IGludGVycnVwdCBy ZWxhdGVkIHN0YXRlICovCkBAIC0xODEsNyArMTgxLDcgQEAgaW50IGludGVsX2d1Y19sb2dfY29u dHJvbChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsIHUzMiBjb250cm9sX3ZhbCk7CiBleHRlcm4gdm9p ZCBpbnRlbF9ndWNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwogZXh0 ZXJuIGludCBpbnRlbF9ndWNfc2V0dXAoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KTsKIGV4dGVybiB2b2lkIGludGVsX2d1Y19maW5pKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdik7Ci1leHRlcm4gY29uc3QgY2hhciAqaW50ZWxfZ3VjX2Z3X3N0YXR1c19yZXByKGVu dW0gaW50ZWxfZ3VjX2Z3X3N0YXR1cyBzdGF0dXMpOworZXh0ZXJuIGNvbnN0IGNoYXIgKmludGVs X3VjX2Z3X3N0YXR1c19yZXByKGVudW0gaW50ZWxfdWNfZndfc3RhdHVzIHN0YXR1cyk7CiBleHRl cm4gaW50IGludGVsX2d1Y19zdXNwZW5kKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dik7CiBleHRlcm4gaW50IGludGVsX2d1Y19yZXN1bWUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KTsKIAotLSAKMi43LjQKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2ludGVsLWdmeAo=