From mboxrd@z Thu Jan 1 00:00:00 1970 From: yu.dai@intel.com Subject: [PATCH v2 1/6] drm/i915/guc: Make the GuC fw loading helper functions general Date: Mon, 8 Feb 2016 15:02:48 -0800 Message-ID: <1454972573-16290-2-git-send-email-yu.dai@intel.com> References: <1454972573-16290-1-git-send-email-yu.dai@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTP id 3D1286E4A5 for ; Mon, 8 Feb 2016 15:07:33 -0800 (PST) In-Reply-To: <1454972573-16290-1-git-send-email-yu.dai@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 RnJvbTogQWxleCBEYWkgPHl1LmRhaUBpbnRlbC5jb20+CgpSZW5hbWUgc29tZSBvZiB0aGUgR3VD IGZ3IGxvYWRpbmcgY29kZSB0byBtYWtlIHRoZW0gbW9yZSBnZW5lcmFsLiBXZQp3aWxsIHV0aWxp emUgdGhlbSBmb3IgSHVDIGxvYWRpbmcgYXMgd2VsbC4KICAgIHMvaW50ZWxfZ3VjX2Z3L2ludGVs X3VjX2Z3L2cKICAgIHMvR1VDX0ZJUk1XQVJFL1VDX0ZJUk1XQVJFL2cKClN0cnVjdCBpbnRlbF9n dWNfZncgaXMgcmVuYW1lZCB0byBpbnRlbF91Y19mdy4gUHJlZml4IG9mIHR0cyBtZW1iZXJzLApz dWNoIGFzICdndWMnIG9yICdndWNfZncnIGVpdGhlciBpcyByZW5hbWVkIHRvICd1Yycgb3IgcmVt b3ZlZCBmb3IKc2FtZSBwdXJwb3NlLgoKU2lnbmVkLW9mZi1ieTogQWxleCBEYWkgPHl1LmRhaUBp bnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IFBldGVyIEFudG9pbmUgPHBldGVyLmFudG9pbmVAaW50 ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jICAgICB8ICAx MiArLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5oICAgICAgICB8ICAzOSArKyst LS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMgfCAxNzcgKysrKysr KysrKysrKysrKystLS0tLS0tLS0tLS0tLS0KIDMgZmlsZXMgY2hhbmdlZCwgMTIwIGluc2VydGlv bnMoKyksIDEwOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2RlYnVnZnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCmlu ZGV4IGVjMGMyYTA1ZS4uODczZjFiMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kZWJ1Z2ZzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMK QEAgLTI0MDIsNyArMjQwMiw3IEBAIHN0YXRpYyBpbnQgaTkxNV9ndWNfbG9hZF9zdGF0dXNfaW5m byhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCiB7CiAJc3RydWN0IGRybV9pbmZvX25v ZGUgKm5vZGUgPSBtLT5wcml2YXRlOwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IG5vZGUtPm1pbm9yLT5kZXYtPmRldl9wcml2YXRlOwotCXN0cnVjdCBpbnRlbF9ndWNfZncg Kmd1Y19mdyA9ICZkZXZfcHJpdi0+Z3VjLmd1Y19mdzsKKwlzdHJ1Y3QgaW50ZWxfdWNfZncgKmd1 Y19mdyA9ICZkZXZfcHJpdi0+Z3VjLmd1Y19mdzsKIAl1MzIgdG1wLCBpOwogCiAJaWYgKCFIQVNf R1VDX1VDT0RFKGRldl9wcml2LT5kZXYpKQpAQCAtMjQxMCwxNSArMjQxMCwxNSBAQCBzdGF0aWMg aW50IGk5MTVfZ3VjX2xvYWRfc3RhdHVzX2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpk YXRhKQogCiAJc2VxX3ByaW50ZihtLCAiR3VDIGZpcm13YXJlIHN0YXR1czpcbiIpOwogCXNlcV9w cmludGYobSwgIlx0cGF0aDogJXNcbiIsCi0JCWd1Y19mdy0+Z3VjX2Z3X3BhdGgpOworCQlndWNf ZnctPnVjX2Z3X3BhdGgpOwogCXNlcV9wcmludGYobSwgIlx0ZmV0Y2g6ICVzXG4iLAotCQlpbnRl bF9ndWNfZndfc3RhdHVzX3JlcHIoZ3VjX2Z3LT5ndWNfZndfZmV0Y2hfc3RhdHVzKSk7CisJCWlu dGVsX3VjX2Z3X3N0YXR1c19yZXByKGd1Y19mdy0+ZmV0Y2hfc3RhdHVzKSk7CiAJc2VxX3ByaW50 ZihtLCAiXHRsb2FkOiAlc1xuIiwKLQkJaW50ZWxfZ3VjX2Z3X3N0YXR1c19yZXByKGd1Y19mdy0+ Z3VjX2Z3X2xvYWRfc3RhdHVzKSk7CisJCWludGVsX3VjX2Z3X3N0YXR1c19yZXByKGd1Y19mdy0+ bG9hZF9zdGF0dXMpKTsKIAlzZXFfcHJpbnRmKG0sICJcdHZlcnNpb24gd2FudGVkOiAlZC4lZFxu IiwKLQkJZ3VjX2Z3LT5ndWNfZndfbWFqb3Jfd2FudGVkLCBndWNfZnctPmd1Y19md19taW5vcl93 YW50ZWQpOworCQlndWNfZnctPm1ham9yX3Zlcl93YW50ZWQsIGd1Y19mdy0+bWlub3JfdmVyX3dh bnRlZCk7CiAJc2VxX3ByaW50ZihtLCAiXHR2ZXJzaW9uIGZvdW5kOiAlZC4lZFxuIiwKLQkJZ3Vj X2Z3LT5ndWNfZndfbWFqb3JfZm91bmQsIGd1Y19mdy0+Z3VjX2Z3X21pbm9yX2ZvdW5kKTsKKwkJ Z3VjX2Z3LT5tYWpvcl92ZXJfZm91bmQsIGd1Y19mdy0+bWlub3JfdmVyX2ZvdW5kKTsKIAlzZXFf cHJpbnRmKG0sICJcdGhlYWRlcjogb2Zmc2V0IGlzICVkOyBzaXplID0gJWRcbiIsCiAJCWd1Y19m dy0+aGVhZGVyX29mZnNldCwgZ3VjX2Z3LT5oZWFkZXJfc2l6ZSk7CiAJc2VxX3ByaW50ZihtLCAi XHR1Q29kZTogb2Zmc2V0IGlzICVkOyBzaXplID0gJWRcbiIsCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9ndWMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1 Yy5oCmluZGV4IDczMDAyZTkuLjRlMjBiMGMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2d1Yy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5oCkBA IC01MiwyOSArNTIsMjkgQEAgc3RydWN0IGk5MTVfZ3VjX2NsaWVudCB7CiAJaW50IHJldGNvZGU7 CiB9OwogCi1lbnVtIGludGVsX2d1Y19md19zdGF0dXMgewotCUdVQ19GSVJNV0FSRV9GQUlMID0g LTEsCi0JR1VDX0ZJUk1XQVJFX05PTkUgPSAwLAotCUdVQ19GSVJNV0FSRV9QRU5ESU5HLAotCUdV Q19GSVJNV0FSRV9TVUNDRVNTCitlbnVtIGludGVsX3VjX2Z3X3N0YXR1cyB7CisJVUNfRklSTVdB UkVfRkFJTCA9IC0xLAorCVVDX0ZJUk1XQVJFX05PTkUgPSAwLAorCVVDX0ZJUk1XQVJFX1BFTkRJ TkcsCisJVUNfRklSTVdBUkVfU1VDQ0VTUwogfTsKIAogLyoKICAqIFRoaXMgc3RydWN0dXJlIGVu Y2Fwc3VsYXRlcyBhbGwgdGhlIGRhdGEgbmVlZGVkIGR1cmluZyB0aGUgcHJvY2VzcwogICogb2Yg ZmV0Y2hpbmcsIGNhY2hpbmcsIGFuZCBsb2FkaW5nIHRoZSBmaXJtd2FyZSBpbWFnZSBpbnRvIHRo ZSBHdUMuCiAgKi8KLXN0cnVjdCBpbnRlbF9ndWNfZncgewotCXN0cnVjdCBkcm1fZGV2aWNlICoJ CWd1Y19kZXY7Ci0JY29uc3QgY2hhciAqCQkJZ3VjX2Z3X3BhdGg7Ci0Jc2l6ZV90CQkJCWd1Y19m d19zaXplOwotCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICoJZ3VjX2Z3X29iajsKLQllbnVt IGludGVsX2d1Y19md19zdGF0dXMJZ3VjX2Z3X2ZldGNoX3N0YXR1czsKLQllbnVtIGludGVsX2d1 Y19md19zdGF0dXMJZ3VjX2Z3X2xvYWRfc3RhdHVzOwotCi0JdWludDE2X3QJCQlndWNfZndfbWFq b3Jfd2FudGVkOwotCXVpbnQxNl90CQkJZ3VjX2Z3X21pbm9yX3dhbnRlZDsKLQl1aW50MTZfdAkJ CWd1Y19md19tYWpvcl9mb3VuZDsKLQl1aW50MTZfdAkJCWd1Y19md19taW5vcl9mb3VuZDsKK3N0 cnVjdCBpbnRlbF91Y19mdyB7CisJc3RydWN0IGRybV9kZXZpY2UgKgkJdWNfZGV2OworCWNvbnN0 IGNoYXIgKgkJCXVjX2Z3X3BhdGg7CisJc2l6ZV90CQkJCXVjX2Z3X3NpemU7CisJc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKgl1Y19md19vYmo7CisJZW51bSBpbnRlbF91Y19md19zdGF0dXMg ZmV0Y2hfc3RhdHVzOworCWVudW0gaW50ZWxfdWNfZndfc3RhdHVzCWxvYWRfc3RhdHVzOworCisJ dWludDE2X3QgbWFqb3JfdmVyX3dhbnRlZDsKKwl1aW50MTZfdCBtaW5vcl92ZXJfd2FudGVkOwor CXVpbnQxNl90IG1ham9yX3Zlcl9mb3VuZDsKKwl1aW50MTZfdCBtaW5vcl92ZXJfZm91bmQ7CiAK IAl1aW50MzJfdCBoZWFkZXJfc2l6ZTsKIAl1aW50MzJfdCBoZWFkZXJfb2Zmc2V0OwpAQCAtODUs NyArODUsNyBAQCBzdHJ1Y3QgaW50ZWxfZ3VjX2Z3IHsKIH07CiAKIHN0cnVjdCBpbnRlbF9ndWMg ewotCXN0cnVjdCBpbnRlbF9ndWNfZncgZ3VjX2Z3OworCXN0cnVjdCBpbnRlbF91Y19mdyBndWNf Znc7CiAJdWludDMyX3QgbG9nX2ZsYWdzOwogCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICps b2dfb2JqOwogCkBAIC0xMTQsOSArMTE0LDEwIEBAIHN0cnVjdCBpbnRlbF9ndWMgewogZXh0ZXJu IHZvaWQgaW50ZWxfZ3VjX3Vjb2RlX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CiBleHRl cm4gaW50IGludGVsX2d1Y191Y29kZV9sb2FkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwogZXh0 ZXJuIHZvaWQgaW50ZWxfZ3VjX3Vjb2RlX2Zpbmkoc3RydWN0IGRybV9kZXZpY2UgKmRldik7Ci1l eHRlcm4gY29uc3QgY2hhciAqaW50ZWxfZ3VjX2Z3X3N0YXR1c19yZXByKGVudW0gaW50ZWxfZ3Vj X2Z3X3N0YXR1cyBzdGF0dXMpOworZXh0ZXJuIGNvbnN0IGNoYXIgKmludGVsX3VjX2Z3X3N0YXR1 c19yZXByKGVudW0gaW50ZWxfdWNfZndfc3RhdHVzIHN0YXR1cyk7CiBleHRlcm4gaW50IGludGVs X2d1Y19zdXNwZW5kKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwogZXh0ZXJuIGludCBpbnRlbF9n dWNfcmVzdW1lKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwordm9pZCBpbnRlbF91Y19md19mZXRj aChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgaW50ZWxfdWNfZncgKnVjX2Z3KTsKIAog LyogaTkxNV9ndWNfc3VibWlzc2lvbi5jICovCiBpbnQgaTkxNV9ndWNfc3VibWlzc2lvbl9pbml0 KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZ3VjX2xvYWRlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xv YWRlci5jCmluZGV4IDNhY2NkOTEuLjMxOGI1ZmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2d1Y19sb2FkZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9ndWNfbG9hZGVyLmMKQEAgLTYzLDE2ICs2MywxNiBAQAogTU9EVUxFX0ZJUk1XQVJFKEk5MTVf U0tMX0dVQ19VQ09ERSk7CiAKIC8qIFVzZXItZnJpZW5kbHkgcmVwcmVzZW50YXRpb24gb2YgYW4g ZW51bSAqLwotY29uc3QgY2hhciAqaW50ZWxfZ3VjX2Z3X3N0YXR1c19yZXByKGVudW0gaW50ZWxf Z3VjX2Z3X3N0YXR1cyBzdGF0dXMpCitjb25zdCBjaGFyICppbnRlbF91Y19md19zdGF0dXNfcmVw cihlbnVtIGludGVsX3VjX2Z3X3N0YXR1cyBzdGF0dXMpCiB7CiAJc3dpdGNoIChzdGF0dXMpIHsK LQljYXNlIEdVQ19GSVJNV0FSRV9GQUlMOgorCWNhc2UgVUNfRklSTVdBUkVfRkFJTDoKIAkJcmV0 dXJuICJGQUlMIjsKLQljYXNlIEdVQ19GSVJNV0FSRV9OT05FOgorCWNhc2UgVUNfRklSTVdBUkVf Tk9ORToKIAkJcmV0dXJuICJOT05FIjsKLQljYXNlIEdVQ19GSVJNV0FSRV9QRU5ESU5HOgorCWNh c2UgVUNfRklSTVdBUkVfUEVORElORzoKIAkJcmV0dXJuICJQRU5ESU5HIjsKLQljYXNlIEdVQ19G SVJNV0FSRV9TVUNDRVNTOgorCWNhc2UgVUNfRklSTVdBUkVfU1VDQ0VTUzoKIAkJcmV0dXJuICJT VUNDRVNTIjsKIAlkZWZhdWx0OgogCQlyZXR1cm4gIlVOS05PV04hIjsKQEAgLTIyNCw4ICsyMjQs OCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgZ3VjX3Vjb2RlX3Jlc3BvbnNlKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwKICAqLwogc3RhdGljIGludCBndWNfdWNvZGVfeGZlcl9kbWEo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogewotCXN0cnVjdCBpbnRlbF9ndWNf ZncgKmd1Y19mdyA9ICZkZXZfcHJpdi0+Z3VjLmd1Y19mdzsKLQlzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqZndfb2JqID0gZ3VjX2Z3LT5ndWNfZndfb2JqOworCXN0cnVjdCBpbnRlbF91Y19m dyAqZ3VjX2Z3ID0gJmRldl9wcml2LT5ndWMuZ3VjX2Z3OworCXN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0ICpmd19vYmogPSBndWNfZnctPnVjX2Z3X29iajsKIAl1bnNpZ25lZCBsb25nIG9mZnNl dDsKIAlzdHJ1Y3Qgc2dfdGFibGUgKnNnID0gZndfb2JqLT5wYWdlczsKIAl1MzIgc3RhdHVzLCBy c2FbVU9TX1JTQV9TQ1JBVENIX01BWF9DT1VOVF07CkBAIC0yODYsMTcgKzI4NiwxNyBAQCBzdGF0 aWMgaW50IGd1Y191Y29kZV94ZmVyX2RtYShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCiAgKi8KIHN0YXRpYyBpbnQgZ3VjX3Vjb2RlX3hmZXIoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KQogewotCXN0cnVjdCBpbnRlbF9ndWNfZncgKmd1Y19mdyA9ICZkZXZfcHJp di0+Z3VjLmd1Y19mdzsKKwlzdHJ1Y3QgaW50ZWxfdWNfZncgKmd1Y19mdyA9ICZkZXZfcHJpdi0+ Z3VjLmd1Y19mdzsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZGV2X3ByaXYtPmRldjsKIAlp bnQgcmV0OwogCi0JcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3NldF90b19ndHRfZG9tYWluKGd1Y19m dy0+Z3VjX2Z3X29iaiwgZmFsc2UpOworCXJldCA9IGk5MTVfZ2VtX29iamVjdF9zZXRfdG9fZ3R0 X2RvbWFpbihndWNfZnctPnVjX2Z3X29iaiwgZmFsc2UpOwogCWlmIChyZXQpIHsKIAkJRFJNX0RF QlVHX0RSSVZFUigic2V0LWRvbWFpbiBmYWlsZWQgJWRcbiIsIHJldCk7CiAJCXJldHVybiByZXQ7 CiAJfQogCi0JcmV0ID0gaTkxNV9nZW1fb2JqX2dndHRfcGluKGd1Y19mdy0+Z3VjX2Z3X29iaiwg MCwgMCk7CisJcmV0ID0gaTkxNV9nZW1fb2JqX2dndHRfcGluKGd1Y19mdy0+dWNfZndfb2JqLCAw LCAwKTsKIAlpZiAocmV0KSB7CiAJCURSTV9ERUJVR19EUklWRVIoInBpbiBmYWlsZWQgJWRcbiIs IHJldCk7CiAJCXJldHVybiByZXQ7CkBAIC0zNDgsNyArMzQ4LDcgQEAgc3RhdGljIGludCBndWNf dWNvZGVfeGZlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJICogV2Uga2Vl cCB0aGUgb2JqZWN0IHBhZ2VzIGZvciByZXVzZSBkdXJpbmcgcmVzdW1lLiBCdXQgd2UgY2FuIHVu cGluIGl0CiAJICogbm93IHRoYXQgRE1BIGhhcyBjb21wbGV0ZWQsIHNvIGl0IGRvZXNuJ3QgY29u dGludWUgdG8gdGFrZSB1cCBzcGFjZS4KIAkgKi8KLQlpOTE1X2dlbV9vYmplY3RfZ2d0dF91bnBp bihndWNfZnctPmd1Y19md19vYmopOworCWk5MTVfZ2VtX29iamVjdF9nZ3R0X3VucGluKGd1Y19m dy0+dWNfZndfb2JqKTsKIAogCXJldHVybiByZXQ7CiB9CkBAIC0zNjgsNDggKzM2OCw0OCBAQCBz dGF0aWMgaW50IGd1Y191Y29kZV94ZmVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKIGludCBpbnRlbF9ndWNfdWNvZGVfbG9hZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogewog CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Ci0J c3RydWN0IGludGVsX2d1Y19mdyAqZ3VjX2Z3ID0gJmRldl9wcml2LT5ndWMuZ3VjX2Z3OworCXN0 cnVjdCBpbnRlbF91Y19mdyAqZ3VjX2Z3ID0gJmRldl9wcml2LT5ndWMuZ3VjX2Z3OwogCWludCBl cnIgPSAwOwogCiAJaWYgKCFpOTE1LmVuYWJsZV9ndWNfc3VibWlzc2lvbikKIAkJcmV0dXJuIDA7 CiAKIAlEUk1fREVCVUdfRFJJVkVSKCJHdUMgZncgc3RhdHVzOiBmZXRjaCAlcywgbG9hZCAlc1xu IiwKLQkJaW50ZWxfZ3VjX2Z3X3N0YXR1c19yZXByKGd1Y19mdy0+Z3VjX2Z3X2ZldGNoX3N0YXR1 cyksCi0JCWludGVsX2d1Y19md19zdGF0dXNfcmVwcihndWNfZnctPmd1Y19md19sb2FkX3N0YXR1 cykpOworCQlpbnRlbF91Y19md19zdGF0dXNfcmVwcihndWNfZnctPmZldGNoX3N0YXR1cyksCisJ CWludGVsX3VjX2Z3X3N0YXR1c19yZXByKGd1Y19mdy0+bG9hZF9zdGF0dXMpKTsKIAogCWRpcmVj dF9pbnRlcnJ1cHRzX3RvX2hvc3QoZGV2X3ByaXYpOwogCi0JaWYgKGd1Y19mdy0+Z3VjX2Z3X2Zl dGNoX3N0YXR1cyA9PSBHVUNfRklSTVdBUkVfTk9ORSkKKwlpZiAoZ3VjX2Z3LT5mZXRjaF9zdGF0 dXMgPT0gVUNfRklSTVdBUkVfTk9ORSkKIAkJcmV0dXJuIDA7CiAKLQlpZiAoZ3VjX2Z3LT5ndWNf ZndfZmV0Y2hfc3RhdHVzID09IEdVQ19GSVJNV0FSRV9TVUNDRVNTICYmCi0JICAgIGd1Y19mdy0+ Z3VjX2Z3X2xvYWRfc3RhdHVzID09IEdVQ19GSVJNV0FSRV9GQUlMKQorCWlmIChndWNfZnctPmZl dGNoX3N0YXR1cyA9PSBVQ19GSVJNV0FSRV9TVUNDRVNTICYmCisJICAgIGd1Y19mdy0+bG9hZF9z dGF0dXMgPT0gVUNfRklSTVdBUkVfRkFJTCkKIAkJcmV0dXJuIC1FTk9FWEVDOwogCi0JZ3VjX2Z3 LT5ndWNfZndfbG9hZF9zdGF0dXMgPSBHVUNfRklSTVdBUkVfUEVORElORzsKKwlndWNfZnctPmxv YWRfc3RhdHVzID0gVUNfRklSTVdBUkVfUEVORElORzsKIAogCURSTV9ERUJVR19EUklWRVIoIkd1 QyBmdyBmZXRjaCBzdGF0dXMgJXNcbiIsCi0JCWludGVsX2d1Y19md19zdGF0dXNfcmVwcihndWNf ZnctPmd1Y19md19mZXRjaF9zdGF0dXMpKTsKKwkJaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIoZ3Vj X2Z3LT5mZXRjaF9zdGF0dXMpKTsKIAotCXN3aXRjaCAoZ3VjX2Z3LT5ndWNfZndfZmV0Y2hfc3Rh dHVzKSB7Ci0JY2FzZSBHVUNfRklSTVdBUkVfRkFJTDoKKwlzd2l0Y2ggKGd1Y19mdy0+ZmV0Y2hf c3RhdHVzKSB7CisJY2FzZSBVQ19GSVJNV0FSRV9GQUlMOgogCQkvKiBzb21ldGhpbmcgd2VudCB3 cm9uZyA6KCAqLwogCQllcnIgPSAtRUlPOwogCQlnb3RvIGZhaWw7CiAKLQljYXNlIEdVQ19GSVJN V0FSRV9OT05FOgotCWNhc2UgR1VDX0ZJUk1XQVJFX1BFTkRJTkc6CisJY2FzZSBVQ19GSVJNV0FS RV9OT05FOgorCWNhc2UgVUNfRklSTVdBUkVfUEVORElORzoKIAlkZWZhdWx0OgogCQkvKiAiY2Fu J3QgaGFwcGVuIiAqLwotCQlXQVJOX09OQ0UoMSwgIkd1QyBmdyAlcyBpbnZhbGlkIGd1Y19md19m ZXRjaF9zdGF0dXMgJXMgWyVkXVxuIiwKLQkJCWd1Y19mdy0+Z3VjX2Z3X3BhdGgsCi0JCQlpbnRl bF9ndWNfZndfc3RhdHVzX3JlcHIoZ3VjX2Z3LT5ndWNfZndfZmV0Y2hfc3RhdHVzKSwKLQkJCWd1 Y19mdy0+Z3VjX2Z3X2ZldGNoX3N0YXR1cyk7CisJCVdBUk5fT05DRSgxLCAiR3VDIGZ3ICVzIGlu dmFsaWQgZmV0Y2hfc3RhdHVzICVzIFslZF1cbiIsCisJCQlndWNfZnctPnVjX2Z3X3BhdGgsCisJ CQlpbnRlbF91Y19md19zdGF0dXNfcmVwcihndWNfZnctPmZldGNoX3N0YXR1cyksCisJCQlndWNf ZnctPmZldGNoX3N0YXR1cyk7CiAJCWVyciA9IC1FTlhJTzsKIAkJZ290byBmYWlsOwogCi0JY2Fz ZSBHVUNfRklSTVdBUkVfU1VDQ0VTUzoKKwljYXNlIFVDX0ZJUk1XQVJFX1NVQ0NFU1M6CiAJCWJy ZWFrOwogCX0KIApAQCAtNDIxLDExICs0MjEsMTEgQEAgaW50IGludGVsX2d1Y191Y29kZV9sb2Fk KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJaWYgKGVycikKIAkJZ290byBmYWlsOwogCi0JZ3Vj X2Z3LT5ndWNfZndfbG9hZF9zdGF0dXMgPSBHVUNfRklSTVdBUkVfU1VDQ0VTUzsKKwlndWNfZnct PmxvYWRfc3RhdHVzID0gVUNfRklSTVdBUkVfU1VDQ0VTUzsKIAogCURSTV9ERUJVR19EUklWRVIo Ikd1QyBmdyBzdGF0dXM6IGZldGNoICVzLCBsb2FkICVzXG4iLAotCQlpbnRlbF9ndWNfZndfc3Rh dHVzX3JlcHIoZ3VjX2Z3LT5ndWNfZndfZmV0Y2hfc3RhdHVzKSwKLQkJaW50ZWxfZ3VjX2Z3X3N0 YXR1c19yZXByKGd1Y19mdy0+Z3VjX2Z3X2xvYWRfc3RhdHVzKSk7CisJCWludGVsX3VjX2Z3X3N0 YXR1c19yZXByKGd1Y19mdy0+ZmV0Y2hfc3RhdHVzKSwKKwkJaW50ZWxfdWNfZndfc3RhdHVzX3Jl cHIoZ3VjX2Z3LT5sb2FkX3N0YXR1cykpOwogCiAJaWYgKGk5MTUuZW5hYmxlX2d1Y19zdWJtaXNz aW9uKSB7CiAJCS8qIFRoZSBleGVjYnVmX2NsaWVudCB3aWxsIGJlIHJlY3JlYXRlZC4gUmVsZWFz ZSBpdCBmaXJzdC4gKi8KQEAgLTQ0MCw4ICs0NDAsOCBAQCBpbnQgaW50ZWxfZ3VjX3Vjb2RlX2xv YWQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAlyZXR1cm4gMDsKIAogZmFpbDoKLQlpZiAoZ3Vj X2Z3LT5ndWNfZndfbG9hZF9zdGF0dXMgPT0gR1VDX0ZJUk1XQVJFX1BFTkRJTkcpCi0JCWd1Y19m dy0+Z3VjX2Z3X2xvYWRfc3RhdHVzID0gR1VDX0ZJUk1XQVJFX0ZBSUw7CisJaWYgKGd1Y19mdy0+ bG9hZF9zdGF0dXMgPT0gVUNfRklSTVdBUkVfUEVORElORykKKwkJZ3VjX2Z3LT5sb2FkX3N0YXR1 cyA9IFVDX0ZJUk1XQVJFX0ZBSUw7CiAKIAlkaXJlY3RfaW50ZXJydXB0c190b19ob3N0KGRldl9w cml2KTsKIAlpOTE1X2d1Y19zdWJtaXNzaW9uX2Rpc2FibGUoZGV2KTsKQEAgLTQ1MCw3ICs0NTAs MTggQEAgZmFpbDoKIAlyZXR1cm4gZXJyOwogfQogCi1zdGF0aWMgdm9pZCBndWNfZndfZmV0Y2go c3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGludGVsX2d1Y19mdyAqZ3VjX2Z3KQorLyoq CisgKiBpbnRlbF91Y19md19mZXRjaCgpIC0gZmV0Y2ggZncgYmxvYiBhbmQgc2F2ZSBpdCB0byBp bnRlcm5hbCBvYmoKKyAqIEBkZXY6CWRybSBkZXZpY2UKKyAqIEB1Y19mdzoJdGhlIGludGVsX3Vj X2Z3IHRvIGJlIHNldHVwCisgKgorICogVGhlIGNhbGxlciBzaG91bGQgaGF2ZSBzZXR1cCBmdyBw YXRoIGFuZCBmdyB2ZXJzaW9uIHJlcXVpcmVkLiBUaGlzIGZ1bmN0aW9uCisgKiBmaXJzdCBmZXRj aCB0aGUgZncgYmxvYiBmcm9tIGZpbGUgc3lzdGVtLiBJZiBzdWNjZWVkLCBpdCB3aWxsIGRvIHNv bWUgYmFzaWMKKyAqIGNoZWNrIGJhc2VkIG9uIGNzcyBoZWFkZXIgaW5mb3JtYXRpb24uIEF0IGxh c3QsIGEgR0VNIG9iaiBpcyBjcmVhdGVkIGFuZAorICogZmlsbGVkIHdpdGggdGhlIGZ3IGRhdGEu IFRoaXMgb2JqIHdpbGwgYmUgbG9hZGVkIHRvIEhXIGF0IGxhdGVyIHN0YWdlIG9mCisgKiBkcml2 ZXIgaW5pdCBwcm9jZXNzLgorICovCit2b2lkIGludGVsX3VjX2Z3X2ZldGNoKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsIHN0cnVjdCBpbnRlbF91Y19mdyAqdWNfZncpCiB7CiAJc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3QgKm9iajsKIAljb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3OwpAQCAtNDU4 LDE3ICs0NjksMTcgQEAgc3RhdGljIHZvaWQgZ3VjX2Z3X2ZldGNoKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsIHN0cnVjdCBpbnRlbF9ndWNfZncgKmd1Y19mdykKIAlzaXplX3Qgc2l6ZTsKIAlpbnQg ZXJyOwogCi0JRFJNX0RFQlVHX0RSSVZFUigiYmVmb3JlIHJlcXVlc3RpbmcgZmlybXdhcmU6IEd1 QyBmdyBmZXRjaCBzdGF0dXMgJXNcbiIsCi0JCWludGVsX2d1Y19md19zdGF0dXNfcmVwcihndWNf ZnctPmd1Y19md19mZXRjaF9zdGF0dXMpKTsKKwlEUk1fREVCVUdfRFJJVkVSKCJiZWZvcmUgcmVx dWVzdGluZyBmaXJtd2FyZTogdUMgZncgZmV0Y2ggc3RhdHVzICVzXG4iLAorCQlpbnRlbF91Y19m d19zdGF0dXNfcmVwcih1Y19mdy0+ZmV0Y2hfc3RhdHVzKSk7CiAKLQllcnIgPSByZXF1ZXN0X2Zp cm13YXJlKCZmdywgZ3VjX2Z3LT5ndWNfZndfcGF0aCwgJmRldi0+cGRldi0+ZGV2KTsKKwllcnIg PSByZXF1ZXN0X2Zpcm13YXJlKCZmdywgdWNfZnctPnVjX2Z3X3BhdGgsICZkZXYtPnBkZXYtPmRl dik7CiAJaWYgKGVycikKIAkJZ290byBmYWlsOwogCWlmICghZncpCiAJCWdvdG8gZmFpbDsKIAot CURSTV9ERUJVR19EUklWRVIoImZldGNoIEd1QyBmdyBmcm9tICVzIHN1Y2NlZWRlZCwgZncgJXBc biIsCi0JCWd1Y19mdy0+Z3VjX2Z3X3BhdGgsIGZ3KTsKKwlEUk1fREVCVUdfRFJJVkVSKCJmZXRj aCB1QyBmdyBmcm9tICVzIHN1Y2NlZWRlZCwgZncgJXBcbiIsCisJCXVjX2Z3LT51Y19md19wYXRo LCBmdyk7CiAKIAkvKiBDaGVjayB0aGUgc2l6ZSBvZiB0aGUgYmxvYiBiZWZvcmUgZXhhbWluaW5n IGJ1ZmZlciBjb250ZW50cyAqLwogCWlmIChmdy0+c2l6ZSA8IHNpemVvZihzdHJ1Y3QgZ3VjX2Nz c19oZWFkZXIpKSB7CkBAIC00NzksMzYgKzQ5MCwzNiBAQCBzdGF0aWMgdm9pZCBndWNfZndfZmV0 Y2goc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGludGVsX2d1Y19mdyAqZ3VjX2Z3KQog CWNzcyA9IChzdHJ1Y3QgZ3VjX2Nzc19oZWFkZXIgKilmdy0+ZGF0YTsKIAogCS8qIEZpcm13YXJl IGJpdHMgYWx3YXlzIHN0YXJ0IGZyb20gaGVhZGVyICovCi0JZ3VjX2Z3LT5oZWFkZXJfb2Zmc2V0 ID0gMDsKLQlndWNfZnctPmhlYWRlcl9zaXplID0gKGNzcy0+aGVhZGVyX3NpemVfZHcgLSBjc3Mt Pm1vZHVsdXNfc2l6ZV9kdyAtCisJdWNfZnctPmhlYWRlcl9vZmZzZXQgPSAwOworCXVjX2Z3LT5o ZWFkZXJfc2l6ZSA9IChjc3MtPmhlYWRlcl9zaXplX2R3IC0gY3NzLT5tb2R1bHVzX3NpemVfZHcg LQogCQljc3MtPmtleV9zaXplX2R3IC0gY3NzLT5leHBvbmVudF9zaXplX2R3KSAqIHNpemVvZih1 MzIpOwogCi0JaWYgKGd1Y19mdy0+aGVhZGVyX3NpemUgIT0gc2l6ZW9mKHN0cnVjdCBndWNfY3Nz X2hlYWRlcikpIHsKKwlpZiAodWNfZnctPmhlYWRlcl9zaXplICE9IHNpemVvZihzdHJ1Y3QgZ3Vj X2Nzc19oZWFkZXIpKSB7CiAJCURSTV9FUlJPUigiQ1NTIGhlYWRlciBkZWZpbml0aW9uIG1pc21h dGNoXG4iKTsKIAkJZ290byBmYWlsOwogCX0KIAogCS8qIHRoZW4sIHVDb2RlICovCi0JZ3VjX2Z3 LT51Y29kZV9vZmZzZXQgPSBndWNfZnctPmhlYWRlcl9vZmZzZXQgKyBndWNfZnctPmhlYWRlcl9z aXplOwotCWd1Y19mdy0+dWNvZGVfc2l6ZSA9IChjc3MtPnNpemVfZHcgLSBjc3MtPmhlYWRlcl9z aXplX2R3KSAqIHNpemVvZih1MzIpOworCXVjX2Z3LT51Y29kZV9vZmZzZXQgPSB1Y19mdy0+aGVh ZGVyX29mZnNldCArIHVjX2Z3LT5oZWFkZXJfc2l6ZTsKKwl1Y19mdy0+dWNvZGVfc2l6ZSA9IChj c3MtPnNpemVfZHcgLSBjc3MtPmhlYWRlcl9zaXplX2R3KSAqIHNpemVvZih1MzIpOwogCiAJLyog bm93IFJTQSAqLwogCWlmIChjc3MtPmtleV9zaXplX2R3ICE9IFVPU19SU0FfU0NSQVRDSF9NQVhf Q09VTlQpIHsKIAkJRFJNX0VSUk9SKCJSU0Ega2V5IHNpemUgaXMgYmFkXG4iKTsKIAkJZ290byBm YWlsOwogCX0KLQlndWNfZnctPnJzYV9vZmZzZXQgPSBndWNfZnctPnVjb2RlX29mZnNldCArIGd1 Y19mdy0+dWNvZGVfc2l6ZTsKLQlndWNfZnctPnJzYV9zaXplID0gY3NzLT5rZXlfc2l6ZV9kdyAq IHNpemVvZih1MzIpOworCXVjX2Z3LT5yc2Ffb2Zmc2V0ID0gdWNfZnctPnVjb2RlX29mZnNldCAr IHVjX2Z3LT51Y29kZV9zaXplOworCXVjX2Z3LT5yc2Ffc2l6ZSA9IGNzcy0+a2V5X3NpemVfZHcg KiBzaXplb2YodTMyKTsKIAogCS8qIEF0IGxlYXN0LCBpdCBzaG91bGQgaGF2ZSBoZWFkZXIsIHVD b2RlIGFuZCBSU0EuIFNpemUgb2YgYWxsIHRocmVlLiAqLwotCXNpemUgPSBndWNfZnctPmhlYWRl cl9zaXplICsgZ3VjX2Z3LT51Y29kZV9zaXplICsgZ3VjX2Z3LT5yc2Ffc2l6ZTsKKwlzaXplID0g dWNfZnctPmhlYWRlcl9zaXplICsgdWNfZnctPnVjb2RlX3NpemUgKyB1Y19mdy0+cnNhX3NpemU7 CiAJaWYgKGZ3LT5zaXplIDwgc2l6ZSkgewogCQlEUk1fRVJST1IoIk1pc3NpbmcgZmlybXdhcmUg Y29tcG9uZW50c1xuIik7CiAJCWdvdG8gZmFpbDsKIAl9CiAKIAkvKiBIZWFkZXIgYW5kIHVDb2Rl IHdpbGwgYmUgbG9hZGVkIHRvIFdPUENNLiBTaXplIG9mIHRoZSB0d28uICovCi0Jc2l6ZSA9IGd1 Y19mdy0+aGVhZGVyX3NpemUgKyBndWNfZnctPnVjb2RlX3NpemU7CisJc2l6ZSA9IHVjX2Z3LT5o ZWFkZXJfc2l6ZSArIHVjX2Z3LT51Y29kZV9zaXplOwogCiAJLyogVG9wIDMyayBvZiBXT1BDTSBp cyByZXNlcnZlZCAoOEsgc3RhY2sgKyAyNGsgUkM2IGNvbnRleHQpLiAqLwogCWlmIChzaXplID4g R1VDX1dPUENNX1NJWkVfVkFMVUUgLSAweDgwMDApIHsKQEAgLTUxNywyNiArNTI4LDI2IEBAIHN0 YXRpYyB2b2lkIGd1Y19md19mZXRjaChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgaW50 ZWxfZ3VjX2Z3ICpndWNfZncpCiAJfQogCiAJLyoKLQkgKiBUaGUgR3VDIGZpcm13YXJlIGltYWdl IGhhcyB0aGUgdmVyc2lvbiBudW1iZXIgZW1iZWRkZWQgYXQgYSB3ZWxsLWtub3duCisJICogVGhl IHVDIGZpcm13YXJlIGltYWdlIGhhcyB0aGUgdmVyc2lvbiBudW1iZXIgZW1iZWRkZWQgYXQgYSB3 ZWxsLWtub3duCiAJICogb2Zmc2V0IHdpdGhpbiB0aGUgZmlybXdhcmUgYmxvYjsgbm90ZSB0aGF0 IG1ham9yIC8gbWlub3IgdmVyc2lvbiBhcmUKIAkgKiBUV08gYnl0ZXMgZWFjaCAoaS5lLiB1MTYp LCBhbHRob3VnaCBhbGwgcG9pbnRlcnMgYW5kIG9mZnNldHMgYXJlIGRlZmluZWQKIAkgKiBpbiB0 ZXJtcyBvZiBieXRlcyAodTgpLgogCSAqLwotCWd1Y19mdy0+Z3VjX2Z3X21ham9yX2ZvdW5kID0g Y3NzLT5ndWNfc3dfdmVyc2lvbiA+PiAxNjsKLQlndWNfZnctPmd1Y19md19taW5vcl9mb3VuZCA9 IGNzcy0+Z3VjX3N3X3ZlcnNpb24gJiAweEZGRkY7Ci0KLQlpZiAoZ3VjX2Z3LT5ndWNfZndfbWFq b3JfZm91bmQgIT0gZ3VjX2Z3LT5ndWNfZndfbWFqb3Jfd2FudGVkIHx8Ci0JICAgIGd1Y19mdy0+ Z3VjX2Z3X21pbm9yX2ZvdW5kIDwgZ3VjX2Z3LT5ndWNfZndfbWlub3Jfd2FudGVkKSB7Ci0JCURS TV9FUlJPUigiR3VDIGZpcm13YXJlIHZlcnNpb24gJWQuJWQsIHJlcXVpcmVkICVkLiVkXG4iLAot CQkJZ3VjX2Z3LT5ndWNfZndfbWFqb3JfZm91bmQsIGd1Y19mdy0+Z3VjX2Z3X21pbm9yX2ZvdW5k LAotCQkJZ3VjX2Z3LT5ndWNfZndfbWFqb3Jfd2FudGVkLCBndWNfZnctPmd1Y19md19taW5vcl93 YW50ZWQpOworCXVjX2Z3LT5tYWpvcl92ZXJfZm91bmQgPSBjc3MtPmd1Y19zd192ZXJzaW9uID4+ IDE2OworCXVjX2Z3LT5taW5vcl92ZXJfZm91bmQgPSBjc3MtPmd1Y19zd192ZXJzaW9uICYgMHhG RkZGOworCisJaWYgKHVjX2Z3LT5tYWpvcl92ZXJfZm91bmQgIT0gdWNfZnctPm1ham9yX3Zlcl93 YW50ZWQgfHwKKwkgICAgdWNfZnctPm1pbm9yX3Zlcl9mb3VuZCA8IHVjX2Z3LT5taW5vcl92ZXJf d2FudGVkKSB7CisJCURSTV9FUlJPUigiRmlybXdhcmUgdmVyc2lvbiAlZC4lZCwgcmVxdWlyZWQg JWQuJWRcbiIsCisJCQl1Y19mdy0+bWFqb3JfdmVyX2ZvdW5kLCB1Y19mdy0+bWlub3JfdmVyX2Zv dW5kLAorCQkJdWNfZnctPm1ham9yX3Zlcl93YW50ZWQsIHVjX2Z3LT5taW5vcl92ZXJfd2FudGVk KTsKIAkJZXJyID0gLUVOT0VYRUM7CiAJCWdvdG8gZmFpbDsKIAl9CiAKIAlEUk1fREVCVUdfRFJJ VkVSKCJmaXJtd2FyZSB2ZXJzaW9uICVkLiVkIE9LIChtaW5pbXVtICVkLiVkKVxuIiwKLQkJCWd1 Y19mdy0+Z3VjX2Z3X21ham9yX2ZvdW5kLCBndWNfZnctPmd1Y19md19taW5vcl9mb3VuZCwKLQkJ CWd1Y19mdy0+Z3VjX2Z3X21ham9yX3dhbnRlZCwgZ3VjX2Z3LT5ndWNfZndfbWlub3Jfd2FudGVk KTsKKwkJCXVjX2Z3LT5tYWpvcl92ZXJfZm91bmQsIHVjX2Z3LT5taW5vcl92ZXJfZm91bmQsCisJ CQl1Y19mdy0+bWFqb3JfdmVyX3dhbnRlZCwgdWNfZnctPm1pbm9yX3Zlcl93YW50ZWQpOwogCiAJ bXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwogCW9iaiA9IGk5MTVfZ2VtX29iamVjdF9j cmVhdGVfZnJvbV9kYXRhKGRldiwgZnctPmRhdGEsIGZ3LT5zaXplKTsKQEAgLTU0NiwzMSArNTU3 LDMxIEBAIHN0YXRpYyB2b2lkIGd1Y19md19mZXRjaChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBz dHJ1Y3QgaW50ZWxfZ3VjX2Z3ICpndWNfZncpCiAJCWdvdG8gZmFpbDsKIAl9CiAKLQlndWNfZnct Pmd1Y19md19vYmogPSBvYmo7Ci0JZ3VjX2Z3LT5ndWNfZndfc2l6ZSA9IGZ3LT5zaXplOworCXVj X2Z3LT51Y19md19vYmogPSBvYmo7CisJdWNfZnctPnVjX2Z3X3NpemUgPSBmdy0+c2l6ZTsKIAog CURSTV9ERUJVR19EUklWRVIoIkd1QyBmdyBmZXRjaCBzdGF0dXMgU1VDQ0VTUywgb2JqICVwXG4i LAotCQkJZ3VjX2Z3LT5ndWNfZndfb2JqKTsKKwkJCXVjX2Z3LT51Y19md19vYmopOwogCiAJcmVs ZWFzZV9maXJtd2FyZShmdyk7Ci0JZ3VjX2Z3LT5ndWNfZndfZmV0Y2hfc3RhdHVzID0gR1VDX0ZJ Uk1XQVJFX1NVQ0NFU1M7CisJdWNfZnctPmZldGNoX3N0YXR1cyA9IFVDX0ZJUk1XQVJFX1NVQ0NF U1M7CiAJcmV0dXJuOwogCiBmYWlsOgogCURSTV9ERUJVR19EUklWRVIoIkd1QyBmdyBmZXRjaCBz dGF0dXMgRkFJTDsgZXJyICVkLCBmdyAlcCwgb2JqICVwXG4iLAotCQllcnIsIGZ3LCBndWNfZnct Pmd1Y19md19vYmopOworCQllcnIsIGZ3LCB1Y19mdy0+dWNfZndfb2JqKTsKIAlEUk1fRVJST1Io IkZhaWxlZCB0byBmZXRjaCBHdUMgZmlybXdhcmUgZnJvbSAlcyAoZXJyb3IgJWQpXG4iLAotCQkg IGd1Y19mdy0+Z3VjX2Z3X3BhdGgsIGVycik7CisJCSAgdWNfZnctPnVjX2Z3X3BhdGgsIGVycik7 CiAKIAltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Ci0Jb2JqID0gZ3VjX2Z3LT5ndWNf Zndfb2JqOworCW9iaiA9IHVjX2Z3LT51Y19md19vYmo7CiAJaWYgKG9iaikKIAkJZHJtX2dlbV9v YmplY3RfdW5yZWZlcmVuY2UoJm9iai0+YmFzZSk7Ci0JZ3VjX2Z3LT5ndWNfZndfb2JqID0gTlVM TDsKKwl1Y19mdy0+dWNfZndfb2JqID0gTlVMTDsKIAltdXRleF91bmxvY2soJmRldi0+c3RydWN0 X211dGV4KTsKIAogCXJlbGVhc2VfZmlybXdhcmUoZncpOwkJLyogT0sgZXZlbiBpZiBmdyBpcyBO VUxMICovCi0JZ3VjX2Z3LT5ndWNfZndfZmV0Y2hfc3RhdHVzID0gR1VDX0ZJUk1XQVJFX0ZBSUw7 CisJdWNfZnctPmZldGNoX3N0YXR1cyA9IFVDX0ZJUk1XQVJFX0ZBSUw7CiB9CiAKIC8qKgpAQCAt NTg1LDcgKzU5Niw3IEBAIGZhaWw6CiB2b2lkIGludGVsX2d1Y191Y29kZV9pbml0KHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g ZGV2LT5kZXZfcHJpdmF0ZTsKLQlzdHJ1Y3QgaW50ZWxfZ3VjX2Z3ICpndWNfZncgPSAmZGV2X3By aXYtPmd1Yy5ndWNfZnc7CisJc3RydWN0IGludGVsX3VjX2Z3ICpndWNfZncgPSAmZGV2X3ByaXYt Pmd1Yy5ndWNfZnc7CiAJY29uc3QgY2hhciAqZndfcGF0aDsKIAogCWlmICghSEFTX0dVQ19TQ0hF RChkZXYpKQpAQCAtNTk1LDggKzYwNiw4IEBAIHZvaWQgaW50ZWxfZ3VjX3Vjb2RlX2luaXQoc3Ry dWN0IGRybV9kZXZpY2UgKmRldikKIAkJZndfcGF0aCA9IE5VTEw7CiAJfSBlbHNlIGlmIChJU19T S1lMQUtFKGRldikpIHsKIAkJZndfcGF0aCA9IEk5MTVfU0tMX0dVQ19VQ09ERTsKLQkJZ3VjX2Z3 LT5ndWNfZndfbWFqb3Jfd2FudGVkID0gNDsKLQkJZ3VjX2Z3LT5ndWNfZndfbWlub3Jfd2FudGVk ID0gMzsKKwkJZ3VjX2Z3LT5tYWpvcl92ZXJfd2FudGVkID0gNDsKKwkJZ3VjX2Z3LT5taW5vcl92 ZXJfd2FudGVkID0gMzsKIAl9IGVsc2UgewogCQlpOTE1LmVuYWJsZV9ndWNfc3VibWlzc2lvbiA9 IGZhbHNlOwogCQlmd19wYXRoID0gIiI7CS8qIHVua25vd24gZGV2aWNlICovCkBAIC02MDUsMjMg KzYxNiwyMyBAQCB2b2lkIGludGVsX2d1Y191Y29kZV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYpCiAJaWYgKCFpOTE1LmVuYWJsZV9ndWNfc3VibWlzc2lvbikKIAkJcmV0dXJuOwogCi0JZ3Vj X2Z3LT5ndWNfZGV2ID0gZGV2OwotCWd1Y19mdy0+Z3VjX2Z3X3BhdGggPSBmd19wYXRoOwotCWd1 Y19mdy0+Z3VjX2Z3X2ZldGNoX3N0YXR1cyA9IEdVQ19GSVJNV0FSRV9OT05FOwotCWd1Y19mdy0+ Z3VjX2Z3X2xvYWRfc3RhdHVzID0gR1VDX0ZJUk1XQVJFX05PTkU7CisJZ3VjX2Z3LT51Y19kZXYg PSBkZXY7CisJZ3VjX2Z3LT51Y19md19wYXRoID0gZndfcGF0aDsKKwlndWNfZnctPmZldGNoX3N0 YXR1cyA9IFVDX0ZJUk1XQVJFX05PTkU7CisJZ3VjX2Z3LT5sb2FkX3N0YXR1cyA9IFVDX0ZJUk1X QVJFX05PTkU7CiAKIAlpZiAoZndfcGF0aCA9PSBOVUxMKQogCQlyZXR1cm47CiAKIAlpZiAoKmZ3 X3BhdGggPT0gJ1wwJykgewogCQlEUk1fRVJST1IoIk5vIEd1QyBmaXJtd2FyZSBrbm93biBmb3Ig dGhpcyBwbGF0Zm9ybVxuIik7Ci0JCWd1Y19mdy0+Z3VjX2Z3X2ZldGNoX3N0YXR1cyA9IEdVQ19G SVJNV0FSRV9GQUlMOworCQlndWNfZnctPmZldGNoX3N0YXR1cyA9IFVDX0ZJUk1XQVJFX0ZBSUw7 CiAJCXJldHVybjsKIAl9CiAKLQlndWNfZnctPmd1Y19md19mZXRjaF9zdGF0dXMgPSBHVUNfRklS TVdBUkVfUEVORElORzsKKwlndWNfZnctPmZldGNoX3N0YXR1cyA9IFVDX0ZJUk1XQVJFX1BFTkRJ Tkc7CiAJRFJNX0RFQlVHX0RSSVZFUigiR3VDIGZpcm13YXJlIHBlbmRpbmcsIHBhdGggJXNcbiIs IGZ3X3BhdGgpOwotCWd1Y19md19mZXRjaChkZXYsIGd1Y19mdyk7CisJaW50ZWxfdWNfZndfZmV0 Y2goZGV2LCBndWNfZncpOwogCS8qIHN0YXR1cyBtdXN0IG5vdyBiZSBGQUlMIG9yIFNVQ0NFU1Mg Ki8KIH0KIApAQCAtNjMyLDE3ICs2NDMsMTcgQEAgdm9pZCBpbnRlbF9ndWNfdWNvZGVfaW5pdChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogdm9pZCBpbnRlbF9ndWNfdWNvZGVfZmluaShzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IGRldi0+ZGV2X3ByaXZhdGU7Ci0Jc3RydWN0IGludGVsX2d1Y19mdyAqZ3VjX2Z3ID0gJmRldl9w cml2LT5ndWMuZ3VjX2Z3OworCXN0cnVjdCBpbnRlbF91Y19mdyAqZ3VjX2Z3ID0gJmRldl9wcml2 LT5ndWMuZ3VjX2Z3OwogCiAJbXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwogCWRpcmVj dF9pbnRlcnJ1cHRzX3RvX2hvc3QoZGV2X3ByaXYpOwogCWk5MTVfZ3VjX3N1Ym1pc3Npb25fZGlz YWJsZShkZXYpOwogCWk5MTVfZ3VjX3N1Ym1pc3Npb25fZmluaShkZXYpOwogCi0JaWYgKGd1Y19m dy0+Z3VjX2Z3X29iaikKLQkJZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2UoJmd1Y19mdy0+Z3Vj X2Z3X29iai0+YmFzZSk7Ci0JZ3VjX2Z3LT5ndWNfZndfb2JqID0gTlVMTDsKKwlpZiAoZ3VjX2Z3 LT51Y19md19vYmopCisJCWRybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlKCZndWNfZnctPnVjX2Z3 X29iai0+YmFzZSk7CisJZ3VjX2Z3LT51Y19md19vYmogPSBOVUxMOwogCW11dGV4X3VubG9jaygm ZGV2LT5zdHJ1Y3RfbXV0ZXgpOwogCi0JZ3VjX2Z3LT5ndWNfZndfZmV0Y2hfc3RhdHVzID0gR1VD X0ZJUk1XQVJFX05PTkU7CisJZ3VjX2Z3LT5mZXRjaF9zdGF0dXMgPSBVQ19GSVJNV0FSRV9OT05F OwogfQotLSAKMi41LjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVs LWdmeAo=