From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stuart Summers Subject: [PATCH 6/6] drm/i915: Expand subslice mask Date: Tue, 30 Apr 2019 16:06:06 -0700 Message-ID: <20190430230606.8421-7-stuart.summers@intel.com> References: <20190430230606.8421-1-stuart.summers@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id 604B4890BD for ; Tue, 30 Apr 2019 23:06:08 +0000 (UTC) In-Reply-To: <20190430230606.8421-1-stuart.summers@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 List-Id: intel-gfx@lists.freedesktop.org Q3VycmVudGx5LCB0aGUgc3Vic2xpY2VfbWFzayBydW50aW1lIHBhcmFtZXRlciBpcyBzdG9yZWQg YXMgYW4KYXJyYXkgb2Ygc3Vic2xpY2VzIHBlciBzbGljZS4gRXhwYW5kIHRoZSBzdWJzbGljZSBt YXNrIGFycmF5IHRvCmJldHRlciBtYXRjaCB3aGF0IGlzIHByZXNlbnRlZCB0byB1c2Vyc3BhY2Ug dGhyb3VnaCB0aGUKSTkxNV9RVUVSWV9UT1BPTE9HWV9JTkZPIGlvY3RsLiBUaGUgaW5kZXggaW50 byB0aGlzIGFycmF5IGlzCnRoZW4gY2FsY3VsYXRlZDoKICBzbGljZSAqIHN1YnNsaWNlIHN0cmlk ZSArIHN1YnNsaWNlIGluZGV4IC8gOAoKdjI6IGZpeCBzcGFjaW5nIGluIHNldF9zc2V1X2luZm8g YXJncwogICAgdXNlIHNldF9zc2V1X2luZm8gdG8gaW5pdGlhbGl6ZSBzc2V1IGRhdGEgd2hlbiBi dWlsZGluZwogICAgZGV2aWNlIHN0YXR1cyBpbiBkZWJ1Z2ZzCiAgICByZW5hbWUgdmFyaWFibGVz IGluIGludGVsX2VuZ2luZV90eXBlcy5oIHRvIGF2b2lkIGNoZWNrcGF0Y2gKICAgIHdhcm5pbmdz CnYzOiB1cGRhdGUgaGVhZGVycyBpbiBpbnRlbF9zc2V1LmgKdjQ6IGFkZCBjb25zdCB0byBzb21l IHNzZXVfZGV2X2luZm8gdmFyaWFibGVzCiAgICB1c2Ugc3NldS0+ZXVfc3RyaWRlIGZvciBFVSBz dHJpZGUgY2FsY3VsYXRpb25zCgpDYzogRGFuaWVsZSBDZXJhb2xvIFNwdXJpbyA8ZGFuaWVsZS5j ZXJhb2xvc3B1cmlvQGludGVsLmNvbT4KU2lnbmVkLW9mZi1ieTogU3R1YXJ0IFN1bW1lcnMgPHN0 dWFydC5zdW1tZXJzQGludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRl bF9lbmdpbmVfY3MuYyAgICB8ICAgNiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxf ZW5naW5lX3R5cGVzLmggfCAgMzIgKysrLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVs X2hhbmdjaGVjay5jICAgIHwgICAzICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9z c2V1LmMgICAgICAgICB8ICA0OSArKysrKy0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRl bF9zc2V1LmggICAgICAgICB8ICAxNiArKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVs X3dvcmthcm91bmRzLmMgIHwgICAyICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVn ZnMuYyAgICAgICAgICB8ICA0NCArKystLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmMgICAgICAgICAgICAgIHwgICA2ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9l cnJvci5jICAgICAgICB8ICAgNSArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9xdWVyeS5j ICAgICAgICAgICAgfCAgMTAgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RldmljZV9p bmZvLmMgICAgIHwgMTQyICsrKysrKysrKysrLS0tLS0tLS0KIDExIGZpbGVzIGNoYW5nZWQsIDE5 OCBpbnNlcnRpb25zKCspLCAxMTcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2NzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n dC9pbnRlbF9lbmdpbmVfY3MuYwppbmRleCBmNzMwODQ3OWQ1MTEuLmU0MzhkMzY2ODc0ZiAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2NzLmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2NzLmMKQEAgLTkwOCw3ICs5MDgs NyBAQCB1MzIgaW50ZWxfY2FsY3VsYXRlX21jcl9zX3NzX3NlbGVjdChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCiAJY29uc3Qgc3RydWN0IHNzZXVfZGV2X2luZm8gKnNzZXUgPSAm UlVOVElNRV9JTkZPKGRldl9wcml2KS0+c3NldTsKIAl1MzIgbWNyX3Nfc3Nfc2VsZWN0OwogCXUz MiBzbGljZSA9IGZscyhzc2V1LT5zbGljZV9tYXNrKTsKLQl1MzIgc3Vic2xpY2UgPSBmbHMoc3Nl dS0+c3Vic2xpY2VfbWFza1tzbGljZV0pOworCXUzMiBzdWJzbGljZSA9IGZscyhzc2V1LT5zdWJz bGljZV9tYXNrW3NsaWNlICogc3NldS0+c3Nfc3RyaWRlXSk7CiAKIAlpZiAoSVNfR0VOKGRldl9w cml2LCAxMCkpCiAJCW1jcl9zX3NzX3NlbGVjdCA9IEdFTjhfTUNSX1NMSUNFKHNsaWNlKSB8CkBA IC05ODQsNiArOTg0LDcgQEAgdm9pZCBpbnRlbF9lbmdpbmVfZ2V0X2luc3Rkb25lKHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKIAkJCSAgICAgICBzdHJ1Y3QgaW50ZWxfaW5zdGRvbmUg Kmluc3Rkb25lKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGVuZ2lu ZS0+aTkxNTsKKwljb25zdCBzdHJ1Y3Qgc3NldV9kZXZfaW5mbyAqc3NldSA9ICZSVU5USU1FX0lO Rk8oZGV2X3ByaXYpLT5zc2V1OwogCXN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSA9IGVuZ2lu ZS0+dW5jb3JlOwogCXUzMiBtbWlvX2Jhc2UgPSBlbmdpbmUtPm1taW9fYmFzZTsKIAlpbnQgc2xp Y2U7CkBAIC0xMDAxLDcgKzEwMDIsOCBAQCB2b2lkIGludGVsX2VuZ2luZV9nZXRfaW5zdGRvbmUo c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAogCiAJCWluc3Rkb25lLT5zbGljZV9jb21t b24gPQogCQkJaW50ZWxfdW5jb3JlX3JlYWQodW5jb3JlLCBHRU43X1NDX0lOU1RET05FKTsKLQkJ Zm9yX2VhY2hfaW5zdGRvbmVfc2xpY2Vfc3Vic2xpY2UoZGV2X3ByaXYsIHNsaWNlLCBzdWJzbGlj ZSkgeworCQlmb3JfZWFjaF9pbnN0ZG9uZV9zbGljZV9zdWJzbGljZShkZXZfcHJpdiwgc3NldSwg c2xpY2UsCisJCQkJCQkgc3Vic2xpY2UpIHsKIAkJCWluc3Rkb25lLT5zYW1wbGVyW3NsaWNlXVtz dWJzbGljZV0gPQogCQkJCXJlYWRfc3Vic2xpY2VfcmVnKGRldl9wcml2LCBzbGljZSwgc3Vic2xp Y2UsCiAJCQkJCQkgIEdFTjdfU0FNUExFUl9JTlNURE9ORSk7CmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfdHlwZXMuaCBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L2ludGVsX2VuZ2luZV90eXBlcy5oCmluZGV4IGQ5NzJjMzM5MzA5Yy4uZmE3MDUyODk2 M2E0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfdHlw ZXMuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfdHlwZXMuaApA QCAtNTM0LDIwICs1MzQsMjIgQEAgaW50ZWxfZW5naW5lX25lZWRzX2JyZWFkY3J1bWJfdGFza2xl dChjb25zdCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJcmV0dXJuIGVuZ2luZS0+ ZmxhZ3MgJiBJOTE1X0VOR0lORV9ORUVEU19CUkVBRENSVU1CX1RBU0tMRVQ7CiB9CiAKLSNkZWZp bmUgaW5zdGRvbmVfc2xpY2VfbWFzayhkZXZfcHJpdl9fKSBcCi0JKElTX0dFTihkZXZfcHJpdl9f LCA3KSA/IFwKLQkgMSA6IFJVTlRJTUVfSU5GTyhkZXZfcHJpdl9fKS0+c3NldS5zbGljZV9tYXNr KQotCi0jZGVmaW5lIGluc3Rkb25lX3N1YnNsaWNlX21hc2soZGV2X3ByaXZfXykgXAotCShJU19H RU4oZGV2X3ByaXZfXywgNykgPyBcCi0JIDEgOiBSVU5USU1FX0lORk8oZGV2X3ByaXZfXyktPnNz ZXUuc3Vic2xpY2VfbWFza1swXSkKLQotI2RlZmluZSBmb3JfZWFjaF9pbnN0ZG9uZV9zbGljZV9z dWJzbGljZShkZXZfcHJpdl9fLCBzbGljZV9fLCBzdWJzbGljZV9fKSBcCi0JZm9yICgoc2xpY2Vf XykgPSAwLCAoc3Vic2xpY2VfXykgPSAwOyBcCi0JICAgICAoc2xpY2VfXykgPCBJOTE1X01BWF9T TElDRVM7IFwKLQkgICAgIChzdWJzbGljZV9fKSA9ICgoc3Vic2xpY2VfXykgKyAxKSA8IEk5MTVf TUFYX1NVQlNMSUNFUyA/IChzdWJzbGljZV9fKSArIDEgOiAwLCBcCi0JICAgICAgIChzbGljZV9f KSArPSAoKHN1YnNsaWNlX18pID09IDApKSBcCi0JCWZvcl9lYWNoX2lmKChCSVQoc2xpY2VfXykg JiBpbnN0ZG9uZV9zbGljZV9tYXNrKGRldl9wcml2X18pKSAmJiBcCi0JCQkgICAgKEJJVChzdWJz bGljZV9fKSAmIGluc3Rkb25lX3N1YnNsaWNlX21hc2soZGV2X3ByaXZfXykpKQorI2RlZmluZSBp bnN0ZG9uZV9oYXNfc2xpY2UoZGV2X3ByaXZfX18sIHNzZXVfX18sIHNsaWNlX19fKSBcCisJKChJ U19HRU4oZGV2X3ByaXZfX18sIDcpID8gXAorCSAgMSA6IChzc2V1X19fKS0+c2xpY2VfbWFzaykg JiBcCisJQklUKHNsaWNlX19fKSkgXAorCisjZGVmaW5lIGluc3Rkb25lX2hhc19zdWJzbGljZShk ZXZfcHJpdl9fLCBzc2V1X18sIHNsaWNlX18sIHN1YnNsaWNlX18pIFwKKwkoKElTX0dFTihkZXZf cHJpdl9fLCA3KSA/IFwKKwkgIDEgOiAoc3NldV9fKS0+c3Vic2xpY2VfbWFza1tzbGljZV9fICog KHNzZXVfXyktPnNzX3N0cmlkZSArIFwKKwkJCQkgICAgICBzdWJzbGljZV9fIC8gQklUU19QRVJf QllURV0pICYgXAorCSBCSVQoc3Vic2xpY2VfXyAlIEJJVFNfUEVSX0JZVEUpKSBcCisKKyNkZWZp bmUgZm9yX2VhY2hfaW5zdGRvbmVfc2xpY2Vfc3Vic2xpY2UoZGV2X3ByaXZfLCBzc2V1Xywgc2xp Y2VfLCBzdWJzbGljZV8pIFwKKwlmb3IgKChzbGljZV8pID0gMCwgKHN1YnNsaWNlXykgPSAwOyAo c2xpY2VfKSA8IEk5MTVfTUFYX1NMSUNFUzsgXAorCSAgICAgKHN1YnNsaWNlXykgPSAoKHN1YnNs aWNlXykgKyAxKSA8IEk5MTVfTUFYX1NVQlNMSUNFUyA/IChzdWJzbGljZV8pICsgMSA6IDAsIFwK KwkgICAgICAgKHNsaWNlXykgKz0gKChzdWJzbGljZV8pID09IDApKSBcCisJCWZvcl9lYWNoX2lm KGluc3Rkb25lX2hhc19zbGljZShkZXZfcHJpdl8sIHNzZXVfLCBzbGljZSkgJiYgXAorCQkJICAg IGluc3Rkb25lX2hhc19zdWJzbGljZShkZXZfcHJpdl8sIHNzZXVfLCBzbGljZV8sIHN1YnNsaWNl XykpIFwKIAogI2VuZGlmIC8qIF9fSU5URUxfRU5HSU5FX1RZUEVTX0hfXyAqLwpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfaGFuZ2NoZWNrLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC9pbnRlbF9oYW5nY2hlY2suYwppbmRleCBlNWVhYTA2ZmU3NGQuLjUzYzFj OTgxNjFlMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfaGFuZ2No ZWNrLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfaGFuZ2NoZWNrLmMKQEAg LTUwLDYgKzUwLDcgQEAgc3RhdGljIGJvb2wgaW5zdGRvbmVfdW5jaGFuZ2VkKHUzMiBjdXJyZW50 X2luc3Rkb25lLCB1MzIgKm9sZF9pbnN0ZG9uZSkKIHN0YXRpYyBib29sIHN1YnVuaXRzX3N0dWNr KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSBlbmdpbmUtPmk5MTU7CisJY29uc3Qgc3RydWN0IHNzZXVfZGV2X2lu Zm8gKnNzZXUgPSAmUlVOVElNRV9JTkZPKGRldl9wcml2KS0+c3NldTsKIAlzdHJ1Y3QgaW50ZWxf aW5zdGRvbmUgaW5zdGRvbmU7CiAJc3RydWN0IGludGVsX2luc3Rkb25lICphY2N1X2luc3Rkb25l ID0gJmVuZ2luZS0+aGFuZ2NoZWNrLmluc3Rkb25lOwogCWJvb2wgc3R1Y2s7CkBAIC03MSw3ICs3 Miw3IEBAIHN0YXRpYyBib29sIHN1YnVuaXRzX3N0dWNrKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSkKIAlzdHVjayAmPSBpbnN0ZG9uZV91bmNoYW5nZWQoaW5zdGRvbmUuc2xpY2VfY29t bW9uLAogCQkJCSAgICAmYWNjdV9pbnN0ZG9uZS0+c2xpY2VfY29tbW9uKTsKIAotCWZvcl9lYWNo X2luc3Rkb25lX3NsaWNlX3N1YnNsaWNlKGRldl9wcml2LCBzbGljZSwgc3Vic2xpY2UpIHsKKwlm b3JfZWFjaF9pbnN0ZG9uZV9zbGljZV9zdWJzbGljZShkZXZfcHJpdiwgc3NldSwgc2xpY2UsIHN1 YnNsaWNlKSB7CiAJCXN0dWNrICY9IGluc3Rkb25lX3VuY2hhbmdlZChpbnN0ZG9uZS5zYW1wbGVy W3NsaWNlXVtzdWJzbGljZV0sCiAJCQkJCSAgICAmYWNjdV9pbnN0ZG9uZS0+c2FtcGxlcltzbGlj ZV1bc3Vic2xpY2VdKTsKIAkJc3R1Y2sgJj0gaW5zdGRvbmVfdW5jaGFuZ2VkKGluc3Rkb25lLnJv d1tzbGljZV1bc3Vic2xpY2VdLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv aW50ZWxfc3NldS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfc3NldS5jCmluZGV4 IDRhMGI4MmZjMTA4Yy4uNDkzMTZiN2VmMDc0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC9pbnRlbF9zc2V1LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxf c3NldS5jCkBAIC04LDYgKzgsMTcgQEAKICNpbmNsdWRlICJpbnRlbF9scmNfcmVnLmgiCiAjaW5j bHVkZSAiaW50ZWxfc3NldS5oIgogCit2b2lkIGludGVsX3NzZXVfc2V0X2luZm8oc3RydWN0IHNz ZXVfZGV2X2luZm8gKnNzZXUsIHU4IG1heF9zbGljZXMsCisJCQkgdTggbWF4X3N1YnNsaWNlcywg dTggbWF4X2V1c19wZXJfc3Vic2xpY2UpCit7CisJc3NldS0+bWF4X3NsaWNlcyA9IG1heF9zbGlj ZXM7CisJc3NldS0+bWF4X3N1YnNsaWNlcyA9IG1heF9zdWJzbGljZXM7CisJc3NldS0+bWF4X2V1 c19wZXJfc3Vic2xpY2UgPSBtYXhfZXVzX3Blcl9zdWJzbGljZTsKKworCXNzZXUtPnNzX3N0cmlk ZSA9IEdFTl9TU0VVX1NUUklERShzc2V1LT5tYXhfc3Vic2xpY2VzKTsKKwlzc2V1LT5ldV9zdHJp ZGUgPSBHRU5fU1NFVV9TVFJJREUoc3NldS0+bWF4X2V1c19wZXJfc3Vic2xpY2UpOworfQorCiB1 bnNpZ25lZCBpbnQKIGludGVsX3NzZXVfc3Vic2xpY2VfdG90YWwoY29uc3Qgc3RydWN0IHNzZXVf ZGV2X2luZm8gKnNzZXUpCiB7CkBAIC0yMiwxNyArMzMsMzkgQEAgaW50ZWxfc3NldV9zdWJzbGlj ZV90b3RhbChjb25zdCBzdHJ1Y3Qgc3NldV9kZXZfaW5mbyAqc3NldSkKIHVuc2lnbmVkIGludAog aW50ZWxfc3NldV9zdWJzbGljZXNfcGVyX3NsaWNlKGNvbnN0IHN0cnVjdCBzc2V1X2Rldl9pbmZv ICpzc2V1LCB1OCBzbGljZSkKIHsKLQlyZXR1cm4gaHdlaWdodDgoc3NldS0+c3Vic2xpY2VfbWFz a1tzbGljZV0pOworCXVuc2lnbmVkIGludCBpLCB0b3RhbCA9IDA7CisKKwlmb3IgKGkgPSAwOyBp IDwgc3NldS0+c3Nfc3RyaWRlOyBpKyspCisJCXRvdGFsICs9IGh3ZWlnaHQ4KHNzZXUtPnN1YnNs aWNlX21hc2tbc2xpY2UgKiBzc2V1LT5zc19zdHJpZGUgKworCQkJCQkJICAgICAgaV0pOworCisJ cmV0dXJuIHRvdGFsOworfQorCit2b2lkIGludGVsX3NzZXVfY29weV9zdWJzbGljZXMoY29uc3Qg c3RydWN0IHNzZXVfZGV2X2luZm8gKnNzZXUsIGludCBzbGljZSwKKwkJCSAgICAgICB1OCAqdG9f bWFzaywgY29uc3QgdTggKmZyb21fbWFzaykKK3sKKwlpbnQgb2Zmc2V0ID0gc2xpY2UgKiBzc2V1 LT5zc19zdHJpZGU7CisKKwltZW1jcHkoJnRvX21hc2tbb2Zmc2V0XSwgJmZyb21fbWFza1tvZmZz ZXRdLCBzc2V1LT5zc19zdHJpZGUpOworfQorCit2b2lkIGludGVsX3NzZXVfc2V0X3N1YnNsaWNl cyhzdHJ1Y3Qgc3NldV9kZXZfaW5mbyAqc3NldSwgaW50IHNsaWNlLAorCQkJICAgICAgdTMyIHNz X21hc2spCit7CisJaW50IGksIG9mZnNldCA9IHNsaWNlICogc3NldS0+c3Nfc3RyaWRlOworCisJ Zm9yIChpID0gMDsgaSA8IHNzZXUtPnNzX3N0cmlkZTsgaSsrKQorCQlzc2V1LT5zdWJzbGljZV9t YXNrW29mZnNldCArIGldID0KKwkJCShzc19tYXNrID4+IChCSVRTX1BFUl9CWVRFICogaSkpICYg MHhmZjsKIH0KIAogc3RhdGljIGludCBpbnRlbF9zc2V1X2V1X2lkeChjb25zdCBzdHJ1Y3Qgc3Nl dV9kZXZfaW5mbyAqc3NldSwgaW50IHNsaWNlLAogCQkJICAgICBpbnQgc3Vic2xpY2UpCiB7Ci0J aW50IHN1YnNsaWNlX3N0cmlkZSA9IERJVl9ST1VORF9VUChzc2V1LT5tYXhfZXVzX3Blcl9zdWJz bGljZSwKLQkJCQkJICAgQklUU19QRVJfQllURSk7Ci0JaW50IHNsaWNlX3N0cmlkZSA9IHNzZXUt Pm1heF9zdWJzbGljZXMgKiBzdWJzbGljZV9zdHJpZGU7CisJaW50IHNsaWNlX3N0cmlkZSA9IHNz ZXUtPm1heF9zdWJzbGljZXMgKiBzc2V1LT5ldV9zdHJpZGU7CiAKLQlyZXR1cm4gc2xpY2UgKiBz bGljZV9zdHJpZGUgKyBzdWJzbGljZSAqIHN1YnNsaWNlX3N0cmlkZTsKKwlyZXR1cm4gc2xpY2Ug KiBzbGljZV9zdHJpZGUgKyBzdWJzbGljZSAqIHNzZXUtPmV1X3N0cmlkZTsKIH0KIAogdTE2IGlu dGVsX3NzZXVfZ2V0X2V1cyhjb25zdCBzdHJ1Y3Qgc3NldV9kZXZfaW5mbyAqc3NldSwgaW50IHNs aWNlLApAQCAtNDEsOCArNzQsNyBAQCB1MTYgaW50ZWxfc3NldV9nZXRfZXVzKGNvbnN0IHN0cnVj dCBzc2V1X2Rldl9pbmZvICpzc2V1LCBpbnQgc2xpY2UsCiAJaW50IGksIG9mZnNldCA9IGludGVs X3NzZXVfZXVfaWR4KHNzZXUsIHNsaWNlLCBzdWJzbGljZSk7CiAJdTE2IGV1X21hc2sgPSAwOwog Ci0JZm9yIChpID0gMDsKLQkgICAgIGkgPCBESVZfUk9VTkRfVVAoc3NldS0+bWF4X2V1c19wZXJf c3Vic2xpY2UsIEJJVFNfUEVSX0JZVEUpOyBpKyspIHsKKwlmb3IgKGkgPSAwOyBpIDwgc3NldS0+ ZXVfc3RyaWRlOyBpKyspIHsKIAkJZXVfbWFzayB8PSAoKHUxNilzc2V1LT5ldV9tYXNrW29mZnNl dCArIGldKSA8PAogCQkJKGkgKiBCSVRTX1BFUl9CWVRFKTsKIAl9CkBAIC01NSw4ICs4Nyw3IEBA IHZvaWQgaW50ZWxfc3NldV9zZXRfZXVzKHN0cnVjdCBzc2V1X2Rldl9pbmZvICpzc2V1LCBpbnQg c2xpY2UsIGludCBzdWJzbGljZSwKIHsKIAlpbnQgaSwgb2Zmc2V0ID0gaW50ZWxfc3NldV9ldV9p ZHgoc3NldSwgc2xpY2UsIHN1YnNsaWNlKTsKIAotCWZvciAoaSA9IDA7Ci0JICAgICBpIDwgRElW X1JPVU5EX1VQKHNzZXUtPm1heF9ldXNfcGVyX3N1YnNsaWNlLCBCSVRTX1BFUl9CWVRFKTsgaSsr KSB7CisJZm9yIChpID0gMDsgaSA8IHNzZXUtPmV1X3N0cmlkZTsgaSsrKSB7CiAJCXNzZXUtPmV1 X21hc2tbb2Zmc2V0ICsgaV0gPQogCQkJKGV1X21hc2sgPj4gKEJJVFNfUEVSX0JZVEUgKiBpKSkg JiAweGZmOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Nz ZXUuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3NzZXUuaAppbmRleCA1NmUzNzIx YWU4M2YuLmJmMDFmMzM4YThjYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv aW50ZWxfc3NldS5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3NzZXUuaApA QCAtOSwxNiArOSwxOCBAQAogCiAjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KICNpbmNsdWRlIDxs aW51eC9rZXJuZWwuaD4KKyNpbmNsdWRlIDxsaW51eC9zdHJpbmcuaD4KIAogc3RydWN0IGRybV9p OTE1X3ByaXZhdGU7CiAKICNkZWZpbmUgR0VOX01BWF9TTElDRVMJCSg2KSAvKiBDTkwgdXBwZXIg Ym91bmQgKi8KICNkZWZpbmUgR0VOX01BWF9TVUJTTElDRVMJKDgpIC8qIElDTCB1cHBlciBib3Vu ZCAqLwogI2RlZmluZSBHRU5fU1NFVV9TVFJJREUoYml0cykgRElWX1JPVU5EX1VQKGJpdHMsIEJJ VFNfUEVSX0JZVEUpCisjZGVmaW5lIEdFTl9NQVhfU1VCU0xJQ0VfU1RSSURFIEdFTl9TU0VVX1NU UklERShHRU5fTUFYX1NVQlNMSUNFUykKIAogc3RydWN0IHNzZXVfZGV2X2luZm8gewogCXU4IHNs aWNlX21hc2s7Ci0JdTggc3Vic2xpY2VfbWFza1tHRU5fTUFYX1NMSUNFU107CisJdTggc3Vic2xp Y2VfbWFza1tHRU5fTUFYX1NMSUNFUyAqIEdFTl9NQVhfU1VCU0xJQ0VfU1RSSURFXTsKIAl1MTYg ZXVfdG90YWw7CiAJdTggZXVfcGVyX3N1YnNsaWNlOwogCXU4IG1pbl9ldV9pbl9wb29sOwpAQCAt MzMsNiArMzUsOSBAQCBzdHJ1Y3Qgc3NldV9kZXZfaW5mbyB7CiAJdTggbWF4X3N1YnNsaWNlczsK IAl1OCBtYXhfZXVzX3Blcl9zdWJzbGljZTsKIAorCXU4IHNzX3N0cmlkZTsKKwl1OCBldV9zdHJp ZGU7CisKIAkvKiBXZSBkb24ndCBoYXZlIG1vcmUgdGhhbiA4IGV1cyBwZXIgc3Vic2xpY2UgYXQg dGhlIG1vbWVudCBhbmQgYXMgd2UKIAkgKiBzdG9yZSBldXMgZW5hYmxlZCB1c2luZyBiaXRzLCBu byBuZWVkIHRvIG11bHRpcGx5IGJ5IGV1cyBwZXIKIAkgKiBzdWJzbGljZS4KQEAgLTYzLDEyICs2 OCwyMSBAQCBpbnRlbF9zc2V1X2Zyb21fZGV2aWNlX2luZm8oY29uc3Qgc3RydWN0IHNzZXVfZGV2 X2luZm8gKnNzZXUpCiAJcmV0dXJuIHZhbHVlOwogfQogCit2b2lkIGludGVsX3NzZXVfc2V0X2lu Zm8oc3RydWN0IHNzZXVfZGV2X2luZm8gKnNzZXUsIHU4IG1heF9zbGljZXMsCisJCQkgdTggbWF4 X3N1YnNsaWNlcywgdTggbWF4X2V1c19wZXJfc3Vic2xpY2UpOworCiB1bnNpZ25lZCBpbnQKIGlu dGVsX3NzZXVfc3Vic2xpY2VfdG90YWwoY29uc3Qgc3RydWN0IHNzZXVfZGV2X2luZm8gKnNzZXUp OwogCiB1bnNpZ25lZCBpbnQKIGludGVsX3NzZXVfc3Vic2xpY2VzX3Blcl9zbGljZShjb25zdCBz dHJ1Y3Qgc3NldV9kZXZfaW5mbyAqc3NldSwgdTggc2xpY2UpOwogCit2b2lkIGludGVsX3NzZXVf Y29weV9zdWJzbGljZXMoY29uc3Qgc3RydWN0IHNzZXVfZGV2X2luZm8gKnNzZXUsIGludCBzbGlj ZSwKKwkJCSAgICAgICB1OCAqdG9fbWFzaywgY29uc3QgdTggKmZyb21fbWFzayk7CisKK3ZvaWQg aW50ZWxfc3NldV9zZXRfc3Vic2xpY2VzKHN0cnVjdCBzc2V1X2Rldl9pbmZvICpzc2V1LCBpbnQg c2xpY2UsCisJCQkgICAgICB1MzIgc3NfbWFzayk7CisKIHUxNiBpbnRlbF9zc2V1X2dldF9ldXMo Y29uc3Qgc3RydWN0IHNzZXVfZGV2X2luZm8gKnNzZXUsIGludCBzbGljZSwKIAkJICAgICAgIGlu dCBzdWJzbGljZSk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVs X3dvcmthcm91bmRzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF93b3JrYXJvdW5k cy5jCmluZGV4IDU3NTE0NDZhNGIwYi4uNTFkZjg4ODczZmY1IDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC9pbnRlbF93b3JrYXJvdW5kcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d0L2ludGVsX3dvcmthcm91bmRzLmMKQEAgLTc3MSw3ICs3NzEsNyBAQCB3YV9pbml0 X21jcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgc3RydWN0IGk5MTVfd2FfbGlzdCAq d2FsKQogCQl1MzIgc2xpY2UgPSBmbHMoc3NldS0+c2xpY2VfbWFzayk7CiAJCXUzMiBmdXNlMyA9 CiAJCQlpbnRlbF91bmNvcmVfcmVhZCgmaTkxNS0+dW5jb3JlLCBHRU4xMF9NSVJST1JfRlVTRTMp OwotCQl1OCBzc19tYXNrID0gc3NldS0+c3Vic2xpY2VfbWFza1tzbGljZV07CisJCXU4IHNzX21h c2sgPSBzc2V1LT5zdWJzbGljZV9tYXNrW3NsaWNlICogc3NldS0+c3Nfc3RyaWRlXTsKIAogCQl1 OCBlbmFibGVkX21hc2sgPSAoc3NfbWFzayB8IHNzX21hc2sgPj4KIAkJCQkgICBHRU4xMF9MM0JB TktfUEFJUl9DT1VOVCkgJiBHRU4xMF9MM0JBTktfTUFTSzsKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k ZWJ1Z2ZzLmMKaW5kZXggMjBhYzc4MmM1MGM4Li5hNDUyOTljZDY5ODkgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZGVidWdmcy5jCkBAIC0xMjU2LDYgKzEyNTYsNyBAQCBzdGF0aWMgdm9pZCBpOTE1 X2luc3Rkb25lX2luZm8oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQkJICAg ICAgIHN0cnVjdCBzZXFfZmlsZSAqbSwKIAkJCSAgICAgICBzdHJ1Y3QgaW50ZWxfaW5zdGRvbmUg Kmluc3Rkb25lKQogeworCXN0cnVjdCBzc2V1X2Rldl9pbmZvICpzc2V1ID0gJlJVTlRJTUVfSU5G TyhkZXZfcHJpdiktPnNzZXU7CiAJaW50IHNsaWNlOwogCWludCBzdWJzbGljZTsKIApAQCAtMTI3 MSwxMSArMTI3MiwxMSBAQCBzdGF0aWMgdm9pZCBpOTE1X2luc3Rkb25lX2luZm8oc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDw9IDYp CiAJCXJldHVybjsKIAotCWZvcl9lYWNoX2luc3Rkb25lX3NsaWNlX3N1YnNsaWNlKGRldl9wcml2 LCBzbGljZSwgc3Vic2xpY2UpCisJZm9yX2VhY2hfaW5zdGRvbmVfc2xpY2Vfc3Vic2xpY2UoZGV2 X3ByaXYsIHNzZXUsIHNsaWNlLCBzdWJzbGljZSkKIAkJc2VxX3ByaW50ZihtLCAiXHRcdFNBTVBM RVJfSU5TVERPTkVbJWRdWyVkXTogMHglMDh4XG4iLAogCQkJICAgc2xpY2UsIHN1YnNsaWNlLCBp bnN0ZG9uZS0+c2FtcGxlcltzbGljZV1bc3Vic2xpY2VdKTsKIAotCWZvcl9lYWNoX2luc3Rkb25l X3NsaWNlX3N1YnNsaWNlKGRldl9wcml2LCBzbGljZSwgc3Vic2xpY2UpCisJZm9yX2VhY2hfaW5z dGRvbmVfc2xpY2Vfc3Vic2xpY2UoZGV2X3ByaXYsIHNzZXUsIHNsaWNlLCBzdWJzbGljZSkKIAkJ c2VxX3ByaW50ZihtLCAiXHRcdFJPV19JTlNURE9ORVslZF1bJWRdOiAweCUwOHhcbiIsCiAJCQkg ICBzbGljZSwgc3Vic2xpY2UsIGluc3Rkb25lLT5yb3dbc2xpY2VdW3N1YnNsaWNlXSk7CiB9CkBA IC00MDY1LDcgKzQwNjYsOSBAQCBzdGF0aWMgdm9pZCBnZW4xMF9zc2V1X2RldmljZV9zdGF0dXMo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQkJY29udGludWU7CiAKIAkJc3Nl dS0+c2xpY2VfbWFzayB8PSBCSVQocyk7Ci0JCXNzZXUtPnN1YnNsaWNlX21hc2tbc10gPSBpbmZv LT5zc2V1LnN1YnNsaWNlX21hc2tbc107CisJCWludGVsX3NzZXVfY29weV9zdWJzbGljZXMoJmlu Zm8tPnNzZXUsIHMsCisJCQkJCSAgc3NldS0+c3Vic2xpY2VfbWFzaywKKwkJCQkJICBpbmZvLT5z c2V1LnN1YnNsaWNlX21hc2spOwogCiAJCWZvciAoc3MgPSAwOyBzcyA8IGluZm8tPnNzZXUubWF4 X3N1YnNsaWNlczsgc3MrKykgewogCQkJdW5zaWduZWQgaW50IGV1X2NudDsKQEAgLTQxMTYsMTgg KzQxMTksMjIgQEAgc3RhdGljIHZvaWQgZ2VuOV9zc2V1X2RldmljZV9zdGF0dXMoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQlzc2V1LT5zbGljZV9tYXNrIHw9IEJJVChzKTsK IAogCQlpZiAoSVNfR0VOOV9CQyhkZXZfcHJpdikpCi0JCQlzc2V1LT5zdWJzbGljZV9tYXNrW3Nd ID0KLQkJCQlSVU5USU1FX0lORk8oZGV2X3ByaXYpLT5zc2V1LnN1YnNsaWNlX21hc2tbc107CisJ CQlpbnRlbF9zc2V1X2NvcHlfc3Vic2xpY2VzKCZpbmZvLT5zc2V1LCBzLAorCQkJCQkJICBzc2V1 LT5zdWJzbGljZV9tYXNrLAorCQkJCQkJICBpbmZvLT5zc2V1LnN1YnNsaWNlX21hc2spOwogCiAJ CWZvciAoc3MgPSAwOyBzcyA8IGluZm8tPnNzZXUubWF4X3N1YnNsaWNlczsgc3MrKykgewogCQkJ dW5zaWduZWQgaW50IGV1X2NudDsKKwkJCXU4IHNzX2lkeCA9IHMgKiBpbmZvLT5zc2V1LnNzX3N0 cmlkZSArCisJCQkJICAgIHNzIC8gQklUU19QRVJfQllURTsKIAogCQkJaWYgKElTX0dFTjlfTFAo ZGV2X3ByaXYpKSB7CiAJCQkJaWYgKCEoc19yZWdbc10gJiAoR0VOOV9QR0NUTF9TU19BQ0soc3Mp KSkpCiAJCQkJCS8qIHNraXAgZGlzYWJsZWQgc3Vic2xpY2UgKi8KIAkJCQkJY29udGludWU7CiAK LQkJCQlzc2V1LT5zdWJzbGljZV9tYXNrW3NdIHw9IEJJVChzcyk7CisJCQkJc3NldS0+c3Vic2xp Y2VfbWFza1tzc19pZHhdIHw9CisJCQkJCUJJVChzcyAlIEJJVFNfUEVSX0JZVEUpOwogCQkJfQog CiAJCQlldV9jbnQgPSAyICogaHdlaWdodDMyKGV1X3JlZ1syKnMgKyBzcy8yXSAmCkBAIC00MTQ0 LDI1ICs0MTUxLDI0IEBAIHN0YXRpYyB2b2lkIGdlbjlfc3NldV9kZXZpY2Vfc3RhdHVzKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIHN0YXRpYyB2b2lkIGJyb2Fkd2VsbF9zc2V1 X2RldmljZV9zdGF0dXMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQkJCQkg c3RydWN0IHNzZXVfZGV2X2luZm8gKnNzZXUpCiB7CisJc3RydWN0IGludGVsX3J1bnRpbWVfaW5m byAqaW5mbyA9IFJVTlRJTUVfSU5GTyhkZXZfcHJpdik7CiAJdTMyIHNsaWNlX2luZm8gPSBJOTE1 X1JFQUQoR0VOOF9HVF9TTElDRV9JTkZPKTsKIAlpbnQgczsKIAogCXNzZXUtPnNsaWNlX21hc2sg PSBzbGljZV9pbmZvICYgR0VOOF9MU0xJQ0VTVEFUX01BU0s7CiAKIAlpZiAoc3NldS0+c2xpY2Vf bWFzaykgewotCQlzc2V1LT5ldV9wZXJfc3Vic2xpY2UgPQotCQkJUlVOVElNRV9JTkZPKGRldl9w cml2KS0+c3NldS5ldV9wZXJfc3Vic2xpY2U7Ci0JCWZvciAocyA9IDA7IHMgPCBmbHMoc3NldS0+ c2xpY2VfbWFzayk7IHMrKykgewotCQkJc3NldS0+c3Vic2xpY2VfbWFza1tzXSA9Ci0JCQkJUlVO VElNRV9JTkZPKGRldl9wcml2KS0+c3NldS5zdWJzbGljZV9tYXNrW3NdOwotCQl9CisJCXNzZXUt PmV1X3Blcl9zdWJzbGljZSA9IGluZm8tPnNzZXUuZXVfcGVyX3N1YnNsaWNlOworCQlmb3IgKHMg PSAwOyBzIDwgZmxzKHNzZXUtPnNsaWNlX21hc2spOyBzKyspCisJCQlpbnRlbF9zc2V1X2NvcHlf c3Vic2xpY2VzKCZpbmZvLT5zc2V1LCBzLAorCQkJCQkJICBzc2V1LT5zdWJzbGljZV9tYXNrLAor CQkJCQkJICBpbmZvLT5zc2V1LnN1YnNsaWNlX21hc2spOwogCQlzc2V1LT5ldV90b3RhbCA9IHNz ZXUtPmV1X3Blcl9zdWJzbGljZSAqCiAJCQkJIGludGVsX3NzZXVfc3Vic2xpY2VfdG90YWwoc3Nl dSk7CiAKIAkJLyogc3VidHJhY3QgZnVzZWQgb2ZmIEVVKHMpIGZyb20gZW5hYmxlZCBzbGljZShz KSAqLwogCQlmb3IgKHMgPSAwOyBzIDwgZmxzKHNzZXUtPnNsaWNlX21hc2spOyBzKyspIHsKLQkJ CXU4IHN1YnNsaWNlXzdldSA9Ci0JCQkJUlVOVElNRV9JTkZPKGRldl9wcml2KS0+c3NldS5zdWJz bGljZV83ZXVbc107CisJCQl1OCBzdWJzbGljZV83ZXUgPSBpbmZvLT5zc2V1LnN1YnNsaWNlXzdl dVtzXTsKIAogCQkJc3NldS0+ZXVfdG90YWwgLT0gaHdlaWdodDgoc3Vic2xpY2VfN2V1KTsKIAkJ fQpAQCAtNDIwOSw2ICs0MjE1LDcgQEAgc3RhdGljIHZvaWQgaTkxNV9wcmludF9zc2V1X2luZm8o c3RydWN0IHNlcV9maWxlICptLCBib29sIGlzX2F2YWlsYWJsZV9pbmZvLAogc3RhdGljIGludCBp OTE1X3NzZXVfc3RhdHVzKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQogewogCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IG5vZGVfdG9faTkxNShtLT5wcml2YXRl KTsKKwljb25zdCBzdHJ1Y3QgaW50ZWxfcnVudGltZV9pbmZvICppbmZvID0gUlVOVElNRV9JTkZP KGRldl9wcml2KTsKIAlzdHJ1Y3Qgc3NldV9kZXZfaW5mbyBzc2V1OwogCWludGVsX3dha2VyZWZf dCB3YWtlcmVmOwogCkBAIC00MjE2LDE0ICs0MjIzLDEzIEBAIHN0YXRpYyBpbnQgaTkxNV9zc2V1 X3N0YXR1cyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKIAkJcmV0dXJuIC1FTk9E RVY7CiAKIAlzZXFfcHV0cyhtLCAiU1NFVSBEZXZpY2UgSW5mb1xuIik7Ci0JaTkxNV9wcmludF9z c2V1X2luZm8obSwgdHJ1ZSwgJlJVTlRJTUVfSU5GTyhkZXZfcHJpdiktPnNzZXUpOworCWk5MTVf cHJpbnRfc3NldV9pbmZvKG0sIHRydWUsICZpbmZvLT5zc2V1KTsKIAogCXNlcV9wdXRzKG0sICJT U0VVIERldmljZSBTdGF0dXNcbiIpOwogCW1lbXNldCgmc3NldSwgMCwgc2l6ZW9mKHNzZXUpKTsK LQlzc2V1Lm1heF9zbGljZXMgPSBSVU5USU1FX0lORk8oZGV2X3ByaXYpLT5zc2V1Lm1heF9zbGlj ZXM7Ci0Jc3NldS5tYXhfc3Vic2xpY2VzID0gUlVOVElNRV9JTkZPKGRldl9wcml2KS0+c3NldS5t YXhfc3Vic2xpY2VzOwotCXNzZXUubWF4X2V1c19wZXJfc3Vic2xpY2UgPQotCQlSVU5USU1FX0lO Rk8oZGV2X3ByaXYpLT5zc2V1Lm1heF9ldXNfcGVyX3N1YnNsaWNlOworCWludGVsX3NzZXVfc2V0 X2luZm8oJnNzZXUsIGluZm8tPnNzZXUubWF4X3NsaWNlcywKKwkJCSAgICBpbmZvLT5zc2V1Lm1h eF9zdWJzbGljZXMsCisJCQkgICAgaW5mby0+c3NldS5tYXhfZXVzX3Blcl9zdWJzbGljZSk7CiAK IAl3aXRoX2ludGVsX3J1bnRpbWVfcG0oZGV2X3ByaXYsIHdha2VyZWYpIHsKIAkJaWYgKElTX0NI RVJSWVZJRVcoZGV2X3ByaXYpKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKaW5kZXggYzdhYjBmNzI0 MDIxLi44MjBiOTIxNmNiMTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwpAQCAtMzIzLDcgKzMy Myw3IEBAIHN0YXRpYyBpbnQgaTkxNV9nZXRwYXJhbV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LCB2b2lkICpkYXRhLAogCXN0cnVjdCBwY2lfZGV2ICpwZGV2ID0gZGV2X3ByaXYtPmRybS5w ZGV2OwogCXN0cnVjdCBzc2V1X2Rldl9pbmZvICpzc2V1ID0gJlJVTlRJTUVfSU5GTyhkZXZfcHJp diktPnNzZXU7CiAJZHJtX2k5MTVfZ2V0cGFyYW1fdCAqcGFyYW0gPSBkYXRhOwotCWludCB2YWx1 ZTsKKwlpbnQgdmFsdWUgPSAwOwogCiAJc3dpdGNoIChwYXJhbS0+cGFyYW0pIHsKIAljYXNlIEk5 MTVfUEFSQU1fSVJRX0FDVElWRToKQEAgLTQ1Miw3ICs0NTIsOSBAQCBzdGF0aWMgaW50IGk5MTVf Z2V0cGFyYW1faW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAkJCXJl dHVybiAtRU5PREVWOwogCQlicmVhazsKIAljYXNlIEk5MTVfUEFSQU1fU1VCU0xJQ0VfTUFTSzoK LQkJdmFsdWUgPSBzc2V1LT5zdWJzbGljZV9tYXNrWzBdOworCQkvKiBPbmx5IGNvcHkgYml0cyBm cm9tIHRoZSBmaXJzdCBzdWJzbGljZSAqLworCQltZW1jcHkoJnZhbHVlLCBzc2V1LT5zdWJzbGlj ZV9tYXNrLAorCQkgICAgICAgbWluKHNzZXUtPnNzX3N0cmlkZSwgKHU4KXNpemVvZih2YWx1ZSkp KTsKIAkJaWYgKCF2YWx1ZSkKIAkJCXJldHVybiAtRU5PREVWOwogCQlicmVhazsKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jCmluZGV4IGY1MWZmNjgzZGQyZS4uOWRhNDExOGFkNDNh IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMKQEAgLTQwNSw2ICs0MDUsNyBA QCBzdGF0aWMgdm9pZCBwcmludF9lcnJvcl9idWZmZXJzKHN0cnVjdCBkcm1faTkxNV9lcnJvcl9z dGF0ZV9idWYgKm0sCiBzdGF0aWMgdm9pZCBlcnJvcl9wcmludF9pbnN0ZG9uZShzdHJ1Y3QgZHJt X2k5MTVfZXJyb3Jfc3RhdGVfYnVmICptLAogCQkJCSBjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfZXJy b3JfZW5naW5lICplZSkKIHsKKwlzdHJ1Y3Qgc3NldV9kZXZfaW5mbyAqc3NldSA9ICZSVU5USU1F X0lORk8obS0+aTkxNSktPnNzZXU7CiAJaW50IHNsaWNlOwogCWludCBzdWJzbGljZTsKIApAQCAt NDIwLDEyICs0MjEsMTIgQEAgc3RhdGljIHZvaWQgZXJyb3JfcHJpbnRfaW5zdGRvbmUoc3RydWN0 IGRybV9pOTE1X2Vycm9yX3N0YXRlX2J1ZiAqbSwKIAlpZiAoSU5URUxfR0VOKG0tPmk5MTUpIDw9 IDYpCiAJCXJldHVybjsKIAotCWZvcl9lYWNoX2luc3Rkb25lX3NsaWNlX3N1YnNsaWNlKG0tPmk5 MTUsIHNsaWNlLCBzdWJzbGljZSkKKwlmb3JfZWFjaF9pbnN0ZG9uZV9zbGljZV9zdWJzbGljZSht LT5pOTE1LCBzc2V1LCBzbGljZSwgc3Vic2xpY2UpCiAJCWVycl9wcmludGYobSwgIiAgU0FNUExF Ul9JTlNURE9ORVslZF1bJWRdOiAweCUwOHhcbiIsCiAJCQkgICBzbGljZSwgc3Vic2xpY2UsCiAJ CQkgICBlZS0+aW5zdGRvbmUuc2FtcGxlcltzbGljZV1bc3Vic2xpY2VdKTsKIAotCWZvcl9lYWNo X2luc3Rkb25lX3NsaWNlX3N1YnNsaWNlKG0tPmk5MTUsIHNsaWNlLCBzdWJzbGljZSkKKwlmb3Jf ZWFjaF9pbnN0ZG9uZV9zbGljZV9zdWJzbGljZShtLT5pOTE1LCBzc2V1LCBzbGljZSwgc3Vic2xp Y2UpCiAJCWVycl9wcmludGYobSwgIiAgUk9XX0lOU1RET05FWyVkXVslZF06IDB4JTA4eFxuIiwK IAkJCSAgIHNsaWNlLCBzdWJzbGljZSwKIAkJCSAgIGVlLT5pbnN0ZG9uZS5yb3dbc2xpY2VdW3N1 YnNsaWNlXSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3F1ZXJ5LmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3F1ZXJ5LmMKaW5kZXggN2MxNzA4YzIyODExLi4w MDBkY2IxNDVjZTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcXVlcnku YworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3F1ZXJ5LmMKQEAgLTM3LDggKzM3LDYg QEAgc3RhdGljIGludCBxdWVyeV90b3BvbG9neV9pbmZvKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKIAljb25zdCBzdHJ1Y3Qgc3NldV9kZXZfaW5mbyAqc3NldSA9ICZSVU5USU1F X0lORk8oZGV2X3ByaXYpLT5zc2V1OwogCXN0cnVjdCBkcm1faTkxNV9xdWVyeV90b3BvbG9neV9p bmZvIHRvcG87CiAJdTMyIHNsaWNlX2xlbmd0aCwgc3Vic2xpY2VfbGVuZ3RoLCBldV9sZW5ndGgs IHRvdGFsX2xlbmd0aDsKLQl1OCBzdWJzbGljZV9zdHJpZGUgPSBHRU5fU1NFVV9TVFJJREUoc3Nl dS0+bWF4X3N1YnNsaWNlcyk7Ci0JdTggZXVfc3RyaWRlID0gR0VOX1NTRVVfU1RSSURFKHNzZXUt Pm1heF9ldXNfcGVyX3N1YnNsaWNlKTsKIAlpbnQgcmV0OwogCiAJaWYgKHF1ZXJ5X2l0ZW0tPmZs YWdzICE9IDApCkBAIC01MCw4ICs0OCw4IEBAIHN0YXRpYyBpbnQgcXVlcnlfdG9wb2xvZ3lfaW5m byhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJQlVJTERfQlVHX09OKHNpemVv Zih1OCkgIT0gc2l6ZW9mKHNzZXUtPnNsaWNlX21hc2spKTsKIAogCXNsaWNlX2xlbmd0aCA9IHNp emVvZihzc2V1LT5zbGljZV9tYXNrKTsKLQlzdWJzbGljZV9sZW5ndGggPSBzc2V1LT5tYXhfc2xp Y2VzICogc3Vic2xpY2Vfc3RyaWRlOwotCWV1X2xlbmd0aCA9IHNzZXUtPm1heF9zbGljZXMgKiBz c2V1LT5tYXhfc3Vic2xpY2VzICogZXVfc3RyaWRlOworCXN1YnNsaWNlX2xlbmd0aCA9IHNzZXUt Pm1heF9zbGljZXMgKiBzc2V1LT5zc19zdHJpZGU7CisJZXVfbGVuZ3RoID0gc3NldS0+bWF4X3Ns aWNlcyAqIHNzZXUtPm1heF9zdWJzbGljZXMgKiBzc2V1LT5ldV9zdHJpZGU7CiAJdG90YWxfbGVu Z3RoID0gc2l6ZW9mKHRvcG8pICsgc2xpY2VfbGVuZ3RoICsgc3Vic2xpY2VfbGVuZ3RoICsKIAkJ ICAgICAgIGV1X2xlbmd0aDsKIApAQCAtNjksOSArNjcsOSBAQCBzdGF0aWMgaW50IHF1ZXJ5X3Rv cG9sb2d5X2luZm8oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCXRvcG8ubWF4 X2V1c19wZXJfc3Vic2xpY2UgPSBzc2V1LT5tYXhfZXVzX3Blcl9zdWJzbGljZTsKIAogCXRvcG8u c3Vic2xpY2Vfb2Zmc2V0ID0gc2xpY2VfbGVuZ3RoOwotCXRvcG8uc3Vic2xpY2Vfc3RyaWRlID0g c3Vic2xpY2Vfc3RyaWRlOworCXRvcG8uc3Vic2xpY2Vfc3RyaWRlID0gc3NldS0+c3Nfc3RyaWRl OwogCXRvcG8uZXVfb2Zmc2V0ID0gc2xpY2VfbGVuZ3RoICsgc3Vic2xpY2VfbGVuZ3RoOwotCXRv cG8uZXVfc3RyaWRlID0gZXVfc3RyaWRlOworCXRvcG8uZXVfc3RyaWRlID0gc3NldS0+ZXVfc3Ry aWRlOwogCiAJaWYgKF9fY29weV90b191c2VyKHU2NF90b191c2VyX3B0cihxdWVyeV9pdGVtLT5k YXRhX3B0ciksCiAJCQkgICAmdG9wbywgc2l6ZW9mKHRvcG8pKSkKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2RldmljZV9pbmZvLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kZXZpY2VfaW5mby5jCmluZGV4IGUxZGJjY2YwNGNkOS4uYmJiYzBhOGMyMTgzIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZXZpY2VfaW5mby5jCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RldmljZV9pbmZvLmMKQEAgLTg0LDE3ICs4NCw0 MiBAQCB2b2lkIGludGVsX2RldmljZV9pbmZvX2R1bXBfZmxhZ3MoY29uc3Qgc3RydWN0IGludGVs X2RldmljZV9pbmZvICppbmZvLAogI3VuZGVmIFBSSU5UX0ZMQUcKIH0KIAorI2RlZmluZSBTU19T VFJfTUFYX1NJWkUgKEdFTl9NQVhfU1VCU0xJQ0VfU1RSSURFICogMikKKworc3RhdGljIHU4ICoK K3N1YnNsaWNlX3Blcl9zbGljZV9zdHIodTggKmJ1ZiwgY29uc3Qgc3RydWN0IHNzZXVfZGV2X2lu Zm8gKnNzZXUsIHU4IHNsaWNlKQoreworCWludCBpOworCXU4IHNzX29mZnNldCA9IHNsaWNlICog c3NldS0+c3Nfc3RyaWRlOworCisJR0VNX0JVR19PTihzbGljZSA+PSBzc2V1LT5tYXhfc2xpY2Vz KTsKKworCW1lbXNldChidWYsIDAsIFNTX1NUUl9NQVhfU0laRSk7CisKKwkvKgorCSAqIFByaW50 IHN1YnNsaWNlIGluZm9ybWF0aW9uIGluIHJldmVyc2Ugb3JkZXIgdG8gbWF0Y2gKKwkgKiB1c2Vy c3BhY2UgZXhwZWN0YXRpb25zLgorCSAqLworCWZvciAoaSA9IDA7IGkgPCBzc2V1LT5zc19zdHJp ZGU7IGkrKykKKwkJc3ByaW50ZigmYnVmW2kgKiAyXSwgIiUwMngiLAorCQkJc3NldS0+c3Vic2xp Y2VfbWFza1tzc19vZmZzZXQgKyBzc2V1LT5zc19zdHJpZGUgLQorCQkJCQkgICAgKGkgKyAxKV0p OworCisJcmV0dXJuIGJ1ZjsKK30KKwogc3RhdGljIHZvaWQgc3NldV9kdW1wKGNvbnN0IHN0cnVj dCBzc2V1X2Rldl9pbmZvICpzc2V1LCBzdHJ1Y3QgZHJtX3ByaW50ZXIgKnApCiB7CiAJaW50IHM7 CisJdTggYnVmW1NTX1NUUl9NQVhfU0laRV07CiAKIAlkcm1fcHJpbnRmKHAsICJzbGljZSB0b3Rh bDogJXUsIG1hc2s9JTA0eFxuIiwKIAkJICAgaHdlaWdodDgoc3NldS0+c2xpY2VfbWFzayksIHNz ZXUtPnNsaWNlX21hc2spOwogCWRybV9wcmludGYocCwgInN1YnNsaWNlIHRvdGFsOiAldVxuIiwg aW50ZWxfc3NldV9zdWJzbGljZV90b3RhbChzc2V1KSk7CiAJZm9yIChzID0gMDsgcyA8IHNzZXUt Pm1heF9zbGljZXM7IHMrKykgewotCQlkcm1fcHJpbnRmKHAsICJzbGljZSVkOiAldSBzdWJzbGlj ZXMsIG1hc2s9JTA0eFxuIiwKKwkJZHJtX3ByaW50ZihwLCAic2xpY2UlZDogJXUgc3Vic2xpY2Vz LCBtYXNrPSVzXG4iLAogCQkJICAgcywgaW50ZWxfc3NldV9zdWJzbGljZXNfcGVyX3NsaWNlKHNz ZXUsIHMpLAotCQkJICAgc3NldS0+c3Vic2xpY2VfbWFza1tzXSk7CisJCQkgICBzdWJzbGljZV9w ZXJfc2xpY2Vfc3RyKGJ1Ziwgc3NldSwgcykpOwogCX0KIAlkcm1fcHJpbnRmKHAsICJFVSB0b3Rh bDogJXVcbiIsIHNzZXUtPmV1X3RvdGFsKTsKIAlkcm1fcHJpbnRmKHAsICJFVSBwZXIgc3Vic2xp Y2U6ICV1XG4iLCBzc2V1LT5ldV9wZXJfc3Vic2xpY2UpOwpAQCAtMTE4LDYgKzE0Myw3IEBAIHZv aWQgaW50ZWxfZGV2aWNlX2luZm9fZHVtcF90b3BvbG9neShjb25zdCBzdHJ1Y3Qgc3NldV9kZXZf aW5mbyAqc3NldSwKIAkJCQkgICAgIHN0cnVjdCBkcm1fcHJpbnRlciAqcCkKIHsKIAlpbnQgcywg c3M7CisJdTggYnVmW1NTX1NUUl9NQVhfU0laRV07CiAKIAlpZiAoc3NldS0+bWF4X3NsaWNlcyA9 PSAwKSB7CiAJCWRybV9wcmludGYocCwgIlVuYXZhaWxhYmxlXG4iKTsKQEAgLTEyNSw5ICsxNTEs OSBAQCB2b2lkIGludGVsX2RldmljZV9pbmZvX2R1bXBfdG9wb2xvZ3koY29uc3Qgc3RydWN0IHNz ZXVfZGV2X2luZm8gKnNzZXUsCiAJfQogCiAJZm9yIChzID0gMDsgcyA8IHNzZXUtPm1heF9zbGlj ZXM7IHMrKykgewotCQlkcm1fcHJpbnRmKHAsICJzbGljZSVkOiAldSBzdWJzbGljZShzKSAoMHgl aGh4KTpcbiIsCisJCWRybV9wcmludGYocCwgInNsaWNlJWQ6ICV1IHN1YnNsaWNlKHMpICgweCVz KTpcbiIsCiAJCQkgICBzLCBpbnRlbF9zc2V1X3N1YnNsaWNlc19wZXJfc2xpY2Uoc3NldSwgcyks Ci0JCQkgICBzc2V1LT5zdWJzbGljZV9tYXNrW3NdKTsKKwkJCSAgIHN1YnNsaWNlX3Blcl9zbGlj ZV9zdHIoYnVmLCBzc2V1LCBzKSk7CiAKIAkJZm9yIChzcyA9IDA7IHNzIDwgc3NldS0+bWF4X3N1 YnNsaWNlczsgc3MrKykgewogCQkJdTE2IGVuYWJsZWRfZXVzID0gaW50ZWxfc3NldV9nZXRfZXVz KHNzZXUsIHMsIHNzKTsKQEAgLTE1NiwxNSArMTgyLDEwIEBAIHN0YXRpYyB2b2lkIGdlbjExX3Nz ZXVfaW5mb19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAl1OCBldV9l bjsKIAlpbnQgczsKIAotCWlmIChJU19FTEtIQVJUTEFLRShkZXZfcHJpdikpIHsKLQkJc3NldS0+ bWF4X3NsaWNlcyA9IDE7Ci0JCXNzZXUtPm1heF9zdWJzbGljZXMgPSA0OwotCQlzc2V1LT5tYXhf ZXVzX3Blcl9zdWJzbGljZSA9IDg7Ci0JfSBlbHNlIHsKLQkJc3NldS0+bWF4X3NsaWNlcyA9IDE7 Ci0JCXNzZXUtPm1heF9zdWJzbGljZXMgPSA4OwotCQlzc2V1LT5tYXhfZXVzX3Blcl9zdWJzbGlj ZSA9IDg7Ci0JfQorCWlmIChJU19FTEtIQVJUTEFLRShkZXZfcHJpdikpCisJCWludGVsX3NzZXVf c2V0X2luZm8oc3NldSwgMSwgNCwgOCk7CisJZWxzZQorCQlpbnRlbF9zc2V1X3NldF9pbmZvKHNz ZXUsIDEsIDgsIDgpOwogCiAJc19lbiA9IEk5MTVfUkVBRChHRU4xMV9HVF9TTElDRV9FTkFCTEUp ICYgR0VOMTFfR1RfU19FTkFfTUFTSzsKIAlzc19lbiA9IH5JOTE1X1JFQUQoR0VOMTFfR1RfU1VC U0xJQ0VfRElTQUJMRSk7CkBAIC0xNzcsOSArMTk4LDExIEBAIHN0YXRpYyB2b2lkIGdlbjExX3Nz ZXVfaW5mb19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkJCWludCBz czsKIAogCQkJc3NldS0+c2xpY2VfbWFzayB8PSBCSVQocyk7Ci0JCQlzc2V1LT5zdWJzbGljZV9t YXNrW3NdID0gKHNzX2VuID4+IHNzX2lkeCkgJiBzc19lbl9tYXNrOworCQkJc3NldS0+c3Vic2xp Y2VfbWFza1tzICogc3NldS0+c3Nfc3RyaWRlXSA9CisJCQkJKHNzX2VuID4+IHNzX2lkeCkgJiBz c19lbl9tYXNrOwogCQkJZm9yIChzcyA9IDA7IHNzIDwgc3NldS0+bWF4X3N1YnNsaWNlczsgc3Mr KykgewotCQkJCWlmIChzc2V1LT5zdWJzbGljZV9tYXNrW3NdICYgQklUKHNzKSkKKwkJCQlpZiAo c3NldS0+c3Vic2xpY2VfbWFza1tzICogc3NldS0+c3Nfc3RyaWRlXSAmCisJCQkJICAgIEJJVChz cykpCiAJCQkJCWludGVsX3NzZXVfc2V0X2V1cyhzc2V1LCBzLCBzcywgZXVfZW4pOwogCQkJfQog CQl9CkBAIC0yMDEsMjMgKzIyNCwxMCBAQCBzdGF0aWMgdm9pZCBnZW4xMF9zc2V1X2luZm9faW5p dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJY29uc3QgaW50IGV1X21hc2sg PSAweGZmOwogCXUzMiBzdWJzbGljZV9tYXNrLCBldV9lbjsKIAorCWludGVsX3NzZXVfc2V0X2lu Zm8oc3NldSwgNiwgNCwgOCk7CisKIAlzc2V1LT5zbGljZV9tYXNrID0gKGZ1c2UyICYgR0VOMTBf RjJfU19FTkFfTUFTSykgPj4KIAkJCSAgICBHRU4xMF9GMl9TX0VOQV9TSElGVDsKLQlzc2V1LT5t YXhfc2xpY2VzID0gNjsKLQlzc2V1LT5tYXhfc3Vic2xpY2VzID0gNDsKLQlzc2V1LT5tYXhfZXVz X3Blcl9zdWJzbGljZSA9IDg7Ci0KLQlzdWJzbGljZV9tYXNrID0gKDEgPDwgNCkgLSAxOwotCXN1 YnNsaWNlX21hc2sgJj0gfigoZnVzZTIgJiBHRU4xMF9GMl9TU19ESVNfTUFTSykgPj4KLQkJCSAg IEdFTjEwX0YyX1NTX0RJU19TSElGVCk7Ci0KLQkvKgotCSAqIFNsaWNlMCBjYW4gaGF2ZSB1cCB0 byAzIHN1YnNsaWNlcywgYnV0IHRoZXJlIGFyZSBvbmx5IDIgaW4KLQkgKiBzbGljZTEvMi4KLQkg Ki8KLQlzc2V1LT5zdWJzbGljZV9tYXNrWzBdID0gc3Vic2xpY2VfbWFzazsKLQlmb3IgKHMgPSAx OyBzIDwgc3NldS0+bWF4X3NsaWNlczsgcysrKQotCQlzc2V1LT5zdWJzbGljZV9tYXNrW3NdID0g c3Vic2xpY2VfbWFzayAmIDB4MzsKIAogCS8qIFNsaWNlMCAqLwogCWV1X2VuID0gfkk5MTVfUkVB RChHRU44X0VVX0RJU0FCTEUwKTsKQEAgLTI0MiwxNCArMjUyLDIyIEBAIHN0YXRpYyB2b2lkIGdl bjEwX3NzZXVfaW5mb19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAll dV9lbiA9IH5JOTE1X1JFQUQoR0VOMTBfRVVfRElTQUJMRTMpOwogCWludGVsX3NzZXVfc2V0X2V1 cyhzc2V1LCA1LCAxLCBldV9lbiAmIGV1X21hc2spOwogCi0JLyogRG8gYSBzZWNvbmQgcGFzcyB3 aGVyZSB3ZSBtYXJrIHRoZSBzdWJzbGljZXMgZGlzYWJsZWQgaWYgYWxsIHRoZWlyCi0JICogZXVz IGFyZSBvZmYuCi0JICovCisJc3Vic2xpY2VfbWFzayA9ICgxIDw8IDQpIC0gMTsKKwlzdWJzbGlj ZV9tYXNrICY9IH4oKGZ1c2UyICYgR0VOMTBfRjJfU1NfRElTX01BU0spID4+CisJCQkgICBHRU4x MF9GMl9TU19ESVNfU0hJRlQpOworCiAJZm9yIChzID0gMDsgcyA8IHNzZXUtPm1heF9zbGljZXM7 IHMrKykgewogCQlmb3IgKHNzID0gMDsgc3MgPCBzc2V1LT5tYXhfc3Vic2xpY2VzOyBzcysrKSB7 CiAJCQlpZiAoaW50ZWxfc3NldV9nZXRfZXVzKHNzZXUsIHMsIHNzKSA9PSAwKQotCQkJCXNzZXUt PnN1YnNsaWNlX21hc2tbc10gJj0gfkJJVChzcyk7CisJCQkJc3Vic2xpY2VfbWFzayAmPSB+QklU KHNzKTsKIAkJfQorCisJCS8qCisJCSAqIFNsaWNlMCBjYW4gaGF2ZSB1cCB0byAzIHN1YnNsaWNl cywgYnV0IHRoZXJlIGFyZSBvbmx5IDIgaW4KKwkJICogc2xpY2UxLzIuCisJCSAqLworCQlpbnRl bF9zc2V1X3NldF9zdWJzbGljZXMoc3NldSwgcywgcyA9PSAwID8gc3Vic2xpY2VfbWFzayA6CisJ CQkJCQkJICAgc3Vic2xpY2VfbWFzayAmIDB4Myk7CiAJfQogCiAJc3NldS0+ZXVfdG90YWwgPSBj b21wdXRlX2V1X3RvdGFsKHNzZXUpOwpAQCAtMjc1LDEzICsyOTMsMTIgQEAgc3RhdGljIHZvaWQg Y2hlcnJ5dmlld19zc2V1X2luZm9faW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCiB7CiAJc3RydWN0IHNzZXVfZGV2X2luZm8gKnNzZXUgPSAmUlVOVElNRV9JTkZPKGRldl9w cml2KS0+c3NldTsKIAl1MzIgZnVzZTsKKwl1OCBzdWJzbGljZV9tYXNrOwogCiAJZnVzZSA9IEk5 MTVfUkVBRChDSFZfRlVTRV9HVCk7CiAKIAlzc2V1LT5zbGljZV9tYXNrID0gQklUKDApOwotCXNz ZXUtPm1heF9zbGljZXMgPSAxOwotCXNzZXUtPm1heF9zdWJzbGljZXMgPSAyOwotCXNzZXUtPm1h eF9ldXNfcGVyX3N1YnNsaWNlID0gODsKKwlpbnRlbF9zc2V1X3NldF9pbmZvKHNzZXUsIDEsIDIs IDgpOwogCiAJaWYgKCEoZnVzZSAmIENIVl9GR1RfRElTQUJMRV9TUzApKSB7CiAJCXU4IGRpc2Fi bGVkX21hc2sgPQpAQCAtMjkwLDcgKzMwNyw3IEBAIHN0YXRpYyB2b2lkIGNoZXJyeXZpZXdfc3Nl dV9pbmZvX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCQkJKCgoZnVz ZSAmIENIVl9GR1RfRVVfRElTX1NTMF9SMV9NQVNLKSA+PgogCQkJICBDSFZfRkdUX0VVX0RJU19T UzBfUjFfU0hJRlQpIDw8IDQpOwogCi0JCXNzZXUtPnN1YnNsaWNlX21hc2tbMF0gfD0gQklUKDAp OworCQlzdWJzbGljZV9tYXNrIHw9IEJJVCgwKTsKIAkJaW50ZWxfc3NldV9zZXRfZXVzKHNzZXUs IDAsIDAsIH5kaXNhYmxlZF9tYXNrKTsKIAl9CiAKQEAgLTMwMSwxMCArMzE4LDEyIEBAIHN0YXRp YyB2b2lkIGNoZXJyeXZpZXdfc3NldV9pbmZvX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQogCQkJKCgoZnVzZSAmIENIVl9GR1RfRVVfRElTX1NTMV9SMV9NQVNLKSA+Pgog CQkJICBDSFZfRkdUX0VVX0RJU19TUzFfUjFfU0hJRlQpIDw8IDQpOwogCi0JCXNzZXUtPnN1YnNs aWNlX21hc2tbMF0gfD0gQklUKDEpOworCQlzdWJzbGljZV9tYXNrIHw9IEJJVCgxKTsKIAkJaW50 ZWxfc3NldV9zZXRfZXVzKHNzZXUsIDAsIDEsIH5kaXNhYmxlZF9tYXNrKTsKIAl9CiAKKwlpbnRl bF9zc2V1X3NldF9zdWJzbGljZXMoc3NldSwgMCwgc3Vic2xpY2VfbWFzayk7CisKIAlzc2V1LT5l dV90b3RhbCA9IGNvbXB1dGVfZXVfdG90YWwoc3NldSk7CiAKIAkvKgpAQCAtMzEyLDcgKzMzMSw4 IEBAIHN0YXRpYyB2b2lkIGNoZXJyeXZpZXdfc3NldV9pbmZvX2luaXQoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KQogCSAqIGFjcm9zcyBzdWJzbGljZXMuCiAJKi8KIAlzc2V1LT5l dV9wZXJfc3Vic2xpY2UgPSBpbnRlbF9zc2V1X3N1YnNsaWNlX3RvdGFsKHNzZXUpID8KLQkJCQlz c2V1LT5ldV90b3RhbCAvIGludGVsX3NzZXVfc3Vic2xpY2VfdG90YWwoc3NldSkgOgorCQkJCXNz ZXUtPmV1X3RvdGFsIC8KKwkJCQkJaW50ZWxfc3NldV9zdWJzbGljZV90b3RhbChzc2V1KSA6CiAJ CQkJMDsKIAkvKgogCSAqIENIViBzdXBwb3J0cyBzdWJzbGljZSBwb3dlciBnYXRpbmcgb24gZGV2 aWNlcyB3aXRoIG1vcmUgdGhhbgpAQCAtMzM2LDkgKzM1Niw4IEBAIHN0YXRpYyB2b2lkIGdlbjlf c3NldV9pbmZvX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCXNzZXUt PnNsaWNlX21hc2sgPSAoZnVzZTIgJiBHRU44X0YyX1NfRU5BX01BU0spID4+IEdFTjhfRjJfU19F TkFfU0hJRlQ7CiAKIAkvKiBCWFQgaGFzIGEgc2luZ2xlIHNsaWNlIGFuZCBhdCBtb3N0IDMgc3Vi c2xpY2VzLiAqLwotCXNzZXUtPm1heF9zbGljZXMgPSBJU19HRU45X0xQKGRldl9wcml2KSA/IDEg OiAzOwotCXNzZXUtPm1heF9zdWJzbGljZXMgPSBJU19HRU45X0xQKGRldl9wcml2KSA/IDMgOiA0 OwotCXNzZXUtPm1heF9ldXNfcGVyX3N1YnNsaWNlID0gODsKKwlpbnRlbF9zc2V1X3NldF9pbmZv KHNzZXUsIElTX0dFTjlfTFAoZGV2X3ByaXYpID8gMSA6IDMsCisJCQkgICAgSVNfR0VOOV9MUChk ZXZfcHJpdikgPyAzIDogNCwgOCk7CiAKIAkvKgogCSAqIFRoZSBzdWJzbGljZSBkaXNhYmxlIGZp ZWxkIGlzIGdsb2JhbCwgaS5lLiBpdCBhcHBsaWVzCkBAIC0zNTcsMTQgKzM3NiwxNiBAQCBzdGF0 aWMgdm9pZCBnZW45X3NzZXVfaW5mb19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKIAkJCS8qIHNraXAgZGlzYWJsZWQgc2xpY2UgKi8KIAkJCWNvbnRpbnVlOwogCi0JCXNz ZXUtPnN1YnNsaWNlX21hc2tbc10gPSBzdWJzbGljZV9tYXNrOworCQlpbnRlbF9zc2V1X3NldF9z dWJzbGljZXMoc3NldSwgcywgc3Vic2xpY2VfbWFzayk7CiAKIAkJZXVfZGlzYWJsZSA9IEk5MTVf UkVBRChHRU45X0VVX0RJU0FCTEUocykpOwogCQlmb3IgKHNzID0gMDsgc3MgPCBzc2V1LT5tYXhf c3Vic2xpY2VzOyBzcysrKSB7CiAJCQlpbnQgZXVfcGVyX3NzOwogCQkJdTggZXVfZGlzYWJsZWRf bWFzazsKKwkJCXU4IHNzX2lkeCA9IHMgKiBzc2V1LT5zc19zdHJpZGUgKyBzcyAvIEJJVFNfUEVS X0JZVEU7CiAKLQkJCWlmICghKHNzZXUtPnN1YnNsaWNlX21hc2tbc10gJiBCSVQoc3MpKSkKKwkJ CWlmICghKHNzZXUtPnN1YnNsaWNlX21hc2tbc3NfaWR4XSAmCisJCQkgICAgICBCSVQoc3MgJSBC SVRTX1BFUl9CWVRFKSkpCiAJCQkJLyogc2tpcCBkaXNhYmxlZCBzdWJzbGljZSAqLwogCQkJCWNv bnRpbnVlOwogCkBAIC00MzcsOSArNDU4LDcgQEAgc3RhdGljIHZvaWQgYnJvYWR3ZWxsX3NzZXVf aW5mb19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAogCWZ1c2UyID0g STkxNV9SRUFEKEdFTjhfRlVTRTIpOwogCXNzZXUtPnNsaWNlX21hc2sgPSAoZnVzZTIgJiBHRU44 X0YyX1NfRU5BX01BU0spID4+IEdFTjhfRjJfU19FTkFfU0hJRlQ7Ci0Jc3NldS0+bWF4X3NsaWNl cyA9IDM7Ci0Jc3NldS0+bWF4X3N1YnNsaWNlcyA9IDM7Ci0Jc3NldS0+bWF4X2V1c19wZXJfc3Vi c2xpY2UgPSA4OworCWludGVsX3NzZXVfc2V0X2luZm8oc3NldSwgMywgMywgOCk7CiAKIAkvKgog CSAqIFRoZSBzdWJzbGljZSBkaXNhYmxlIGZpZWxkIGlzIGdsb2JhbCwgaS5lLiBpdCBhcHBsaWVz CkBAIC00NjYsMTggKzQ4NSwyMSBAQCBzdGF0aWMgdm9pZCBicm9hZHdlbGxfc3NldV9pbmZvX2lu aXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCQkJLyogc2tpcCBkaXNhYmxl ZCBzbGljZSAqLwogCQkJY29udGludWU7CiAKLQkJc3NldS0+c3Vic2xpY2VfbWFza1tzXSA9IHN1 YnNsaWNlX21hc2s7CisJCWludGVsX3NzZXVfc2V0X3N1YnNsaWNlcyhzc2V1LCBzLCBzdWJzbGlj ZV9tYXNrKTsKIAogCQlmb3IgKHNzID0gMDsgc3MgPCBzc2V1LT5tYXhfc3Vic2xpY2VzOyBzcysr KSB7CiAJCQl1OCBldV9kaXNhYmxlZF9tYXNrOworCQkJdTggc3NfaWR4ID0gcyAqIHNzZXUtPnNz X3N0cmlkZSArIHNzIC8gQklUU19QRVJfQllURTsKIAkJCXUzMiBuX2Rpc2FibGVkOwogCi0JCQlp ZiAoIShzc2V1LT5zdWJzbGljZV9tYXNrW3NdICYgQklUKHNzKSkpCisJCQlpZiAoIShzc2V1LT5z dWJzbGljZV9tYXNrW3NzX2lkeF0gJgorCQkJICAgICAgQklUKHNzICUgQklUU19QRVJfQllURSkp KQogCQkJCS8qIHNraXAgZGlzYWJsZWQgc3Vic2xpY2UgKi8KIAkJCQljb250aW51ZTsKIAogCQkJ ZXVfZGlzYWJsZWRfbWFzayA9Ci0JCQkJZXVfZGlzYWJsZVtzXSA+PiAoc3MgKiBzc2V1LT5tYXhf ZXVzX3Blcl9zdWJzbGljZSk7CisJCQkJZXVfZGlzYWJsZVtzXSA+PgorCQkJCQkoc3MgKiBzc2V1 LT5tYXhfZXVzX3Blcl9zdWJzbGljZSk7CiAKIAkJCWludGVsX3NzZXVfc2V0X2V1cyhzc2V1LCBz LCBzcywgfmV1X2Rpc2FibGVkX21hc2spOwogCkBAIC01MTcsNiArNTM5LDcgQEAgc3RhdGljIHZv aWQgaGFzd2VsbF9zc2V1X2luZm9faW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCiAJc3RydWN0IHNzZXVfZGV2X2luZm8gKnNzZXUgPSAmUlVOVElNRV9JTkZPKGRldl9wcml2 KS0+c3NldTsKIAl1MzIgZnVzZTE7CiAJaW50IHMsIHNzOworCXUzMiBzdWJzbGljZV9tYXNrOwog CiAJLyoKIAkgKiBUaGVyZSBpc24ndCBhIHJlZ2lzdGVyIHRvIHRlbGwgdXMgaG93IG1hbnkgc2xp Y2VzL3N1YnNsaWNlcy4gV2UKQEAgLTUyOCwyMiArNTUxLDE4IEBAIHN0YXRpYyB2b2lkIGhhc3dl bGxfc3NldV9pbmZvX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCQkv KiBmYWxsIHRocm91Z2ggKi8KIAljYXNlIDE6CiAJCXNzZXUtPnNsaWNlX21hc2sgPSBCSVQoMCk7 Ci0JCXNzZXUtPnN1YnNsaWNlX21hc2tbMF0gPSBCSVQoMCk7CisJCXN1YnNsaWNlX21hc2sgPSBC SVQoMCk7CiAJCWJyZWFrOwogCWNhc2UgMjoKIAkJc3NldS0+c2xpY2VfbWFzayA9IEJJVCgwKTsK LQkJc3NldS0+c3Vic2xpY2VfbWFza1swXSA9IEJJVCgwKSB8IEJJVCgxKTsKKwkJc3Vic2xpY2Vf bWFzayA9IEJJVCgwKSB8IEJJVCgxKTsKIAkJYnJlYWs7CiAJY2FzZSAzOgogCQlzc2V1LT5zbGlj ZV9tYXNrID0gQklUKDApIHwgQklUKDEpOwotCQlzc2V1LT5zdWJzbGljZV9tYXNrWzBdID0gQklU KDApIHwgQklUKDEpOwotCQlzc2V1LT5zdWJzbGljZV9tYXNrWzFdID0gQklUKDApIHwgQklUKDEp OworCQlzdWJzbGljZV9tYXNrID0gQklUKDApIHwgQklUKDEpOwogCQlicmVhazsKIAl9CiAKLQlz c2V1LT5tYXhfc2xpY2VzID0gaHdlaWdodDgoc3NldS0+c2xpY2VfbWFzayk7Ci0Jc3NldS0+bWF4 X3N1YnNsaWNlcyA9IGh3ZWlnaHQ4KHNzZXUtPnN1YnNsaWNlX21hc2tbMF0pOwotCiAJZnVzZTEg PSBJOTE1X1JFQUQoSFNXX1BBVlBfRlVTRTEpOwogCXN3aXRjaCAoKGZ1c2UxICYgSFNXX0YxX0VV X0RJU19NQVNLKSA+PiBIU1dfRjFfRVVfRElTX1NISUZUKSB7CiAJZGVmYXVsdDoKQEAgLTU2MCw5 ICs1NzksMTQgQEAgc3RhdGljIHZvaWQgaGFzd2VsbF9zc2V1X2luZm9faW5pdChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCXNzZXUtPmV1X3Blcl9zdWJzbGljZSA9IDY7CiAJ CWJyZWFrOwogCX0KLQlzc2V1LT5tYXhfZXVzX3Blcl9zdWJzbGljZSA9IHNzZXUtPmV1X3Blcl9z dWJzbGljZTsKKworCWludGVsX3NzZXVfc2V0X2luZm8oc3NldSwgaHdlaWdodDgoc3NldS0+c2xp Y2VfbWFzayksCisJCQkgICAgaHdlaWdodDgoc3Vic2xpY2VfbWFzayksCisJCQkgICAgc3NldS0+ ZXVfcGVyX3N1YnNsaWNlKTsKIAogCWZvciAocyA9IDA7IHMgPCBzc2V1LT5tYXhfc2xpY2VzOyBz KyspIHsKKwkJaW50ZWxfc3NldV9zZXRfc3Vic2xpY2VzKHNzZXUsIHMsIHN1YnNsaWNlX21hc2sp OworCiAJCWZvciAoc3MgPSAwOyBzcyA8IHNzZXUtPm1heF9zdWJzbGljZXM7IHNzKyspIHsKIAkJ CWludGVsX3NzZXVfc2V0X2V1cyhzc2V1LCBzLCBzcywKIAkJCQkJICAgKDFVTCA8PCBzc2V1LT5l dV9wZXJfc3Vic2xpY2UpIC0gMSk7Ci0tIAoyLjIxLjAuNS5nYWViNTgyYTk4MwoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcg bGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4