From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stuart Summers Subject: [PATCH 5/5] drm/i915: Expand subslice mask Date: Mon, 29 Apr 2019 08:51:35 -0700 Message-ID: <20190429155135.6468-6-stuart.summers@intel.com> References: <20190429155135.6468-1-stuart.summers@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by gabe.freedesktop.org (Postfix) with ESMTPS id 806FB89180 for ; Mon, 29 Apr 2019 15:51:36 +0000 (UTC) In-Reply-To: <20190429155135.6468-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 CnYzOiB1cGRhdGUgaGVhZGVycyBpbiBpbnRlbF9zc2V1LmgKCkNjOiBEYW5pZWxlIENlcmFvbG8g U3B1cmlvIDxkYW5pZWxlLmNlcmFvbG9zcHVyaW9AaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBT dHVhcnQgU3VtbWVycyA8c3R1YXJ0LnN1bW1lcnNAaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9jcy5jICAgIHwgICA2ICstCiBkcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfdHlwZXMuaCB8ICAzMiArKystLQogZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3QvaW50ZWxfaGFuZ2NoZWNrLmMgICAgfCAgIDMgKy0KIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d0L2ludGVsX3NzZXUuaCAgICAgICAgIHwgIDQ1ICsrKysrLQogZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3QvaW50ZWxfd29ya2Fyb3VuZHMuYyAgfCAgIDIgKy0KIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZGVidWdmcy5jICAgICAgICAgIHwgIDQzICsrKy0tLQogZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuYyAgICAgICAgICAgICAgfCAgIDYgKy0KIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMgICAgICAgIHwgICA1ICstCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3F1ZXJ5LmMgICAgICAgICAgICB8ICAxMCArLQogZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZGV2aWNlX2luZm8uYyAgICAgfCAxMzkgKysrKysrKysrKystLS0tLS0tLQogMTAg ZmlsZXMgY2hhbmdlZCwgMTgzIGluc2VydGlvbnMoKyksIDEwOCBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9jcy5jCmluZGV4IGY3MzA4NDc5ZDUxMS4u ODkyMjM1OGVlNmM2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9l bmdpbmVfY3MuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3Mu YwpAQCAtOTA4LDcgKzkwOCw3IEBAIHUzMiBpbnRlbF9jYWxjdWxhdGVfbWNyX3Nfc3Nfc2VsZWN0 KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAljb25zdCBzdHJ1Y3Qgc3NldV9k ZXZfaW5mbyAqc3NldSA9ICZSVU5USU1FX0lORk8oZGV2X3ByaXYpLT5zc2V1OwogCXUzMiBtY3Jf c19zc19zZWxlY3Q7CiAJdTMyIHNsaWNlID0gZmxzKHNzZXUtPnNsaWNlX21hc2spOwotCXUzMiBz dWJzbGljZSA9IGZscyhzc2V1LT5zdWJzbGljZV9tYXNrW3NsaWNlXSk7CisJdTMyIHN1YnNsaWNl ID0gZmxzKHNzZXUtPnN1YnNsaWNlX21hc2tbc2xpY2UgKiBzc2V1LT5zc19zdHJpZGVdKTsKIAog CWlmIChJU19HRU4oZGV2X3ByaXYsIDEwKSkKIAkJbWNyX3Nfc3Nfc2VsZWN0ID0gR0VOOF9NQ1Jf U0xJQ0Uoc2xpY2UpIHwKQEAgLTk4NCw2ICs5ODQsNyBAQCB2b2lkIGludGVsX2VuZ2luZV9nZXRf aW5zdGRvbmUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAogCQkJICAgICAgIHN0cnVj dCBpbnRlbF9pbnN0ZG9uZSAqaW5zdGRvbmUpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gZW5naW5lLT5pOTE1OworCXN0cnVjdCBzc2V1X2Rldl9pbmZvICpzc2V1ID0g JlJVTlRJTUVfSU5GTyhkZXZfcHJpdiktPnNzZXU7CiAJc3RydWN0IGludGVsX3VuY29yZSAqdW5j b3JlID0gZW5naW5lLT51bmNvcmU7CiAJdTMyIG1taW9fYmFzZSA9IGVuZ2luZS0+bW1pb19iYXNl OwogCWludCBzbGljZTsKQEAgLTEwMDEsNyArMTAwMiw4IEBAIHZvaWQgaW50ZWxfZW5naW5lX2dl dF9pbnN0ZG9uZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCiAKIAkJaW5zdGRvbmUt PnNsaWNlX2NvbW1vbiA9CiAJCQlpbnRlbF91bmNvcmVfcmVhZCh1bmNvcmUsIEdFTjdfU0NfSU5T VERPTkUpOwotCQlmb3JfZWFjaF9pbnN0ZG9uZV9zbGljZV9zdWJzbGljZShkZXZfcHJpdiwgc2xp Y2UsIHN1YnNsaWNlKSB7CisJCWZvcl9lYWNoX2luc3Rkb25lX3NsaWNlX3N1YnNsaWNlKGRldl9w cml2LCBzc2V1LCBzbGljZSwKKwkJCQkJCSBzdWJzbGljZSkgewogCQkJaW5zdGRvbmUtPnNhbXBs ZXJbc2xpY2VdW3N1YnNsaWNlXSA9CiAJCQkJcmVhZF9zdWJzbGljZV9yZWcoZGV2X3ByaXYsIHNs aWNlLCBzdWJzbGljZSwKIAkJCQkJCSAgR0VON19TQU1QTEVSX0lOU1RET05FKTsKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV90eXBlcy5oIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3R5cGVzLmgKaW5kZXggZDk3MmMzMzkzMDlj Li5mYTcwNTI4OTYzYTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVs X2VuZ2luZV90eXBlcy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2lu ZV90eXBlcy5oCkBAIC01MzQsMjAgKzUzNCwyMiBAQCBpbnRlbF9lbmdpbmVfbmVlZHNfYnJlYWRj cnVtYl90YXNrbGV0KGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAlyZXR1 cm4gZW5naW5lLT5mbGFncyAmIEk5MTVfRU5HSU5FX05FRURTX0JSRUFEQ1JVTUJfVEFTS0xFVDsK IH0KIAotI2RlZmluZSBpbnN0ZG9uZV9zbGljZV9tYXNrKGRldl9wcml2X18pIFwKLQkoSVNfR0VO KGRldl9wcml2X18sIDcpID8gXAotCSAxIDogUlVOVElNRV9JTkZPKGRldl9wcml2X18pLT5zc2V1 LnNsaWNlX21hc2spCi0KLSNkZWZpbmUgaW5zdGRvbmVfc3Vic2xpY2VfbWFzayhkZXZfcHJpdl9f KSBcCi0JKElTX0dFTihkZXZfcHJpdl9fLCA3KSA/IFwKLQkgMSA6IFJVTlRJTUVfSU5GTyhkZXZf cHJpdl9fKS0+c3NldS5zdWJzbGljZV9tYXNrWzBdKQotCi0jZGVmaW5lIGZvcl9lYWNoX2luc3Rk b25lX3NsaWNlX3N1YnNsaWNlKGRldl9wcml2X18sIHNsaWNlX18sIHN1YnNsaWNlX18pIFwKLQlm b3IgKChzbGljZV9fKSA9IDAsIChzdWJzbGljZV9fKSA9IDA7IFwKLQkgICAgIChzbGljZV9fKSA8 IEk5MTVfTUFYX1NMSUNFUzsgXAotCSAgICAgKHN1YnNsaWNlX18pID0gKChzdWJzbGljZV9fKSAr IDEpIDwgSTkxNV9NQVhfU1VCU0xJQ0VTID8gKHN1YnNsaWNlX18pICsgMSA6IDAsIFwKLQkgICAg ICAgKHNsaWNlX18pICs9ICgoc3Vic2xpY2VfXykgPT0gMCkpIFwKLQkJZm9yX2VhY2hfaWYoKEJJ VChzbGljZV9fKSAmIGluc3Rkb25lX3NsaWNlX21hc2soZGV2X3ByaXZfXykpICYmIFwKLQkJCSAg ICAoQklUKHN1YnNsaWNlX18pICYgaW5zdGRvbmVfc3Vic2xpY2VfbWFzayhkZXZfcHJpdl9fKSkp CisjZGVmaW5lIGluc3Rkb25lX2hhc19zbGljZShkZXZfcHJpdl9fXywgc3NldV9fXywgc2xpY2Vf X18pIFwKKwkoKElTX0dFTihkZXZfcHJpdl9fXywgNykgPyBcCisJICAxIDogKHNzZXVfX18pLT5z bGljZV9tYXNrKSAmIFwKKwlCSVQoc2xpY2VfX18pKSBcCisKKyNkZWZpbmUgaW5zdGRvbmVfaGFz X3N1YnNsaWNlKGRldl9wcml2X18sIHNzZXVfXywgc2xpY2VfXywgc3Vic2xpY2VfXykgXAorCSgo SVNfR0VOKGRldl9wcml2X18sIDcpID8gXAorCSAgMSA6IChzc2V1X18pLT5zdWJzbGljZV9tYXNr W3NsaWNlX18gKiAoc3NldV9fKS0+c3Nfc3RyaWRlICsgXAorCQkJCSAgICAgIHN1YnNsaWNlX18g LyBCSVRTX1BFUl9CWVRFXSkgJiBcCisJIEJJVChzdWJzbGljZV9fICUgQklUU19QRVJfQllURSkp IFwKKworI2RlZmluZSBmb3JfZWFjaF9pbnN0ZG9uZV9zbGljZV9zdWJzbGljZShkZXZfcHJpdl8s IHNzZXVfLCBzbGljZV8sIHN1YnNsaWNlXykgXAorCWZvciAoKHNsaWNlXykgPSAwLCAoc3Vic2xp Y2VfKSA9IDA7IChzbGljZV8pIDwgSTkxNV9NQVhfU0xJQ0VTOyBcCisJICAgICAoc3Vic2xpY2Vf KSA9ICgoc3Vic2xpY2VfKSArIDEpIDwgSTkxNV9NQVhfU1VCU0xJQ0VTID8gKHN1YnNsaWNlXykg KyAxIDogMCwgXAorCSAgICAgICAoc2xpY2VfKSArPSAoKHN1YnNsaWNlXykgPT0gMCkpIFwKKwkJ Zm9yX2VhY2hfaWYoaW5zdGRvbmVfaGFzX3NsaWNlKGRldl9wcml2Xywgc3NldV8sIHNsaWNlKSAm JiBcCisJCQkgICAgaW5zdGRvbmVfaGFzX3N1YnNsaWNlKGRldl9wcml2Xywgc3NldV8sIHNsaWNl Xywgc3Vic2xpY2VfKSkgXAogCiAjZW5kaWYgLyogX19JTlRFTF9FTkdJTkVfVFlQRVNfSF9fICov CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9oYW5nY2hlY2suYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2hhbmdjaGVjay5jCmluZGV4IGU1ZWFhMDZm ZTc0ZC4uOTVkZmNlNjVjMDBjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9p bnRlbF9oYW5nY2hlY2suYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9oYW5n Y2hlY2suYwpAQCAtNTAsNiArNTAsNyBAQCBzdGF0aWMgYm9vbCBpbnN0ZG9uZV91bmNoYW5nZWQo dTMyIGN1cnJlbnRfaW5zdGRvbmUsIHUzMiAqb2xkX2luc3Rkb25lKQogc3RhdGljIGJvb2wgc3Vi dW5pdHNfc3R1Y2soc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewogCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGVuZ2luZS0+aTkxNTsKKwlzdHJ1Y3Qgc3NldV9k ZXZfaW5mbyAqc3NldSA9ICZSVU5USU1FX0lORk8oZGV2X3ByaXYpLT5zc2V1OwogCXN0cnVjdCBp bnRlbF9pbnN0ZG9uZSBpbnN0ZG9uZTsKIAlzdHJ1Y3QgaW50ZWxfaW5zdGRvbmUgKmFjY3VfaW5z dGRvbmUgPSAmZW5naW5lLT5oYW5nY2hlY2suaW5zdGRvbmU7CiAJYm9vbCBzdHVjazsKQEAgLTcx LDcgKzcyLDcgQEAgc3RhdGljIGJvb2wgc3VidW5pdHNfc3R1Y2soc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lKQogCXN0dWNrICY9IGluc3Rkb25lX3VuY2hhbmdlZChpbnN0ZG9uZS5zbGlj ZV9jb21tb24sCiAJCQkJICAgICZhY2N1X2luc3Rkb25lLT5zbGljZV9jb21tb24pOwogCi0JZm9y X2VhY2hfaW5zdGRvbmVfc2xpY2Vfc3Vic2xpY2UoZGV2X3ByaXYsIHNsaWNlLCBzdWJzbGljZSkg eworCWZvcl9lYWNoX2luc3Rkb25lX3NsaWNlX3N1YnNsaWNlKGRldl9wcml2LCBzc2V1LCBzbGlj ZSwgc3Vic2xpY2UpIHsKIAkJc3R1Y2sgJj0gaW5zdGRvbmVfdW5jaGFuZ2VkKGluc3Rkb25lLnNh bXBsZXJbc2xpY2VdW3N1YnNsaWNlXSwKIAkJCQkJICAgICZhY2N1X2luc3Rkb25lLT5zYW1wbGVy W3NsaWNlXVtzdWJzbGljZV0pOwogCQlzdHVjayAmPSBpbnN0ZG9uZV91bmNoYW5nZWQoaW5zdGRv bmUucm93W3NsaWNlXVtzdWJzbGljZV0sCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC9pbnRlbF9zc2V1LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9zc2V1LmgK aW5kZXggNTEyN2I0ZmY5MmJmLi4zNGI0NjFkYTY3MzUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L2ludGVsX3NzZXUuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9p bnRlbF9zc2V1LmgKQEAgLTksMTYgKzksMTggQEAKIAogI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+ CiAjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CisjaW5jbHVkZSA8bGludXgvc3RyaW5nLmg+CiAK IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlOwogCiAjZGVmaW5lIEdFTl9NQVhfU0xJQ0VTCQkoNikg LyogQ05MIHVwcGVyIGJvdW5kICovCiAjZGVmaW5lIEdFTl9NQVhfU1VCU0xJQ0VTCSg4KSAvKiBJ Q0wgdXBwZXIgYm91bmQgKi8KICNkZWZpbmUgR0VOX1NTRVVfU1RSSURFKGJpdHMpIERJVl9ST1VO RF9VUChiaXRzLCBCSVRTX1BFUl9CWVRFKQorI2RlZmluZSBHRU5fTUFYX1NVQlNMSUNFX1NUUklE RSBHRU5fU1NFVV9TVFJJREUoR0VOX01BWF9TVUJTTElDRVMpCiAKIHN0cnVjdCBzc2V1X2Rldl9p bmZvIHsKIAl1OCBzbGljZV9tYXNrOwotCXU4IHN1YnNsaWNlX21hc2tbR0VOX01BWF9TTElDRVNd OworCXU4IHN1YnNsaWNlX21hc2tbR0VOX01BWF9TTElDRVMgKiBHRU5fTUFYX1NVQlNMSUNFX1NU UklERV07CiAJdTE2IGV1X3RvdGFsOwogCXU4IGV1X3Blcl9zdWJzbGljZTsKIAl1OCBtaW5fZXVf aW5fcG9vbDsKQEAgLTMzLDYgKzM1LDkgQEAgc3RydWN0IHNzZXVfZGV2X2luZm8gewogCXU4IG1h eF9zdWJzbGljZXM7CiAJdTggbWF4X2V1c19wZXJfc3Vic2xpY2U7CiAKKwl1OCBzc19zdHJpZGU7 CisJdTggZXVfc3RyaWRlOworCiAJLyogV2UgZG9uJ3QgaGF2ZSBtb3JlIHRoYW4gOCBldXMgcGVy IHN1YnNsaWNlIGF0IHRoZSBtb21lbnQgYW5kIGFzIHdlCiAJICogc3RvcmUgZXVzIGVuYWJsZWQg dXNpbmcgYml0cywgbm8gbmVlZCB0byBtdWx0aXBseSBieSBldXMgcGVyCiAJICogc3Vic2xpY2Uu CkBAIC02Myw2ICs2OCwxNyBAQCBpbnRlbF9zc2V1X2Zyb21fZGV2aWNlX2luZm8oY29uc3Qgc3Ry dWN0IHNzZXVfZGV2X2luZm8gKnNzZXUpCiAJcmV0dXJuIHZhbHVlOwogfQogCitzdGF0aWMgaW5s aW5lIHZvaWQgc2V0X3NzZXVfaW5mbyhzdHJ1Y3Qgc3NldV9kZXZfaW5mbyAqc3NldSwgdTggbWF4 X3NsaWNlcywKKwkJCQkgdTggbWF4X3N1YnNsaWNlcywgdTggbWF4X2V1c19wZXJfc3Vic2xpY2Up Cit7CisJc3NldS0+bWF4X3NsaWNlcyA9IG1heF9zbGljZXM7CisJc3NldS0+bWF4X3N1YnNsaWNl cyA9IG1heF9zdWJzbGljZXM7CisJc3NldS0+bWF4X2V1c19wZXJfc3Vic2xpY2UgPSBtYXhfZXVz X3Blcl9zdWJzbGljZTsKKworCXNzZXUtPnNzX3N0cmlkZSA9IEdFTl9TU0VVX1NUUklERShzc2V1 LT5tYXhfc3Vic2xpY2VzKTsKKwlzc2V1LT5ldV9zdHJpZGUgPSBHRU5fU1NFVV9TVFJJREUoc3Nl dS0+bWF4X2V1c19wZXJfc3Vic2xpY2UpOworfQorCiBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGlu dCBzc2V1X3N1YnNsaWNlX3RvdGFsKGNvbnN0IHN0cnVjdCBzc2V1X2Rldl9pbmZvICpzc2V1KQog ewogCXVuc2lnbmVkIGludCBpLCB0b3RhbCA9IDA7CkBAIC03Niw3ICs5MiwzMiBAQCBzdGF0aWMg aW5saW5lIHVuc2lnbmVkIGludCBzc2V1X3N1YnNsaWNlX3RvdGFsKGNvbnN0IHN0cnVjdCBzc2V1 X2Rldl9pbmZvICpzc2V1KQogc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQKIHNzZXVfc3Vic2xp Y2VzX3Blcl9zbGljZShjb25zdCBzdHJ1Y3Qgc3NldV9kZXZfaW5mbyAqc3NldSwgdTggc2xpY2Up CiB7Ci0JcmV0dXJuIGh3ZWlnaHQ4KHNzZXUtPnN1YnNsaWNlX21hc2tbc2xpY2VdKTsKKwl1bnNp Z25lZCBpbnQgaSwgdG90YWwgPSAwOworCisJZm9yIChpID0gMDsgaSA8IHNzZXUtPnNzX3N0cmlk ZTsgaSsrKQorCQl0b3RhbCArPSBod2VpZ2h0OChzc2V1LT5zdWJzbGljZV9tYXNrW3NsaWNlICog c3NldS0+c3Nfc3RyaWRlICsKKwkJCQkJCSAgICAgIGldKTsKKworCXJldHVybiB0b3RhbDsKK30K Kworc3RhdGljIGlubGluZSB2b2lkIHNzZXVfY29weV9zdWJzbGljZXMoY29uc3Qgc3RydWN0IHNz ZXVfZGV2X2luZm8gKnNzZXUsCisJCQkJICAgICAgIGludCBzbGljZSwgdTggKnRvX21hc2ssCisJ CQkJICAgICAgIGNvbnN0IHU4ICpmcm9tX21hc2spCit7CisJaW50IG9mZnNldCA9IHNsaWNlICog c3NldS0+c3Nfc3RyaWRlOworCisJbWVtY3B5KCZ0b19tYXNrW29mZnNldF0sICZmcm9tX21hc2tb b2Zmc2V0XSwgc3NldS0+c3Nfc3RyaWRlKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIHNzZXVf c2V0X3N1YnNsaWNlcyhzdHJ1Y3Qgc3NldV9kZXZfaW5mbyAqc3NldSwKKwkJCQkgICAgICBpbnQg c2xpY2UsIHUzMiBzc19tYXNrKQoreworCWludCBpLCBvZmZzZXQgPSBzbGljZSAqIHNzZXUtPnNz X3N0cmlkZTsKKworCWZvciAoaSA9IDA7IGkgPCBzc2V1LT5zc19zdHJpZGU7IGkrKykKKwkJc3Nl dS0+c3Vic2xpY2VfbWFza1tvZmZzZXQgKyBpXSA9CisJCQkoc3NfbWFzayA+PiAoQklUU19QRVJf QllURSAqIGkpKSAmIDB4ZmY7CiB9CiAKIHN0YXRpYyBpbmxpbmUgaW50IHNzZXVfZXVfaWR4KGNv bnN0IHN0cnVjdCBzc2V1X2Rldl9pbmZvICpzc2V1LApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3QvaW50ZWxfd29ya2Fyb3VuZHMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L2ludGVsX3dvcmthcm91bmRzLmMKaW5kZXggNTc1MTQ0NmE0YjBiLi41MWRmODg4NzNmZjUgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3dvcmthcm91bmRzLmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfd29ya2Fyb3VuZHMuYwpAQCAtNzcxLDcg Kzc3MSw3IEBAIHdhX2luaXRfbWNyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCBzdHJ1 Y3QgaTkxNV93YV9saXN0ICp3YWwpCiAJCXUzMiBzbGljZSA9IGZscyhzc2V1LT5zbGljZV9tYXNr KTsKIAkJdTMyIGZ1c2UzID0KIAkJCWludGVsX3VuY29yZV9yZWFkKCZpOTE1LT51bmNvcmUsIEdF TjEwX01JUlJPUl9GVVNFMyk7Ci0JCXU4IHNzX21hc2sgPSBzc2V1LT5zdWJzbGljZV9tYXNrW3Ns aWNlXTsKKwkJdTggc3NfbWFzayA9IHNzZXUtPnN1YnNsaWNlX21hc2tbc2xpY2UgKiBzc2V1LT5z c19zdHJpZGVdOwogCiAJCXU4IGVuYWJsZWRfbWFzayA9IChzc19tYXNrIHwgc3NfbWFzayA+Pgog CQkJCSAgIEdFTjEwX0wzQkFOS19QQUlSX0NPVU5UKSAmIEdFTjEwX0wzQkFOS19NQVNLOwpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwppbmRleCAwZWNmMDA2ZDI2YjMuLjRmOGQ0MzcwOTEy ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKQEAgLTEyNTYsNiArMTI1Niw3IEBA IHN0YXRpYyB2b2lkIGk5MTVfaW5zdGRvbmVfaW5mbyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsCiAJCQkgICAgICAgc3RydWN0IHNlcV9maWxlICptLAogCQkJICAgICAgIHN0cnVj dCBpbnRlbF9pbnN0ZG9uZSAqaW5zdGRvbmUpCiB7CisJc3RydWN0IHNzZXVfZGV2X2luZm8gKnNz ZXUgPSAmUlVOVElNRV9JTkZPKGRldl9wcml2KS0+c3NldTsKIAlpbnQgc2xpY2U7CiAJaW50IHN1 YnNsaWNlOwogCkBAIC0xMjcxLDExICsxMjcyLDExIEBAIHN0YXRpYyB2b2lkIGk5MTVfaW5zdGRv bmVfaW5mbyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJaWYgKElOVEVMX0dF TihkZXZfcHJpdikgPD0gNikKIAkJcmV0dXJuOwogCi0JZm9yX2VhY2hfaW5zdGRvbmVfc2xpY2Vf c3Vic2xpY2UoZGV2X3ByaXYsIHNsaWNlLCBzdWJzbGljZSkKKwlmb3JfZWFjaF9pbnN0ZG9uZV9z bGljZV9zdWJzbGljZShkZXZfcHJpdiwgc3NldSwgc2xpY2UsIHN1YnNsaWNlKQogCQlzZXFfcHJp bnRmKG0sICJcdFx0U0FNUExFUl9JTlNURE9ORVslZF1bJWRdOiAweCUwOHhcbiIsCiAJCQkgICBz bGljZSwgc3Vic2xpY2UsIGluc3Rkb25lLT5zYW1wbGVyW3NsaWNlXVtzdWJzbGljZV0pOwogCi0J Zm9yX2VhY2hfaW5zdGRvbmVfc2xpY2Vfc3Vic2xpY2UoZGV2X3ByaXYsIHNsaWNlLCBzdWJzbGlj ZSkKKwlmb3JfZWFjaF9pbnN0ZG9uZV9zbGljZV9zdWJzbGljZShkZXZfcHJpdiwgc3NldSwgc2xp Y2UsIHN1YnNsaWNlKQogCQlzZXFfcHJpbnRmKG0sICJcdFx0Uk9XX0lOU1RET05FWyVkXVslZF06 IDB4JTA4eFxuIiwKIAkJCSAgIHNsaWNlLCBzdWJzbGljZSwgaW5zdGRvbmUtPnJvd1tzbGljZV1b c3Vic2xpY2VdKTsKIH0KQEAgLTQwNjUsNyArNDA2Niw5IEBAIHN0YXRpYyB2b2lkIGdlbjEwX3Nz ZXVfZGV2aWNlX3N0YXR1cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQlj b250aW51ZTsKIAogCQlzc2V1LT5zbGljZV9tYXNrIHw9IEJJVChzKTsKLQkJc3NldS0+c3Vic2xp Y2VfbWFza1tzXSA9IGluZm8tPnNzZXUuc3Vic2xpY2VfbWFza1tzXTsKKwkJc3NldV9jb3B5X3N1 YnNsaWNlcygmaW5mby0+c3NldSwgcywKKwkJCQkgICAgc3NldS0+c3Vic2xpY2VfbWFzaywKKwkJ CQkgICAgaW5mby0+c3NldS5zdWJzbGljZV9tYXNrKTsKIAogCQlmb3IgKHNzID0gMDsgc3MgPCBp bmZvLT5zc2V1Lm1heF9zdWJzbGljZXM7IHNzKyspIHsKIAkJCXVuc2lnbmVkIGludCBldV9jbnQ7 CkBAIC00MTE2LDE4ICs0MTE5LDIyIEBAIHN0YXRpYyB2b2lkIGdlbjlfc3NldV9kZXZpY2Vfc3Rh dHVzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJc3NldS0+c2xpY2VfbWFz ayB8PSBCSVQocyk7CiAKIAkJaWYgKElTX0dFTjlfQkMoZGV2X3ByaXYpKQotCQkJc3NldS0+c3Vi c2xpY2VfbWFza1tzXSA9Ci0JCQkJUlVOVElNRV9JTkZPKGRldl9wcml2KS0+c3NldS5zdWJzbGlj ZV9tYXNrW3NdOworCQkJc3NldV9jb3B5X3N1YnNsaWNlcygmaW5mby0+c3NldSwgcywKKwkJCQkJ ICAgIHNzZXUtPnN1YnNsaWNlX21hc2ssCisJCQkJCSAgICBpbmZvLT5zc2V1LnN1YnNsaWNlX21h c2spOwogCiAJCWZvciAoc3MgPSAwOyBzcyA8IGluZm8tPnNzZXUubWF4X3N1YnNsaWNlczsgc3Mr KykgewogCQkJdW5zaWduZWQgaW50IGV1X2NudDsKKwkJCXU4IHNzX2lkeCA9IHMgKiBpbmZvLT5z c2V1LnNzX3N0cmlkZSArCisJCQkJICAgIHNzIC8gQklUU19QRVJfQllURTsKIAogCQkJaWYgKElT X0dFTjlfTFAoZGV2X3ByaXYpKSB7CiAJCQkJaWYgKCEoc19yZWdbc10gJiAoR0VOOV9QR0NUTF9T U19BQ0soc3MpKSkpCiAJCQkJCS8qIHNraXAgZGlzYWJsZWQgc3Vic2xpY2UgKi8KIAkJCQkJY29u dGludWU7CiAKLQkJCQlzc2V1LT5zdWJzbGljZV9tYXNrW3NdIHw9IEJJVChzcyk7CisJCQkJc3Nl dS0+c3Vic2xpY2VfbWFza1tzc19pZHhdIHw9CisJCQkJCUJJVChzcyAlIEJJVFNfUEVSX0JZVEUp OwogCQkJfQogCiAJCQlldV9jbnQgPSAyICogaHdlaWdodDMyKGV1X3JlZ1syKnMgKyBzcy8yXSAm CkBAIC00MTQ0LDI1ICs0MTUxLDI0IEBAIHN0YXRpYyB2b2lkIGdlbjlfc3NldV9kZXZpY2Vfc3Rh dHVzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIHN0YXRpYyB2b2lkIGJyb2Fk d2VsbF9zc2V1X2RldmljZV9zdGF0dXMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LAogCQkJCQkgc3RydWN0IHNzZXVfZGV2X2luZm8gKnNzZXUpCiB7CisJc3RydWN0IGludGVsX3J1 bnRpbWVfaW5mbyAqaW5mbyA9IFJVTlRJTUVfSU5GTyhkZXZfcHJpdik7CiAJdTMyIHNsaWNlX2lu Zm8gPSBJOTE1X1JFQUQoR0VOOF9HVF9TTElDRV9JTkZPKTsKIAlpbnQgczsKIAogCXNzZXUtPnNs aWNlX21hc2sgPSBzbGljZV9pbmZvICYgR0VOOF9MU0xJQ0VTVEFUX01BU0s7CiAKIAlpZiAoc3Nl dS0+c2xpY2VfbWFzaykgewotCQlzc2V1LT5ldV9wZXJfc3Vic2xpY2UgPQotCQkJUlVOVElNRV9J TkZPKGRldl9wcml2KS0+c3NldS5ldV9wZXJfc3Vic2xpY2U7Ci0JCWZvciAocyA9IDA7IHMgPCBm bHMoc3NldS0+c2xpY2VfbWFzayk7IHMrKykgewotCQkJc3NldS0+c3Vic2xpY2VfbWFza1tzXSA9 Ci0JCQkJUlVOVElNRV9JTkZPKGRldl9wcml2KS0+c3NldS5zdWJzbGljZV9tYXNrW3NdOwotCQl9 CisJCXNzZXUtPmV1X3Blcl9zdWJzbGljZSA9IGluZm8tPnNzZXUuZXVfcGVyX3N1YnNsaWNlOwor CQlmb3IgKHMgPSAwOyBzIDwgZmxzKHNzZXUtPnNsaWNlX21hc2spOyBzKyspCisJCQlzc2V1X2Nv cHlfc3Vic2xpY2VzKCZpbmZvLT5zc2V1LCBzLAorCQkJCQkgICAgc3NldS0+c3Vic2xpY2VfbWFz aywKKwkJCQkJICAgIGluZm8tPnNzZXUuc3Vic2xpY2VfbWFzayk7CiAJCXNzZXUtPmV1X3RvdGFs ID0gc3NldS0+ZXVfcGVyX3N1YnNsaWNlICoKIAkJCQkgc3NldV9zdWJzbGljZV90b3RhbChzc2V1 KTsKIAogCQkvKiBzdWJ0cmFjdCBmdXNlZCBvZmYgRVUocykgZnJvbSBlbmFibGVkIHNsaWNlKHMp ICovCiAJCWZvciAocyA9IDA7IHMgPCBmbHMoc3NldS0+c2xpY2VfbWFzayk7IHMrKykgewotCQkJ dTggc3Vic2xpY2VfN2V1ID0KLQkJCQlSVU5USU1FX0lORk8oZGV2X3ByaXYpLT5zc2V1LnN1YnNs aWNlXzdldVtzXTsKKwkJCXU4IHN1YnNsaWNlXzdldSA9IGluZm8tPnNzZXUuc3Vic2xpY2VfN2V1 W3NdOwogCiAJCQlzc2V1LT5ldV90b3RhbCAtPSBod2VpZ2h0OChzdWJzbGljZV83ZXUpOwogCQl9 CkBAIC00MjA5LDYgKzQyMTUsNyBAQCBzdGF0aWMgdm9pZCBpOTE1X3ByaW50X3NzZXVfaW5mbyhz dHJ1Y3Qgc2VxX2ZpbGUgKm0sIGJvb2wgaXNfYXZhaWxhYmxlX2luZm8sCiBzdGF0aWMgaW50IGk5 MTVfc3NldV9zdGF0dXMoc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCiB7CiAJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gbm9kZV90b19pOTE1KG0tPnByaXZhdGUp OworCWNvbnN0IHN0cnVjdCBpbnRlbF9ydW50aW1lX2luZm8gKmluZm8gPSBSVU5USU1FX0lORk8o ZGV2X3ByaXYpOwogCXN0cnVjdCBzc2V1X2Rldl9pbmZvIHNzZXU7CiAJaW50ZWxfd2FrZXJlZl90 IHdha2VyZWY7CiAKQEAgLTQyMTYsMTQgKzQyMjMsMTIgQEAgc3RhdGljIGludCBpOTE1X3NzZXVf c3RhdHVzKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQogCQlyZXR1cm4gLUVOT0RF VjsKIAogCXNlcV9wdXRzKG0sICJTU0VVIERldmljZSBJbmZvXG4iKTsKLQlpOTE1X3ByaW50X3Nz ZXVfaW5mbyhtLCB0cnVlLCAmUlVOVElNRV9JTkZPKGRldl9wcml2KS0+c3NldSk7CisJaTkxNV9w cmludF9zc2V1X2luZm8obSwgdHJ1ZSwgJmluZm8tPnNzZXUpOwogCiAJc2VxX3B1dHMobSwgIlNT RVUgRGV2aWNlIFN0YXR1c1xuIik7CiAJbWVtc2V0KCZzc2V1LCAwLCBzaXplb2Yoc3NldSkpOwot CXNzZXUubWF4X3NsaWNlcyA9IFJVTlRJTUVfSU5GTyhkZXZfcHJpdiktPnNzZXUubWF4X3NsaWNl czsKLQlzc2V1Lm1heF9zdWJzbGljZXMgPSBSVU5USU1FX0lORk8oZGV2X3ByaXYpLT5zc2V1Lm1h eF9zdWJzbGljZXM7Ci0Jc3NldS5tYXhfZXVzX3Blcl9zdWJzbGljZSA9Ci0JCVJVTlRJTUVfSU5G TyhkZXZfcHJpdiktPnNzZXUubWF4X2V1c19wZXJfc3Vic2xpY2U7CisJc2V0X3NzZXVfaW5mbygm c3NldSwgaW5mby0+c3NldS5tYXhfc2xpY2VzLCBpbmZvLT5zc2V1Lm1heF9zdWJzbGljZXMsCisJ CSAgICAgIGluZm8tPnNzZXUubWF4X2V1c19wZXJfc3Vic2xpY2UpOwogCiAJd2l0aF9pbnRlbF9y dW50aW1lX3BtKGRldl9wcml2LCB3YWtlcmVmKSB7CiAJCWlmIChJU19DSEVSUllWSUVXKGRldl9w cml2KSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCmluZGV4IGI2Y2U3NTgwZDQxNC4uN2E5NWMyNjJh YTE0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKQEAgLTMyMyw3ICszMjMsNyBAQCBzdGF0aWMg aW50IGk5MTVfZ2V0cGFyYW1faW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0 YSwKIAlzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IGRldl9wcml2LT5kcm0ucGRldjsKIAlzdHJ1Y3Qg c3NldV9kZXZfaW5mbyAqc3NldSA9ICZSVU5USU1FX0lORk8oZGV2X3ByaXYpLT5zc2V1OwogCWRy bV9pOTE1X2dldHBhcmFtX3QgKnBhcmFtID0gZGF0YTsKLQlpbnQgdmFsdWU7CisJaW50IHZhbHVl ID0gMDsKIAogCXN3aXRjaCAocGFyYW0tPnBhcmFtKSB7CiAJY2FzZSBJOTE1X1BBUkFNX0lSUV9B Q1RJVkU6CkBAIC00NTIsNyArNDUyLDkgQEAgc3RhdGljIGludCBpOTE1X2dldHBhcmFtX2lvY3Rs KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJCQlyZXR1cm4gLUVOT0RFVjsK IAkJYnJlYWs7CiAJY2FzZSBJOTE1X1BBUkFNX1NVQlNMSUNFX01BU0s6Ci0JCXZhbHVlID0gc3Nl dS0+c3Vic2xpY2VfbWFza1swXTsKKwkJLyogT25seSBjb3B5IGJpdHMgZnJvbSB0aGUgZmlyc3Qg c3Vic2xpY2UgKi8KKwkJbWVtY3B5KCZ2YWx1ZSwgc3NldS0+c3Vic2xpY2VfbWFzaywKKwkJICAg ICAgIG1pbihzc2V1LT5zc19zdHJpZGUsICh1OClzaXplb2YodmFsdWUpKSk7CiAJCWlmICghdmFs dWUpCiAJCQlyZXR1cm4gLUVOT0RFVjsKIAkJYnJlYWs7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n cHVfZXJyb3IuYwppbmRleCBmNTFmZjY4M2RkMmUuLjlkYTQxMThhZDQzYSAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYworKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jCkBAIC00MDUsNiArNDA1LDcgQEAgc3RhdGljIHZvaWQg cHJpbnRfZXJyb3JfYnVmZmVycyhzdHJ1Y3QgZHJtX2k5MTVfZXJyb3Jfc3RhdGVfYnVmICptLAog c3RhdGljIHZvaWQgZXJyb3JfcHJpbnRfaW5zdGRvbmUoc3RydWN0IGRybV9pOTE1X2Vycm9yX3N0 YXRlX2J1ZiAqbSwKIAkJCQkgY29uc3Qgc3RydWN0IGRybV9pOTE1X2Vycm9yX2VuZ2luZSAqZWUp CiB7CisJc3RydWN0IHNzZXVfZGV2X2luZm8gKnNzZXUgPSAmUlVOVElNRV9JTkZPKG0tPmk5MTUp LT5zc2V1OwogCWludCBzbGljZTsKIAlpbnQgc3Vic2xpY2U7CiAKQEAgLTQyMCwxMiArNDIxLDEy IEBAIHN0YXRpYyB2b2lkIGVycm9yX3ByaW50X2luc3Rkb25lKHN0cnVjdCBkcm1faTkxNV9lcnJv cl9zdGF0ZV9idWYgKm0sCiAJaWYgKElOVEVMX0dFTihtLT5pOTE1KSA8PSA2KQogCQlyZXR1cm47 CiAKLQlmb3JfZWFjaF9pbnN0ZG9uZV9zbGljZV9zdWJzbGljZShtLT5pOTE1LCBzbGljZSwgc3Vi c2xpY2UpCisJZm9yX2VhY2hfaW5zdGRvbmVfc2xpY2Vfc3Vic2xpY2UobS0+aTkxNSwgc3NldSwg c2xpY2UsIHN1YnNsaWNlKQogCQllcnJfcHJpbnRmKG0sICIgIFNBTVBMRVJfSU5TVERPTkVbJWRd WyVkXTogMHglMDh4XG4iLAogCQkJICAgc2xpY2UsIHN1YnNsaWNlLAogCQkJICAgZWUtPmluc3Rk b25lLnNhbXBsZXJbc2xpY2VdW3N1YnNsaWNlXSk7CiAKLQlmb3JfZWFjaF9pbnN0ZG9uZV9zbGlj ZV9zdWJzbGljZShtLT5pOTE1LCBzbGljZSwgc3Vic2xpY2UpCisJZm9yX2VhY2hfaW5zdGRvbmVf c2xpY2Vfc3Vic2xpY2UobS0+aTkxNSwgc3NldSwgc2xpY2UsIHN1YnNsaWNlKQogCQllcnJfcHJp bnRmKG0sICIgIFJPV19JTlNURE9ORVslZF1bJWRdOiAweCUwOHhcbiIsCiAJCQkgICBzbGljZSwg c3Vic2xpY2UsCiAJCQkgICBlZS0+aW5zdGRvbmUucm93W3NsaWNlXVtzdWJzbGljZV0pOwpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9xdWVyeS5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9xdWVyeS5jCmluZGV4IDdjMTcwOGMyMjgxMS4uMDAwZGNiMTQ1Y2UwIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3F1ZXJ5LmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9xdWVyeS5jCkBAIC0zNyw4ICszNyw2IEBAIHN0YXRpYyBpbnQg cXVlcnlfdG9wb2xvZ3lfaW5mbyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJ Y29uc3Qgc3RydWN0IHNzZXVfZGV2X2luZm8gKnNzZXUgPSAmUlVOVElNRV9JTkZPKGRldl9wcml2 KS0+c3NldTsKIAlzdHJ1Y3QgZHJtX2k5MTVfcXVlcnlfdG9wb2xvZ3lfaW5mbyB0b3BvOwogCXUz MiBzbGljZV9sZW5ndGgsIHN1YnNsaWNlX2xlbmd0aCwgZXVfbGVuZ3RoLCB0b3RhbF9sZW5ndGg7 Ci0JdTggc3Vic2xpY2Vfc3RyaWRlID0gR0VOX1NTRVVfU1RSSURFKHNzZXUtPm1heF9zdWJzbGlj ZXMpOwotCXU4IGV1X3N0cmlkZSA9IEdFTl9TU0VVX1NUUklERShzc2V1LT5tYXhfZXVzX3Blcl9z dWJzbGljZSk7CiAJaW50IHJldDsKIAogCWlmIChxdWVyeV9pdGVtLT5mbGFncyAhPSAwKQpAQCAt NTAsOCArNDgsOCBAQCBzdGF0aWMgaW50IHF1ZXJ5X3RvcG9sb2d5X2luZm8oc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAogCUJVSUxEX0JVR19PTihzaXplb2YodTgpICE9IHNpemVv Zihzc2V1LT5zbGljZV9tYXNrKSk7CiAKIAlzbGljZV9sZW5ndGggPSBzaXplb2Yoc3NldS0+c2xp Y2VfbWFzayk7Ci0Jc3Vic2xpY2VfbGVuZ3RoID0gc3NldS0+bWF4X3NsaWNlcyAqIHN1YnNsaWNl X3N0cmlkZTsKLQlldV9sZW5ndGggPSBzc2V1LT5tYXhfc2xpY2VzICogc3NldS0+bWF4X3N1YnNs aWNlcyAqIGV1X3N0cmlkZTsKKwlzdWJzbGljZV9sZW5ndGggPSBzc2V1LT5tYXhfc2xpY2VzICog c3NldS0+c3Nfc3RyaWRlOworCWV1X2xlbmd0aCA9IHNzZXUtPm1heF9zbGljZXMgKiBzc2V1LT5t YXhfc3Vic2xpY2VzICogc3NldS0+ZXVfc3RyaWRlOwogCXRvdGFsX2xlbmd0aCA9IHNpemVvZih0 b3BvKSArIHNsaWNlX2xlbmd0aCArIHN1YnNsaWNlX2xlbmd0aCArCiAJCSAgICAgICBldV9sZW5n dGg7CiAKQEAgLTY5LDkgKzY3LDkgQEAgc3RhdGljIGludCBxdWVyeV90b3BvbG9neV9pbmZvKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAl0b3BvLm1heF9ldXNfcGVyX3N1YnNs aWNlID0gc3NldS0+bWF4X2V1c19wZXJfc3Vic2xpY2U7CiAKIAl0b3BvLnN1YnNsaWNlX29mZnNl dCA9IHNsaWNlX2xlbmd0aDsKLQl0b3BvLnN1YnNsaWNlX3N0cmlkZSA9IHN1YnNsaWNlX3N0cmlk ZTsKKwl0b3BvLnN1YnNsaWNlX3N0cmlkZSA9IHNzZXUtPnNzX3N0cmlkZTsKIAl0b3BvLmV1X29m ZnNldCA9IHNsaWNlX2xlbmd0aCArIHN1YnNsaWNlX2xlbmd0aDsKLQl0b3BvLmV1X3N0cmlkZSA9 IGV1X3N0cmlkZTsKKwl0b3BvLmV1X3N0cmlkZSA9IHNzZXUtPmV1X3N0cmlkZTsKIAogCWlmIChf X2NvcHlfdG9fdXNlcih1NjRfdG9fdXNlcl9wdHIocXVlcnlfaXRlbS0+ZGF0YV9wdHIpLAogCQkJ ICAgJnRvcG8sIHNpemVvZih0b3BvKSkpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kZXZpY2VfaW5mby5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGV2aWNl X2luZm8uYwppbmRleCA1NTljZjBkMDYyOGUuLjFjYzcyYmViODZlZSAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGV2aWNlX2luZm8uYworKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kZXZpY2VfaW5mby5jCkBAIC04NCwxNyArODQsNDIgQEAgdm9pZCBpbnRl bF9kZXZpY2VfaW5mb19kdW1wX2ZsYWdzKGNvbnN0IHN0cnVjdCBpbnRlbF9kZXZpY2VfaW5mbyAq aW5mbywKICN1bmRlZiBQUklOVF9GTEFHCiB9CiAKKyNkZWZpbmUgU1NfU1RSX01BWF9TSVpFIChH RU5fTUFYX1NVQlNMSUNFX1NUUklERSAqIDIpCisKK3N0YXRpYyB1OCAqCitzdWJzbGljZV9wZXJf c2xpY2Vfc3RyKHU4ICpidWYsIGNvbnN0IHN0cnVjdCBzc2V1X2Rldl9pbmZvICpzc2V1LCB1OCBz bGljZSkKK3sKKwlpbnQgaTsKKwl1OCBzc19vZmZzZXQgPSBzbGljZSAqIHNzZXUtPnNzX3N0cmlk ZTsKKworCUdFTV9CVUdfT04oc2xpY2UgPj0gc3NldS0+bWF4X3NsaWNlcyk7CisKKwltZW1zZXQo YnVmLCAwLCBTU19TVFJfTUFYX1NJWkUpOworCisJLyoKKwkgKiBQcmludCBzdWJzbGljZSBpbmZv cm1hdGlvbiBpbiByZXZlcnNlIG9yZGVyIHRvIG1hdGNoCisJICogdXNlcnNwYWNlIGV4cGVjdGF0 aW9ucy4KKwkgKi8KKwlmb3IgKGkgPSAwOyBpIDwgc3NldS0+c3Nfc3RyaWRlOyBpKyspCisJCXNw cmludGYoJmJ1ZltpICogMl0sICIlMDJ4IiwKKwkJCXNzZXUtPnN1YnNsaWNlX21hc2tbc3Nfb2Zm c2V0ICsgc3NldS0+c3Nfc3RyaWRlIC0KKwkJCQkJICAgIChpICsgMSldKTsKKworCXJldHVybiBi dWY7Cit9CisKIHN0YXRpYyB2b2lkIHNzZXVfZHVtcChjb25zdCBzdHJ1Y3Qgc3NldV9kZXZfaW5m byAqc3NldSwgc3RydWN0IGRybV9wcmludGVyICpwKQogewogCWludCBzOworCXU4IGJ1ZltTU19T VFJfTUFYX1NJWkVdOwogCiAJZHJtX3ByaW50ZihwLCAic2xpY2UgdG90YWw6ICV1LCBtYXNrPSUw NHhcbiIsCiAJCSAgIGh3ZWlnaHQ4KHNzZXUtPnNsaWNlX21hc2spLCBzc2V1LT5zbGljZV9tYXNr KTsKIAlkcm1fcHJpbnRmKHAsICJzdWJzbGljZSB0b3RhbDogJXVcbiIsIHNzZXVfc3Vic2xpY2Vf dG90YWwoc3NldSkpOwogCWZvciAocyA9IDA7IHMgPCBzc2V1LT5tYXhfc2xpY2VzOyBzKyspIHsK LQkJZHJtX3ByaW50ZihwLCAic2xpY2UlZDogJXUgc3Vic2xpY2VzLCBtYXNrPSUwNHhcbiIsCisJ CWRybV9wcmludGYocCwgInNsaWNlJWQ6ICV1IHN1YnNsaWNlcywgbWFzaz0lc1xuIiwKIAkJCSAg IHMsIHNzZXVfc3Vic2xpY2VzX3Blcl9zbGljZShzc2V1LCBzKSwKLQkJCSAgIHNzZXUtPnN1YnNs aWNlX21hc2tbc10pOworCQkJICAgc3Vic2xpY2VfcGVyX3NsaWNlX3N0cihidWYsIHNzZXUsIHMp KTsKIAl9CiAJZHJtX3ByaW50ZihwLCAiRVUgdG90YWw6ICV1XG4iLCBzc2V1LT5ldV90b3RhbCk7 CiAJZHJtX3ByaW50ZihwLCAiRVUgcGVyIHN1YnNsaWNlOiAldVxuIiwgc3NldS0+ZXVfcGVyX3N1 YnNsaWNlKTsKQEAgLTExOCw2ICsxNDMsNyBAQCB2b2lkIGludGVsX2RldmljZV9pbmZvX2R1bXBf dG9wb2xvZ3koY29uc3Qgc3RydWN0IHNzZXVfZGV2X2luZm8gKnNzZXUsCiAJCQkJICAgICBzdHJ1 Y3QgZHJtX3ByaW50ZXIgKnApCiB7CiAJaW50IHMsIHNzOworCXU4IGJ1ZltTU19TVFJfTUFYX1NJ WkVdOwogCiAJaWYgKHNzZXUtPm1heF9zbGljZXMgPT0gMCkgewogCQlkcm1fcHJpbnRmKHAsICJV bmF2YWlsYWJsZVxuIik7CkBAIC0xMjUsOSArMTUxLDkgQEAgdm9pZCBpbnRlbF9kZXZpY2VfaW5m b19kdW1wX3RvcG9sb2d5KGNvbnN0IHN0cnVjdCBzc2V1X2Rldl9pbmZvICpzc2V1LAogCX0KIAog CWZvciAocyA9IDA7IHMgPCBzc2V1LT5tYXhfc2xpY2VzOyBzKyspIHsKLQkJZHJtX3ByaW50Zihw LCAic2xpY2UlZDogJXUgc3Vic2xpY2UocykgKDB4JWhoeCk6XG4iLAorCQlkcm1fcHJpbnRmKHAs ICJzbGljZSVkOiAldSBzdWJzbGljZShzKSAoMHglcyk6XG4iLAogCQkJICAgcywgc3NldV9zdWJz bGljZXNfcGVyX3NsaWNlKHNzZXUsIHMpLAotCQkJICAgc3NldS0+c3Vic2xpY2VfbWFza1tzXSk7 CisJCQkgICBzdWJzbGljZV9wZXJfc2xpY2Vfc3RyKGJ1Ziwgc3NldSwgcykpOwogCiAJCWZvciAo c3MgPSAwOyBzcyA8IHNzZXUtPm1heF9zdWJzbGljZXM7IHNzKyspIHsKIAkJCXUxNiBlbmFibGVk X2V1cyA9IHNzZXVfZ2V0X2V1cyhzc2V1LCBzLCBzcyk7CkBAIC0xNTYsMTUgKzE4MiwxMCBAQCBz dGF0aWMgdm9pZCBnZW4xMV9zc2V1X2luZm9faW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpCiAJdTggZXVfZW47CiAJaW50IHM7CiAKLQlpZiAoSVNfRUxLSEFSVExBS0UoZGV2 X3ByaXYpKSB7Ci0JCXNzZXUtPm1heF9zbGljZXMgPSAxOwotCQlzc2V1LT5tYXhfc3Vic2xpY2Vz ID0gNDsKLQkJc3NldS0+bWF4X2V1c19wZXJfc3Vic2xpY2UgPSA4OwotCX0gZWxzZSB7Ci0JCXNz ZXUtPm1heF9zbGljZXMgPSAxOwotCQlzc2V1LT5tYXhfc3Vic2xpY2VzID0gODsKLQkJc3NldS0+ bWF4X2V1c19wZXJfc3Vic2xpY2UgPSA4OwotCX0KKwlpZiAoSVNfRUxLSEFSVExBS0UoZGV2X3By aXYpKQorCQlzZXRfc3NldV9pbmZvKHNzZXUsIDEsIDQsIDgpOworCWVsc2UKKwkJc2V0X3NzZXVf aW5mbyhzc2V1LCAxLCA4LCA4KTsKIAogCXNfZW4gPSBJOTE1X1JFQUQoR0VOMTFfR1RfU0xJQ0Vf RU5BQkxFKSAmIEdFTjExX0dUX1NfRU5BX01BU0s7CiAJc3NfZW4gPSB+STkxNV9SRUFEKEdFTjEx X0dUX1NVQlNMSUNFX0RJU0FCTEUpOwpAQCAtMTc3LDkgKzE5OCwxMSBAQCBzdGF0aWMgdm9pZCBn ZW4xMV9zc2V1X2luZm9faW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJ CQlpbnQgc3M7CiAKIAkJCXNzZXUtPnNsaWNlX21hc2sgfD0gQklUKHMpOwotCQkJc3NldS0+c3Vi c2xpY2VfbWFza1tzXSA9IChzc19lbiA+PiBzc19pZHgpICYgc3NfZW5fbWFzazsKKwkJCXNzZXUt PnN1YnNsaWNlX21hc2tbcyAqIHNzZXUtPnNzX3N0cmlkZV0gPQorCQkJCShzc19lbiA+PiBzc19p ZHgpICYgc3NfZW5fbWFzazsKIAkJCWZvciAoc3MgPSAwOyBzcyA8IHNzZXUtPm1heF9zdWJzbGlj ZXM7IHNzKyspIHsKLQkJCQlpZiAoc3NldS0+c3Vic2xpY2VfbWFza1tzXSAmIEJJVChzcykpCisJ CQkJaWYgKHNzZXUtPnN1YnNsaWNlX21hc2tbcyAqIHNzZXUtPnNzX3N0cmlkZV0gJgorCQkJCSAg ICBCSVQoc3MpKQogCQkJCQlzc2V1X3NldF9ldXMoc3NldSwgcywgc3MsIGV1X2VuKTsKIAkJCX0K IAkJfQpAQCAtMjAxLDIzICsyMjQsMTAgQEAgc3RhdGljIHZvaWQgZ2VuMTBfc3NldV9pbmZvX2lu aXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCWNvbnN0IGludCBldV9tYXNr ID0gMHhmZjsKIAl1MzIgc3Vic2xpY2VfbWFzaywgZXVfZW47CiAKKwlzZXRfc3NldV9pbmZvKHNz ZXUsIDYsIDQsIDgpOworCiAJc3NldS0+c2xpY2VfbWFzayA9IChmdXNlMiAmIEdFTjEwX0YyX1Nf RU5BX01BU0spID4+CiAJCQkgICAgR0VOMTBfRjJfU19FTkFfU0hJRlQ7Ci0Jc3NldS0+bWF4X3Ns aWNlcyA9IDY7Ci0Jc3NldS0+bWF4X3N1YnNsaWNlcyA9IDQ7Ci0Jc3NldS0+bWF4X2V1c19wZXJf c3Vic2xpY2UgPSA4OwotCi0Jc3Vic2xpY2VfbWFzayA9ICgxIDw8IDQpIC0gMTsKLQlzdWJzbGlj ZV9tYXNrICY9IH4oKGZ1c2UyICYgR0VOMTBfRjJfU1NfRElTX01BU0spID4+Ci0JCQkgICBHRU4x MF9GMl9TU19ESVNfU0hJRlQpOwotCi0JLyoKLQkgKiBTbGljZTAgY2FuIGhhdmUgdXAgdG8gMyBz dWJzbGljZXMsIGJ1dCB0aGVyZSBhcmUgb25seSAyIGluCi0JICogc2xpY2UxLzIuCi0JICovCi0J c3NldS0+c3Vic2xpY2VfbWFza1swXSA9IHN1YnNsaWNlX21hc2s7Ci0JZm9yIChzID0gMTsgcyA8 IHNzZXUtPm1heF9zbGljZXM7IHMrKykKLQkJc3NldS0+c3Vic2xpY2VfbWFza1tzXSA9IHN1YnNs aWNlX21hc2sgJiAweDM7CiAKIAkvKiBTbGljZTAgKi8KIAlldV9lbiA9IH5JOTE1X1JFQUQoR0VO OF9FVV9ESVNBQkxFMCk7CkBAIC0yNDIsMTQgKzI1MiwyMiBAQCBzdGF0aWMgdm9pZCBnZW4xMF9z c2V1X2luZm9faW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJZXVfZW4g PSB+STkxNV9SRUFEKEdFTjEwX0VVX0RJU0FCTEUzKTsKIAlzc2V1X3NldF9ldXMoc3NldSwgNSwg MSwgZXVfZW4gJiBldV9tYXNrKTsKIAotCS8qIERvIGEgc2Vjb25kIHBhc3Mgd2hlcmUgd2UgbWFy ayB0aGUgc3Vic2xpY2VzIGRpc2FibGVkIGlmIGFsbCB0aGVpcgotCSAqIGV1cyBhcmUgb2ZmLgot CSAqLworCXN1YnNsaWNlX21hc2sgPSAoMSA8PCA0KSAtIDE7CisJc3Vic2xpY2VfbWFzayAmPSB+ KChmdXNlMiAmIEdFTjEwX0YyX1NTX0RJU19NQVNLKSA+PgorCQkJICAgR0VOMTBfRjJfU1NfRElT X1NISUZUKTsKKwogCWZvciAocyA9IDA7IHMgPCBzc2V1LT5tYXhfc2xpY2VzOyBzKyspIHsKIAkJ Zm9yIChzcyA9IDA7IHNzIDwgc3NldS0+bWF4X3N1YnNsaWNlczsgc3MrKykgewogCQkJaWYgKHNz ZXVfZ2V0X2V1cyhzc2V1LCBzLCBzcykgPT0gMCkKLQkJCQlzc2V1LT5zdWJzbGljZV9tYXNrW3Nd ICY9IH5CSVQoc3MpOworCQkJCXN1YnNsaWNlX21hc2sgJj0gfkJJVChzcyk7CiAJCX0KKworCQkv KgorCQkgKiBTbGljZTAgY2FuIGhhdmUgdXAgdG8gMyBzdWJzbGljZXMsIGJ1dCB0aGVyZSBhcmUg b25seSAyIGluCisJCSAqIHNsaWNlMS8yLgorCQkgKi8KKwkJc3NldV9zZXRfc3Vic2xpY2VzKHNz ZXUsIHMsIHMgPT0gMCA/IHN1YnNsaWNlX21hc2sgOgorCQkJCQkJICAgICBzdWJzbGljZV9tYXNr ICYgMHgzKTsKIAl9CiAKIAlzc2V1LT5ldV90b3RhbCA9IGNvbXB1dGVfZXVfdG90YWwoc3NldSk7 CkBAIC0yNzQsMTMgKzI5MiwxMiBAQCBzdGF0aWMgdm9pZCBjaGVycnl2aWV3X3NzZXVfaW5mb19p bml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKIAlzdHJ1Y3Qgc3NldV9k ZXZfaW5mbyAqc3NldSA9ICZSVU5USU1FX0lORk8oZGV2X3ByaXYpLT5zc2V1OwogCXUzMiBmdXNl OworCXU4IHN1YnNsaWNlX21hc2s7CiAKIAlmdXNlID0gSTkxNV9SRUFEKENIVl9GVVNFX0dUKTsK IAogCXNzZXUtPnNsaWNlX21hc2sgPSBCSVQoMCk7Ci0Jc3NldS0+bWF4X3NsaWNlcyA9IDE7Ci0J c3NldS0+bWF4X3N1YnNsaWNlcyA9IDI7Ci0Jc3NldS0+bWF4X2V1c19wZXJfc3Vic2xpY2UgPSA4 OworCXNldF9zc2V1X2luZm8oc3NldSwgMSwgMiwgOCk7CiAKIAlpZiAoIShmdXNlICYgQ0hWX0ZH VF9ESVNBQkxFX1NTMCkpIHsKIAkJdTggZGlzYWJsZWRfbWFzayA9CkBAIC0yODksNyArMzA2LDcg QEAgc3RhdGljIHZvaWQgY2hlcnJ5dmlld19zc2V1X2luZm9faW5pdChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCiAJCQkoKChmdXNlICYgQ0hWX0ZHVF9FVV9ESVNfU1MwX1IxX01B U0spID4+CiAJCQkgIENIVl9GR1RfRVVfRElTX1NTMF9SMV9TSElGVCkgPDwgNCk7CiAKLQkJc3Nl dS0+c3Vic2xpY2VfbWFza1swXSB8PSBCSVQoMCk7CisJCXN1YnNsaWNlX21hc2sgfD0gQklUKDAp OwogCQlzc2V1X3NldF9ldXMoc3NldSwgMCwgMCwgfmRpc2FibGVkX21hc2spOwogCX0KIApAQCAt MzAwLDEwICszMTcsMTIgQEAgc3RhdGljIHZvaWQgY2hlcnJ5dmlld19zc2V1X2luZm9faW5pdChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCQkoKChmdXNlICYgQ0hWX0ZHVF9F VV9ESVNfU1MxX1IxX01BU0spID4+CiAJCQkgIENIVl9GR1RfRVVfRElTX1NTMV9SMV9TSElGVCkg PDwgNCk7CiAKLQkJc3NldS0+c3Vic2xpY2VfbWFza1swXSB8PSBCSVQoMSk7CisJCXN1YnNsaWNl X21hc2sgfD0gQklUKDEpOwogCQlzc2V1X3NldF9ldXMoc3NldSwgMCwgMSwgfmRpc2FibGVkX21h c2spOwogCX0KIAorCXNzZXVfc2V0X3N1YnNsaWNlcyhzc2V1LCAwLCBzdWJzbGljZV9tYXNrKTsK KwogCXNzZXUtPmV1X3RvdGFsID0gY29tcHV0ZV9ldV90b3RhbChzc2V1KTsKIAogCS8qCkBAIC0z MzUsOSArMzU0LDggQEAgc3RhdGljIHZvaWQgZ2VuOV9zc2V1X2luZm9faW5pdChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJc3NldS0+c2xpY2VfbWFzayA9IChmdXNlMiAmIEdF TjhfRjJfU19FTkFfTUFTSykgPj4gR0VOOF9GMl9TX0VOQV9TSElGVDsKIAogCS8qIEJYVCBoYXMg YSBzaW5nbGUgc2xpY2UgYW5kIGF0IG1vc3QgMyBzdWJzbGljZXMuICovCi0Jc3NldS0+bWF4X3Ns aWNlcyA9IElTX0dFTjlfTFAoZGV2X3ByaXYpID8gMSA6IDM7Ci0Jc3NldS0+bWF4X3N1YnNsaWNl cyA9IElTX0dFTjlfTFAoZGV2X3ByaXYpID8gMyA6IDQ7Ci0Jc3NldS0+bWF4X2V1c19wZXJfc3Vi c2xpY2UgPSA4OworCXNldF9zc2V1X2luZm8oc3NldSwgSVNfR0VOOV9MUChkZXZfcHJpdikgPyAx IDogMywKKwkJICAgICAgSVNfR0VOOV9MUChkZXZfcHJpdikgPyAzIDogNCwgOCk7CiAKIAkvKgog CSAqIFRoZSBzdWJzbGljZSBkaXNhYmxlIGZpZWxkIGlzIGdsb2JhbCwgaS5lLiBpdCBhcHBsaWVz CkBAIC0zNTYsMTQgKzM3NCwxNiBAQCBzdGF0aWMgdm9pZCBnZW45X3NzZXVfaW5mb19pbml0KHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkJCS8qIHNraXAgZGlzYWJsZWQgc2xp Y2UgKi8KIAkJCWNvbnRpbnVlOwogCi0JCXNzZXUtPnN1YnNsaWNlX21hc2tbc10gPSBzdWJzbGlj ZV9tYXNrOworCQlzc2V1X3NldF9zdWJzbGljZXMoc3NldSwgcywgc3Vic2xpY2VfbWFzayk7CiAK IAkJZXVfZGlzYWJsZSA9IEk5MTVfUkVBRChHRU45X0VVX0RJU0FCTEUocykpOwogCQlmb3IgKHNz ID0gMDsgc3MgPCBzc2V1LT5tYXhfc3Vic2xpY2VzOyBzcysrKSB7CiAJCQlpbnQgZXVfcGVyX3Nz OwogCQkJdTggZXVfZGlzYWJsZWRfbWFzazsKKwkJCXU4IHNzX2lkeCA9IHMgKiBzc2V1LT5zc19z dHJpZGUgKyBzcyAvIEJJVFNfUEVSX0JZVEU7CiAKLQkJCWlmICghKHNzZXUtPnN1YnNsaWNlX21h c2tbc10gJiBCSVQoc3MpKSkKKwkJCWlmICghKHNzZXUtPnN1YnNsaWNlX21hc2tbc3NfaWR4XSAm CisJCQkgICAgICBCSVQoc3MgJSBCSVRTX1BFUl9CWVRFKSkpCiAJCQkJLyogc2tpcCBkaXNhYmxl ZCBzdWJzbGljZSAqLwogCQkJCWNvbnRpbnVlOwogCkBAIC00MzUsOSArNDU1LDcgQEAgc3RhdGlj IHZvaWQgYnJvYWR3ZWxsX3NzZXVfaW5mb19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKIAogCWZ1c2UyID0gSTkxNV9SRUFEKEdFTjhfRlVTRTIpOwogCXNzZXUtPnNsaWNl X21hc2sgPSAoZnVzZTIgJiBHRU44X0YyX1NfRU5BX01BU0spID4+IEdFTjhfRjJfU19FTkFfU0hJ RlQ7Ci0Jc3NldS0+bWF4X3NsaWNlcyA9IDM7Ci0Jc3NldS0+bWF4X3N1YnNsaWNlcyA9IDM7Ci0J c3NldS0+bWF4X2V1c19wZXJfc3Vic2xpY2UgPSA4OworCXNldF9zc2V1X2luZm8oc3NldSwgMywg MywgOCk7CiAKIAkvKgogCSAqIFRoZSBzdWJzbGljZSBkaXNhYmxlIGZpZWxkIGlzIGdsb2JhbCwg aS5lLiBpdCBhcHBsaWVzCkBAIC00NjQsMTggKzQ4MiwyMSBAQCBzdGF0aWMgdm9pZCBicm9hZHdl bGxfc3NldV9pbmZvX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCQkJ Lyogc2tpcCBkaXNhYmxlZCBzbGljZSAqLwogCQkJY29udGludWU7CiAKLQkJc3NldS0+c3Vic2xp Y2VfbWFza1tzXSA9IHN1YnNsaWNlX21hc2s7CisJCXNzZXVfc2V0X3N1YnNsaWNlcyhzc2V1LCBz LCBzdWJzbGljZV9tYXNrKTsKIAogCQlmb3IgKHNzID0gMDsgc3MgPCBzc2V1LT5tYXhfc3Vic2xp Y2VzOyBzcysrKSB7CiAJCQl1OCBldV9kaXNhYmxlZF9tYXNrOworCQkJdTggc3NfaWR4ID0gcyAq IHNzZXUtPnNzX3N0cmlkZSArIHNzIC8gQklUU19QRVJfQllURTsKIAkJCXUzMiBuX2Rpc2FibGVk OwogCi0JCQlpZiAoIShzc2V1LT5zdWJzbGljZV9tYXNrW3NdICYgQklUKHNzKSkpCisJCQlpZiAo IShzc2V1LT5zdWJzbGljZV9tYXNrW3NzX2lkeF0gJgorCQkJICAgICAgQklUKHNzICUgQklUU19Q RVJfQllURSkpKQogCQkJCS8qIHNraXAgZGlzYWJsZWQgc3Vic2xpY2UgKi8KIAkJCQljb250aW51 ZTsKIAogCQkJZXVfZGlzYWJsZWRfbWFzayA9Ci0JCQkJZXVfZGlzYWJsZVtzXSA+PiAoc3MgKiBz c2V1LT5tYXhfZXVzX3Blcl9zdWJzbGljZSk7CisJCQkJZXVfZGlzYWJsZVtzXSA+PgorCQkJCQko c3MgKiBzc2V1LT5tYXhfZXVzX3Blcl9zdWJzbGljZSk7CiAKIAkJCXNzZXVfc2V0X2V1cyhzc2V1 LCBzLCBzcywgfmV1X2Rpc2FibGVkX21hc2spOwogCkBAIC01MTQsNiArNTM1LDcgQEAgc3RhdGlj IHZvaWQgaGFzd2VsbF9zc2V1X2luZm9faW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCiAJc3RydWN0IHNzZXVfZGV2X2luZm8gKnNzZXUgPSAmUlVOVElNRV9JTkZPKGRldl9w cml2KS0+c3NldTsKIAl1MzIgZnVzZTE7CiAJaW50IHMsIHNzOworCXUzMiBzdWJzbGljZV9tYXNr OwogCiAJLyoKIAkgKiBUaGVyZSBpc24ndCBhIHJlZ2lzdGVyIHRvIHRlbGwgdXMgaG93IG1hbnkg c2xpY2VzL3N1YnNsaWNlcy4gV2UKQEAgLTUyNSwyMiArNTQ3LDE4IEBAIHN0YXRpYyB2b2lkIGhh c3dlbGxfc3NldV9pbmZvX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQog CQkvKiBmYWxsIHRocm91Z2ggKi8KIAljYXNlIDE6CiAJCXNzZXUtPnNsaWNlX21hc2sgPSBCSVQo MCk7Ci0JCXNzZXUtPnN1YnNsaWNlX21hc2tbMF0gPSBCSVQoMCk7CisJCXN1YnNsaWNlX21hc2sg PSBCSVQoMCk7CiAJCWJyZWFrOwogCWNhc2UgMjoKIAkJc3NldS0+c2xpY2VfbWFzayA9IEJJVCgw KTsKLQkJc3NldS0+c3Vic2xpY2VfbWFza1swXSA9IEJJVCgwKSB8IEJJVCgxKTsKKwkJc3Vic2xp Y2VfbWFzayA9IEJJVCgwKSB8IEJJVCgxKTsKIAkJYnJlYWs7CiAJY2FzZSAzOgogCQlzc2V1LT5z bGljZV9tYXNrID0gQklUKDApIHwgQklUKDEpOwotCQlzc2V1LT5zdWJzbGljZV9tYXNrWzBdID0g QklUKDApIHwgQklUKDEpOwotCQlzc2V1LT5zdWJzbGljZV9tYXNrWzFdID0gQklUKDApIHwgQklU KDEpOworCQlzdWJzbGljZV9tYXNrID0gQklUKDApIHwgQklUKDEpOwogCQlicmVhazsKIAl9CiAK LQlzc2V1LT5tYXhfc2xpY2VzID0gaHdlaWdodDgoc3NldS0+c2xpY2VfbWFzayk7Ci0Jc3NldS0+ bWF4X3N1YnNsaWNlcyA9IGh3ZWlnaHQ4KHNzZXUtPnN1YnNsaWNlX21hc2tbMF0pOwotCiAJZnVz ZTEgPSBJOTE1X1JFQUQoSFNXX1BBVlBfRlVTRTEpOwogCXN3aXRjaCAoKGZ1c2UxICYgSFNXX0Yx X0VVX0RJU19NQVNLKSA+PiBIU1dfRjFfRVVfRElTX1NISUZUKSB7CiAJZGVmYXVsdDoKQEAgLTU1 Nyw5ICs1NzUsMTQgQEAgc3RhdGljIHZvaWQgaGFzd2VsbF9zc2V1X2luZm9faW5pdChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCXNzZXUtPmV1X3Blcl9zdWJzbGljZSA9IDY7 CiAJCWJyZWFrOwogCX0KLQlzc2V1LT5tYXhfZXVzX3Blcl9zdWJzbGljZSA9IHNzZXUtPmV1X3Bl cl9zdWJzbGljZTsKKworCXNldF9zc2V1X2luZm8oc3NldSwgaHdlaWdodDgoc3NldS0+c2xpY2Vf bWFzayksCisJCSAgICAgIGh3ZWlnaHQ4KHN1YnNsaWNlX21hc2spLAorCQkgICAgICBzc2V1LT5l dV9wZXJfc3Vic2xpY2UpOwogCiAJZm9yIChzID0gMDsgcyA8IHNzZXUtPm1heF9zbGljZXM7IHMr KykgeworCQlzc2V1X3NldF9zdWJzbGljZXMoc3NldSwgcywgc3Vic2xpY2VfbWFzayk7CisKIAkJ Zm9yIChzcyA9IDA7IHNzIDwgc3NldS0+bWF4X3N1YnNsaWNlczsgc3MrKykgewogCQkJc3NldV9z ZXRfZXVzKHNzZXUsIHMsIHNzLAogCQkJCSAgICAgKDFVTCA8PCBzc2V1LT5ldV9wZXJfc3Vic2xp Y2UpIC0gMSk7Ci0tIAoyLjIxLjAuNS5nYWViNTgyYTk4MwoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1n ZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4