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, 15 Dec 2016 14:29:43 -0800 Message-ID: <1481840990-31191-2-git-send-email-anusha.srivatsa@intel.com> References: <1481840990-31191-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 mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id 96C666E0F7 for ; Thu, 15 Dec 2016 22:29:52 +0000 (UTC) In-Reply-To: <1481840990-31191-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 Z2V0Y2goKQphbmQgaW50ZWxfZ3VjX2luaXQoKS4KdjE0OiByZWJhc2VkLiBSZW1vdmUgdWludDMy X3QgZndfdHlwZSB0byBwYXRjaCAyLiBBZGQgSU5URUxfIHByZWZpeCBmb3IKZmllbGRzIGluIGVu dW0gaW50ZWxfdWNfZndfc3RhdHVzLiBSZW1vdmUgdWNfZGV2IGZpZWxkIHNpbmNlIGl0cyBuZXZl cgp1c2VkLlJlbmFtZSB1Y19mdyB0byBqdXN0IGZ3IGFuZCBndWNfZncgdG8gZncgdG8gYXZvaWQg cmVkdW5kZW5jeS4KClNpZ25lZC1vZmYtYnk6IEFudXNoYSBTcml2YXRzYSA8YW51c2hhLnNyaXZh dHNhQGludGVsLmNvbT4KU2lnbmVkLW9mZi1ieTogQWxleCBEYWkgPHl1LmRhaUBpbnRlbC5jb20+ ClNpZ25lZC1vZmYtYnk6IFBldGVyIEFudG9pbmUgPHBldGVyLmFudG9pbmVAaW50ZWwuY29tPgot LS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jICAgICAgICB8ICAxMiArLS0K IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYyB8ICAgNCArLQogZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5jICAgIHwgMTU3ICsrKysrKysrKysr KysrKy0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91Yy5oICAgICAg ICAgICAgfCAgMzYgKysrLS0tLQogNCBmaWxlcyBjaGFuZ2VkLCAxMDUgaW5zZXJ0aW9ucygrKSwg MTA0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZGVidWdmcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKaW5kZXggMTVk ZWIyYi4uMDA4YWZlNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1 Z2ZzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKQEAgLTIzMjgs NyArMjMyOCw3IEBAIHN0YXRpYyBpbnQgaTkxNV9sbGMoc3RydWN0IHNlcV9maWxlICptLCB2b2lk ICpkYXRhKQogc3RhdGljIGludCBpOTE1X2d1Y19sb2FkX3N0YXR1c19pbmZvKHN0cnVjdCBzZXFf ZmlsZSAqbSwgdm9pZCAqZGF0YSkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSBub2RlX3RvX2k5MTUobS0+cHJpdmF0ZSk7Ci0Jc3RydWN0IGludGVsX2d1Y19mdyAqZ3Vj X2Z3ID0gJmRldl9wcml2LT5ndWMuZ3VjX2Z3OworCXN0cnVjdCBpbnRlbF91Y19mdyAqZ3VjX2Z3 ID0gJmRldl9wcml2LT5ndWMuZnc7CiAJdTMyIHRtcCwgaTsKIAogCWlmICghSEFTX0dVQ19VQ09E RShkZXZfcHJpdikpCkBAIC0yMzM2LDE1ICsyMzM2LDE1IEBAIHN0YXRpYyBpbnQgaTkxNV9ndWNf bG9hZF9zdGF0dXNfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCiAKIAlzZXFf cHJpbnRmKG0sICJHdUMgZmlybXdhcmUgc3RhdHVzOlxuIik7CiAJc2VxX3ByaW50ZihtLCAiXHRw YXRoOiAlc1xuIiwKLQkJZ3VjX2Z3LT5ndWNfZndfcGF0aCk7CisJCWd1Y19mdy0+dWNfZndfcGF0 aCk7CiAJc2VxX3ByaW50ZihtLCAiXHRmZXRjaDogJXNcbiIsCi0JCWludGVsX2d1Y19md19zdGF0 dXNfcmVwcihndWNfZnctPmd1Y19md19mZXRjaF9zdGF0dXMpKTsKKwkJaW50ZWxfdWNfZndfc3Rh dHVzX3JlcHIoZ3VjX2Z3LT5mZXRjaF9zdGF0dXMpKTsKIAlzZXFfcHJpbnRmKG0sICJcdGxvYWQ6 ICVzXG4iLAotCQlpbnRlbF9ndWNfZndfc3RhdHVzX3JlcHIoZ3VjX2Z3LT5ndWNfZndfbG9hZF9z dGF0dXMpKTsKKwkJaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIoZ3VjX2Z3LT5sb2FkX3N0YXR1cykp OwogCXNlcV9wcmludGYobSwgIlx0dmVyc2lvbiB3YW50ZWQ6ICVkLiVkXG4iLAotCQlndWNfZnct Pmd1Y19md19tYWpvcl93YW50ZWQsIGd1Y19mdy0+Z3VjX2Z3X21pbm9yX3dhbnRlZCk7CisJCWd1 Y19mdy0+bWFqb3JfdmVyX3dhbnRlZCwgZ3VjX2Z3LT5taW5vcl92ZXJfd2FudGVkKTsKIAlzZXFf cHJpbnRmKG0sICJcdHZlcnNpb24gZm91bmQ6ICVkLiVkXG4iLAotCQlndWNfZnctPmd1Y19md19t YWpvcl9mb3VuZCwgZ3VjX2Z3LT5ndWNfZndfbWlub3JfZm91bmQpOworCQlndWNfZnctPm1ham9y X3Zlcl9mb3VuZCwgZ3VjX2Z3LT5taW5vcl92ZXJfZm91bmQpOwogCXNlcV9wcmludGYobSwgIlx0 aGVhZGVyOiBvZmZzZXQgaXMgJWQ7IHNpemUgPSAlZFxuIiwKIAkJZ3VjX2Z3LT5oZWFkZXJfb2Zm c2V0LCBndWNfZnctPmhlYWRlcl9zaXplKTsKIAlzZXFfcHJpbnRmKG0sICJcdHVDb2RlOiBvZmZz ZXQgaXMgJWQ7IHNpemUgPSAlZFxuIiwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1 Ym1pc3Npb24uYwppbmRleCA3ZmE0ZTc0Li5iOGFkOGZmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jCkBAIC0xNDkzLDcgKzE0OTMsNyBAQCBpbnQgaW50ZWxf Z3VjX3N1c3BlbmQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCXN0cnVjdCBp OTE1X2dlbV9jb250ZXh0ICpjdHg7CiAJdTMyIGRhdGFbM107CiAKLQlpZiAoZ3VjLT5ndWNfZncu Z3VjX2Z3X2xvYWRfc3RhdHVzICE9IEdVQ19GSVJNV0FSRV9TVUNDRVNTKQorCWlmIChndWMtPmZ3 LmxvYWRfc3RhdHVzICE9IElOVEVMX1VDX0ZJUk1XQVJFX1NVQ0NFU1MpCiAJCXJldHVybiAwOwog CiAJZ2VuOV9kaXNhYmxlX2d1Y19pbnRlcnJ1cHRzKGRldl9wcml2KTsKQEAgLTE1MjAsNyArMTUy MCw3IEBAIGludCBpbnRlbF9ndWNfcmVzdW1lKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKIAlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4OwogCXUzMiBkYXRhWzNdOwogCi0J aWYgKGd1Yy0+Z3VjX2Z3Lmd1Y19md19sb2FkX3N0YXR1cyAhPSBHVUNfRklSTVdBUkVfU1VDQ0VT UykKKwlpZiAoZ3VjLT5mdy5sb2FkX3N0YXR1cyAhPSBJTlRFTF9VQ19GSVJNV0FSRV9TVUNDRVNT KQogCQlyZXR1cm4gMDsKIAogCWlmIChpOTE1Lmd1Y19sb2dfbGV2ZWwgPj0gMCkKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19sb2FkZXIuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2d1Y19sb2FkZXIuYwppbmRleCAyMWRiNjk3Li45YjNkYmVhIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5jCkBAIC04MSwxNiArODEsMTYgQEAg TU9EVUxFX0ZJUk1XQVJFKEk5MTVfQlhUX0dVQ19VQ09ERSk7CiBNT0RVTEVfRklSTVdBUkUoSTkx NV9LQkxfR1VDX1VDT0RFKTsKIAogLyogVXNlci1mcmllbmRseSByZXByZXNlbnRhdGlvbiBvZiBh biBlbnVtICovCi1jb25zdCBjaGFyICppbnRlbF9ndWNfZndfc3RhdHVzX3JlcHIoZW51bSBpbnRl bF9ndWNfZndfc3RhdHVzIHN0YXR1cykKK2NvbnN0IGNoYXIgKmludGVsX3VjX2Z3X3N0YXR1c19y ZXByKGVudW0gaW50ZWxfdWNfZndfc3RhdHVzIHN0YXR1cykKIHsKIAlzd2l0Y2ggKHN0YXR1cykg ewotCWNhc2UgR1VDX0ZJUk1XQVJFX0ZBSUw6CisJY2FzZSBJTlRFTF9VQ19GSVJNV0FSRV9GQUlM OgogCQlyZXR1cm4gIkZBSUwiOwotCWNhc2UgR1VDX0ZJUk1XQVJFX05PTkU6CisJY2FzZSBJTlRF TF9VQ19GSVJNV0FSRV9OT05FOgogCQlyZXR1cm4gIk5PTkUiOwotCWNhc2UgR1VDX0ZJUk1XQVJF X1BFTkRJTkc6CisJY2FzZSBJTlRFTF9VQ19GSVJNV0FSRV9QRU5ESU5HOgogCQlyZXR1cm4gIlBF TkRJTkciOwotCWNhc2UgR1VDX0ZJUk1XQVJFX1NVQ0NFU1M6CisJY2FzZSBJTlRFTF9VQ19GSVJN V0FSRV9TVUNDRVNTOgogCQlyZXR1cm4gIlNVQ0NFU1MiOwogCWRlZmF1bHQ6CiAJCXJldHVybiAi VU5LTk9XTiEiOwpAQCAtMjc4LDcgKzI3OCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBndWNfdWNv ZGVfcmVzcG9uc2Uoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogc3RhdGljIGlu dCBndWNfdWNvZGVfeGZlcl9kbWEoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAog CQkJICAgICAgc3RydWN0IGk5MTVfdm1hICp2bWEpCiB7Ci0Jc3RydWN0IGludGVsX2d1Y19mdyAq Z3VjX2Z3ID0gJmRldl9wcml2LT5ndWMuZ3VjX2Z3OworCXN0cnVjdCBpbnRlbF91Y19mdyAqZ3Vj X2Z3ID0gJmRldl9wcml2LT5ndWMuZnc7CiAJdW5zaWduZWQgbG9uZyBvZmZzZXQ7CiAJc3RydWN0 IHNnX3RhYmxlICpzZyA9IHZtYS0+cGFnZXM7CiAJdTMyIHN0YXR1cywgcnNhW1VPU19SU0FfU0NS QVRDSF9NQVhfQ09VTlRdOwpAQCAtMzUwLDE3ICszNTAsMTcgQEAgc3RhdGljIHUzMiBndWNfd29w Y21fc2l6ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAgKi8KIHN0YXRpYyBp bnQgZ3VjX3Vjb2RlX3hmZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogewot CXN0cnVjdCBpbnRlbF9ndWNfZncgKmd1Y19mdyA9ICZkZXZfcHJpdi0+Z3VjLmd1Y19mdzsKKwlz dHJ1Y3QgaW50ZWxfdWNfZncgKmd1Y19mdyA9ICZkZXZfcHJpdi0+Z3VjLmZ3OwogCXN0cnVjdCBp OTE1X3ZtYSAqdm1hOwogCWludCByZXQ7CiAKLQlyZXQgPSBpOTE1X2dlbV9vYmplY3Rfc2V0X3Rv X2d0dF9kb21haW4oZ3VjX2Z3LT5ndWNfZndfb2JqLCBmYWxzZSk7CisJcmV0ID0gaTkxNV9nZW1f b2JqZWN0X3NldF90b19ndHRfZG9tYWluKGd1Y19mdy0+dWNfZndfb2JqLCBmYWxzZSk7CiAJaWYg KHJldCkgewogCQlEUk1fREVCVUdfRFJJVkVSKCJzZXQtZG9tYWluIGZhaWxlZCAlZFxuIiwgcmV0 KTsKIAkJcmV0dXJuIHJldDsKIAl9CiAKLQl2bWEgPSBpOTE1X2dlbV9vYmplY3RfZ2d0dF9waW4o Z3VjX2Z3LT5ndWNfZndfb2JqLCBOVUxMLCAwLCAwLCAwKTsKKwl2bWEgPSBpOTE1X2dlbV9vYmpl Y3RfZ2d0dF9waW4oZ3VjX2Z3LT51Y19md19vYmosIE5VTEwsIDAsIDAsIDApOwogCWlmIChJU19F UlIodm1hKSkgewogCQlEUk1fREVCVUdfRFJJVkVSKCJwaW4gZmFpbGVkICVkXG4iLCAoaW50KVBU Ul9FUlIodm1hKSk7CiAJCXJldHVybiBQVFJfRVJSKHZtYSk7CkBAIC00NTAsMTQgKzQ1MCwxNCBA QCBzdGF0aWMgaW50IGd1Y19od19yZXNldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCiAgKi8KIGludCBpbnRlbF9ndWNfc2V0dXAoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KQogewotCXN0cnVjdCBpbnRlbF9ndWNfZncgKmd1Y19mdyA9ICZkZXZfcHJpdi0+Z3Vj Lmd1Y19mdzsKLQljb25zdCBjaGFyICpmd19wYXRoID0gZ3VjX2Z3LT5ndWNfZndfcGF0aDsKKwlz dHJ1Y3QgaW50ZWxfdWNfZncgKmd1Y19mdyA9ICZkZXZfcHJpdi0+Z3VjLmZ3OworCWNvbnN0IGNo YXIgKmZ3X3BhdGggPSBndWNfZnctPnVjX2Z3X3BhdGg7CiAJaW50IHJldHJpZXMsIHJldCwgZXJy OwogCiAJRFJNX0RFQlVHX0RSSVZFUigiR3VDIGZ3IHN0YXR1czogcGF0aCAlcywgZmV0Y2ggJXMs IGxvYWQgJXNcbiIsCiAJCWZ3X3BhdGgsCi0JCWludGVsX2d1Y19md19zdGF0dXNfcmVwcihndWNf ZnctPmd1Y19md19mZXRjaF9zdGF0dXMpLAotCQlpbnRlbF9ndWNfZndfc3RhdHVzX3JlcHIoZ3Vj X2Z3LT5ndWNfZndfbG9hZF9zdGF0dXMpKTsKKwkJaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIoZ3Vj X2Z3LT5mZXRjaF9zdGF0dXMpLAorCQlpbnRlbF91Y19md19zdGF0dXNfcmVwcihndWNfZnctPmxv YWRfc3RhdHVzKSk7CiAKIAkvKiBMb2FkaW5nIGZvcmJpZGRlbiwgb3Igbm8gZmlybXdhcmUgdG8g bG9hZD8gKi8KIAlpZiAoIWk5MTUuZW5hYmxlX2d1Y19sb2FkaW5nKSB7CkBAIC00NzUsMTAgKzQ3 NSwxMCBAQCBpbnQgaW50ZWxfZ3VjX3NldHVwKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKIAl9CiAKIAkvKiBGZXRjaCBmYWlsZWQsIG9yIGFscmVhZHkgZmV0Y2hlZCBidXQgZmFp bGVkIHRvIGxvYWQ/ICovCi0JaWYgKGd1Y19mdy0+Z3VjX2Z3X2ZldGNoX3N0YXR1cyAhPSBHVUNf RklSTVdBUkVfU1VDQ0VTUykgeworCWlmIChndWNfZnctPmZldGNoX3N0YXR1cyAhPSBJTlRFTF9V Q19GSVJNV0FSRV9TVUNDRVNTKSB7CiAJCWVyciA9IC1FSU87CiAJCWdvdG8gZmFpbDsKLQl9IGVs c2UgaWYgKGd1Y19mdy0+Z3VjX2Z3X2xvYWRfc3RhdHVzID09IEdVQ19GSVJNV0FSRV9GQUlMKSB7 CisJfSBlbHNlIGlmIChndWNfZnctPmxvYWRfc3RhdHVzID09IElOVEVMX1VDX0ZJUk1XQVJFX0ZB SUwpIHsKIAkJZXJyID0gLUVOT0VYRUM7CiAJCWdvdG8gZmFpbDsKIAl9CkBAIC00ODYsMTEgKzQ4 NiwxMSBAQCBpbnQgaW50ZWxfZ3VjX3NldHVwKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKIAlndWNfaW50ZXJydXB0c19yZWxlYXNlKGRldl9wcml2KTsKIAlnZW45X3Jlc2V0X2d1 Y19pbnRlcnJ1cHRzKGRldl9wcml2KTsKIAotCWd1Y19mdy0+Z3VjX2Z3X2xvYWRfc3RhdHVzID0g R1VDX0ZJUk1XQVJFX1BFTkRJTkc7CisJZ3VjX2Z3LT5sb2FkX3N0YXR1cyA9IElOVEVMX1VDX0ZJ Uk1XQVJFX1BFTkRJTkc7CiAKIAlEUk1fREVCVUdfRFJJVkVSKCJHdUMgZncgc3RhdHVzOiBmZXRj aCAlcywgbG9hZCAlc1xuIiwKLQkJaW50ZWxfZ3VjX2Z3X3N0YXR1c19yZXByKGd1Y19mdy0+Z3Vj X2Z3X2ZldGNoX3N0YXR1cyksCi0JCWludGVsX2d1Y19md19zdGF0dXNfcmVwcihndWNfZnctPmd1 Y19md19sb2FkX3N0YXR1cykpOworCQlpbnRlbF91Y19md19zdGF0dXNfcmVwcihndWNfZnctPmZl dGNoX3N0YXR1cyksCisJCWludGVsX3VjX2Z3X3N0YXR1c19yZXByKGd1Y19mdy0+bG9hZF9zdGF0 dXMpKTsKIAogCWVyciA9IGk5MTVfZ3VjX3N1Ym1pc3Npb25faW5pdChkZXZfcHJpdik7CiAJaWYg KGVycikKQEAgLTUyMiwxMSArNTIyLDExIEBAIGludCBpbnRlbF9ndWNfc2V0dXAoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCQkJICJyZXRyeSAlZCBtb3JlIHRpbWUocylcbiIs IGVyciwgcmV0cmllcyk7CiAJfQogCi0JZ3VjX2Z3LT5ndWNfZndfbG9hZF9zdGF0dXMgPSBHVUNf RklSTVdBUkVfU1VDQ0VTUzsKKwlndWNfZnctPmxvYWRfc3RhdHVzID0gSU5URUxfVUNfRklSTVdB UkVfU1VDQ0VTUzsKIAogCURSTV9ERUJVR19EUklWRVIoIkd1QyBmdyBzdGF0dXM6IGZldGNoICVz LCBsb2FkICVzXG4iLAotCQlpbnRlbF9ndWNfZndfc3RhdHVzX3JlcHIoZ3VjX2Z3LT5ndWNfZndf ZmV0Y2hfc3RhdHVzKSwKLQkJaW50ZWxfZ3VjX2Z3X3N0YXR1c19yZXByKGd1Y19mdy0+Z3VjX2Z3 X2xvYWRfc3RhdHVzKSk7CisJCWludGVsX3VjX2Z3X3N0YXR1c19yZXByKGd1Y19mdy0+ZmV0Y2hf c3RhdHVzKSwKKwkJaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIoZ3VjX2Z3LT5sb2FkX3N0YXR1cykp OwogCiAJaWYgKGk5MTUuZW5hYmxlX2d1Y19zdWJtaXNzaW9uKSB7CiAJCWlmIChpOTE1Lmd1Y19s b2dfbGV2ZWwgPj0gMCkKQEAgLTU0MSw4ICs1NDEsOCBAQCBpbnQgaW50ZWxfZ3VjX3NldHVwKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAlyZXR1cm4gMDsKIAogZmFpbDoKLQlp ZiAoZ3VjX2Z3LT5ndWNfZndfbG9hZF9zdGF0dXMgPT0gR1VDX0ZJUk1XQVJFX1BFTkRJTkcpCi0J CWd1Y19mdy0+Z3VjX2Z3X2xvYWRfc3RhdHVzID0gR1VDX0ZJUk1XQVJFX0ZBSUw7CisJaWYgKGd1 Y19mdy0+bG9hZF9zdGF0dXMgPT0gSU5URUxfVUNfRklSTVdBUkVfUEVORElORykKKwkJZ3VjX2Z3 LT5sb2FkX3N0YXR1cyA9IElOVEVMX1VDX0ZJUk1XQVJFX0ZBSUw7CiAKIAlndWNfaW50ZXJydXB0 c19yZWxlYXNlKGRldl9wcml2KTsKIAlpOTE1X2d1Y19zdWJtaXNzaW9uX2Rpc2FibGUoZGV2X3By aXYpOwpAQCAtNTg3LDggKzU4Nyw4IEBAIGludCBpbnRlbF9ndWNfc2V0dXAoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQogCXJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyB2b2lkIGd1 Y19md19mZXRjaChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCi0JCQkgc3RydWN0 IGludGVsX2d1Y19mdyAqZ3VjX2Z3KQordm9pZCBpbnRlbF91Y19md19mZXRjaChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkgc3RydWN0IGludGVsX3VjX2Z3ICp1Y19mdykK IHsKIAlzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IGRldl9wcml2LT5kcm0ucGRldjsKIAlzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOwpAQCAtNTk3LDE3ICs1OTcsMTcgQEAgc3RhdGljIHZv aWQgZ3VjX2Z3X2ZldGNoKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAlzaXpl X3Qgc2l6ZTsKIAlpbnQgZXJyOwogCi0JRFJNX0RFQlVHX0RSSVZFUigiYmVmb3JlIHJlcXVlc3Rp bmcgZmlybXdhcmU6IEd1QyBmdyBmZXRjaCBzdGF0dXMgJXNcbiIsCi0JCWludGVsX2d1Y19md19z dGF0dXNfcmVwcihndWNfZnctPmd1Y19md19mZXRjaF9zdGF0dXMpKTsKKwlEUk1fREVCVUdfRFJJ VkVSKCJiZWZvcmUgcmVxdWVzdGluZyBmaXJtd2FyZTogdUMgZncgZmV0Y2ggc3RhdHVzICVzXG4i LAorCQlpbnRlbF91Y19md19zdGF0dXNfcmVwcih1Y19mdy0+ZmV0Y2hfc3RhdHVzKSk7CiAKLQll cnIgPSByZXF1ZXN0X2Zpcm13YXJlKCZmdywgZ3VjX2Z3LT5ndWNfZndfcGF0aCwgJnBkZXYtPmRl dik7CisJZXJyID0gcmVxdWVzdF9maXJtd2FyZSgmZncsIHVjX2Z3LT51Y19md19wYXRoLCAmcGRl di0+ZGV2KTsKIAlpZiAoZXJyKQogCQlnb3RvIGZhaWw7CiAJaWYgKCFmdykKIAkJZ290byBmYWls OwogCi0JRFJNX0RFQlVHX0RSSVZFUigiZmV0Y2ggR3VDIGZ3IGZyb20gJXMgc3VjY2VlZGVkLCBm dyAlcFxuIiwKLQkJZ3VjX2Z3LT5ndWNfZndfcGF0aCwgZncpOworCURSTV9ERUJVR19EUklWRVIo ImZldGNoIHVDIGZ3IGZyb20gJXMgc3VjY2VlZGVkLCBmdyAlcFxuIiwKKwkJdWNfZnctPnVjX2Z3 X3BhdGgsIGZ3KTsKIAogCS8qIENoZWNrIHRoZSBzaXplIG9mIHRoZSBibG9iIGJlZm9yZSBleGFt aW5pbmcgYnVmZmVyIGNvbnRlbnRzICovCiAJaWYgKGZ3LT5zaXplIDwgc2l6ZW9mKHN0cnVjdCBn dWNfY3NzX2hlYWRlcikpIHsKQEAgLTYxOCwzNiArNjE4LDM2IEBAIHN0YXRpYyB2b2lkIGd1Y19m d19mZXRjaChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJY3NzID0gKHN0cnVj dCBndWNfY3NzX2hlYWRlciAqKWZ3LT5kYXRhOwogCiAJLyogRmlybXdhcmUgYml0cyBhbHdheXMg c3RhcnQgZnJvbSBoZWFkZXIgKi8KLQlndWNfZnctPmhlYWRlcl9vZmZzZXQgPSAwOwotCWd1Y19m dy0+aGVhZGVyX3NpemUgPSAoY3NzLT5oZWFkZXJfc2l6ZV9kdyAtIGNzcy0+bW9kdWx1c19zaXpl X2R3IC0KKwl1Y19mdy0+aGVhZGVyX29mZnNldCA9IDA7CisJdWNfZnctPmhlYWRlcl9zaXplID0g KGNzcy0+aGVhZGVyX3NpemVfZHcgLSBjc3MtPm1vZHVsdXNfc2l6ZV9kdyAtCiAJCWNzcy0+a2V5 X3NpemVfZHcgLSBjc3MtPmV4cG9uZW50X3NpemVfZHcpICogc2l6ZW9mKHUzMik7CiAKLQlpZiAo Z3VjX2Z3LT5oZWFkZXJfc2l6ZSAhPSBzaXplb2Yoc3RydWN0IGd1Y19jc3NfaGVhZGVyKSkgewor CWlmICh1Y19mdy0+aGVhZGVyX3NpemUgIT0gc2l6ZW9mKHN0cnVjdCBndWNfY3NzX2hlYWRlcikp IHsKIAkJRFJNX05PVEUoIkNTUyBoZWFkZXIgZGVmaW5pdGlvbiBtaXNtYXRjaFxuIik7CiAJCWdv dG8gZmFpbDsKIAl9CiAKIAkvKiB0aGVuLCB1Q29kZSAqLwotCWd1Y19mdy0+dWNvZGVfb2Zmc2V0 ID0gZ3VjX2Z3LT5oZWFkZXJfb2Zmc2V0ICsgZ3VjX2Z3LT5oZWFkZXJfc2l6ZTsKLQlndWNfZnct PnVjb2RlX3NpemUgPSAoY3NzLT5zaXplX2R3IC0gY3NzLT5oZWFkZXJfc2l6ZV9kdykgKiBzaXpl b2YodTMyKTsKKwl1Y19mdy0+dWNvZGVfb2Zmc2V0ID0gdWNfZnctPmhlYWRlcl9vZmZzZXQgKyB1 Y19mdy0+aGVhZGVyX3NpemU7CisJdWNfZnctPnVjb2RlX3NpemUgPSAoY3NzLT5zaXplX2R3IC0g Y3NzLT5oZWFkZXJfc2l6ZV9kdykgKiBzaXplb2YodTMyKTsKIAogCS8qIG5vdyBSU0EgKi8KIAlp ZiAoY3NzLT5rZXlfc2l6ZV9kdyAhPSBVT1NfUlNBX1NDUkFUQ0hfTUFYX0NPVU5UKSB7CiAJCURS TV9OT1RFKCJSU0Ega2V5IHNpemUgaXMgYmFkXG4iKTsKIAkJZ290byBmYWlsOwogCX0KLQlndWNf ZnctPnJzYV9vZmZzZXQgPSBndWNfZnctPnVjb2RlX29mZnNldCArIGd1Y19mdy0+dWNvZGVfc2l6 ZTsKLQlndWNfZnctPnJzYV9zaXplID0gY3NzLT5rZXlfc2l6ZV9kdyAqIHNpemVvZih1MzIpOwor CXVjX2Z3LT5yc2Ffb2Zmc2V0ID0gdWNfZnctPnVjb2RlX29mZnNldCArIHVjX2Z3LT51Y29kZV9z aXplOworCXVjX2Z3LT5yc2Ffc2l6ZSA9IGNzcy0+a2V5X3NpemVfZHcgKiBzaXplb2YodTMyKTsK IAogCS8qIEF0IGxlYXN0LCBpdCBzaG91bGQgaGF2ZSBoZWFkZXIsIHVDb2RlIGFuZCBSU0EuIFNp emUgb2YgYWxsIHRocmVlLiAqLwotCXNpemUgPSBndWNfZnctPmhlYWRlcl9zaXplICsgZ3VjX2Z3 LT51Y29kZV9zaXplICsgZ3VjX2Z3LT5yc2Ffc2l6ZTsKKwlzaXplID0gdWNfZnctPmhlYWRlcl9z aXplICsgdWNfZnctPnVjb2RlX3NpemUgKyB1Y19mdy0+cnNhX3NpemU7CiAJaWYgKGZ3LT5zaXpl IDwgc2l6ZSkgewogCQlEUk1fTk9URSgiTWlzc2luZyBmaXJtd2FyZSBjb21wb25lbnRzXG4iKTsK IAkJZ290byBmYWlsOwogCX0KIAogCS8qIEhlYWRlciBhbmQgdUNvZGUgd2lsbCBiZSBsb2FkZWQg dG8gV09QQ00uIFNpemUgb2YgdGhlIHR3by4gKi8KLQlzaXplID0gZ3VjX2Z3LT5oZWFkZXJfc2l6 ZSArIGd1Y19mdy0+dWNvZGVfc2l6ZTsKKwlzaXplID0gdWNfZnctPmhlYWRlcl9zaXplICsgdWNf ZnctPnVjb2RlX3NpemU7CiAJaWYgKHNpemUgPiBndWNfd29wY21fc2l6ZShkZXZfcHJpdikpIHsK IAkJRFJNX05PVEUoIkZpcm13YXJlIGlzIHRvbyBsYXJnZSB0byBmaXQgaW4gV09QQ01cbiIpOwog CQlnb3RvIGZhaWw7CkBAIC02NTksMjEgKzY1OSwyMSBAQCBzdGF0aWMgdm9pZCBndWNfZndfZmV0 Y2goc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCSAqIFRXTyBieXRlcyBlYWNo IChpLmUuIHUxNiksIGFsdGhvdWdoIGFsbCBwb2ludGVycyBhbmQgb2Zmc2V0cyBhcmUgZGVmaW5l ZAogCSAqIGluIHRlcm1zIG9mIGJ5dGVzICh1OCkuCiAJICovCi0JZ3VjX2Z3LT5ndWNfZndfbWFq b3JfZm91bmQgPSBjc3MtPmd1Y19zd192ZXJzaW9uID4+IDE2OwotCWd1Y19mdy0+Z3VjX2Z3X21p bm9yX2ZvdW5kID0gY3NzLT5ndWNfc3dfdmVyc2lvbiAmIDB4RkZGRjsKLQotCWlmIChndWNfZnct Pmd1Y19md19tYWpvcl9mb3VuZCAhPSBndWNfZnctPmd1Y19md19tYWpvcl93YW50ZWQgfHwKLQkg ICAgZ3VjX2Z3LT5ndWNfZndfbWlub3JfZm91bmQgPCBndWNfZnctPmd1Y19md19taW5vcl93YW50 ZWQpIHsKLQkJRFJNX05PVEUoIkd1QyBmaXJtd2FyZSB2ZXJzaW9uICVkLiVkLCByZXF1aXJlZCAl ZC4lZFxuIiwKLQkJCWd1Y19mdy0+Z3VjX2Z3X21ham9yX2ZvdW5kLCBndWNfZnctPmd1Y19md19t aW5vcl9mb3VuZCwKLQkJCWd1Y19mdy0+Z3VjX2Z3X21ham9yX3dhbnRlZCwgZ3VjX2Z3LT5ndWNf ZndfbWlub3Jfd2FudGVkKTsKKwl1Y19mdy0+bWFqb3JfdmVyX2ZvdW5kID0gY3NzLT5ndWNfc3df dmVyc2lvbiA+PiAxNjsKKwl1Y19mdy0+bWlub3JfdmVyX2ZvdW5kID0gY3NzLT5ndWNfc3dfdmVy c2lvbiAmIDB4RkZGRjsKKworCWlmICh1Y19mdy0+bWFqb3JfdmVyX2ZvdW5kICE9IHVjX2Z3LT5t YWpvcl92ZXJfd2FudGVkIHx8CisJICAgIHVjX2Z3LT5taW5vcl92ZXJfZm91bmQgPCB1Y19mdy0+ bWlub3JfdmVyX3dhbnRlZCkgeworCQlEUk1fTk9URSgidUMgZmlybXdhcmUgdmVyc2lvbiAlZC4l ZCwgcmVxdWlyZWQgJWQuJWRcbiIsCisJCQl1Y19mdy0+bWFqb3JfdmVyX2ZvdW5kLCB1Y19mdy0+ bWlub3JfdmVyX2ZvdW5kLAorCQkJdWNfZnctPm1ham9yX3Zlcl93YW50ZWQsIHVjX2Z3LT5taW5v cl92ZXJfd2FudGVkKTsKIAkJZXJyID0gLUVOT0VYRUM7CiAJCWdvdG8gZmFpbDsKIAl9CiAKIAlE Uk1fREVCVUdfRFJJVkVSKCJmaXJtd2FyZSB2ZXJzaW9uICVkLiVkIE9LIChtaW5pbXVtICVkLiVk KVxuIiwKLQkJCWd1Y19mdy0+Z3VjX2Z3X21ham9yX2ZvdW5kLCBndWNfZnctPmd1Y19md19taW5v cl9mb3VuZCwKLQkJCWd1Y19mdy0+Z3VjX2Z3X21ham9yX3dhbnRlZCwgZ3VjX2Z3LT5ndWNfZndf bWlub3Jfd2FudGVkKTsKKwkJCXVjX2Z3LT5tYWpvcl92ZXJfZm91bmQsIHVjX2Z3LT5taW5vcl92 ZXJfZm91bmQsCisJCQl1Y19mdy0+bWFqb3JfdmVyX3dhbnRlZCwgdWNfZnctPm1pbm9yX3Zlcl93 YW50ZWQpOwogCiAJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXgpOwogCW9i aiA9IGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfZnJvbV9kYXRhKGRldl9wcml2LCBmdy0+ZGF0YSwg ZnctPnNpemUpOwpAQCAtNjgzLDMxICs2ODMsMzEgQEAgc3RhdGljIHZvaWQgZ3VjX2Z3X2ZldGNo KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJZ290byBmYWlsOwogCX0KIAot CWd1Y19mdy0+Z3VjX2Z3X29iaiA9IG9iajsKLQlndWNfZnctPmd1Y19md19zaXplID0gZnctPnNp emU7CisJdWNfZnctPnVjX2Z3X29iaiA9IG9iajsKKwl1Y19mdy0+c2l6ZSA9IGZ3LT5zaXplOwog Ci0JRFJNX0RFQlVHX0RSSVZFUigiR3VDIGZ3IGZldGNoIHN0YXR1cyBTVUNDRVNTLCBvYmogJXBc biIsCi0JCQlndWNfZnctPmd1Y19md19vYmopOworCURSTV9ERUJVR19EUklWRVIoInVDIGZ3IGZl dGNoIHN0YXR1cyBTVUNDRVNTLCBvYmogJXBcbiIsCisJCQl1Y19mdy0+dWNfZndfb2JqKTsKIAog CXJlbGVhc2VfZmlybXdhcmUoZncpOwotCWd1Y19mdy0+Z3VjX2Z3X2ZldGNoX3N0YXR1cyA9IEdV Q19GSVJNV0FSRV9TVUNDRVNTOworCXVjX2Z3LT5mZXRjaF9zdGF0dXMgPSBJTlRFTF9VQ19GSVJN V0FSRV9TVUNDRVNTOwogCXJldHVybjsKIAogZmFpbDoKLQlEUk1fV0FSTigiRmFpbGVkIHRvIGZl dGNoIHZhbGlkIEd1QyBmaXJtd2FyZSBmcm9tICVzIChlcnJvciAlZClcbiIsCi0JCSBndWNfZnct Pmd1Y19md19wYXRoLCBlcnIpOwotCURSTV9ERUJVR19EUklWRVIoIkd1QyBmdyBmZXRjaCBzdGF0 dXMgRkFJTDsgZXJyICVkLCBmdyAlcCwgb2JqICVwXG4iLAotCQllcnIsIGZ3LCBndWNfZnctPmd1 Y19md19vYmopOworCURSTV9XQVJOKCJGYWlsZWQgdG8gZmV0Y2ggdmFsaWQgdUMgZmlybXdhcmUg ZnJvbSAlcyAoZXJyb3IgJWQpXG4iLAorCQkgdWNfZnctPnVjX2Z3X3BhdGgsIGVycik7CisJRFJN X0RFQlVHX0RSSVZFUigidUMgZncgZmV0Y2ggc3RhdHVzIEZBSUw7IGVyciAlZCwgZncgJXAsIG9i aiAlcFxuIiwKKwkJZXJyLCBmdywgdWNfZnctPnVjX2Z3X29iaik7CiAKIAltdXRleF9sb2NrKCZk ZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleCk7Ci0Jb2JqID0gZ3VjX2Z3LT5ndWNfZndfb2JqOwor CW9iaiA9IHVjX2Z3LT51Y19md19vYmo7CiAJaWYgKG9iaikKIAkJaTkxNV9nZW1fb2JqZWN0X3B1 dChvYmopOwotCWd1Y19mdy0+Z3VjX2Z3X29iaiA9IE5VTEw7CisJdWNfZnctPnVjX2Z3X29iaiA9 IE5VTEw7CiAJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleCk7CiAKIAly ZWxlYXNlX2Zpcm13YXJlKGZ3KTsJCS8qIE9LIGV2ZW4gaWYgZncgaXMgTlVMTCAqLwotCWd1Y19m dy0+Z3VjX2Z3X2ZldGNoX3N0YXR1cyA9IEdVQ19GSVJNV0FSRV9GQUlMOworCXVjX2Z3LT5mZXRj aF9zdGF0dXMgPSBJTlRFTF9VQ19GSVJNV0FSRV9GQUlMOwogfQogCiAvKioKQEAgLTcyMSw3ICs3 MjEsNyBAQCBzdGF0aWMgdm9pZCBndWNfZndfZmV0Y2goc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LAogICovCiB2b2lkIGludGVsX2d1Y19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKIHsKLQlzdHJ1Y3QgaW50ZWxfZ3VjX2Z3ICpndWNfZncgPSAmZGV2X3By aXYtPmd1Yy5ndWNfZnc7CisJc3RydWN0IGludGVsX3VjX2Z3ICpndWNfZncgPSAmZGV2X3ByaXYt Pmd1Yy5mdzsKIAljb25zdCBjaGFyICpmd19wYXRoOwogCiAJaWYgKCFIQVNfR1VDKGRldl9wcml2 KSkgewpAQCAtNzM5LDIzICs3MzksMjQgQEAgdm9pZCBpbnRlbF9ndWNfaW5pdChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCWZ3X3BhdGggPSBOVUxMOwogCX0gZWxzZSBpZiAo SVNfU0tZTEFLRShkZXZfcHJpdikpIHsKIAkJZndfcGF0aCA9IEk5MTVfU0tMX0dVQ19VQ09ERTsK LQkJZ3VjX2Z3LT5ndWNfZndfbWFqb3Jfd2FudGVkID0gU0tMX0ZXX01BSk9SOwotCQlndWNfZnct Pmd1Y19md19taW5vcl93YW50ZWQgPSBTS0xfRldfTUlOT1I7CisJCWd1Y19mdy0+bWFqb3JfdmVy X3dhbnRlZCA9IFNLTF9GV19NQUpPUjsKKwkJZ3VjX2Z3LT5taW5vcl92ZXJfd2FudGVkID0gU0tM X0ZXX01JTk9SOwogCX0gZWxzZSBpZiAoSVNfQlJPWFRPTihkZXZfcHJpdikpIHsKIAkJZndfcGF0 aCA9IEk5MTVfQlhUX0dVQ19VQ09ERTsKLQkJZ3VjX2Z3LT5ndWNfZndfbWFqb3Jfd2FudGVkID0g QlhUX0ZXX01BSk9SOwotCQlndWNfZnctPmd1Y19md19taW5vcl93YW50ZWQgPSBCWFRfRldfTUlO T1I7CisJCWd1Y19mdy0+bWFqb3JfdmVyX3dhbnRlZCA9IEJYVF9GV19NQUpPUjsKKwkJZ3VjX2Z3 LT5taW5vcl92ZXJfd2FudGVkID0gQlhUX0ZXX01JTk9SOwogCX0gZWxzZSBpZiAoSVNfS0FCWUxB S0UoZGV2X3ByaXYpKSB7CiAJCWZ3X3BhdGggPSBJOTE1X0tCTF9HVUNfVUNPREU7Ci0JCWd1Y19m dy0+Z3VjX2Z3X21ham9yX3dhbnRlZCA9IEtCTF9GV19NQUpPUjsKLQkJZ3VjX2Z3LT5ndWNfZndf bWlub3Jfd2FudGVkID0gS0JMX0ZXX01JTk9SOworCQlndWNfZnctPm1ham9yX3Zlcl93YW50ZWQg PSBLQkxfRldfTUFKT1I7CisJCWd1Y19mdy0+bWlub3JfdmVyX3dhbnRlZCA9IEtCTF9GV19NSU5P UjsKIAl9IGVsc2UgewogCQlmd19wYXRoID0gIiI7CS8qIHVua25vd24gZGV2aWNlICovCiAJfQog Ci0JZ3VjX2Z3LT5ndWNfZndfcGF0aCA9IGZ3X3BhdGg7Ci0JZ3VjX2Z3LT5ndWNfZndfZmV0Y2hf c3RhdHVzID0gR1VDX0ZJUk1XQVJFX05PTkU7Ci0JZ3VjX2Z3LT5ndWNfZndfbG9hZF9zdGF0dXMg PSBHVUNfRklSTVdBUkVfTk9ORTsKKwkvL2d1Y19mdy0+dWNfZGV2ID0gJmRldl9wcml2LT5kcm07 CisJZ3VjX2Z3LT51Y19md19wYXRoID0gZndfcGF0aDsKKwlndWNfZnctPmZldGNoX3N0YXR1cyA9 IElOVEVMX1VDX0ZJUk1XQVJFX05PTkU7CisJZ3VjX2Z3LT5sb2FkX3N0YXR1cyA9IElOVEVMX1VD X0ZJUk1XQVJFX05PTkU7CiAKIAkvKiBFYXJseSAoYW5kIHNpbGVudCkgcmV0dXJuIGlmIEd1QyBs b2FkaW5nIGlzIGRpc2FibGVkICovCiAJaWYgKCFpOTE1LmVuYWJsZV9ndWNfbG9hZGluZykKQEAg LTc2NSw5ICs3NjYsOSBAQCB2b2lkIGludGVsX2d1Y19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKIAlpZiAoKmZ3X3BhdGggPT0gJ1wwJykKIAkJcmV0dXJuOwogCi0JZ3Vj X2Z3LT5ndWNfZndfZmV0Y2hfc3RhdHVzID0gR1VDX0ZJUk1XQVJFX1BFTkRJTkc7CisJZ3VjX2Z3 LT5mZXRjaF9zdGF0dXMgPSBJTlRFTF9VQ19GSVJNV0FSRV9QRU5ESU5HOwogCURSTV9ERUJVR19E UklWRVIoIkd1QyBmaXJtd2FyZSBwZW5kaW5nLCBwYXRoICVzXG4iLCBmd19wYXRoKTsKLQlndWNf ZndfZmV0Y2goZGV2X3ByaXYsIGd1Y19mdyk7CisJaW50ZWxfdWNfZndfZmV0Y2goZGV2X3ByaXYs IGd1Y19mdyk7CiAJLyogc3RhdHVzIG11c3Qgbm93IGJlIEZBSUwgb3IgU1VDQ0VTUyAqLwogfQog CkBAIC03NzcsMTcgKzc3OCwxNyBAQCB2b2lkIGludGVsX2d1Y19pbml0KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKICAqLwogdm9pZCBpbnRlbF9ndWNfZmluaShzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7Ci0Jc3RydWN0IGludGVsX2d1Y19mdyAqZ3VjX2Z3 ID0gJmRldl9wcml2LT5ndWMuZ3VjX2Z3OworCXN0cnVjdCBpbnRlbF91Y19mdyAqZ3VjX2Z3ID0g JmRldl9wcml2LT5ndWMuZnc7CiAKIAltdXRleF9sb2NrKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9t dXRleCk7CiAJZ3VjX2ludGVycnVwdHNfcmVsZWFzZShkZXZfcHJpdik7CiAJaTkxNV9ndWNfc3Vi bWlzc2lvbl9kaXNhYmxlKGRldl9wcml2KTsKIAlpOTE1X2d1Y19zdWJtaXNzaW9uX2ZpbmkoZGV2 X3ByaXYpOwogCi0JaWYgKGd1Y19mdy0+Z3VjX2Z3X29iaikKLQkJaTkxNV9nZW1fb2JqZWN0X3B1 dChndWNfZnctPmd1Y19md19vYmopOwotCWd1Y19mdy0+Z3VjX2Z3X29iaiA9IE5VTEw7CisJaWYg KGd1Y19mdy0+dWNfZndfb2JqKQorCQlpOTE1X2dlbV9vYmplY3RfcHV0KGd1Y19mdy0+dWNfZndf b2JqKTsKKwlndWNfZnctPnVjX2Z3X29iaiA9IE5VTEw7CiAJbXV0ZXhfdW5sb2NrKCZkZXZfcHJp di0+ZHJtLnN0cnVjdF9tdXRleCk7CiAKLQlndWNfZnctPmd1Y19md19mZXRjaF9zdGF0dXMgPSBH VUNfRklSTVdBUkVfTk9ORTsKKwlndWNfZnctPmZldGNoX3N0YXR1cyA9IElOVEVMX1VDX0ZJUk1X QVJFX05PTkU7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91Yy5o IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdWMuaAppbmRleCAxMWY1NjA4Li44OTNiY2Vj IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91Yy5oCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3VjLmgKQEAgLTkxLDI4ICs5MSwyOCBAQCBzdHJ1Y3QgaTkx NV9ndWNfY2xpZW50IHsKIAl1aW50NjRfdCBzdWJtaXNzaW9uc1tJOTE1X05VTV9FTkdJTkVTXTsK IH07CiAKLWVudW0gaW50ZWxfZ3VjX2Z3X3N0YXR1cyB7Ci0JR1VDX0ZJUk1XQVJFX0ZBSUwgPSAt MSwKLQlHVUNfRklSTVdBUkVfTk9ORSA9IDAsCi0JR1VDX0ZJUk1XQVJFX1BFTkRJTkcsCi0JR1VD X0ZJUk1XQVJFX1NVQ0NFU1MKK2VudW0gaW50ZWxfdWNfZndfc3RhdHVzIHsKKwlJTlRFTF9VQ19G SVJNV0FSRV9GQUlMID0gLTEsCisJSU5URUxfVUNfRklSTVdBUkVfTk9ORSA9IDAsCisJSU5URUxf VUNfRklSTVdBUkVfUEVORElORywKKwlJTlRFTF9VQ19GSVJNV0FSRV9TVUNDRVNTCiB9OwogCiAv KgogICogVGhpcyBzdHJ1Y3R1cmUgZW5jYXBzdWxhdGVzIGFsbCB0aGUgZGF0YSBuZWVkZWQgZHVy aW5nIHRoZSBwcm9jZXNzCiAgKiBvZiBmZXRjaGluZywgY2FjaGluZywgYW5kIGxvYWRpbmcgdGhl IGZpcm13YXJlIGltYWdlIGludG8gdGhlIEd1Qy4KICAqLwotc3RydWN0IGludGVsX2d1Y19mdyB7 Ci0JY29uc3QgY2hhciAqCQkJZ3VjX2Z3X3BhdGg7Ci0Jc2l6ZV90CQkJCWd1Y19md19zaXplOwot CXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICoJZ3VjX2Z3X29iajsKLQllbnVtIGludGVsX2d1 Y19md19zdGF0dXMJZ3VjX2Z3X2ZldGNoX3N0YXR1czsKLQllbnVtIGludGVsX2d1Y19md19zdGF0 dXMJZ3VjX2Z3X2xvYWRfc3RhdHVzOwotCi0JdWludDE2X3QJCQlndWNfZndfbWFqb3Jfd2FudGVk OwotCXVpbnQxNl90CQkJZ3VjX2Z3X21pbm9yX3dhbnRlZDsKLQl1aW50MTZfdAkJCWd1Y19md19t YWpvcl9mb3VuZDsKLQl1aW50MTZfdAkJCWd1Y19md19taW5vcl9mb3VuZDsKK3N0cnVjdCBpbnRl bF91Y19mdyB7CisJY29uc3QgY2hhciAqdWNfZndfcGF0aDsKKwlzaXplX3Qgc2l6ZTsKKwlzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqdWNfZndfb2JqOworCWVudW0gaW50ZWxfdWNfZndfc3Rh dHVzIGZldGNoX3N0YXR1czsKKwllbnVtIGludGVsX3VjX2Z3X3N0YXR1cyBsb2FkX3N0YXR1czsK KworCXVpbnQxNl90IG1ham9yX3Zlcl93YW50ZWQ7CisJdWludDE2X3QgbWlub3JfdmVyX3dhbnRl ZDsKKwl1aW50MTZfdCBtYWpvcl92ZXJfZm91bmQ7CisJdWludDE2X3QgbWlub3JfdmVyX2ZvdW5k OwogCiAJdWludDMyX3QgaGVhZGVyX3NpemU7CiAJdWludDMyX3QgaGVhZGVyX29mZnNldDsKQEAg LTEzOSw3ICsxMzksNyBAQCBzdHJ1Y3QgaW50ZWxfZ3VjX2xvZyB7CiB9OwogCiBzdHJ1Y3QgaW50 ZWxfZ3VjIHsKLQlzdHJ1Y3QgaW50ZWxfZ3VjX2Z3IGd1Y19mdzsKKwlzdHJ1Y3QgaW50ZWxfdWNf ZncgZnc7CiAJc3RydWN0IGludGVsX2d1Y19sb2cgbG9nOwogCiAJLyogaW50ZWxfZ3VjX3JlY3Yg aW50ZXJydXB0IHJlbGF0ZWQgc3RhdGUgKi8KQEAgLTE4MSw3ICsxODEsNyBAQCBpbnQgaW50ZWxf Z3VjX2xvZ19jb250cm9sKHN0cnVjdCBpbnRlbF9ndWMgKmd1YywgdTMyIGNvbnRyb2xfdmFsKTsK IGV4dGVybiB2b2lkIGludGVsX2d1Y19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdik7CiBleHRlcm4gaW50IGludGVsX2d1Y19zZXR1cChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpOwogZXh0ZXJuIHZvaWQgaW50ZWxfZ3VjX2Zpbmkoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KTsKLWV4dGVybiBjb25zdCBjaGFyICppbnRlbF9ndWNfZndfc3Rh dHVzX3JlcHIoZW51bSBpbnRlbF9ndWNfZndfc3RhdHVzIHN0YXR1cyk7CitleHRlcm4gY29uc3Qg Y2hhciAqaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIoZW51bSBpbnRlbF91Y19md19zdGF0dXMgc3Rh dHVzKTsKIGV4dGVybiBpbnQgaW50ZWxfZ3VjX3N1c3BlbmQoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KTsKIGV4dGVybiBpbnQgaW50ZWxfZ3VjX3Jlc3VtZShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwogCi0tIAoyLjcuNAoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1n ZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==