From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stuart Summers Subject: [PATCH 5/5] drm/i915: Expand subslice mask Date: Mon, 13 May 2019 13:56:43 -0700 Message-ID: <20190513205643.16488-6-stuart.summers@intel.com> References: <20190513205643.16488-1-stuart.summers@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by gabe.freedesktop.org (Postfix) with ESMTPS id AC54789237 for ; Mon, 13 May 2019 20:56:45 +0000 (UTC) In-Reply-To: <20190513205643.16488-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 dHJpZGUgY2FsY3VsYXRpb25zCnY1OiBhZGRyZXNzIHJldmlldyBjb21tZW50cyBmcm9tIFR2cnRr byBhbmQgRGFuaWVsZQp2NjogcmVtb3ZlIGV4dHJhIHNwYWNlIGluIGludGVsX3NzZXVfZ2V0X3N1 YnNsaWNlcwogICAgcmV0dXJuIHRoZSBjb3JyZWN0IHN1YnNsaWNlIGVuYWJsZSBpbiBmb3JfZWFj aF9pbnN0ZG9uZQogICAgYWRkIEdFTV9CVUdfT04gdG8gZW5zdXJlIHVzZXIgZG9lc24ndCBwYXNz IGludmFsaWQgc3NfbWFzayBzaXplCiAgICB1c2UgcHJpbnRrIGZvcm1hdHRlZCBzdHJpbmcgZm9y IHN1YnNsaWNlIG1hc2sKCkNjOiBEYW5pZWxlIENlcmFvbG8gU3B1cmlvIDxkYW5pZWxlLmNlcmFv bG9zcHVyaW9AaW50ZWwuY29tPgpDYzogTGlvbmVsIExhbmR3ZXJsaW4gPGxpb25lbC5nLmxhbmR3 ZXJsaW5AaW50ZWwuY29tPgpBY2tlZC1ieTogTGlvbmVsIExhbmR3ZXJsaW4gPGxpb25lbC5nLmxh bmR3ZXJsaW5AaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBTdHVhcnQgU3VtbWVycyA8c3R1YXJ0 LnN1bW1lcnNAaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2Vu Z2luZV9jcy5jICAgIHwgIDI0ICsrKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2Vu Z2luZV90eXBlcy5oIHwgIDMwICsrLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9o YW5nY2hlY2suYyAgICB8ICAgMyArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfc3Nl dS5jICAgICAgICAgfCAgNDcgKysrKysrLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxf c3NldS5oICAgICAgICAgfCAgMjggKysrKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVs X3dvcmthcm91bmRzLmMgIHwgICAyICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVn ZnMuYyAgICAgICAgICB8ICA0MCArKystLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmMgICAgICAgICAgICAgIHwgICA2ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9l cnJvci5jICAgICAgICB8ICAgNSArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9xdWVyeS5j ICAgICAgICAgICAgfCAgMTAgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RldmljZV9p bmZvLmMgICAgIHwgMTIyICsrKysrKysrKy0tLS0tLS0tLS0KIDExIGZpbGVzIGNoYW5nZWQsIDIw MSBpbnNlcnRpb25zKCspLCAxMTYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2NzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n dC9pbnRlbF9lbmdpbmVfY3MuYwppbmRleCA0YzM3NTNjMWI1NzMuLjNhNWUwZmVmY2FiOSAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2NzLmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2NzLmMKQEAgLTkxMCwxMiArOTEw LDMwIEBAIGNvbnN0IGNoYXIgKmk5MTVfY2FjaGVfbGV2ZWxfc3RyKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICppOTE1LCBpbnQgdHlwZSkKIAl9CiB9CiAKK3N0YXRpYyBpbmxpbmUgdTMyCitpbnRl bF9zc2V1X2Zsc19zdWJzbGljZShjb25zdCBzdHJ1Y3Qgc3NldV9kZXZfaW5mbyAqc3NldSwgdTMy IHNsaWNlKQoreworCXUzMiBzdWJzbGljZTsKKwlpbnQgaTsKKworCWZvciAoaSA9IHNzZXUtPnNz X3N0cmlkZSAtIDE7IGkgPj0gMDsgaS0tKSB7CisJCXN1YnNsaWNlID0gZmxzKHNzZXUtPnN1YnNs aWNlX21hc2tbc2xpY2UgKiBzc2V1LT5zc19zdHJpZGUgKworCQkJCQkJICAgaV0pOworCQlpZiAo c3Vic2xpY2UpIHsKKwkJCXN1YnNsaWNlICs9IGkgKiBCSVRTX1BFUl9CWVRFOworCQkJYnJlYWs7 CisJCX0KKwl9CisKKwlyZXR1cm4gc3Vic2xpY2U7Cit9CisKIHUzMiBpbnRlbF9jYWxjdWxhdGVf bWNyX3Nfc3Nfc2VsZWN0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKIAlj b25zdCBzdHJ1Y3Qgc3NldV9kZXZfaW5mbyAqc3NldSA9ICZSVU5USU1FX0lORk8oZGV2X3ByaXYp LT5zc2V1OwogCXUzMiBtY3Jfc19zc19zZWxlY3Q7CiAJdTMyIHNsaWNlID0gZmxzKHNzZXUtPnNs aWNlX21hc2spOwotCXUzMiBzdWJzbGljZSA9IGZscyhzc2V1LT5zdWJzbGljZV9tYXNrW3NsaWNl XSk7CisJdTMyIHN1YnNsaWNlID0gaW50ZWxfc3NldV9mbHNfc3Vic2xpY2Uoc3NldSwgc2xpY2Up OwogCiAJaWYgKElTX0dFTihkZXZfcHJpdiwgMTApKQogCQltY3Jfc19zc19zZWxlY3QgPSBHRU44 X01DUl9TTElDRShzbGljZSkgfApAQCAtOTkxLDYgKzEwMDksNyBAQCB2b2lkIGludGVsX2VuZ2lu ZV9nZXRfaW5zdGRvbmUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAogCQkJICAgICAg IHN0cnVjdCBpbnRlbF9pbnN0ZG9uZSAqaW5zdGRvbmUpCiB7CiAJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gZW5naW5lLT5pOTE1OworCWNvbnN0IHN0cnVjdCBzc2V1X2Rldl9p bmZvICpzc2V1ID0gJlJVTlRJTUVfSU5GTyhkZXZfcHJpdiktPnNzZXU7CiAJc3RydWN0IGludGVs X3VuY29yZSAqdW5jb3JlID0gZW5naW5lLT51bmNvcmU7CiAJdTMyIG1taW9fYmFzZSA9IGVuZ2lu ZS0+bW1pb19iYXNlOwogCWludCBzbGljZTsKQEAgLTEwMDgsNyArMTAyNyw4IEBAIHZvaWQgaW50 ZWxfZW5naW5lX2dldF9pbnN0ZG9uZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCiAK IAkJaW5zdGRvbmUtPnNsaWNlX2NvbW1vbiA9CiAJCQlpbnRlbF91bmNvcmVfcmVhZCh1bmNvcmUs IEdFTjdfU0NfSU5TVERPTkUpOwotCQlmb3JfZWFjaF9pbnN0ZG9uZV9zbGljZV9zdWJzbGljZShk ZXZfcHJpdiwgc2xpY2UsIHN1YnNsaWNlKSB7CisJCWZvcl9lYWNoX2luc3Rkb25lX3NsaWNlX3N1 YnNsaWNlKGRldl9wcml2LCBzc2V1LCBzbGljZSwKKwkJCQkJCSBzdWJzbGljZSkgewogCQkJaW5z dGRvbmUtPnNhbXBsZXJbc2xpY2VdW3N1YnNsaWNlXSA9CiAJCQkJcmVhZF9zdWJzbGljZV9yZWco ZGV2X3ByaXYsIHNsaWNlLCBzdWJzbGljZSwKIAkJCQkJCSAgR0VON19TQU1QTEVSX0lOU1RET05F KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV90eXBl cy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3R5cGVzLmgKaW5kZXgg ZTM4MWMxYzczOTAyLi5jZjc5ZGY4ZDRmMzIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L2ludGVsX2VuZ2luZV90eXBlcy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L2ludGVsX2VuZ2luZV90eXBlcy5oCkBAIC01MzQsMjAgKzUzNCwyMCBAQCBpbnRlbF9lbmdpbmVf bmVlZHNfYnJlYWRjcnVtYl90YXNrbGV0KGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSkKIAlyZXR1cm4gZW5naW5lLT5mbGFncyAmIEk5MTVfRU5HSU5FX05FRURTX0JSRUFEQ1JV TUJfVEFTS0xFVDsKIH0KIAotI2RlZmluZSBpbnN0ZG9uZV9zbGljZV9tYXNrKGRldl9wcml2X18p IFwKLQkoSVNfR0VOKGRldl9wcml2X18sIDcpID8gXAotCSAxIDogUlVOVElNRV9JTkZPKGRldl9w cml2X18pLT5zc2V1LnNsaWNlX21hc2spCi0KLSNkZWZpbmUgaW5zdGRvbmVfc3Vic2xpY2VfbWFz ayhkZXZfcHJpdl9fKSBcCi0JKElTX0dFTihkZXZfcHJpdl9fLCA3KSA/IFwKLQkgMSA6IFJVTlRJ TUVfSU5GTyhkZXZfcHJpdl9fKS0+c3NldS5zdWJzbGljZV9tYXNrWzBdKQotCi0jZGVmaW5lIGZv cl9lYWNoX2luc3Rkb25lX3NsaWNlX3N1YnNsaWNlKGRldl9wcml2X18sIHNsaWNlX18sIHN1YnNs aWNlX18pIFwKLQlmb3IgKChzbGljZV9fKSA9IDAsIChzdWJzbGljZV9fKSA9IDA7IFwKLQkgICAg IChzbGljZV9fKSA8IEk5MTVfTUFYX1NMSUNFUzsgXAotCSAgICAgKHN1YnNsaWNlX18pID0gKChz dWJzbGljZV9fKSArIDEpIDwgSTkxNV9NQVhfU1VCU0xJQ0VTID8gKHN1YnNsaWNlX18pICsgMSA6 IDAsIFwKLQkgICAgICAgKHNsaWNlX18pICs9ICgoc3Vic2xpY2VfXykgPT0gMCkpIFwKLQkJZm9y X2VhY2hfaWYoKEJJVChzbGljZV9fKSAmIGluc3Rkb25lX3NsaWNlX21hc2soZGV2X3ByaXZfXykp ICYmIFwKLQkJCSAgICAoQklUKHN1YnNsaWNlX18pICYgaW5zdGRvbmVfc3Vic2xpY2VfbWFzayhk ZXZfcHJpdl9fKSkpCisjZGVmaW5lIGluc3Rkb25lX2hhc19zbGljZShkZXZfcHJpdl9fXywgc3Nl dV9fXywgc2xpY2VfX18pIFwKKwkoKElTX0dFTihkZXZfcHJpdl9fXywgNykgPyAxIDogKChzc2V1 X19fKS0+c2xpY2VfbWFzaykpICYgXAorCUJJVChzbGljZV9fXykpCisKKyNkZWZpbmUgaW5zdGRv bmVfaGFzX3N1YnNsaWNlKGRldl9wcml2X18sIHNzZXVfXywgc2xpY2VfXywgc3Vic2xpY2VfXykg XAorCShJU19HRU4oZGV2X3ByaXZfXywgNykgPyAoMSAmIEJJVChzdWJzbGljZV9fKSkgOiBcCisJ IGludGVsX3NzZXVfaGFzX3N1YnNsaWNlKHNzZXVfXywgc2xpY2VfXywgc3Vic2xpY2VfXykpCisK KyNkZWZpbmUgZm9yX2VhY2hfaW5zdGRvbmVfc2xpY2Vfc3Vic2xpY2UoZGV2X3ByaXZfLCBzc2V1 Xywgc2xpY2VfLCBzdWJzbGljZV8pIFwKKwlmb3IgKChzbGljZV8pID0gMCwgKHN1YnNsaWNlXykg PSAwOyAoc2xpY2VfKSA8IEk5MTVfTUFYX1NMSUNFUzsgXAorCSAgICAgKHN1YnNsaWNlXykgPSAo KHN1YnNsaWNlXykgKyAxKSAlIEk5MTVfTUFYX1NVQlNMSUNFUywgXAorCSAgICAgKHNsaWNlXykg Kz0gKChzdWJzbGljZV8pID09IDApKSBcCisJCWZvcl9lYWNoX2lmKChpbnN0ZG9uZV9oYXNfc2xp Y2UoZGV2X3ByaXZfLCBzc2V1Xywgc2xpY2VfKSkgJiYgXAorCQkJICAgIChpbnN0ZG9uZV9oYXNf c3Vic2xpY2UoZGV2X3ByaXZfLCBzc2V1Xywgc2xpY2VfLCBcCisJCQkJCQkgICAgc3Vic2xpY2Vf KSkpCiAKICNlbmRpZiAvKiBfX0lOVEVMX0VOR0lORV9UWVBFU19IX18gKi8KZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2hhbmdjaGVjay5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3QvaW50ZWxfaGFuZ2NoZWNrLmMKaW5kZXggM2E0ZDA5YjgwZmEwLi5iMTljZDRj ZGNiNWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2hhbmdjaGVj ay5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2hhbmdjaGVjay5jCkBAIC01 MSw2ICs1MSw3IEBAIHN0YXRpYyBib29sIGluc3Rkb25lX3VuY2hhbmdlZCh1MzIgY3VycmVudF9p bnN0ZG9uZSwgdTMyICpvbGRfaW5zdGRvbmUpCiBzdGF0aWMgYm9vbCBzdWJ1bml0c19zdHVjayhz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gZW5naW5lLT5pOTE1OworCWNvbnN0IHN0cnVjdCBzc2V1X2Rldl9pbmZv ICpzc2V1ID0gJlJVTlRJTUVfSU5GTyhkZXZfcHJpdiktPnNzZXU7CiAJc3RydWN0IGludGVsX2lu c3Rkb25lIGluc3Rkb25lOwogCXN0cnVjdCBpbnRlbF9pbnN0ZG9uZSAqYWNjdV9pbnN0ZG9uZSA9 ICZlbmdpbmUtPmhhbmdjaGVjay5pbnN0ZG9uZTsKIAlib29sIHN0dWNrOwpAQCAtNzIsNyArNzMs NyBAQCBzdGF0aWMgYm9vbCBzdWJ1bml0c19zdHVjayhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUpCiAJc3R1Y2sgJj0gaW5zdGRvbmVfdW5jaGFuZ2VkKGluc3Rkb25lLnNsaWNlX2NvbW1v biwKIAkJCQkgICAgJmFjY3VfaW5zdGRvbmUtPnNsaWNlX2NvbW1vbik7CiAKLQlmb3JfZWFjaF9p bnN0ZG9uZV9zbGljZV9zdWJzbGljZShkZXZfcHJpdiwgc2xpY2UsIHN1YnNsaWNlKSB7CisJZm9y X2VhY2hfaW5zdGRvbmVfc2xpY2Vfc3Vic2xpY2UoZGV2X3ByaXYsIHNzZXUsIHNsaWNlLCBzdWJz bGljZSkgewogCQlzdHVjayAmPSBpbnN0ZG9uZV91bmNoYW5nZWQoaW5zdGRvbmUuc2FtcGxlcltz bGljZV1bc3Vic2xpY2VdLAogCQkJCQkgICAgJmFjY3VfaW5zdGRvbmUtPnNhbXBsZXJbc2xpY2Vd W3N1YnNsaWNlXSk7CiAJCXN0dWNrICY9IGluc3Rkb25lX3VuY2hhbmdlZChpbnN0ZG9uZS5yb3db c2xpY2VdW3N1YnNsaWNlXSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2lu dGVsX3NzZXUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3NzZXUuYwppbmRleCBh MDc1NmYwMDZmNWYuLjc2M2I4MTFmMmM5ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3QvaW50ZWxfc3NldS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Nz ZXUuYwpAQCAtOCw2ICs4LDE3IEBACiAjaW5jbHVkZSAiaW50ZWxfbHJjX3JlZy5oIgogI2luY2x1 ZGUgImludGVsX3NzZXUuaCIKIAordm9pZCBpbnRlbF9zc2V1X3NldF9pbmZvKHN0cnVjdCBzc2V1 X2Rldl9pbmZvICpzc2V1LCB1OCBtYXhfc2xpY2VzLAorCQkJIHU4IG1heF9zdWJzbGljZXMsIHU4 IG1heF9ldXNfcGVyX3N1YnNsaWNlKQoreworCXNzZXUtPm1heF9zbGljZXMgPSBtYXhfc2xpY2Vz OworCXNzZXUtPm1heF9zdWJzbGljZXMgPSBtYXhfc3Vic2xpY2VzOworCXNzZXUtPm1heF9ldXNf cGVyX3N1YnNsaWNlID0gbWF4X2V1c19wZXJfc3Vic2xpY2U7CisKKwlzc2V1LT5zc19zdHJpZGUg PSBHRU5fU1NFVV9TVFJJREUoc3NldS0+bWF4X3N1YnNsaWNlcyk7CisJc3NldS0+ZXVfc3RyaWRl ID0gR0VOX1NTRVVfU1RSSURFKHNzZXUtPm1heF9ldXNfcGVyX3N1YnNsaWNlKTsKK30KKwogdW5z aWduZWQgaW50CiBpbnRlbF9zc2V1X3N1YnNsaWNlX3RvdGFsKGNvbnN0IHN0cnVjdCBzc2V1X2Rl dl9pbmZvICpzc2V1KQogewpAQCAtMTksMTAgKzMwLDQ0IEBAIGludGVsX3NzZXVfc3Vic2xpY2Vf dG90YWwoY29uc3Qgc3RydWN0IHNzZXVfZGV2X2luZm8gKnNzZXUpCiAJcmV0dXJuIHRvdGFsOwog fQogCit2b2lkIGludGVsX3NzZXVfY29weV9zdWJzbGljZXMoY29uc3Qgc3RydWN0IHNzZXVfZGV2 X2luZm8gKnNzZXUsIGludCBzbGljZSwKKwkJCSAgICAgICB1OCAqdG9fbWFzaykKK3sKKwlpbnQg b2Zmc2V0ID0gc2xpY2UgKiBzc2V1LT5zc19zdHJpZGU7CisKKwltZW1jcHkoJnRvX21hc2tbb2Zm c2V0XSwgJnNzZXUtPnN1YnNsaWNlX21hc2tbb2Zmc2V0XSwgc3NldS0+c3Nfc3RyaWRlKTsKK30K KwordTMyIGludGVsX3NzZXVfZ2V0X3N1YnNsaWNlcyhjb25zdCBzdHJ1Y3Qgc3NldV9kZXZfaW5m byAqc3NldSwgdTggc2xpY2UpCit7CisJaW50IGksIG9mZnNldCA9IHNsaWNlICogc3NldS0+c3Nf c3RyaWRlOworCXUzMiBtYXNrOworCisJR0VNX0JVR19PTihzbGljZSA+PSBzc2V1LT5tYXhfc2xp Y2VzKTsKKworCUdFTV9CVUdfT04oc3NldS0+c3Nfc3RyaWRlID4gc2l6ZW9mKG1hc2spKTsKKwor CWZvciAoaSA9IDA7IGkgPCBzc2V1LT5zc19zdHJpZGU7IGkrKykKKwkJbWFzayB8PSAodTMyKXNz ZXUtPnN1YnNsaWNlX21hc2tbb2Zmc2V0ICsgaV0gPDwKKwkJCWkgKiBCSVRTX1BFUl9CWVRFOwor CisJcmV0dXJuIG1hc2s7Cit9CisKK3ZvaWQgaW50ZWxfc3NldV9zZXRfc3Vic2xpY2VzKHN0cnVj dCBzc2V1X2Rldl9pbmZvICpzc2V1LCBpbnQgc2xpY2UsCisJCQkgICAgICB1MzIgc3NfbWFzaykK K3sKKwlpbnQgaSwgb2Zmc2V0ID0gc2xpY2UgKiBzc2V1LT5zc19zdHJpZGU7CisKKwlmb3IgKGkg PSAwOyBpIDwgc3NldS0+c3Nfc3RyaWRlOyBpKyspCisJCXNzZXUtPnN1YnNsaWNlX21hc2tbb2Zm c2V0ICsgaV0gPQorCQkJKHNzX21hc2sgPj4gKEJJVFNfUEVSX0JZVEUgKiBpKSkgJiAweGZmOwor fQorCiB1bnNpZ25lZCBpbnQKIGludGVsX3NzZXVfc3Vic2xpY2VzX3Blcl9zbGljZShjb25zdCBz dHJ1Y3Qgc3NldV9kZXZfaW5mbyAqc3NldSwgdTggc2xpY2UpCiB7Ci0JcmV0dXJuIGh3ZWlnaHQ4 KHNzZXUtPnN1YnNsaWNlX21hc2tbc2xpY2VdKTsKKwlyZXR1cm4gaHdlaWdodDMyKGludGVsX3Nz ZXVfZ2V0X3N1YnNsaWNlcyhzc2V1LCBzbGljZSkpOwogfQogCiB1MzIgaW50ZWxfc3NldV9tYWtl X3JwY3Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9zc2V1LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9p bnRlbF9zc2V1LmgKaW5kZXggYjUwZDA0MDFhNGUyLi4zNjAyYWU1NGI5MzcgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3NzZXUuaAorKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC9pbnRlbF9zc2V1LmgKQEAgLTksMTYgKzksMTggQEAKIAogI2luY2x1ZGUgPGxp bnV4L3R5cGVzLmg+CiAjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CisjaW5jbHVkZSA8bGludXgv c3RyaW5nLmg+CiAKIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlOwogCiAjZGVmaW5lIEdFTl9NQVhf U0xJQ0VTCQkoNikgLyogQ05MIHVwcGVyIGJvdW5kICovCiAjZGVmaW5lIEdFTl9NQVhfU1VCU0xJ Q0VTCSg4KSAvKiBJQ0wgdXBwZXIgYm91bmQgKi8KICNkZWZpbmUgR0VOX1NTRVVfU1RSSURFKG1h eF9lbnRyaWVzKSBESVZfUk9VTkRfVVAobWF4X2VudHJpZXMsIEJJVFNfUEVSX0JZVEUpCisjZGVm aW5lIEdFTl9NQVhfU1VCU0xJQ0VfU1RSSURFIEdFTl9TU0VVX1NUUklERShHRU5fTUFYX1NVQlNM SUNFUykKIAogc3RydWN0IHNzZXVfZGV2X2luZm8gewogCXU4IHNsaWNlX21hc2s7Ci0JdTggc3Vi c2xpY2VfbWFza1tHRU5fTUFYX1NMSUNFU107CisJdTggc3Vic2xpY2VfbWFza1tHRU5fTUFYX1NM SUNFUyAqIEdFTl9NQVhfU1VCU0xJQ0VfU1RSSURFXTsKIAl1MTYgZXVfdG90YWw7CiAJdTggZXVf cGVyX3N1YnNsaWNlOwogCXU4IG1pbl9ldV9pbl9wb29sOwpAQCAtMzMsNiArMzUsOSBAQCBzdHJ1 Y3Qgc3NldV9kZXZfaW5mbyB7CiAJdTggbWF4X3N1YnNsaWNlczsKIAl1OCBtYXhfZXVzX3Blcl9z dWJzbGljZTsKIAorCXU4IHNzX3N0cmlkZTsKKwl1OCBldV9zdHJpZGU7CisKIAkvKiBXZSBkb24n dCBoYXZlIG1vcmUgdGhhbiA4IGV1cyBwZXIgc3Vic2xpY2UgYXQgdGhlIG1vbWVudCBhbmQgYXMg d2UKIAkgKiBzdG9yZSBldXMgZW5hYmxlZCB1c2luZyBiaXRzLCBubyBuZWVkIHRvIG11bHRpcGx5 IGJ5IGV1cyBwZXIKIAkgKiBzdWJzbGljZS4KQEAgLTYzLDEyICs2OCwzMyBAQCBpbnRlbF9zc2V1 X2Zyb21fZGV2aWNlX2luZm8oY29uc3Qgc3RydWN0IHNzZXVfZGV2X2luZm8gKnNzZXUpCiAJcmV0 dXJuIHZhbHVlOwogfQogCitzdGF0aWMgaW5saW5lIGJvb2wKK2ludGVsX3NzZXVfaGFzX3N1YnNs aWNlKGNvbnN0IHN0cnVjdCBzc2V1X2Rldl9pbmZvICpzc2V1LCBpbnQgc2xpY2UsCisJCQlpbnQg c3Vic2xpY2UpCit7CisJdTggbWFzayA9IHNzZXUtPnN1YnNsaWNlX21hc2tbc2xpY2UgKiBzc2V1 LT5zc19zdHJpZGUgKworCQkJCSAgICAgIHN1YnNsaWNlIC8gQklUU19QRVJfQllURV07CisKKwly ZXR1cm4gbWFzayAmIEJJVChzdWJzbGljZSAlIEJJVFNfUEVSX0JZVEUpOworfQorCit2b2lkIGlu dGVsX3NzZXVfc2V0X2luZm8oc3RydWN0IHNzZXVfZGV2X2luZm8gKnNzZXUsIHU4IG1heF9zbGlj ZXMsCisJCQkgdTggbWF4X3N1YnNsaWNlcywgdTggbWF4X2V1c19wZXJfc3Vic2xpY2UpOworCiB1 bnNpZ25lZCBpbnQKIGludGVsX3NzZXVfc3Vic2xpY2VfdG90YWwoY29uc3Qgc3RydWN0IHNzZXVf ZGV2X2luZm8gKnNzZXUpOwogCiB1bnNpZ25lZCBpbnQKIGludGVsX3NzZXVfc3Vic2xpY2VzX3Bl cl9zbGljZShjb25zdCBzdHJ1Y3Qgc3NldV9kZXZfaW5mbyAqc3NldSwgdTggc2xpY2UpOwogCit2 b2lkIGludGVsX3NzZXVfY29weV9zdWJzbGljZXMoY29uc3Qgc3RydWN0IHNzZXVfZGV2X2luZm8g KnNzZXUsIGludCBzbGljZSwKKwkJCSAgICAgICB1OCAqdG9fbWFzayk7CisKK3UzMiAgaW50ZWxf c3NldV9nZXRfc3Vic2xpY2VzKGNvbnN0IHN0cnVjdCBzc2V1X2Rldl9pbmZvICpzc2V1LCB1OCBz bGljZSk7CisKK3ZvaWQgaW50ZWxfc3NldV9zZXRfc3Vic2xpY2VzKHN0cnVjdCBzc2V1X2Rldl9p bmZvICpzc2V1LCBpbnQgc2xpY2UsCisJCQkgICAgICB1MzIgc3NfbWFzayk7CisKIHUzMiBpbnRl bF9zc2V1X21ha2VfcnBjcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKIAkJCSBjb25z dCBzdHJ1Y3QgaW50ZWxfc3NldSAqcmVxX3NzZXUpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC9pbnRlbF93b3JrYXJvdW5kcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3QvaW50ZWxfd29ya2Fyb3VuZHMuYwppbmRleCA0M2UyOTAzMDY1NTEuLjg0MzdmOWQ5MThlYyAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfd29ya2Fyb3VuZHMuYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF93b3JrYXJvdW5kcy5jCkBAIC03Njcs NyArNzY3LDcgQEAgd2FfaW5pdF9tY3Ioc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIHN0 cnVjdCBpOTE1X3dhX2xpc3QgKndhbCkKIAkJdTMyIHNsaWNlID0gZmxzKHNzZXUtPnNsaWNlX21h c2spOwogCQl1MzIgZnVzZTMgPQogCQkJaW50ZWxfdW5jb3JlX3JlYWQoJmk5MTUtPnVuY29yZSwg R0VOMTBfTUlSUk9SX0ZVU0UzKTsKLQkJdTggc3NfbWFzayA9IHNzZXUtPnN1YnNsaWNlX21hc2tb c2xpY2VdOworCQl1MzIgc3NfbWFzayA9IGludGVsX3NzZXVfZ2V0X3N1YnNsaWNlcyhzc2V1LCBz bGljZSk7CiAKIAkJdTggZW5hYmxlZF9tYXNrID0gKHNzX21hc2sgfCBzc19tYXNrID4+CiAJCQkJ ICAgR0VOMTBfTDNCQU5LX1BBSVJfQ09VTlQpICYgR0VOMTBfTDNCQU5LX01BU0s7CmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZGVidWdmcy5jCmluZGV4IGEyNjAxNTcyMjQwNS4uNDYzNjVhYjk1N2U2IDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwpAQCAtMTI1OSw2ICsxMjU5LDcgQEAgc3Rh dGljIHZvaWQgaTkxNV9pbnN0ZG9uZV9pbmZvKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwKIAkJCSAgICAgICBzdHJ1Y3Qgc2VxX2ZpbGUgKm0sCiAJCQkgICAgICAgc3RydWN0IGlu dGVsX2luc3Rkb25lICppbnN0ZG9uZSkKIHsKKwlzdHJ1Y3Qgc3NldV9kZXZfaW5mbyAqc3NldSA9 ICZSVU5USU1FX0lORk8oZGV2X3ByaXYpLT5zc2V1OwogCWludCBzbGljZTsKIAlpbnQgc3Vic2xp Y2U7CiAKQEAgLTEyNzQsMTEgKzEyNzUsMTEgQEAgc3RhdGljIHZvaWQgaTkxNV9pbnN0ZG9uZV9p bmZvKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAlpZiAoSU5URUxfR0VOKGRl dl9wcml2KSA8PSA2KQogCQlyZXR1cm47CiAKLQlmb3JfZWFjaF9pbnN0ZG9uZV9zbGljZV9zdWJz bGljZShkZXZfcHJpdiwgc2xpY2UsIHN1YnNsaWNlKQorCWZvcl9lYWNoX2luc3Rkb25lX3NsaWNl X3N1YnNsaWNlKGRldl9wcml2LCBzc2V1LCBzbGljZSwgc3Vic2xpY2UpCiAJCXNlcV9wcmludGYo bSwgIlx0XHRTQU1QTEVSX0lOU1RET05FWyVkXVslZF06IDB4JTA4eFxuIiwKIAkJCSAgIHNsaWNl LCBzdWJzbGljZSwgaW5zdGRvbmUtPnNhbXBsZXJbc2xpY2VdW3N1YnNsaWNlXSk7CiAKLQlmb3Jf ZWFjaF9pbnN0ZG9uZV9zbGljZV9zdWJzbGljZShkZXZfcHJpdiwgc2xpY2UsIHN1YnNsaWNlKQor CWZvcl9lYWNoX2luc3Rkb25lX3NsaWNlX3N1YnNsaWNlKGRldl9wcml2LCBzc2V1LCBzbGljZSwg c3Vic2xpY2UpCiAJCXNlcV9wcmludGYobSwgIlx0XHRST1dfSU5TVERPTkVbJWRdWyVkXTogMHgl MDh4XG4iLAogCQkJICAgc2xpY2UsIHN1YnNsaWNlLCBpbnN0ZG9uZS0+cm93W3NsaWNlXVtzdWJz bGljZV0pOwogfQpAQCAtNDA3Miw3ICs0MDczLDcgQEAgc3RhdGljIHZvaWQgZ2VuMTBfc3NldV9k ZXZpY2Vfc3RhdHVzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJCWNvbnRp bnVlOwogCiAJCXNzZXUtPnNsaWNlX21hc2sgfD0gQklUKHMpOwotCQlzc2V1LT5zdWJzbGljZV9t YXNrW3NdID0gaW5mby0+c3NldS5zdWJzbGljZV9tYXNrW3NdOworCQlpbnRlbF9zc2V1X2NvcHlf c3Vic2xpY2VzKCZpbmZvLT5zc2V1LCBzLCBzc2V1LT5zdWJzbGljZV9tYXNrKTsKIAogCQlmb3Ig KHNzID0gMDsgc3MgPCBpbmZvLT5zc2V1Lm1heF9zdWJzbGljZXM7IHNzKyspIHsKIAkJCXVuc2ln bmVkIGludCBldV9jbnQ7CkBAIC00MTIzLDE4ICs0MTI0LDIxIEBAIHN0YXRpYyB2b2lkIGdlbjlf c3NldV9kZXZpY2Vfc3RhdHVzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJ c3NldS0+c2xpY2VfbWFzayB8PSBCSVQocyk7CiAKIAkJaWYgKElTX0dFTjlfQkMoZGV2X3ByaXYp KQotCQkJc3NldS0+c3Vic2xpY2VfbWFza1tzXSA9Ci0JCQkJUlVOVElNRV9JTkZPKGRldl9wcml2 KS0+c3NldS5zdWJzbGljZV9tYXNrW3NdOworCQkJaW50ZWxfc3NldV9jb3B5X3N1YnNsaWNlcygm aW5mby0+c3NldSwgcywKKwkJCQkJCSAgc3NldS0+c3Vic2xpY2VfbWFzayk7CiAKIAkJZm9yIChz cyA9IDA7IHNzIDwgaW5mby0+c3NldS5tYXhfc3Vic2xpY2VzOyBzcysrKSB7CiAJCQl1bnNpZ25l ZCBpbnQgZXVfY250OworCQkJdTggc3NfaWR4ID0gcyAqIGluZm8tPnNzZXUuc3Nfc3RyaWRlICsK KwkJCQkgICAgc3MgLyBCSVRTX1BFUl9CWVRFOwogCiAJCQlpZiAoSVNfR0VOOV9MUChkZXZfcHJp dikpIHsKIAkJCQlpZiAoIShzX3JlZ1tzXSAmIChHRU45X1BHQ1RMX1NTX0FDSyhzcykpKSkKIAkJ CQkJLyogc2tpcCBkaXNhYmxlZCBzdWJzbGljZSAqLwogCQkJCQljb250aW51ZTsKIAotCQkJCXNz ZXUtPnN1YnNsaWNlX21hc2tbc10gfD0gQklUKHNzKTsKKwkJCQlzc2V1LT5zdWJzbGljZV9tYXNr W3NzX2lkeF0gfD0KKwkJCQkJQklUKHNzICUgQklUU19QRVJfQllURSk7CiAJCQl9CiAKIAkJCWV1 X2NudCA9IDIgKiBod2VpZ2h0MzIoZXVfcmVnWzIqcyArIHNzLzJdICYKQEAgLTQxNTEsMjUgKzQx NTUsMjMgQEAgc3RhdGljIHZvaWQgZ2VuOV9zc2V1X2RldmljZV9zdGF0dXMoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAogc3RhdGljIHZvaWQgYnJvYWR3ZWxsX3NzZXVfZGV2aWNl X3N0YXR1cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQkJCSBzdHJ1Y3Qg c3NldV9kZXZfaW5mbyAqc3NldSkKIHsKKwlzdHJ1Y3QgaW50ZWxfcnVudGltZV9pbmZvICppbmZv ID0gUlVOVElNRV9JTkZPKGRldl9wcml2KTsKIAl1MzIgc2xpY2VfaW5mbyA9IEk5MTVfUkVBRChH RU44X0dUX1NMSUNFX0lORk8pOwogCWludCBzOwogCiAJc3NldS0+c2xpY2VfbWFzayA9IHNsaWNl X2luZm8gJiBHRU44X0xTTElDRVNUQVRfTUFTSzsKIAogCWlmIChzc2V1LT5zbGljZV9tYXNrKSB7 Ci0JCXNzZXUtPmV1X3Blcl9zdWJzbGljZSA9Ci0JCQlSVU5USU1FX0lORk8oZGV2X3ByaXYpLT5z c2V1LmV1X3Blcl9zdWJzbGljZTsKLQkJZm9yIChzID0gMDsgcyA8IGZscyhzc2V1LT5zbGljZV9t YXNrKTsgcysrKSB7Ci0JCQlzc2V1LT5zdWJzbGljZV9tYXNrW3NdID0KLQkJCQlSVU5USU1FX0lO Rk8oZGV2X3ByaXYpLT5zc2V1LnN1YnNsaWNlX21hc2tbc107Ci0JCX0KKwkJc3NldS0+ZXVfcGVy X3N1YnNsaWNlID0gaW5mby0+c3NldS5ldV9wZXJfc3Vic2xpY2U7CisJCWZvciAocyA9IDA7IHMg PCBmbHMoc3NldS0+c2xpY2VfbWFzayk7IHMrKykKKwkJCWludGVsX3NzZXVfY29weV9zdWJzbGlj ZXMoJmluZm8tPnNzZXUsIHMsCisJCQkJCQkgIHNzZXUtPnN1YnNsaWNlX21hc2spOwogCQlzc2V1 LT5ldV90b3RhbCA9IHNzZXUtPmV1X3Blcl9zdWJzbGljZSAqCiAJCQkJIGludGVsX3NzZXVfc3Vi c2xpY2VfdG90YWwoc3NldSk7CiAKIAkJLyogc3VidHJhY3QgZnVzZWQgb2ZmIEVVKHMpIGZyb20g ZW5hYmxlZCBzbGljZShzKSAqLwogCQlmb3IgKHMgPSAwOyBzIDwgZmxzKHNzZXUtPnNsaWNlX21h c2spOyBzKyspIHsKLQkJCXU4IHN1YnNsaWNlXzdldSA9Ci0JCQkJUlVOVElNRV9JTkZPKGRldl9w cml2KS0+c3NldS5zdWJzbGljZV83ZXVbc107CisJCQl1OCBzdWJzbGljZV83ZXUgPSBpbmZvLT5z c2V1LnN1YnNsaWNlXzdldVtzXTsKIAogCQkJc3NldS0+ZXVfdG90YWwgLT0gaHdlaWdodDgoc3Vi c2xpY2VfN2V1KTsKIAkJfQpAQCAtNDIxNiw2ICs0MjE4LDcgQEAgc3RhdGljIHZvaWQgaTkxNV9w cmludF9zc2V1X2luZm8oc3RydWN0IHNlcV9maWxlICptLCBib29sIGlzX2F2YWlsYWJsZV9pbmZv LAogc3RhdGljIGludCBpOTE1X3NzZXVfc3RhdHVzKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAq dW51c2VkKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IG5vZGVfdG9f aTkxNShtLT5wcml2YXRlKTsKKwljb25zdCBzdHJ1Y3QgaW50ZWxfcnVudGltZV9pbmZvICppbmZv ID0gUlVOVElNRV9JTkZPKGRldl9wcml2KTsKIAlzdHJ1Y3Qgc3NldV9kZXZfaW5mbyBzc2V1Owog CWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwogCkBAIC00MjIzLDE0ICs0MjI2LDEzIEBAIHN0YXRp YyBpbnQgaTkxNV9zc2V1X3N0YXR1cyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkK IAkJcmV0dXJuIC1FTk9ERVY7CiAKIAlzZXFfcHV0cyhtLCAiU1NFVSBEZXZpY2UgSW5mb1xuIik7 Ci0JaTkxNV9wcmludF9zc2V1X2luZm8obSwgdHJ1ZSwgJlJVTlRJTUVfSU5GTyhkZXZfcHJpdikt PnNzZXUpOworCWk5MTVfcHJpbnRfc3NldV9pbmZvKG0sIHRydWUsICZpbmZvLT5zc2V1KTsKIAog CXNlcV9wdXRzKG0sICJTU0VVIERldmljZSBTdGF0dXNcbiIpOwogCW1lbXNldCgmc3NldSwgMCwg c2l6ZW9mKHNzZXUpKTsKLQlzc2V1Lm1heF9zbGljZXMgPSBSVU5USU1FX0lORk8oZGV2X3ByaXYp LT5zc2V1Lm1heF9zbGljZXM7Ci0Jc3NldS5tYXhfc3Vic2xpY2VzID0gUlVOVElNRV9JTkZPKGRl dl9wcml2KS0+c3NldS5tYXhfc3Vic2xpY2VzOwotCXNzZXUubWF4X2V1c19wZXJfc3Vic2xpY2Ug PQotCQlSVU5USU1FX0lORk8oZGV2X3ByaXYpLT5zc2V1Lm1heF9ldXNfcGVyX3N1YnNsaWNlOwor CWludGVsX3NzZXVfc2V0X2luZm8oJnNzZXUsIGluZm8tPnNzZXUubWF4X3NsaWNlcywKKwkJCSAg ICBpbmZvLT5zc2V1Lm1heF9zdWJzbGljZXMsCisJCQkgICAgaW5mby0+c3NldS5tYXhfZXVzX3Bl cl9zdWJzbGljZSk7CiAKIAl3aXRoX2ludGVsX3J1bnRpbWVfcG0oZGV2X3ByaXYsIHdha2VyZWYp IHsKIAkJaWYgKElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMK aW5kZXggOGE3ZDRkZWE4NjA5Li5kYzZiYWZjMDliMzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu YwpAQCAtMzMxLDcgKzMzMSw3IEBAIHN0YXRpYyBpbnQgaTkxNV9nZXRwYXJhbV9pb2N0bChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCXN0cnVjdCBwY2lfZGV2ICpwZGV2ID0g ZGV2X3ByaXYtPmRybS5wZGV2OwogCWNvbnN0IHN0cnVjdCBzc2V1X2Rldl9pbmZvICpzc2V1ID0g JlJVTlRJTUVfSU5GTyhkZXZfcHJpdiktPnNzZXU7CiAJZHJtX2k5MTVfZ2V0cGFyYW1fdCAqcGFy YW0gPSBkYXRhOwotCWludCB2YWx1ZTsKKwlpbnQgdmFsdWUgPSAwOwogCiAJc3dpdGNoIChwYXJh bS0+cGFyYW0pIHsKIAljYXNlIEk5MTVfUEFSQU1fSVJRX0FDVElWRToKQEAgLTQ2MCw3ICs0NjAs OSBAQCBzdGF0aWMgaW50IGk5MTVfZ2V0cGFyYW1faW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRl diwgdm9pZCAqZGF0YSwKIAkJCXJldHVybiAtRU5PREVWOwogCQlicmVhazsKIAljYXNlIEk5MTVf UEFSQU1fU1VCU0xJQ0VfTUFTSzoKLQkJdmFsdWUgPSBzc2V1LT5zdWJzbGljZV9tYXNrWzBdOwor CQkvKiBPbmx5IGNvcHkgYml0cyBmcm9tIHRoZSBmaXJzdCBzbGljZSAqLworCQltZW1jcHkoJnZh bHVlLCBzc2V1LT5zdWJzbGljZV9tYXNrLAorCQkgICAgICAgbWluKHNzZXUtPnNzX3N0cmlkZSwg KHU4KXNpemVvZih2YWx1ZSkpKTsKIAkJaWYgKCF2YWx1ZSkKIAkJCXJldHVybiAtRU5PREVWOwog CQlicmVhazsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9y LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jCmluZGV4IDRmODVjYmRk ZGIwZC4uYzc2MGNjNWIzMzg4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dwdV9lcnJvci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMK QEAgLTQwOCw2ICs0MDgsNyBAQCBzdGF0aWMgdm9pZCBwcmludF9lcnJvcl9idWZmZXJzKHN0cnVj dCBkcm1faTkxNV9lcnJvcl9zdGF0ZV9idWYgKm0sCiBzdGF0aWMgdm9pZCBlcnJvcl9wcmludF9p bnN0ZG9uZShzdHJ1Y3QgZHJtX2k5MTVfZXJyb3Jfc3RhdGVfYnVmICptLAogCQkJCSBjb25zdCBz dHJ1Y3QgZHJtX2k5MTVfZXJyb3JfZW5naW5lICplZSkKIHsKKwlzdHJ1Y3Qgc3NldV9kZXZfaW5m byAqc3NldSA9ICZSVU5USU1FX0lORk8obS0+aTkxNSktPnNzZXU7CiAJaW50IHNsaWNlOwogCWlu dCBzdWJzbGljZTsKIApAQCAtNDIzLDEyICs0MjQsMTIgQEAgc3RhdGljIHZvaWQgZXJyb3JfcHJp bnRfaW5zdGRvbmUoc3RydWN0IGRybV9pOTE1X2Vycm9yX3N0YXRlX2J1ZiAqbSwKIAlpZiAoSU5U RUxfR0VOKG0tPmk5MTUpIDw9IDYpCiAJCXJldHVybjsKIAotCWZvcl9lYWNoX2luc3Rkb25lX3Ns aWNlX3N1YnNsaWNlKG0tPmk5MTUsIHNsaWNlLCBzdWJzbGljZSkKKwlmb3JfZWFjaF9pbnN0ZG9u ZV9zbGljZV9zdWJzbGljZShtLT5pOTE1LCBzc2V1LCBzbGljZSwgc3Vic2xpY2UpCiAJCWVycl9w cmludGYobSwgIiAgU0FNUExFUl9JTlNURE9ORVslZF1bJWRdOiAweCUwOHhcbiIsCiAJCQkgICBz bGljZSwgc3Vic2xpY2UsCiAJCQkgICBlZS0+aW5zdGRvbmUuc2FtcGxlcltzbGljZV1bc3Vic2xp Y2VdKTsKIAotCWZvcl9lYWNoX2luc3Rkb25lX3NsaWNlX3N1YnNsaWNlKG0tPmk5MTUsIHNsaWNl LCBzdWJzbGljZSkKKwlmb3JfZWFjaF9pbnN0ZG9uZV9zbGljZV9zdWJzbGljZShtLT5pOTE1LCBz c2V1LCBzbGljZSwgc3Vic2xpY2UpCiAJCWVycl9wcmludGYobSwgIiAgUk9XX0lOU1RET05FWyVk XVslZF06IDB4JTA4eFxuIiwKIAkJCSAgIHNsaWNlLCBzdWJzbGljZSwKIAkJCSAgIGVlLT5pbnN0 ZG9uZS5yb3dbc2xpY2VdW3N1YnNsaWNlXSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3F1ZXJ5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3F1ZXJ5LmMKaW5k ZXggN2MxNzA4YzIyODExLi4wMDBkY2IxNDVjZTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfcXVlcnkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3F1ZXJ5 LmMKQEAgLTM3LDggKzM3LDYgQEAgc3RhdGljIGludCBxdWVyeV90b3BvbG9neV9pbmZvKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAljb25zdCBzdHJ1Y3Qgc3NldV9kZXZfaW5m byAqc3NldSA9ICZSVU5USU1FX0lORk8oZGV2X3ByaXYpLT5zc2V1OwogCXN0cnVjdCBkcm1faTkx NV9xdWVyeV90b3BvbG9neV9pbmZvIHRvcG87CiAJdTMyIHNsaWNlX2xlbmd0aCwgc3Vic2xpY2Vf bGVuZ3RoLCBldV9sZW5ndGgsIHRvdGFsX2xlbmd0aDsKLQl1OCBzdWJzbGljZV9zdHJpZGUgPSBH RU5fU1NFVV9TVFJJREUoc3NldS0+bWF4X3N1YnNsaWNlcyk7Ci0JdTggZXVfc3RyaWRlID0gR0VO X1NTRVVfU1RSSURFKHNzZXUtPm1heF9ldXNfcGVyX3N1YnNsaWNlKTsKIAlpbnQgcmV0OwogCiAJ aWYgKHF1ZXJ5X2l0ZW0tPmZsYWdzICE9IDApCkBAIC01MCw4ICs0OCw4IEBAIHN0YXRpYyBpbnQg cXVlcnlfdG9wb2xvZ3lfaW5mbyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJ QlVJTERfQlVHX09OKHNpemVvZih1OCkgIT0gc2l6ZW9mKHNzZXUtPnNsaWNlX21hc2spKTsKIAog CXNsaWNlX2xlbmd0aCA9IHNpemVvZihzc2V1LT5zbGljZV9tYXNrKTsKLQlzdWJzbGljZV9sZW5n dGggPSBzc2V1LT5tYXhfc2xpY2VzICogc3Vic2xpY2Vfc3RyaWRlOwotCWV1X2xlbmd0aCA9IHNz ZXUtPm1heF9zbGljZXMgKiBzc2V1LT5tYXhfc3Vic2xpY2VzICogZXVfc3RyaWRlOworCXN1YnNs aWNlX2xlbmd0aCA9IHNzZXUtPm1heF9zbGljZXMgKiBzc2V1LT5zc19zdHJpZGU7CisJZXVfbGVu Z3RoID0gc3NldS0+bWF4X3NsaWNlcyAqIHNzZXUtPm1heF9zdWJzbGljZXMgKiBzc2V1LT5ldV9z dHJpZGU7CiAJdG90YWxfbGVuZ3RoID0gc2l6ZW9mKHRvcG8pICsgc2xpY2VfbGVuZ3RoICsgc3Vi c2xpY2VfbGVuZ3RoICsKIAkJICAgICAgIGV1X2xlbmd0aDsKIApAQCAtNjksOSArNjcsOSBAQCBz dGF0aWMgaW50IHF1ZXJ5X3RvcG9sb2d5X2luZm8oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAogCXRvcG8ubWF4X2V1c19wZXJfc3Vic2xpY2UgPSBzc2V1LT5tYXhfZXVzX3Blcl9z dWJzbGljZTsKIAogCXRvcG8uc3Vic2xpY2Vfb2Zmc2V0ID0gc2xpY2VfbGVuZ3RoOwotCXRvcG8u c3Vic2xpY2Vfc3RyaWRlID0gc3Vic2xpY2Vfc3RyaWRlOworCXRvcG8uc3Vic2xpY2Vfc3RyaWRl ID0gc3NldS0+c3Nfc3RyaWRlOwogCXRvcG8uZXVfb2Zmc2V0ID0gc2xpY2VfbGVuZ3RoICsgc3Vi c2xpY2VfbGVuZ3RoOwotCXRvcG8uZXVfc3RyaWRlID0gZXVfc3RyaWRlOworCXRvcG8uZXVfc3Ry aWRlID0gc3NldS0+ZXVfc3RyaWRlOwogCiAJaWYgKF9fY29weV90b191c2VyKHU2NF90b191c2Vy X3B0cihxdWVyeV9pdGVtLT5kYXRhX3B0ciksCiAJCQkgICAmdG9wbywgc2l6ZW9mKHRvcG8pKSkK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RldmljZV9pbmZvLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZXZpY2VfaW5mby5jCmluZGV4IDk3Zjc0MjUzMGZh MS4uMzYyNWY3NzdmM2EzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k ZXZpY2VfaW5mby5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RldmljZV9pbmZv LmMKQEAgLTkyLDkgKzkyLDkgQEAgc3RhdGljIHZvaWQgc3NldV9kdW1wKGNvbnN0IHN0cnVjdCBz c2V1X2Rldl9pbmZvICpzc2V1LCBzdHJ1Y3QgZHJtX3ByaW50ZXIgKnApCiAJCSAgIGh3ZWlnaHQ4 KHNzZXUtPnNsaWNlX21hc2spLCBzc2V1LT5zbGljZV9tYXNrKTsKIAlkcm1fcHJpbnRmKHAsICJz dWJzbGljZSB0b3RhbDogJXVcbiIsIGludGVsX3NzZXVfc3Vic2xpY2VfdG90YWwoc3NldSkpOwog CWZvciAocyA9IDA7IHMgPCBzc2V1LT5tYXhfc2xpY2VzOyBzKyspIHsKLQkJZHJtX3ByaW50Zihw LCAic2xpY2UlZDogJXUgc3Vic2xpY2VzLCBtYXNrPSUwNHhcbiIsCisJCWRybV9wcmludGYocCwg InNsaWNlJWQ6ICV1IHN1YnNsaWNlcywgbWFzaz0lMDh4XG4iLAogCQkJICAgcywgaW50ZWxfc3Nl dV9zdWJzbGljZXNfcGVyX3NsaWNlKHNzZXUsIHMpLAotCQkJICAgc3NldS0+c3Vic2xpY2VfbWFz a1tzXSk7CisJCQkgICBpbnRlbF9zc2V1X2dldF9zdWJzbGljZXMoc3NldSwgcykpOwogCX0KIAlk cm1fcHJpbnRmKHAsICJFVSB0b3RhbDogJXVcbiIsIHNzZXUtPmV1X3RvdGFsKTsKIAlkcm1fcHJp bnRmKHAsICJFVSBwZXIgc3Vic2xpY2U6ICV1XG4iLCBzc2V1LT5ldV9wZXJfc3Vic2xpY2UpOwpA QCAtMTE3LDEwICsxMTcsOSBAQCB2b2lkIGludGVsX2RldmljZV9pbmZvX2R1bXBfcnVudGltZShj b25zdCBzdHJ1Y3QgaW50ZWxfcnVudGltZV9pbmZvICppbmZvLAogc3RhdGljIGludCBzc2V1X2V1 X2lkeChjb25zdCBzdHJ1Y3Qgc3NldV9kZXZfaW5mbyAqc3NldSwgaW50IHNsaWNlLAogCQkgICAg ICAgaW50IHN1YnNsaWNlKQogewotCWludCBzdWJzbGljZV9zdHJpZGUgPSBHRU5fU1NFVV9TVFJJ REUoc3NldS0+bWF4X2V1c19wZXJfc3Vic2xpY2UpOwotCWludCBzbGljZV9zdHJpZGUgPSBzc2V1 LT5tYXhfc3Vic2xpY2VzICogc3Vic2xpY2Vfc3RyaWRlOworCWludCBzbGljZV9zdHJpZGUgPSBz c2V1LT5tYXhfc3Vic2xpY2VzICogc3NldS0+ZXVfc3RyaWRlOwogCi0JcmV0dXJuIHNsaWNlICog c2xpY2Vfc3RyaWRlICsgc3Vic2xpY2UgKiBzdWJzbGljZV9zdHJpZGU7CisJcmV0dXJuIHNsaWNl ICogc2xpY2Vfc3RyaWRlICsgc3Vic2xpY2UgKiBzc2V1LT5ldV9zdHJpZGU7CiB9CiAKIHN0YXRp YyB1MTYgc3NldV9nZXRfZXVzKGNvbnN0IHN0cnVjdCBzc2V1X2Rldl9pbmZvICpzc2V1LCBpbnQg c2xpY2UsCkBAIC0xMjksNyArMTI4LDcgQEAgc3RhdGljIHUxNiBzc2V1X2dldF9ldXMoY29uc3Qg c3RydWN0IHNzZXVfZGV2X2luZm8gKnNzZXUsIGludCBzbGljZSwKIAlpbnQgaSwgb2Zmc2V0ID0g c3NldV9ldV9pZHgoc3NldSwgc2xpY2UsIHN1YnNsaWNlKTsKIAl1MTYgZXVfbWFzayA9IDA7CiAK LQlmb3IgKGkgPSAwOyBpIDwgR0VOX1NTRVVfU1RSSURFKHNzZXUtPm1heF9ldXNfcGVyX3N1YnNs aWNlKTsgaSsrKSB7CisJZm9yIChpID0gMDsgaSA8IHNzZXUtPmV1X3N0cmlkZTsgaSsrKSB7CiAJ CWV1X21hc2sgfD0gKCh1MTYpc3NldS0+ZXVfbWFza1tvZmZzZXQgKyBpXSkgPDwKIAkJCShpICog QklUU19QRVJfQllURSk7CiAJfQpAQCAtMTQyLDcgKzE0MSw3IEBAIHN0YXRpYyB2b2lkIHNzZXVf c2V0X2V1cyhzdHJ1Y3Qgc3NldV9kZXZfaW5mbyAqc3NldSwgaW50IHNsaWNlLCBpbnQgc3Vic2xp Y2UsCiB7CiAJaW50IGksIG9mZnNldCA9IHNzZXVfZXVfaWR4KHNzZXUsIHNsaWNlLCBzdWJzbGlj ZSk7CiAKLQlmb3IgKGkgPSAwOyBpIDwgR0VOX1NTRVVfU1RSSURFKHNzZXUtPm1heF9ldXNfcGVy X3N1YnNsaWNlKTsgaSsrKSB7CisJZm9yIChpID0gMDsgaSA8IHNzZXUtPmV1X3N0cmlkZTsgaSsr KSB7CiAJCXNzZXUtPmV1X21hc2tbb2Zmc2V0ICsgaV0gPQogCQkJKGV1X21hc2sgPj4gKEJJVFNf UEVSX0JZVEUgKiBpKSkgJiAweGZmOwogCX0KQEAgLTE1OSw5ICsxNTgsOSBAQCB2b2lkIGludGVs X2RldmljZV9pbmZvX2R1bXBfdG9wb2xvZ3koY29uc3Qgc3RydWN0IHNzZXVfZGV2X2luZm8gKnNz ZXUsCiAJfQogCiAJZm9yIChzID0gMDsgcyA8IHNzZXUtPm1heF9zbGljZXM7IHMrKykgewotCQlk cm1fcHJpbnRmKHAsICJzbGljZSVkOiAldSBzdWJzbGljZShzKSAoMHglaGh4KTpcbiIsCisJCWRy bV9wcmludGYocCwgInNsaWNlJWQ6ICV1IHN1YnNsaWNlKHMpICgweCUwOHgpOlxuIiwKIAkJCSAg IHMsIGludGVsX3NzZXVfc3Vic2xpY2VzX3Blcl9zbGljZShzc2V1LCBzKSwKLQkJCSAgIHNzZXUt PnN1YnNsaWNlX21hc2tbc10pOworCQkJICAgaW50ZWxfc3NldV9nZXRfc3Vic2xpY2VzKHNzZXUs IHMpKTsKIAogCQlmb3IgKHNzID0gMDsgc3MgPCBzc2V1LT5tYXhfc3Vic2xpY2VzOyBzcysrKSB7 CiAJCQl1MTYgZW5hYmxlZF9ldXMgPSBzc2V1X2dldF9ldXMoc3NldSwgcywgc3MpOwpAQCAtMTkw LDE1ICsxODksMTAgQEAgc3RhdGljIHZvaWQgZ2VuMTFfc3NldV9pbmZvX2luaXQoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCXU4IGV1X2VuOwogCWludCBzOwogCi0JaWYgKElT X0VMS0hBUlRMQUtFKGRldl9wcml2KSkgewotCQlzc2V1LT5tYXhfc2xpY2VzID0gMTsKLQkJc3Nl dS0+bWF4X3N1YnNsaWNlcyA9IDQ7Ci0JCXNzZXUtPm1heF9ldXNfcGVyX3N1YnNsaWNlID0gODsK LQl9IGVsc2UgewotCQlzc2V1LT5tYXhfc2xpY2VzID0gMTsKLQkJc3NldS0+bWF4X3N1YnNsaWNl cyA9IDg7Ci0JCXNzZXUtPm1heF9ldXNfcGVyX3N1YnNsaWNlID0gODsKLQl9CisJaWYgKElTX0VM S0hBUlRMQUtFKGRldl9wcml2KSkKKwkJaW50ZWxfc3NldV9zZXRfaW5mbyhzc2V1LCAxLCA0LCA4 KTsKKwllbHNlCisJCWludGVsX3NzZXVfc2V0X2luZm8oc3NldSwgMSwgOCwgOCk7CiAKIAlzX2Vu ID0gSTkxNV9SRUFEKEdFTjExX0dUX1NMSUNFX0VOQUJMRSkgJiBHRU4xMV9HVF9TX0VOQV9NQVNL OwogCXNzX2VuID0gfkk5MTVfUkVBRChHRU4xMV9HVF9TVUJTTElDRV9ESVNBQkxFKTsKQEAgLTIw NywxNSArMjAxLDE1IEBAIHN0YXRpYyB2b2lkIGdlbjExX3NzZXVfaW5mb19pbml0KHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAogCWZvciAocyA9IDA7IHMgPCBzc2V1LT5tYXhf c2xpY2VzOyBzKyspIHsKIAkJaWYgKHNfZW4gJiBCSVQocykpIHsKLQkJCWludCBzc19pZHggPSBz c2V1LT5tYXhfc3Vic2xpY2VzICogczsKIAkJCWludCBzczsKIAogCQkJc3NldS0+c2xpY2VfbWFz ayB8PSBCSVQocyk7Ci0JCQlzc2V1LT5zdWJzbGljZV9tYXNrW3NdID0gKHNzX2VuID4+IHNzX2lk eCkgJiBzc19lbl9tYXNrOwotCQkJZm9yIChzcyA9IDA7IHNzIDwgc3NldS0+bWF4X3N1YnNsaWNl czsgc3MrKykgewotCQkJCWlmIChzc2V1LT5zdWJzbGljZV9tYXNrW3NdICYgQklUKHNzKSkKKwor CQkJaW50ZWxfc3NldV9zZXRfc3Vic2xpY2VzKHNzZXUsIHMsIHNzX2VuX21hc2spOworCisJCQlm b3IgKHNzID0gMDsgc3MgPCBzc2V1LT5tYXhfc3Vic2xpY2VzOyBzcysrKQorCQkJCWlmIChpbnRl bF9zc2V1X2hhc19zdWJzbGljZShzc2V1LCBzLCBzcykpCiAJCQkJCXNzZXVfc2V0X2V1cyhzc2V1 LCBzLCBzcywgZXVfZW4pOwotCQkJfQogCQl9CiAJfQogCXNzZXUtPmV1X3Blcl9zdWJzbGljZSA9 IGh3ZWlnaHQ4KGV1X2VuKTsKQEAgLTIzNSwyMyArMjI5LDEwIEBAIHN0YXRpYyB2b2lkIGdlbjEw X3NzZXVfaW5mb19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAljb25z dCBpbnQgZXVfbWFzayA9IDB4ZmY7CiAJdTMyIHN1YnNsaWNlX21hc2ssIGV1X2VuOwogCisJaW50 ZWxfc3NldV9zZXRfaW5mbyhzc2V1LCA2LCA0LCA4KTsKKwogCXNzZXUtPnNsaWNlX21hc2sgPSAo ZnVzZTIgJiBHRU4xMF9GMl9TX0VOQV9NQVNLKSA+PgogCQkJICAgIEdFTjEwX0YyX1NfRU5BX1NI SUZUOwotCXNzZXUtPm1heF9zbGljZXMgPSA2OwotCXNzZXUtPm1heF9zdWJzbGljZXMgPSA0Owot CXNzZXUtPm1heF9ldXNfcGVyX3N1YnNsaWNlID0gODsKLQotCXN1YnNsaWNlX21hc2sgPSAoMSA8 PCA0KSAtIDE7Ci0Jc3Vic2xpY2VfbWFzayAmPSB+KChmdXNlMiAmIEdFTjEwX0YyX1NTX0RJU19N QVNLKSA+PgotCQkJICAgR0VOMTBfRjJfU1NfRElTX1NISUZUKTsKLQotCS8qCi0JICogU2xpY2Uw IGNhbiBoYXZlIHVwIHRvIDMgc3Vic2xpY2VzLCBidXQgdGhlcmUgYXJlIG9ubHkgMiBpbgotCSAq IHNsaWNlMS8yLgotCSAqLwotCXNzZXUtPnN1YnNsaWNlX21hc2tbMF0gPSBzdWJzbGljZV9tYXNr OwotCWZvciAocyA9IDE7IHMgPCBzc2V1LT5tYXhfc2xpY2VzOyBzKyspCi0JCXNzZXUtPnN1YnNs aWNlX21hc2tbc10gPSBzdWJzbGljZV9tYXNrICYgMHgzOwogCiAJLyogU2xpY2UwICovCiAJZXVf ZW4gPSB+STkxNV9SRUFEKEdFTjhfRVVfRElTQUJMRTApOwpAQCAtMjc2LDE0ICsyNTcsMjIgQEAg c3RhdGljIHZvaWQgZ2VuMTBfc3NldV9pbmZvX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQogCWV1X2VuID0gfkk5MTVfUkVBRChHRU4xMF9FVV9ESVNBQkxFMyk7CiAJc3Nl dV9zZXRfZXVzKHNzZXUsIDUsIDEsIGV1X2VuICYgZXVfbWFzayk7CiAKLQkvKiBEbyBhIHNlY29u ZCBwYXNzIHdoZXJlIHdlIG1hcmsgdGhlIHN1YnNsaWNlcyBkaXNhYmxlZCBpZiBhbGwgdGhlaXIK LQkgKiBldXMgYXJlIG9mZi4KLQkgKi8KKwlzdWJzbGljZV9tYXNrID0gKDEgPDwgNCkgLSAxOwor CXN1YnNsaWNlX21hc2sgJj0gfigoZnVzZTIgJiBHRU4xMF9GMl9TU19ESVNfTUFTSykgPj4KKwkJ CSAgIEdFTjEwX0YyX1NTX0RJU19TSElGVCk7CisKIAlmb3IgKHMgPSAwOyBzIDwgc3NldS0+bWF4 X3NsaWNlczsgcysrKSB7CiAJCWZvciAoc3MgPSAwOyBzcyA8IHNzZXUtPm1heF9zdWJzbGljZXM7 IHNzKyspIHsKIAkJCWlmIChzc2V1X2dldF9ldXMoc3NldSwgcywgc3MpID09IDApCi0JCQkJc3Nl dS0+c3Vic2xpY2VfbWFza1tzXSAmPSB+QklUKHNzKTsKKwkJCQlzdWJzbGljZV9tYXNrICY9IH5C SVQoc3MpOwogCQl9CisKKwkJLyoKKwkJICogU2xpY2UwIGNhbiBoYXZlIHVwIHRvIDMgc3Vic2xp Y2VzLCBidXQgdGhlcmUgYXJlIG9ubHkgMiBpbgorCQkgKiBzbGljZTEvMi4KKwkJICovCisJCWlu dGVsX3NzZXVfc2V0X3N1YnNsaWNlcyhzc2V1LCBzLCBzID09IDAgPyBzdWJzbGljZV9tYXNrIDoK KwkJCQkJCQkgICBzdWJzbGljZV9tYXNrICYgMHgzKTsKIAl9CiAKIAlzc2V1LT5ldV90b3RhbCA9 IGNvbXB1dGVfZXVfdG90YWwoc3NldSk7CkBAIC0zMDksMTMgKzI5OCwxMiBAQCBzdGF0aWMgdm9p ZCBjaGVycnl2aWV3X3NzZXVfaW5mb19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKIHsKIAlzdHJ1Y3Qgc3NldV9kZXZfaW5mbyAqc3NldSA9ICZSVU5USU1FX0lORk8oZGV2 X3ByaXYpLT5zc2V1OwogCXUzMiBmdXNlOworCXU4IHN1YnNsaWNlX21hc2s7CiAKIAlmdXNlID0g STkxNV9SRUFEKENIVl9GVVNFX0dUKTsKIAogCXNzZXUtPnNsaWNlX21hc2sgPSBCSVQoMCk7Ci0J c3NldS0+bWF4X3NsaWNlcyA9IDE7Ci0Jc3NldS0+bWF4X3N1YnNsaWNlcyA9IDI7Ci0Jc3NldS0+ bWF4X2V1c19wZXJfc3Vic2xpY2UgPSA4OworCWludGVsX3NzZXVfc2V0X2luZm8oc3NldSwgMSwg MiwgOCk7CiAKIAlpZiAoIShmdXNlICYgQ0hWX0ZHVF9ESVNBQkxFX1NTMCkpIHsKIAkJdTggZGlz YWJsZWRfbWFzayA9CkBAIC0zMjQsNyArMzEyLDcgQEAgc3RhdGljIHZvaWQgY2hlcnJ5dmlld19z c2V1X2luZm9faW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCQkoKChm dXNlICYgQ0hWX0ZHVF9FVV9ESVNfU1MwX1IxX01BU0spID4+CiAJCQkgIENIVl9GR1RfRVVfRElT X1NTMF9SMV9TSElGVCkgPDwgNCk7CiAKLQkJc3NldS0+c3Vic2xpY2VfbWFza1swXSB8PSBCSVQo MCk7CisJCXN1YnNsaWNlX21hc2sgfD0gQklUKDApOwogCQlzc2V1X3NldF9ldXMoc3NldSwgMCwg MCwgfmRpc2FibGVkX21hc2spOwogCX0KIApAQCAtMzM1LDEwICszMjMsMTIgQEAgc3RhdGljIHZv aWQgY2hlcnJ5dmlld19zc2V1X2luZm9faW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCiAJCQkoKChmdXNlICYgQ0hWX0ZHVF9FVV9ESVNfU1MxX1IxX01BU0spID4+CiAJCQkg IENIVl9GR1RfRVVfRElTX1NTMV9SMV9TSElGVCkgPDwgNCk7CiAKLQkJc3NldS0+c3Vic2xpY2Vf bWFza1swXSB8PSBCSVQoMSk7CisJCXN1YnNsaWNlX21hc2sgfD0gQklUKDEpOwogCQlzc2V1X3Nl dF9ldXMoc3NldSwgMCwgMSwgfmRpc2FibGVkX21hc2spOwogCX0KIAorCWludGVsX3NzZXVfc2V0 X3N1YnNsaWNlcyhzc2V1LCAwLCBzdWJzbGljZV9tYXNrKTsKKwogCXNzZXUtPmV1X3RvdGFsID0g Y29tcHV0ZV9ldV90b3RhbChzc2V1KTsKIAogCS8qCkBAIC0zNzEsOSArMzYxLDggQEAgc3RhdGlj IHZvaWQgZ2VuOV9zc2V1X2luZm9faW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCiAJc3NldS0+c2xpY2VfbWFzayA9IChmdXNlMiAmIEdFTjhfRjJfU19FTkFfTUFTSykgPj4g R0VOOF9GMl9TX0VOQV9TSElGVDsKIAogCS8qIEJYVCBoYXMgYSBzaW5nbGUgc2xpY2UgYW5kIGF0 IG1vc3QgMyBzdWJzbGljZXMuICovCi0Jc3NldS0+bWF4X3NsaWNlcyA9IElTX0dFTjlfTFAoZGV2 X3ByaXYpID8gMSA6IDM7Ci0Jc3NldS0+bWF4X3N1YnNsaWNlcyA9IElTX0dFTjlfTFAoZGV2X3By aXYpID8gMyA6IDQ7Ci0Jc3NldS0+bWF4X2V1c19wZXJfc3Vic2xpY2UgPSA4OworCWludGVsX3Nz ZXVfc2V0X2luZm8oc3NldSwgSVNfR0VOOV9MUChkZXZfcHJpdikgPyAxIDogMywKKwkJCSAgICBJ U19HRU45X0xQKGRldl9wcml2KSA/IDMgOiA0LCA4KTsKIAogCS8qCiAJICogVGhlIHN1YnNsaWNl IGRpc2FibGUgZmllbGQgaXMgZ2xvYmFsLCBpLmUuIGl0IGFwcGxpZXMKQEAgLTM5MiwxNCArMzgx LDE0IEBAIHN0YXRpYyB2b2lkIGdlbjlfc3NldV9pbmZvX2luaXQoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KQogCQkJLyogc2tpcCBkaXNhYmxlZCBzbGljZSAqLwogCQkJY29udGlu dWU7CiAKLQkJc3NldS0+c3Vic2xpY2VfbWFza1tzXSA9IHN1YnNsaWNlX21hc2s7CisJCWludGVs X3NzZXVfc2V0X3N1YnNsaWNlcyhzc2V1LCBzLCBzdWJzbGljZV9tYXNrKTsKIAogCQlldV9kaXNh YmxlID0gSTkxNV9SRUFEKEdFTjlfRVVfRElTQUJMRShzKSk7CiAJCWZvciAoc3MgPSAwOyBzcyA8 IHNzZXUtPm1heF9zdWJzbGljZXM7IHNzKyspIHsKIAkJCWludCBldV9wZXJfc3M7CiAJCQl1OCBl dV9kaXNhYmxlZF9tYXNrOwogCi0JCQlpZiAoIShzc2V1LT5zdWJzbGljZV9tYXNrW3NdICYgQklU KHNzKSkpCisJCQlpZiAoIWludGVsX3NzZXVfaGFzX3N1YnNsaWNlKHNzZXUsIHMsIHNzKSkKIAkJ CQkvKiBza2lwIGRpc2FibGVkIHN1YnNsaWNlICovCiAJCQkJY29udGludWU7CiAKQEAgLTQ3Miw5 ICs0NjEsNyBAQCBzdGF0aWMgdm9pZCBicm9hZHdlbGxfc3NldV9pbmZvX2luaXQoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCiAJZnVzZTIgPSBJOTE1X1JFQUQoR0VOOF9GVVNF Mik7CiAJc3NldS0+c2xpY2VfbWFzayA9IChmdXNlMiAmIEdFTjhfRjJfU19FTkFfTUFTSykgPj4g R0VOOF9GMl9TX0VOQV9TSElGVDsKLQlzc2V1LT5tYXhfc2xpY2VzID0gMzsKLQlzc2V1LT5tYXhf c3Vic2xpY2VzID0gMzsKLQlzc2V1LT5tYXhfZXVzX3Blcl9zdWJzbGljZSA9IDg7CisJaW50ZWxf c3NldV9zZXRfaW5mbyhzc2V1LCAzLCAzLCA4KTsKIAogCS8qCiAJICogVGhlIHN1YnNsaWNlIGRp c2FibGUgZmllbGQgaXMgZ2xvYmFsLCBpLmUuIGl0IGFwcGxpZXMKQEAgLTUwMSwxOCArNDg4LDE5 IEBAIHN0YXRpYyB2b2lkIGJyb2Fkd2VsbF9zc2V1X2luZm9faW5pdChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCiAJCQkvKiBza2lwIGRpc2FibGVkIHNsaWNlICovCiAJCQljb250 aW51ZTsKIAotCQlzc2V1LT5zdWJzbGljZV9tYXNrW3NdID0gc3Vic2xpY2VfbWFzazsKKwkJaW50 ZWxfc3NldV9zZXRfc3Vic2xpY2VzKHNzZXUsIHMsIHN1YnNsaWNlX21hc2spOwogCiAJCWZvciAo c3MgPSAwOyBzcyA8IHNzZXUtPm1heF9zdWJzbGljZXM7IHNzKyspIHsKIAkJCXU4IGV1X2Rpc2Fi bGVkX21hc2s7CiAJCQl1MzIgbl9kaXNhYmxlZDsKIAotCQkJaWYgKCEoc3NldS0+c3Vic2xpY2Vf bWFza1tzXSAmIEJJVChzcykpKQorCQkJaWYgKCFpbnRlbF9zc2V1X2hhc19zdWJzbGljZShzc2V1 LCBzLCBzcykpCiAJCQkJLyogc2tpcCBkaXNhYmxlZCBzdWJzbGljZSAqLwogCQkJCWNvbnRpbnVl OwogCiAJCQlldV9kaXNhYmxlZF9tYXNrID0KLQkJCQlldV9kaXNhYmxlW3NdID4+IChzcyAqIHNz ZXUtPm1heF9ldXNfcGVyX3N1YnNsaWNlKTsKKwkJCQlldV9kaXNhYmxlW3NdID4+CisJCQkJCShz cyAqIHNzZXUtPm1heF9ldXNfcGVyX3N1YnNsaWNlKTsKIAogCQkJc3NldV9zZXRfZXVzKHNzZXUs IHMsIHNzLCB+ZXVfZGlzYWJsZWRfbWFzayk7CiAKQEAgLTU1Miw2ICs1NDAsNyBAQCBzdGF0aWMg dm9pZCBoYXN3ZWxsX3NzZXVfaW5mb19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKIAlzdHJ1Y3Qgc3NldV9kZXZfaW5mbyAqc3NldSA9ICZSVU5USU1FX0lORk8oZGV2X3By aXYpLT5zc2V1OwogCXUzMiBmdXNlMTsKIAlpbnQgcywgc3M7CisJdTMyIHN1YnNsaWNlX21hc2s7 CiAKIAkvKgogCSAqIFRoZXJlIGlzbid0IGEgcmVnaXN0ZXIgdG8gdGVsbCB1cyBob3cgbWFueSBz bGljZXMvc3Vic2xpY2VzLiBXZQpAQCAtNTYzLDIyICs1NTIsMTggQEAgc3RhdGljIHZvaWQgaGFz d2VsbF9zc2V1X2luZm9faW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJ CS8qIGZhbGwgdGhyb3VnaCAqLwogCWNhc2UgMToKIAkJc3NldS0+c2xpY2VfbWFzayA9IEJJVCgw KTsKLQkJc3NldS0+c3Vic2xpY2VfbWFza1swXSA9IEJJVCgwKTsKKwkJc3Vic2xpY2VfbWFzayA9 IEJJVCgwKTsKIAkJYnJlYWs7CiAJY2FzZSAyOgogCQlzc2V1LT5zbGljZV9tYXNrID0gQklUKDAp OwotCQlzc2V1LT5zdWJzbGljZV9tYXNrWzBdID0gQklUKDApIHwgQklUKDEpOworCQlzdWJzbGlj ZV9tYXNrID0gQklUKDApIHwgQklUKDEpOwogCQlicmVhazsKIAljYXNlIDM6CiAJCXNzZXUtPnNs aWNlX21hc2sgPSBCSVQoMCkgfCBCSVQoMSk7Ci0JCXNzZXUtPnN1YnNsaWNlX21hc2tbMF0gPSBC SVQoMCkgfCBCSVQoMSk7Ci0JCXNzZXUtPnN1YnNsaWNlX21hc2tbMV0gPSBCSVQoMCkgfCBCSVQo MSk7CisJCXN1YnNsaWNlX21hc2sgPSBCSVQoMCkgfCBCSVQoMSk7CiAJCWJyZWFrOwogCX0KIAot CXNzZXUtPm1heF9zbGljZXMgPSBod2VpZ2h0OChzc2V1LT5zbGljZV9tYXNrKTsKLQlzc2V1LT5t YXhfc3Vic2xpY2VzID0gaHdlaWdodDgoc3NldS0+c3Vic2xpY2VfbWFza1swXSk7Ci0KIAlmdXNl MSA9IEk5MTVfUkVBRChIU1dfUEFWUF9GVVNFMSk7CiAJc3dpdGNoICgoZnVzZTEgJiBIU1dfRjFf RVVfRElTX01BU0spID4+IEhTV19GMV9FVV9ESVNfU0hJRlQpIHsKIAlkZWZhdWx0OgpAQCAtNTk1 LDkgKzU4MCwxNCBAQCBzdGF0aWMgdm9pZCBoYXN3ZWxsX3NzZXVfaW5mb19pbml0KHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkJc3NldS0+ZXVfcGVyX3N1YnNsaWNlID0gNjsK IAkJYnJlYWs7CiAJfQotCXNzZXUtPm1heF9ldXNfcGVyX3N1YnNsaWNlID0gc3NldS0+ZXVfcGVy X3N1YnNsaWNlOworCisJaW50ZWxfc3NldV9zZXRfaW5mbyhzc2V1LCBod2VpZ2h0OChzc2V1LT5z bGljZV9tYXNrKSwKKwkJCSAgICBod2VpZ2h0OChzdWJzbGljZV9tYXNrKSwKKwkJCSAgICBzc2V1 LT5ldV9wZXJfc3Vic2xpY2UpOwogCiAJZm9yIChzID0gMDsgcyA8IHNzZXUtPm1heF9zbGljZXM7 IHMrKykgeworCQlpbnRlbF9zc2V1X3NldF9zdWJzbGljZXMoc3NldSwgcywgc3Vic2xpY2VfbWFz ayk7CisKIAkJZm9yIChzcyA9IDA7IHNzIDwgc3NldS0+bWF4X3N1YnNsaWNlczsgc3MrKykgewog CQkJc3NldV9zZXRfZXVzKHNzZXUsIHMsIHNzLAogCQkJCSAgICAgKDFVTCA8PCBzc2V1LT5ldV9w ZXJfc3Vic2xpY2UpIC0gMSk7Ci0tIAoyLjIxLjAuNS5nYWViNTgyYTk4MwoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlz dApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4