From mboxrd@z Thu Jan 1 00:00:00 1970 From: Peter Antoine Subject: [PATCH v6 1/6] drm/i915/guc: Make the GuC fw loading helper functions general Date: Tue, 16 Aug 2016 12:17:00 +0100 Message-ID: <1471346225-17078-2-git-send-email-peter.antoine@intel.com> References: <1471346225-17078-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 mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id 929EC6E13C for ; Tue, 16 Aug 2016 11:17:10 +0000 (UTC) In-Reply-To: <1471346225-17078-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 cnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5oICAgICAgICAgICB8ICAzOSArKysrLS0tLQogZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5jICAgIHwgMTU2ICsrKysrKysrKysr KysrLS0tLS0tLS0tLS0tLS0tCiA0IGZpbGVzIGNoYW5nZWQsIDEwNiBpbnNlcnRpb25zKCspLCAx MDUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k ZWJ1Z2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwppbmRleCA0YTA5 NDFiLi45NzcxNWI5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVn ZnMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwpAQCAtMjQ1Myw3 ICsyNDUzLDcgQEAgc3RhdGljIGludCBpOTE1X2d1Y19sb2FkX3N0YXR1c19pbmZvKHN0cnVjdCBz ZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKIHsKIAlzdHJ1Y3QgZHJtX2luZm9fbm9kZSAqbm9kZSA9 IG0tPnByaXZhdGU7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkx NShub2RlLT5taW5vci0+ZGV2KTsKLQlzdHJ1Y3QgaW50ZWxfZ3VjX2Z3ICpndWNfZncgPSAmZGV2 X3ByaXYtPmd1Yy5ndWNfZnc7CisJc3RydWN0IGludGVsX3VjX2Z3ICpndWNfZncgPSAmZGV2X3By aXYtPmd1Yy5ndWNfZnc7CiAJdTMyIHRtcCwgaTsKIAogCWlmICghSEFTX0dVQ19VQ09ERShkZXZf cHJpdikpCkBAIC0yNDYxLDE1ICsyNDYxLDE1IEBAIHN0YXRpYyBpbnQgaTkxNV9ndWNfbG9hZF9z dGF0dXNfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCiAKIAlzZXFfcHJpbnRm KG0sICJHdUMgZmlybXdhcmUgc3RhdHVzOlxuIik7CiAJc2VxX3ByaW50ZihtLCAiXHRwYXRoOiAl c1xuIiwKLQkJZ3VjX2Z3LT5ndWNfZndfcGF0aCk7CisJCWd1Y19mdy0+dWNfZndfcGF0aCk7CiAJ c2VxX3ByaW50ZihtLCAiXHRmZXRjaDogJXNcbiIsCi0JCWludGVsX2d1Y19md19zdGF0dXNfcmVw cihndWNfZnctPmd1Y19md19mZXRjaF9zdGF0dXMpKTsKKwkJaW50ZWxfdWNfZndfc3RhdHVzX3Jl cHIoZ3VjX2Z3LT5mZXRjaF9zdGF0dXMpKTsKIAlzZXFfcHJpbnRmKG0sICJcdGxvYWQ6ICVzXG4i LAotCQlpbnRlbF9ndWNfZndfc3RhdHVzX3JlcHIoZ3VjX2Z3LT5ndWNfZndfbG9hZF9zdGF0dXMp KTsKKwkJaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIoZ3VjX2Z3LT5sb2FkX3N0YXR1cykpOwogCXNl cV9wcmludGYobSwgIlx0dmVyc2lvbiB3YW50ZWQ6ICVkLiVkXG4iLAotCQlndWNfZnctPmd1Y19m d19tYWpvcl93YW50ZWQsIGd1Y19mdy0+Z3VjX2Z3X21pbm9yX3dhbnRlZCk7CisJCWd1Y19mdy0+ bWFqb3JfdmVyX3dhbnRlZCwgZ3VjX2Z3LT5taW5vcl92ZXJfd2FudGVkKTsKIAlzZXFfcHJpbnRm KG0sICJcdHZlcnNpb24gZm91bmQ6ICVkLiVkXG4iLAotCQlndWNfZnctPmd1Y19md19tYWpvcl9m b3VuZCwgZ3VjX2Z3LT5ndWNfZndfbWlub3JfZm91bmQpOworCQlndWNfZnctPm1ham9yX3Zlcl9m b3VuZCwgZ3VjX2Z3LT5taW5vcl92ZXJfZm91bmQpOwogCXNlcV9wcmludGYobSwgIlx0aGVhZGVy OiBvZmZzZXQgaXMgJWQ7IHNpemUgPSAlZFxuIiwKIAkJZ3VjX2Z3LT5oZWFkZXJfb2Zmc2V0LCBn dWNfZnctPmhlYWRlcl9zaXplKTsKIAlzZXFfcHJpbnRmKG0sICJcdHVDb2RlOiBvZmZzZXQgaXMg JWQ7IHNpemUgPSAlZFxuIiwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z3VjX3N1Ym1pc3Npb24uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Np b24uYwppbmRleCBiYjQwNzkyLi4yODU3MzA1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9ndWNfc3VibWlzc2lvbi5jCkBAIC0xMDU1LDcgKzEwNTUsNyBAQCBpbnQgaW50ZWxfZ3VjX3N1 c3BlbmQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAq Y3R4OwogCXUzMiBkYXRhWzNdOwogCi0JaWYgKGd1Yy0+Z3VjX2Z3Lmd1Y19md19sb2FkX3N0YXR1 cyAhPSBHVUNfRklSTVdBUkVfU1VDQ0VTUykKKwlpZiAoZ3VjLT5ndWNfZncubG9hZF9zdGF0dXMg IT0gVUNfRklSTVdBUkVfU1VDQ0VTUykKIAkJcmV0dXJuIDA7CiAKIAljdHggPSBkZXZfcHJpdi0+ a2VybmVsX2NvbnRleHQ7CkBAIC0xMDgxLDcgKzEwODEsNyBAQCBpbnQgaW50ZWxfZ3VjX3Jlc3Vt ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHg7 CiAJdTMyIGRhdGFbM107CiAKLQlpZiAoZ3VjLT5ndWNfZncuZ3VjX2Z3X2xvYWRfc3RhdHVzICE9 IEdVQ19GSVJNV0FSRV9TVUNDRVNTKQorCWlmIChndWMtPmd1Y19mdy5sb2FkX3N0YXR1cyAhPSBV Q19GSVJNV0FSRV9TVUNDRVNTKQogCQlyZXR1cm4gMDsKIAogCWN0eCA9IGRldl9wcml2LT5rZXJu ZWxfY29udGV4dDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5o IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjLmgKaW5kZXggYzk3MzI2Mi4uNmFkOTM2 YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjLmgKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjLmgKQEAgLTg5LDI5ICs4OSwyOSBAQCBzdHJ1Y3Qg aTkxNV9ndWNfY2xpZW50IHsKIAl1aW50NjRfdCBzdWJtaXNzaW9uc1tJOTE1X05VTV9FTkdJTkVT XTsKIH07CiAKLWVudW0gaW50ZWxfZ3VjX2Z3X3N0YXR1cyB7Ci0JR1VDX0ZJUk1XQVJFX0ZBSUwg PSAtMSwKLQlHVUNfRklSTVdBUkVfTk9ORSA9IDAsCi0JR1VDX0ZJUk1XQVJFX1BFTkRJTkcsCi0J R1VDX0ZJUk1XQVJFX1NVQ0NFU1MKK2VudW0gaW50ZWxfdWNfZndfc3RhdHVzIHsKKwlVQ19GSVJN V0FSRV9GQUlMID0gLTEsCisJVUNfRklSTVdBUkVfTk9ORSA9IDAsCisJVUNfRklSTVdBUkVfUEVO RElORywKKwlVQ19GSVJNV0FSRV9TVUNDRVNTCiB9OwogCiAvKgogICogVGhpcyBzdHJ1Y3R1cmUg ZW5jYXBzdWxhdGVzIGFsbCB0aGUgZGF0YSBuZWVkZWQgZHVyaW5nIHRoZSBwcm9jZXNzCiAgKiBv ZiBmZXRjaGluZywgY2FjaGluZywgYW5kIGxvYWRpbmcgdGhlIGZpcm13YXJlIGltYWdlIGludG8g dGhlIEd1Qy4KICAqLwotc3RydWN0IGludGVsX2d1Y19mdyB7Ci0Jc3RydWN0IGRybV9kZXZpY2Ug KgkJZ3VjX2RldjsKLQljb25zdCBjaGFyICoJCQlndWNfZndfcGF0aDsKLQlzaXplX3QJCQkJZ3Vj X2Z3X3NpemU7Ci0Jc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKglndWNfZndfb2JqOwotCWVu dW0gaW50ZWxfZ3VjX2Z3X3N0YXR1cwlndWNfZndfZmV0Y2hfc3RhdHVzOwotCWVudW0gaW50ZWxf Z3VjX2Z3X3N0YXR1cwlndWNfZndfbG9hZF9zdGF0dXM7Ci0KLQl1aW50MTZfdAkJCWd1Y19md19t YWpvcl93YW50ZWQ7Ci0JdWludDE2X3QJCQlndWNfZndfbWlub3Jfd2FudGVkOwotCXVpbnQxNl90 CQkJZ3VjX2Z3X21ham9yX2ZvdW5kOwotCXVpbnQxNl90CQkJZ3VjX2Z3X21pbm9yX2ZvdW5kOwor c3RydWN0IGludGVsX3VjX2Z3IHsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqdWNfZGV2OworCWNvbnN0 IGNoYXIgKnVjX2Z3X3BhdGg7CisJc2l6ZV90IHVjX2Z3X3NpemU7CisJc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QgKnVjX2Z3X29iajsKKwllbnVtIGludGVsX3VjX2Z3X3N0YXR1cyBmZXRjaF9z dGF0dXM7CisJZW51bSBpbnRlbF91Y19md19zdGF0dXMgbG9hZF9zdGF0dXM7CisKKwl1aW50MTZf dCBtYWpvcl92ZXJfd2FudGVkOworCXVpbnQxNl90IG1pbm9yX3Zlcl93YW50ZWQ7CisJdWludDE2 X3QgbWFqb3JfdmVyX2ZvdW5kOworCXVpbnQxNl90IG1pbm9yX3Zlcl9mb3VuZDsKIAogCXVpbnQz Ml90IGhlYWRlcl9zaXplOwogCXVpbnQzMl90IGhlYWRlcl9vZmZzZXQ7CkBAIC0xMjIsNyArMTIy LDcgQEAgc3RydWN0IGludGVsX2d1Y19mdyB7CiB9OwogCiBzdHJ1Y3QgaW50ZWxfZ3VjIHsKLQlz dHJ1Y3QgaW50ZWxfZ3VjX2Z3IGd1Y19mdzsKKwlzdHJ1Y3QgaW50ZWxfdWNfZncgZ3VjX2Z3Owog CXVpbnQzMl90IGxvZ19mbGFnczsKIAlzdHJ1Y3QgaTkxNV92bWEgKmxvZ192bWE7CiAKQEAgLTE1 MCw5ICsxNTAsMTAgQEAgc3RydWN0IGludGVsX2d1YyB7CiBleHRlcm4gdm9pZCBpbnRlbF9ndWNf aW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKIGV4dGVybiBpbnQgaW50ZWxfZ3VjX3NldHVw KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwogZXh0ZXJuIHZvaWQgaW50ZWxfZ3VjX2Zpbmkoc3Ry dWN0IGRybV9kZXZpY2UgKmRldik7Ci1leHRlcm4gY29uc3QgY2hhciAqaW50ZWxfZ3VjX2Z3X3N0 YXR1c19yZXByKGVudW0gaW50ZWxfZ3VjX2Z3X3N0YXR1cyBzdGF0dXMpOworZXh0ZXJuIGNvbnN0 IGNoYXIgKmludGVsX3VjX2Z3X3N0YXR1c19yZXByKGVudW0gaW50ZWxfdWNfZndfc3RhdHVzIHN0 YXR1cyk7CiBleHRlcm4gaW50IGludGVsX2d1Y19zdXNwZW5kKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYpOwogZXh0ZXJuIGludCBpbnRlbF9ndWNfcmVzdW1lKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp Owordm9pZCBpbnRlbF91Y19md19mZXRjaChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3Qg aW50ZWxfdWNfZncgKnVjX2Z3KTsKIAogLyogaTkxNV9ndWNfc3VibWlzc2lvbi5jICovCiBpbnQg aTkxNV9ndWNfc3VibWlzc2lvbl9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMKaW5kZXggMzI0ODEyZC4u M2IzNGYyMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRl ci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19sb2FkZXIuYwpAQCAtODEs MTYgKzgxLDE2IEBAIE1PRFVMRV9GSVJNV0FSRShJOTE1X0JYVF9HVUNfVUNPREUpOwogTU9EVUxF X0ZJUk1XQVJFKEk5MTVfS0JMX0dVQ19VQ09ERSk7CiAKIC8qIFVzZXItZnJpZW5kbHkgcmVwcmVz ZW50YXRpb24gb2YgYW4gZW51bSAqLwotY29uc3QgY2hhciAqaW50ZWxfZ3VjX2Z3X3N0YXR1c19y ZXByKGVudW0gaW50ZWxfZ3VjX2Z3X3N0YXR1cyBzdGF0dXMpCitjb25zdCBjaGFyICppbnRlbF91 Y19md19zdGF0dXNfcmVwcihlbnVtIGludGVsX3VjX2Z3X3N0YXR1cyBzdGF0dXMpCiB7CiAJc3dp dGNoIChzdGF0dXMpIHsKLQljYXNlIEdVQ19GSVJNV0FSRV9GQUlMOgorCWNhc2UgVUNfRklSTVdB UkVfRkFJTDoKIAkJcmV0dXJuICJGQUlMIjsKLQljYXNlIEdVQ19GSVJNV0FSRV9OT05FOgorCWNh c2UgVUNfRklSTVdBUkVfTk9ORToKIAkJcmV0dXJuICJOT05FIjsKLQljYXNlIEdVQ19GSVJNV0FS RV9QRU5ESU5HOgorCWNhc2UgVUNfRklSTVdBUkVfUEVORElORzoKIAkJcmV0dXJuICJQRU5ESU5H IjsKLQljYXNlIEdVQ19GSVJNV0FSRV9TVUNDRVNTOgorCWNhc2UgVUNfRklSTVdBUkVfU1VDQ0VT UzoKIAkJcmV0dXJuICJTVUNDRVNTIjsKIAlkZWZhdWx0OgogCQlyZXR1cm4gIlVOS05PV04hIjsK QEAgLTI1Miw3ICsyNTIsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgZ3VjX3Vjb2RlX3Jlc3BvbnNl KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIHN0YXRpYyBpbnQgZ3VjX3Vjb2Rl X3hmZXJfZG1hKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJCSAgICAgIHN0 cnVjdCBpOTE1X3ZtYSAqdm1hKQogewotCXN0cnVjdCBpbnRlbF9ndWNfZncgKmd1Y19mdyA9ICZk ZXZfcHJpdi0+Z3VjLmd1Y19mdzsKKwlzdHJ1Y3QgaW50ZWxfdWNfZncgKmd1Y19mdyA9ICZkZXZf cHJpdi0+Z3VjLmd1Y19mdzsKIAl1bnNpZ25lZCBsb25nIG9mZnNldDsKIAlzdHJ1Y3Qgc2dfdGFi bGUgKnNnID0gdm1hLT5wYWdlczsKIAl1MzIgc3RhdHVzLCByc2FbVU9TX1JTQV9TQ1JBVENIX01B WF9DT1VOVF07CkBAIC0zMjQsMTggKzMyNCwxOCBAQCBzdGF0aWMgdTMyIGd1Y193b3BjbV9zaXpl KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKICAqLwogc3RhdGljIGludCBndWNf dWNvZGVfeGZlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7Ci0Jc3RydWN0 IGludGVsX2d1Y19mdyAqZ3VjX2Z3ID0gJmRldl9wcml2LT5ndWMuZ3VjX2Z3OworCXN0cnVjdCBp bnRlbF91Y19mdyAqZ3VjX2Z3ID0gJmRldl9wcml2LT5ndWMuZ3VjX2Z3OwogCXN0cnVjdCBkcm1f ZGV2aWNlICpkZXYgPSAmZGV2X3ByaXYtPmRybTsKIAlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKIAlp bnQgcmV0OwogCi0JcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3NldF90b19ndHRfZG9tYWluKGd1Y19m dy0+Z3VjX2Z3X29iaiwgZmFsc2UpOworCXJldCA9IGk5MTVfZ2VtX29iamVjdF9zZXRfdG9fZ3R0 X2RvbWFpbihndWNfZnctPnVjX2Z3X29iaiwgZmFsc2UpOwogCWlmIChyZXQpIHsKIAkJRFJNX0RF QlVHX0RSSVZFUigic2V0LWRvbWFpbiBmYWlsZWQgJWRcbiIsIHJldCk7CiAJCXJldHVybiByZXQ7 CiAJfQogCi0Jdm1hID0gaTkxNV9nZW1fb2JqZWN0X2dndHRfcGluKGd1Y19mdy0+Z3VjX2Z3X29i aiwgTlVMTCwgMCwgMCwgMCk7CisJdm1hID0gaTkxNV9nZW1fb2JqZWN0X2dndHRfcGluKGd1Y19m dy0+dWNfZndfb2JqLCBOVUxMLCAwLCAwLCAwKTsKIAlpZiAoSVNfRVJSKHZtYSkpIHsKIAkJRFJN X0RFQlVHX0RSSVZFUigicGluIGZhaWxlZCAlZFxuIiwgKGludClQVFJfRVJSKHZtYSkpOwogCQly ZXR1cm4gUFRSX0VSUih2bWEpOwpAQCAtNDI4LDE0ICs0MjgsMTQgQEAgc3RhdGljIGludCBpOTE1 X3Jlc2V0X2d1YyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiBpbnQgaW50ZWxf Z3VjX3NldHVwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiB7CiAJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwotCXN0cnVjdCBpbnRlbF9ndWNfZncgKmd1 Y19mdyA9ICZkZXZfcHJpdi0+Z3VjLmd1Y19mdzsKLQljb25zdCBjaGFyICpmd19wYXRoID0gZ3Vj X2Z3LT5ndWNfZndfcGF0aDsKKwlzdHJ1Y3QgaW50ZWxfdWNfZncgKmd1Y19mdyA9ICZkZXZfcHJp di0+Z3VjLmd1Y19mdzsKKwljb25zdCBjaGFyICpmd19wYXRoID0gZ3VjX2Z3LT51Y19md19wYXRo OwogCWludCByZXRyaWVzLCByZXQsIGVycjsKIAogCURSTV9ERUJVR19EUklWRVIoIkd1QyBmdyBz dGF0dXM6IHBhdGggJXMsIGZldGNoICVzLCBsb2FkICVzXG4iLAogCQlmd19wYXRoLAotCQlpbnRl bF9ndWNfZndfc3RhdHVzX3JlcHIoZ3VjX2Z3LT5ndWNfZndfZmV0Y2hfc3RhdHVzKSwKLQkJaW50 ZWxfZ3VjX2Z3X3N0YXR1c19yZXByKGd1Y19mdy0+Z3VjX2Z3X2xvYWRfc3RhdHVzKSk7CisJCWlu dGVsX3VjX2Z3X3N0YXR1c19yZXByKGd1Y19mdy0+ZmV0Y2hfc3RhdHVzKSwKKwkJaW50ZWxfdWNf Zndfc3RhdHVzX3JlcHIoZ3VjX2Z3LT5sb2FkX3N0YXR1cykpOwogCiAJLyogTG9hZGluZyBmb3Ji aWRkZW4sIG9yIG5vIGZpcm13YXJlIHRvIGxvYWQ/ICovCiAJaWYgKCFpOTE1LmVuYWJsZV9ndWNf bG9hZGluZykgewpAQCAtNDUzLDIxICs0NTMsMjEgQEAgaW50IGludGVsX2d1Y19zZXR1cChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2KQogCX0KIAogCS8qIEZldGNoIGZhaWxlZCwgb3IgYWxyZWFkeSBm ZXRjaGVkIGJ1dCBmYWlsZWQgdG8gbG9hZD8gKi8KLQlpZiAoZ3VjX2Z3LT5ndWNfZndfZmV0Y2hf c3RhdHVzICE9IEdVQ19GSVJNV0FSRV9TVUNDRVNTKSB7CisJaWYgKGd1Y19mdy0+ZmV0Y2hfc3Rh dHVzICE9IFVDX0ZJUk1XQVJFX1NVQ0NFU1MpIHsKIAkJZXJyID0gLUVJTzsKIAkJZ290byBmYWls OwotCX0gZWxzZSBpZiAoZ3VjX2Z3LT5ndWNfZndfbG9hZF9zdGF0dXMgPT0gR1VDX0ZJUk1XQVJF X0ZBSUwpIHsKKwl9IGVsc2UgaWYgKGd1Y19mdy0+bG9hZF9zdGF0dXMgPT0gVUNfRklSTVdBUkVf RkFJTCkgewogCQllcnIgPSAtRU5PRVhFQzsKIAkJZ290byBmYWlsOwogCX0KIAogCWRpcmVjdF9p bnRlcnJ1cHRzX3RvX2hvc3QoZGV2X3ByaXYpOwogCi0JZ3VjX2Z3LT5ndWNfZndfbG9hZF9zdGF0 dXMgPSBHVUNfRklSTVdBUkVfUEVORElORzsKKwlndWNfZnctPmxvYWRfc3RhdHVzID0gVUNfRklS TVdBUkVfUEVORElORzsKIAogCURSTV9ERUJVR19EUklWRVIoIkd1QyBmdyBzdGF0dXM6IGZldGNo ICVzLCBsb2FkICVzXG4iLAotCQlpbnRlbF9ndWNfZndfc3RhdHVzX3JlcHIoZ3VjX2Z3LT5ndWNf ZndfZmV0Y2hfc3RhdHVzKSwKLQkJaW50ZWxfZ3VjX2Z3X3N0YXR1c19yZXByKGd1Y19mdy0+Z3Vj X2Z3X2xvYWRfc3RhdHVzKSk7CisJCWludGVsX3VjX2Z3X3N0YXR1c19yZXByKGd1Y19mdy0+ZmV0 Y2hfc3RhdHVzKSwKKwkJaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIoZ3VjX2Z3LT5sb2FkX3N0YXR1 cykpOwogCiAJZXJyID0gaTkxNV9ndWNfc3VibWlzc2lvbl9pbml0KGRldl9wcml2KTsKIAlpZiAo ZXJyKQpAQCAtNTAxLDExICs1MDEsMTEgQEAgaW50IGludGVsX2d1Y19zZXR1cChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2KQogCQkJICJyZXRyeSAlZCBtb3JlIHRpbWUocylcbiIsIGVyciwgcmV0cmll cyk7CiAJfQogCi0JZ3VjX2Z3LT5ndWNfZndfbG9hZF9zdGF0dXMgPSBHVUNfRklSTVdBUkVfU1VD Q0VTUzsKKwlndWNfZnctPmxvYWRfc3RhdHVzID0gVUNfRklSTVdBUkVfU1VDQ0VTUzsKIAogCURS TV9ERUJVR19EUklWRVIoIkd1QyBmdyBzdGF0dXM6IGZldGNoICVzLCBsb2FkICVzXG4iLAotCQlp bnRlbF9ndWNfZndfc3RhdHVzX3JlcHIoZ3VjX2Z3LT5ndWNfZndfZmV0Y2hfc3RhdHVzKSwKLQkJ aW50ZWxfZ3VjX2Z3X3N0YXR1c19yZXByKGd1Y19mdy0+Z3VjX2Z3X2xvYWRfc3RhdHVzKSk7CisJ CWludGVsX3VjX2Z3X3N0YXR1c19yZXByKGd1Y19mdy0+ZmV0Y2hfc3RhdHVzKSwKKwkJaW50ZWxf dWNfZndfc3RhdHVzX3JlcHIoZ3VjX2Z3LT5sb2FkX3N0YXR1cykpOwogCiAJaWYgKGk5MTUuZW5h YmxlX2d1Y19zdWJtaXNzaW9uKSB7CiAJCWVyciA9IGk5MTVfZ3VjX3N1Ym1pc3Npb25fZW5hYmxl KGRldl9wcml2KTsKQEAgLTUxNyw4ICs1MTcsOCBAQCBpbnQgaW50ZWxfZ3VjX3NldHVwKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYpCiAJcmV0dXJuIDA7CiAKIGZhaWw6Ci0JaWYgKGd1Y19mdy0+Z3Vj X2Z3X2xvYWRfc3RhdHVzID09IEdVQ19GSVJNV0FSRV9QRU5ESU5HKQotCQlndWNfZnctPmd1Y19m d19sb2FkX3N0YXR1cyA9IEdVQ19GSVJNV0FSRV9GQUlMOworCWlmIChndWNfZnctPmxvYWRfc3Rh dHVzID09IFVDX0ZJUk1XQVJFX1BFTkRJTkcpCisJCWd1Y19mdy0+bG9hZF9zdGF0dXMgPSBVQ19G SVJNV0FSRV9GQUlMOwogCiAJZGlyZWN0X2ludGVycnVwdHNfdG9faG9zdChkZXZfcHJpdik7CiAJ aTkxNV9ndWNfc3VibWlzc2lvbl9kaXNhYmxlKGRldl9wcml2KTsKQEAgLTU2Myw3ICs1NjMsNyBA QCBmYWlsOgogCXJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyB2b2lkIGd1Y19md19mZXRjaChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgaW50ZWxfZ3VjX2Z3ICpndWNfZncpCit2b2lkIGlu dGVsX3VjX2Z3X2ZldGNoKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBpbnRlbF91Y19m dyAqdWNfZncpCiB7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKIAljb25zdCBz dHJ1Y3QgZmlybXdhcmUgKmZ3OwpAQCAtNTcxLDE3ICs1NzEsMTcgQEAgc3RhdGljIHZvaWQgZ3Vj X2Z3X2ZldGNoKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBpbnRlbF9ndWNfZncgKmd1 Y19mdykKIAlzaXplX3Qgc2l6ZTsKIAlpbnQgZXJyOwogCi0JRFJNX0RFQlVHX0RSSVZFUigiYmVm b3JlIHJlcXVlc3RpbmcgZmlybXdhcmU6IEd1QyBmdyBmZXRjaCBzdGF0dXMgJXNcbiIsCi0JCWlu dGVsX2d1Y19md19zdGF0dXNfcmVwcihndWNfZnctPmd1Y19md19mZXRjaF9zdGF0dXMpKTsKKwlE Uk1fREVCVUdfRFJJVkVSKCJiZWZvcmUgcmVxdWVzdGluZyBmaXJtd2FyZTogdUMgZncgZmV0Y2gg c3RhdHVzICVzXG4iLAorCQlpbnRlbF91Y19md19zdGF0dXNfcmVwcih1Y19mdy0+ZmV0Y2hfc3Rh dHVzKSk7CiAKLQllcnIgPSByZXF1ZXN0X2Zpcm13YXJlKCZmdywgZ3VjX2Z3LT5ndWNfZndfcGF0 aCwgJmRldi0+cGRldi0+ZGV2KTsKKwllcnIgPSByZXF1ZXN0X2Zpcm13YXJlKCZmdywgdWNfZnct PnVjX2Z3X3BhdGgsICZkZXYtPnBkZXYtPmRldik7CiAJaWYgKGVycikKIAkJZ290byBmYWlsOwog CWlmICghZncpCiAJCWdvdG8gZmFpbDsKIAotCURSTV9ERUJVR19EUklWRVIoImZldGNoIEd1QyBm dyBmcm9tICVzIHN1Y2NlZWRlZCwgZncgJXBcbiIsCi0JCWd1Y19mdy0+Z3VjX2Z3X3BhdGgsIGZ3 KTsKKwlEUk1fREVCVUdfRFJJVkVSKCJmZXRjaCB1QyBmdyBmcm9tICVzIHN1Y2NlZWRlZCwgZncg JXBcbiIsCisJCXVjX2Z3LT51Y19md19wYXRoLCBmdyk7CiAKIAkvKiBDaGVjayB0aGUgc2l6ZSBv ZiB0aGUgYmxvYiBiZWZvcmUgZXhhbWluaW5nIGJ1ZmZlciBjb250ZW50cyAqLwogCWlmIChmdy0+ c2l6ZSA8IHNpemVvZihzdHJ1Y3QgZ3VjX2Nzc19oZWFkZXIpKSB7CkBAIC01OTIsMzYgKzU5Miwz NiBAQCBzdGF0aWMgdm9pZCBndWNfZndfZmV0Y2goc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3Ry dWN0IGludGVsX2d1Y19mdyAqZ3VjX2Z3KQogCWNzcyA9IChzdHJ1Y3QgZ3VjX2Nzc19oZWFkZXIg Kilmdy0+ZGF0YTsKIAogCS8qIEZpcm13YXJlIGJpdHMgYWx3YXlzIHN0YXJ0IGZyb20gaGVhZGVy ICovCi0JZ3VjX2Z3LT5oZWFkZXJfb2Zmc2V0ID0gMDsKLQlndWNfZnctPmhlYWRlcl9zaXplID0g KGNzcy0+aGVhZGVyX3NpemVfZHcgLSBjc3MtPm1vZHVsdXNfc2l6ZV9kdyAtCisJdWNfZnctPmhl YWRlcl9vZmZzZXQgPSAwOworCXVjX2Z3LT5oZWFkZXJfc2l6ZSA9IChjc3MtPmhlYWRlcl9zaXpl X2R3IC0gY3NzLT5tb2R1bHVzX3NpemVfZHcgLQogCQljc3MtPmtleV9zaXplX2R3IC0gY3NzLT5l eHBvbmVudF9zaXplX2R3KSAqIHNpemVvZih1MzIpOwogCi0JaWYgKGd1Y19mdy0+aGVhZGVyX3Np emUgIT0gc2l6ZW9mKHN0cnVjdCBndWNfY3NzX2hlYWRlcikpIHsKKwlpZiAodWNfZnctPmhlYWRl cl9zaXplICE9IHNpemVvZihzdHJ1Y3QgZ3VjX2Nzc19oZWFkZXIpKSB7CiAJCURSTV9FUlJPUigi Q1NTIGhlYWRlciBkZWZpbml0aW9uIG1pc21hdGNoXG4iKTsKIAkJZ290byBmYWlsOwogCX0KIAog CS8qIHRoZW4sIHVDb2RlICovCi0JZ3VjX2Z3LT51Y29kZV9vZmZzZXQgPSBndWNfZnctPmhlYWRl cl9vZmZzZXQgKyBndWNfZnctPmhlYWRlcl9zaXplOwotCWd1Y19mdy0+dWNvZGVfc2l6ZSA9IChj c3MtPnNpemVfZHcgLSBjc3MtPmhlYWRlcl9zaXplX2R3KSAqIHNpemVvZih1MzIpOworCXVjX2Z3 LT51Y29kZV9vZmZzZXQgPSB1Y19mdy0+aGVhZGVyX29mZnNldCArIHVjX2Z3LT5oZWFkZXJfc2l6 ZTsKKwl1Y19mdy0+dWNvZGVfc2l6ZSA9IChjc3MtPnNpemVfZHcgLSBjc3MtPmhlYWRlcl9zaXpl X2R3KSAqIHNpemVvZih1MzIpOwogCiAJLyogbm93IFJTQSAqLwogCWlmIChjc3MtPmtleV9zaXpl X2R3ICE9IFVPU19SU0FfU0NSQVRDSF9NQVhfQ09VTlQpIHsKIAkJRFJNX0VSUk9SKCJSU0Ega2V5 IHNpemUgaXMgYmFkXG4iKTsKIAkJZ290byBmYWlsOwogCX0KLQlndWNfZnctPnJzYV9vZmZzZXQg PSBndWNfZnctPnVjb2RlX29mZnNldCArIGd1Y19mdy0+dWNvZGVfc2l6ZTsKLQlndWNfZnctPnJz YV9zaXplID0gY3NzLT5rZXlfc2l6ZV9kdyAqIHNpemVvZih1MzIpOworCXVjX2Z3LT5yc2Ffb2Zm c2V0ID0gdWNfZnctPnVjb2RlX29mZnNldCArIHVjX2Z3LT51Y29kZV9zaXplOworCXVjX2Z3LT5y c2Ffc2l6ZSA9IGNzcy0+a2V5X3NpemVfZHcgKiBzaXplb2YodTMyKTsKIAogCS8qIEF0IGxlYXN0 LCBpdCBzaG91bGQgaGF2ZSBoZWFkZXIsIHVDb2RlIGFuZCBSU0EuIFNpemUgb2YgYWxsIHRocmVl LiAqLwotCXNpemUgPSBndWNfZnctPmhlYWRlcl9zaXplICsgZ3VjX2Z3LT51Y29kZV9zaXplICsg Z3VjX2Z3LT5yc2Ffc2l6ZTsKKwlzaXplID0gdWNfZnctPmhlYWRlcl9zaXplICsgdWNfZnctPnVj b2RlX3NpemUgKyB1Y19mdy0+cnNhX3NpemU7CiAJaWYgKGZ3LT5zaXplIDwgc2l6ZSkgewogCQlE Uk1fRVJST1IoIk1pc3NpbmcgZmlybXdhcmUgY29tcG9uZW50c1xuIik7CiAJCWdvdG8gZmFpbDsK IAl9CiAKIAkvKiBIZWFkZXIgYW5kIHVDb2RlIHdpbGwgYmUgbG9hZGVkIHRvIFdPUENNLiBTaXpl IG9mIHRoZSB0d28uICovCi0Jc2l6ZSA9IGd1Y19mdy0+aGVhZGVyX3NpemUgKyBndWNfZnctPnVj b2RlX3NpemU7CisJc2l6ZSA9IHVjX2Z3LT5oZWFkZXJfc2l6ZSArIHVjX2Z3LT51Y29kZV9zaXpl OwogCWlmIChzaXplID4gZ3VjX3dvcGNtX3NpemUodG9faTkxNShkZXYpKSkgewogCQlEUk1fRVJS T1IoIkZpcm13YXJlIGlzIHRvbyBsYXJnZSB0byBmaXQgaW4gV09QQ01cbiIpOwogCQlnb3RvIGZh aWw7CkBAIC02MzMsMjEgKzYzMywyMSBAQCBzdGF0aWMgdm9pZCBndWNfZndfZmV0Y2goc3RydWN0 IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGludGVsX2d1Y19mdyAqZ3VjX2Z3KQogCSAqIFRXTyBi eXRlcyBlYWNoIChpLmUuIHUxNiksIGFsdGhvdWdoIGFsbCBwb2ludGVycyBhbmQgb2Zmc2V0cyBh cmUgZGVmaW5lZAogCSAqIGluIHRlcm1zIG9mIGJ5dGVzICh1OCkuCiAJICovCi0JZ3VjX2Z3LT5n dWNfZndfbWFqb3JfZm91bmQgPSBjc3MtPmd1Y19zd192ZXJzaW9uID4+IDE2OwotCWd1Y19mdy0+ Z3VjX2Z3X21pbm9yX2ZvdW5kID0gY3NzLT5ndWNfc3dfdmVyc2lvbiAmIDB4RkZGRjsKLQotCWlm IChndWNfZnctPmd1Y19md19tYWpvcl9mb3VuZCAhPSBndWNfZnctPmd1Y19md19tYWpvcl93YW50 ZWQgfHwKLQkgICAgZ3VjX2Z3LT5ndWNfZndfbWlub3JfZm91bmQgPCBndWNfZnctPmd1Y19md19t aW5vcl93YW50ZWQpIHsKLQkJRFJNX0VSUk9SKCJHdUMgZmlybXdhcmUgdmVyc2lvbiAlZC4lZCwg cmVxdWlyZWQgJWQuJWRcbiIsCi0JCQlndWNfZnctPmd1Y19md19tYWpvcl9mb3VuZCwgZ3VjX2Z3 LT5ndWNfZndfbWlub3JfZm91bmQsCi0JCQlndWNfZnctPmd1Y19md19tYWpvcl93YW50ZWQsIGd1 Y19mdy0+Z3VjX2Z3X21pbm9yX3dhbnRlZCk7CisJdWNfZnctPm1ham9yX3Zlcl9mb3VuZCA9IGNz cy0+Z3VjX3N3X3ZlcnNpb24gPj4gMTY7CisJdWNfZnctPm1pbm9yX3Zlcl9mb3VuZCA9IGNzcy0+ Z3VjX3N3X3ZlcnNpb24gJiAweEZGRkY7CisKKwlpZiAodWNfZnctPm1ham9yX3Zlcl9mb3VuZCAh PSB1Y19mdy0+bWFqb3JfdmVyX3dhbnRlZCB8fAorCSAgICB1Y19mdy0+bWlub3JfdmVyX2ZvdW5k IDwgdWNfZnctPm1pbm9yX3Zlcl93YW50ZWQpIHsKKwkJRFJNX0VSUk9SKCJ1QyBmaXJtd2FyZSB2 ZXJzaW9uICVkLiVkLCByZXF1aXJlZCAlZC4lZFxuIiwKKwkJCXVjX2Z3LT5tYWpvcl92ZXJfZm91 bmQsIHVjX2Z3LT5taW5vcl92ZXJfZm91bmQsCisJCQl1Y19mdy0+bWFqb3JfdmVyX3dhbnRlZCwg dWNfZnctPm1pbm9yX3Zlcl93YW50ZWQpOwogCQllcnIgPSAtRU5PRVhFQzsKIAkJZ290byBmYWls OwogCX0KIAogCURSTV9ERUJVR19EUklWRVIoImZpcm13YXJlIHZlcnNpb24gJWQuJWQgT0sgKG1p bmltdW0gJWQuJWQpXG4iLAotCQkJZ3VjX2Z3LT5ndWNfZndfbWFqb3JfZm91bmQsIGd1Y19mdy0+ Z3VjX2Z3X21pbm9yX2ZvdW5kLAotCQkJZ3VjX2Z3LT5ndWNfZndfbWFqb3Jfd2FudGVkLCBndWNf ZnctPmd1Y19md19taW5vcl93YW50ZWQpOworCQkJdWNfZnctPm1ham9yX3Zlcl9mb3VuZCwgdWNf ZnctPm1pbm9yX3Zlcl9mb3VuZCwKKwkJCXVjX2Z3LT5tYWpvcl92ZXJfd2FudGVkLCB1Y19mdy0+ bWlub3JfdmVyX3dhbnRlZCk7CiAKIAltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CiAJ b2JqID0gaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9mcm9tX2RhdGEoZGV2LCBmdy0+ZGF0YSwgZnct PnNpemUpOwpAQCAtNjU3LDMxICs2NTcsMzEgQEAgc3RhdGljIHZvaWQgZ3VjX2Z3X2ZldGNoKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBpbnRlbF9ndWNfZncgKmd1Y19mdykKIAkJZ290 byBmYWlsOwogCX0KIAotCWd1Y19mdy0+Z3VjX2Z3X29iaiA9IG9iajsKLQlndWNfZnctPmd1Y19m d19zaXplID0gZnctPnNpemU7CisJdWNfZnctPnVjX2Z3X29iaiA9IG9iajsKKwl1Y19mdy0+dWNf Zndfc2l6ZSA9IGZ3LT5zaXplOwogCi0JRFJNX0RFQlVHX0RSSVZFUigiR3VDIGZ3IGZldGNoIHN0 YXR1cyBTVUNDRVNTLCBvYmogJXBcbiIsCi0JCQlndWNfZnctPmd1Y19md19vYmopOworCURSTV9E RUJVR19EUklWRVIoInVDIGZ3IGZldGNoIHN0YXR1cyBTVUNDRVNTLCBvYmogJXBcbiIsCisJCQl1 Y19mdy0+dWNfZndfb2JqKTsKIAogCXJlbGVhc2VfZmlybXdhcmUoZncpOwotCWd1Y19mdy0+Z3Vj X2Z3X2ZldGNoX3N0YXR1cyA9IEdVQ19GSVJNV0FSRV9TVUNDRVNTOworCXVjX2Z3LT5mZXRjaF9z dGF0dXMgPSBVQ19GSVJNV0FSRV9TVUNDRVNTOwogCXJldHVybjsKIAogZmFpbDoKLQlEUk1fREVC VUdfRFJJVkVSKCJHdUMgZncgZmV0Y2ggc3RhdHVzIEZBSUw7IGVyciAlZCwgZncgJXAsIG9iaiAl cFxuIiwKLQkJZXJyLCBmdywgZ3VjX2Z3LT5ndWNfZndfb2JqKTsKLQlEUk1fRVJST1IoIkZhaWxl ZCB0byBmZXRjaCBHdUMgZmlybXdhcmUgZnJvbSAlcyAoZXJyb3IgJWQpXG4iLAotCQkgIGd1Y19m dy0+Z3VjX2Z3X3BhdGgsIGVycik7CisJRFJNX0RFQlVHX0RSSVZFUigidUMgZncgZmV0Y2ggc3Rh dHVzIEZBSUw7IGVyciAlZCwgZncgJXAsIG9iaiAlcFxuIiwKKwkJZXJyLCBmdywgdWNfZnctPnVj X2Z3X29iaik7CisJRFJNX0VSUk9SKCJGYWlsZWQgdG8gZmV0Y2ggdUMgZmlybXdhcmUgZnJvbSAl cyAoZXJyb3IgJWQpXG4iLAorCQkgIHVjX2Z3LT51Y19md19wYXRoLCBlcnIpOwogCiAJbXV0ZXhf bG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwotCW9iaiA9IGd1Y19mdy0+Z3VjX2Z3X29iajsKKwlv YmogPSB1Y19mdy0+dWNfZndfb2JqOwogCWlmIChvYmopCiAJCWk5MTVfZ2VtX29iamVjdF9wdXQo b2JqKTsKLQlndWNfZnctPmd1Y19md19vYmogPSBOVUxMOworCXVjX2Z3LT51Y19md19vYmogPSBO VUxMOwogCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwogCiAJcmVsZWFzZV9maXJt d2FyZShmdyk7CQkvKiBPSyBldmVuIGlmIGZ3IGlzIE5VTEwgKi8KLQlndWNfZnctPmd1Y19md19m ZXRjaF9zdGF0dXMgPSBHVUNfRklSTVdBUkVfRkFJTDsKKwl1Y19mdy0+ZmV0Y2hfc3RhdHVzID0g VUNfRklSTVdBUkVfRkFJTDsKIH0KIAogLyoqCkBAIC02OTYsNyArNjk2LDcgQEAgZmFpbDoKIHZv aWQgaW50ZWxfZ3VjX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIHsKIAlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Ci0Jc3RydWN0IGludGVsX2d1 Y19mdyAqZ3VjX2Z3ID0gJmRldl9wcml2LT5ndWMuZ3VjX2Z3OworCXN0cnVjdCBpbnRlbF91Y19m dyAqZ3VjX2Z3ID0gJmRldl9wcml2LT5ndWMuZ3VjX2Z3OwogCWNvbnN0IGNoYXIgKmZ3X3BhdGg7 CiAKIAkvKiBBIG5lZ2F0aXZlIHZhbHVlIG1lYW5zICJ1c2UgcGxhdGZvcm0gZGVmYXVsdCIgKi8K QEAgLTcwOSwyNCArNzA5LDI0IEBAIHZvaWQgaW50ZWxfZ3VjX2luaXQoc3RydWN0IGRybV9kZXZp Y2UgKmRldikKIAkJZndfcGF0aCA9IE5VTEw7CiAJfSBlbHNlIGlmIChJU19TS1lMQUtFKGRldikp IHsKIAkJZndfcGF0aCA9IEk5MTVfU0tMX0dVQ19VQ09ERTsKLQkJZ3VjX2Z3LT5ndWNfZndfbWFq b3Jfd2FudGVkID0gU0tMX0ZXX01BSk9SOwotCQlndWNfZnctPmd1Y19md19taW5vcl93YW50ZWQg PSBTS0xfRldfTUlOT1I7CisJCWd1Y19mdy0+bWFqb3JfdmVyX3dhbnRlZCA9IFNLTF9GV19NQUpP UjsKKwkJZ3VjX2Z3LT5taW5vcl92ZXJfd2FudGVkID0gU0tMX0ZXX01JTk9SOwogCX0gZWxzZSBp ZiAoSVNfQlJPWFRPTihkZXYpKSB7CiAJCWZ3X3BhdGggPSBJOTE1X0JYVF9HVUNfVUNPREU7Ci0J CWd1Y19mdy0+Z3VjX2Z3X21ham9yX3dhbnRlZCA9IEJYVF9GV19NQUpPUjsKLQkJZ3VjX2Z3LT5n dWNfZndfbWlub3Jfd2FudGVkID0gQlhUX0ZXX01JTk9SOworCQlndWNfZnctPm1ham9yX3Zlcl93 YW50ZWQgPSBCWFRfRldfTUFKT1I7CisJCWd1Y19mdy0+bWlub3JfdmVyX3dhbnRlZCA9IEJYVF9G V19NSU5PUjsKIAl9IGVsc2UgaWYgKElTX0tBQllMQUtFKGRldikpIHsKIAkJZndfcGF0aCA9IEk5 MTVfS0JMX0dVQ19VQ09ERTsKLQkJZ3VjX2Z3LT5ndWNfZndfbWFqb3Jfd2FudGVkID0gS0JMX0ZX X01BSk9SOwotCQlndWNfZnctPmd1Y19md19taW5vcl93YW50ZWQgPSBLQkxfRldfTUlOT1I7CisJ CWd1Y19mdy0+bWFqb3JfdmVyX3dhbnRlZCA9IEtCTF9GV19NQUpPUjsKKwkJZ3VjX2Z3LT5taW5v cl92ZXJfd2FudGVkID0gS0JMX0ZXX01JTk9SOwogCX0gZWxzZSB7CiAJCWZ3X3BhdGggPSAiIjsJ LyogdW5rbm93biBkZXZpY2UgKi8KIAl9CiAKLQlndWNfZnctPmd1Y19kZXYgPSBkZXY7Ci0JZ3Vj X2Z3LT5ndWNfZndfcGF0aCA9IGZ3X3BhdGg7Ci0JZ3VjX2Z3LT5ndWNfZndfZmV0Y2hfc3RhdHVz ID0gR1VDX0ZJUk1XQVJFX05PTkU7Ci0JZ3VjX2Z3LT5ndWNfZndfbG9hZF9zdGF0dXMgPSBHVUNf RklSTVdBUkVfTk9ORTsKKwlndWNfZnctPnVjX2RldiA9IGRldjsKKwlndWNfZnctPnVjX2Z3X3Bh dGggPSBmd19wYXRoOworCWd1Y19mdy0+ZmV0Y2hfc3RhdHVzID0gVUNfRklSTVdBUkVfTk9ORTsK KwlndWNfZnctPmxvYWRfc3RhdHVzID0gVUNfRklSTVdBUkVfTk9ORTsKIAogCS8qIEVhcmx5IChh bmQgc2lsZW50KSByZXR1cm4gaWYgR3VDIGxvYWRpbmcgaXMgZGlzYWJsZWQgKi8KIAlpZiAoIWk5 MTUuZW5hYmxlX2d1Y19sb2FkaW5nKQpAQCAtNzM2LDkgKzczNiw5IEBAIHZvaWQgaW50ZWxfZ3Vj X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAlpZiAoKmZ3X3BhdGggPT0gJ1wwJykKIAkJ cmV0dXJuOwogCi0JZ3VjX2Z3LT5ndWNfZndfZmV0Y2hfc3RhdHVzID0gR1VDX0ZJUk1XQVJFX1BF TkRJTkc7CisJZ3VjX2Z3LT5mZXRjaF9zdGF0dXMgPSBVQ19GSVJNV0FSRV9QRU5ESU5HOwogCURS TV9ERUJVR19EUklWRVIoIkd1QyBmaXJtd2FyZSBwZW5kaW5nLCBwYXRoICVzXG4iLCBmd19wYXRo KTsKLQlndWNfZndfZmV0Y2goZGV2LCBndWNfZncpOworCWludGVsX3VjX2Z3X2ZldGNoKGRldiwg Z3VjX2Z3KTsKIAkvKiBzdGF0dXMgbXVzdCBub3cgYmUgRkFJTCBvciBTVUNDRVNTICovCiB9CiAK QEAgLTc0OSwxNyArNzQ5LDE3IEBAIHZvaWQgaW50ZWxfZ3VjX2luaXQoc3RydWN0IGRybV9kZXZp Y2UgKmRldikKIHZvaWQgaW50ZWxfZ3VjX2Zpbmkoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIHsK IAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Ci0Jc3Ry dWN0IGludGVsX2d1Y19mdyAqZ3VjX2Z3ID0gJmRldl9wcml2LT5ndWMuZ3VjX2Z3OworCXN0cnVj dCBpbnRlbF91Y19mdyAqZ3VjX2Z3ID0gJmRldl9wcml2LT5ndWMuZ3VjX2Z3OwogCiAJbXV0ZXhf bG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwogCWRpcmVjdF9pbnRlcnJ1cHRzX3RvX2hvc3QoZGV2 X3ByaXYpOwogCWk5MTVfZ3VjX3N1Ym1pc3Npb25fZGlzYWJsZShkZXZfcHJpdik7CiAJaTkxNV9n dWNfc3VibWlzc2lvbl9maW5pKGRldl9wcml2KTsKIAotCWlmIChndWNfZnctPmd1Y19md19vYmop Ci0JCWk5MTVfZ2VtX29iamVjdF9wdXQoZ3VjX2Z3LT5ndWNfZndfb2JqKTsKLQlndWNfZnctPmd1 Y19md19vYmogPSBOVUxMOworCWlmIChndWNfZnctPnVjX2Z3X29iaikKKwkJaTkxNV9nZW1fb2Jq ZWN0X3B1dChndWNfZnctPnVjX2Z3X29iaik7CisJZ3VjX2Z3LT51Y19md19vYmogPSBOVUxMOwog CW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwogCi0JZ3VjX2Z3LT5ndWNfZndfZmV0 Y2hfc3RhdHVzID0gR1VDX0ZJUk1XQVJFX05PTkU7CisJZ3VjX2Z3LT5mZXRjaF9zdGF0dXMgPSBV Q19GSVJNV0FSRV9OT05FOwogfQotLSAKMS45LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxp c3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2ludGVsLWdmeAo=