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, 9 Nov 2016 10:51:30 -0800 Message-ID: <1478717497-4485-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 mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id 47C236E699 for ; Wed, 9 Nov 2016 18:51:40 +0000 (UTC) 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 ZC4KClNpZ25lZC1vZmYtYnk6IEFudXNoYSBTcml2YXRzYSA8YW51c2hhLnNyaXZhdHNhQGludGVs LmNvbT4KU2lnbmVkLW9mZi1ieTogQWxleCBEYWkgPHl1LmRhaUBpbnRlbC5jb20+ClNpZ25lZC1v ZmYtYnk6IFBldGVyIEFudG9pbmUgPHBldGVyLmFudG9pbmVAaW50ZWwuY29tPgpSZXZpZXdlZC1i eTogRGF2ZSBHb3Jkb24gPGRhdmlkLnMuZ29yZG9uQGludGVsLmNvbT4KUmV2aWV3ZWQtYnk6IEpl ZmYgTWNHZWUgPGplZmYubWNnZWVAaW50ZWwuY29tPgpSZXZpZXdlZC1ieTogQ2FybG9zIFNhbnRh IDxjYXJsb3Muc2FudGFAaW50ZWwuY29tPgpUZXN0ZWQtYnk6IENhcmxvcyBTYW50YSA8Y2FybG9z LnNhbnRhQGludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMu YyAgICAgICAgfCAgMTIgKy0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNz aW9uLmMgfCAgIDQgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5oICAgICAgICAg ICB8ICAzOSArKysrLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5j ICAgIHwgMTU2ICsrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tCiA0IGZpbGVzIGNoYW5nZWQs IDEwNiBpbnNlcnRpb25zKCspLCAxMDUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2RlYnVnZnMuYwppbmRleCBiNjgxZDQyLi43ZTIwNmRkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2RlYnVnZnMuYwpAQCAtMjM1Myw3ICsyMzUzLDcgQEAgc3RhdGljIGludCBpOTE1X2xsYyhzdHJ1 Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCiBzdGF0aWMgaW50IGk5MTVfZ3VjX2xvYWRfc3Rh dHVzX2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQogewogCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IG5vZGVfdG9faTkxNShtLT5wcml2YXRlKTsKLQlzdHJ1 Y3QgaW50ZWxfZ3VjX2Z3ICpndWNfZncgPSAmZGV2X3ByaXYtPmd1Yy5ndWNfZnc7CisJc3RydWN0 IGludGVsX3VjX2Z3ICpndWNfZncgPSAmZGV2X3ByaXYtPmd1Yy5ndWNfZnc7CiAJdTMyIHRtcCwg aTsKIAogCWlmICghSEFTX0dVQ19VQ09ERShkZXZfcHJpdikpCkBAIC0yMzYxLDE1ICsyMzYxLDE1 IEBAIHN0YXRpYyBpbnQgaTkxNV9ndWNfbG9hZF9zdGF0dXNfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUg Km0sIHZvaWQgKmRhdGEpCiAKIAlzZXFfcHJpbnRmKG0sICJHdUMgZmlybXdhcmUgc3RhdHVzOlxu Iik7CiAJc2VxX3ByaW50ZihtLCAiXHRwYXRoOiAlc1xuIiwKLQkJZ3VjX2Z3LT5ndWNfZndfcGF0 aCk7CisJCWd1Y19mdy0+dWNfZndfcGF0aCk7CiAJc2VxX3ByaW50ZihtLCAiXHRmZXRjaDogJXNc biIsCi0JCWludGVsX2d1Y19md19zdGF0dXNfcmVwcihndWNfZnctPmd1Y19md19mZXRjaF9zdGF0 dXMpKTsKKwkJaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIoZ3VjX2Z3LT5mZXRjaF9zdGF0dXMpKTsK IAlzZXFfcHJpbnRmKG0sICJcdGxvYWQ6ICVzXG4iLAotCQlpbnRlbF9ndWNfZndfc3RhdHVzX3Jl cHIoZ3VjX2Z3LT5ndWNfZndfbG9hZF9zdGF0dXMpKTsKKwkJaW50ZWxfdWNfZndfc3RhdHVzX3Jl cHIoZ3VjX2Z3LT5sb2FkX3N0YXR1cykpOwogCXNlcV9wcmludGYobSwgIlx0dmVyc2lvbiB3YW50 ZWQ6ICVkLiVkXG4iLAotCQlndWNfZnctPmd1Y19md19tYWpvcl93YW50ZWQsIGd1Y19mdy0+Z3Vj X2Z3X21pbm9yX3dhbnRlZCk7CisJCWd1Y19mdy0+bWFqb3JfdmVyX3dhbnRlZCwgZ3VjX2Z3LT5t aW5vcl92ZXJfd2FudGVkKTsKIAlzZXFfcHJpbnRmKG0sICJcdHZlcnNpb24gZm91bmQ6ICVkLiVk XG4iLAotCQlndWNfZnctPmd1Y19md19tYWpvcl9mb3VuZCwgZ3VjX2Z3LT5ndWNfZndfbWlub3Jf Zm91bmQpOworCQlndWNfZnctPm1ham9yX3Zlcl9mb3VuZCwgZ3VjX2Z3LT5taW5vcl92ZXJfZm91 bmQpOwogCXNlcV9wcmludGYobSwgIlx0aGVhZGVyOiBvZmZzZXQgaXMgJWQ7IHNpemUgPSAlZFxu IiwKIAkJZ3VjX2Z3LT5oZWFkZXJfb2Zmc2V0LCBndWNfZnctPmhlYWRlcl9zaXplKTsKIAlzZXFf cHJpbnRmKG0sICJcdHVDb2RlOiBvZmZzZXQgaXMgJWQ7IHNpemUgPSAlZFxuIiwKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYwppbmRleCA2NjZkYWI3Li5mYjU5ZTQ0 IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jCkBAIC0xNTcw LDcgKzE1NzAsNyBAQCBpbnQgaW50ZWxfZ3VjX3N1c3BlbmQoc3RydWN0IGRybV9kZXZpY2UgKmRl dikKIAlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4OwogCXUzMiBkYXRhWzNdOwogCi0JaWYg KGd1Yy0+Z3VjX2Z3Lmd1Y19md19sb2FkX3N0YXR1cyAhPSBHVUNfRklSTVdBUkVfU1VDQ0VTUykK KwlpZiAoZ3VjLT5ndWNfZncubG9hZF9zdGF0dXMgIT0gVUNfRklSTVdBUkVfU1VDQ0VTUykKIAkJ cmV0dXJuIDA7CiAKIAlnZW45X2Rpc2FibGVfZ3VjX2ludGVycnVwdHMoZGV2X3ByaXYpOwpAQCAt MTU5OCw3ICsxNTk4LDcgQEAgaW50IGludGVsX2d1Y19yZXN1bWUoc3RydWN0IGRybV9kZXZpY2Ug KmRldikKIAlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4OwogCXUzMiBkYXRhWzNdOwogCi0J aWYgKGd1Yy0+Z3VjX2Z3Lmd1Y19md19sb2FkX3N0YXR1cyAhPSBHVUNfRklSTVdBUkVfU1VDQ0VT UykKKwlpZiAoZ3VjLT5ndWNfZncubG9hZF9zdGF0dXMgIT0gVUNfRklSTVdBUkVfU1VDQ0VTUykK IAkJcmV0dXJuIDA7CiAKIAlpZiAoaTkxNS5ndWNfbG9nX2xldmVsID49IDApCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2d1Yy5oCmluZGV4IDAwNTMyNTguLjZkYzMyOGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2d1Yy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2d1Yy5oCkBAIC05MSwyOSArOTEsMjkgQEAgc3RydWN0IGk5MTVfZ3VjX2NsaWVudCB7CiAJdWlu dDY0X3Qgc3VibWlzc2lvbnNbSTkxNV9OVU1fRU5HSU5FU107CiB9OwogCi1lbnVtIGludGVsX2d1 Y19md19zdGF0dXMgewotCUdVQ19GSVJNV0FSRV9GQUlMID0gLTEsCi0JR1VDX0ZJUk1XQVJFX05P TkUgPSAwLAotCUdVQ19GSVJNV0FSRV9QRU5ESU5HLAotCUdVQ19GSVJNV0FSRV9TVUNDRVNTCitl bnVtIGludGVsX3VjX2Z3X3N0YXR1cyB7CisJVUNfRklSTVdBUkVfRkFJTCA9IC0xLAorCVVDX0ZJ Uk1XQVJFX05PTkUgPSAwLAorCVVDX0ZJUk1XQVJFX1BFTkRJTkcsCisJVUNfRklSTVdBUkVfU1VD Q0VTUwogfTsKIAogLyoKICAqIFRoaXMgc3RydWN0dXJlIGVuY2Fwc3VsYXRlcyBhbGwgdGhlIGRh dGEgbmVlZGVkIGR1cmluZyB0aGUgcHJvY2VzcwogICogb2YgZmV0Y2hpbmcsIGNhY2hpbmcsIGFu ZCBsb2FkaW5nIHRoZSBmaXJtd2FyZSBpbWFnZSBpbnRvIHRoZSBHdUMuCiAgKi8KLXN0cnVjdCBp bnRlbF9ndWNfZncgewotCXN0cnVjdCBkcm1fZGV2aWNlICoJCWd1Y19kZXY7Ci0JY29uc3QgY2hh ciAqCQkJZ3VjX2Z3X3BhdGg7Ci0Jc2l6ZV90CQkJCWd1Y19md19zaXplOwotCXN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICoJZ3VjX2Z3X29iajsKLQllbnVtIGludGVsX2d1Y19md19zdGF0dXMJ Z3VjX2Z3X2ZldGNoX3N0YXR1czsKLQllbnVtIGludGVsX2d1Y19md19zdGF0dXMJZ3VjX2Z3X2xv YWRfc3RhdHVzOwotCi0JdWludDE2X3QJCQlndWNfZndfbWFqb3Jfd2FudGVkOwotCXVpbnQxNl90 CQkJZ3VjX2Z3X21pbm9yX3dhbnRlZDsKLQl1aW50MTZfdAkJCWd1Y19md19tYWpvcl9mb3VuZDsK LQl1aW50MTZfdAkJCWd1Y19md19taW5vcl9mb3VuZDsKK3N0cnVjdCBpbnRlbF91Y19mdyB7CisJ c3RydWN0IGRybV9kZXZpY2UgKnVjX2RldjsKKwljb25zdCBjaGFyICp1Y19md19wYXRoOworCXNp emVfdCB1Y19md19zaXplOworCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICp1Y19md19vYmo7 CisJZW51bSBpbnRlbF91Y19md19zdGF0dXMgZmV0Y2hfc3RhdHVzOworCWVudW0gaW50ZWxfdWNf Zndfc3RhdHVzIGxvYWRfc3RhdHVzOworCisJdWludDE2X3QgbWFqb3JfdmVyX3dhbnRlZDsKKwl1 aW50MTZfdCBtaW5vcl92ZXJfd2FudGVkOworCXVpbnQxNl90IG1ham9yX3Zlcl9mb3VuZDsKKwl1 aW50MTZfdCBtaW5vcl92ZXJfZm91bmQ7CiAKIAl1aW50MzJfdCBoZWFkZXJfc2l6ZTsKIAl1aW50 MzJfdCBoZWFkZXJfb2Zmc2V0OwpAQCAtMTQwLDcgKzE0MCw3IEBAIHN0cnVjdCBpbnRlbF9ndWNf bG9nIHsKIH07CiAKIHN0cnVjdCBpbnRlbF9ndWMgewotCXN0cnVjdCBpbnRlbF9ndWNfZncgZ3Vj X2Z3OworCXN0cnVjdCBpbnRlbF91Y19mdyBndWNfZnc7CiAJc3RydWN0IGludGVsX2d1Y19sb2cg bG9nOwogCiAJLyogR3VDMkhvc3QgaW50ZXJydXB0IHJlbGF0ZWQgc3RhdGUgKi8KQEAgLTE3Myw5 ICsxNzMsMTAgQEAgc3RydWN0IGludGVsX2d1YyB7CiBleHRlcm4gdm9pZCBpbnRlbF9ndWNfaW5p dChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKIGV4dGVybiBpbnQgaW50ZWxfZ3VjX3NldHVwKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpOwogZXh0ZXJuIHZvaWQgaW50ZWxfZ3VjX2Zpbmkoc3RydWN0 IGRybV9kZXZpY2UgKmRldik7Ci1leHRlcm4gY29uc3QgY2hhciAqaW50ZWxfZ3VjX2Z3X3N0YXR1 c19yZXByKGVudW0gaW50ZWxfZ3VjX2Z3X3N0YXR1cyBzdGF0dXMpOworZXh0ZXJuIGNvbnN0IGNo YXIgKmludGVsX3VjX2Z3X3N0YXR1c19yZXByKGVudW0gaW50ZWxfdWNfZndfc3RhdHVzIHN0YXR1 cyk7CiBleHRlcm4gaW50IGludGVsX2d1Y19zdXNwZW5kKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp OwogZXh0ZXJuIGludCBpbnRlbF9ndWNfcmVzdW1lKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwor dm9pZCBpbnRlbF91Y19md19mZXRjaChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgaW50 ZWxfdWNfZncgKnVjX2Z3KTsKIAogLyogaTkxNV9ndWNfc3VibWlzc2lvbi5jICovCiBpbnQgaTkx NV9ndWNfc3VibWlzc2lvbl9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7 CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMKaW5kZXggMWFhODUyMy4uNjY4 M2E4OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19sb2FkZXIuYwpAQCAtODEsMTYg KzgxLDE2IEBAIE1PRFVMRV9GSVJNV0FSRShJOTE1X0JYVF9HVUNfVUNPREUpOwogTU9EVUxFX0ZJ Uk1XQVJFKEk5MTVfS0JMX0dVQ19VQ09ERSk7CiAKIC8qIFVzZXItZnJpZW5kbHkgcmVwcmVzZW50 YXRpb24gb2YgYW4gZW51bSAqLwotY29uc3QgY2hhciAqaW50ZWxfZ3VjX2Z3X3N0YXR1c19yZXBy KGVudW0gaW50ZWxfZ3VjX2Z3X3N0YXR1cyBzdGF0dXMpCitjb25zdCBjaGFyICppbnRlbF91Y19m d19zdGF0dXNfcmVwcihlbnVtIGludGVsX3VjX2Z3X3N0YXR1cyBzdGF0dXMpCiB7CiAJc3dpdGNo IChzdGF0dXMpIHsKLQljYXNlIEdVQ19GSVJNV0FSRV9GQUlMOgorCWNhc2UgVUNfRklSTVdBUkVf RkFJTDoKIAkJcmV0dXJuICJGQUlMIjsKLQljYXNlIEdVQ19GSVJNV0FSRV9OT05FOgorCWNhc2Ug VUNfRklSTVdBUkVfTk9ORToKIAkJcmV0dXJuICJOT05FIjsKLQljYXNlIEdVQ19GSVJNV0FSRV9Q RU5ESU5HOgorCWNhc2UgVUNfRklSTVdBUkVfUEVORElORzoKIAkJcmV0dXJuICJQRU5ESU5HIjsK LQljYXNlIEdVQ19GSVJNV0FSRV9TVUNDRVNTOgorCWNhc2UgVUNfRklSTVdBUkVfU1VDQ0VTUzoK IAkJcmV0dXJuICJTVUNDRVNTIjsKIAlkZWZhdWx0OgogCQlyZXR1cm4gIlVOS05PV04hIjsKQEAg LTI3OCw3ICsyNzgsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgZ3VjX3Vjb2RlX3Jlc3BvbnNlKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIHN0YXRpYyBpbnQgZ3VjX3Vjb2RlX3hm ZXJfZG1hKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJCSAgICAgIHN0cnVj dCBpOTE1X3ZtYSAqdm1hKQogewotCXN0cnVjdCBpbnRlbF9ndWNfZncgKmd1Y19mdyA9ICZkZXZf cHJpdi0+Z3VjLmd1Y19mdzsKKwlzdHJ1Y3QgaW50ZWxfdWNfZncgKmd1Y19mdyA9ICZkZXZfcHJp di0+Z3VjLmd1Y19mdzsKIAl1bnNpZ25lZCBsb25nIG9mZnNldDsKIAlzdHJ1Y3Qgc2dfdGFibGUg KnNnID0gdm1hLT5wYWdlczsKIAl1MzIgc3RhdHVzLCByc2FbVU9TX1JTQV9TQ1JBVENIX01BWF9D T1VOVF07CkBAIC0zNTAsMTcgKzM1MCwxNyBAQCBzdGF0aWMgdTMyIGd1Y193b3BjbV9zaXplKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKICAqLwogc3RhdGljIGludCBndWNfdWNv ZGVfeGZlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7Ci0Jc3RydWN0IGlu dGVsX2d1Y19mdyAqZ3VjX2Z3ID0gJmRldl9wcml2LT5ndWMuZ3VjX2Z3OworCXN0cnVjdCBpbnRl bF91Y19mdyAqZ3VjX2Z3ID0gJmRldl9wcml2LT5ndWMuZ3VjX2Z3OwogCXN0cnVjdCBpOTE1X3Zt YSAqdm1hOwogCWludCByZXQ7CiAKLQlyZXQgPSBpOTE1X2dlbV9vYmplY3Rfc2V0X3RvX2d0dF9k b21haW4oZ3VjX2Z3LT5ndWNfZndfb2JqLCBmYWxzZSk7CisJcmV0ID0gaTkxNV9nZW1fb2JqZWN0 X3NldF90b19ndHRfZG9tYWluKGd1Y19mdy0+dWNfZndfb2JqLCBmYWxzZSk7CiAJaWYgKHJldCkg ewogCQlEUk1fREVCVUdfRFJJVkVSKCJzZXQtZG9tYWluIGZhaWxlZCAlZFxuIiwgcmV0KTsKIAkJ cmV0dXJuIHJldDsKIAl9CiAKLQl2bWEgPSBpOTE1X2dlbV9vYmplY3RfZ2d0dF9waW4oZ3VjX2Z3 LT5ndWNfZndfb2JqLCBOVUxMLCAwLCAwLCAwKTsKKwl2bWEgPSBpOTE1X2dlbV9vYmplY3RfZ2d0 dF9waW4oZ3VjX2Z3LT51Y19md19vYmosIE5VTEwsIDAsIDAsIDApOwogCWlmIChJU19FUlIodm1h KSkgewogCQlEUk1fREVCVUdfRFJJVkVSKCJwaW4gZmFpbGVkICVkXG4iLCAoaW50KVBUUl9FUlIo dm1hKSk7CiAJCXJldHVybiBQVFJfRVJSKHZtYSk7CkBAIC00NTEsMTQgKzQ1MSwxNCBAQCBzdGF0 aWMgaW50IGd1Y19od19yZXNldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiBp bnQgaW50ZWxfZ3VjX3NldHVwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiB7CiAJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwotCXN0cnVjdCBpbnRlbF9n dWNfZncgKmd1Y19mdyA9ICZkZXZfcHJpdi0+Z3VjLmd1Y19mdzsKLQljb25zdCBjaGFyICpmd19w YXRoID0gZ3VjX2Z3LT5ndWNfZndfcGF0aDsKKwlzdHJ1Y3QgaW50ZWxfdWNfZncgKmd1Y19mdyA9 ICZkZXZfcHJpdi0+Z3VjLmd1Y19mdzsKKwljb25zdCBjaGFyICpmd19wYXRoID0gZ3VjX2Z3LT51 Y19md19wYXRoOwogCWludCByZXRyaWVzLCByZXQsIGVycjsKIAogCURSTV9ERUJVR19EUklWRVIo Ikd1QyBmdyBzdGF0dXM6IHBhdGggJXMsIGZldGNoICVzLCBsb2FkICVzXG4iLAogCQlmd19wYXRo LAotCQlpbnRlbF9ndWNfZndfc3RhdHVzX3JlcHIoZ3VjX2Z3LT5ndWNfZndfZmV0Y2hfc3RhdHVz KSwKLQkJaW50ZWxfZ3VjX2Z3X3N0YXR1c19yZXByKGd1Y19mdy0+Z3VjX2Z3X2xvYWRfc3RhdHVz KSk7CisJCWludGVsX3VjX2Z3X3N0YXR1c19yZXByKGd1Y19mdy0+ZmV0Y2hfc3RhdHVzKSwKKwkJ aW50ZWxfdWNfZndfc3RhdHVzX3JlcHIoZ3VjX2Z3LT5sb2FkX3N0YXR1cykpOwogCiAJLyogTG9h ZGluZyBmb3JiaWRkZW4sIG9yIG5vIGZpcm13YXJlIHRvIGxvYWQ/ICovCiAJaWYgKCFpOTE1LmVu YWJsZV9ndWNfbG9hZGluZykgewpAQCAtNDc2LDEwICs0NzYsMTAgQEAgaW50IGludGVsX2d1Y19z ZXR1cChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCX0KIAogCS8qIEZldGNoIGZhaWxlZCwgb3Ig YWxyZWFkeSBmZXRjaGVkIGJ1dCBmYWlsZWQgdG8gbG9hZD8gKi8KLQlpZiAoZ3VjX2Z3LT5ndWNf ZndfZmV0Y2hfc3RhdHVzICE9IEdVQ19GSVJNV0FSRV9TVUNDRVNTKSB7CisJaWYgKGd1Y19mdy0+ ZmV0Y2hfc3RhdHVzICE9IFVDX0ZJUk1XQVJFX1NVQ0NFU1MpIHsKIAkJZXJyID0gLUVJTzsKIAkJ Z290byBmYWlsOwotCX0gZWxzZSBpZiAoZ3VjX2Z3LT5ndWNfZndfbG9hZF9zdGF0dXMgPT0gR1VD X0ZJUk1XQVJFX0ZBSUwpIHsKKwl9IGVsc2UgaWYgKGd1Y19mdy0+bG9hZF9zdGF0dXMgPT0gVUNf RklSTVdBUkVfRkFJTCkgewogCQllcnIgPSAtRU5PRVhFQzsKIAkJZ290byBmYWlsOwogCX0KQEAg LTQ4NywxMSArNDg3LDExIEBAIGludCBpbnRlbF9ndWNfc2V0dXAoc3RydWN0IGRybV9kZXZpY2Ug KmRldikKIAlndWNfaW50ZXJydXB0c19yZWxlYXNlKGRldl9wcml2KTsKIAlnZW45X3Jlc2V0X2d1 Y19pbnRlcnJ1cHRzKGRldl9wcml2KTsKIAotCWd1Y19mdy0+Z3VjX2Z3X2xvYWRfc3RhdHVzID0g R1VDX0ZJUk1XQVJFX1BFTkRJTkc7CisJZ3VjX2Z3LT5sb2FkX3N0YXR1cyA9IFVDX0ZJUk1XQVJF X1BFTkRJTkc7CiAKIAlEUk1fREVCVUdfRFJJVkVSKCJHdUMgZncgc3RhdHVzOiBmZXRjaCAlcywg bG9hZCAlc1xuIiwKLQkJaW50ZWxfZ3VjX2Z3X3N0YXR1c19yZXByKGd1Y19mdy0+Z3VjX2Z3X2Zl dGNoX3N0YXR1cyksCi0JCWludGVsX2d1Y19md19zdGF0dXNfcmVwcihndWNfZnctPmd1Y19md19s b2FkX3N0YXR1cykpOworCQlpbnRlbF91Y19md19zdGF0dXNfcmVwcihndWNfZnctPmZldGNoX3N0 YXR1cyksCisJCWludGVsX3VjX2Z3X3N0YXR1c19yZXByKGd1Y19mdy0+bG9hZF9zdGF0dXMpKTsK IAogCWVyciA9IGk5MTVfZ3VjX3N1Ym1pc3Npb25faW5pdChkZXZfcHJpdik7CiAJaWYgKGVycikK QEAgLTUyMywxMSArNTIzLDExIEBAIGludCBpbnRlbF9ndWNfc2V0dXAoc3RydWN0IGRybV9kZXZp Y2UgKmRldikKIAkJCSAicmV0cnkgJWQgbW9yZSB0aW1lKHMpXG4iLCBlcnIsIHJldHJpZXMpOwog CX0KIAotCWd1Y19mdy0+Z3VjX2Z3X2xvYWRfc3RhdHVzID0gR1VDX0ZJUk1XQVJFX1NVQ0NFU1M7 CisJZ3VjX2Z3LT5sb2FkX3N0YXR1cyA9IFVDX0ZJUk1XQVJFX1NVQ0NFU1M7CiAKIAlEUk1fREVC VUdfRFJJVkVSKCJHdUMgZncgc3RhdHVzOiBmZXRjaCAlcywgbG9hZCAlc1xuIiwKLQkJaW50ZWxf Z3VjX2Z3X3N0YXR1c19yZXByKGd1Y19mdy0+Z3VjX2Z3X2ZldGNoX3N0YXR1cyksCi0JCWludGVs X2d1Y19md19zdGF0dXNfcmVwcihndWNfZnctPmd1Y19md19sb2FkX3N0YXR1cykpOworCQlpbnRl bF91Y19md19zdGF0dXNfcmVwcihndWNfZnctPmZldGNoX3N0YXR1cyksCisJCWludGVsX3VjX2Z3 X3N0YXR1c19yZXByKGd1Y19mdy0+bG9hZF9zdGF0dXMpKTsKIAogCWlmIChpOTE1LmVuYWJsZV9n dWNfc3VibWlzc2lvbikgewogCQlpZiAoaTkxNS5ndWNfbG9nX2xldmVsID49IDApCkBAIC01NDIs OCArNTQyLDggQEAgaW50IGludGVsX2d1Y19zZXR1cChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQog CXJldHVybiAwOwogCiBmYWlsOgotCWlmIChndWNfZnctPmd1Y19md19sb2FkX3N0YXR1cyA9PSBH VUNfRklSTVdBUkVfUEVORElORykKLQkJZ3VjX2Z3LT5ndWNfZndfbG9hZF9zdGF0dXMgPSBHVUNf RklSTVdBUkVfRkFJTDsKKwlpZiAoZ3VjX2Z3LT5sb2FkX3N0YXR1cyA9PSBVQ19GSVJNV0FSRV9Q RU5ESU5HKQorCQlndWNfZnctPmxvYWRfc3RhdHVzID0gVUNfRklSTVdBUkVfRkFJTDsKIAogCWd1 Y19pbnRlcnJ1cHRzX3JlbGVhc2UoZGV2X3ByaXYpOwogCWk5MTVfZ3VjX3N1Ym1pc3Npb25fZGlz YWJsZShkZXZfcHJpdik7CkBAIC01ODgsNyArNTg4LDcgQEAgaW50IGludGVsX2d1Y19zZXR1cChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCXJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyB2b2lkIGd1 Y19md19mZXRjaChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgaW50ZWxfZ3VjX2Z3ICpn dWNfZncpCit2b2lkIGludGVsX3VjX2Z3X2ZldGNoKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0 cnVjdCBpbnRlbF91Y19mdyAqdWNfZncpCiB7CiAJc3RydWN0IHBjaV9kZXYgKnBkZXYgPSBkZXYt PnBkZXY7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKQEAgLTU5NywxNyArNTk3 LDE3IEBAIHN0YXRpYyB2b2lkIGd1Y19md19mZXRjaChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBz dHJ1Y3QgaW50ZWxfZ3VjX2Z3ICpndWNfZncpCiAJc2l6ZV90IHNpemU7CiAJaW50IGVycjsKIAot CURSTV9ERUJVR19EUklWRVIoImJlZm9yZSByZXF1ZXN0aW5nIGZpcm13YXJlOiBHdUMgZncgZmV0 Y2ggc3RhdHVzICVzXG4iLAotCQlpbnRlbF9ndWNfZndfc3RhdHVzX3JlcHIoZ3VjX2Z3LT5ndWNf ZndfZmV0Y2hfc3RhdHVzKSk7CisJRFJNX0RFQlVHX0RSSVZFUigiYmVmb3JlIHJlcXVlc3Rpbmcg ZmlybXdhcmU6IHVDIGZ3IGZldGNoIHN0YXR1cyAlc1xuIiwKKwkJaW50ZWxfdWNfZndfc3RhdHVz X3JlcHIodWNfZnctPmZldGNoX3N0YXR1cykpOwogCi0JZXJyID0gcmVxdWVzdF9maXJtd2FyZSgm ZncsIGd1Y19mdy0+Z3VjX2Z3X3BhdGgsICZwZGV2LT5kZXYpOworCWVyciA9IHJlcXVlc3RfZmly bXdhcmUoJmZ3LCB1Y19mdy0+dWNfZndfcGF0aCwgJnBkZXYtPmRldik7CiAJaWYgKGVycikKIAkJ Z290byBmYWlsOwogCWlmICghZncpCiAJCWdvdG8gZmFpbDsKIAotCURSTV9ERUJVR19EUklWRVIo ImZldGNoIEd1QyBmdyBmcm9tICVzIHN1Y2NlZWRlZCwgZncgJXBcbiIsCi0JCWd1Y19mdy0+Z3Vj X2Z3X3BhdGgsIGZ3KTsKKwlEUk1fREVCVUdfRFJJVkVSKCJmZXRjaCB1QyBmdyBmcm9tICVzIHN1 Y2NlZWRlZCwgZncgJXBcbiIsCisJCXVjX2Z3LT51Y19md19wYXRoLCBmdyk7CiAKIAkvKiBDaGVj ayB0aGUgc2l6ZSBvZiB0aGUgYmxvYiBiZWZvcmUgZXhhbWluaW5nIGJ1ZmZlciBjb250ZW50cyAq LwogCWlmIChmdy0+c2l6ZSA8IHNpemVvZihzdHJ1Y3QgZ3VjX2Nzc19oZWFkZXIpKSB7CkBAIC02 MTgsMzYgKzYxOCwzNiBAQCBzdGF0aWMgdm9pZCBndWNfZndfZmV0Y2goc3RydWN0IGRybV9kZXZp Y2UgKmRldiwgc3RydWN0IGludGVsX2d1Y19mdyAqZ3VjX2Z3KQogCWNzcyA9IChzdHJ1Y3QgZ3Vj X2Nzc19oZWFkZXIgKilmdy0+ZGF0YTsKIAogCS8qIEZpcm13YXJlIGJpdHMgYWx3YXlzIHN0YXJ0 IGZyb20gaGVhZGVyICovCi0JZ3VjX2Z3LT5oZWFkZXJfb2Zmc2V0ID0gMDsKLQlndWNfZnctPmhl YWRlcl9zaXplID0gKGNzcy0+aGVhZGVyX3NpemVfZHcgLSBjc3MtPm1vZHVsdXNfc2l6ZV9kdyAt CisJdWNfZnctPmhlYWRlcl9vZmZzZXQgPSAwOworCXVjX2Z3LT5oZWFkZXJfc2l6ZSA9IChjc3Mt PmhlYWRlcl9zaXplX2R3IC0gY3NzLT5tb2R1bHVzX3NpemVfZHcgLQogCQljc3MtPmtleV9zaXpl X2R3IC0gY3NzLT5leHBvbmVudF9zaXplX2R3KSAqIHNpemVvZih1MzIpOwogCi0JaWYgKGd1Y19m dy0+aGVhZGVyX3NpemUgIT0gc2l6ZW9mKHN0cnVjdCBndWNfY3NzX2hlYWRlcikpIHsKKwlpZiAo dWNfZnctPmhlYWRlcl9zaXplICE9IHNpemVvZihzdHJ1Y3QgZ3VjX2Nzc19oZWFkZXIpKSB7CiAJ CURSTV9OT1RFKCJDU1MgaGVhZGVyIGRlZmluaXRpb24gbWlzbWF0Y2hcbiIpOwogCQlnb3RvIGZh aWw7CiAJfQogCiAJLyogdGhlbiwgdUNvZGUgKi8KLQlndWNfZnctPnVjb2RlX29mZnNldCA9IGd1 Y19mdy0+aGVhZGVyX29mZnNldCArIGd1Y19mdy0+aGVhZGVyX3NpemU7Ci0JZ3VjX2Z3LT51Y29k ZV9zaXplID0gKGNzcy0+c2l6ZV9kdyAtIGNzcy0+aGVhZGVyX3NpemVfZHcpICogc2l6ZW9mKHUz Mik7CisJdWNfZnctPnVjb2RlX29mZnNldCA9IHVjX2Z3LT5oZWFkZXJfb2Zmc2V0ICsgdWNfZnct PmhlYWRlcl9zaXplOworCXVjX2Z3LT51Y29kZV9zaXplID0gKGNzcy0+c2l6ZV9kdyAtIGNzcy0+ aGVhZGVyX3NpemVfZHcpICogc2l6ZW9mKHUzMik7CiAKIAkvKiBub3cgUlNBICovCiAJaWYgKGNz cy0+a2V5X3NpemVfZHcgIT0gVU9TX1JTQV9TQ1JBVENIX01BWF9DT1VOVCkgewogCQlEUk1fTk9U RSgiUlNBIGtleSBzaXplIGlzIGJhZFxuIik7CiAJCWdvdG8gZmFpbDsKIAl9Ci0JZ3VjX2Z3LT5y c2Ffb2Zmc2V0ID0gZ3VjX2Z3LT51Y29kZV9vZmZzZXQgKyBndWNfZnctPnVjb2RlX3NpemU7Ci0J Z3VjX2Z3LT5yc2Ffc2l6ZSA9IGNzcy0+a2V5X3NpemVfZHcgKiBzaXplb2YodTMyKTsKKwl1Y19m dy0+cnNhX29mZnNldCA9IHVjX2Z3LT51Y29kZV9vZmZzZXQgKyB1Y19mdy0+dWNvZGVfc2l6ZTsK Kwl1Y19mdy0+cnNhX3NpemUgPSBjc3MtPmtleV9zaXplX2R3ICogc2l6ZW9mKHUzMik7CiAKIAkv KiBBdCBsZWFzdCwgaXQgc2hvdWxkIGhhdmUgaGVhZGVyLCB1Q29kZSBhbmQgUlNBLiBTaXplIG9m IGFsbCB0aHJlZS4gKi8KLQlzaXplID0gZ3VjX2Z3LT5oZWFkZXJfc2l6ZSArIGd1Y19mdy0+dWNv ZGVfc2l6ZSArIGd1Y19mdy0+cnNhX3NpemU7CisJc2l6ZSA9IHVjX2Z3LT5oZWFkZXJfc2l6ZSAr IHVjX2Z3LT51Y29kZV9zaXplICsgdWNfZnctPnJzYV9zaXplOwogCWlmIChmdy0+c2l6ZSA8IHNp emUpIHsKIAkJRFJNX05PVEUoIk1pc3NpbmcgZmlybXdhcmUgY29tcG9uZW50c1xuIik7CiAJCWdv dG8gZmFpbDsKIAl9CiAKIAkvKiBIZWFkZXIgYW5kIHVDb2RlIHdpbGwgYmUgbG9hZGVkIHRvIFdP UENNLiBTaXplIG9mIHRoZSB0d28uICovCi0Jc2l6ZSA9IGd1Y19mdy0+aGVhZGVyX3NpemUgKyBn dWNfZnctPnVjb2RlX3NpemU7CisJc2l6ZSA9IHVjX2Z3LT5oZWFkZXJfc2l6ZSArIHVjX2Z3LT51 Y29kZV9zaXplOwogCWlmIChzaXplID4gZ3VjX3dvcGNtX3NpemUodG9faTkxNShkZXYpKSkgewog CQlEUk1fTk9URSgiRmlybXdhcmUgaXMgdG9vIGxhcmdlIHRvIGZpdCBpbiBXT1BDTVxuIik7CiAJ CWdvdG8gZmFpbDsKQEAgLTY1OSwyMSArNjU5LDIxIEBAIHN0YXRpYyB2b2lkIGd1Y19md19mZXRj aChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgaW50ZWxfZ3VjX2Z3ICpndWNfZncpCiAJ ICogVFdPIGJ5dGVzIGVhY2ggKGkuZS4gdTE2KSwgYWx0aG91Z2ggYWxsIHBvaW50ZXJzIGFuZCBv ZmZzZXRzIGFyZSBkZWZpbmVkCiAJICogaW4gdGVybXMgb2YgYnl0ZXMgKHU4KS4KIAkgKi8KLQln dWNfZnctPmd1Y19md19tYWpvcl9mb3VuZCA9IGNzcy0+Z3VjX3N3X3ZlcnNpb24gPj4gMTY7Ci0J Z3VjX2Z3LT5ndWNfZndfbWlub3JfZm91bmQgPSBjc3MtPmd1Y19zd192ZXJzaW9uICYgMHhGRkZG OwotCi0JaWYgKGd1Y19mdy0+Z3VjX2Z3X21ham9yX2ZvdW5kICE9IGd1Y19mdy0+Z3VjX2Z3X21h am9yX3dhbnRlZCB8fAotCSAgICBndWNfZnctPmd1Y19md19taW5vcl9mb3VuZCA8IGd1Y19mdy0+ Z3VjX2Z3X21pbm9yX3dhbnRlZCkgewotCQlEUk1fTk9URSgiR3VDIGZpcm13YXJlIHZlcnNpb24g JWQuJWQsIHJlcXVpcmVkICVkLiVkXG4iLAotCQkJZ3VjX2Z3LT5ndWNfZndfbWFqb3JfZm91bmQs IGd1Y19mdy0+Z3VjX2Z3X21pbm9yX2ZvdW5kLAotCQkJZ3VjX2Z3LT5ndWNfZndfbWFqb3Jfd2Fu dGVkLCBndWNfZnctPmd1Y19md19taW5vcl93YW50ZWQpOworCXVjX2Z3LT5tYWpvcl92ZXJfZm91 bmQgPSBjc3MtPmd1Y19zd192ZXJzaW9uID4+IDE2OworCXVjX2Z3LT5taW5vcl92ZXJfZm91bmQg PSBjc3MtPmd1Y19zd192ZXJzaW9uICYgMHhGRkZGOworCisJaWYgKHVjX2Z3LT5tYWpvcl92ZXJf Zm91bmQgIT0gdWNfZnctPm1ham9yX3Zlcl93YW50ZWQgfHwKKwkgICAgdWNfZnctPm1pbm9yX3Zl cl9mb3VuZCA8IHVjX2Z3LT5taW5vcl92ZXJfd2FudGVkKSB7CisJCURSTV9OT1RFKCJ1QyBmaXJt d2FyZSB2ZXJzaW9uICVkLiVkLCByZXF1aXJlZCAlZC4lZFxuIiwKKwkJCXVjX2Z3LT5tYWpvcl92 ZXJfZm91bmQsIHVjX2Z3LT5taW5vcl92ZXJfZm91bmQsCisJCQl1Y19mdy0+bWFqb3JfdmVyX3dh bnRlZCwgdWNfZnctPm1pbm9yX3Zlcl93YW50ZWQpOwogCQllcnIgPSAtRU5PRVhFQzsKIAkJZ290 byBmYWlsOwogCX0KIAogCURSTV9ERUJVR19EUklWRVIoImZpcm13YXJlIHZlcnNpb24gJWQuJWQg T0sgKG1pbmltdW0gJWQuJWQpXG4iLAotCQkJZ3VjX2Z3LT5ndWNfZndfbWFqb3JfZm91bmQsIGd1 Y19mdy0+Z3VjX2Z3X21pbm9yX2ZvdW5kLAotCQkJZ3VjX2Z3LT5ndWNfZndfbWFqb3Jfd2FudGVk LCBndWNfZnctPmd1Y19md19taW5vcl93YW50ZWQpOworCQkJdWNfZnctPm1ham9yX3Zlcl9mb3Vu ZCwgdWNfZnctPm1pbm9yX3Zlcl9mb3VuZCwKKwkJCXVjX2Z3LT5tYWpvcl92ZXJfd2FudGVkLCB1 Y19mdy0+bWlub3JfdmVyX3dhbnRlZCk7CiAKIAltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRl eCk7CiAJb2JqID0gaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9mcm9tX2RhdGEoZGV2LCBmdy0+ZGF0 YSwgZnctPnNpemUpOwpAQCAtNjgzLDMxICs2ODMsMzEgQEAgc3RhdGljIHZvaWQgZ3VjX2Z3X2Zl dGNoKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBpbnRlbF9ndWNfZncgKmd1Y19mdykK IAkJZ290byBmYWlsOwogCX0KIAotCWd1Y19mdy0+Z3VjX2Z3X29iaiA9IG9iajsKLQlndWNfZnct Pmd1Y19md19zaXplID0gZnctPnNpemU7CisJdWNfZnctPnVjX2Z3X29iaiA9IG9iajsKKwl1Y19m dy0+dWNfZndfc2l6ZSA9IGZ3LT5zaXplOwogCi0JRFJNX0RFQlVHX0RSSVZFUigiR3VDIGZ3IGZl dGNoIHN0YXR1cyBTVUNDRVNTLCBvYmogJXBcbiIsCi0JCQlndWNfZnctPmd1Y19md19vYmopOwor CURSTV9ERUJVR19EUklWRVIoInVDIGZ3IGZldGNoIHN0YXR1cyBTVUNDRVNTLCBvYmogJXBcbiIs CisJCQl1Y19mdy0+dWNfZndfb2JqKTsKIAogCXJlbGVhc2VfZmlybXdhcmUoZncpOwotCWd1Y19m dy0+Z3VjX2Z3X2ZldGNoX3N0YXR1cyA9IEdVQ19GSVJNV0FSRV9TVUNDRVNTOworCXVjX2Z3LT5m ZXRjaF9zdGF0dXMgPSBVQ19GSVJNV0FSRV9TVUNDRVNTOwogCXJldHVybjsKIAogZmFpbDoKLQlE Uk1fV0FSTigiRmFpbGVkIHRvIGZldGNoIHZhbGlkIEd1QyBmaXJtd2FyZSBmcm9tICVzIChlcnJv ciAlZClcbiIsCi0JCSBndWNfZnctPmd1Y19md19wYXRoLCBlcnIpOwotCURSTV9ERUJVR19EUklW RVIoIkd1QyBmdyBmZXRjaCBzdGF0dXMgRkFJTDsgZXJyICVkLCBmdyAlcCwgb2JqICVwXG4iLAot CQllcnIsIGZ3LCBndWNfZnctPmd1Y19md19vYmopOworCURSTV9XQVJOKCJGYWlsZWQgdG8gZmV0 Y2ggdmFsaWQgdUMgZmlybXdhcmUgZnJvbSAlcyAoZXJyb3IgJWQpXG4iLAorCQkgdWNfZnctPnVj X2Z3X3BhdGgsIGVycik7CisJRFJNX0RFQlVHX0RSSVZFUigidUMgZncgZmV0Y2ggc3RhdHVzIEZB SUw7IGVyciAlZCwgZncgJXAsIG9iaiAlcFxuIiwKKwkJZXJyLCBmdywgdWNfZnctPnVjX2Z3X29i aik7CiAKIAltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Ci0Jb2JqID0gZ3VjX2Z3LT5n dWNfZndfb2JqOworCW9iaiA9IHVjX2Z3LT51Y19md19vYmo7CiAJaWYgKG9iaikKIAkJaTkxNV9n ZW1fb2JqZWN0X3B1dChvYmopOwotCWd1Y19mdy0+Z3VjX2Z3X29iaiA9IE5VTEw7CisJdWNfZnct PnVjX2Z3X29iaiA9IE5VTEw7CiAJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CiAK IAlyZWxlYXNlX2Zpcm13YXJlKGZ3KTsJCS8qIE9LIGV2ZW4gaWYgZncgaXMgTlVMTCAqLwotCWd1 Y19mdy0+Z3VjX2Z3X2ZldGNoX3N0YXR1cyA9IEdVQ19GSVJNV0FSRV9GQUlMOworCXVjX2Z3LT5m ZXRjaF9zdGF0dXMgPSBVQ19GSVJNV0FSRV9GQUlMOwogfQogCiAvKioKQEAgLTcyMiw3ICs3MjIs NyBAQCBzdGF0aWMgdm9pZCBndWNfZndfZmV0Y2goc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3Ry dWN0IGludGVsX2d1Y19mdyAqZ3VjX2Z3KQogdm9pZCBpbnRlbF9ndWNfaW5pdChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2KQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRv X2k5MTUoZGV2KTsKLQlzdHJ1Y3QgaW50ZWxfZ3VjX2Z3ICpndWNfZncgPSAmZGV2X3ByaXYtPmd1 Yy5ndWNfZnc7CisJc3RydWN0IGludGVsX3VjX2Z3ICpndWNfZncgPSAmZGV2X3ByaXYtPmd1Yy5n dWNfZnc7CiAJY29uc3QgY2hhciAqZndfcGF0aDsKIAogCWlmICghSEFTX0dVQyhkZXYpKSB7CkBA IC03NDAsMjQgKzc0MCwyNCBAQCB2b2lkIGludGVsX2d1Y19pbml0KHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpCiAJCWZ3X3BhdGggPSBOVUxMOwogCX0gZWxzZSBpZiAoSVNfU0tZTEFLRShkZXZfcHJp dikpIHsKIAkJZndfcGF0aCA9IEk5MTVfU0tMX0dVQ19VQ09ERTsKLQkJZ3VjX2Z3LT5ndWNfZndf bWFqb3Jfd2FudGVkID0gU0tMX0ZXX01BSk9SOwotCQlndWNfZnctPmd1Y19md19taW5vcl93YW50 ZWQgPSBTS0xfRldfTUlOT1I7CisJCWd1Y19mdy0+bWFqb3JfdmVyX3dhbnRlZCA9IFNLTF9GV19N QUpPUjsKKwkJZ3VjX2Z3LT5taW5vcl92ZXJfd2FudGVkID0gU0tMX0ZXX01JTk9SOwogCX0gZWxz ZSBpZiAoSVNfQlJPWFRPTihkZXZfcHJpdikpIHsKIAkJZndfcGF0aCA9IEk5MTVfQlhUX0dVQ19V Q09ERTsKLQkJZ3VjX2Z3LT5ndWNfZndfbWFqb3Jfd2FudGVkID0gQlhUX0ZXX01BSk9SOwotCQln dWNfZnctPmd1Y19md19taW5vcl93YW50ZWQgPSBCWFRfRldfTUlOT1I7CisJCWd1Y19mdy0+bWFq b3JfdmVyX3dhbnRlZCA9IEJYVF9GV19NQUpPUjsKKwkJZ3VjX2Z3LT5taW5vcl92ZXJfd2FudGVk ID0gQlhUX0ZXX01JTk9SOwogCX0gZWxzZSBpZiAoSVNfS0FCWUxBS0UoZGV2X3ByaXYpKSB7CiAJ CWZ3X3BhdGggPSBJOTE1X0tCTF9HVUNfVUNPREU7Ci0JCWd1Y19mdy0+Z3VjX2Z3X21ham9yX3dh bnRlZCA9IEtCTF9GV19NQUpPUjsKLQkJZ3VjX2Z3LT5ndWNfZndfbWlub3Jfd2FudGVkID0gS0JM X0ZXX01JTk9SOworCQlndWNfZnctPm1ham9yX3Zlcl93YW50ZWQgPSBLQkxfRldfTUFKT1I7CisJ CWd1Y19mdy0+bWlub3JfdmVyX3dhbnRlZCA9IEtCTF9GV19NSU5PUjsKIAl9IGVsc2UgewogCQlm d19wYXRoID0gIiI7CS8qIHVua25vd24gZGV2aWNlICovCiAJfQogCi0JZ3VjX2Z3LT5ndWNfZGV2 ID0gZGV2OwotCWd1Y19mdy0+Z3VjX2Z3X3BhdGggPSBmd19wYXRoOwotCWd1Y19mdy0+Z3VjX2Z3 X2ZldGNoX3N0YXR1cyA9IEdVQ19GSVJNV0FSRV9OT05FOwotCWd1Y19mdy0+Z3VjX2Z3X2xvYWRf c3RhdHVzID0gR1VDX0ZJUk1XQVJFX05PTkU7CisJZ3VjX2Z3LT51Y19kZXYgPSBkZXY7CisJZ3Vj X2Z3LT51Y19md19wYXRoID0gZndfcGF0aDsKKwlndWNfZnctPmZldGNoX3N0YXR1cyA9IFVDX0ZJ Uk1XQVJFX05PTkU7CisJZ3VjX2Z3LT5sb2FkX3N0YXR1cyA9IFVDX0ZJUk1XQVJFX05PTkU7CiAK IAkvKiBFYXJseSAoYW5kIHNpbGVudCkgcmV0dXJuIGlmIEd1QyBsb2FkaW5nIGlzIGRpc2FibGVk ICovCiAJaWYgKCFpOTE1LmVuYWJsZV9ndWNfbG9hZGluZykKQEAgLTc2Nyw5ICs3NjcsOSBAQCB2 b2lkIGludGVsX2d1Y19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJaWYgKCpmd19wYXRo ID09ICdcMCcpCiAJCXJldHVybjsKIAotCWd1Y19mdy0+Z3VjX2Z3X2ZldGNoX3N0YXR1cyA9IEdV Q19GSVJNV0FSRV9QRU5ESU5HOworCWd1Y19mdy0+ZmV0Y2hfc3RhdHVzID0gVUNfRklSTVdBUkVf UEVORElORzsKIAlEUk1fREVCVUdfRFJJVkVSKCJHdUMgZmlybXdhcmUgcGVuZGluZywgcGF0aCAl c1xuIiwgZndfcGF0aCk7Ci0JZ3VjX2Z3X2ZldGNoKGRldiwgZ3VjX2Z3KTsKKwlpbnRlbF91Y19m d19mZXRjaChkZXYsIGd1Y19mdyk7CiAJLyogc3RhdHVzIG11c3Qgbm93IGJlIEZBSUwgb3IgU1VD Q0VTUyAqLwogfQogCkBAIC03ODAsMTcgKzc4MCwxNyBAQCB2b2lkIGludGVsX2d1Y19pbml0KHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpCiB2b2lkIGludGVsX2d1Y19maW5pKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkx NShkZXYpOwotCXN0cnVjdCBpbnRlbF9ndWNfZncgKmd1Y19mdyA9ICZkZXZfcHJpdi0+Z3VjLmd1 Y19mdzsKKwlzdHJ1Y3QgaW50ZWxfdWNfZncgKmd1Y19mdyA9ICZkZXZfcHJpdi0+Z3VjLmd1Y19m dzsKIAogCW11dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsKIAlndWNfaW50ZXJydXB0c19y ZWxlYXNlKGRldl9wcml2KTsKIAlpOTE1X2d1Y19zdWJtaXNzaW9uX2Rpc2FibGUoZGV2X3ByaXYp OwogCWk5MTVfZ3VjX3N1Ym1pc3Npb25fZmluaShkZXZfcHJpdik7CiAKLQlpZiAoZ3VjX2Z3LT5n dWNfZndfb2JqKQotCQlpOTE1X2dlbV9vYmplY3RfcHV0KGd1Y19mdy0+Z3VjX2Z3X29iaik7Ci0J Z3VjX2Z3LT5ndWNfZndfb2JqID0gTlVMTDsKKwlpZiAoZ3VjX2Z3LT51Y19md19vYmopCisJCWk5 MTVfZ2VtX29iamVjdF9wdXQoZ3VjX2Z3LT51Y19md19vYmopOworCWd1Y19mdy0+dWNfZndfb2Jq ID0gTlVMTDsKIAltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKIAotCWd1Y19mdy0+ Z3VjX2Z3X2ZldGNoX3N0YXR1cyA9IEdVQ19GSVJNV0FSRV9OT05FOworCWd1Y19mdy0+ZmV0Y2hf c3RhdHVzID0gVUNfRklSTVdBUkVfTk9ORTsKIH0KLS0gCjIuNy40CgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0Cklu dGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK