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, 29 Sep 2016 11:03:58 -0700 Message-ID: <1475172245-10939-2-git-send-email-anusha.srivatsa@intel.com> References: <1475172245-10939-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 A83276E8D4 for ; Thu, 29 Sep 2016 18:04:33 +0000 (UTC) In-Reply-To: <1475172245-10939-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 List-Id: intel-gfx@lists.freedesktop.org RnJvbTogUGV0ZXIgQW50b2luZSA8cGV0ZXIuYW50b2luZUBpbnRlbC5jb20+CgpSZW5hbWUgc29t ZSBvZiB0aGUgR3VDIGZ3IGxvYWRpbmcgY29kZSB0byBtYWtlIHRoZW0gbW9yZSBnZW5lcmFsLiBX ZQp3aWxsIHV0aWxpc2UgdGhlbSBmb3IgSHVDIGxvYWRpbmcgYXMgd2VsbC4KICAgICBzL2ludGVs X2d1Y19mdy9pbnRlbF91Y19mdy9nCiAgICAgcy9HVUNfRklSTVdBUkUvVUNfRklSTVdBUkUvZwoK U3RydWN0IGludGVsX2d1Y19mdyBpcyByZW5hbWVkIHRvIGludGVsX3VjX2Z3LiBQcmVmaXggb2Yg dHRzIG1lbWJlcnMsCnN1Y2ggYXMgJ2d1Yycgb3IgJ2d1Y19mdycgZWl0aGVyIGlzIHJlbmFtZWQg dG8gJ3VjJyBvciByZW1vdmVkIGZvcgpzYW1lIHB1cnBvc2UuCgp2MjogcmViYXNlZCBvbiB0b3Ag b2YgbmlnaHRseS4KICAgIHJlYXBwbGllZCB0aGUgc2VhcmNoL3JlcGxhY2UgYXMgdXBzdHJlYW0g Y29kZSBhcyBjaGFuZ2VkLgp2MzogcmViYXNlZCBhZ2FpbiBvbiBkcm0tbmlnaHRseS4KdjQ6IHJl bW92ZWQgRyBmcm9tIG1lc3NhZ2VzIGluIHNoYXJlZCBmdyBmZXRjaCBmdW5jdGlvbi4KdjU6IHJl YmFzZWQuCnY3OiByZWJhc2VkLgp2ODogcmViYXNlZC4KClNpZ25lZC1vZmYtYnk6IEFudXNoYSBT cml2YXRzYSA8YW51c2hhLnNyaXZhdHNhQGludGVsLmNvbT4KU2lnbmVkLW9mZi1ieTogQWxleCBE YWkgPHl1LmRhaUBpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IFBldGVyIEFudG9pbmUgPHBldGVy LmFudG9pbmVAaW50ZWwuY29tPgpSZXZpZXdlZC1ieTogRGF2ZSBHb3Jkb24gPGRhdmlkLnMuZ29y ZG9uQGludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyAg ICAgICAgfCAgMTIgKy0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9u LmMgfCAgIDQgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5oICAgICAgICAgICB8 ICAzOSArKysrLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5jICAg IHwgMTU2ICsrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tCiA0IGZpbGVzIGNoYW5nZWQsIDEw NiBpbnNlcnRpb25zKCspLCAxMDUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rl YnVnZnMuYwppbmRleCA0ZmI5ZDgyLi40NDI1OGE4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2RlYnVnZnMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rl YnVnZnMuYwpAQCAtMjQxNiw3ICsyNDE2LDcgQEAgc3RhdGljIGludCBpOTE1X2xsYyhzdHJ1Y3Qg c2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCiBzdGF0aWMgaW50IGk5MTVfZ3VjX2xvYWRfc3RhdHVz X2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQogewogCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IG5vZGVfdG9faTkxNShtLT5wcml2YXRlKTsKLQlzdHJ1Y3Qg aW50ZWxfZ3VjX2Z3ICpndWNfZncgPSAmZGV2X3ByaXYtPmd1Yy5ndWNfZnc7CisJc3RydWN0IGlu dGVsX3VjX2Z3ICpndWNfZncgPSAmZGV2X3ByaXYtPmd1Yy5ndWNfZnc7CiAJdTMyIHRtcCwgaTsK IAogCWlmICghSEFTX0dVQ19VQ09ERShkZXZfcHJpdikpCkBAIC0yNDI0LDE1ICsyNDI0LDE1IEBA IHN0YXRpYyBpbnQgaTkxNV9ndWNfbG9hZF9zdGF0dXNfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0s IHZvaWQgKmRhdGEpCiAKIAlzZXFfcHJpbnRmKG0sICJHdUMgZmlybXdhcmUgc3RhdHVzOlxuIik7 CiAJc2VxX3ByaW50ZihtLCAiXHRwYXRoOiAlc1xuIiwKLQkJZ3VjX2Z3LT5ndWNfZndfcGF0aCk7 CisJCWd1Y19mdy0+dWNfZndfcGF0aCk7CiAJc2VxX3ByaW50ZihtLCAiXHRmZXRjaDogJXNcbiIs Ci0JCWludGVsX2d1Y19md19zdGF0dXNfcmVwcihndWNfZnctPmd1Y19md19mZXRjaF9zdGF0dXMp KTsKKwkJaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIoZ3VjX2Z3LT5mZXRjaF9zdGF0dXMpKTsKIAlz ZXFfcHJpbnRmKG0sICJcdGxvYWQ6ICVzXG4iLAotCQlpbnRlbF9ndWNfZndfc3RhdHVzX3JlcHIo Z3VjX2Z3LT5ndWNfZndfbG9hZF9zdGF0dXMpKTsKKwkJaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIo Z3VjX2Z3LT5sb2FkX3N0YXR1cykpOwogCXNlcV9wcmludGYobSwgIlx0dmVyc2lvbiB3YW50ZWQ6 ICVkLiVkXG4iLAotCQlndWNfZnctPmd1Y19md19tYWpvcl93YW50ZWQsIGd1Y19mdy0+Z3VjX2Z3 X21pbm9yX3dhbnRlZCk7CisJCWd1Y19mdy0+bWFqb3JfdmVyX3dhbnRlZCwgZ3VjX2Z3LT5taW5v cl92ZXJfd2FudGVkKTsKIAlzZXFfcHJpbnRmKG0sICJcdHZlcnNpb24gZm91bmQ6ICVkLiVkXG4i LAotCQlndWNfZnctPmd1Y19md19tYWpvcl9mb3VuZCwgZ3VjX2Z3LT5ndWNfZndfbWlub3JfZm91 bmQpOworCQlndWNfZnctPm1ham9yX3Zlcl9mb3VuZCwgZ3VjX2Z3LT5taW5vcl92ZXJfZm91bmQp OwogCXNlcV9wcmludGYobSwgIlx0aGVhZGVyOiBvZmZzZXQgaXMgJWQ7IHNpemUgPSAlZFxuIiwK IAkJZ3VjX2Z3LT5oZWFkZXJfb2Zmc2V0LCBndWNfZnctPmhlYWRlcl9zaXplKTsKIAlzZXFfcHJp bnRmKG0sICJcdHVDb2RlOiBvZmZzZXQgaXMgJWQ7IHNpemUgPSAlZFxuIiwKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYwppbmRleCA0MzM1OGUxLi40YjkyOTQzIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jCkBAIC0xMDcyLDcg KzEwNzIsNyBAQCBpbnQgaW50ZWxfZ3VjX3N1c3BlbmQoc3RydWN0IGRybV9kZXZpY2UgKmRldikK IAlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4OwogCXUzMiBkYXRhWzNdOwogCi0JaWYgKGd1 Yy0+Z3VjX2Z3Lmd1Y19md19sb2FkX3N0YXR1cyAhPSBHVUNfRklSTVdBUkVfU1VDQ0VTUykKKwlp ZiAoZ3VjLT5ndWNfZncubG9hZF9zdGF0dXMgIT0gVUNfRklSTVdBUkVfU1VDQ0VTUykKIAkJcmV0 dXJuIDA7CiAKIAljdHggPSBkZXZfcHJpdi0+a2VybmVsX2NvbnRleHQ7CkBAIC0xMDk4LDcgKzEw OTgsNyBAQCBpbnQgaW50ZWxfZ3VjX3Jlc3VtZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCXN0 cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHg7CiAJdTMyIGRhdGFbM107CiAKLQlpZiAoZ3VjLT5n dWNfZncuZ3VjX2Z3X2xvYWRfc3RhdHVzICE9IEdVQ19GSVJNV0FSRV9TVUNDRVNTKQorCWlmIChn dWMtPmd1Y19mdy5sb2FkX3N0YXR1cyAhPSBVQ19GSVJNV0FSRV9TVUNDRVNTKQogCQlyZXR1cm4g MDsKIAogCWN0eCA9IGRldl9wcml2LT5rZXJuZWxfY29udGV4dDsKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf Z3VjLmgKaW5kZXggYjFiYTg2OS4uYjEzNGE0MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZ3VjLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjLmgK QEAgLTkxLDI5ICs5MSwyOSBAQCBzdHJ1Y3QgaTkxNV9ndWNfY2xpZW50IHsKIAl1aW50NjRfdCBz dWJtaXNzaW9uc1tJOTE1X05VTV9FTkdJTkVTXTsKIH07CiAKLWVudW0gaW50ZWxfZ3VjX2Z3X3N0 YXR1cyB7Ci0JR1VDX0ZJUk1XQVJFX0ZBSUwgPSAtMSwKLQlHVUNfRklSTVdBUkVfTk9ORSA9IDAs Ci0JR1VDX0ZJUk1XQVJFX1BFTkRJTkcsCi0JR1VDX0ZJUk1XQVJFX1NVQ0NFU1MKK2VudW0gaW50 ZWxfdWNfZndfc3RhdHVzIHsKKwlVQ19GSVJNV0FSRV9GQUlMID0gLTEsCisJVUNfRklSTVdBUkVf Tk9ORSA9IDAsCisJVUNfRklSTVdBUkVfUEVORElORywKKwlVQ19GSVJNV0FSRV9TVUNDRVNTCiB9 OwogCiAvKgogICogVGhpcyBzdHJ1Y3R1cmUgZW5jYXBzdWxhdGVzIGFsbCB0aGUgZGF0YSBuZWVk ZWQgZHVyaW5nIHRoZSBwcm9jZXNzCiAgKiBvZiBmZXRjaGluZywgY2FjaGluZywgYW5kIGxvYWRp bmcgdGhlIGZpcm13YXJlIGltYWdlIGludG8gdGhlIEd1Qy4KICAqLwotc3RydWN0IGludGVsX2d1 Y19mdyB7Ci0Jc3RydWN0IGRybV9kZXZpY2UgKgkJZ3VjX2RldjsKLQljb25zdCBjaGFyICoJCQln dWNfZndfcGF0aDsKLQlzaXplX3QJCQkJZ3VjX2Z3X3NpemU7Ci0Jc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgKglndWNfZndfb2JqOwotCWVudW0gaW50ZWxfZ3VjX2Z3X3N0YXR1cwlndWNfZndf ZmV0Y2hfc3RhdHVzOwotCWVudW0gaW50ZWxfZ3VjX2Z3X3N0YXR1cwlndWNfZndfbG9hZF9zdGF0 dXM7Ci0KLQl1aW50MTZfdAkJCWd1Y19md19tYWpvcl93YW50ZWQ7Ci0JdWludDE2X3QJCQlndWNf ZndfbWlub3Jfd2FudGVkOwotCXVpbnQxNl90CQkJZ3VjX2Z3X21ham9yX2ZvdW5kOwotCXVpbnQx Nl90CQkJZ3VjX2Z3X21pbm9yX2ZvdW5kOworc3RydWN0IGludGVsX3VjX2Z3IHsKKwlzdHJ1Y3Qg ZHJtX2RldmljZSAqdWNfZGV2OworCWNvbnN0IGNoYXIgKnVjX2Z3X3BhdGg7CisJc2l6ZV90IHVj X2Z3X3NpemU7CisJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKnVjX2Z3X29iajsKKwllbnVt IGludGVsX3VjX2Z3X3N0YXR1cyBmZXRjaF9zdGF0dXM7CisJZW51bSBpbnRlbF91Y19md19zdGF0 dXMgbG9hZF9zdGF0dXM7CisKKwl1aW50MTZfdCBtYWpvcl92ZXJfd2FudGVkOworCXVpbnQxNl90 IG1pbm9yX3Zlcl93YW50ZWQ7CisJdWludDE2X3QgbWFqb3JfdmVyX2ZvdW5kOworCXVpbnQxNl90 IG1pbm9yX3Zlcl9mb3VuZDsKIAogCXVpbnQzMl90IGhlYWRlcl9zaXplOwogCXVpbnQzMl90IGhl YWRlcl9vZmZzZXQ7CkBAIC0xMjQsNyArMTI0LDcgQEAgc3RydWN0IGludGVsX2d1Y19mdyB7CiB9 OwogCiBzdHJ1Y3QgaW50ZWxfZ3VjIHsKLQlzdHJ1Y3QgaW50ZWxfZ3VjX2Z3IGd1Y19mdzsKKwlz dHJ1Y3QgaW50ZWxfdWNfZncgZ3VjX2Z3OwogCXVpbnQzMl90IGxvZ19mbGFnczsKIAlzdHJ1Y3Qg aTkxNV92bWEgKmxvZ192bWE7CiAKQEAgLTE1Miw5ICsxNTIsMTAgQEAgc3RydWN0IGludGVsX2d1 YyB7CiBleHRlcm4gdm9pZCBpbnRlbF9ndWNfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsK IGV4dGVybiBpbnQgaW50ZWxfZ3VjX3NldHVwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwogZXh0 ZXJuIHZvaWQgaW50ZWxfZ3VjX2Zpbmkoc3RydWN0IGRybV9kZXZpY2UgKmRldik7Ci1leHRlcm4g Y29uc3QgY2hhciAqaW50ZWxfZ3VjX2Z3X3N0YXR1c19yZXByKGVudW0gaW50ZWxfZ3VjX2Z3X3N0 YXR1cyBzdGF0dXMpOworZXh0ZXJuIGNvbnN0IGNoYXIgKmludGVsX3VjX2Z3X3N0YXR1c19yZXBy KGVudW0gaW50ZWxfdWNfZndfc3RhdHVzIHN0YXR1cyk7CiBleHRlcm4gaW50IGludGVsX2d1Y19z dXNwZW5kKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwogZXh0ZXJuIGludCBpbnRlbF9ndWNfcmVz dW1lKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwordm9pZCBpbnRlbF91Y19md19mZXRjaChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgaW50ZWxfdWNfZncgKnVjX2Z3KTsKIAogLyogaTkx NV9ndWNfc3VibWlzc2lvbi5jICovCiBpbnQgaTkxNV9ndWNfc3VibWlzc2lvbl9pbml0KHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9n dWNfbG9hZGVyLmMKaW5kZXggN2FjZTk2Yi4uNDkzMjk1ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2d1Y19sb2FkZXIuYwpAQCAtODEsMTYgKzgxLDE2IEBAIE1PRFVMRV9GSVJNV0FSRShJ OTE1X0JYVF9HVUNfVUNPREUpOwogTU9EVUxFX0ZJUk1XQVJFKEk5MTVfS0JMX0dVQ19VQ09ERSk7 CiAKIC8qIFVzZXItZnJpZW5kbHkgcmVwcmVzZW50YXRpb24gb2YgYW4gZW51bSAqLwotY29uc3Qg Y2hhciAqaW50ZWxfZ3VjX2Z3X3N0YXR1c19yZXByKGVudW0gaW50ZWxfZ3VjX2Z3X3N0YXR1cyBz dGF0dXMpCitjb25zdCBjaGFyICppbnRlbF91Y19md19zdGF0dXNfcmVwcihlbnVtIGludGVsX3Vj X2Z3X3N0YXR1cyBzdGF0dXMpCiB7CiAJc3dpdGNoIChzdGF0dXMpIHsKLQljYXNlIEdVQ19GSVJN V0FSRV9GQUlMOgorCWNhc2UgVUNfRklSTVdBUkVfRkFJTDoKIAkJcmV0dXJuICJGQUlMIjsKLQlj YXNlIEdVQ19GSVJNV0FSRV9OT05FOgorCWNhc2UgVUNfRklSTVdBUkVfTk9ORToKIAkJcmV0dXJu ICJOT05FIjsKLQljYXNlIEdVQ19GSVJNV0FSRV9QRU5ESU5HOgorCWNhc2UgVUNfRklSTVdBUkVf UEVORElORzoKIAkJcmV0dXJuICJQRU5ESU5HIjsKLQljYXNlIEdVQ19GSVJNV0FSRV9TVUNDRVNT OgorCWNhc2UgVUNfRklSTVdBUkVfU1VDQ0VTUzoKIAkJcmV0dXJuICJTVUNDRVNTIjsKIAlkZWZh dWx0OgogCQlyZXR1cm4gIlVOS05PV04hIjsKQEAgLTI3NCw3ICsyNzQsNyBAQCBzdGF0aWMgaW5s aW5lIGJvb2wgZ3VjX3Vjb2RlX3Jlc3BvbnNlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwKIHN0YXRpYyBpbnQgZ3VjX3Vjb2RlX3hmZXJfZG1hKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwKIAkJCSAgICAgIHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQogewotCXN0cnVj dCBpbnRlbF9ndWNfZncgKmd1Y19mdyA9ICZkZXZfcHJpdi0+Z3VjLmd1Y19mdzsKKwlzdHJ1Y3Qg aW50ZWxfdWNfZncgKmd1Y19mdyA9ICZkZXZfcHJpdi0+Z3VjLmd1Y19mdzsKIAl1bnNpZ25lZCBs b25nIG9mZnNldDsKIAlzdHJ1Y3Qgc2dfdGFibGUgKnNnID0gdm1hLT5wYWdlczsKIAl1MzIgc3Rh dHVzLCByc2FbVU9TX1JTQV9TQ1JBVENIX01BWF9DT1VOVF07CkBAIC0zNDYsMTggKzM0NiwxOCBA QCBzdGF0aWMgdTMyIGd1Y193b3BjbV9zaXplKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKICAqLwogc3RhdGljIGludCBndWNfdWNvZGVfeGZlcihzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCiB7Ci0Jc3RydWN0IGludGVsX2d1Y19mdyAqZ3VjX2Z3ID0gJmRldl9w cml2LT5ndWMuZ3VjX2Z3OworCXN0cnVjdCBpbnRlbF91Y19mdyAqZ3VjX2Z3ID0gJmRldl9wcml2 LT5ndWMuZ3VjX2Z3OwogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSAmZGV2X3ByaXYtPmRybTsK IAlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKIAlpbnQgcmV0OwogCi0JcmV0ID0gaTkxNV9nZW1fb2Jq ZWN0X3NldF90b19ndHRfZG9tYWluKGd1Y19mdy0+Z3VjX2Z3X29iaiwgZmFsc2UpOworCXJldCA9 IGk5MTVfZ2VtX29iamVjdF9zZXRfdG9fZ3R0X2RvbWFpbihndWNfZnctPnVjX2Z3X29iaiwgZmFs c2UpOwogCWlmIChyZXQpIHsKIAkJRFJNX0RFQlVHX0RSSVZFUigic2V0LWRvbWFpbiBmYWlsZWQg JWRcbiIsIHJldCk7CiAJCXJldHVybiByZXQ7CiAJfQogCi0Jdm1hID0gaTkxNV9nZW1fb2JqZWN0 X2dndHRfcGluKGd1Y19mdy0+Z3VjX2Z3X29iaiwgTlVMTCwgMCwgMCwgMCk7CisJdm1hID0gaTkx NV9nZW1fb2JqZWN0X2dndHRfcGluKGd1Y19mdy0+dWNfZndfb2JqLCBOVUxMLCAwLCAwLCAwKTsK IAlpZiAoSVNfRVJSKHZtYSkpIHsKIAkJRFJNX0RFQlVHX0RSSVZFUigicGluIGZhaWxlZCAlZFxu IiwgKGludClQVFJfRVJSKHZtYSkpOwogCQlyZXR1cm4gUFRSX0VSUih2bWEpOwpAQCAtNDQ4LDE0 ICs0NDgsMTQgQEAgc3RhdGljIGludCBndWNfaHdfcmVzZXQoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KQogaW50IGludGVsX2d1Y19zZXR1cChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsK LQlzdHJ1Y3QgaW50ZWxfZ3VjX2Z3ICpndWNfZncgPSAmZGV2X3ByaXYtPmd1Yy5ndWNfZnc7Ci0J Y29uc3QgY2hhciAqZndfcGF0aCA9IGd1Y19mdy0+Z3VjX2Z3X3BhdGg7CisJc3RydWN0IGludGVs X3VjX2Z3ICpndWNfZncgPSAmZGV2X3ByaXYtPmd1Yy5ndWNfZnc7CisJY29uc3QgY2hhciAqZndf cGF0aCA9IGd1Y19mdy0+dWNfZndfcGF0aDsKIAlpbnQgcmV0cmllcywgcmV0LCBlcnI7CiAKIAlE Uk1fREVCVUdfRFJJVkVSKCJHdUMgZncgc3RhdHVzOiBwYXRoICVzLCBmZXRjaCAlcywgbG9hZCAl c1xuIiwKIAkJZndfcGF0aCwKLQkJaW50ZWxfZ3VjX2Z3X3N0YXR1c19yZXByKGd1Y19mdy0+Z3Vj X2Z3X2ZldGNoX3N0YXR1cyksCi0JCWludGVsX2d1Y19md19zdGF0dXNfcmVwcihndWNfZnctPmd1 Y19md19sb2FkX3N0YXR1cykpOworCQlpbnRlbF91Y19md19zdGF0dXNfcmVwcihndWNfZnctPmZl dGNoX3N0YXR1cyksCisJCWludGVsX3VjX2Z3X3N0YXR1c19yZXByKGd1Y19mdy0+bG9hZF9zdGF0 dXMpKTsKIAogCS8qIExvYWRpbmcgZm9yYmlkZGVuLCBvciBubyBmaXJtd2FyZSB0byBsb2FkPyAq LwogCWlmICghaTkxNS5lbmFibGVfZ3VjX2xvYWRpbmcpIHsKQEAgLTQ3MywyMSArNDczLDIxIEBA IGludCBpbnRlbF9ndWNfc2V0dXAoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAl9CiAKIAkvKiBG ZXRjaCBmYWlsZWQsIG9yIGFscmVhZHkgZmV0Y2hlZCBidXQgZmFpbGVkIHRvIGxvYWQ/ICovCi0J aWYgKGd1Y19mdy0+Z3VjX2Z3X2ZldGNoX3N0YXR1cyAhPSBHVUNfRklSTVdBUkVfU1VDQ0VTUykg eworCWlmIChndWNfZnctPmZldGNoX3N0YXR1cyAhPSBVQ19GSVJNV0FSRV9TVUNDRVNTKSB7CiAJ CWVyciA9IC1FSU87CiAJCWdvdG8gZmFpbDsKLQl9IGVsc2UgaWYgKGd1Y19mdy0+Z3VjX2Z3X2xv YWRfc3RhdHVzID09IEdVQ19GSVJNV0FSRV9GQUlMKSB7CisJfSBlbHNlIGlmIChndWNfZnctPmxv YWRfc3RhdHVzID09IFVDX0ZJUk1XQVJFX0ZBSUwpIHsKIAkJZXJyID0gLUVOT0VYRUM7CiAJCWdv dG8gZmFpbDsKIAl9CiAKIAlndWNfaW50ZXJydXB0c19yZWxlYXNlKGRldl9wcml2KTsKIAotCWd1 Y19mdy0+Z3VjX2Z3X2xvYWRfc3RhdHVzID0gR1VDX0ZJUk1XQVJFX1BFTkRJTkc7CisJZ3VjX2Z3 LT5sb2FkX3N0YXR1cyA9IFVDX0ZJUk1XQVJFX1BFTkRJTkc7CiAKIAlEUk1fREVCVUdfRFJJVkVS KCJHdUMgZncgc3RhdHVzOiBmZXRjaCAlcywgbG9hZCAlc1xuIiwKLQkJaW50ZWxfZ3VjX2Z3X3N0 YXR1c19yZXByKGd1Y19mdy0+Z3VjX2Z3X2ZldGNoX3N0YXR1cyksCi0JCWludGVsX2d1Y19md19z dGF0dXNfcmVwcihndWNfZnctPmd1Y19md19sb2FkX3N0YXR1cykpOworCQlpbnRlbF91Y19md19z dGF0dXNfcmVwcihndWNfZnctPmZldGNoX3N0YXR1cyksCisJCWludGVsX3VjX2Z3X3N0YXR1c19y ZXByKGd1Y19mdy0+bG9hZF9zdGF0dXMpKTsKIAogCWVyciA9IGk5MTVfZ3VjX3N1Ym1pc3Npb25f aW5pdChkZXZfcHJpdik7CiAJaWYgKGVycikKQEAgLTUxOSwxMSArNTE5LDExIEBAIGludCBpbnRl bF9ndWNfc2V0dXAoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAkJCSAicmV0cnkgJWQgbW9yZSB0 aW1lKHMpXG4iLCBlcnIsIHJldHJpZXMpOwogCX0KIAotCWd1Y19mdy0+Z3VjX2Z3X2xvYWRfc3Rh dHVzID0gR1VDX0ZJUk1XQVJFX1NVQ0NFU1M7CisJZ3VjX2Z3LT5sb2FkX3N0YXR1cyA9IFVDX0ZJ Uk1XQVJFX1NVQ0NFU1M7CiAKIAlEUk1fREVCVUdfRFJJVkVSKCJHdUMgZncgc3RhdHVzOiBmZXRj aCAlcywgbG9hZCAlc1xuIiwKLQkJaW50ZWxfZ3VjX2Z3X3N0YXR1c19yZXByKGd1Y19mdy0+Z3Vj X2Z3X2ZldGNoX3N0YXR1cyksCi0JCWludGVsX2d1Y19md19zdGF0dXNfcmVwcihndWNfZnctPmd1 Y19md19sb2FkX3N0YXR1cykpOworCQlpbnRlbF91Y19md19zdGF0dXNfcmVwcihndWNfZnctPmZl dGNoX3N0YXR1cyksCisJCWludGVsX3VjX2Z3X3N0YXR1c19yZXByKGd1Y19mdy0+bG9hZF9zdGF0 dXMpKTsKIAogCWlmIChpOTE1LmVuYWJsZV9ndWNfc3VibWlzc2lvbikgewogCQllcnIgPSBpOTE1 X2d1Y19zdWJtaXNzaW9uX2VuYWJsZShkZXZfcHJpdik7CkBAIC01MzUsOCArNTM1LDggQEAgaW50 IGludGVsX2d1Y19zZXR1cChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCXJldHVybiAwOwogCiBm YWlsOgotCWlmIChndWNfZnctPmd1Y19md19sb2FkX3N0YXR1cyA9PSBHVUNfRklSTVdBUkVfUEVO RElORykKLQkJZ3VjX2Z3LT5ndWNfZndfbG9hZF9zdGF0dXMgPSBHVUNfRklSTVdBUkVfRkFJTDsK KwlpZiAoZ3VjX2Z3LT5sb2FkX3N0YXR1cyA9PSBVQ19GSVJNV0FSRV9QRU5ESU5HKQorCQlndWNf ZnctPmxvYWRfc3RhdHVzID0gVUNfRklSTVdBUkVfRkFJTDsKIAogCWd1Y19pbnRlcnJ1cHRzX3Jl bGVhc2UoZGV2X3ByaXYpOwogCWk5MTVfZ3VjX3N1Ym1pc3Npb25fZGlzYWJsZShkZXZfcHJpdik7 CkBAIC01ODEsNyArNTgxLDcgQEAgZmFpbDoKIAlyZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgdm9p ZCBndWNfZndfZmV0Y2goc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGludGVsX2d1Y19m dyAqZ3VjX2Z3KQordm9pZCBpbnRlbF91Y19md19mZXRjaChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LCBzdHJ1Y3QgaW50ZWxfdWNfZncgKnVjX2Z3KQogewogCXN0cnVjdCBwY2lfZGV2ICpwZGV2ID0g ZGV2LT5wZGV2OwogCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7CkBAIC01OTAsMTcg KzU5MCwxNyBAQCBzdGF0aWMgdm9pZCBndWNfZndfZmV0Y2goc3RydWN0IGRybV9kZXZpY2UgKmRl diwgc3RydWN0IGludGVsX2d1Y19mdyAqZ3VjX2Z3KQogCXNpemVfdCBzaXplOwogCWludCBlcnI7 CiAKLQlEUk1fREVCVUdfRFJJVkVSKCJiZWZvcmUgcmVxdWVzdGluZyBmaXJtd2FyZTogR3VDIGZ3 IGZldGNoIHN0YXR1cyAlc1xuIiwKLQkJaW50ZWxfZ3VjX2Z3X3N0YXR1c19yZXByKGd1Y19mdy0+ Z3VjX2Z3X2ZldGNoX3N0YXR1cykpOworCURSTV9ERUJVR19EUklWRVIoImJlZm9yZSByZXF1ZXN0 aW5nIGZpcm13YXJlOiB1QyBmdyBmZXRjaCBzdGF0dXMgJXNcbiIsCisJCWludGVsX3VjX2Z3X3N0 YXR1c19yZXByKHVjX2Z3LT5mZXRjaF9zdGF0dXMpKTsKIAotCWVyciA9IHJlcXVlc3RfZmlybXdh cmUoJmZ3LCBndWNfZnctPmd1Y19md19wYXRoLCAmcGRldi0+ZGV2KTsKKwllcnIgPSByZXF1ZXN0 X2Zpcm13YXJlKCZmdywgdWNfZnctPnVjX2Z3X3BhdGgsICZwZGV2LT5kZXYpOwogCWlmIChlcnIp CiAJCWdvdG8gZmFpbDsKIAlpZiAoIWZ3KQogCQlnb3RvIGZhaWw7CiAKLQlEUk1fREVCVUdfRFJJ VkVSKCJmZXRjaCBHdUMgZncgZnJvbSAlcyBzdWNjZWVkZWQsIGZ3ICVwXG4iLAotCQlndWNfZnct Pmd1Y19md19wYXRoLCBmdyk7CisJRFJNX0RFQlVHX0RSSVZFUigiZmV0Y2ggdUMgZncgZnJvbSAl cyBzdWNjZWVkZWQsIGZ3ICVwXG4iLAorCQl1Y19mdy0+dWNfZndfcGF0aCwgZncpOwogCiAJLyog Q2hlY2sgdGhlIHNpemUgb2YgdGhlIGJsb2IgYmVmb3JlIGV4YW1pbmluZyBidWZmZXIgY29udGVu dHMgKi8KIAlpZiAoZnctPnNpemUgPCBzaXplb2Yoc3RydWN0IGd1Y19jc3NfaGVhZGVyKSkgewpA QCAtNjExLDM2ICs2MTEsMzYgQEAgc3RhdGljIHZvaWQgZ3VjX2Z3X2ZldGNoKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsIHN0cnVjdCBpbnRlbF9ndWNfZncgKmd1Y19mdykKIAljc3MgPSAoc3RydWN0 IGd1Y19jc3NfaGVhZGVyICopZnctPmRhdGE7CiAKIAkvKiBGaXJtd2FyZSBiaXRzIGFsd2F5cyBz dGFydCBmcm9tIGhlYWRlciAqLwotCWd1Y19mdy0+aGVhZGVyX29mZnNldCA9IDA7Ci0JZ3VjX2Z3 LT5oZWFkZXJfc2l6ZSA9IChjc3MtPmhlYWRlcl9zaXplX2R3IC0gY3NzLT5tb2R1bHVzX3NpemVf ZHcgLQorCXVjX2Z3LT5oZWFkZXJfb2Zmc2V0ID0gMDsKKwl1Y19mdy0+aGVhZGVyX3NpemUgPSAo Y3NzLT5oZWFkZXJfc2l6ZV9kdyAtIGNzcy0+bW9kdWx1c19zaXplX2R3IC0KIAkJY3NzLT5rZXlf c2l6ZV9kdyAtIGNzcy0+ZXhwb25lbnRfc2l6ZV9kdykgKiBzaXplb2YodTMyKTsKIAotCWlmIChn dWNfZnctPmhlYWRlcl9zaXplICE9IHNpemVvZihzdHJ1Y3QgZ3VjX2Nzc19oZWFkZXIpKSB7CisJ aWYgKHVjX2Z3LT5oZWFkZXJfc2l6ZSAhPSBzaXplb2Yoc3RydWN0IGd1Y19jc3NfaGVhZGVyKSkg ewogCQlEUk1fTk9URSgiQ1NTIGhlYWRlciBkZWZpbml0aW9uIG1pc21hdGNoXG4iKTsKIAkJZ290 byBmYWlsOwogCX0KIAogCS8qIHRoZW4sIHVDb2RlICovCi0JZ3VjX2Z3LT51Y29kZV9vZmZzZXQg PSBndWNfZnctPmhlYWRlcl9vZmZzZXQgKyBndWNfZnctPmhlYWRlcl9zaXplOwotCWd1Y19mdy0+ dWNvZGVfc2l6ZSA9IChjc3MtPnNpemVfZHcgLSBjc3MtPmhlYWRlcl9zaXplX2R3KSAqIHNpemVv Zih1MzIpOworCXVjX2Z3LT51Y29kZV9vZmZzZXQgPSB1Y19mdy0+aGVhZGVyX29mZnNldCArIHVj X2Z3LT5oZWFkZXJfc2l6ZTsKKwl1Y19mdy0+dWNvZGVfc2l6ZSA9IChjc3MtPnNpemVfZHcgLSBj c3MtPmhlYWRlcl9zaXplX2R3KSAqIHNpemVvZih1MzIpOwogCiAJLyogbm93IFJTQSAqLwogCWlm IChjc3MtPmtleV9zaXplX2R3ICE9IFVPU19SU0FfU0NSQVRDSF9NQVhfQ09VTlQpIHsKIAkJRFJN X05PVEUoIlJTQSBrZXkgc2l6ZSBpcyBiYWRcbiIpOwogCQlnb3RvIGZhaWw7CiAJfQotCWd1Y19m dy0+cnNhX29mZnNldCA9IGd1Y19mdy0+dWNvZGVfb2Zmc2V0ICsgZ3VjX2Z3LT51Y29kZV9zaXpl OwotCWd1Y19mdy0+cnNhX3NpemUgPSBjc3MtPmtleV9zaXplX2R3ICogc2l6ZW9mKHUzMik7CisJ dWNfZnctPnJzYV9vZmZzZXQgPSB1Y19mdy0+dWNvZGVfb2Zmc2V0ICsgdWNfZnctPnVjb2RlX3Np emU7CisJdWNfZnctPnJzYV9zaXplID0gY3NzLT5rZXlfc2l6ZV9kdyAqIHNpemVvZih1MzIpOwog CiAJLyogQXQgbGVhc3QsIGl0IHNob3VsZCBoYXZlIGhlYWRlciwgdUNvZGUgYW5kIFJTQS4gU2l6 ZSBvZiBhbGwgdGhyZWUuICovCi0Jc2l6ZSA9IGd1Y19mdy0+aGVhZGVyX3NpemUgKyBndWNfZnct PnVjb2RlX3NpemUgKyBndWNfZnctPnJzYV9zaXplOworCXNpemUgPSB1Y19mdy0+aGVhZGVyX3Np emUgKyB1Y19mdy0+dWNvZGVfc2l6ZSArIHVjX2Z3LT5yc2Ffc2l6ZTsKIAlpZiAoZnctPnNpemUg PCBzaXplKSB7CiAJCURSTV9OT1RFKCJNaXNzaW5nIGZpcm13YXJlIGNvbXBvbmVudHNcbiIpOwog CQlnb3RvIGZhaWw7CiAJfQogCiAJLyogSGVhZGVyIGFuZCB1Q29kZSB3aWxsIGJlIGxvYWRlZCB0 byBXT1BDTS4gU2l6ZSBvZiB0aGUgdHdvLiAqLwotCXNpemUgPSBndWNfZnctPmhlYWRlcl9zaXpl ICsgZ3VjX2Z3LT51Y29kZV9zaXplOworCXNpemUgPSB1Y19mdy0+aGVhZGVyX3NpemUgKyB1Y19m dy0+dWNvZGVfc2l6ZTsKIAlpZiAoc2l6ZSA+IGd1Y193b3BjbV9zaXplKHRvX2k5MTUoZGV2KSkp IHsKIAkJRFJNX05PVEUoIkZpcm13YXJlIGlzIHRvbyBsYXJnZSB0byBmaXQgaW4gV09QQ01cbiIp OwogCQlnb3RvIGZhaWw7CkBAIC02NTIsMjEgKzY1MiwyMSBAQCBzdGF0aWMgdm9pZCBndWNfZndf ZmV0Y2goc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGludGVsX2d1Y19mdyAqZ3VjX2Z3 KQogCSAqIFRXTyBieXRlcyBlYWNoIChpLmUuIHUxNiksIGFsdGhvdWdoIGFsbCBwb2ludGVycyBh bmQgb2Zmc2V0cyBhcmUgZGVmaW5lZAogCSAqIGluIHRlcm1zIG9mIGJ5dGVzICh1OCkuCiAJICov Ci0JZ3VjX2Z3LT5ndWNfZndfbWFqb3JfZm91bmQgPSBjc3MtPmd1Y19zd192ZXJzaW9uID4+IDE2 OwotCWd1Y19mdy0+Z3VjX2Z3X21pbm9yX2ZvdW5kID0gY3NzLT5ndWNfc3dfdmVyc2lvbiAmIDB4 RkZGRjsKLQotCWlmIChndWNfZnctPmd1Y19md19tYWpvcl9mb3VuZCAhPSBndWNfZnctPmd1Y19m d19tYWpvcl93YW50ZWQgfHwKLQkgICAgZ3VjX2Z3LT5ndWNfZndfbWlub3JfZm91bmQgPCBndWNf ZnctPmd1Y19md19taW5vcl93YW50ZWQpIHsKLQkJRFJNX05PVEUoIkd1QyBmaXJtd2FyZSB2ZXJz aW9uICVkLiVkLCByZXF1aXJlZCAlZC4lZFxuIiwKLQkJCWd1Y19mdy0+Z3VjX2Z3X21ham9yX2Zv dW5kLCBndWNfZnctPmd1Y19md19taW5vcl9mb3VuZCwKLQkJCWd1Y19mdy0+Z3VjX2Z3X21ham9y X3dhbnRlZCwgZ3VjX2Z3LT5ndWNfZndfbWlub3Jfd2FudGVkKTsKKwl1Y19mdy0+bWFqb3JfdmVy X2ZvdW5kID0gY3NzLT5ndWNfc3dfdmVyc2lvbiA+PiAxNjsKKwl1Y19mdy0+bWlub3JfdmVyX2Zv dW5kID0gY3NzLT5ndWNfc3dfdmVyc2lvbiAmIDB4RkZGRjsKKworCWlmICh1Y19mdy0+bWFqb3Jf dmVyX2ZvdW5kICE9IHVjX2Z3LT5tYWpvcl92ZXJfd2FudGVkIHx8CisJICAgIHVjX2Z3LT5taW5v cl92ZXJfZm91bmQgPCB1Y19mdy0+bWlub3JfdmVyX3dhbnRlZCkgeworCQlEUk1fTk9URSgidUMg ZmlybXdhcmUgdmVyc2lvbiAlZC4lZCwgcmVxdWlyZWQgJWQuJWRcbiIsCisJCQl1Y19mdy0+bWFq b3JfdmVyX2ZvdW5kLCB1Y19mdy0+bWlub3JfdmVyX2ZvdW5kLAorCQkJdWNfZnctPm1ham9yX3Zl cl93YW50ZWQsIHVjX2Z3LT5taW5vcl92ZXJfd2FudGVkKTsKIAkJZXJyID0gLUVOT0VYRUM7CiAJ CWdvdG8gZmFpbDsKIAl9CiAKIAlEUk1fREVCVUdfRFJJVkVSKCJmaXJtd2FyZSB2ZXJzaW9uICVk LiVkIE9LIChtaW5pbXVtICVkLiVkKVxuIiwKLQkJCWd1Y19mdy0+Z3VjX2Z3X21ham9yX2ZvdW5k LCBndWNfZnctPmd1Y19md19taW5vcl9mb3VuZCwKLQkJCWd1Y19mdy0+Z3VjX2Z3X21ham9yX3dh bnRlZCwgZ3VjX2Z3LT5ndWNfZndfbWlub3Jfd2FudGVkKTsKKwkJCXVjX2Z3LT5tYWpvcl92ZXJf Zm91bmQsIHVjX2Z3LT5taW5vcl92ZXJfZm91bmQsCisJCQl1Y19mdy0+bWFqb3JfdmVyX3dhbnRl ZCwgdWNfZnctPm1pbm9yX3Zlcl93YW50ZWQpOwogCiAJbXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3Rf bXV0ZXgpOwogCW9iaiA9IGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfZnJvbV9kYXRhKGRldiwgZnct PmRhdGEsIGZ3LT5zaXplKTsKQEAgLTY3NiwzMSArNjc2LDMxIEBAIHN0YXRpYyB2b2lkIGd1Y19m d19mZXRjaChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgaW50ZWxfZ3VjX2Z3ICpndWNf ZncpCiAJCWdvdG8gZmFpbDsKIAl9CiAKLQlndWNfZnctPmd1Y19md19vYmogPSBvYmo7Ci0JZ3Vj X2Z3LT5ndWNfZndfc2l6ZSA9IGZ3LT5zaXplOworCXVjX2Z3LT51Y19md19vYmogPSBvYmo7CisJ dWNfZnctPnVjX2Z3X3NpemUgPSBmdy0+c2l6ZTsKIAotCURSTV9ERUJVR19EUklWRVIoIkd1QyBm dyBmZXRjaCBzdGF0dXMgU1VDQ0VTUywgb2JqICVwXG4iLAotCQkJZ3VjX2Z3LT5ndWNfZndfb2Jq KTsKKwlEUk1fREVCVUdfRFJJVkVSKCJ1QyBmdyBmZXRjaCBzdGF0dXMgU1VDQ0VTUywgb2JqICVw XG4iLAorCQkJdWNfZnctPnVjX2Z3X29iaik7CiAKIAlyZWxlYXNlX2Zpcm13YXJlKGZ3KTsKLQln dWNfZnctPmd1Y19md19mZXRjaF9zdGF0dXMgPSBHVUNfRklSTVdBUkVfU1VDQ0VTUzsKKwl1Y19m dy0+ZmV0Y2hfc3RhdHVzID0gVUNfRklSTVdBUkVfU1VDQ0VTUzsKIAlyZXR1cm47CiAKIGZhaWw6 Ci0JRFJNX1dBUk4oIkZhaWxlZCB0byBmZXRjaCB2YWxpZCBHdUMgZmlybXdhcmUgZnJvbSAlcyAo ZXJyb3IgJWQpXG4iLAotCQkgZ3VjX2Z3LT5ndWNfZndfcGF0aCwgZXJyKTsKLQlEUk1fREVCVUdf RFJJVkVSKCJHdUMgZncgZmV0Y2ggc3RhdHVzIEZBSUw7IGVyciAlZCwgZncgJXAsIG9iaiAlcFxu IiwKLQkJZXJyLCBmdywgZ3VjX2Z3LT5ndWNfZndfb2JqKTsKKwlEUk1fV0FSTigiRmFpbGVkIHRv IGZldGNoIHZhbGlkIHVDIGZpcm13YXJlIGZyb20gJXMgKGVycm9yICVkKVxuIiwKKwkJIHVjX2Z3 LT51Y19md19wYXRoLCBlcnIpOworCURSTV9ERUJVR19EUklWRVIoInVDIGZ3IGZldGNoIHN0YXR1 cyBGQUlMOyBlcnIgJWQsIGZ3ICVwLCBvYmogJXBcbiIsCisJCWVyciwgZncsIHVjX2Z3LT51Y19m d19vYmopOwogCiAJbXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwotCW9iaiA9IGd1Y19m dy0+Z3VjX2Z3X29iajsKKwlvYmogPSB1Y19mdy0+dWNfZndfb2JqOwogCWlmIChvYmopCiAJCWk5 MTVfZ2VtX29iamVjdF9wdXQob2JqKTsKLQlndWNfZnctPmd1Y19md19vYmogPSBOVUxMOworCXVj X2Z3LT51Y19md19vYmogPSBOVUxMOwogCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgp OwogCiAJcmVsZWFzZV9maXJtd2FyZShmdyk7CQkvKiBPSyBldmVuIGlmIGZ3IGlzIE5VTEwgKi8K LQlndWNfZnctPmd1Y19md19mZXRjaF9zdGF0dXMgPSBHVUNfRklSTVdBUkVfRkFJTDsKKwl1Y19m dy0+ZmV0Y2hfc3RhdHVzID0gVUNfRklSTVdBUkVfRkFJTDsKIH0KIAogLyoqCkBAIC03MTUsNyAr NzE1LDcgQEAgZmFpbDoKIHZvaWQgaW50ZWxfZ3VjX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRl dikKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7 Ci0Jc3RydWN0IGludGVsX2d1Y19mdyAqZ3VjX2Z3ID0gJmRldl9wcml2LT5ndWMuZ3VjX2Z3Owor CXN0cnVjdCBpbnRlbF91Y19mdyAqZ3VjX2Z3ID0gJmRldl9wcml2LT5ndWMuZ3VjX2Z3OwogCWNv bnN0IGNoYXIgKmZ3X3BhdGg7CiAKIAkvKiBBIG5lZ2F0aXZlIHZhbHVlIG1lYW5zICJ1c2UgcGxh dGZvcm0gZGVmYXVsdCIgKi8KQEAgLTcyOCwyNCArNzI4LDI0IEBAIHZvaWQgaW50ZWxfZ3VjX2lu aXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAkJZndfcGF0aCA9IE5VTEw7CiAJfSBlbHNlIGlm IChJU19TS1lMQUtFKGRldikpIHsKIAkJZndfcGF0aCA9IEk5MTVfU0tMX0dVQ19VQ09ERTsKLQkJ Z3VjX2Z3LT5ndWNfZndfbWFqb3Jfd2FudGVkID0gU0tMX0ZXX01BSk9SOwotCQlndWNfZnctPmd1 Y19md19taW5vcl93YW50ZWQgPSBTS0xfRldfTUlOT1I7CisJCWd1Y19mdy0+bWFqb3JfdmVyX3dh bnRlZCA9IFNLTF9GV19NQUpPUjsKKwkJZ3VjX2Z3LT5taW5vcl92ZXJfd2FudGVkID0gU0tMX0ZX X01JTk9SOwogCX0gZWxzZSBpZiAoSVNfQlJPWFRPTihkZXYpKSB7CiAJCWZ3X3BhdGggPSBJOTE1 X0JYVF9HVUNfVUNPREU7Ci0JCWd1Y19mdy0+Z3VjX2Z3X21ham9yX3dhbnRlZCA9IEJYVF9GV19N QUpPUjsKLQkJZ3VjX2Z3LT5ndWNfZndfbWlub3Jfd2FudGVkID0gQlhUX0ZXX01JTk9SOworCQln dWNfZnctPm1ham9yX3Zlcl93YW50ZWQgPSBCWFRfRldfTUFKT1I7CisJCWd1Y19mdy0+bWlub3Jf dmVyX3dhbnRlZCA9IEJYVF9GV19NSU5PUjsKIAl9IGVsc2UgaWYgKElTX0tBQllMQUtFKGRldikp IHsKIAkJZndfcGF0aCA9IEk5MTVfS0JMX0dVQ19VQ09ERTsKLQkJZ3VjX2Z3LT5ndWNfZndfbWFq b3Jfd2FudGVkID0gS0JMX0ZXX01BSk9SOwotCQlndWNfZnctPmd1Y19md19taW5vcl93YW50ZWQg PSBLQkxfRldfTUlOT1I7CisJCWd1Y19mdy0+bWFqb3JfdmVyX3dhbnRlZCA9IEtCTF9GV19NQUpP UjsKKwkJZ3VjX2Z3LT5taW5vcl92ZXJfd2FudGVkID0gS0JMX0ZXX01JTk9SOwogCX0gZWxzZSB7 CiAJCWZ3X3BhdGggPSAiIjsJLyogdW5rbm93biBkZXZpY2UgKi8KIAl9CiAKLQlndWNfZnctPmd1 Y19kZXYgPSBkZXY7Ci0JZ3VjX2Z3LT5ndWNfZndfcGF0aCA9IGZ3X3BhdGg7Ci0JZ3VjX2Z3LT5n dWNfZndfZmV0Y2hfc3RhdHVzID0gR1VDX0ZJUk1XQVJFX05PTkU7Ci0JZ3VjX2Z3LT5ndWNfZndf bG9hZF9zdGF0dXMgPSBHVUNfRklSTVdBUkVfTk9ORTsKKwlndWNfZnctPnVjX2RldiA9IGRldjsK KwlndWNfZnctPnVjX2Z3X3BhdGggPSBmd19wYXRoOworCWd1Y19mdy0+ZmV0Y2hfc3RhdHVzID0g VUNfRklSTVdBUkVfTk9ORTsKKwlndWNfZnctPmxvYWRfc3RhdHVzID0gVUNfRklSTVdBUkVfTk9O RTsKIAogCS8qIEVhcmx5IChhbmQgc2lsZW50KSByZXR1cm4gaWYgR3VDIGxvYWRpbmcgaXMgZGlz YWJsZWQgKi8KIAlpZiAoIWk5MTUuZW5hYmxlX2d1Y19sb2FkaW5nKQpAQCAtNzU1LDkgKzc1NSw5 IEBAIHZvaWQgaW50ZWxfZ3VjX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAlpZiAoKmZ3 X3BhdGggPT0gJ1wwJykKIAkJcmV0dXJuOwogCi0JZ3VjX2Z3LT5ndWNfZndfZmV0Y2hfc3RhdHVz ID0gR1VDX0ZJUk1XQVJFX1BFTkRJTkc7CisJZ3VjX2Z3LT5mZXRjaF9zdGF0dXMgPSBVQ19GSVJN V0FSRV9QRU5ESU5HOwogCURSTV9ERUJVR19EUklWRVIoIkd1QyBmaXJtd2FyZSBwZW5kaW5nLCBw YXRoICVzXG4iLCBmd19wYXRoKTsKLQlndWNfZndfZmV0Y2goZGV2LCBndWNfZncpOworCWludGVs X3VjX2Z3X2ZldGNoKGRldiwgZ3VjX2Z3KTsKIAkvKiBzdGF0dXMgbXVzdCBub3cgYmUgRkFJTCBv ciBTVUNDRVNTICovCiB9CiAKQEAgLTc2OCwxNyArNzY4LDE3IEBAIHZvaWQgaW50ZWxfZ3VjX2lu aXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIHZvaWQgaW50ZWxfZ3VjX2Zpbmkoc3RydWN0IGRy bV9kZXZpY2UgKmRldikKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0 b19pOTE1KGRldik7Ci0Jc3RydWN0IGludGVsX2d1Y19mdyAqZ3VjX2Z3ID0gJmRldl9wcml2LT5n dWMuZ3VjX2Z3OworCXN0cnVjdCBpbnRlbF91Y19mdyAqZ3VjX2Z3ID0gJmRldl9wcml2LT5ndWMu Z3VjX2Z3OwogCiAJbXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwogCWd1Y19pbnRlcnJ1 cHRzX3JlbGVhc2UoZGV2X3ByaXYpOwogCWk5MTVfZ3VjX3N1Ym1pc3Npb25fZGlzYWJsZShkZXZf cHJpdik7CiAJaTkxNV9ndWNfc3VibWlzc2lvbl9maW5pKGRldl9wcml2KTsKIAotCWlmIChndWNf ZnctPmd1Y19md19vYmopCi0JCWk5MTVfZ2VtX29iamVjdF9wdXQoZ3VjX2Z3LT5ndWNfZndfb2Jq KTsKLQlndWNfZnctPmd1Y19md19vYmogPSBOVUxMOworCWlmIChndWNfZnctPnVjX2Z3X29iaikK KwkJaTkxNV9nZW1fb2JqZWN0X3B1dChndWNfZnctPnVjX2Z3X29iaik7CisJZ3VjX2Z3LT51Y19m d19vYmogPSBOVUxMOwogCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwogCi0JZ3Vj X2Z3LT5ndWNfZndfZmV0Y2hfc3RhdHVzID0gR1VDX0ZJUk1XQVJFX05PTkU7CisJZ3VjX2Z3LT5m ZXRjaF9zdGF0dXMgPSBVQ19GSVJNV0FSRV9OT05FOwogfQotLSAKMi43LjQKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxp c3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=