From mboxrd@z Thu Jan 1 00:00:00 1970 From: anushasr Subject: [PATCH 1/8] drm/i915/guc: Make the GuC fw loading helper functions general Date: Thu, 8 Dec 2016 15:02:12 -0800 Message-ID: <1481238139-9509-2-git-send-email-anusha.srivatsa@intel.com> References: <1481238139-9509-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 mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3E3826E890 for ; Thu, 8 Dec 2016 23:02:24 +0000 (UTC) In-Reply-To: <1481238139-9509-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 ZC4KdjExOiByZWJhc2VkLgp2MTI6IHJlYmFzZWQgb24gdG9wIG9mIGRybS10aXAKdjEzOiByZWJh c2VkLlVwZGF0ZWQgZGV2IHRvIGRldl9wcml2IGluIGludGVsX2d1Y19zZXR1cCgpLCBndWNfZndf Z2V0Y2goKQphbmQgaW50ZWxfZ3VjX2luaXQoKS4KClNpZ25lZC1vZmYtYnk6IEFudXNoYSBTcml2 YXRzYSA8YW51c2hhLnNyaXZhdHNhQGludGVsLmNvbT4KU2lnbmVkLW9mZi1ieTogQWxleCBEYWkg PHl1LmRhaUBpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IFBldGVyIEFudG9pbmUgPHBldGVyLmFu dG9pbmVAaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5j ICAgICAgICB8ICAxMiArLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Np b24uYyB8ICAgNCArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5jICAg IHwgMTU3ICsrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF91Yy5oICAgICAgICAgICAgfCAgNDAgKysrKy0tLS0KIDQgZmlsZXMgY2hhbmdlZCwg MTA4IGluc2VydGlvbnMoKyksIDEwNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZGVidWdmcy5jCmluZGV4IGE3NDYxMzAuLjBlNWVmNjIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZGVidWdmcy5jCkBAIC0yMzM4LDcgKzIzMzgsNyBAQCBzdGF0aWMgaW50IGk5MTVfbGxjKHN0cnVj dCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKIHN0YXRpYyBpbnQgaTkxNV9ndWNfbG9hZF9zdGF0 dXNfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCiB7CiAJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gbm9kZV90b19pOTE1KG0tPnByaXZhdGUpOwotCXN0cnVj dCBpbnRlbF9ndWNfZncgKmd1Y19mdyA9ICZkZXZfcHJpdi0+Z3VjLmd1Y19mdzsKKwlzdHJ1Y3Qg aW50ZWxfdWNfZncgKmd1Y19mdyA9ICZkZXZfcHJpdi0+Z3VjLmd1Y19mdzsKIAl1MzIgdG1wLCBp OwogCiAJaWYgKCFIQVNfR1VDX1VDT0RFKGRldl9wcml2KSkKQEAgLTIzNDYsMTUgKzIzNDYsMTUg QEAgc3RhdGljIGludCBpOTE1X2d1Y19sb2FkX3N0YXR1c19pbmZvKHN0cnVjdCBzZXFfZmlsZSAq bSwgdm9pZCAqZGF0YSkKIAogCXNlcV9wcmludGYobSwgIkd1QyBmaXJtd2FyZSBzdGF0dXM6XG4i KTsKIAlzZXFfcHJpbnRmKG0sICJcdHBhdGg6ICVzXG4iLAotCQlndWNfZnctPmd1Y19md19wYXRo KTsKKwkJZ3VjX2Z3LT51Y19md19wYXRoKTsKIAlzZXFfcHJpbnRmKG0sICJcdGZldGNoOiAlc1xu IiwKLQkJaW50ZWxfZ3VjX2Z3X3N0YXR1c19yZXByKGd1Y19mdy0+Z3VjX2Z3X2ZldGNoX3N0YXR1 cykpOworCQlpbnRlbF91Y19md19zdGF0dXNfcmVwcihndWNfZnctPmZldGNoX3N0YXR1cykpOwog CXNlcV9wcmludGYobSwgIlx0bG9hZDogJXNcbiIsCi0JCWludGVsX2d1Y19md19zdGF0dXNfcmVw cihndWNfZnctPmd1Y19md19sb2FkX3N0YXR1cykpOworCQlpbnRlbF91Y19md19zdGF0dXNfcmVw cihndWNfZnctPmxvYWRfc3RhdHVzKSk7CiAJc2VxX3ByaW50ZihtLCAiXHR2ZXJzaW9uIHdhbnRl ZDogJWQuJWRcbiIsCi0JCWd1Y19mdy0+Z3VjX2Z3X21ham9yX3dhbnRlZCwgZ3VjX2Z3LT5ndWNf ZndfbWlub3Jfd2FudGVkKTsKKwkJZ3VjX2Z3LT5tYWpvcl92ZXJfd2FudGVkLCBndWNfZnctPm1p bm9yX3Zlcl93YW50ZWQpOwogCXNlcV9wcmludGYobSwgIlx0dmVyc2lvbiBmb3VuZDogJWQuJWRc biIsCi0JCWd1Y19mdy0+Z3VjX2Z3X21ham9yX2ZvdW5kLCBndWNfZnctPmd1Y19md19taW5vcl9m b3VuZCk7CisJCWd1Y19mdy0+bWFqb3JfdmVyX2ZvdW5kLCBndWNfZnctPm1pbm9yX3Zlcl9mb3Vu ZCk7CiAJc2VxX3ByaW50ZihtLCAiXHRoZWFkZXI6IG9mZnNldCBpcyAlZDsgc2l6ZSA9ICVkXG4i LAogCQlndWNfZnctPmhlYWRlcl9vZmZzZXQsIGd1Y19mdy0+aGVhZGVyX3NpemUpOwogCXNlcV9w cmludGYobSwgIlx0dUNvZGU6IG9mZnNldCBpcyAlZDsgc2l6ZSA9ICVkXG4iLApkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jCmluZGV4IDdmYTRlNzQuLmUxNTZhNGIg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMKQEAgLTE0OTMs NyArMTQ5Myw3IEBAIGludCBpbnRlbF9ndWNfc3VzcGVuZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCiAJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eDsKIAl1MzIgZGF0YVsz XTsKIAotCWlmIChndWMtPmd1Y19mdy5ndWNfZndfbG9hZF9zdGF0dXMgIT0gR1VDX0ZJUk1XQVJF X1NVQ0NFU1MpCisJaWYgKGd1Yy0+Z3VjX2Z3LmxvYWRfc3RhdHVzICE9IFVDX0ZJUk1XQVJFX1NV Q0NFU1MpCiAJCXJldHVybiAwOwogCiAJZ2VuOV9kaXNhYmxlX2d1Y19pbnRlcnJ1cHRzKGRldl9w cml2KTsKQEAgLTE1MjAsNyArMTUyMCw3IEBAIGludCBpbnRlbF9ndWNfcmVzdW1lKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4 OwogCXUzMiBkYXRhWzNdOwogCi0JaWYgKGd1Yy0+Z3VjX2Z3Lmd1Y19md19sb2FkX3N0YXR1cyAh PSBHVUNfRklSTVdBUkVfU1VDQ0VTUykKKwlpZiAoZ3VjLT5ndWNfZncubG9hZF9zdGF0dXMgIT0g VUNfRklSTVdBUkVfU1VDQ0VTUykKIAkJcmV0dXJuIDA7CiAKIAlpZiAoaTkxNS5ndWNfbG9nX2xl dmVsID49IDApCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9h ZGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMKaW5kZXggMjFk YjY5Ny4uOGYwNGY2ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3Vj X2xvYWRlci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19sb2FkZXIuYwpA QCAtODEsMTYgKzgxLDE2IEBAIE1PRFVMRV9GSVJNV0FSRShJOTE1X0JYVF9HVUNfVUNPREUpOwog TU9EVUxFX0ZJUk1XQVJFKEk5MTVfS0JMX0dVQ19VQ09ERSk7CiAKIC8qIFVzZXItZnJpZW5kbHkg cmVwcmVzZW50YXRpb24gb2YgYW4gZW51bSAqLwotY29uc3QgY2hhciAqaW50ZWxfZ3VjX2Z3X3N0 YXR1c19yZXByKGVudW0gaW50ZWxfZ3VjX2Z3X3N0YXR1cyBzdGF0dXMpCitjb25zdCBjaGFyICpp bnRlbF91Y19md19zdGF0dXNfcmVwcihlbnVtIGludGVsX3VjX2Z3X3N0YXR1cyBzdGF0dXMpCiB7 CiAJc3dpdGNoIChzdGF0dXMpIHsKLQljYXNlIEdVQ19GSVJNV0FSRV9GQUlMOgorCWNhc2UgVUNf RklSTVdBUkVfRkFJTDoKIAkJcmV0dXJuICJGQUlMIjsKLQljYXNlIEdVQ19GSVJNV0FSRV9OT05F OgorCWNhc2UgVUNfRklSTVdBUkVfTk9ORToKIAkJcmV0dXJuICJOT05FIjsKLQljYXNlIEdVQ19G SVJNV0FSRV9QRU5ESU5HOgorCWNhc2UgVUNfRklSTVdBUkVfUEVORElORzoKIAkJcmV0dXJuICJQ RU5ESU5HIjsKLQljYXNlIEdVQ19GSVJNV0FSRV9TVUNDRVNTOgorCWNhc2UgVUNfRklSTVdBUkVf U1VDQ0VTUzoKIAkJcmV0dXJuICJTVUNDRVNTIjsKIAlkZWZhdWx0OgogCQlyZXR1cm4gIlVOS05P V04hIjsKQEAgLTI3OCw3ICsyNzgsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgZ3VjX3Vjb2RlX3Jl c3BvbnNlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIHN0YXRpYyBpbnQgZ3Vj X3Vjb2RlX3hmZXJfZG1hKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJCSAg ICAgIHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQogewotCXN0cnVjdCBpbnRlbF9ndWNfZncgKmd1Y19m dyA9ICZkZXZfcHJpdi0+Z3VjLmd1Y19mdzsKKwlzdHJ1Y3QgaW50ZWxfdWNfZncgKmd1Y19mdyA9 ICZkZXZfcHJpdi0+Z3VjLmd1Y19mdzsKIAl1bnNpZ25lZCBsb25nIG9mZnNldDsKIAlzdHJ1Y3Qg c2dfdGFibGUgKnNnID0gdm1hLT5wYWdlczsKIAl1MzIgc3RhdHVzLCByc2FbVU9TX1JTQV9TQ1JB VENIX01BWF9DT1VOVF07CkBAIC0zNTAsMTcgKzM1MCwxNyBAQCBzdGF0aWMgdTMyIGd1Y193b3Bj bV9zaXplKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKICAqLwogc3RhdGljIGlu dCBndWNfdWNvZGVfeGZlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7Ci0J c3RydWN0IGludGVsX2d1Y19mdyAqZ3VjX2Z3ID0gJmRldl9wcml2LT5ndWMuZ3VjX2Z3OworCXN0 cnVjdCBpbnRlbF91Y19mdyAqZ3VjX2Z3ID0gJmRldl9wcml2LT5ndWMuZ3VjX2Z3OwogCXN0cnVj dCBpOTE1X3ZtYSAqdm1hOwogCWludCByZXQ7CiAKLQlyZXQgPSBpOTE1X2dlbV9vYmplY3Rfc2V0 X3RvX2d0dF9kb21haW4oZ3VjX2Z3LT5ndWNfZndfb2JqLCBmYWxzZSk7CisJcmV0ID0gaTkxNV9n ZW1fb2JqZWN0X3NldF90b19ndHRfZG9tYWluKGd1Y19mdy0+dWNfZndfb2JqLCBmYWxzZSk7CiAJ aWYgKHJldCkgewogCQlEUk1fREVCVUdfRFJJVkVSKCJzZXQtZG9tYWluIGZhaWxlZCAlZFxuIiwg cmV0KTsKIAkJcmV0dXJuIHJldDsKIAl9CiAKLQl2bWEgPSBpOTE1X2dlbV9vYmplY3RfZ2d0dF9w aW4oZ3VjX2Z3LT5ndWNfZndfb2JqLCBOVUxMLCAwLCAwLCAwKTsKKwl2bWEgPSBpOTE1X2dlbV9v YmplY3RfZ2d0dF9waW4oZ3VjX2Z3LT51Y19md19vYmosIE5VTEwsIDAsIDAsIDApOwogCWlmIChJ U19FUlIodm1hKSkgewogCQlEUk1fREVCVUdfRFJJVkVSKCJwaW4gZmFpbGVkICVkXG4iLCAoaW50 KVBUUl9FUlIodm1hKSk7CiAJCXJldHVybiBQVFJfRVJSKHZtYSk7CkBAIC00NTAsMTQgKzQ1MCwx NCBAQCBzdGF0aWMgaW50IGd1Y19od19yZXNldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCiAgKi8KIGludCBpbnRlbF9ndWNfc2V0dXAoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQogewotCXN0cnVjdCBpbnRlbF9ndWNfZncgKmd1Y19mdyA9ICZkZXZfcHJpdi0+ Z3VjLmd1Y19mdzsKLQljb25zdCBjaGFyICpmd19wYXRoID0gZ3VjX2Z3LT5ndWNfZndfcGF0aDsK KwlzdHJ1Y3QgaW50ZWxfdWNfZncgKmd1Y19mdyA9ICZkZXZfcHJpdi0+Z3VjLmd1Y19mdzsKKwlj b25zdCBjaGFyICpmd19wYXRoID0gZ3VjX2Z3LT51Y19md19wYXRoOwogCWludCByZXRyaWVzLCBy ZXQsIGVycjsKIAogCURSTV9ERUJVR19EUklWRVIoIkd1QyBmdyBzdGF0dXM6IHBhdGggJXMsIGZl dGNoICVzLCBsb2FkICVzXG4iLAogCQlmd19wYXRoLAotCQlpbnRlbF9ndWNfZndfc3RhdHVzX3Jl cHIoZ3VjX2Z3LT5ndWNfZndfZmV0Y2hfc3RhdHVzKSwKLQkJaW50ZWxfZ3VjX2Z3X3N0YXR1c19y ZXByKGd1Y19mdy0+Z3VjX2Z3X2xvYWRfc3RhdHVzKSk7CisJCWludGVsX3VjX2Z3X3N0YXR1c19y ZXByKGd1Y19mdy0+ZmV0Y2hfc3RhdHVzKSwKKwkJaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIoZ3Vj X2Z3LT5sb2FkX3N0YXR1cykpOwogCiAJLyogTG9hZGluZyBmb3JiaWRkZW4sIG9yIG5vIGZpcm13 YXJlIHRvIGxvYWQ/ICovCiAJaWYgKCFpOTE1LmVuYWJsZV9ndWNfbG9hZGluZykgewpAQCAtNDc1 LDEwICs0NzUsMTAgQEAgaW50IGludGVsX2d1Y19zZXR1cChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCiAJfQogCiAJLyogRmV0Y2ggZmFpbGVkLCBvciBhbHJlYWR5IGZldGNoZWQg YnV0IGZhaWxlZCB0byBsb2FkPyAqLwotCWlmIChndWNfZnctPmd1Y19md19mZXRjaF9zdGF0dXMg IT0gR1VDX0ZJUk1XQVJFX1NVQ0NFU1MpIHsKKwlpZiAoZ3VjX2Z3LT5mZXRjaF9zdGF0dXMgIT0g VUNfRklSTVdBUkVfU1VDQ0VTUykgewogCQllcnIgPSAtRUlPOwogCQlnb3RvIGZhaWw7Ci0JfSBl bHNlIGlmIChndWNfZnctPmd1Y19md19sb2FkX3N0YXR1cyA9PSBHVUNfRklSTVdBUkVfRkFJTCkg eworCX0gZWxzZSBpZiAoZ3VjX2Z3LT5sb2FkX3N0YXR1cyA9PSBVQ19GSVJNV0FSRV9GQUlMKSB7 CiAJCWVyciA9IC1FTk9FWEVDOwogCQlnb3RvIGZhaWw7CiAJfQpAQCAtNDg2LDExICs0ODYsMTEg QEAgaW50IGludGVsX2d1Y19zZXR1cChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp CiAJZ3VjX2ludGVycnVwdHNfcmVsZWFzZShkZXZfcHJpdik7CiAJZ2VuOV9yZXNldF9ndWNfaW50 ZXJydXB0cyhkZXZfcHJpdik7CiAKLQlndWNfZnctPmd1Y19md19sb2FkX3N0YXR1cyA9IEdVQ19G SVJNV0FSRV9QRU5ESU5HOworCWd1Y19mdy0+bG9hZF9zdGF0dXMgPSBVQ19GSVJNV0FSRV9QRU5E SU5HOwogCiAJRFJNX0RFQlVHX0RSSVZFUigiR3VDIGZ3IHN0YXR1czogZmV0Y2ggJXMsIGxvYWQg JXNcbiIsCi0JCWludGVsX2d1Y19md19zdGF0dXNfcmVwcihndWNfZnctPmd1Y19md19mZXRjaF9z dGF0dXMpLAotCQlpbnRlbF9ndWNfZndfc3RhdHVzX3JlcHIoZ3VjX2Z3LT5ndWNfZndfbG9hZF9z dGF0dXMpKTsKKwkJaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIoZ3VjX2Z3LT5mZXRjaF9zdGF0dXMp LAorCQlpbnRlbF91Y19md19zdGF0dXNfcmVwcihndWNfZnctPmxvYWRfc3RhdHVzKSk7CiAKIAll cnIgPSBpOTE1X2d1Y19zdWJtaXNzaW9uX2luaXQoZGV2X3ByaXYpOwogCWlmIChlcnIpCkBAIC01 MjIsMTEgKzUyMiwxMSBAQCBpbnQgaW50ZWxfZ3VjX3NldHVwKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKIAkJCSAicmV0cnkgJWQgbW9yZSB0aW1lKHMpXG4iLCBlcnIsIHJldHJp ZXMpOwogCX0KIAotCWd1Y19mdy0+Z3VjX2Z3X2xvYWRfc3RhdHVzID0gR1VDX0ZJUk1XQVJFX1NV Q0NFU1M7CisJZ3VjX2Z3LT5sb2FkX3N0YXR1cyA9IFVDX0ZJUk1XQVJFX1NVQ0NFU1M7CiAKIAlE Uk1fREVCVUdfRFJJVkVSKCJHdUMgZncgc3RhdHVzOiBmZXRjaCAlcywgbG9hZCAlc1xuIiwKLQkJ aW50ZWxfZ3VjX2Z3X3N0YXR1c19yZXByKGd1Y19mdy0+Z3VjX2Z3X2ZldGNoX3N0YXR1cyksCi0J CWludGVsX2d1Y19md19zdGF0dXNfcmVwcihndWNfZnctPmd1Y19md19sb2FkX3N0YXR1cykpOwor CQlpbnRlbF91Y19md19zdGF0dXNfcmVwcihndWNfZnctPmZldGNoX3N0YXR1cyksCisJCWludGVs X3VjX2Z3X3N0YXR1c19yZXByKGd1Y19mdy0+bG9hZF9zdGF0dXMpKTsKIAogCWlmIChpOTE1LmVu YWJsZV9ndWNfc3VibWlzc2lvbikgewogCQlpZiAoaTkxNS5ndWNfbG9nX2xldmVsID49IDApCkBA IC01NDEsOCArNTQxLDggQEAgaW50IGludGVsX2d1Y19zZXR1cChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCiAJcmV0dXJuIDA7CiAKIGZhaWw6Ci0JaWYgKGd1Y19mdy0+Z3VjX2Z3 X2xvYWRfc3RhdHVzID09IEdVQ19GSVJNV0FSRV9QRU5ESU5HKQotCQlndWNfZnctPmd1Y19md19s b2FkX3N0YXR1cyA9IEdVQ19GSVJNV0FSRV9GQUlMOworCWlmIChndWNfZnctPmxvYWRfc3RhdHVz ID09IFVDX0ZJUk1XQVJFX1BFTkRJTkcpCisJCWd1Y19mdy0+bG9hZF9zdGF0dXMgPSBVQ19GSVJN V0FSRV9GQUlMOwogCiAJZ3VjX2ludGVycnVwdHNfcmVsZWFzZShkZXZfcHJpdik7CiAJaTkxNV9n dWNfc3VibWlzc2lvbl9kaXNhYmxlKGRldl9wcml2KTsKQEAgLTU4Nyw4ICs1ODcsOCBAQCBpbnQg aW50ZWxfZ3VjX3NldHVwKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAlyZXR1 cm4gcmV0OwogfQogCi1zdGF0aWMgdm9pZCBndWNfZndfZmV0Y2goc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LAotCQkJIHN0cnVjdCBpbnRlbF9ndWNfZncgKmd1Y19mdykKK3ZvaWQg aW50ZWxfdWNfZndfZmV0Y2goc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAorCQkJ IHN0cnVjdCBpbnRlbF91Y19mdyAqdWNfZncpCiB7CiAJc3RydWN0IHBjaV9kZXYgKnBkZXYgPSBk ZXZfcHJpdi0+ZHJtLnBkZXY7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKQEAg LTU5NywxNyArNTk3LDE3IEBAIHN0YXRpYyB2b2lkIGd1Y19md19mZXRjaChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJc2l6ZV90IHNpemU7CiAJaW50IGVycjsKIAotCURSTV9E RUJVR19EUklWRVIoImJlZm9yZSByZXF1ZXN0aW5nIGZpcm13YXJlOiBHdUMgZncgZmV0Y2ggc3Rh dHVzICVzXG4iLAotCQlpbnRlbF9ndWNfZndfc3RhdHVzX3JlcHIoZ3VjX2Z3LT5ndWNfZndfZmV0 Y2hfc3RhdHVzKSk7CisJRFJNX0RFQlVHX0RSSVZFUigiYmVmb3JlIHJlcXVlc3RpbmcgZmlybXdh cmU6IHVDIGZ3IGZldGNoIHN0YXR1cyAlc1xuIiwKKwkJaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIo dWNfZnctPmZldGNoX3N0YXR1cykpOwogCi0JZXJyID0gcmVxdWVzdF9maXJtd2FyZSgmZncsIGd1 Y19mdy0+Z3VjX2Z3X3BhdGgsICZwZGV2LT5kZXYpOworCWVyciA9IHJlcXVlc3RfZmlybXdhcmUo JmZ3LCB1Y19mdy0+dWNfZndfcGF0aCwgJnBkZXYtPmRldik7CiAJaWYgKGVycikKIAkJZ290byBm YWlsOwogCWlmICghZncpCiAJCWdvdG8gZmFpbDsKIAotCURSTV9ERUJVR19EUklWRVIoImZldGNo IEd1QyBmdyBmcm9tICVzIHN1Y2NlZWRlZCwgZncgJXBcbiIsCi0JCWd1Y19mdy0+Z3VjX2Z3X3Bh dGgsIGZ3KTsKKwlEUk1fREVCVUdfRFJJVkVSKCJmZXRjaCB1QyBmdyBmcm9tICVzIHN1Y2NlZWRl ZCwgZncgJXBcbiIsCisJCXVjX2Z3LT51Y19md19wYXRoLCBmdyk7CiAKIAkvKiBDaGVjayB0aGUg c2l6ZSBvZiB0aGUgYmxvYiBiZWZvcmUgZXhhbWluaW5nIGJ1ZmZlciBjb250ZW50cyAqLwogCWlm IChmdy0+c2l6ZSA8IHNpemVvZihzdHJ1Y3QgZ3VjX2Nzc19oZWFkZXIpKSB7CkBAIC02MTgsMzYg KzYxOCwzNiBAQCBzdGF0aWMgdm9pZCBndWNfZndfZmV0Y2goc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LAogCWNzcyA9IChzdHJ1Y3QgZ3VjX2Nzc19oZWFkZXIgKilmdy0+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 Z3VjX3dvcGNtX3NpemUoZGV2X3ByaXYpKSB7CiAJCURSTV9OT1RFKCJGaXJtd2FyZSBpcyB0b28g bGFyZ2UgdG8gZml0IGluIFdPUENNXG4iKTsKIAkJZ290byBmYWlsOwpAQCAtNjU5LDIxICs2NTks MjEgQEAgc3RhdGljIHZvaWQgZ3VjX2Z3X2ZldGNoKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwKIAkgKiBUV08gYnl0ZXMgZWFjaCAoaS5lLiB1MTYpLCBhbHRob3VnaCBhbGwgcG9p bnRlcnMgYW5kIG9mZnNldHMgYXJlIGRlZmluZWQKIAkgKiBpbiB0ZXJtcyBvZiBieXRlcyAodTgp LgogCSAqLwotCWd1Y19mdy0+Z3VjX2Z3X21ham9yX2ZvdW5kID0gY3NzLT5ndWNfc3dfdmVyc2lv biA+PiAxNjsKLQlndWNfZnctPmd1Y19md19taW5vcl9mb3VuZCA9IGNzcy0+Z3VjX3N3X3ZlcnNp b24gJiAweEZGRkY7Ci0KLQlpZiAoZ3VjX2Z3LT5ndWNfZndfbWFqb3JfZm91bmQgIT0gZ3VjX2Z3 LT5ndWNfZndfbWFqb3Jfd2FudGVkIHx8Ci0JICAgIGd1Y19mdy0+Z3VjX2Z3X21pbm9yX2ZvdW5k IDwgZ3VjX2Z3LT5ndWNfZndfbWlub3Jfd2FudGVkKSB7Ci0JCURSTV9OT1RFKCJHdUMgZmlybXdh cmUgdmVyc2lvbiAlZC4lZCwgcmVxdWlyZWQgJWQuJWRcbiIsCi0JCQlndWNfZnctPmd1Y19md19t YWpvcl9mb3VuZCwgZ3VjX2Z3LT5ndWNfZndfbWlub3JfZm91bmQsCi0JCQlndWNfZnctPmd1Y19m d19tYWpvcl93YW50ZWQsIGd1Y19mdy0+Z3VjX2Z3X21pbm9yX3dhbnRlZCk7CisJdWNfZnctPm1h am9yX3Zlcl9mb3VuZCA9IGNzcy0+Z3VjX3N3X3ZlcnNpb24gPj4gMTY7CisJdWNfZnctPm1pbm9y X3Zlcl9mb3VuZCA9IGNzcy0+Z3VjX3N3X3ZlcnNpb24gJiAweEZGRkY7CisKKwlpZiAodWNfZnct Pm1ham9yX3Zlcl9mb3VuZCAhPSB1Y19mdy0+bWFqb3JfdmVyX3dhbnRlZCB8fAorCSAgICB1Y19m dy0+bWlub3JfdmVyX2ZvdW5kIDwgdWNfZnctPm1pbm9yX3Zlcl93YW50ZWQpIHsKKwkJRFJNX05P VEUoInVDIGZpcm13YXJlIHZlcnNpb24gJWQuJWQsIHJlcXVpcmVkICVkLiVkXG4iLAorCQkJdWNf ZnctPm1ham9yX3Zlcl9mb3VuZCwgdWNfZnctPm1pbm9yX3Zlcl9mb3VuZCwKKwkJCXVjX2Z3LT5t YWpvcl92ZXJfd2FudGVkLCB1Y19mdy0+bWlub3JfdmVyX3dhbnRlZCk7CiAJCWVyciA9IC1FTk9F WEVDOwogCQlnb3RvIGZhaWw7CiAJfQogCiAJRFJNX0RFQlVHX0RSSVZFUigiZmlybXdhcmUgdmVy c2lvbiAlZC4lZCBPSyAobWluaW11bSAlZC4lZClcbiIsCi0JCQlndWNfZnctPmd1Y19md19tYWpv cl9mb3VuZCwgZ3VjX2Z3LT5ndWNfZndfbWlub3JfZm91bmQsCi0JCQlndWNfZnctPmd1Y19md19t YWpvcl93YW50ZWQsIGd1Y19mdy0+Z3VjX2Z3X21pbm9yX3dhbnRlZCk7CisJCQl1Y19mdy0+bWFq b3JfdmVyX2ZvdW5kLCB1Y19mdy0+bWlub3JfdmVyX2ZvdW5kLAorCQkJdWNfZnctPm1ham9yX3Zl cl93YW50ZWQsIHVjX2Z3LT5taW5vcl92ZXJfd2FudGVkKTsKIAogCW11dGV4X2xvY2soJmRldl9w cml2LT5kcm0uc3RydWN0X211dGV4KTsKIAlvYmogPSBpOTE1X2dlbV9vYmplY3RfY3JlYXRlX2Zy b21fZGF0YShkZXZfcHJpdiwgZnctPmRhdGEsIGZ3LT5zaXplKTsKQEAgLTY4MywzMSArNjgzLDMx IEBAIHN0YXRpYyB2b2lkIGd1Y19md19mZXRjaChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCiAJCWdvdG8gZmFpbDsKIAl9CiAKLQlndWNfZnctPmd1Y19md19vYmogPSBvYmo7Ci0J Z3VjX2Z3LT5ndWNfZndfc2l6ZSA9IGZ3LT5zaXplOworCXVjX2Z3LT51Y19md19vYmogPSBvYmo7 CisJdWNfZnctPnVjX2Z3X3NpemUgPSBmdy0+c2l6ZTsKIAotCURSTV9ERUJVR19EUklWRVIoIkd1 QyBmdyBmZXRjaCBzdGF0dXMgU1VDQ0VTUywgb2JqICVwXG4iLAotCQkJZ3VjX2Z3LT5ndWNfZndf b2JqKTsKKwlEUk1fREVCVUdfRFJJVkVSKCJ1QyBmdyBmZXRjaCBzdGF0dXMgU1VDQ0VTUywgb2Jq ICVwXG4iLAorCQkJdWNfZnctPnVjX2Z3X29iaik7CiAKIAlyZWxlYXNlX2Zpcm13YXJlKGZ3KTsK LQlndWNfZnctPmd1Y19md19mZXRjaF9zdGF0dXMgPSBHVUNfRklSTVdBUkVfU1VDQ0VTUzsKKwl1 Y19mdy0+ZmV0Y2hfc3RhdHVzID0gVUNfRklSTVdBUkVfU1VDQ0VTUzsKIAlyZXR1cm47CiAKIGZh aWw6Ci0JRFJNX1dBUk4oIkZhaWxlZCB0byBmZXRjaCB2YWxpZCBHdUMgZmlybXdhcmUgZnJvbSAl cyAoZXJyb3IgJWQpXG4iLAotCQkgZ3VjX2Z3LT5ndWNfZndfcGF0aCwgZXJyKTsKLQlEUk1fREVC VUdfRFJJVkVSKCJHdUMgZncgZmV0Y2ggc3RhdHVzIEZBSUw7IGVyciAlZCwgZncgJXAsIG9iaiAl cFxuIiwKLQkJZXJyLCBmdywgZ3VjX2Z3LT5ndWNfZndfb2JqKTsKKwlEUk1fV0FSTigiRmFpbGVk IHRvIGZldGNoIHZhbGlkIHVDIGZpcm13YXJlIGZyb20gJXMgKGVycm9yICVkKVxuIiwKKwkJIHVj X2Z3LT51Y19md19wYXRoLCBlcnIpOworCURSTV9ERUJVR19EUklWRVIoInVDIGZ3IGZldGNoIHN0 YXR1cyBGQUlMOyBlcnIgJWQsIGZ3ICVwLCBvYmogJXBcbiIsCisJCWVyciwgZncsIHVjX2Z3LT51 Y19md19vYmopOwogCiAJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXgpOwot CW9iaiA9IGd1Y19mdy0+Z3VjX2Z3X29iajsKKwlvYmogPSB1Y19mdy0+dWNfZndfb2JqOwogCWlm IChvYmopCiAJCWk5MTVfZ2VtX29iamVjdF9wdXQob2JqKTsKLQlndWNfZnctPmd1Y19md19vYmog PSBOVUxMOworCXVjX2Z3LT51Y19md19vYmogPSBOVUxMOwogCW11dGV4X3VubG9jaygmZGV2X3By aXYtPmRybS5zdHJ1Y3RfbXV0ZXgpOwogCiAJcmVsZWFzZV9maXJtd2FyZShmdyk7CQkvKiBPSyBl dmVuIGlmIGZ3IGlzIE5VTEwgKi8KLQlndWNfZnctPmd1Y19md19mZXRjaF9zdGF0dXMgPSBHVUNf RklSTVdBUkVfRkFJTDsKKwl1Y19mdy0+ZmV0Y2hfc3RhdHVzID0gVUNfRklSTVdBUkVfRkFJTDsK IH0KIAogLyoqCkBAIC03MjEsNyArNzIxLDcgQEAgc3RhdGljIHZvaWQgZ3VjX2Z3X2ZldGNoKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKICAqLwogdm9pZCBpbnRlbF9ndWNfaW5p dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7Ci0Jc3RydWN0IGludGVsX2d1 Y19mdyAqZ3VjX2Z3ID0gJmRldl9wcml2LT5ndWMuZ3VjX2Z3OworCXN0cnVjdCBpbnRlbF91Y19m dyAqZ3VjX2Z3ID0gJmRldl9wcml2LT5ndWMuZ3VjX2Z3OwogCWNvbnN0IGNoYXIgKmZ3X3BhdGg7 CiAKIAlpZiAoIUhBU19HVUMoZGV2X3ByaXYpKSB7CkBAIC03MzksMjMgKzczOSwyNCBAQCB2b2lk IGludGVsX2d1Y19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkJZndf cGF0aCA9IE5VTEw7CiAJfSBlbHNlIGlmIChJU19TS1lMQUtFKGRldl9wcml2KSkgewogCQlmd19w YXRoID0gSTkxNV9TS0xfR1VDX1VDT0RFOwotCQlndWNfZnctPmd1Y19md19tYWpvcl93YW50ZWQg PSBTS0xfRldfTUFKT1I7Ci0JCWd1Y19mdy0+Z3VjX2Z3X21pbm9yX3dhbnRlZCA9IFNLTF9GV19N SU5PUjsKKwkJZ3VjX2Z3LT5tYWpvcl92ZXJfd2FudGVkID0gU0tMX0ZXX01BSk9SOworCQlndWNf ZnctPm1pbm9yX3Zlcl93YW50ZWQgPSBTS0xfRldfTUlOT1I7CiAJfSBlbHNlIGlmIChJU19CUk9Y VE9OKGRldl9wcml2KSkgewogCQlmd19wYXRoID0gSTkxNV9CWFRfR1VDX1VDT0RFOwotCQlndWNf ZnctPmd1Y19md19tYWpvcl93YW50ZWQgPSBCWFRfRldfTUFKT1I7Ci0JCWd1Y19mdy0+Z3VjX2Z3 X21pbm9yX3dhbnRlZCA9IEJYVF9GV19NSU5PUjsKKwkJZ3VjX2Z3LT5tYWpvcl92ZXJfd2FudGVk ID0gQlhUX0ZXX01BSk9SOworCQlndWNfZnctPm1pbm9yX3Zlcl93YW50ZWQgPSBCWFRfRldfTUlO T1I7CiAJfSBlbHNlIGlmIChJU19LQUJZTEFLRShkZXZfcHJpdikpIHsKIAkJZndfcGF0aCA9IEk5 MTVfS0JMX0dVQ19VQ09ERTsKLQkJZ3VjX2Z3LT5ndWNfZndfbWFqb3Jfd2FudGVkID0gS0JMX0ZX X01BSk9SOwotCQlndWNfZnctPmd1Y19md19taW5vcl93YW50ZWQgPSBLQkxfRldfTUlOT1I7CisJ CWd1Y19mdy0+bWFqb3JfdmVyX3dhbnRlZCA9IEtCTF9GV19NQUpPUjsKKwkJZ3VjX2Z3LT5taW5v cl92ZXJfd2FudGVkID0gS0JMX0ZXX01JTk9SOwogCX0gZWxzZSB7CiAJCWZ3X3BhdGggPSAiIjsJ LyogdW5rbm93biBkZXZpY2UgKi8KIAl9CiAKLQlndWNfZnctPmd1Y19md19wYXRoID0gZndfcGF0 aDsKLQlndWNfZnctPmd1Y19md19mZXRjaF9zdGF0dXMgPSBHVUNfRklSTVdBUkVfTk9ORTsKLQln dWNfZnctPmd1Y19md19sb2FkX3N0YXR1cyA9IEdVQ19GSVJNV0FSRV9OT05FOworCWd1Y19mdy0+ dWNfZGV2ID0gJmRldl9wcml2LT5kcm07CisJZ3VjX2Z3LT51Y19md19wYXRoID0gZndfcGF0aDsK KwlndWNfZnctPmZldGNoX3N0YXR1cyA9IFVDX0ZJUk1XQVJFX05PTkU7CisJZ3VjX2Z3LT5sb2Fk X3N0YXR1cyA9IFVDX0ZJUk1XQVJFX05PTkU7CiAKIAkvKiBFYXJseSAoYW5kIHNpbGVudCkgcmV0 dXJuIGlmIEd1QyBsb2FkaW5nIGlzIGRpc2FibGVkICovCiAJaWYgKCFpOTE1LmVuYWJsZV9ndWNf bG9hZGluZykKQEAgLTc2NSw5ICs3NjYsOSBAQCB2b2lkIGludGVsX2d1Y19pbml0KHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAlpZiAoKmZ3X3BhdGggPT0gJ1wwJykKIAkJcmV0 dXJuOwogCi0JZ3VjX2Z3LT5ndWNfZndfZmV0Y2hfc3RhdHVzID0gR1VDX0ZJUk1XQVJFX1BFTkRJ Tkc7CisJZ3VjX2Z3LT5mZXRjaF9zdGF0dXMgPSBVQ19GSVJNV0FSRV9QRU5ESU5HOwogCURSTV9E RUJVR19EUklWRVIoIkd1QyBmaXJtd2FyZSBwZW5kaW5nLCBwYXRoICVzXG4iLCBmd19wYXRoKTsK LQlndWNfZndfZmV0Y2goZGV2X3ByaXYsIGd1Y19mdyk7CisJaW50ZWxfdWNfZndfZmV0Y2goZGV2 X3ByaXYsIGd1Y19mdyk7CiAJLyogc3RhdHVzIG11c3Qgbm93IGJlIEZBSUwgb3IgU1VDQ0VTUyAq LwogfQogCkBAIC03NzcsMTcgKzc3OCwxNyBAQCB2b2lkIGludGVsX2d1Y19pbml0KHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKICAqLwogdm9pZCBpbnRlbF9ndWNfZmluaShzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7Ci0Jc3RydWN0IGludGVsX2d1Y19mdyAq Z3VjX2Z3ID0gJmRldl9wcml2LT5ndWMuZ3VjX2Z3OworCXN0cnVjdCBpbnRlbF91Y19mdyAqZ3Vj X2Z3ID0gJmRldl9wcml2LT5ndWMuZ3VjX2Z3OwogCiAJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPmRy bS5zdHJ1Y3RfbXV0ZXgpOwogCWd1Y19pbnRlcnJ1cHRzX3JlbGVhc2UoZGV2X3ByaXYpOwogCWk5 MTVfZ3VjX3N1Ym1pc3Npb25fZGlzYWJsZShkZXZfcHJpdik7CiAJaTkxNV9ndWNfc3VibWlzc2lv bl9maW5pKGRldl9wcml2KTsKIAotCWlmIChndWNfZnctPmd1Y19md19vYmopCi0JCWk5MTVfZ2Vt X29iamVjdF9wdXQoZ3VjX2Z3LT5ndWNfZndfb2JqKTsKLQlndWNfZnctPmd1Y19md19vYmogPSBO VUxMOworCWlmIChndWNfZnctPnVjX2Z3X29iaikKKwkJaTkxNV9nZW1fb2JqZWN0X3B1dChndWNf ZnctPnVjX2Z3X29iaik7CisJZ3VjX2Z3LT51Y19md19vYmogPSBOVUxMOwogCW11dGV4X3VubG9j aygmZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXgpOwogCi0JZ3VjX2Z3LT5ndWNfZndfZmV0Y2hf c3RhdHVzID0gR1VDX0ZJUk1XQVJFX05PTkU7CisJZ3VjX2Z3LT5mZXRjaF9zdGF0dXMgPSBVQ19G SVJNV0FSRV9OT05FOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf dWMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VjLmgKaW5kZXggMTFmNTYwOC4uZjlm NTk4ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdWMuaAorKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91Yy5oCkBAIC05MSwyOSArOTEsMzEgQEAgc3RydWN0 IGk5MTVfZ3VjX2NsaWVudCB7CiAJdWludDY0X3Qgc3VibWlzc2lvbnNbSTkxNV9OVU1fRU5HSU5F U107CiB9OwogCi1lbnVtIGludGVsX2d1Y19md19zdGF0dXMgewotCUdVQ19GSVJNV0FSRV9GQUlM ID0gLTEsCi0JR1VDX0ZJUk1XQVJFX05PTkUgPSAwLAotCUdVQ19GSVJNV0FSRV9QRU5ESU5HLAot CUdVQ19GSVJNV0FSRV9TVUNDRVNTCitlbnVtIGludGVsX3VjX2Z3X3N0YXR1cyB7CisJVUNfRklS TVdBUkVfRkFJTCA9IC0xLAorCVVDX0ZJUk1XQVJFX05PTkUgPSAwLAorCVVDX0ZJUk1XQVJFX1BF TkRJTkcsCisJVUNfRklSTVdBUkVfU1VDQ0VTUwogfTsKIAogLyoKICAqIFRoaXMgc3RydWN0dXJl IGVuY2Fwc3VsYXRlcyBhbGwgdGhlIGRhdGEgbmVlZGVkIGR1cmluZyB0aGUgcHJvY2VzcwogICog b2YgZmV0Y2hpbmcsIGNhY2hpbmcsIGFuZCBsb2FkaW5nIHRoZSBmaXJtd2FyZSBpbWFnZSBpbnRv IHRoZSBHdUMuCiAgKi8KLXN0cnVjdCBpbnRlbF9ndWNfZncgewotCWNvbnN0IGNoYXIgKgkJCWd1 Y19md19wYXRoOwotCXNpemVfdAkJCQlndWNfZndfc2l6ZTsKLQlzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqCWd1Y19md19vYmo7Ci0JZW51bSBpbnRlbF9ndWNfZndfc3RhdHVzCWd1Y19md19m ZXRjaF9zdGF0dXM7Ci0JZW51bSBpbnRlbF9ndWNfZndfc3RhdHVzCWd1Y19md19sb2FkX3N0YXR1 czsKLQotCXVpbnQxNl90CQkJZ3VjX2Z3X21ham9yX3dhbnRlZDsKLQl1aW50MTZfdAkJCWd1Y19m d19taW5vcl93YW50ZWQ7Ci0JdWludDE2X3QJCQlndWNfZndfbWFqb3JfZm91bmQ7Ci0JdWludDE2 X3QJCQlndWNfZndfbWlub3JfZm91bmQ7Ci0KK3N0cnVjdCBpbnRlbF91Y19mdyB7CisJc3RydWN0 IGRybV9kZXZpY2UgKnVjX2RldjsKKwljb25zdCBjaGFyICp1Y19md19wYXRoOworCXNpemVfdCB1 Y19md19zaXplOworCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICp1Y19md19vYmo7CisJZW51 bSBpbnRlbF91Y19md19zdGF0dXMgZmV0Y2hfc3RhdHVzOworCWVudW0gaW50ZWxfdWNfZndfc3Rh dHVzIGxvYWRfc3RhdHVzOworCisJdWludDE2X3QgbWFqb3JfdmVyX3dhbnRlZDsKKwl1aW50MTZf dCBtaW5vcl92ZXJfd2FudGVkOworCXVpbnQxNl90IG1ham9yX3Zlcl9mb3VuZDsKKwl1aW50MTZf dCBtaW5vcl92ZXJfZm91bmQ7CisKKwl1aW50MzJfdCBmd190eXBlOwogCXVpbnQzMl90IGhlYWRl cl9zaXplOwogCXVpbnQzMl90IGhlYWRlcl9vZmZzZXQ7CiAJdWludDMyX3QgcnNhX3NpemU7CkBA IC0xMzksNyArMTQxLDcgQEAgc3RydWN0IGludGVsX2d1Y19sb2cgewogfTsKIAogc3RydWN0IGlu dGVsX2d1YyB7Ci0Jc3RydWN0IGludGVsX2d1Y19mdyBndWNfZnc7CisJc3RydWN0IGludGVsX3Vj X2Z3IGd1Y19mdzsKIAlzdHJ1Y3QgaW50ZWxfZ3VjX2xvZyBsb2c7CiAKIAkvKiBpbnRlbF9ndWNf cmVjdiBpbnRlcnJ1cHQgcmVsYXRlZCBzdGF0ZSAqLwpAQCAtMTgxLDcgKzE4Myw3IEBAIGludCBp bnRlbF9ndWNfbG9nX2NvbnRyb2woc3RydWN0IGludGVsX2d1YyAqZ3VjLCB1MzIgY29udHJvbF92 YWwpOwogZXh0ZXJuIHZvaWQgaW50ZWxfZ3VjX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KTsKIGV4dGVybiBpbnQgaW50ZWxfZ3VjX3NldHVwKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdik7CiBleHRlcm4gdm9pZCBpbnRlbF9ndWNfZmluaShzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwotZXh0ZXJuIGNvbnN0IGNoYXIgKmludGVsX2d1Y19m d19zdGF0dXNfcmVwcihlbnVtIGludGVsX2d1Y19md19zdGF0dXMgc3RhdHVzKTsKK2V4dGVybiBj b25zdCBjaGFyICppbnRlbF91Y19md19zdGF0dXNfcmVwcihlbnVtIGludGVsX3VjX2Z3X3N0YXR1 cyBzdGF0dXMpOwogZXh0ZXJuIGludCBpbnRlbF9ndWNfc3VzcGVuZChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpOwogZXh0ZXJuIGludCBpbnRlbF9ndWNfcmVzdW1lKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CiAKLS0gCjIuNy40CgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0Cklu dGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK