From mboxrd@z Thu Jan 1 00:00:00 1970 From: Peter Antoine Subject: [PATCH v7 1/6] drm/i915/guc: Make the GuC fw loading helper functions general Date: Fri, 2 Sep 2016 09:08:39 +0100 Message-ID: <1472803724-11803-2-git-send-email-peter.antoine@intel.com> References: <1472803724-11803-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 mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id DDB136EA29 for ; Fri, 2 Sep 2016 08:08:52 +0000 (UTC) In-Reply-To: <1472803724-11803-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 b24uCnY1OiByZWJhc2VkLgp2NzogcmViYXNlZC4KClNpZ25lZC1vZmYtYnk6IEFsZXggRGFpIDx5 dS5kYWlAaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBQZXRlciBBbnRvaW5lIDxwZXRlci5hbnRv aW5lQGludGVsLmNvbT4KUmV2aWV3ZWQtYnk6IERhdmUgR29yZG9uIDxkYXZpZC5zLmdvcmRvbkBp bnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgICAgICAg IHwgIDEyICstLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jIHwg ICA0ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWMuaCAgICAgICAgICAgfCAgMzkg KysrKy0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19sb2FkZXIuYyAgICB8IDE1 NiArKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQogNCBmaWxlcyBjaGFuZ2VkLCAxMDYgaW5z ZXJ0aW9ucygrKSwgMTA1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZGVidWdmcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2Zz LmMKaW5kZXggZDg5MzU5YS4uMzMyYTgzOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kZWJ1Z2ZzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2Zz LmMKQEAgLTI0MTYsNyArMjQxNiw3IEBAIHN0YXRpYyBpbnQgaTkxNV9sbGMoc3RydWN0IHNlcV9m aWxlICptLCB2b2lkICpkYXRhKQogc3RhdGljIGludCBpOTE1X2d1Y19sb2FkX3N0YXR1c19pbmZv KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSBub2RlX3RvX2k5MTUobS0+cHJpdmF0ZSk7Ci0Jc3RydWN0IGludGVs X2d1Y19mdyAqZ3VjX2Z3ID0gJmRldl9wcml2LT5ndWMuZ3VjX2Z3OworCXN0cnVjdCBpbnRlbF91 Y19mdyAqZ3VjX2Z3ID0gJmRldl9wcml2LT5ndWMuZ3VjX2Z3OwogCXUzMiB0bXAsIGk7CiAKIAlp ZiAoIUhBU19HVUNfVUNPREUoZGV2X3ByaXYpKQpAQCAtMjQyNCwxNSArMjQyNCwxNSBAQCBzdGF0 aWMgaW50IGk5MTVfZ3VjX2xvYWRfc3RhdHVzX2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lk ICpkYXRhKQogCiAJc2VxX3ByaW50ZihtLCAiR3VDIGZpcm13YXJlIHN0YXR1czpcbiIpOwogCXNl cV9wcmludGYobSwgIlx0cGF0aDogJXNcbiIsCi0JCWd1Y19mdy0+Z3VjX2Z3X3BhdGgpOworCQln dWNfZnctPnVjX2Z3X3BhdGgpOwogCXNlcV9wcmludGYobSwgIlx0ZmV0Y2g6ICVzXG4iLAotCQlp bnRlbF9ndWNfZndfc3RhdHVzX3JlcHIoZ3VjX2Z3LT5ndWNfZndfZmV0Y2hfc3RhdHVzKSk7CisJ CWludGVsX3VjX2Z3X3N0YXR1c19yZXByKGd1Y19mdy0+ZmV0Y2hfc3RhdHVzKSk7CiAJc2VxX3By aW50ZihtLCAiXHRsb2FkOiAlc1xuIiwKLQkJaW50ZWxfZ3VjX2Z3X3N0YXR1c19yZXByKGd1Y19m dy0+Z3VjX2Z3X2xvYWRfc3RhdHVzKSk7CisJCWludGVsX3VjX2Z3X3N0YXR1c19yZXByKGd1Y19m dy0+bG9hZF9zdGF0dXMpKTsKIAlzZXFfcHJpbnRmKG0sICJcdHZlcnNpb24gd2FudGVkOiAlZC4l ZFxuIiwKLQkJZ3VjX2Z3LT5ndWNfZndfbWFqb3Jfd2FudGVkLCBndWNfZnctPmd1Y19md19taW5v cl93YW50ZWQpOworCQlndWNfZnctPm1ham9yX3Zlcl93YW50ZWQsIGd1Y19mdy0+bWlub3JfdmVy X3dhbnRlZCk7CiAJc2VxX3ByaW50ZihtLCAiXHR2ZXJzaW9uIGZvdW5kOiAlZC4lZFxuIiwKLQkJ Z3VjX2Z3LT5ndWNfZndfbWFqb3JfZm91bmQsIGd1Y19mdy0+Z3VjX2Z3X21pbm9yX2ZvdW5kKTsK KwkJZ3VjX2Z3LT5tYWpvcl92ZXJfZm91bmQsIGd1Y19mdy0+bWlub3JfdmVyX2ZvdW5kKTsKIAlz ZXFfcHJpbnRmKG0sICJcdGhlYWRlcjogb2Zmc2V0IGlzICVkOyBzaXplID0gJWRcbiIsCiAJCWd1 Y19mdy0+aGVhZGVyX29mZnNldCwgZ3VjX2Z3LT5oZWFkZXJfc2l6ZSk7CiAJc2VxX3ByaW50Ziht LCAiXHR1Q29kZTogb2Zmc2V0IGlzICVkOyBzaXplID0gJWRcbiIsCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMKaW5kZXggMzI2OTlhNy4uYTNmODg5YSAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYwpAQCAtMTA1Nyw3ICsxMDU3 LDcgQEAgaW50IGludGVsX2d1Y19zdXNwZW5kKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJc3Ry dWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eDsKIAl1MzIgZGF0YVszXTsKIAotCWlmIChndWMtPmd1 Y19mdy5ndWNfZndfbG9hZF9zdGF0dXMgIT0gR1VDX0ZJUk1XQVJFX1NVQ0NFU1MpCisJaWYgKGd1 Yy0+Z3VjX2Z3LmxvYWRfc3RhdHVzICE9IFVDX0ZJUk1XQVJFX1NVQ0NFU1MpCiAJCXJldHVybiAw OwogCiAJY3R4ID0gZGV2X3ByaXYtPmtlcm5lbF9jb250ZXh0OwpAQCAtMTA4Myw3ICsxMDgzLDcg QEAgaW50IGludGVsX2d1Y19yZXN1bWUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAlzdHJ1Y3Qg aTkxNV9nZW1fY29udGV4dCAqY3R4OwogCXUzMiBkYXRhWzNdOwogCi0JaWYgKGd1Yy0+Z3VjX2Z3 Lmd1Y19md19sb2FkX3N0YXR1cyAhPSBHVUNfRklSTVdBUkVfU1VDQ0VTUykKKwlpZiAoZ3VjLT5n dWNfZncubG9hZF9zdGF0dXMgIT0gVUNfRklSTVdBUkVfU1VDQ0VTUykKIAkJcmV0dXJuIDA7CiAK IAljdHggPSBkZXZfcHJpdi0+a2VybmVsX2NvbnRleHQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9ndWMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5o CmluZGV4IGM5NzMyNjIuLjZhZDkzNmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2d1Yy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5oCkBAIC04 OSwyOSArODksMjkgQEAgc3RydWN0IGk5MTVfZ3VjX2NsaWVudCB7CiAJdWludDY0X3Qgc3VibWlz c2lvbnNbSTkxNV9OVU1fRU5HSU5FU107CiB9OwogCi1lbnVtIGludGVsX2d1Y19md19zdGF0dXMg ewotCUdVQ19GSVJNV0FSRV9GQUlMID0gLTEsCi0JR1VDX0ZJUk1XQVJFX05PTkUgPSAwLAotCUdV Q19GSVJNV0FSRV9QRU5ESU5HLAotCUdVQ19GSVJNV0FSRV9TVUNDRVNTCitlbnVtIGludGVsX3Vj X2Z3X3N0YXR1cyB7CisJVUNfRklSTVdBUkVfRkFJTCA9IC0xLAorCVVDX0ZJUk1XQVJFX05PTkUg PSAwLAorCVVDX0ZJUk1XQVJFX1BFTkRJTkcsCisJVUNfRklSTVdBUkVfU1VDQ0VTUwogfTsKIAog LyoKICAqIFRoaXMgc3RydWN0dXJlIGVuY2Fwc3VsYXRlcyBhbGwgdGhlIGRhdGEgbmVlZGVkIGR1 cmluZyB0aGUgcHJvY2VzcwogICogb2YgZmV0Y2hpbmcsIGNhY2hpbmcsIGFuZCBsb2FkaW5nIHRo ZSBmaXJtd2FyZSBpbWFnZSBpbnRvIHRoZSBHdUMuCiAgKi8KLXN0cnVjdCBpbnRlbF9ndWNfZncg ewotCXN0cnVjdCBkcm1fZGV2aWNlICoJCWd1Y19kZXY7Ci0JY29uc3QgY2hhciAqCQkJZ3VjX2Z3 X3BhdGg7Ci0Jc2l6ZV90CQkJCWd1Y19md19zaXplOwotCXN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0ICoJZ3VjX2Z3X29iajsKLQllbnVtIGludGVsX2d1Y19md19zdGF0dXMJZ3VjX2Z3X2ZldGNo X3N0YXR1czsKLQllbnVtIGludGVsX2d1Y19md19zdGF0dXMJZ3VjX2Z3X2xvYWRfc3RhdHVzOwot Ci0JdWludDE2X3QJCQlndWNfZndfbWFqb3Jfd2FudGVkOwotCXVpbnQxNl90CQkJZ3VjX2Z3X21p bm9yX3dhbnRlZDsKLQl1aW50MTZfdAkJCWd1Y19md19tYWpvcl9mb3VuZDsKLQl1aW50MTZfdAkJ CWd1Y19md19taW5vcl9mb3VuZDsKK3N0cnVjdCBpbnRlbF91Y19mdyB7CisJc3RydWN0IGRybV9k ZXZpY2UgKnVjX2RldjsKKwljb25zdCBjaGFyICp1Y19md19wYXRoOworCXNpemVfdCB1Y19md19z aXplOworCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICp1Y19md19vYmo7CisJZW51bSBpbnRl bF91Y19md19zdGF0dXMgZmV0Y2hfc3RhdHVzOworCWVudW0gaW50ZWxfdWNfZndfc3RhdHVzIGxv YWRfc3RhdHVzOworCisJdWludDE2X3QgbWFqb3JfdmVyX3dhbnRlZDsKKwl1aW50MTZfdCBtaW5v cl92ZXJfd2FudGVkOworCXVpbnQxNl90IG1ham9yX3Zlcl9mb3VuZDsKKwl1aW50MTZfdCBtaW5v cl92ZXJfZm91bmQ7CiAKIAl1aW50MzJfdCBoZWFkZXJfc2l6ZTsKIAl1aW50MzJfdCBoZWFkZXJf b2Zmc2V0OwpAQCAtMTIyLDcgKzEyMiw3IEBAIHN0cnVjdCBpbnRlbF9ndWNfZncgewogfTsKIAog c3RydWN0IGludGVsX2d1YyB7Ci0Jc3RydWN0IGludGVsX2d1Y19mdyBndWNfZnc7CisJc3RydWN0 IGludGVsX3VjX2Z3IGd1Y19mdzsKIAl1aW50MzJfdCBsb2dfZmxhZ3M7CiAJc3RydWN0IGk5MTVf dm1hICpsb2dfdm1hOwogCkBAIC0xNTAsOSArMTUwLDEwIEBAIHN0cnVjdCBpbnRlbF9ndWMgewog ZXh0ZXJuIHZvaWQgaW50ZWxfZ3VjX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CiBleHRl cm4gaW50IGludGVsX2d1Y19zZXR1cChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKIGV4dGVybiB2 b2lkIGludGVsX2d1Y19maW5pKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwotZXh0ZXJuIGNvbnN0 IGNoYXIgKmludGVsX2d1Y19md19zdGF0dXNfcmVwcihlbnVtIGludGVsX2d1Y19md19zdGF0dXMg c3RhdHVzKTsKK2V4dGVybiBjb25zdCBjaGFyICppbnRlbF91Y19md19zdGF0dXNfcmVwcihlbnVt IGludGVsX3VjX2Z3X3N0YXR1cyBzdGF0dXMpOwogZXh0ZXJuIGludCBpbnRlbF9ndWNfc3VzcGVu ZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKIGV4dGVybiBpbnQgaW50ZWxfZ3VjX3Jlc3VtZShz dHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKK3ZvaWQgaW50ZWxfdWNfZndfZmV0Y2goc3RydWN0IGRy bV9kZXZpY2UgKmRldiwgc3RydWN0IGludGVsX3VjX2Z3ICp1Y19mdyk7CiAKIC8qIGk5MTVfZ3Vj X3N1Ym1pc3Npb24uYyAqLwogaW50IGk5MTVfZ3VjX3N1Ym1pc3Npb25faW5pdChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZ3VjX2xvYWRlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xv YWRlci5jCmluZGV4IGU2N2Q4ZGUuLmY3M2NiNTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2d1Y19sb2FkZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9ndWNfbG9hZGVyLmMKQEAgLTgxLDE2ICs4MSwxNiBAQCBNT0RVTEVfRklSTVdBUkUoSTkxNV9C WFRfR1VDX1VDT0RFKTsKIE1PRFVMRV9GSVJNV0FSRShJOTE1X0tCTF9HVUNfVUNPREUpOwogCiAv KiBVc2VyLWZyaWVuZGx5IHJlcHJlc2VudGF0aW9uIG9mIGFuIGVudW0gKi8KLWNvbnN0IGNoYXIg KmludGVsX2d1Y19md19zdGF0dXNfcmVwcihlbnVtIGludGVsX2d1Y19md19zdGF0dXMgc3RhdHVz KQorY29uc3QgY2hhciAqaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIoZW51bSBpbnRlbF91Y19md19z dGF0dXMgc3RhdHVzKQogewogCXN3aXRjaCAoc3RhdHVzKSB7Ci0JY2FzZSBHVUNfRklSTVdBUkVf RkFJTDoKKwljYXNlIFVDX0ZJUk1XQVJFX0ZBSUw6CiAJCXJldHVybiAiRkFJTCI7Ci0JY2FzZSBH VUNfRklSTVdBUkVfTk9ORToKKwljYXNlIFVDX0ZJUk1XQVJFX05PTkU6CiAJCXJldHVybiAiTk9O RSI7Ci0JY2FzZSBHVUNfRklSTVdBUkVfUEVORElORzoKKwljYXNlIFVDX0ZJUk1XQVJFX1BFTkRJ Tkc6CiAJCXJldHVybiAiUEVORElORyI7Ci0JY2FzZSBHVUNfRklSTVdBUkVfU1VDQ0VTUzoKKwlj YXNlIFVDX0ZJUk1XQVJFX1NVQ0NFU1M6CiAJCXJldHVybiAiU1VDQ0VTUyI7CiAJZGVmYXVsdDoK IAkJcmV0dXJuICJVTktOT1dOISI7CkBAIC0yNTIsNyArMjUyLDcgQEAgc3RhdGljIGlubGluZSBi b29sIGd1Y191Y29kZV9yZXNwb25zZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs CiBzdGF0aWMgaW50IGd1Y191Y29kZV94ZmVyX2RtYShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsCiAJCQkgICAgICBzdHJ1Y3QgaTkxNV92bWEgKnZtYSkKIHsKLQlzdHJ1Y3QgaW50 ZWxfZ3VjX2Z3ICpndWNfZncgPSAmZGV2X3ByaXYtPmd1Yy5ndWNfZnc7CisJc3RydWN0IGludGVs X3VjX2Z3ICpndWNfZncgPSAmZGV2X3ByaXYtPmd1Yy5ndWNfZnc7CiAJdW5zaWduZWQgbG9uZyBv ZmZzZXQ7CiAJc3RydWN0IHNnX3RhYmxlICpzZyA9IHZtYS0+cGFnZXM7CiAJdTMyIHN0YXR1cywg cnNhW1VPU19SU0FfU0NSQVRDSF9NQVhfQ09VTlRdOwpAQCAtMzI0LDE4ICszMjQsMTggQEAgc3Rh dGljIHUzMiBndWNfd29wY21fc2l6ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp CiAgKi8KIHN0YXRpYyBpbnQgZ3VjX3Vjb2RlX3hmZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQogewotCXN0cnVjdCBpbnRlbF9ndWNfZncgKmd1Y19mdyA9ICZkZXZfcHJpdi0+ Z3VjLmd1Y19mdzsKKwlzdHJ1Y3QgaW50ZWxfdWNfZncgKmd1Y19mdyA9ICZkZXZfcHJpdi0+Z3Vj Lmd1Y19mdzsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gJmRldl9wcml2LT5kcm07CiAJc3Ry dWN0IGk5MTVfdm1hICp2bWE7CiAJaW50IHJldDsKIAotCXJldCA9IGk5MTVfZ2VtX29iamVjdF9z ZXRfdG9fZ3R0X2RvbWFpbihndWNfZnctPmd1Y19md19vYmosIGZhbHNlKTsKKwlyZXQgPSBpOTE1 X2dlbV9vYmplY3Rfc2V0X3RvX2d0dF9kb21haW4oZ3VjX2Z3LT51Y19md19vYmosIGZhbHNlKTsK IAlpZiAocmV0KSB7CiAJCURSTV9ERUJVR19EUklWRVIoInNldC1kb21haW4gZmFpbGVkICVkXG4i LCByZXQpOwogCQlyZXR1cm4gcmV0OwogCX0KIAotCXZtYSA9IGk5MTVfZ2VtX29iamVjdF9nZ3R0 X3BpbihndWNfZnctPmd1Y19md19vYmosIE5VTEwsIDAsIDAsIDApOworCXZtYSA9IGk5MTVfZ2Vt X29iamVjdF9nZ3R0X3BpbihndWNfZnctPnVjX2Z3X29iaiwgTlVMTCwgMCwgMCwgMCk7CiAJaWYg KElTX0VSUih2bWEpKSB7CiAJCURSTV9ERUJVR19EUklWRVIoInBpbiBmYWlsZWQgJWRcbiIsIChp bnQpUFRSX0VSUih2bWEpKTsKIAkJcmV0dXJuIFBUUl9FUlIodm1hKTsKQEAgLTQyOCwxNCArNDI4 LDE0IEBAIHN0YXRpYyBpbnQgaTkxNV9yZXNldF9ndWMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQogaW50IGludGVsX2d1Y19zZXR1cChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQog ewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKLQlz dHJ1Y3QgaW50ZWxfZ3VjX2Z3ICpndWNfZncgPSAmZGV2X3ByaXYtPmd1Yy5ndWNfZnc7Ci0JY29u c3QgY2hhciAqZndfcGF0aCA9IGd1Y19mdy0+Z3VjX2Z3X3BhdGg7CisJc3RydWN0IGludGVsX3Vj X2Z3ICpndWNfZncgPSAmZGV2X3ByaXYtPmd1Yy5ndWNfZnc7CisJY29uc3QgY2hhciAqZndfcGF0 aCA9IGd1Y19mdy0+dWNfZndfcGF0aDsKIAlpbnQgcmV0cmllcywgcmV0LCBlcnI7CiAKIAlEUk1f REVCVUdfRFJJVkVSKCJHdUMgZncgc3RhdHVzOiBwYXRoICVzLCBmZXRjaCAlcywgbG9hZCAlc1xu IiwKIAkJZndfcGF0aCwKLQkJaW50ZWxfZ3VjX2Z3X3N0YXR1c19yZXByKGd1Y19mdy0+Z3VjX2Z3 X2ZldGNoX3N0YXR1cyksCi0JCWludGVsX2d1Y19md19zdGF0dXNfcmVwcihndWNfZnctPmd1Y19m d19sb2FkX3N0YXR1cykpOworCQlpbnRlbF91Y19md19zdGF0dXNfcmVwcihndWNfZnctPmZldGNo X3N0YXR1cyksCisJCWludGVsX3VjX2Z3X3N0YXR1c19yZXByKGd1Y19mdy0+bG9hZF9zdGF0dXMp KTsKIAogCS8qIExvYWRpbmcgZm9yYmlkZGVuLCBvciBubyBmaXJtd2FyZSB0byBsb2FkPyAqLwog CWlmICghaTkxNS5lbmFibGVfZ3VjX2xvYWRpbmcpIHsKQEAgLTQ1MywyMSArNDUzLDIxIEBAIGlu dCBpbnRlbF9ndWNfc2V0dXAoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAl9CiAKIAkvKiBGZXRj aCBmYWlsZWQsIG9yIGFscmVhZHkgZmV0Y2hlZCBidXQgZmFpbGVkIHRvIGxvYWQ/ICovCi0JaWYg KGd1Y19mdy0+Z3VjX2Z3X2ZldGNoX3N0YXR1cyAhPSBHVUNfRklSTVdBUkVfU1VDQ0VTUykgewor CWlmIChndWNfZnctPmZldGNoX3N0YXR1cyAhPSBVQ19GSVJNV0FSRV9TVUNDRVNTKSB7CiAJCWVy ciA9IC1FSU87CiAJCWdvdG8gZmFpbDsKLQl9IGVsc2UgaWYgKGd1Y19mdy0+Z3VjX2Z3X2xvYWRf c3RhdHVzID09IEdVQ19GSVJNV0FSRV9GQUlMKSB7CisJfSBlbHNlIGlmIChndWNfZnctPmxvYWRf c3RhdHVzID09IFVDX0ZJUk1XQVJFX0ZBSUwpIHsKIAkJZXJyID0gLUVOT0VYRUM7CiAJCWdvdG8g ZmFpbDsKIAl9CiAKIAlkaXJlY3RfaW50ZXJydXB0c190b19ob3N0KGRldl9wcml2KTsKIAotCWd1 Y19mdy0+Z3VjX2Z3X2xvYWRfc3RhdHVzID0gR1VDX0ZJUk1XQVJFX1BFTkRJTkc7CisJZ3VjX2Z3 LT5sb2FkX3N0YXR1cyA9IFVDX0ZJUk1XQVJFX1BFTkRJTkc7CiAKIAlEUk1fREVCVUdfRFJJVkVS KCJHdUMgZncgc3RhdHVzOiBmZXRjaCAlcywgbG9hZCAlc1xuIiwKLQkJaW50ZWxfZ3VjX2Z3X3N0 YXR1c19yZXByKGd1Y19mdy0+Z3VjX2Z3X2ZldGNoX3N0YXR1cyksCi0JCWludGVsX2d1Y19md19z dGF0dXNfcmVwcihndWNfZnctPmd1Y19md19sb2FkX3N0YXR1cykpOworCQlpbnRlbF91Y19md19z dGF0dXNfcmVwcihndWNfZnctPmZldGNoX3N0YXR1cyksCisJCWludGVsX3VjX2Z3X3N0YXR1c19y ZXByKGd1Y19mdy0+bG9hZF9zdGF0dXMpKTsKIAogCWVyciA9IGk5MTVfZ3VjX3N1Ym1pc3Npb25f aW5pdChkZXZfcHJpdik7CiAJaWYgKGVycikKQEAgLTUwMSwxMSArNTAxLDExIEBAIGludCBpbnRl bF9ndWNfc2V0dXAoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAkJCSAicmV0cnkgJWQgbW9yZSB0 aW1lKHMpXG4iLCBlcnIsIHJldHJpZXMpOwogCX0KIAotCWd1Y19mdy0+Z3VjX2Z3X2xvYWRfc3Rh dHVzID0gR1VDX0ZJUk1XQVJFX1NVQ0NFU1M7CisJZ3VjX2Z3LT5sb2FkX3N0YXR1cyA9IFVDX0ZJ Uk1XQVJFX1NVQ0NFU1M7CiAKIAlEUk1fREVCVUdfRFJJVkVSKCJHdUMgZncgc3RhdHVzOiBmZXRj aCAlcywgbG9hZCAlc1xuIiwKLQkJaW50ZWxfZ3VjX2Z3X3N0YXR1c19yZXByKGd1Y19mdy0+Z3Vj X2Z3X2ZldGNoX3N0YXR1cyksCi0JCWludGVsX2d1Y19md19zdGF0dXNfcmVwcihndWNfZnctPmd1 Y19md19sb2FkX3N0YXR1cykpOworCQlpbnRlbF91Y19md19zdGF0dXNfcmVwcihndWNfZnctPmZl dGNoX3N0YXR1cyksCisJCWludGVsX3VjX2Z3X3N0YXR1c19yZXByKGd1Y19mdy0+bG9hZF9zdGF0 dXMpKTsKIAogCWlmIChpOTE1LmVuYWJsZV9ndWNfc3VibWlzc2lvbikgewogCQllcnIgPSBpOTE1 X2d1Y19zdWJtaXNzaW9uX2VuYWJsZShkZXZfcHJpdik7CkBAIC01MTcsOCArNTE3LDggQEAgaW50 IGludGVsX2d1Y19zZXR1cChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCXJldHVybiAwOwogCiBm YWlsOgotCWlmIChndWNfZnctPmd1Y19md19sb2FkX3N0YXR1cyA9PSBHVUNfRklSTVdBUkVfUEVO RElORykKLQkJZ3VjX2Z3LT5ndWNfZndfbG9hZF9zdGF0dXMgPSBHVUNfRklSTVdBUkVfRkFJTDsK KwlpZiAoZ3VjX2Z3LT5sb2FkX3N0YXR1cyA9PSBVQ19GSVJNV0FSRV9QRU5ESU5HKQorCQlndWNf ZnctPmxvYWRfc3RhdHVzID0gVUNfRklSTVdBUkVfRkFJTDsKIAogCWRpcmVjdF9pbnRlcnJ1cHRz X3RvX2hvc3QoZGV2X3ByaXYpOwogCWk5MTVfZ3VjX3N1Ym1pc3Npb25fZGlzYWJsZShkZXZfcHJp dik7CkBAIC01NjMsNyArNTYzLDcgQEAgZmFpbDoKIAlyZXR1cm4gcmV0OwogfQogCi1zdGF0aWMg dm9pZCBndWNfZndfZmV0Y2goc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGludGVsX2d1 Y19mdyAqZ3VjX2Z3KQordm9pZCBpbnRlbF91Y19md19mZXRjaChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LCBzdHJ1Y3QgaW50ZWxfdWNfZncgKnVjX2Z3KQogewogCXN0cnVjdCBwY2lfZGV2ICpwZGV2 ID0gZGV2LT5wZGV2OwogCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7CkBAIC01NzIs MTcgKzU3MiwxNyBAQCBzdGF0aWMgdm9pZCBndWNfZndfZmV0Y2goc3RydWN0IGRybV9kZXZpY2Ug KmRldiwgc3RydWN0IGludGVsX2d1Y19mdyAqZ3VjX2Z3KQogCXNpemVfdCBzaXplOwogCWludCBl cnI7CiAKLQlEUk1fREVCVUdfRFJJVkVSKCJiZWZvcmUgcmVxdWVzdGluZyBmaXJtd2FyZTogR3VD IGZ3IGZldGNoIHN0YXR1cyAlc1xuIiwKLQkJaW50ZWxfZ3VjX2Z3X3N0YXR1c19yZXByKGd1Y19m dy0+Z3VjX2Z3X2ZldGNoX3N0YXR1cykpOworCURSTV9ERUJVR19EUklWRVIoImJlZm9yZSByZXF1 ZXN0aW5nIGZpcm13YXJlOiB1QyBmdyBmZXRjaCBzdGF0dXMgJXNcbiIsCisJCWludGVsX3VjX2Z3 X3N0YXR1c19yZXByKHVjX2Z3LT5mZXRjaF9zdGF0dXMpKTsKIAotCWVyciA9IHJlcXVlc3RfZmly bXdhcmUoJmZ3LCBndWNfZnctPmd1Y19md19wYXRoLCAmcGRldi0+ZGV2KTsKKwllcnIgPSByZXF1 ZXN0X2Zpcm13YXJlKCZmdywgdWNfZnctPnVjX2Z3X3BhdGgsICZwZGV2LT5kZXYpOwogCWlmIChl cnIpCiAJCWdvdG8gZmFpbDsKIAlpZiAoIWZ3KQogCQlnb3RvIGZhaWw7CiAKLQlEUk1fREVCVUdf RFJJVkVSKCJmZXRjaCBHdUMgZncgZnJvbSAlcyBzdWNjZWVkZWQsIGZ3ICVwXG4iLAotCQlndWNf ZnctPmd1Y19md19wYXRoLCBmdyk7CisJRFJNX0RFQlVHX0RSSVZFUigiZmV0Y2ggdUMgZncgZnJv bSAlcyBzdWNjZWVkZWQsIGZ3ICVwXG4iLAorCQl1Y19mdy0+dWNfZndfcGF0aCwgZncpOwogCiAJ LyogQ2hlY2sgdGhlIHNpemUgb2YgdGhlIGJsb2IgYmVmb3JlIGV4YW1pbmluZyBidWZmZXIgY29u dGVudHMgKi8KIAlpZiAoZnctPnNpemUgPCBzaXplb2Yoc3RydWN0IGd1Y19jc3NfaGVhZGVyKSkg ewpAQCAtNTkzLDM2ICs1OTMsMzYgQEAgc3RhdGljIHZvaWQgZ3VjX2Z3X2ZldGNoKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsIHN0cnVjdCBpbnRlbF9ndWNfZncgKmd1Y19mdykKIAljc3MgPSAoc3Ry dWN0IGd1Y19jc3NfaGVhZGVyICopZnctPmRhdGE7CiAKIAkvKiBGaXJtd2FyZSBiaXRzIGFsd2F5 cyBzdGFydCBmcm9tIGhlYWRlciAqLwotCWd1Y19mdy0+aGVhZGVyX29mZnNldCA9IDA7Ci0JZ3Vj X2Z3LT5oZWFkZXJfc2l6ZSA9IChjc3MtPmhlYWRlcl9zaXplX2R3IC0gY3NzLT5tb2R1bHVzX3Np emVfZHcgLQorCXVjX2Z3LT5oZWFkZXJfb2Zmc2V0ID0gMDsKKwl1Y19mdy0+aGVhZGVyX3NpemUg PSAoY3NzLT5oZWFkZXJfc2l6ZV9kdyAtIGNzcy0+bW9kdWx1c19zaXplX2R3IC0KIAkJY3NzLT5r ZXlfc2l6ZV9kdyAtIGNzcy0+ZXhwb25lbnRfc2l6ZV9kdykgKiBzaXplb2YodTMyKTsKIAotCWlm IChndWNfZnctPmhlYWRlcl9zaXplICE9IHNpemVvZihzdHJ1Y3QgZ3VjX2Nzc19oZWFkZXIpKSB7 CisJaWYgKHVjX2Z3LT5oZWFkZXJfc2l6ZSAhPSBzaXplb2Yoc3RydWN0IGd1Y19jc3NfaGVhZGVy KSkgewogCQlEUk1fRVJST1IoIkNTUyBoZWFkZXIgZGVmaW5pdGlvbiBtaXNtYXRjaFxuIik7CiAJ CWdvdG8gZmFpbDsKIAl9CiAKIAkvKiB0aGVuLCB1Q29kZSAqLwotCWd1Y19mdy0+dWNvZGVfb2Zm c2V0ID0gZ3VjX2Z3LT5oZWFkZXJfb2Zmc2V0ICsgZ3VjX2Z3LT5oZWFkZXJfc2l6ZTsKLQlndWNf ZnctPnVjb2RlX3NpemUgPSAoY3NzLT5zaXplX2R3IC0gY3NzLT5oZWFkZXJfc2l6ZV9kdykgKiBz aXplb2YodTMyKTsKKwl1Y19mdy0+dWNvZGVfb2Zmc2V0ID0gdWNfZnctPmhlYWRlcl9vZmZzZXQg KyB1Y19mdy0+aGVhZGVyX3NpemU7CisJdWNfZnctPnVjb2RlX3NpemUgPSAoY3NzLT5zaXplX2R3 IC0gY3NzLT5oZWFkZXJfc2l6ZV9kdykgKiBzaXplb2YodTMyKTsKIAogCS8qIG5vdyBSU0EgKi8K IAlpZiAoY3NzLT5rZXlfc2l6ZV9kdyAhPSBVT1NfUlNBX1NDUkFUQ0hfTUFYX0NPVU5UKSB7CiAJ CURSTV9FUlJPUigiUlNBIGtleSBzaXplIGlzIGJhZFxuIik7CiAJCWdvdG8gZmFpbDsKIAl9Ci0J Z3VjX2Z3LT5yc2Ffb2Zmc2V0ID0gZ3VjX2Z3LT51Y29kZV9vZmZzZXQgKyBndWNfZnctPnVjb2Rl X3NpemU7Ci0JZ3VjX2Z3LT5yc2Ffc2l6ZSA9IGNzcy0+a2V5X3NpemVfZHcgKiBzaXplb2YodTMy KTsKKwl1Y19mdy0+cnNhX29mZnNldCA9IHVjX2Z3LT51Y29kZV9vZmZzZXQgKyB1Y19mdy0+dWNv ZGVfc2l6ZTsKKwl1Y19mdy0+cnNhX3NpemUgPSBjc3MtPmtleV9zaXplX2R3ICogc2l6ZW9mKHUz Mik7CiAKIAkvKiBBdCBsZWFzdCwgaXQgc2hvdWxkIGhhdmUgaGVhZGVyLCB1Q29kZSBhbmQgUlNB LiBTaXplIG9mIGFsbCB0aHJlZS4gKi8KLQlzaXplID0gZ3VjX2Z3LT5oZWFkZXJfc2l6ZSArIGd1 Y19mdy0+dWNvZGVfc2l6ZSArIGd1Y19mdy0+cnNhX3NpemU7CisJc2l6ZSA9IHVjX2Z3LT5oZWFk ZXJfc2l6ZSArIHVjX2Z3LT51Y29kZV9zaXplICsgdWNfZnctPnJzYV9zaXplOwogCWlmIChmdy0+ c2l6ZSA8IHNpemUpIHsKIAkJRFJNX0VSUk9SKCJNaXNzaW5nIGZpcm13YXJlIGNvbXBvbmVudHNc biIpOwogCQlnb3RvIGZhaWw7CiAJfQogCiAJLyogSGVhZGVyIGFuZCB1Q29kZSB3aWxsIGJlIGxv YWRlZCB0byBXT1BDTS4gU2l6ZSBvZiB0aGUgdHdvLiAqLwotCXNpemUgPSBndWNfZnctPmhlYWRl cl9zaXplICsgZ3VjX2Z3LT51Y29kZV9zaXplOworCXNpemUgPSB1Y19mdy0+aGVhZGVyX3NpemUg KyB1Y19mdy0+dWNvZGVfc2l6ZTsKIAlpZiAoc2l6ZSA+IGd1Y193b3BjbV9zaXplKHRvX2k5MTUo ZGV2KSkpIHsKIAkJRFJNX0VSUk9SKCJGaXJtd2FyZSBpcyB0b28gbGFyZ2UgdG8gZml0IGluIFdP UENNXG4iKTsKIAkJZ290byBmYWlsOwpAQCAtNjM0LDIxICs2MzQsMjEgQEAgc3RhdGljIHZvaWQg Z3VjX2Z3X2ZldGNoKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBpbnRlbF9ndWNfZncg Kmd1Y19mdykKIAkgKiBUV08gYnl0ZXMgZWFjaCAoaS5lLiB1MTYpLCBhbHRob3VnaCBhbGwgcG9p bnRlcnMgYW5kIG9mZnNldHMgYXJlIGRlZmluZWQKIAkgKiBpbiB0ZXJtcyBvZiBieXRlcyAodTgp LgogCSAqLwotCWd1Y19mdy0+Z3VjX2Z3X21ham9yX2ZvdW5kID0gY3NzLT5ndWNfc3dfdmVyc2lv biA+PiAxNjsKLQlndWNfZnctPmd1Y19md19taW5vcl9mb3VuZCA9IGNzcy0+Z3VjX3N3X3ZlcnNp b24gJiAweEZGRkY7Ci0KLQlpZiAoZ3VjX2Z3LT5ndWNfZndfbWFqb3JfZm91bmQgIT0gZ3VjX2Z3 LT5ndWNfZndfbWFqb3Jfd2FudGVkIHx8Ci0JICAgIGd1Y19mdy0+Z3VjX2Z3X21pbm9yX2ZvdW5k IDwgZ3VjX2Z3LT5ndWNfZndfbWlub3Jfd2FudGVkKSB7Ci0JCURSTV9FUlJPUigiR3VDIGZpcm13 YXJlIHZlcnNpb24gJWQuJWQsIHJlcXVpcmVkICVkLiVkXG4iLAotCQkJZ3VjX2Z3LT5ndWNfZndf bWFqb3JfZm91bmQsIGd1Y19mdy0+Z3VjX2Z3X21pbm9yX2ZvdW5kLAotCQkJZ3VjX2Z3LT5ndWNf ZndfbWFqb3Jfd2FudGVkLCBndWNfZnctPmd1Y19md19taW5vcl93YW50ZWQpOworCXVjX2Z3LT5t YWpvcl92ZXJfZm91bmQgPSBjc3MtPmd1Y19zd192ZXJzaW9uID4+IDE2OworCXVjX2Z3LT5taW5v cl92ZXJfZm91bmQgPSBjc3MtPmd1Y19zd192ZXJzaW9uICYgMHhGRkZGOworCisJaWYgKHVjX2Z3 LT5tYWpvcl92ZXJfZm91bmQgIT0gdWNfZnctPm1ham9yX3Zlcl93YW50ZWQgfHwKKwkgICAgdWNf ZnctPm1pbm9yX3Zlcl9mb3VuZCA8IHVjX2Z3LT5taW5vcl92ZXJfd2FudGVkKSB7CisJCURSTV9F UlJPUigidUMgZmlybXdhcmUgdmVyc2lvbiAlZC4lZCwgcmVxdWlyZWQgJWQuJWRcbiIsCisJCQl1 Y19mdy0+bWFqb3JfdmVyX2ZvdW5kLCB1Y19mdy0+bWlub3JfdmVyX2ZvdW5kLAorCQkJdWNfZnct Pm1ham9yX3Zlcl93YW50ZWQsIHVjX2Z3LT5taW5vcl92ZXJfd2FudGVkKTsKIAkJZXJyID0gLUVO T0VYRUM7CiAJCWdvdG8gZmFpbDsKIAl9CiAKIAlEUk1fREVCVUdfRFJJVkVSKCJmaXJtd2FyZSB2 ZXJzaW9uICVkLiVkIE9LIChtaW5pbXVtICVkLiVkKVxuIiwKLQkJCWd1Y19mdy0+Z3VjX2Z3X21h am9yX2ZvdW5kLCBndWNfZnctPmd1Y19md19taW5vcl9mb3VuZCwKLQkJCWd1Y19mdy0+Z3VjX2Z3 X21ham9yX3dhbnRlZCwgZ3VjX2Z3LT5ndWNfZndfbWlub3Jfd2FudGVkKTsKKwkJCXVjX2Z3LT5t YWpvcl92ZXJfZm91bmQsIHVjX2Z3LT5taW5vcl92ZXJfZm91bmQsCisJCQl1Y19mdy0+bWFqb3Jf dmVyX3dhbnRlZCwgdWNfZnctPm1pbm9yX3Zlcl93YW50ZWQpOwogCiAJbXV0ZXhfbG9jaygmZGV2 LT5zdHJ1Y3RfbXV0ZXgpOwogCW9iaiA9IGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfZnJvbV9kYXRh KGRldiwgZnctPmRhdGEsIGZ3LT5zaXplKTsKQEAgLTY1OCwzMSArNjU4LDMxIEBAIHN0YXRpYyB2 b2lkIGd1Y19md19mZXRjaChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgaW50ZWxfZ3Vj X2Z3ICpndWNfZncpCiAJCWdvdG8gZmFpbDsKIAl9CiAKLQlndWNfZnctPmd1Y19md19vYmogPSBv Ymo7Ci0JZ3VjX2Z3LT5ndWNfZndfc2l6ZSA9IGZ3LT5zaXplOworCXVjX2Z3LT51Y19md19vYmog PSBvYmo7CisJdWNfZnctPnVjX2Z3X3NpemUgPSBmdy0+c2l6ZTsKIAotCURSTV9ERUJVR19EUklW RVIoIkd1QyBmdyBmZXRjaCBzdGF0dXMgU1VDQ0VTUywgb2JqICVwXG4iLAotCQkJZ3VjX2Z3LT5n dWNfZndfb2JqKTsKKwlEUk1fREVCVUdfRFJJVkVSKCJ1QyBmdyBmZXRjaCBzdGF0dXMgU1VDQ0VT Uywgb2JqICVwXG4iLAorCQkJdWNfZnctPnVjX2Z3X29iaik7CiAKIAlyZWxlYXNlX2Zpcm13YXJl KGZ3KTsKLQlndWNfZnctPmd1Y19md19mZXRjaF9zdGF0dXMgPSBHVUNfRklSTVdBUkVfU1VDQ0VT UzsKKwl1Y19mdy0+ZmV0Y2hfc3RhdHVzID0gVUNfRklSTVdBUkVfU1VDQ0VTUzsKIAlyZXR1cm47 CiAKIGZhaWw6Ci0JRFJNX0RFQlVHX0RSSVZFUigiR3VDIGZ3IGZldGNoIHN0YXR1cyBGQUlMOyBl cnIgJWQsIGZ3ICVwLCBvYmogJXBcbiIsCi0JCWVyciwgZncsIGd1Y19mdy0+Z3VjX2Z3X29iaik7 Ci0JRFJNX0VSUk9SKCJGYWlsZWQgdG8gZmV0Y2ggR3VDIGZpcm13YXJlIGZyb20gJXMgKGVycm9y ICVkKVxuIiwKLQkJICBndWNfZnctPmd1Y19md19wYXRoLCBlcnIpOworCURSTV9ERUJVR19EUklW RVIoInVDIGZ3IGZldGNoIHN0YXR1cyBGQUlMOyBlcnIgJWQsIGZ3ICVwLCBvYmogJXBcbiIsCisJ CWVyciwgZncsIHVjX2Z3LT51Y19md19vYmopOworCURSTV9FUlJPUigiRmFpbGVkIHRvIGZldGNo IHVDIGZpcm13YXJlIGZyb20gJXMgKGVycm9yICVkKVxuIiwKKwkJICB1Y19mdy0+dWNfZndfcGF0 aCwgZXJyKTsKIAogCW11dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsKLQlvYmogPSBndWNf ZnctPmd1Y19md19vYmo7CisJb2JqID0gdWNfZnctPnVjX2Z3X29iajsKIAlpZiAob2JqKQogCQlp OTE1X2dlbV9vYmplY3RfcHV0KG9iaik7Ci0JZ3VjX2Z3LT5ndWNfZndfb2JqID0gTlVMTDsKKwl1 Y19mdy0+dWNfZndfb2JqID0gTlVMTDsKIAltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4 KTsKIAogCXJlbGVhc2VfZmlybXdhcmUoZncpOwkJLyogT0sgZXZlbiBpZiBmdyBpcyBOVUxMICov Ci0JZ3VjX2Z3LT5ndWNfZndfZmV0Y2hfc3RhdHVzID0gR1VDX0ZJUk1XQVJFX0ZBSUw7CisJdWNf ZnctPmZldGNoX3N0YXR1cyA9IFVDX0ZJUk1XQVJFX0ZBSUw7CiB9CiAKIC8qKgpAQCAtNjk3LDcg KzY5Nyw3IEBAIGZhaWw6CiB2b2lkIGludGVsX2d1Y19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYp OwotCXN0cnVjdCBpbnRlbF9ndWNfZncgKmd1Y19mdyA9ICZkZXZfcHJpdi0+Z3VjLmd1Y19mdzsK KwlzdHJ1Y3QgaW50ZWxfdWNfZncgKmd1Y19mdyA9ICZkZXZfcHJpdi0+Z3VjLmd1Y19mdzsKIAlj b25zdCBjaGFyICpmd19wYXRoOwogCiAJLyogQSBuZWdhdGl2ZSB2YWx1ZSBtZWFucyAidXNlIHBs YXRmb3JtIGRlZmF1bHQiICovCkBAIC03MTAsMjQgKzcxMCwyNCBAQCB2b2lkIGludGVsX2d1Y19p bml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJCWZ3X3BhdGggPSBOVUxMOwogCX0gZWxzZSBp ZiAoSVNfU0tZTEFLRShkZXYpKSB7CiAJCWZ3X3BhdGggPSBJOTE1X1NLTF9HVUNfVUNPREU7Ci0J CWd1Y19mdy0+Z3VjX2Z3X21ham9yX3dhbnRlZCA9IFNLTF9GV19NQUpPUjsKLQkJZ3VjX2Z3LT5n dWNfZndfbWlub3Jfd2FudGVkID0gU0tMX0ZXX01JTk9SOworCQlndWNfZnctPm1ham9yX3Zlcl93 YW50ZWQgPSBTS0xfRldfTUFKT1I7CisJCWd1Y19mdy0+bWlub3JfdmVyX3dhbnRlZCA9IFNLTF9G V19NSU5PUjsKIAl9IGVsc2UgaWYgKElTX0JST1hUT04oZGV2KSkgewogCQlmd19wYXRoID0gSTkx NV9CWFRfR1VDX1VDT0RFOwotCQlndWNfZnctPmd1Y19md19tYWpvcl93YW50ZWQgPSBCWFRfRldf TUFKT1I7Ci0JCWd1Y19mdy0+Z3VjX2Z3X21pbm9yX3dhbnRlZCA9IEJYVF9GV19NSU5PUjsKKwkJ Z3VjX2Z3LT5tYWpvcl92ZXJfd2FudGVkID0gQlhUX0ZXX01BSk9SOworCQlndWNfZnctPm1pbm9y X3Zlcl93YW50ZWQgPSBCWFRfRldfTUlOT1I7CiAJfSBlbHNlIGlmIChJU19LQUJZTEFLRShkZXYp KSB7CiAJCWZ3X3BhdGggPSBJOTE1X0tCTF9HVUNfVUNPREU7Ci0JCWd1Y19mdy0+Z3VjX2Z3X21h am9yX3dhbnRlZCA9IEtCTF9GV19NQUpPUjsKLQkJZ3VjX2Z3LT5ndWNfZndfbWlub3Jfd2FudGVk ID0gS0JMX0ZXX01JTk9SOworCQlndWNfZnctPm1ham9yX3Zlcl93YW50ZWQgPSBLQkxfRldfTUFK T1I7CisJCWd1Y19mdy0+bWlub3JfdmVyX3dhbnRlZCA9IEtCTF9GV19NSU5PUjsKIAl9IGVsc2Ug ewogCQlmd19wYXRoID0gIiI7CS8qIHVua25vd24gZGV2aWNlICovCiAJfQogCi0JZ3VjX2Z3LT5n dWNfZGV2ID0gZGV2OwotCWd1Y19mdy0+Z3VjX2Z3X3BhdGggPSBmd19wYXRoOwotCWd1Y19mdy0+ Z3VjX2Z3X2ZldGNoX3N0YXR1cyA9IEdVQ19GSVJNV0FSRV9OT05FOwotCWd1Y19mdy0+Z3VjX2Z3 X2xvYWRfc3RhdHVzID0gR1VDX0ZJUk1XQVJFX05PTkU7CisJZ3VjX2Z3LT51Y19kZXYgPSBkZXY7 CisJZ3VjX2Z3LT51Y19md19wYXRoID0gZndfcGF0aDsKKwlndWNfZnctPmZldGNoX3N0YXR1cyA9 IFVDX0ZJUk1XQVJFX05PTkU7CisJZ3VjX2Z3LT5sb2FkX3N0YXR1cyA9IFVDX0ZJUk1XQVJFX05P TkU7CiAKIAkvKiBFYXJseSAoYW5kIHNpbGVudCkgcmV0dXJuIGlmIEd1QyBsb2FkaW5nIGlzIGRp c2FibGVkICovCiAJaWYgKCFpOTE1LmVuYWJsZV9ndWNfbG9hZGluZykKQEAgLTczNyw5ICs3Mzcs OSBAQCB2b2lkIGludGVsX2d1Y19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJaWYgKCpm d19wYXRoID09ICdcMCcpCiAJCXJldHVybjsKIAotCWd1Y19mdy0+Z3VjX2Z3X2ZldGNoX3N0YXR1 cyA9IEdVQ19GSVJNV0FSRV9QRU5ESU5HOworCWd1Y19mdy0+ZmV0Y2hfc3RhdHVzID0gVUNfRklS TVdBUkVfUEVORElORzsKIAlEUk1fREVCVUdfRFJJVkVSKCJHdUMgZmlybXdhcmUgcGVuZGluZywg cGF0aCAlc1xuIiwgZndfcGF0aCk7Ci0JZ3VjX2Z3X2ZldGNoKGRldiwgZ3VjX2Z3KTsKKwlpbnRl bF91Y19md19mZXRjaChkZXYsIGd1Y19mdyk7CiAJLyogc3RhdHVzIG11c3Qgbm93IGJlIEZBSUwg b3IgU1VDQ0VTUyAqLwogfQogCkBAIC03NTAsMTcgKzc1MCwxNyBAQCB2b2lkIGludGVsX2d1Y19p bml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiB2b2lkIGludGVsX2d1Y19maW5pKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g dG9faTkxNShkZXYpOwotCXN0cnVjdCBpbnRlbF9ndWNfZncgKmd1Y19mdyA9ICZkZXZfcHJpdi0+ Z3VjLmd1Y19mdzsKKwlzdHJ1Y3QgaW50ZWxfdWNfZncgKmd1Y19mdyA9ICZkZXZfcHJpdi0+Z3Vj Lmd1Y19mdzsKIAogCW11dGV4X2xvY2soJmRldi0+c3RydWN0X211dGV4KTsKIAlkaXJlY3RfaW50 ZXJydXB0c190b19ob3N0KGRldl9wcml2KTsKIAlpOTE1X2d1Y19zdWJtaXNzaW9uX2Rpc2FibGUo ZGV2X3ByaXYpOwogCWk5MTVfZ3VjX3N1Ym1pc3Npb25fZmluaShkZXZfcHJpdik7CiAKLQlpZiAo Z3VjX2Z3LT5ndWNfZndfb2JqKQotCQlpOTE1X2dlbV9vYmplY3RfcHV0KGd1Y19mdy0+Z3VjX2Z3 X29iaik7Ci0JZ3VjX2Z3LT5ndWNfZndfb2JqID0gTlVMTDsKKwlpZiAoZ3VjX2Z3LT51Y19md19v YmopCisJCWk5MTVfZ2VtX29iamVjdF9wdXQoZ3VjX2Z3LT51Y19md19vYmopOworCWd1Y19mdy0+ dWNfZndfb2JqID0gTlVMTDsKIAltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKIAot CWd1Y19mdy0+Z3VjX2Z3X2ZldGNoX3N0YXR1cyA9IEdVQ19GSVJNV0FSRV9OT05FOworCWd1Y19m dy0+ZmV0Y2hfc3RhdHVzID0gVUNfRklSTVdBUkVfTk9ORTsKIH0KLS0gCjEuOS4xCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGlu ZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK