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: Wed, 30 Nov 2016 15:31:27 -0800 Message-ID: <1480548694-23000-2-git-send-email-anusha.srivatsa@intel.com> References: <1480548694-23000-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 mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id C30EC6E5CF for ; Wed, 30 Nov 2016 23:31:36 +0000 (UTC) In-Reply-To: <1480548694-23000-1-git-send-email-anusha.srivatsa@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org Cc: Alex Dai , Peter Antoine List-Id: intel-gfx@lists.freedesktop.org RnJvbTogUGV0ZXIgQW50b2luZSA8cGV0ZXIuYW50b2luZUBpbnRlbC5jb20+CgpSZW5hbWUgc29t ZSBvZiB0aGUgR3VDIGZ3IGxvYWRpbmcgY29kZSB0byBtYWtlIHRoZW0gbW9yZSBnZW5lcmFsLiBX ZQp3aWxsIHV0aWxpc2UgdGhlbSBmb3IgSHVDIGxvYWRpbmcgYXMgd2VsbC4KICAgICBzL2ludGVs X2d1Y19mdy9pbnRlbF91Y19mdy9nCiAgICAgcy9HVUNfRklSTVdBUkUvVUNfRklSTVdBUkUvZwoK U3RydWN0IGludGVsX2d1Y19mdyBpcyByZW5hbWVkIHRvIGludGVsX3VjX2Z3LiBQcmVmaXggb2Yg dHRzIG1lbWJlcnMsCnN1Y2ggYXMgJ2d1Yycgb3IgJ2d1Y19mdycgZWl0aGVyIGlzIHJlbmFtZWQg dG8gJ3VjJyBvciByZW1vdmVkIGZvcgpzYW1lIHB1cnBvc2UuCgp2MjogcmViYXNlZCBvbiB0b3Ag b2YgbmlnaHRseS4KICAgIHJlYXBwbGllZCB0aGUgc2VhcmNoL3JlcGxhY2UgYXMgdXBzdHJlYW0g Y29kZSBhcyBjaGFuZ2VkLgp2MzogcmViYXNlZCBhZ2FpbiBvbiBkcm0tbmlnaHRseS4KdjQ6IHJl bW92ZWQgRyBmcm9tIG1lc3NhZ2VzIGluIHNoYXJlZCBmdyBmZXRjaCBmdW5jdGlvbi4KdjU6IHJl YmFzZWQuCnY3OiByZWJhc2VkLgp2ODogcmViYXNlZC4Kdjk6IHJlYmFzZWQuCnYxMDogcmViYXNl ZC4KdjExOiByZWJhc2VkLgp2MTI6IHJlYmFzZWQgb24gdG9wIG9mIGRybS10aXAKClNpZ25lZC1v ZmYtYnk6IEFudXNoYSBTcml2YXRzYSA8YW51c2hhLnNyaXZhdHNhQGludGVsLmNvbT4KU2lnbmVk LW9mZi1ieTogQWxleCBEYWkgPHl1LmRhaUBpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IFBldGVy IEFudG9pbmUgPHBldGVyLmFudG9pbmVAaW50ZWwuY29tPgpSZXZpZXdlZC1ieTogRGF2ZSBHb3Jk b24gPGRhdmlkLnMuZ29yZG9uQGludGVsLmNvbT4KUmV2aWV3ZWQtYnk6IEplZmYgTWNHZWUgPGpl ZmYubWNnZWVAaW50ZWwuY29tPgpSZXZpZXdlZC1ieTogQ2FybG9zIFNhbnRhIDxjYXJsb3Muc2Fu dGFAaW50ZWwuY29tPgpUZXN0ZWQtYnk6IENhcmxvcyBTYW50YSA8Y2FybG9zLnNhbnRhQGludGVs LmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyAgICAgICAgfCAg MTIgKy0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMgfCAgIDQg Ky0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19sb2FkZXIuYyAgICB8IDE1NSArKysr KysrKysrKysrKystLS0tLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdWMu aCAgICAgICAgICAgIHwgIDQwICsrKystLS0tCiA0IGZpbGVzIGNoYW5nZWQsIDEwNyBpbnNlcnRp b25zKCspLCAxMDQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwpp bmRleCAyNDM0MTMwLi5kNmVmZGE5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2RlYnVnZnMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwpA QCAtMjMzNyw3ICsyMzM3LDcgQEAgc3RhdGljIGludCBpOTE1X2xsYyhzdHJ1Y3Qgc2VxX2ZpbGUg Km0sIHZvaWQgKmRhdGEpCiBzdGF0aWMgaW50IGk5MTVfZ3VjX2xvYWRfc3RhdHVzX2luZm8oc3Ry dWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IG5vZGVfdG9faTkxNShtLT5wcml2YXRlKTsKLQlzdHJ1Y3QgaW50ZWxfZ3Vj X2Z3ICpndWNfZncgPSAmZGV2X3ByaXYtPmd1Yy5ndWNfZnc7CisJc3RydWN0IGludGVsX3VjX2Z3 ICpndWNfZncgPSAmZGV2X3ByaXYtPmd1Yy5ndWNfZnc7CiAJdTMyIHRtcCwgaTsKIAogCWlmICgh SEFTX0dVQ19VQ09ERShkZXZfcHJpdikpCkBAIC0yMzQ1LDE1ICsyMzQ1LDE1IEBAIHN0YXRpYyBp bnQgaTkxNV9ndWNfbG9hZF9zdGF0dXNfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRh dGEpCiAKIAlzZXFfcHJpbnRmKG0sICJHdUMgZmlybXdhcmUgc3RhdHVzOlxuIik7CiAJc2VxX3By aW50ZihtLCAiXHRwYXRoOiAlc1xuIiwKLQkJZ3VjX2Z3LT5ndWNfZndfcGF0aCk7CisJCWd1Y19m dy0+dWNfZndfcGF0aCk7CiAJc2VxX3ByaW50ZihtLCAiXHRmZXRjaDogJXNcbiIsCi0JCWludGVs X2d1Y19md19zdGF0dXNfcmVwcihndWNfZnctPmd1Y19md19mZXRjaF9zdGF0dXMpKTsKKwkJaW50 ZWxfdWNfZndfc3RhdHVzX3JlcHIoZ3VjX2Z3LT5mZXRjaF9zdGF0dXMpKTsKIAlzZXFfcHJpbnRm KG0sICJcdGxvYWQ6ICVzXG4iLAotCQlpbnRlbF9ndWNfZndfc3RhdHVzX3JlcHIoZ3VjX2Z3LT5n dWNfZndfbG9hZF9zdGF0dXMpKTsKKwkJaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIoZ3VjX2Z3LT5s b2FkX3N0YXR1cykpOwogCXNlcV9wcmludGYobSwgIlx0dmVyc2lvbiB3YW50ZWQ6ICVkLiVkXG4i LAotCQlndWNfZnctPmd1Y19md19tYWpvcl93YW50ZWQsIGd1Y19mdy0+Z3VjX2Z3X21pbm9yX3dh bnRlZCk7CisJCWd1Y19mdy0+bWFqb3JfdmVyX3dhbnRlZCwgZ3VjX2Z3LT5taW5vcl92ZXJfd2Fu dGVkKTsKIAlzZXFfcHJpbnRmKG0sICJcdHZlcnNpb24gZm91bmQ6ICVkLiVkXG4iLAotCQlndWNf ZnctPmd1Y19md19tYWpvcl9mb3VuZCwgZ3VjX2Z3LT5ndWNfZndfbWlub3JfZm91bmQpOworCQln dWNfZnctPm1ham9yX3Zlcl9mb3VuZCwgZ3VjX2Z3LT5taW5vcl92ZXJfZm91bmQpOwogCXNlcV9w cmludGYobSwgIlx0aGVhZGVyOiBvZmZzZXQgaXMgJWQ7IHNpemUgPSAlZFxuIiwKIAkJZ3VjX2Z3 LT5oZWFkZXJfb2Zmc2V0LCBndWNfZnctPmhlYWRlcl9zaXplKTsKIAlzZXFfcHJpbnRmKG0sICJc dHVDb2RlOiBvZmZzZXQgaXMgJWQ7IHNpemUgPSAlZFxuIiwKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYwppbmRleCA1ODQxMzgwLi40YmFlOGU0IDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jCkBAIC0xNDk0LDcgKzE0OTQsNyBA QCBpbnQgaW50ZWxfZ3VjX3N1c3BlbmQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAlzdHJ1Y3Qg aTkxNV9nZW1fY29udGV4dCAqY3R4OwogCXUzMiBkYXRhWzNdOwogCi0JaWYgKGd1Yy0+Z3VjX2Z3 Lmd1Y19md19sb2FkX3N0YXR1cyAhPSBHVUNfRklSTVdBUkVfU1VDQ0VTUykKKwlpZiAoZ3VjLT5n dWNfZncubG9hZF9zdGF0dXMgIT0gVUNfRklSTVdBUkVfU1VDQ0VTUykKIAkJcmV0dXJuIDA7CiAK IAlnZW45X2Rpc2FibGVfZ3VjX2ludGVycnVwdHMoZGV2X3ByaXYpOwpAQCAtMTUyMiw3ICsxNTIy LDcgQEAgaW50IGludGVsX2d1Y19yZXN1bWUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAlzdHJ1 Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4OwogCXUzMiBkYXRhWzNdOwogCi0JaWYgKGd1Yy0+Z3Vj X2Z3Lmd1Y19md19sb2FkX3N0YXR1cyAhPSBHVUNfRklSTVdBUkVfU1VDQ0VTUykKKwlpZiAoZ3Vj LT5ndWNfZncubG9hZF9zdGF0dXMgIT0gVUNfRklSTVdBUkVfU1VDQ0VTUykKIAkJcmV0dXJuIDA7 CiAKIAlpZiAoaTkxNS5ndWNfbG9nX2xldmVsID49IDApCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9ndWNfbG9hZGVyLmMKaW5kZXggYTMzMGZhNC4uZTU1ZWMyYyAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2d1Y19sb2FkZXIuYwpAQCAtODEsMTYgKzgxLDE2IEBAIE1PRFVMRV9GSVJNV0FS RShJOTE1X0JYVF9HVUNfVUNPREUpOwogTU9EVUxFX0ZJUk1XQVJFKEk5MTVfS0JMX0dVQ19VQ09E RSk7CiAKIC8qIFVzZXItZnJpZW5kbHkgcmVwcmVzZW50YXRpb24gb2YgYW4gZW51bSAqLwotY29u c3QgY2hhciAqaW50ZWxfZ3VjX2Z3X3N0YXR1c19yZXByKGVudW0gaW50ZWxfZ3VjX2Z3X3N0YXR1 cyBzdGF0dXMpCitjb25zdCBjaGFyICppbnRlbF91Y19md19zdGF0dXNfcmVwcihlbnVtIGludGVs X3VjX2Z3X3N0YXR1cyBzdGF0dXMpCiB7CiAJc3dpdGNoIChzdGF0dXMpIHsKLQljYXNlIEdVQ19G SVJNV0FSRV9GQUlMOgorCWNhc2UgVUNfRklSTVdBUkVfRkFJTDoKIAkJcmV0dXJuICJGQUlMIjsK LQljYXNlIEdVQ19GSVJNV0FSRV9OT05FOgorCWNhc2UgVUNfRklSTVdBUkVfTk9ORToKIAkJcmV0 dXJuICJOT05FIjsKLQljYXNlIEdVQ19GSVJNV0FSRV9QRU5ESU5HOgorCWNhc2UgVUNfRklSTVdB UkVfUEVORElORzoKIAkJcmV0dXJuICJQRU5ESU5HIjsKLQljYXNlIEdVQ19GSVJNV0FSRV9TVUND RVNTOgorCWNhc2UgVUNfRklSTVdBUkVfU1VDQ0VTUzoKIAkJcmV0dXJuICJTVUNDRVNTIjsKIAlk ZWZhdWx0OgogCQlyZXR1cm4gIlVOS05PV04hIjsKQEAgLTI3OCw3ICsyNzgsNyBAQCBzdGF0aWMg aW5saW5lIGJvb2wgZ3VjX3Vjb2RlX3Jlc3BvbnNlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwKIHN0YXRpYyBpbnQgZ3VjX3Vjb2RlX3hmZXJfZG1hKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKIAkJCSAgICAgIHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQogewotCXN0 cnVjdCBpbnRlbF9ndWNfZncgKmd1Y19mdyA9ICZkZXZfcHJpdi0+Z3VjLmd1Y19mdzsKKwlzdHJ1 Y3QgaW50ZWxfdWNfZncgKmd1Y19mdyA9ICZkZXZfcHJpdi0+Z3VjLmd1Y19mdzsKIAl1bnNpZ25l ZCBsb25nIG9mZnNldDsKIAlzdHJ1Y3Qgc2dfdGFibGUgKnNnID0gdm1hLT5wYWdlczsKIAl1MzIg c3RhdHVzLCByc2FbVU9TX1JTQV9TQ1JBVENIX01BWF9DT1VOVF07CkBAIC0zNTAsMTcgKzM1MCwx NyBAQCBzdGF0aWMgdTMyIGd1Y193b3BjbV9zaXplKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKICAqLwogc3RhdGljIGludCBndWNfdWNvZGVfeGZlcihzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCiB7Ci0Jc3RydWN0IGludGVsX2d1Y19mdyAqZ3VjX2Z3ID0gJmRl dl9wcml2LT5ndWMuZ3VjX2Z3OworCXN0cnVjdCBpbnRlbF91Y19mdyAqZ3VjX2Z3ID0gJmRldl9w cml2LT5ndWMuZ3VjX2Z3OwogCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwogCWludCByZXQ7CiAKLQly ZXQgPSBpOTE1X2dlbV9vYmplY3Rfc2V0X3RvX2d0dF9kb21haW4oZ3VjX2Z3LT5ndWNfZndfb2Jq LCBmYWxzZSk7CisJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3NldF90b19ndHRfZG9tYWluKGd1Y19m dy0+dWNfZndfb2JqLCBmYWxzZSk7CiAJaWYgKHJldCkgewogCQlEUk1fREVCVUdfRFJJVkVSKCJz ZXQtZG9tYWluIGZhaWxlZCAlZFxuIiwgcmV0KTsKIAkJcmV0dXJuIHJldDsKIAl9CiAKLQl2bWEg PSBpOTE1X2dlbV9vYmplY3RfZ2d0dF9waW4oZ3VjX2Z3LT5ndWNfZndfb2JqLCBOVUxMLCAwLCAw LCAwKTsKKwl2bWEgPSBpOTE1X2dlbV9vYmplY3RfZ2d0dF9waW4oZ3VjX2Z3LT51Y19md19vYmos IE5VTEwsIDAsIDAsIDApOwogCWlmIChJU19FUlIodm1hKSkgewogCQlEUk1fREVCVUdfRFJJVkVS KCJwaW4gZmFpbGVkICVkXG4iLCAoaW50KVBUUl9FUlIodm1hKSk7CiAJCXJldHVybiBQVFJfRVJS KHZtYSk7CkBAIC00NTEsMTQgKzQ1MSwxNCBAQCBzdGF0aWMgaW50IGd1Y19od19yZXNldChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiBpbnQgaW50ZWxfZ3VjX3NldHVwKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gdG9faTkxNShkZXYpOwotCXN0cnVjdCBpbnRlbF9ndWNfZncgKmd1Y19mdyA9ICZkZXZfcHJp di0+Z3VjLmd1Y19mdzsKLQljb25zdCBjaGFyICpmd19wYXRoID0gZ3VjX2Z3LT5ndWNfZndfcGF0 aDsKKwlzdHJ1Y3QgaW50ZWxfdWNfZncgKmd1Y19mdyA9ICZkZXZfcHJpdi0+Z3VjLmd1Y19mdzsK Kwljb25zdCBjaGFyICpmd19wYXRoID0gZ3VjX2Z3LT51Y19md19wYXRoOwogCWludCByZXRyaWVz LCByZXQsIGVycjsKIAogCURSTV9ERUJVR19EUklWRVIoIkd1QyBmdyBzdGF0dXM6IHBhdGggJXMs IGZldGNoICVzLCBsb2FkICVzXG4iLAogCQlmd19wYXRoLAotCQlpbnRlbF9ndWNfZndfc3RhdHVz X3JlcHIoZ3VjX2Z3LT5ndWNfZndfZmV0Y2hfc3RhdHVzKSwKLQkJaW50ZWxfZ3VjX2Z3X3N0YXR1 c19yZXByKGd1Y19mdy0+Z3VjX2Z3X2xvYWRfc3RhdHVzKSk7CisJCWludGVsX3VjX2Z3X3N0YXR1 c19yZXByKGd1Y19mdy0+ZmV0Y2hfc3RhdHVzKSwKKwkJaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIo Z3VjX2Z3LT5sb2FkX3N0YXR1cykpOwogCiAJLyogTG9hZGluZyBmb3JiaWRkZW4sIG9yIG5vIGZp cm13YXJlIHRvIGxvYWQ/ICovCiAJaWYgKCFpOTE1LmVuYWJsZV9ndWNfbG9hZGluZykgewpAQCAt NDc2LDEwICs0NzYsMTAgQEAgaW50IGludGVsX2d1Y19zZXR1cChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2KQogCX0KIAogCS8qIEZldGNoIGZhaWxlZCwgb3IgYWxyZWFkeSBmZXRjaGVkIGJ1dCBmYWls ZWQgdG8gbG9hZD8gKi8KLQlpZiAoZ3VjX2Z3LT5ndWNfZndfZmV0Y2hfc3RhdHVzICE9IEdVQ19G SVJNV0FSRV9TVUNDRVNTKSB7CisJaWYgKGd1Y19mdy0+ZmV0Y2hfc3RhdHVzICE9IFVDX0ZJUk1X QVJFX1NVQ0NFU1MpIHsKIAkJZXJyID0gLUVJTzsKIAkJZ290byBmYWlsOwotCX0gZWxzZSBpZiAo Z3VjX2Z3LT5ndWNfZndfbG9hZF9zdGF0dXMgPT0gR1VDX0ZJUk1XQVJFX0ZBSUwpIHsKKwl9IGVs c2UgaWYgKGd1Y19mdy0+bG9hZF9zdGF0dXMgPT0gVUNfRklSTVdBUkVfRkFJTCkgewogCQllcnIg PSAtRU5PRVhFQzsKIAkJZ290byBmYWlsOwogCX0KQEAgLTQ4NywxMSArNDg3LDExIEBAIGludCBp bnRlbF9ndWNfc2V0dXAoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAlndWNfaW50ZXJydXB0c19y ZWxlYXNlKGRldl9wcml2KTsKIAlnZW45X3Jlc2V0X2d1Y19pbnRlcnJ1cHRzKGRldl9wcml2KTsK IAotCWd1Y19mdy0+Z3VjX2Z3X2xvYWRfc3RhdHVzID0gR1VDX0ZJUk1XQVJFX1BFTkRJTkc7CisJ Z3VjX2Z3LT5sb2FkX3N0YXR1cyA9IFVDX0ZJUk1XQVJFX1BFTkRJTkc7CiAKIAlEUk1fREVCVUdf RFJJVkVSKCJHdUMgZncgc3RhdHVzOiBmZXRjaCAlcywgbG9hZCAlc1xuIiwKLQkJaW50ZWxfZ3Vj X2Z3X3N0YXR1c19yZXByKGd1Y19mdy0+Z3VjX2Z3X2ZldGNoX3N0YXR1cyksCi0JCWludGVsX2d1 Y19md19zdGF0dXNfcmVwcihndWNfZnctPmd1Y19md19sb2FkX3N0YXR1cykpOworCQlpbnRlbF91 Y19md19zdGF0dXNfcmVwcihndWNfZnctPmZldGNoX3N0YXR1cyksCisJCWludGVsX3VjX2Z3X3N0 YXR1c19yZXByKGd1Y19mdy0+bG9hZF9zdGF0dXMpKTsKIAogCWVyciA9IGk5MTVfZ3VjX3N1Ym1p c3Npb25faW5pdChkZXZfcHJpdik7CiAJaWYgKGVycikKQEAgLTUyMywxMSArNTIzLDExIEBAIGlu dCBpbnRlbF9ndWNfc2V0dXAoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAkJCSAicmV0cnkgJWQg bW9yZSB0aW1lKHMpXG4iLCBlcnIsIHJldHJpZXMpOwogCX0KIAotCWd1Y19mdy0+Z3VjX2Z3X2xv YWRfc3RhdHVzID0gR1VDX0ZJUk1XQVJFX1NVQ0NFU1M7CisJZ3VjX2Z3LT5sb2FkX3N0YXR1cyA9 IFVDX0ZJUk1XQVJFX1NVQ0NFU1M7CiAKIAlEUk1fREVCVUdfRFJJVkVSKCJHdUMgZncgc3RhdHVz OiBmZXRjaCAlcywgbG9hZCAlc1xuIiwKLQkJaW50ZWxfZ3VjX2Z3X3N0YXR1c19yZXByKGd1Y19m dy0+Z3VjX2Z3X2ZldGNoX3N0YXR1cyksCi0JCWludGVsX2d1Y19md19zdGF0dXNfcmVwcihndWNf ZnctPmd1Y19md19sb2FkX3N0YXR1cykpOworCQlpbnRlbF91Y19md19zdGF0dXNfcmVwcihndWNf ZnctPmZldGNoX3N0YXR1cyksCisJCWludGVsX3VjX2Z3X3N0YXR1c19yZXByKGd1Y19mdy0+bG9h ZF9zdGF0dXMpKTsKIAogCWlmIChpOTE1LmVuYWJsZV9ndWNfc3VibWlzc2lvbikgewogCQlpZiAo aTkxNS5ndWNfbG9nX2xldmVsID49IDApCkBAIC01NDIsOCArNTQyLDggQEAgaW50IGludGVsX2d1 Y19zZXR1cChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCXJldHVybiAwOwogCiBmYWlsOgotCWlm IChndWNfZnctPmd1Y19md19sb2FkX3N0YXR1cyA9PSBHVUNfRklSTVdBUkVfUEVORElORykKLQkJ Z3VjX2Z3LT5ndWNfZndfbG9hZF9zdGF0dXMgPSBHVUNfRklSTVdBUkVfRkFJTDsKKwlpZiAoZ3Vj X2Z3LT5sb2FkX3N0YXR1cyA9PSBVQ19GSVJNV0FSRV9QRU5ESU5HKQorCQlndWNfZnctPmxvYWRf c3RhdHVzID0gVUNfRklSTVdBUkVfRkFJTDsKIAogCWd1Y19pbnRlcnJ1cHRzX3JlbGVhc2UoZGV2 X3ByaXYpOwogCWk5MTVfZ3VjX3N1Ym1pc3Npb25fZGlzYWJsZShkZXZfcHJpdik7CkBAIC01ODgs NyArNTg4LDcgQEAgaW50IGludGVsX2d1Y19zZXR1cChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQog CXJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyB2b2lkIGd1Y19md19mZXRjaChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LCBzdHJ1Y3QgaW50ZWxfZ3VjX2Z3ICpndWNfZncpCit2b2lkIGludGVsX3VjX2Z3 X2ZldGNoKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBpbnRlbF91Y19mdyAqdWNfZncp CiB7CiAJc3RydWN0IHBjaV9kZXYgKnBkZXYgPSBkZXYtPnBkZXY7CiAJc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QgKm9iajsKQEAgLTU5NywxNyArNTk3LDE3IEBAIHN0YXRpYyB2b2lkIGd1Y19m d19mZXRjaChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgaW50ZWxfZ3VjX2Z3ICpndWNf ZncpCiAJc2l6ZV90IHNpemU7CiAJaW50IGVycjsKIAotCURSTV9ERUJVR19EUklWRVIoImJlZm9y ZSByZXF1ZXN0aW5nIGZpcm13YXJlOiBHdUMgZncgZmV0Y2ggc3RhdHVzICVzXG4iLAotCQlpbnRl bF9ndWNfZndfc3RhdHVzX3JlcHIoZ3VjX2Z3LT5ndWNfZndfZmV0Y2hfc3RhdHVzKSk7CisJRFJN X0RFQlVHX0RSSVZFUigiYmVmb3JlIHJlcXVlc3RpbmcgZmlybXdhcmU6IHVDIGZ3IGZldGNoIHN0 YXR1cyAlc1xuIiwKKwkJaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIodWNfZnctPmZldGNoX3N0YXR1 cykpOwogCi0JZXJyID0gcmVxdWVzdF9maXJtd2FyZSgmZncsIGd1Y19mdy0+Z3VjX2Z3X3BhdGgs ICZwZGV2LT5kZXYpOworCWVyciA9IHJlcXVlc3RfZmlybXdhcmUoJmZ3LCB1Y19mdy0+dWNfZndf cGF0aCwgJnBkZXYtPmRldik7CiAJaWYgKGVycikKIAkJZ290byBmYWlsOwogCWlmICghZncpCiAJ CWdvdG8gZmFpbDsKIAotCURSTV9ERUJVR19EUklWRVIoImZldGNoIEd1QyBmdyBmcm9tICVzIHN1 Y2NlZWRlZCwgZncgJXBcbiIsCi0JCWd1Y19mdy0+Z3VjX2Z3X3BhdGgsIGZ3KTsKKwlEUk1fREVC VUdfRFJJVkVSKCJmZXRjaCB1QyBmdyBmcm9tICVzIHN1Y2NlZWRlZCwgZncgJXBcbiIsCisJCXVj X2Z3LT51Y19md19wYXRoLCBmdyk7CiAKIAkvKiBDaGVjayB0aGUgc2l6ZSBvZiB0aGUgYmxvYiBi ZWZvcmUgZXhhbWluaW5nIGJ1ZmZlciBjb250ZW50cyAqLwogCWlmIChmdy0+c2l6ZSA8IHNpemVv ZihzdHJ1Y3QgZ3VjX2Nzc19oZWFkZXIpKSB7CkBAIC02MTgsMzYgKzYxOCwzNiBAQCBzdGF0aWMg dm9pZCBndWNfZndfZmV0Y2goc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGludGVsX2d1 Y19mdyAqZ3VjX2Z3KQogCWNzcyA9IChzdHJ1Y3QgZ3VjX2Nzc19oZWFkZXIgKilmdy0+ZGF0YTsK IAogCS8qIEZpcm13YXJlIGJpdHMgYWx3YXlzIHN0YXJ0IGZyb20gaGVhZGVyICovCi0JZ3VjX2Z3 LT5oZWFkZXJfb2Zmc2V0ID0gMDsKLQlndWNfZnctPmhlYWRlcl9zaXplID0gKGNzcy0+aGVhZGVy X3NpemVfZHcgLSBjc3MtPm1vZHVsdXNfc2l6ZV9kdyAtCisJdWNfZnctPmhlYWRlcl9vZmZzZXQg PSAwOworCXVjX2Z3LT5oZWFkZXJfc2l6ZSA9IChjc3MtPmhlYWRlcl9zaXplX2R3IC0gY3NzLT5t b2R1bHVzX3NpemVfZHcgLQogCQljc3MtPmtleV9zaXplX2R3IC0gY3NzLT5leHBvbmVudF9zaXpl X2R3KSAqIHNpemVvZih1MzIpOwogCi0JaWYgKGd1Y19mdy0+aGVhZGVyX3NpemUgIT0gc2l6ZW9m KHN0cnVjdCBndWNfY3NzX2hlYWRlcikpIHsKKwlpZiAodWNfZnctPmhlYWRlcl9zaXplICE9IHNp emVvZihzdHJ1Y3QgZ3VjX2Nzc19oZWFkZXIpKSB7CiAJCURSTV9OT1RFKCJDU1MgaGVhZGVyIGRl ZmluaXRpb24gbWlzbWF0Y2hcbiIpOwogCQlnb3RvIGZhaWw7CiAJfQogCiAJLyogdGhlbiwgdUNv ZGUgKi8KLQlndWNfZnctPnVjb2RlX29mZnNldCA9IGd1Y19mdy0+aGVhZGVyX29mZnNldCArIGd1 Y19mdy0+aGVhZGVyX3NpemU7Ci0JZ3VjX2Z3LT51Y29kZV9zaXplID0gKGNzcy0+c2l6ZV9kdyAt IGNzcy0+aGVhZGVyX3NpemVfZHcpICogc2l6ZW9mKHUzMik7CisJdWNfZnctPnVjb2RlX29mZnNl dCA9IHVjX2Z3LT5oZWFkZXJfb2Zmc2V0ICsgdWNfZnctPmhlYWRlcl9zaXplOworCXVjX2Z3LT51 Y29kZV9zaXplID0gKGNzcy0+c2l6ZV9kdyAtIGNzcy0+aGVhZGVyX3NpemVfZHcpICogc2l6ZW9m KHUzMik7CiAKIAkvKiBub3cgUlNBICovCiAJaWYgKGNzcy0+a2V5X3NpemVfZHcgIT0gVU9TX1JT QV9TQ1JBVENIX01BWF9DT1VOVCkgewogCQlEUk1fTk9URSgiUlNBIGtleSBzaXplIGlzIGJhZFxu Iik7CiAJCWdvdG8gZmFpbDsKIAl9Ci0JZ3VjX2Z3LT5yc2Ffb2Zmc2V0ID0gZ3VjX2Z3LT51Y29k ZV9vZmZzZXQgKyBndWNfZnctPnVjb2RlX3NpemU7Ci0JZ3VjX2Z3LT5yc2Ffc2l6ZSA9IGNzcy0+ a2V5X3NpemVfZHcgKiBzaXplb2YodTMyKTsKKwl1Y19mdy0+cnNhX29mZnNldCA9IHVjX2Z3LT51 Y29kZV9vZmZzZXQgKyB1Y19mdy0+dWNvZGVfc2l6ZTsKKwl1Y19mdy0+cnNhX3NpemUgPSBjc3Mt PmtleV9zaXplX2R3ICogc2l6ZW9mKHUzMik7CiAKIAkvKiBBdCBsZWFzdCwgaXQgc2hvdWxkIGhh dmUgaGVhZGVyLCB1Q29kZSBhbmQgUlNBLiBTaXplIG9mIGFsbCB0aHJlZS4gKi8KLQlzaXplID0g Z3VjX2Z3LT5oZWFkZXJfc2l6ZSArIGd1Y19mdy0+dWNvZGVfc2l6ZSArIGd1Y19mdy0+cnNhX3Np emU7CisJc2l6ZSA9IHVjX2Z3LT5oZWFkZXJfc2l6ZSArIHVjX2Z3LT51Y29kZV9zaXplICsgdWNf ZnctPnJzYV9zaXplOwogCWlmIChmdy0+c2l6ZSA8IHNpemUpIHsKIAkJRFJNX05PVEUoIk1pc3Np bmcgZmlybXdhcmUgY29tcG9uZW50c1xuIik7CiAJCWdvdG8gZmFpbDsKIAl9CiAKIAkvKiBIZWFk ZXIgYW5kIHVDb2RlIHdpbGwgYmUgbG9hZGVkIHRvIFdPUENNLiBTaXplIG9mIHRoZSB0d28uICov Ci0Jc2l6ZSA9IGd1Y19mdy0+aGVhZGVyX3NpemUgKyBndWNfZnctPnVjb2RlX3NpemU7CisJc2l6 ZSA9IHVjX2Z3LT5oZWFkZXJfc2l6ZSArIHVjX2Z3LT51Y29kZV9zaXplOwogCWlmIChzaXplID4g Z3VjX3dvcGNtX3NpemUodG9faTkxNShkZXYpKSkgewogCQlEUk1fTk9URSgiRmlybXdhcmUgaXMg dG9vIGxhcmdlIHRvIGZpdCBpbiBXT1BDTVxuIik7CiAJCWdvdG8gZmFpbDsKQEAgLTY1OSwyMSAr NjU5LDIxIEBAIHN0YXRpYyB2b2lkIGd1Y19md19mZXRjaChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LCBzdHJ1Y3QgaW50ZWxfZ3VjX2Z3ICpndWNfZncpCiAJICogVFdPIGJ5dGVzIGVhY2ggKGkuZS4g dTE2KSwgYWx0aG91Z2ggYWxsIHBvaW50ZXJzIGFuZCBvZmZzZXRzIGFyZSBkZWZpbmVkCiAJICog aW4gdGVybXMgb2YgYnl0ZXMgKHU4KS4KIAkgKi8KLQlndWNfZnctPmd1Y19md19tYWpvcl9mb3Vu ZCA9IGNzcy0+Z3VjX3N3X3ZlcnNpb24gPj4gMTY7Ci0JZ3VjX2Z3LT5ndWNfZndfbWlub3JfZm91 bmQgPSBjc3MtPmd1Y19zd192ZXJzaW9uICYgMHhGRkZGOwotCi0JaWYgKGd1Y19mdy0+Z3VjX2Z3 X21ham9yX2ZvdW5kICE9IGd1Y19mdy0+Z3VjX2Z3X21ham9yX3dhbnRlZCB8fAotCSAgICBndWNf ZnctPmd1Y19md19taW5vcl9mb3VuZCA8IGd1Y19mdy0+Z3VjX2Z3X21pbm9yX3dhbnRlZCkgewot CQlEUk1fTk9URSgiR3VDIGZpcm13YXJlIHZlcnNpb24gJWQuJWQsIHJlcXVpcmVkICVkLiVkXG4i LAotCQkJZ3VjX2Z3LT5ndWNfZndfbWFqb3JfZm91bmQsIGd1Y19mdy0+Z3VjX2Z3X21pbm9yX2Zv dW5kLAotCQkJZ3VjX2Z3LT5ndWNfZndfbWFqb3Jfd2FudGVkLCBndWNfZnctPmd1Y19md19taW5v cl93YW50ZWQpOworCXVjX2Z3LT5tYWpvcl92ZXJfZm91bmQgPSBjc3MtPmd1Y19zd192ZXJzaW9u ID4+IDE2OworCXVjX2Z3LT5taW5vcl92ZXJfZm91bmQgPSBjc3MtPmd1Y19zd192ZXJzaW9uICYg MHhGRkZGOworCisJaWYgKHVjX2Z3LT5tYWpvcl92ZXJfZm91bmQgIT0gdWNfZnctPm1ham9yX3Zl cl93YW50ZWQgfHwKKwkgICAgdWNfZnctPm1pbm9yX3Zlcl9mb3VuZCA8IHVjX2Z3LT5taW5vcl92 ZXJfd2FudGVkKSB7CisJCURSTV9OT1RFKCJ1QyBmaXJtd2FyZSB2ZXJzaW9uICVkLiVkLCByZXF1 aXJlZCAlZC4lZFxuIiwKKwkJCXVjX2Z3LT5tYWpvcl92ZXJfZm91bmQsIHVjX2Z3LT5taW5vcl92 ZXJfZm91bmQsCisJCQl1Y19mdy0+bWFqb3JfdmVyX3dhbnRlZCwgdWNfZnctPm1pbm9yX3Zlcl93 YW50ZWQpOwogCQllcnIgPSAtRU5PRVhFQzsKIAkJZ290byBmYWlsOwogCX0KIAogCURSTV9ERUJV R19EUklWRVIoImZpcm13YXJlIHZlcnNpb24gJWQuJWQgT0sgKG1pbmltdW0gJWQuJWQpXG4iLAot CQkJZ3VjX2Z3LT5ndWNfZndfbWFqb3JfZm91bmQsIGd1Y19mdy0+Z3VjX2Z3X21pbm9yX2ZvdW5k LAotCQkJZ3VjX2Z3LT5ndWNfZndfbWFqb3Jfd2FudGVkLCBndWNfZnctPmd1Y19md19taW5vcl93 YW50ZWQpOworCQkJdWNfZnctPm1ham9yX3Zlcl9mb3VuZCwgdWNfZnctPm1pbm9yX3Zlcl9mb3Vu ZCwKKwkJCXVjX2Z3LT5tYWpvcl92ZXJfd2FudGVkLCB1Y19mdy0+bWlub3JfdmVyX3dhbnRlZCk7 CiAKIAltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CiAJb2JqID0gaTkxNV9nZW1fb2Jq ZWN0X2NyZWF0ZV9mcm9tX2RhdGEoZGV2LCBmdy0+ZGF0YSwgZnctPnNpemUpOwpAQCAtNjgzLDMx ICs2ODMsMzEgQEAgc3RhdGljIHZvaWQgZ3VjX2Z3X2ZldGNoKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsIHN0cnVjdCBpbnRlbF9ndWNfZncgKmd1Y19mdykKIAkJZ290byBmYWlsOwogCX0KIAotCWd1 Y19mdy0+Z3VjX2Z3X29iaiA9IG9iajsKLQlndWNfZnctPmd1Y19md19zaXplID0gZnctPnNpemU7 CisJdWNfZnctPnVjX2Z3X29iaiA9IG9iajsKKwl1Y19mdy0+dWNfZndfc2l6ZSA9IGZ3LT5zaXpl OwogCi0JRFJNX0RFQlVHX0RSSVZFUigiR3VDIGZ3IGZldGNoIHN0YXR1cyBTVUNDRVNTLCBvYmog JXBcbiIsCi0JCQlndWNfZnctPmd1Y19md19vYmopOworCURSTV9ERUJVR19EUklWRVIoInVDIGZ3 IGZldGNoIHN0YXR1cyBTVUNDRVNTLCBvYmogJXBcbiIsCisJCQl1Y19mdy0+dWNfZndfb2JqKTsK IAogCXJlbGVhc2VfZmlybXdhcmUoZncpOwotCWd1Y19mdy0+Z3VjX2Z3X2ZldGNoX3N0YXR1cyA9 IEdVQ19GSVJNV0FSRV9TVUNDRVNTOworCXVjX2Z3LT5mZXRjaF9zdGF0dXMgPSBVQ19GSVJNV0FS RV9TVUNDRVNTOwogCXJldHVybjsKIAogZmFpbDoKLQlEUk1fV0FSTigiRmFpbGVkIHRvIGZldGNo IHZhbGlkIEd1QyBmaXJtd2FyZSBmcm9tICVzIChlcnJvciAlZClcbiIsCi0JCSBndWNfZnctPmd1 Y19md19wYXRoLCBlcnIpOwotCURSTV9ERUJVR19EUklWRVIoIkd1QyBmdyBmZXRjaCBzdGF0dXMg RkFJTDsgZXJyICVkLCBmdyAlcCwgb2JqICVwXG4iLAotCQllcnIsIGZ3LCBndWNfZnctPmd1Y19m d19vYmopOworCURSTV9XQVJOKCJGYWlsZWQgdG8gZmV0Y2ggdmFsaWQgdUMgZmlybXdhcmUgZnJv bSAlcyAoZXJyb3IgJWQpXG4iLAorCQkgdWNfZnctPnVjX2Z3X3BhdGgsIGVycik7CisJRFJNX0RF QlVHX0RSSVZFUigidUMgZncgZmV0Y2ggc3RhdHVzIEZBSUw7IGVyciAlZCwgZncgJXAsIG9iaiAl cFxuIiwKKwkJZXJyLCBmdywgdWNfZnctPnVjX2Z3X29iaik7CiAKIAltdXRleF9sb2NrKCZkZXYt PnN0cnVjdF9tdXRleCk7Ci0Jb2JqID0gZ3VjX2Z3LT5ndWNfZndfb2JqOworCW9iaiA9IHVjX2Z3 LT51Y19md19vYmo7CiAJaWYgKG9iaikKIAkJaTkxNV9nZW1fb2JqZWN0X3B1dChvYmopOwotCWd1 Y19mdy0+Z3VjX2Z3X29iaiA9IE5VTEw7CisJdWNfZnctPnVjX2Z3X29iaiA9IE5VTEw7CiAJbXV0 ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CiAKIAlyZWxlYXNlX2Zpcm13YXJlKGZ3KTsJ CS8qIE9LIGV2ZW4gaWYgZncgaXMgTlVMTCAqLwotCWd1Y19mdy0+Z3VjX2Z3X2ZldGNoX3N0YXR1 cyA9IEdVQ19GSVJNV0FSRV9GQUlMOworCXVjX2Z3LT5mZXRjaF9zdGF0dXMgPSBVQ19GSVJNV0FS RV9GQUlMOwogfQogCiAvKioKQEAgLTcyMiw3ICs3MjIsNyBAQCBzdGF0aWMgdm9pZCBndWNfZndf ZmV0Y2goc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGludGVsX2d1Y19mdyAqZ3VjX2Z3 KQogdm9pZCBpbnRlbF9ndWNfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogewogCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKLQlzdHJ1Y3QgaW50 ZWxfZ3VjX2Z3ICpndWNfZncgPSAmZGV2X3ByaXYtPmd1Yy5ndWNfZnc7CisJc3RydWN0IGludGVs X3VjX2Z3ICpndWNfZncgPSAmZGV2X3ByaXYtPmd1Yy5ndWNfZnc7CiAJY29uc3QgY2hhciAqZndf cGF0aDsKIAogCWlmICghSEFTX0dVQyhkZXZfcHJpdikpIHsKQEAgLTc0MCwyMyArNzQwLDI0IEBA IHZvaWQgaW50ZWxfZ3VjX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAkJZndfcGF0aCA9 IE5VTEw7CiAJfSBlbHNlIGlmIChJU19TS1lMQUtFKGRldl9wcml2KSkgewogCQlmd19wYXRoID0g STkxNV9TS0xfR1VDX1VDT0RFOwotCQlndWNfZnctPmd1Y19md19tYWpvcl93YW50ZWQgPSBTS0xf RldfTUFKT1I7Ci0JCWd1Y19mdy0+Z3VjX2Z3X21pbm9yX3dhbnRlZCA9IFNLTF9GV19NSU5PUjsK KwkJZ3VjX2Z3LT5tYWpvcl92ZXJfd2FudGVkID0gU0tMX0ZXX01BSk9SOworCQlndWNfZnctPm1p bm9yX3Zlcl93YW50ZWQgPSBTS0xfRldfTUlOT1I7CiAJfSBlbHNlIGlmIChJU19CUk9YVE9OKGRl dl9wcml2KSkgewogCQlmd19wYXRoID0gSTkxNV9CWFRfR1VDX1VDT0RFOwotCQlndWNfZnctPmd1 Y19md19tYWpvcl93YW50ZWQgPSBCWFRfRldfTUFKT1I7Ci0JCWd1Y19mdy0+Z3VjX2Z3X21pbm9y X3dhbnRlZCA9IEJYVF9GV19NSU5PUjsKKwkJZ3VjX2Z3LT5tYWpvcl92ZXJfd2FudGVkID0gQlhU X0ZXX01BSk9SOworCQlndWNfZnctPm1pbm9yX3Zlcl93YW50ZWQgPSBCWFRfRldfTUlOT1I7CiAJ fSBlbHNlIGlmIChJU19LQUJZTEFLRShkZXZfcHJpdikpIHsKIAkJZndfcGF0aCA9IEk5MTVfS0JM X0dVQ19VQ09ERTsKLQkJZ3VjX2Z3LT5ndWNfZndfbWFqb3Jfd2FudGVkID0gS0JMX0ZXX01BSk9S OwotCQlndWNfZnctPmd1Y19md19taW5vcl93YW50ZWQgPSBLQkxfRldfTUlOT1I7CisJCWd1Y19m dy0+bWFqb3JfdmVyX3dhbnRlZCA9IEtCTF9GV19NQUpPUjsKKwkJZ3VjX2Z3LT5taW5vcl92ZXJf d2FudGVkID0gS0JMX0ZXX01JTk9SOwogCX0gZWxzZSB7CiAJCWZ3X3BhdGggPSAiIjsJLyogdW5r bm93biBkZXZpY2UgKi8KIAl9CiAKLQlndWNfZnctPmd1Y19md19wYXRoID0gZndfcGF0aDsKLQln dWNfZnctPmd1Y19md19mZXRjaF9zdGF0dXMgPSBHVUNfRklSTVdBUkVfTk9ORTsKLQlndWNfZnct Pmd1Y19md19sb2FkX3N0YXR1cyA9IEdVQ19GSVJNV0FSRV9OT05FOworCWd1Y19mdy0+dWNfZGV2 ID0gZGV2OworCWd1Y19mdy0+dWNfZndfcGF0aCA9IGZ3X3BhdGg7CisJZ3VjX2Z3LT5mZXRjaF9z dGF0dXMgPSBVQ19GSVJNV0FSRV9OT05FOworCWd1Y19mdy0+bG9hZF9zdGF0dXMgPSBVQ19GSVJN V0FSRV9OT05FOwogCiAJLyogRWFybHkgKGFuZCBzaWxlbnQpIHJldHVybiBpZiBHdUMgbG9hZGlu ZyBpcyBkaXNhYmxlZCAqLwogCWlmICghaTkxNS5lbmFibGVfZ3VjX2xvYWRpbmcpCkBAIC03NjYs OSArNzY3LDkgQEAgdm9pZCBpbnRlbF9ndWNfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQog CWlmICgqZndfcGF0aCA9PSAnXDAnKQogCQlyZXR1cm47CiAKLQlndWNfZnctPmd1Y19md19mZXRj aF9zdGF0dXMgPSBHVUNfRklSTVdBUkVfUEVORElORzsKKwlndWNfZnctPmZldGNoX3N0YXR1cyA9 IFVDX0ZJUk1XQVJFX1BFTkRJTkc7CiAJRFJNX0RFQlVHX0RSSVZFUigiR3VDIGZpcm13YXJlIHBl bmRpbmcsIHBhdGggJXNcbiIsIGZ3X3BhdGgpOwotCWd1Y19md19mZXRjaChkZXYsIGd1Y19mdyk7 CisJaW50ZWxfdWNfZndfZmV0Y2goZGV2LCBndWNfZncpOwogCS8qIHN0YXR1cyBtdXN0IG5vdyBi ZSBGQUlMIG9yIFNVQ0NFU1MgKi8KIH0KIApAQCAtNzc5LDE3ICs3ODAsMTcgQEAgdm9pZCBpbnRl bF9ndWNfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogdm9pZCBpbnRlbF9ndWNfZmluaShz dHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IHRvX2k5MTUoZGV2KTsKLQlzdHJ1Y3QgaW50ZWxfZ3VjX2Z3ICpndWNfZncgPSAmZGV2 X3ByaXYtPmd1Yy5ndWNfZnc7CisJc3RydWN0IGludGVsX3VjX2Z3ICpndWNfZncgPSAmZGV2X3By aXYtPmd1Yy5ndWNfZnc7CiAKIAltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CiAJZ3Vj X2ludGVycnVwdHNfcmVsZWFzZShkZXZfcHJpdik7CiAJaTkxNV9ndWNfc3VibWlzc2lvbl9kaXNh YmxlKGRldl9wcml2KTsKIAlpOTE1X2d1Y19zdWJtaXNzaW9uX2ZpbmkoZGV2X3ByaXYpOwogCi0J aWYgKGd1Y19mdy0+Z3VjX2Z3X29iaikKLQkJaTkxNV9nZW1fb2JqZWN0X3B1dChndWNfZnctPmd1 Y19md19vYmopOwotCWd1Y19mdy0+Z3VjX2Z3X29iaiA9IE5VTEw7CisJaWYgKGd1Y19mdy0+dWNf Zndfb2JqKQorCQlpOTE1X2dlbV9vYmplY3RfcHV0KGd1Y19mdy0+dWNfZndfb2JqKTsKKwlndWNf ZnctPnVjX2Z3X29iaiA9IE5VTEw7CiAJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7 CiAKLQlndWNfZnctPmd1Y19md19mZXRjaF9zdGF0dXMgPSBHVUNfRklSTVdBUkVfTk9ORTsKKwln dWNfZnctPmZldGNoX3N0YXR1cyA9IFVDX0ZJUk1XQVJFX05PTkU7CiB9CmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91Yy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfdWMuaAppbmRleCA4NTA3YThmLi5hMWM3NzFmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF91Yy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VjLmgK QEAgLTkxLDI5ICs5MSwzMSBAQCBzdHJ1Y3QgaTkxNV9ndWNfY2xpZW50IHsKIAl1aW50NjRfdCBz dWJtaXNzaW9uc1tJOTE1X05VTV9FTkdJTkVTXTsKIH07CiAKLWVudW0gaW50ZWxfZ3VjX2Z3X3N0 YXR1cyB7Ci0JR1VDX0ZJUk1XQVJFX0ZBSUwgPSAtMSwKLQlHVUNfRklSTVdBUkVfTk9ORSA9IDAs Ci0JR1VDX0ZJUk1XQVJFX1BFTkRJTkcsCi0JR1VDX0ZJUk1XQVJFX1NVQ0NFU1MKK2VudW0gaW50 ZWxfdWNfZndfc3RhdHVzIHsKKwlVQ19GSVJNV0FSRV9GQUlMID0gLTEsCisJVUNfRklSTVdBUkVf Tk9ORSA9IDAsCisJVUNfRklSTVdBUkVfUEVORElORywKKwlVQ19GSVJNV0FSRV9TVUNDRVNTCiB9 OwogCiAvKgogICogVGhpcyBzdHJ1Y3R1cmUgZW5jYXBzdWxhdGVzIGFsbCB0aGUgZGF0YSBuZWVk ZWQgZHVyaW5nIHRoZSBwcm9jZXNzCiAgKiBvZiBmZXRjaGluZywgY2FjaGluZywgYW5kIGxvYWRp bmcgdGhlIGZpcm13YXJlIGltYWdlIGludG8gdGhlIEd1Qy4KICAqLwotc3RydWN0IGludGVsX2d1 Y19mdyB7Ci0JY29uc3QgY2hhciAqCQkJZ3VjX2Z3X3BhdGg7Ci0Jc2l6ZV90CQkJCWd1Y19md19z aXplOwotCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICoJZ3VjX2Z3X29iajsKLQllbnVtIGlu dGVsX2d1Y19md19zdGF0dXMJZ3VjX2Z3X2ZldGNoX3N0YXR1czsKLQllbnVtIGludGVsX2d1Y19m d19zdGF0dXMJZ3VjX2Z3X2xvYWRfc3RhdHVzOwotCi0JdWludDE2X3QJCQlndWNfZndfbWFqb3Jf d2FudGVkOwotCXVpbnQxNl90CQkJZ3VjX2Z3X21pbm9yX3dhbnRlZDsKLQl1aW50MTZfdAkJCWd1 Y19md19tYWpvcl9mb3VuZDsKLQl1aW50MTZfdAkJCWd1Y19md19taW5vcl9mb3VuZDsKLQorc3Ry dWN0IGludGVsX3VjX2Z3IHsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqdWNfZGV2OworCWNvbnN0IGNo YXIgKnVjX2Z3X3BhdGg7CisJc2l6ZV90IHVjX2Z3X3NpemU7CisJc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgKnVjX2Z3X29iajsKKwllbnVtIGludGVsX3VjX2Z3X3N0YXR1cyBmZXRjaF9zdGF0 dXM7CisJZW51bSBpbnRlbF91Y19md19zdGF0dXMgbG9hZF9zdGF0dXM7CisKKwl1aW50MTZfdCBt YWpvcl92ZXJfd2FudGVkOworCXVpbnQxNl90IG1pbm9yX3Zlcl93YW50ZWQ7CisJdWludDE2X3Qg bWFqb3JfdmVyX2ZvdW5kOworCXVpbnQxNl90IG1pbm9yX3Zlcl9mb3VuZDsKKworCXVpbnQzMl90 IGZ3X3R5cGU7CiAJdWludDMyX3QgaGVhZGVyX3NpemU7CiAJdWludDMyX3QgaGVhZGVyX29mZnNl dDsKIAl1aW50MzJfdCByc2Ffc2l6ZTsKQEAgLTEzOSw3ICsxNDEsNyBAQCBzdHJ1Y3QgaW50ZWxf Z3VjX2xvZyB7CiB9OwogCiBzdHJ1Y3QgaW50ZWxfZ3VjIHsKLQlzdHJ1Y3QgaW50ZWxfZ3VjX2Z3 IGd1Y19mdzsKKwlzdHJ1Y3QgaW50ZWxfdWNfZncgZ3VjX2Z3OwogCXN0cnVjdCBpbnRlbF9ndWNf bG9nIGxvZzsKIAogCS8qIGludGVsX2d1Y19yZWN2IGludGVycnVwdCByZWxhdGVkIHN0YXRlICov CkBAIC0xODEsNyArMTgzLDcgQEAgaW50IGludGVsX2d1Y19sb2dfY29udHJvbChzdHJ1Y3QgaW50 ZWxfZ3VjICpndWMsIHUzMiBjb250cm9sX3ZhbCk7CiBleHRlcm4gdm9pZCBpbnRlbF9ndWNfaW5p dChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKIGV4dGVybiBpbnQgaW50ZWxfZ3VjX3NldHVwKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpOwogZXh0ZXJuIHZvaWQgaW50ZWxfZ3VjX2Zpbmkoc3RydWN0 IGRybV9kZXZpY2UgKmRldik7Ci1leHRlcm4gY29uc3QgY2hhciAqaW50ZWxfZ3VjX2Z3X3N0YXR1 c19yZXByKGVudW0gaW50ZWxfZ3VjX2Z3X3N0YXR1cyBzdGF0dXMpOworZXh0ZXJuIGNvbnN0IGNo YXIgKmludGVsX3VjX2Z3X3N0YXR1c19yZXByKGVudW0gaW50ZWxfdWNfZndfc3RhdHVzIHN0YXR1 cyk7CiBleHRlcm4gaW50IGludGVsX2d1Y19zdXNwZW5kKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp OwogZXh0ZXJuIGludCBpbnRlbF9ndWNfcmVzdW1lKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwog Ci0tIAoyLjcuNAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4 Cg==