From mboxrd@z Thu Jan 1 00:00:00 1970 From: Peter Antoine Subject: [PATCH v5 1/6] drm/i915/guc: Make the GuC fw loading helper functions general Date: Fri, 12 Aug 2016 09:09:50 +0100 Message-ID: <1470989395-32517-2-git-send-email-peter.antoine@intel.com> References: <1470989395-32517-1-git-send-email-peter.antoine@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 ESMTP id F3DCE6EAB8 for ; Fri, 12 Aug 2016 08:10:17 +0000 (UTC) In-Reply-To: <1470989395-32517-1-git-send-email-peter.antoine@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 List-Id: intel-gfx@lists.freedesktop.org UmVuYW1lIHNvbWUgb2YgdGhlIEd1QyBmdyBsb2FkaW5nIGNvZGUgdG8gbWFrZSB0aGVtIG1vcmUg Z2VuZXJhbC4gV2UKd2lsbCB1dGlsaXNlIHRoZW0gZm9yIEh1QyBsb2FkaW5nIGFzIHdlbGwuCiAg ICAgcy9pbnRlbF9ndWNfZncvaW50ZWxfdWNfZncvZwogICAgIHMvR1VDX0ZJUk1XQVJFL1VDX0ZJ Uk1XQVJFL2cKClN0cnVjdCBpbnRlbF9ndWNfZncgaXMgcmVuYW1lZCB0byBpbnRlbF91Y19mdy4g UHJlZml4IG9mIHR0cyBtZW1iZXJzLApzdWNoIGFzICdndWMnIG9yICdndWNfZncnIGVpdGhlciBp cyByZW5hbWVkIHRvICd1Yycgb3IgcmVtb3ZlZCBmb3IKc2FtZSBwdXJwb3NlLgoKdjI6IHJlYmFz ZWQgb24gdG9wIG9mIG5pZ2h0bHkuCiAgICByZWFwcGxpZWQgdGhlIHNlYXJjaC9yZXBsYWNlIGFz IHVwc3RyZWFtIGNvZGUgYXMgY2hhbmdlZC4KdjM6IHJlYmFzZWQgYWdhaW4gb24gZHJtLW5pZ2h0 bHkuCnY0OiByZW1vdmVkIEcgZnJvbSBtZXNzYWdlcyBpbiBzaGFyZWQgZncgZmV0Y2ggZnVuY3Rp b24uCnY1OiByZWJhc2VkLgoKU2lnbmVkLW9mZi1ieTogQWxleCBEYWkgPHl1LmRhaUBpbnRlbC5j b20+ClNpZ25lZC1vZmYtYnk6IFBldGVyIEFudG9pbmUgPHBldGVyLmFudG9pbmVAaW50ZWwuY29t PgpSZXZpZXdlZC1ieTogRGF2ZSBHb3Jkb24gPGRhdmlkLnMuZ29yZG9uQGludGVsLmNvbT4KLS0t CiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyAgICAgICAgfCAgMTIgKy0tCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMgfCAgIDQgKy0KIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5oICAgICAgICAgICB8ICAzOSArKystLS0tCiBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMgICAgfCAxNjAgKysrKysrKysrKysr KystLS0tLS0tLS0tLS0tLS0KIDQgZmlsZXMgY2hhbmdlZCwgMTA4IGluc2VydGlvbnMoKyksIDEw NyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rl YnVnZnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCmluZGV4IGM0NjEw NzIuLmM0ZjAzZWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdm cy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCkBAIC0yNDk5LDcg KzI0OTksNyBAQCBzdGF0aWMgaW50IGk5MTVfZ3VjX2xvYWRfc3RhdHVzX2luZm8oc3RydWN0IHNl cV9maWxlICptLCB2b2lkICpkYXRhKQogewogCXN0cnVjdCBkcm1faW5mb19ub2RlICpub2RlID0g bS0+cHJpdmF0ZTsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1 KG5vZGUtPm1pbm9yLT5kZXYpOwotCXN0cnVjdCBpbnRlbF9ndWNfZncgKmd1Y19mdyA9ICZkZXZf cHJpdi0+Z3VjLmd1Y19mdzsKKwlzdHJ1Y3QgaW50ZWxfdWNfZncgKmd1Y19mdyA9ICZkZXZfcHJp di0+Z3VjLmd1Y19mdzsKIAl1MzIgdG1wLCBpOwogCiAJaWYgKCFIQVNfR1VDX1VDT0RFKGRldl9w cml2KSkKQEAgLTI1MDcsMTUgKzI1MDcsMTUgQEAgc3RhdGljIGludCBpOTE1X2d1Y19sb2FkX3N0 YXR1c19pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKIAogCXNlcV9wcmludGYo bSwgIkd1QyBmaXJtd2FyZSBzdGF0dXM6XG4iKTsKIAlzZXFfcHJpbnRmKG0sICJcdHBhdGg6ICVz XG4iLAotCQlndWNfZnctPmd1Y19md19wYXRoKTsKKwkJZ3VjX2Z3LT51Y19md19wYXRoKTsKIAlz ZXFfcHJpbnRmKG0sICJcdGZldGNoOiAlc1xuIiwKLQkJaW50ZWxfZ3VjX2Z3X3N0YXR1c19yZXBy KGd1Y19mdy0+Z3VjX2Z3X2ZldGNoX3N0YXR1cykpOworCQlpbnRlbF91Y19md19zdGF0dXNfcmVw cihndWNfZnctPmZldGNoX3N0YXR1cykpOwogCXNlcV9wcmludGYobSwgIlx0bG9hZDogJXNcbiIs Ci0JCWludGVsX2d1Y19md19zdGF0dXNfcmVwcihndWNfZnctPmd1Y19md19sb2FkX3N0YXR1cykp OworCQlpbnRlbF91Y19md19zdGF0dXNfcmVwcihndWNfZnctPmxvYWRfc3RhdHVzKSk7CiAJc2Vx X3ByaW50ZihtLCAiXHR2ZXJzaW9uIHdhbnRlZDogJWQuJWRcbiIsCi0JCWd1Y19mdy0+Z3VjX2Z3 X21ham9yX3dhbnRlZCwgZ3VjX2Z3LT5ndWNfZndfbWlub3Jfd2FudGVkKTsKKwkJZ3VjX2Z3LT5t YWpvcl92ZXJfd2FudGVkLCBndWNfZnctPm1pbm9yX3Zlcl93YW50ZWQpOwogCXNlcV9wcmludGYo bSwgIlx0dmVyc2lvbiBmb3VuZDogJWQuJWRcbiIsCi0JCWd1Y19mdy0+Z3VjX2Z3X21ham9yX2Zv dW5kLCBndWNfZnctPmd1Y19md19taW5vcl9mb3VuZCk7CisJCWd1Y19mdy0+bWFqb3JfdmVyX2Zv dW5kLCBndWNfZnctPm1pbm9yX3Zlcl9mb3VuZCk7CiAJc2VxX3ByaW50ZihtLCAiXHRoZWFkZXI6 IG9mZnNldCBpcyAlZDsgc2l6ZSA9ICVkXG4iLAogCQlndWNfZnctPmhlYWRlcl9vZmZzZXQsIGd1 Y19mdy0+aGVhZGVyX3NpemUpOwogCXNlcV9wcmludGYobSwgIlx0dUNvZGU6IG9mZnNldCBpcyAl ZDsgc2l6ZSA9ICVkXG4iLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n dWNfc3VibWlzc2lvbi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lv bi5jCmluZGV4IDY4MzEzMjEuLjE4NGI1ZGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2d1Y19zdWJtaXNzaW9uLmMKQEAgLTEwNzEsNyArMTA3MSw3IEBAIGludCBpbnRlbF9ndWNfc3Vz cGVuZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpj dHg7CiAJdTMyIGRhdGFbM107CiAKLQlpZiAoZ3VjLT5ndWNfZncuZ3VjX2Z3X2xvYWRfc3RhdHVz ICE9IEdVQ19GSVJNV0FSRV9TVUNDRVNTKQorCWlmIChndWMtPmd1Y19mdy5sb2FkX3N0YXR1cyAh PSBVQ19GSVJNV0FSRV9TVUNDRVNTKQogCQlyZXR1cm4gMDsKIAogCWN0eCA9IGRldl9wcml2LT5r ZXJuZWxfY29udGV4dDsKQEAgLTEwOTcsNyArMTA5Nyw3IEBAIGludCBpbnRlbF9ndWNfcmVzdW1l KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eDsK IAl1MzIgZGF0YVszXTsKIAotCWlmIChndWMtPmd1Y19mdy5ndWNfZndfbG9hZF9zdGF0dXMgIT0g R1VDX0ZJUk1XQVJFX1NVQ0NFU1MpCisJaWYgKGd1Yy0+Z3VjX2Z3LmxvYWRfc3RhdHVzICE9IFVD X0ZJUk1XQVJFX1NVQ0NFU1MpCiAJCXJldHVybiAwOwogCiAJY3R4ID0gZGV2X3ByaXYtPmtlcm5l bF9jb250ZXh0OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjLmgg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWMuaAppbmRleCAyNmYzZDljLi5iMDQzODE1 IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWMuaAorKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWMuaApAQCAtODksMjkgKzg5LDI5IEBAIHN0cnVjdCBp OTE1X2d1Y19jbGllbnQgewogCXVpbnQ2NF90IHN1Ym1pc3Npb25zW0k5MTVfTlVNX0VOR0lORVNd OwogfTsKIAotZW51bSBpbnRlbF9ndWNfZndfc3RhdHVzIHsKLQlHVUNfRklSTVdBUkVfRkFJTCA9 IC0xLAotCUdVQ19GSVJNV0FSRV9OT05FID0gMCwKLQlHVUNfRklSTVdBUkVfUEVORElORywKLQlH VUNfRklSTVdBUkVfU1VDQ0VTUworZW51bSBpbnRlbF91Y19md19zdGF0dXMgeworCVVDX0ZJUk1X QVJFX0ZBSUwgPSAtMSwKKwlVQ19GSVJNV0FSRV9OT05FID0gMCwKKwlVQ19GSVJNV0FSRV9QRU5E SU5HLAorCVVDX0ZJUk1XQVJFX1NVQ0NFU1MKIH07CiAKIC8qCiAgKiBUaGlzIHN0cnVjdHVyZSBl bmNhcHN1bGF0ZXMgYWxsIHRoZSBkYXRhIG5lZWRlZCBkdXJpbmcgdGhlIHByb2Nlc3MKICAqIG9m IGZldGNoaW5nLCBjYWNoaW5nLCBhbmQgbG9hZGluZyB0aGUgZmlybXdhcmUgaW1hZ2UgaW50byB0 aGUgR3VDLgogICovCi1zdHJ1Y3QgaW50ZWxfZ3VjX2Z3IHsKLQlzdHJ1Y3QgZHJtX2RldmljZSAq CQlndWNfZGV2OwotCWNvbnN0IGNoYXIgKgkJCWd1Y19md19wYXRoOwotCXNpemVfdAkJCQlndWNf Zndfc2l6ZTsKLQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqCWd1Y19md19vYmo7Ci0JZW51 bSBpbnRlbF9ndWNfZndfc3RhdHVzCWd1Y19md19mZXRjaF9zdGF0dXM7Ci0JZW51bSBpbnRlbF9n dWNfZndfc3RhdHVzCWd1Y19md19sb2FkX3N0YXR1czsKLQotCXVpbnQxNl90CQkJZ3VjX2Z3X21h am9yX3dhbnRlZDsKLQl1aW50MTZfdAkJCWd1Y19md19taW5vcl93YW50ZWQ7Ci0JdWludDE2X3QJ CQlndWNfZndfbWFqb3JfZm91bmQ7Ci0JdWludDE2X3QJCQlndWNfZndfbWlub3JfZm91bmQ7Citz dHJ1Y3QgaW50ZWxfdWNfZncgeworCXN0cnVjdCBkcm1fZGV2aWNlICp1Y19kZXY7CisJY29uc3Qg Y2hhciAqdWNfZndfcGF0aDsKKwlzaXplX3QgdWNfZndfc2l6ZTsKKwlzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCAqdWNfZndfb2JqOworCWVudW0gaW50ZWxfdWNfZndfc3RhdHVzIGZldGNoX3N0 YXR1czsKKwllbnVtIGludGVsX3VjX2Z3X3N0YXR1cyBsb2FkX3N0YXR1czsKKworCXVpbnQxNl90 IG1ham9yX3Zlcl93YW50ZWQ7CisJdWludDE2X3QgbWlub3JfdmVyX3dhbnRlZDsKKwl1aW50MTZf dCBtYWpvcl92ZXJfZm91bmQ7CisJdWludDE2X3QgbWlub3JfdmVyX2ZvdW5kOwogCiAJdWludDMy X3QgaGVhZGVyX3NpemU7CiAJdWludDMyX3QgaGVhZGVyX29mZnNldDsKQEAgLTEyMiw3ICsxMjIs NyBAQCBzdHJ1Y3QgaW50ZWxfZ3VjX2Z3IHsKIH07CiAKIHN0cnVjdCBpbnRlbF9ndWMgewotCXN0 cnVjdCBpbnRlbF9ndWNfZncgZ3VjX2Z3OworCXN0cnVjdCBpbnRlbF91Y19mdyBndWNfZnc7CiAJ dWludDMyX3QgbG9nX2ZsYWdzOwogCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpsb2dfb2Jq OwogCkBAIC0xNTEsOSArMTUxLDEwIEBAIHN0cnVjdCBpbnRlbF9ndWMgewogZXh0ZXJuIHZvaWQg aW50ZWxfZ3VjX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CiBleHRlcm4gaW50IGludGVs X2d1Y19zZXR1cChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKIGV4dGVybiB2b2lkIGludGVsX2d1 Y19maW5pKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwotZXh0ZXJuIGNvbnN0IGNoYXIgKmludGVs X2d1Y19md19zdGF0dXNfcmVwcihlbnVtIGludGVsX2d1Y19md19zdGF0dXMgc3RhdHVzKTsKK2V4 dGVybiBjb25zdCBjaGFyICppbnRlbF91Y19md19zdGF0dXNfcmVwcihlbnVtIGludGVsX3VjX2Z3 X3N0YXR1cyBzdGF0dXMpOwogZXh0ZXJuIGludCBpbnRlbF9ndWNfc3VzcGVuZChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2KTsKIGV4dGVybiBpbnQgaW50ZWxfZ3VjX3Jlc3VtZShzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2KTsKK3ZvaWQgaW50ZWxfdWNfZndfZmV0Y2goc3RydWN0IGRybV9kZXZpY2UgKmRl diwgc3RydWN0IGludGVsX3VjX2Z3ICp1Y19mdyk7CiAKIC8qIGk5MTVfZ3VjX3N1Ym1pc3Npb24u YyAqLwogaW50IGk5MTVfZ3VjX3N1Ym1pc3Npb25faW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3Vj X2xvYWRlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5jCmluZGV4 IGJmY2Y2YjUuLmZiMTQxMzUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2d1Y19sb2FkZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVy LmMKQEAgLTgxLDE2ICs4MSwxNiBAQCBNT0RVTEVfRklSTVdBUkUoSTkxNV9CWFRfR1VDX1VDT0RF KTsKIE1PRFVMRV9GSVJNV0FSRShJOTE1X0tCTF9HVUNfVUNPREUpOwogCiAvKiBVc2VyLWZyaWVu ZGx5IHJlcHJlc2VudGF0aW9uIG9mIGFuIGVudW0gKi8KLWNvbnN0IGNoYXIgKmludGVsX2d1Y19m d19zdGF0dXNfcmVwcihlbnVtIGludGVsX2d1Y19md19zdGF0dXMgc3RhdHVzKQorY29uc3QgY2hh ciAqaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIoZW51bSBpbnRlbF91Y19md19zdGF0dXMgc3RhdHVz KQogewogCXN3aXRjaCAoc3RhdHVzKSB7Ci0JY2FzZSBHVUNfRklSTVdBUkVfRkFJTDoKKwljYXNl IFVDX0ZJUk1XQVJFX0ZBSUw6CiAJCXJldHVybiAiRkFJTCI7Ci0JY2FzZSBHVUNfRklSTVdBUkVf Tk9ORToKKwljYXNlIFVDX0ZJUk1XQVJFX05PTkU6CiAJCXJldHVybiAiTk9ORSI7Ci0JY2FzZSBH VUNfRklSTVdBUkVfUEVORElORzoKKwljYXNlIFVDX0ZJUk1XQVJFX1BFTkRJTkc6CiAJCXJldHVy biAiUEVORElORyI7Ci0JY2FzZSBHVUNfRklSTVdBUkVfU1VDQ0VTUzoKKwljYXNlIFVDX0ZJUk1X QVJFX1NVQ0NFU1M6CiAJCXJldHVybiAiU1VDQ0VTUyI7CiAJZGVmYXVsdDoKIAkJcmV0dXJuICJV TktOT1dOISI7CkBAIC0yNTIsOCArMjUyLDggQEAgc3RhdGljIGlubGluZSBib29sIGd1Y191Y29k ZV9yZXNwb25zZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAgKi8KIHN0YXRp YyBpbnQgZ3VjX3Vjb2RlX3hmZXJfZG1hKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKIHsKLQlzdHJ1Y3QgaW50ZWxfZ3VjX2Z3ICpndWNfZncgPSAmZGV2X3ByaXYtPmd1Yy5ndWNf Znc7Ci0Jc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKmZ3X29iaiA9IGd1Y19mdy0+Z3VjX2Z3 X29iajsKKwlzdHJ1Y3QgaW50ZWxfdWNfZncgKmd1Y19mdyA9ICZkZXZfcHJpdi0+Z3VjLmd1Y19m dzsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqZndfb2JqID0gZ3VjX2Z3LT51Y19md19v Ymo7CiAJdW5zaWduZWQgbG9uZyBvZmZzZXQ7CiAJc3RydWN0IHNnX3RhYmxlICpzZyA9IGZ3X29i ai0+cGFnZXM7CiAJdTMyIHN0YXR1cywgcnNhW1VPU19SU0FfU0NSQVRDSF9NQVhfQ09VTlRdOwpA QCAtMzI1LDE3ICszMjUsMTcgQEAgc3RhdGljIHUzMiBndWNfd29wY21fc2l6ZShzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAgKi8KIHN0YXRpYyBpbnQgZ3VjX3Vjb2RlX3hmZXIo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogewotCXN0cnVjdCBpbnRlbF9ndWNf ZncgKmd1Y19mdyA9ICZkZXZfcHJpdi0+Z3VjLmd1Y19mdzsKKwlzdHJ1Y3QgaW50ZWxfdWNfZncg Kmd1Y19mdyA9ICZkZXZfcHJpdi0+Z3VjLmd1Y19mdzsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 ID0gJmRldl9wcml2LT5kcm07CiAJaW50IHJldDsKIAotCXJldCA9IGk5MTVfZ2VtX29iamVjdF9z ZXRfdG9fZ3R0X2RvbWFpbihndWNfZnctPmd1Y19md19vYmosIGZhbHNlKTsKKwlyZXQgPSBpOTE1 X2dlbV9vYmplY3Rfc2V0X3RvX2d0dF9kb21haW4oZ3VjX2Z3LT51Y19md19vYmosIGZhbHNlKTsK IAlpZiAocmV0KSB7CiAJCURSTV9ERUJVR19EUklWRVIoInNldC1kb21haW4gZmFpbGVkICVkXG4i LCByZXQpOwogCQlyZXR1cm4gcmV0OwogCX0KIAotCXJldCA9IGk5MTVfZ2VtX29iamVjdF9nZ3R0 X3BpbihndWNfZnctPmd1Y19md19vYmosIE5VTEwsIDAsIDAsIDApOworCXJldCA9IGk5MTVfZ2Vt X29iamVjdF9nZ3R0X3BpbihndWNfZnctPnVjX2Z3X29iaiwgTlVMTCwgMCwgMCwgMCk7CiAJaWYg KHJldCkgewogCQlEUk1fREVCVUdfRFJJVkVSKCJwaW4gZmFpbGVkICVkXG4iLCByZXQpOwogCQly ZXR1cm4gcmV0OwpAQCAtMzg5LDcgKzM4OSw3IEBAIHN0YXRpYyBpbnQgZ3VjX3Vjb2RlX3hmZXIo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCSAqIFdlIGtlZXAgdGhlIG9iamVj dCBwYWdlcyBmb3IgcmV1c2UgZHVyaW5nIHJlc3VtZS4gQnV0IHdlIGNhbiB1bnBpbiBpdAogCSAq IG5vdyB0aGF0IERNQSBoYXMgY29tcGxldGVkLCBzbyBpdCBkb2Vzbid0IGNvbnRpbnVlIHRvIHRh a2UgdXAgc3BhY2UuCiAJICovCi0JaTkxNV9nZW1fb2JqZWN0X2dndHRfdW5waW4oZ3VjX2Z3LT5n dWNfZndfb2JqKTsKKwlpOTE1X2dlbV9vYmplY3RfZ2d0dF91bnBpbihndWNfZnctPnVjX2Z3X29i aik7CiAKIAlyZXR1cm4gcmV0OwogfQpAQCAtNDI4LDE0ICs0MjgsMTQgQEAgc3RhdGljIGludCBp OTE1X3Jlc2V0X2d1YyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiBpbnQgaW50 ZWxfZ3VjX3NldHVwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiB7CiAJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwotCXN0cnVjdCBpbnRlbF9ndWNfZncg Kmd1Y19mdyA9ICZkZXZfcHJpdi0+Z3VjLmd1Y19mdzsKLQljb25zdCBjaGFyICpmd19wYXRoID0g Z3VjX2Z3LT5ndWNfZndfcGF0aDsKKwlzdHJ1Y3QgaW50ZWxfdWNfZncgKmd1Y19mdyA9ICZkZXZf cHJpdi0+Z3VjLmd1Y19mdzsKKwljb25zdCBjaGFyICpmd19wYXRoID0gZ3VjX2Z3LT51Y19md19w YXRoOwogCWludCByZXRyaWVzLCByZXQsIGVycjsKIAogCURSTV9ERUJVR19EUklWRVIoIkd1QyBm dyBzdGF0dXM6IHBhdGggJXMsIGZldGNoICVzLCBsb2FkICVzXG4iLAogCQlmd19wYXRoLAotCQlp bnRlbF9ndWNfZndfc3RhdHVzX3JlcHIoZ3VjX2Z3LT5ndWNfZndfZmV0Y2hfc3RhdHVzKSwKLQkJ aW50ZWxfZ3VjX2Z3X3N0YXR1c19yZXByKGd1Y19mdy0+Z3VjX2Z3X2xvYWRfc3RhdHVzKSk7CisJ CWludGVsX3VjX2Z3X3N0YXR1c19yZXByKGd1Y19mdy0+ZmV0Y2hfc3RhdHVzKSwKKwkJaW50ZWxf dWNfZndfc3RhdHVzX3JlcHIoZ3VjX2Z3LT5sb2FkX3N0YXR1cykpOwogCiAJLyogTG9hZGluZyBm b3JiaWRkZW4sIG9yIG5vIGZpcm13YXJlIHRvIGxvYWQ/ICovCiAJaWYgKCFpOTE1LmVuYWJsZV9n dWNfbG9hZGluZykgewpAQCAtNDUzLDIxICs0NTMsMjEgQEAgaW50IGludGVsX2d1Y19zZXR1cChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCX0KIAogCS8qIEZldGNoIGZhaWxlZCwgb3IgYWxyZWFk eSBmZXRjaGVkIGJ1dCBmYWlsZWQgdG8gbG9hZD8gKi8KLQlpZiAoZ3VjX2Z3LT5ndWNfZndfZmV0 Y2hfc3RhdHVzICE9IEdVQ19GSVJNV0FSRV9TVUNDRVNTKSB7CisJaWYgKGd1Y19mdy0+ZmV0Y2hf c3RhdHVzICE9IFVDX0ZJUk1XQVJFX1NVQ0NFU1MpIHsKIAkJZXJyID0gLUVJTzsKIAkJZ290byBm YWlsOwotCX0gZWxzZSBpZiAoZ3VjX2Z3LT5ndWNfZndfbG9hZF9zdGF0dXMgPT0gR1VDX0ZJUk1X QVJFX0ZBSUwpIHsKKwl9IGVsc2UgaWYgKGd1Y19mdy0+bG9hZF9zdGF0dXMgPT0gVUNfRklSTVdB UkVfRkFJTCkgewogCQllcnIgPSAtRU5PRVhFQzsKIAkJZ290byBmYWlsOwogCX0KIAogCWRpcmVj dF9pbnRlcnJ1cHRzX3RvX2hvc3QoZGV2X3ByaXYpOwogCi0JZ3VjX2Z3LT5ndWNfZndfbG9hZF9z dGF0dXMgPSBHVUNfRklSTVdBUkVfUEVORElORzsKKwlndWNfZnctPmxvYWRfc3RhdHVzID0gVUNf RklSTVdBUkVfUEVORElORzsKIAogCURSTV9ERUJVR19EUklWRVIoIkd1QyBmdyBzdGF0dXM6IGZl dGNoICVzLCBsb2FkICVzXG4iLAotCQlpbnRlbF9ndWNfZndfc3RhdHVzX3JlcHIoZ3VjX2Z3LT5n dWNfZndfZmV0Y2hfc3RhdHVzKSwKLQkJaW50ZWxfZ3VjX2Z3X3N0YXR1c19yZXByKGd1Y19mdy0+ Z3VjX2Z3X2xvYWRfc3RhdHVzKSk7CisJCWludGVsX3VjX2Z3X3N0YXR1c19yZXByKGd1Y19mdy0+ ZmV0Y2hfc3RhdHVzKSwKKwkJaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIoZ3VjX2Z3LT5sb2FkX3N0 YXR1cykpOwogCiAJZXJyID0gaTkxNV9ndWNfc3VibWlzc2lvbl9pbml0KGRldl9wcml2KTsKIAlp ZiAoZXJyKQpAQCAtNTAxLDExICs1MDEsMTEgQEAgaW50IGludGVsX2d1Y19zZXR1cChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KQogCQkJICJyZXRyeSAlZCBtb3JlIHRpbWUocylcbiIsIGVyciwgcmV0 cmllcyk7CiAJfQogCi0JZ3VjX2Z3LT5ndWNfZndfbG9hZF9zdGF0dXMgPSBHVUNfRklSTVdBUkVf U1VDQ0VTUzsKKwlndWNfZnctPmxvYWRfc3RhdHVzID0gVUNfRklSTVdBUkVfU1VDQ0VTUzsKIAog CURSTV9ERUJVR19EUklWRVIoIkd1QyBmdyBzdGF0dXM6IGZldGNoICVzLCBsb2FkICVzXG4iLAot CQlpbnRlbF9ndWNfZndfc3RhdHVzX3JlcHIoZ3VjX2Z3LT5ndWNfZndfZmV0Y2hfc3RhdHVzKSwK LQkJaW50ZWxfZ3VjX2Z3X3N0YXR1c19yZXByKGd1Y19mdy0+Z3VjX2Z3X2xvYWRfc3RhdHVzKSk7 CisJCWludGVsX3VjX2Z3X3N0YXR1c19yZXByKGd1Y19mdy0+ZmV0Y2hfc3RhdHVzKSwKKwkJaW50 ZWxfdWNfZndfc3RhdHVzX3JlcHIoZ3VjX2Z3LT5sb2FkX3N0YXR1cykpOwogCiAJaWYgKGk5MTUu ZW5hYmxlX2d1Y19zdWJtaXNzaW9uKSB7CiAJCWVyciA9IGk5MTVfZ3VjX3N1Ym1pc3Npb25fZW5h YmxlKGRldl9wcml2KTsKQEAgLTUxNyw4ICs1MTcsOCBAQCBpbnQgaW50ZWxfZ3VjX3NldHVwKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJcmV0dXJuIDA7CiAKIGZhaWw6Ci0JaWYgKGd1Y19mdy0+ Z3VjX2Z3X2xvYWRfc3RhdHVzID09IEdVQ19GSVJNV0FSRV9QRU5ESU5HKQotCQlndWNfZnctPmd1 Y19md19sb2FkX3N0YXR1cyA9IEdVQ19GSVJNV0FSRV9GQUlMOworCWlmIChndWNfZnctPmxvYWRf c3RhdHVzID09IFVDX0ZJUk1XQVJFX1BFTkRJTkcpCisJCWd1Y19mdy0+bG9hZF9zdGF0dXMgPSBV Q19GSVJNV0FSRV9GQUlMOwogCiAJZGlyZWN0X2ludGVycnVwdHNfdG9faG9zdChkZXZfcHJpdik7 CiAJaTkxNV9ndWNfc3VibWlzc2lvbl9kaXNhYmxlKGRldl9wcml2KTsKQEAgLTU2Myw3ICs1NjMs NyBAQCBmYWlsOgogCXJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyB2b2lkIGd1Y19md19mZXRjaChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgaW50ZWxfZ3VjX2Z3ICpndWNfZncpCit2b2lk IGludGVsX3VjX2Z3X2ZldGNoKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBpbnRlbF91 Y19mdyAqdWNfZncpCiB7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKIAljb25z dCBzdHJ1Y3QgZmlybXdhcmUgKmZ3OwpAQCAtNTcxLDE3ICs1NzEsMTcgQEAgc3RhdGljIHZvaWQg Z3VjX2Z3X2ZldGNoKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBpbnRlbF9ndWNfZncg Kmd1Y19mdykKIAlzaXplX3Qgc2l6ZTsKIAlpbnQgZXJyOwogCi0JRFJNX0RFQlVHX0RSSVZFUigi YmVmb3JlIHJlcXVlc3RpbmcgZmlybXdhcmU6IEd1QyBmdyBmZXRjaCBzdGF0dXMgJXNcbiIsCi0J CWludGVsX2d1Y19md19zdGF0dXNfcmVwcihndWNfZnctPmd1Y19md19mZXRjaF9zdGF0dXMpKTsK KwlEUk1fREVCVUdfRFJJVkVSKCJiZWZvcmUgcmVxdWVzdGluZyBmaXJtd2FyZTogdUMgZncgZmV0 Y2ggc3RhdHVzICVzXG4iLAorCQlpbnRlbF91Y19md19zdGF0dXNfcmVwcih1Y19mdy0+ZmV0Y2hf c3RhdHVzKSk7CiAKLQllcnIgPSByZXF1ZXN0X2Zpcm13YXJlKCZmdywgZ3VjX2Z3LT5ndWNfZndf cGF0aCwgJmRldi0+cGRldi0+ZGV2KTsKKwllcnIgPSByZXF1ZXN0X2Zpcm13YXJlKCZmdywgdWNf ZnctPnVjX2Z3X3BhdGgsICZkZXYtPnBkZXYtPmRldik7CiAJaWYgKGVycikKIAkJZ290byBmYWls OwogCWlmICghZncpCiAJCWdvdG8gZmFpbDsKIAotCURSTV9ERUJVR19EUklWRVIoImZldGNoIEd1 QyBmdyBmcm9tICVzIHN1Y2NlZWRlZCwgZncgJXBcbiIsCi0JCWd1Y19mdy0+Z3VjX2Z3X3BhdGgs IGZ3KTsKKwlEUk1fREVCVUdfRFJJVkVSKCJmZXRjaCB1QyBmdyBmcm9tICVzIHN1Y2NlZWRlZCwg ZncgJXBcbiIsCisJCXVjX2Z3LT51Y19md19wYXRoLCBmdyk7CiAKIAkvKiBDaGVjayB0aGUgc2l6 ZSBvZiB0aGUgYmxvYiBiZWZvcmUgZXhhbWluaW5nIGJ1ZmZlciBjb250ZW50cyAqLwogCWlmIChm dy0+c2l6ZSA8IHNpemVvZihzdHJ1Y3QgZ3VjX2Nzc19oZWFkZXIpKSB7CkBAIC01OTIsMzYgKzU5 MiwzNiBAQCBzdGF0aWMgdm9pZCBndWNfZndfZmV0Y2goc3RydWN0IGRybV9kZXZpY2UgKmRldiwg c3RydWN0IGludGVsX2d1Y19mdyAqZ3VjX2Z3KQogCWNzcyA9IChzdHJ1Y3QgZ3VjX2Nzc19oZWFk ZXIgKilmdy0+ZGF0YTsKIAogCS8qIEZpcm13YXJlIGJpdHMgYWx3YXlzIHN0YXJ0IGZyb20gaGVh ZGVyICovCi0JZ3VjX2Z3LT5oZWFkZXJfb2Zmc2V0ID0gMDsKLQlndWNfZnctPmhlYWRlcl9zaXpl ID0gKGNzcy0+aGVhZGVyX3NpemVfZHcgLSBjc3MtPm1vZHVsdXNfc2l6ZV9kdyAtCisJdWNfZnct PmhlYWRlcl9vZmZzZXQgPSAwOworCXVjX2Z3LT5oZWFkZXJfc2l6ZSA9IChjc3MtPmhlYWRlcl9z aXplX2R3IC0gY3NzLT5tb2R1bHVzX3NpemVfZHcgLQogCQljc3MtPmtleV9zaXplX2R3IC0gY3Nz LT5leHBvbmVudF9zaXplX2R3KSAqIHNpemVvZih1MzIpOwogCi0JaWYgKGd1Y19mdy0+aGVhZGVy X3NpemUgIT0gc2l6ZW9mKHN0cnVjdCBndWNfY3NzX2hlYWRlcikpIHsKKwlpZiAodWNfZnctPmhl YWRlcl9zaXplICE9IHNpemVvZihzdHJ1Y3QgZ3VjX2Nzc19oZWFkZXIpKSB7CiAJCURSTV9FUlJP UigiQ1NTIGhlYWRlciBkZWZpbml0aW9uIG1pc21hdGNoXG4iKTsKIAkJZ290byBmYWlsOwogCX0K IAogCS8qIHRoZW4sIHVDb2RlICovCi0JZ3VjX2Z3LT51Y29kZV9vZmZzZXQgPSBndWNfZnctPmhl YWRlcl9vZmZzZXQgKyBndWNfZnctPmhlYWRlcl9zaXplOwotCWd1Y19mdy0+dWNvZGVfc2l6ZSA9 IChjc3MtPnNpemVfZHcgLSBjc3MtPmhlYWRlcl9zaXplX2R3KSAqIHNpemVvZih1MzIpOworCXVj X2Z3LT51Y29kZV9vZmZzZXQgPSB1Y19mdy0+aGVhZGVyX29mZnNldCArIHVjX2Z3LT5oZWFkZXJf c2l6ZTsKKwl1Y19mdy0+dWNvZGVfc2l6ZSA9IChjc3MtPnNpemVfZHcgLSBjc3MtPmhlYWRlcl9z aXplX2R3KSAqIHNpemVvZih1MzIpOwogCiAJLyogbm93IFJTQSAqLwogCWlmIChjc3MtPmtleV9z aXplX2R3ICE9IFVPU19SU0FfU0NSQVRDSF9NQVhfQ09VTlQpIHsKIAkJRFJNX0VSUk9SKCJSU0Eg a2V5IHNpemUgaXMgYmFkXG4iKTsKIAkJZ290byBmYWlsOwogCX0KLQlndWNfZnctPnJzYV9vZmZz ZXQgPSBndWNfZnctPnVjb2RlX29mZnNldCArIGd1Y19mdy0+dWNvZGVfc2l6ZTsKLQlndWNfZnct PnJzYV9zaXplID0gY3NzLT5rZXlfc2l6ZV9kdyAqIHNpemVvZih1MzIpOworCXVjX2Z3LT5yc2Ff b2Zmc2V0ID0gdWNfZnctPnVjb2RlX29mZnNldCArIHVjX2Z3LT51Y29kZV9zaXplOworCXVjX2Z3 LT5yc2Ffc2l6ZSA9IGNzcy0+a2V5X3NpemVfZHcgKiBzaXplb2YodTMyKTsKIAogCS8qIEF0IGxl YXN0LCBpdCBzaG91bGQgaGF2ZSBoZWFkZXIsIHVDb2RlIGFuZCBSU0EuIFNpemUgb2YgYWxsIHRo cmVlLiAqLwotCXNpemUgPSBndWNfZnctPmhlYWRlcl9zaXplICsgZ3VjX2Z3LT51Y29kZV9zaXpl ICsgZ3VjX2Z3LT5yc2Ffc2l6ZTsKKwlzaXplID0gdWNfZnctPmhlYWRlcl9zaXplICsgdWNfZnct PnVjb2RlX3NpemUgKyB1Y19mdy0+cnNhX3NpemU7CiAJaWYgKGZ3LT5zaXplIDwgc2l6ZSkgewog CQlEUk1fRVJST1IoIk1pc3NpbmcgZmlybXdhcmUgY29tcG9uZW50c1xuIik7CiAJCWdvdG8gZmFp bDsKIAl9CiAKIAkvKiBIZWFkZXIgYW5kIHVDb2RlIHdpbGwgYmUgbG9hZGVkIHRvIFdPUENNLiBT aXplIG9mIHRoZSB0d28uICovCi0Jc2l6ZSA9IGd1Y19mdy0+aGVhZGVyX3NpemUgKyBndWNfZnct PnVjb2RlX3NpemU7CisJc2l6ZSA9IHVjX2Z3LT5oZWFkZXJfc2l6ZSArIHVjX2Z3LT51Y29kZV9z aXplOwogCWlmIChzaXplID4gZ3VjX3dvcGNtX3NpemUodG9faTkxNShkZXYpKSkgewogCQlEUk1f RVJST1IoIkZpcm13YXJlIGlzIHRvbyBsYXJnZSB0byBmaXQgaW4gV09QQ01cbiIpOwogCQlnb3Rv IGZhaWw7CkBAIC02MzMsMjEgKzYzMywyMSBAQCBzdGF0aWMgdm9pZCBndWNfZndfZmV0Y2goc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGludGVsX2d1Y19mdyAqZ3VjX2Z3KQogCSAqIFRX TyBieXRlcyBlYWNoIChpLmUuIHUxNiksIGFsdGhvdWdoIGFsbCBwb2ludGVycyBhbmQgb2Zmc2V0 cyBhcmUgZGVmaW5lZAogCSAqIGluIHRlcm1zIG9mIGJ5dGVzICh1OCkuCiAJICovCi0JZ3VjX2Z3 LT5ndWNfZndfbWFqb3JfZm91bmQgPSBjc3MtPmd1Y19zd192ZXJzaW9uID4+IDE2OwotCWd1Y19m dy0+Z3VjX2Z3X21pbm9yX2ZvdW5kID0gY3NzLT5ndWNfc3dfdmVyc2lvbiAmIDB4RkZGRjsKLQot CWlmIChndWNfZnctPmd1Y19md19tYWpvcl9mb3VuZCAhPSBndWNfZnctPmd1Y19md19tYWpvcl93 YW50ZWQgfHwKLQkgICAgZ3VjX2Z3LT5ndWNfZndfbWlub3JfZm91bmQgPCBndWNfZnctPmd1Y19m d19taW5vcl93YW50ZWQpIHsKLQkJRFJNX0VSUk9SKCJHdUMgZmlybXdhcmUgdmVyc2lvbiAlZC4l ZCwgcmVxdWlyZWQgJWQuJWRcbiIsCi0JCQlndWNfZnctPmd1Y19md19tYWpvcl9mb3VuZCwgZ3Vj X2Z3LT5ndWNfZndfbWlub3JfZm91bmQsCi0JCQlndWNfZnctPmd1Y19md19tYWpvcl93YW50ZWQs IGd1Y19mdy0+Z3VjX2Z3X21pbm9yX3dhbnRlZCk7CisJdWNfZnctPm1ham9yX3Zlcl9mb3VuZCA9 IGNzcy0+Z3VjX3N3X3ZlcnNpb24gPj4gMTY7CisJdWNfZnctPm1pbm9yX3Zlcl9mb3VuZCA9IGNz cy0+Z3VjX3N3X3ZlcnNpb24gJiAweEZGRkY7CisKKwlpZiAodWNfZnctPm1ham9yX3Zlcl9mb3Vu ZCAhPSB1Y19mdy0+bWFqb3JfdmVyX3dhbnRlZCB8fAorCSAgICB1Y19mdy0+bWlub3JfdmVyX2Zv dW5kIDwgdWNfZnctPm1pbm9yX3Zlcl93YW50ZWQpIHsKKwkJRFJNX0VSUk9SKCJ1QyBmaXJtd2Fy ZSB2ZXJzaW9uICVkLiVkLCByZXF1aXJlZCAlZC4lZFxuIiwKKwkJCXVjX2Z3LT5tYWpvcl92ZXJf Zm91bmQsIHVjX2Z3LT5taW5vcl92ZXJfZm91bmQsCisJCQl1Y19mdy0+bWFqb3JfdmVyX3dhbnRl ZCwgdWNfZnctPm1pbm9yX3Zlcl93YW50ZWQpOwogCQllcnIgPSAtRU5PRVhFQzsKIAkJZ290byBm YWlsOwogCX0KIAogCURSTV9ERUJVR19EUklWRVIoImZpcm13YXJlIHZlcnNpb24gJWQuJWQgT0sg KG1pbmltdW0gJWQuJWQpXG4iLAotCQkJZ3VjX2Z3LT5ndWNfZndfbWFqb3JfZm91bmQsIGd1Y19m dy0+Z3VjX2Z3X21pbm9yX2ZvdW5kLAotCQkJZ3VjX2Z3LT5ndWNfZndfbWFqb3Jfd2FudGVkLCBn dWNfZnctPmd1Y19md19taW5vcl93YW50ZWQpOworCQkJdWNfZnctPm1ham9yX3Zlcl9mb3VuZCwg dWNfZnctPm1pbm9yX3Zlcl9mb3VuZCwKKwkJCXVjX2Z3LT5tYWpvcl92ZXJfd2FudGVkLCB1Y19m dy0+bWlub3JfdmVyX3dhbnRlZCk7CiAKIAltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7 CiAJb2JqID0gaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9mcm9tX2RhdGEoZGV2LCBmdy0+ZGF0YSwg ZnctPnNpemUpOwpAQCAtNjU3LDMxICs2NTcsMzEgQEAgc3RhdGljIHZvaWQgZ3VjX2Z3X2ZldGNo KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBpbnRlbF9ndWNfZncgKmd1Y19mdykKIAkJ Z290byBmYWlsOwogCX0KIAotCWd1Y19mdy0+Z3VjX2Z3X29iaiA9IG9iajsKLQlndWNfZnctPmd1 Y19md19zaXplID0gZnctPnNpemU7CisJdWNfZnctPnVjX2Z3X29iaiA9IG9iajsKKwl1Y19mdy0+ dWNfZndfc2l6ZSA9IGZ3LT5zaXplOwogCi0JRFJNX0RFQlVHX0RSSVZFUigiR3VDIGZ3IGZldGNo IHN0YXR1cyBTVUNDRVNTLCBvYmogJXBcbiIsCi0JCQlndWNfZnctPmd1Y19md19vYmopOworCURS TV9ERUJVR19EUklWRVIoInVDIGZ3IGZldGNoIHN0YXR1cyBTVUNDRVNTLCBvYmogJXBcbiIsCisJ CQl1Y19mdy0+dWNfZndfb2JqKTsKIAogCXJlbGVhc2VfZmlybXdhcmUoZncpOwotCWd1Y19mdy0+ Z3VjX2Z3X2ZldGNoX3N0YXR1cyA9IEdVQ19GSVJNV0FSRV9TVUNDRVNTOworCXVjX2Z3LT5mZXRj aF9zdGF0dXMgPSBVQ19GSVJNV0FSRV9TVUNDRVNTOwogCXJldHVybjsKIAogZmFpbDoKLQlEUk1f REVCVUdfRFJJVkVSKCJHdUMgZncgZmV0Y2ggc3RhdHVzIEZBSUw7IGVyciAlZCwgZncgJXAsIG9i aiAlcFxuIiwKLQkJZXJyLCBmdywgZ3VjX2Z3LT5ndWNfZndfb2JqKTsKLQlEUk1fRVJST1IoIkZh aWxlZCB0byBmZXRjaCBHdUMgZmlybXdhcmUgZnJvbSAlcyAoZXJyb3IgJWQpXG4iLAotCQkgIGd1 Y19mdy0+Z3VjX2Z3X3BhdGgsIGVycik7CisJRFJNX0RFQlVHX0RSSVZFUigidUMgZncgZmV0Y2gg c3RhdHVzIEZBSUw7IGVyciAlZCwgZncgJXAsIG9iaiAlcFxuIiwKKwkJZXJyLCBmdywgdWNfZnct PnVjX2Z3X29iaik7CisJRFJNX0VSUk9SKCJGYWlsZWQgdG8gZmV0Y2ggdUMgZmlybXdhcmUgZnJv bSAlcyAoZXJyb3IgJWQpXG4iLAorCQkgIHVjX2Z3LT51Y19md19wYXRoLCBlcnIpOwogCiAJbXV0 ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwotCW9iaiA9IGd1Y19mdy0+Z3VjX2Z3X29iajsK KwlvYmogPSB1Y19mdy0+dWNfZndfb2JqOwogCWlmIChvYmopCiAJCWk5MTVfZ2VtX29iamVjdF9w dXQob2JqKTsKLQlndWNfZnctPmd1Y19md19vYmogPSBOVUxMOworCXVjX2Z3LT51Y19md19vYmog PSBOVUxMOwogCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwogCiAJcmVsZWFzZV9m aXJtd2FyZShmdyk7CQkvKiBPSyBldmVuIGlmIGZ3IGlzIE5VTEwgKi8KLQlndWNfZnctPmd1Y19m d19mZXRjaF9zdGF0dXMgPSBHVUNfRklSTVdBUkVfRkFJTDsKKwl1Y19mdy0+ZmV0Y2hfc3RhdHVz ID0gVUNfRklSTVdBUkVfRkFJTDsKIH0KIAogLyoqCkBAIC02OTYsNyArNjk2LDcgQEAgZmFpbDoK IHZvaWQgaW50ZWxfZ3VjX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIHsKIAlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Ci0Jc3RydWN0IGludGVs X2d1Y19mdyAqZ3VjX2Z3ID0gJmRldl9wcml2LT5ndWMuZ3VjX2Z3OworCXN0cnVjdCBpbnRlbF91 Y19mdyAqZ3VjX2Z3ID0gJmRldl9wcml2LT5ndWMuZ3VjX2Z3OwogCWNvbnN0IGNoYXIgKmZ3X3Bh dGg7CiAKIAkvKiBBIG5lZ2F0aXZlIHZhbHVlIG1lYW5zICJ1c2UgcGxhdGZvcm0gZGVmYXVsdCIg Ki8KQEAgLTcwOSwyNCArNzA5LDI0IEBAIHZvaWQgaW50ZWxfZ3VjX2luaXQoc3RydWN0IGRybV9k ZXZpY2UgKmRldikKIAkJZndfcGF0aCA9IE5VTEw7CiAJfSBlbHNlIGlmIChJU19TS1lMQUtFKGRl dikpIHsKIAkJZndfcGF0aCA9IEk5MTVfU0tMX0dVQ19VQ09ERTsKLQkJZ3VjX2Z3LT5ndWNfZndf bWFqb3Jfd2FudGVkID0gU0tMX0ZXX01BSk9SOwotCQlndWNfZnctPmd1Y19md19taW5vcl93YW50 ZWQgPSBTS0xfRldfTUlOT1I7CisJCWd1Y19mdy0+bWFqb3JfdmVyX3dhbnRlZCA9IFNLTF9GV19N QUpPUjsKKwkJZ3VjX2Z3LT5taW5vcl92ZXJfd2FudGVkID0gU0tMX0ZXX01JTk9SOwogCX0gZWxz ZSBpZiAoSVNfQlJPWFRPTihkZXYpKSB7CiAJCWZ3X3BhdGggPSBJOTE1X0JYVF9HVUNfVUNPREU7 Ci0JCWd1Y19mdy0+Z3VjX2Z3X21ham9yX3dhbnRlZCA9IEJYVF9GV19NQUpPUjsKLQkJZ3VjX2Z3 LT5ndWNfZndfbWlub3Jfd2FudGVkID0gQlhUX0ZXX01JTk9SOworCQlndWNfZnctPm1ham9yX3Zl cl93YW50ZWQgPSBCWFRfRldfTUFKT1I7CisJCWd1Y19mdy0+bWlub3JfdmVyX3dhbnRlZCA9IEJY VF9GV19NSU5PUjsKIAl9IGVsc2UgaWYgKElTX0tBQllMQUtFKGRldikpIHsKIAkJZndfcGF0aCA9 IEk5MTVfS0JMX0dVQ19VQ09ERTsKLQkJZ3VjX2Z3LT5ndWNfZndfbWFqb3Jfd2FudGVkID0gS0JM X0ZXX01BSk9SOwotCQlndWNfZnctPmd1Y19md19taW5vcl93YW50ZWQgPSBLQkxfRldfTUlOT1I7 CisJCWd1Y19mdy0+bWFqb3JfdmVyX3dhbnRlZCA9IEtCTF9GV19NQUpPUjsKKwkJZ3VjX2Z3LT5t aW5vcl92ZXJfd2FudGVkID0gS0JMX0ZXX01JTk9SOwogCX0gZWxzZSB7CiAJCWZ3X3BhdGggPSAi IjsJLyogdW5rbm93biBkZXZpY2UgKi8KIAl9CiAKLQlndWNfZnctPmd1Y19kZXYgPSBkZXY7Ci0J Z3VjX2Z3LT5ndWNfZndfcGF0aCA9IGZ3X3BhdGg7Ci0JZ3VjX2Z3LT5ndWNfZndfZmV0Y2hfc3Rh dHVzID0gR1VDX0ZJUk1XQVJFX05PTkU7Ci0JZ3VjX2Z3LT5ndWNfZndfbG9hZF9zdGF0dXMgPSBH VUNfRklSTVdBUkVfTk9ORTsKKwlndWNfZnctPnVjX2RldiA9IGRldjsKKwlndWNfZnctPnVjX2Z3 X3BhdGggPSBmd19wYXRoOworCWd1Y19mdy0+ZmV0Y2hfc3RhdHVzID0gVUNfRklSTVdBUkVfTk9O RTsKKwlndWNfZnctPmxvYWRfc3RhdHVzID0gVUNfRklSTVdBUkVfTk9ORTsKIAogCS8qIEVhcmx5 IChhbmQgc2lsZW50KSByZXR1cm4gaWYgR3VDIGxvYWRpbmcgaXMgZGlzYWJsZWQgKi8KIAlpZiAo IWk5MTUuZW5hYmxlX2d1Y19sb2FkaW5nKQpAQCAtNzM2LDkgKzczNiw5IEBAIHZvaWQgaW50ZWxf Z3VjX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAlpZiAoKmZ3X3BhdGggPT0gJ1wwJykK IAkJcmV0dXJuOwogCi0JZ3VjX2Z3LT5ndWNfZndfZmV0Y2hfc3RhdHVzID0gR1VDX0ZJUk1XQVJF X1BFTkRJTkc7CisJZ3VjX2Z3LT5mZXRjaF9zdGF0dXMgPSBVQ19GSVJNV0FSRV9QRU5ESU5HOwog CURSTV9ERUJVR19EUklWRVIoIkd1QyBmaXJtd2FyZSBwZW5kaW5nLCBwYXRoICVzXG4iLCBmd19w YXRoKTsKLQlndWNfZndfZmV0Y2goZGV2LCBndWNfZncpOworCWludGVsX3VjX2Z3X2ZldGNoKGRl diwgZ3VjX2Z3KTsKIAkvKiBzdGF0dXMgbXVzdCBub3cgYmUgRkFJTCBvciBTVUNDRVNTICovCiB9 CiAKQEAgLTc0OSwxNyArNzQ5LDE3IEBAIHZvaWQgaW50ZWxfZ3VjX2luaXQoc3RydWN0IGRybV9k ZXZpY2UgKmRldikKIHZvaWQgaW50ZWxfZ3VjX2Zpbmkoc3RydWN0IGRybV9kZXZpY2UgKmRldikK IHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Ci0J c3RydWN0IGludGVsX2d1Y19mdyAqZ3VjX2Z3ID0gJmRldl9wcml2LT5ndWMuZ3VjX2Z3OworCXN0 cnVjdCBpbnRlbF91Y19mdyAqZ3VjX2Z3ID0gJmRldl9wcml2LT5ndWMuZ3VjX2Z3OwogCiAJbXV0 ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwogCWRpcmVjdF9pbnRlcnJ1cHRzX3RvX2hvc3Qo ZGV2X3ByaXYpOwogCWk5MTVfZ3VjX3N1Ym1pc3Npb25fZGlzYWJsZShkZXZfcHJpdik7CiAJaTkx NV9ndWNfc3VibWlzc2lvbl9maW5pKGRldl9wcml2KTsKIAotCWlmIChndWNfZnctPmd1Y19md19v YmopCi0JCWk5MTVfZ2VtX29iamVjdF9wdXQoZ3VjX2Z3LT5ndWNfZndfb2JqKTsKLQlndWNfZnct Pmd1Y19md19vYmogPSBOVUxMOworCWlmIChndWNfZnctPnVjX2Z3X29iaikKKwkJaTkxNV9nZW1f b2JqZWN0X3B1dChndWNfZnctPnVjX2Z3X29iaik7CisJZ3VjX2Z3LT51Y19md19vYmogPSBOVUxM OwogCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwogCi0JZ3VjX2Z3LT5ndWNfZndf ZmV0Y2hfc3RhdHVzID0gR1VDX0ZJUk1XQVJFX05PTkU7CisJZ3VjX2Z3LT5mZXRjaF9zdGF0dXMg PSBVQ19GSVJNV0FSRV9OT05FOwogfQotLSAKMS45LjEKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4 QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=