From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stuart Summers Subject: [PATCH 5/5] drm/i915: Expand subslice mask Date: Fri, 26 Apr 2019 13:24:16 -0700 Message-ID: <20190426202416.19076-6-stuart.summers@intel.com> References: <20190426202416.19076-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 4A7C089231 for ; Fri, 26 Apr 2019 20:24:18 +0000 (UTC) In-Reply-To: <20190426202416.19076-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 CgpDYzogRGFuaWVsZSBDZXJhb2xvIFNwdXJpbyA8ZGFuaWVsZS5jZXJhb2xvc3B1cmlvQGludGVs LmNvbT4KU2lnbmVkLW9mZi1ieTogU3R1YXJ0IFN1bW1lcnMgPHN0dWFydC5zdW1tZXJzQGludGVs LmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYyAgICB8 ICAgNiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3R5cGVzLmggfCAg MzIgKysrLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2hhbmdjaGVjay5jICAgIHwg ICAzICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9zc2V1LmggICAgICAgICB8ICA0 NCArKysrKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3dvcmthcm91bmRzLmMgIHwg ICAyICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyAgICAgICAgICB8ICA0 MyArKystLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgICAgICAgICAgICAgIHwg ICA2ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jICAgICAgICB8ICAg NSArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9xdWVyeS5jICAgICAgICAgICAgfCAgMTAg Ky0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RldmljZV9pbmZvLmMgICAgIHwgMTM5ICsr KysrKysrKysrLS0tLS0tLS0KIDEwIGZpbGVzIGNoYW5nZWQsIDE4MiBpbnNlcnRpb25zKCspLCAx MDggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50 ZWxfZW5naW5lX2NzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3Mu YwppbmRleCBmNzMwODQ3OWQ1MTEuLjg5MjIzNThlZTZjNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2NzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3QvaW50ZWxfZW5naW5lX2NzLmMKQEAgLTkwOCw3ICs5MDgsNyBAQCB1MzIgaW50ZWxfY2Fs Y3VsYXRlX21jcl9zX3NzX3NlbGVjdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp CiAJY29uc3Qgc3RydWN0IHNzZXVfZGV2X2luZm8gKnNzZXUgPSAmUlVOVElNRV9JTkZPKGRldl9w cml2KS0+c3NldTsKIAl1MzIgbWNyX3Nfc3Nfc2VsZWN0OwogCXUzMiBzbGljZSA9IGZscyhzc2V1 LT5zbGljZV9tYXNrKTsKLQl1MzIgc3Vic2xpY2UgPSBmbHMoc3NldS0+c3Vic2xpY2VfbWFza1tz bGljZV0pOworCXUzMiBzdWJzbGljZSA9IGZscyhzc2V1LT5zdWJzbGljZV9tYXNrW3NsaWNlICog c3NldS0+c3Nfc3RyaWRlXSk7CiAKIAlpZiAoSVNfR0VOKGRldl9wcml2LCAxMCkpCiAJCW1jcl9z X3NzX3NlbGVjdCA9IEdFTjhfTUNSX1NMSUNFKHNsaWNlKSB8CkBAIC05ODQsNiArOTg0LDcgQEAg dm9pZCBpbnRlbF9lbmdpbmVfZ2V0X2luc3Rkb25lKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSwKIAkJCSAgICAgICBzdHJ1Y3QgaW50ZWxfaW5zdGRvbmUgKmluc3Rkb25lKQogewogCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGVuZ2luZS0+aTkxNTsKKwlzdHJ1Y3Qg c3NldV9kZXZfaW5mbyAqc3NldSA9ICZSVU5USU1FX0lORk8oZGV2X3ByaXYpLT5zc2V1OwogCXN0 cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSA9IGVuZ2luZS0+dW5jb3JlOwogCXUzMiBtbWlvX2Jh c2UgPSBlbmdpbmUtPm1taW9fYmFzZTsKIAlpbnQgc2xpY2U7CkBAIC0xMDAxLDcgKzEwMDIsOCBA QCB2b2lkIGludGVsX2VuZ2luZV9nZXRfaW5zdGRvbmUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lLAogCiAJCWluc3Rkb25lLT5zbGljZV9jb21tb24gPQogCQkJaW50ZWxfdW5jb3JlX3Jl YWQodW5jb3JlLCBHRU43X1NDX0lOU1RET05FKTsKLQkJZm9yX2VhY2hfaW5zdGRvbmVfc2xpY2Vf c3Vic2xpY2UoZGV2X3ByaXYsIHNsaWNlLCBzdWJzbGljZSkgeworCQlmb3JfZWFjaF9pbnN0ZG9u ZV9zbGljZV9zdWJzbGljZShkZXZfcHJpdiwgc3NldSwgc2xpY2UsCisJCQkJCQkgc3Vic2xpY2Up IHsKIAkJCWluc3Rkb25lLT5zYW1wbGVyW3NsaWNlXVtzdWJzbGljZV0gPQogCQkJCXJlYWRfc3Vi c2xpY2VfcmVnKGRldl9wcml2LCBzbGljZSwgc3Vic2xpY2UsCiAJCQkJCQkgIEdFTjdfU0FNUExF Ul9JTlNURE9ORSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9l bmdpbmVfdHlwZXMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV90eXBl cy5oCmluZGV4IGQ5NzJjMzM5MzA5Yy4uZmE3MDUyODk2M2E0IDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfdHlwZXMuaAorKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfdHlwZXMuaApAQCAtNTM0LDIwICs1MzQsMjIgQEAgaW50 ZWxfZW5naW5lX25lZWRzX2JyZWFkY3J1bWJfdGFza2xldChjb25zdCBzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUpCiAJcmV0dXJuIGVuZ2luZS0+ZmxhZ3MgJiBJOTE1X0VOR0lORV9ORUVE U19CUkVBRENSVU1CX1RBU0tMRVQ7CiB9CiAKLSNkZWZpbmUgaW5zdGRvbmVfc2xpY2VfbWFzayhk ZXZfcHJpdl9fKSBcCi0JKElTX0dFTihkZXZfcHJpdl9fLCA3KSA/IFwKLQkgMSA6IFJVTlRJTUVf SU5GTyhkZXZfcHJpdl9fKS0+c3NldS5zbGljZV9tYXNrKQotCi0jZGVmaW5lIGluc3Rkb25lX3N1 YnNsaWNlX21hc2soZGV2X3ByaXZfXykgXAotCShJU19HRU4oZGV2X3ByaXZfXywgNykgPyBcCi0J IDEgOiBSVU5USU1FX0lORk8oZGV2X3ByaXZfXyktPnNzZXUuc3Vic2xpY2VfbWFza1swXSkKLQot I2RlZmluZSBmb3JfZWFjaF9pbnN0ZG9uZV9zbGljZV9zdWJzbGljZShkZXZfcHJpdl9fLCBzbGlj ZV9fLCBzdWJzbGljZV9fKSBcCi0JZm9yICgoc2xpY2VfXykgPSAwLCAoc3Vic2xpY2VfXykgPSAw OyBcCi0JICAgICAoc2xpY2VfXykgPCBJOTE1X01BWF9TTElDRVM7IFwKLQkgICAgIChzdWJzbGlj ZV9fKSA9ICgoc3Vic2xpY2VfXykgKyAxKSA8IEk5MTVfTUFYX1NVQlNMSUNFUyA/IChzdWJzbGlj ZV9fKSArIDEgOiAwLCBcCi0JICAgICAgIChzbGljZV9fKSArPSAoKHN1YnNsaWNlX18pID09IDAp KSBcCi0JCWZvcl9lYWNoX2lmKChCSVQoc2xpY2VfXykgJiBpbnN0ZG9uZV9zbGljZV9tYXNrKGRl dl9wcml2X18pKSAmJiBcCi0JCQkgICAgKEJJVChzdWJzbGljZV9fKSAmIGluc3Rkb25lX3N1YnNs aWNlX21hc2soZGV2X3ByaXZfXykpKQorI2RlZmluZSBpbnN0ZG9uZV9oYXNfc2xpY2UoZGV2X3By aXZfX18sIHNzZXVfX18sIHNsaWNlX19fKSBcCisJKChJU19HRU4oZGV2X3ByaXZfX18sIDcpID8g XAorCSAgMSA6IChzc2V1X19fKS0+c2xpY2VfbWFzaykgJiBcCisJQklUKHNsaWNlX19fKSkgXAor CisjZGVmaW5lIGluc3Rkb25lX2hhc19zdWJzbGljZShkZXZfcHJpdl9fLCBzc2V1X18sIHNsaWNl X18sIHN1YnNsaWNlX18pIFwKKwkoKElTX0dFTihkZXZfcHJpdl9fLCA3KSA/IFwKKwkgIDEgOiAo c3NldV9fKS0+c3Vic2xpY2VfbWFza1tzbGljZV9fICogKHNzZXVfXyktPnNzX3N0cmlkZSArIFwK KwkJCQkgICAgICBzdWJzbGljZV9fIC8gQklUU19QRVJfQllURV0pICYgXAorCSBCSVQoc3Vic2xp Y2VfXyAlIEJJVFNfUEVSX0JZVEUpKSBcCisKKyNkZWZpbmUgZm9yX2VhY2hfaW5zdGRvbmVfc2xp Y2Vfc3Vic2xpY2UoZGV2X3ByaXZfLCBzc2V1Xywgc2xpY2VfLCBzdWJzbGljZV8pIFwKKwlmb3Ig KChzbGljZV8pID0gMCwgKHN1YnNsaWNlXykgPSAwOyAoc2xpY2VfKSA8IEk5MTVfTUFYX1NMSUNF UzsgXAorCSAgICAgKHN1YnNsaWNlXykgPSAoKHN1YnNsaWNlXykgKyAxKSA8IEk5MTVfTUFYX1NV QlNMSUNFUyA/IChzdWJzbGljZV8pICsgMSA6IDAsIFwKKwkgICAgICAgKHNsaWNlXykgKz0gKChz dWJzbGljZV8pID09IDApKSBcCisJCWZvcl9lYWNoX2lmKGluc3Rkb25lX2hhc19zbGljZShkZXZf cHJpdl8sIHNzZXVfLCBzbGljZSkgJiYgXAorCQkJICAgIGluc3Rkb25lX2hhc19zdWJzbGljZShk ZXZfcHJpdl8sIHNzZXVfLCBzbGljZV8sIHN1YnNsaWNlXykpIFwKIAogI2VuZGlmIC8qIF9fSU5U RUxfRU5HSU5FX1RZUEVTX0hfXyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3QvaW50ZWxfaGFuZ2NoZWNrLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9oYW5n Y2hlY2suYwppbmRleCBlNWVhYTA2ZmU3NGQuLjk1ZGZjZTY1YzAwYyAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfaGFuZ2NoZWNrLmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3QvaW50ZWxfaGFuZ2NoZWNrLmMKQEAgLTUwLDYgKzUwLDcgQEAgc3RhdGljIGJv b2wgaW5zdGRvbmVfdW5jaGFuZ2VkKHUzMiBjdXJyZW50X2luc3Rkb25lLCB1MzIgKm9sZF9pbnN0 ZG9uZSkKIHN0YXRpYyBib29sIHN1YnVuaXRzX3N0dWNrKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBlbmdpbmUt Pmk5MTU7CisJc3RydWN0IHNzZXVfZGV2X2luZm8gKnNzZXUgPSAmUlVOVElNRV9JTkZPKGRldl9w cml2KS0+c3NldTsKIAlzdHJ1Y3QgaW50ZWxfaW5zdGRvbmUgaW5zdGRvbmU7CiAJc3RydWN0IGlu dGVsX2luc3Rkb25lICphY2N1X2luc3Rkb25lID0gJmVuZ2luZS0+aGFuZ2NoZWNrLmluc3Rkb25l OwogCWJvb2wgc3R1Y2s7CkBAIC03MSw3ICs3Miw3IEBAIHN0YXRpYyBib29sIHN1YnVuaXRzX3N0 dWNrKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAlzdHVjayAmPSBpbnN0ZG9uZV91 bmNoYW5nZWQoaW5zdGRvbmUuc2xpY2VfY29tbW9uLAogCQkJCSAgICAmYWNjdV9pbnN0ZG9uZS0+ c2xpY2VfY29tbW9uKTsKIAotCWZvcl9lYWNoX2luc3Rkb25lX3NsaWNlX3N1YnNsaWNlKGRldl9w cml2LCBzbGljZSwgc3Vic2xpY2UpIHsKKwlmb3JfZWFjaF9pbnN0ZG9uZV9zbGljZV9zdWJzbGlj ZShkZXZfcHJpdiwgc3NldSwgc2xpY2UsIHN1YnNsaWNlKSB7CiAJCXN0dWNrICY9IGluc3Rkb25l X3VuY2hhbmdlZChpbnN0ZG9uZS5zYW1wbGVyW3NsaWNlXVtzdWJzbGljZV0sCiAJCQkJCSAgICAm YWNjdV9pbnN0ZG9uZS0+c2FtcGxlcltzbGljZV1bc3Vic2xpY2VdKTsKIAkJc3R1Y2sgJj0gaW5z dGRvbmVfdW5jaGFuZ2VkKGluc3Rkb25lLnJvd1tzbGljZV1bc3Vic2xpY2VdLApkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfc3NldS5oIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3QvaW50ZWxfc3NldS5oCmluZGV4IDBkZmJlZDU0N2RhNS4uYTY1OWE4MjdmNjQwIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9zc2V1LmgKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfc3NldS5oCkBAIC0xNCwxMCArMTQsMTEgQEAgc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGU7CiAjZGVmaW5lIEdFTl9NQVhfU0xJQ0VTCQkoNikgLyogQ05M IHVwcGVyIGJvdW5kICovCiAjZGVmaW5lIEdFTl9NQVhfU1VCU0xJQ0VTCSg4KSAvKiBJQ0wgdXBw ZXIgYm91bmQgKi8KICNkZWZpbmUgR0VOX1NTRVVfU1RSSURFKGJpdHMpIERJVl9ST1VORF9VUChi aXRzLCBCSVRTX1BFUl9CWVRFKQorI2RlZmluZSBHRU5fTUFYX1NVQlNMSUNFX1NUUklERSBHRU5f U1NFVV9TVFJJREUoR0VOX01BWF9TVUJTTElDRVMpCiAKIHN0cnVjdCBzc2V1X2Rldl9pbmZvIHsK IAl1OCBzbGljZV9tYXNrOwotCXU4IHN1YnNsaWNlX21hc2tbR0VOX01BWF9TTElDRVNdOworCXU4 IHN1YnNsaWNlX21hc2tbR0VOX01BWF9TTElDRVMgKiBHRU5fTUFYX1NVQlNMSUNFX1NUUklERV07 CiAJdTE2IGV1X3RvdGFsOwogCXU4IGV1X3Blcl9zdWJzbGljZTsKIAl1OCBtaW5fZXVfaW5fcG9v bDsKQEAgLTMyLDYgKzMzLDkgQEAgc3RydWN0IHNzZXVfZGV2X2luZm8gewogCXU4IG1heF9zdWJz bGljZXM7CiAJdTggbWF4X2V1c19wZXJfc3Vic2xpY2U7CiAKKwl1OCBzc19zdHJpZGU7CisJdTgg ZXVfc3RyaWRlOworCiAJLyogV2UgZG9uJ3QgaGF2ZSBtb3JlIHRoYW4gOCBldXMgcGVyIHN1YnNs aWNlIGF0IHRoZSBtb21lbnQgYW5kIGFzIHdlCiAJICogc3RvcmUgZXVzIGVuYWJsZWQgdXNpbmcg Yml0cywgbm8gbmVlZCB0byBtdWx0aXBseSBieSBldXMgcGVyCiAJICogc3Vic2xpY2UuCkBAIC02 Miw2ICs2NiwxNyBAQCBpbnRlbF9zc2V1X2Zyb21fZGV2aWNlX2luZm8oY29uc3Qgc3RydWN0IHNz ZXVfZGV2X2luZm8gKnNzZXUpCiAJcmV0dXJuIHZhbHVlOwogfQogCitzdGF0aWMgaW5saW5lIHZv aWQgc2V0X3NzZXVfaW5mbyhzdHJ1Y3Qgc3NldV9kZXZfaW5mbyAqc3NldSwgdTggbWF4X3NsaWNl cywKKwkJCQkgdTggbWF4X3N1YnNsaWNlcywgdTggbWF4X2V1c19wZXJfc3Vic2xpY2UpCit7CisJ c3NldS0+bWF4X3NsaWNlcyA9IG1heF9zbGljZXM7CisJc3NldS0+bWF4X3N1YnNsaWNlcyA9IG1h eF9zdWJzbGljZXM7CisJc3NldS0+bWF4X2V1c19wZXJfc3Vic2xpY2UgPSBtYXhfZXVzX3Blcl9z dWJzbGljZTsKKworCXNzZXUtPnNzX3N0cmlkZSA9IEdFTl9TU0VVX1NUUklERShzc2V1LT5tYXhf c3Vic2xpY2VzKTsKKwlzc2V1LT5ldV9zdHJpZGUgPSBHRU5fU1NFVV9TVFJJREUoc3NldS0+bWF4 X2V1c19wZXJfc3Vic2xpY2UpOworfQorCiBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBzc2V1 X3N1YnNsaWNlX3RvdGFsKGNvbnN0IHN0cnVjdCBzc2V1X2Rldl9pbmZvICpzc2V1KQogewogCXVu c2lnbmVkIGludCBpLCB0b3RhbCA9IDA7CkBAIC03NSw3ICs5MCwzMiBAQCBzdGF0aWMgaW5saW5l IHVuc2lnbmVkIGludCBzc2V1X3N1YnNsaWNlX3RvdGFsKGNvbnN0IHN0cnVjdCBzc2V1X2Rldl9p bmZvICpzc2V1KQogc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQKIHNzZXVfc3Vic2xpY2VzX3Bl cl9zbGljZShjb25zdCBzdHJ1Y3Qgc3NldV9kZXZfaW5mbyAqc3NldSwgdTggc2xpY2UpCiB7Ci0J cmV0dXJuIGh3ZWlnaHQ4KHNzZXUtPnN1YnNsaWNlX21hc2tbc2xpY2VdKTsKKwl1bnNpZ25lZCBp bnQgaSwgdG90YWwgPSAwOworCisJZm9yIChpID0gMDsgaSA8IHNzZXUtPnNzX3N0cmlkZTsgaSsr KQorCQl0b3RhbCArPSBod2VpZ2h0OChzc2V1LT5zdWJzbGljZV9tYXNrW3NsaWNlICogc3NldS0+ c3Nfc3RyaWRlICsKKwkJCQkJCSAgICAgIGldKTsKKworCXJldHVybiB0b3RhbDsKK30KKworc3Rh dGljIGlubGluZSB2b2lkIHNzZXVfY29weV9zdWJzbGljZXMoY29uc3Qgc3RydWN0IHNzZXVfZGV2 X2luZm8gKnNzZXUsCisJCQkJICAgICAgIGludCBzbGljZSwgdTggKnRvX21hc2ssCisJCQkJICAg ICAgIGNvbnN0IHU4ICpmcm9tX21hc2spCit7CisJaW50IG9mZnNldCA9IHNsaWNlICogc3NldS0+ c3Nfc3RyaWRlOworCisJbWVtY3B5KCZ0b19tYXNrW29mZnNldF0sICZmcm9tX21hc2tbb2Zmc2V0 XSwgc3NldS0+c3Nfc3RyaWRlKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkIHNzZXVfc2V0X3N1 YnNsaWNlcyhzdHJ1Y3Qgc3NldV9kZXZfaW5mbyAqc3NldSwKKwkJCQkgICAgICBpbnQgc2xpY2Us IHUzMiBzc19tYXNrKQoreworCWludCBpLCBvZmZzZXQgPSBzbGljZSAqIHNzZXUtPnNzX3N0cmlk ZTsKKworCWZvciAoaSA9IDA7IGkgPCBzc2V1LT5zc19zdHJpZGU7IGkrKykKKwkJc3NldS0+c3Vi c2xpY2VfbWFza1tvZmZzZXQgKyBpXSA9CisJCQkoc3NfbWFzayA+PiAoQklUU19QRVJfQllURSAq IGkpKSAmIDB4ZmY7CiB9CiAKIHN0YXRpYyBpbmxpbmUgaW50IHNzZXVfZXVfaWR4KGNvbnN0IHN0 cnVjdCBzc2V1X2Rldl9pbmZvICpzc2V1LApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3QvaW50ZWxfd29ya2Fyb3VuZHMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVs X3dvcmthcm91bmRzLmMKaW5kZXggNTc1MTQ0NmE0YjBiLi41MWRmODg4NzNmZjUgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3dvcmthcm91bmRzLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfd29ya2Fyb3VuZHMuYwpAQCAtNzcxLDcgKzc3MSw3 IEBAIHdhX2luaXRfbWNyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCBzdHJ1Y3QgaTkx NV93YV9saXN0ICp3YWwpCiAJCXUzMiBzbGljZSA9IGZscyhzc2V1LT5zbGljZV9tYXNrKTsKIAkJ dTMyIGZ1c2UzID0KIAkJCWludGVsX3VuY29yZV9yZWFkKCZpOTE1LT51bmNvcmUsIEdFTjEwX01J UlJPUl9GVVNFMyk7Ci0JCXU4IHNzX21hc2sgPSBzc2V1LT5zdWJzbGljZV9tYXNrW3NsaWNlXTsK KwkJdTggc3NfbWFzayA9IHNzZXUtPnN1YnNsaWNlX21hc2tbc2xpY2UgKiBzc2V1LT5zc19zdHJp ZGVdOwogCiAJCXU4IGVuYWJsZWRfbWFzayA9IChzc19tYXNrIHwgc3NfbWFzayA+PgogCQkJCSAg IEdFTjEwX0wzQkFOS19QQUlSX0NPVU5UKSAmIEdFTjEwX0wzQkFOS19NQVNLOwpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2RlYnVnZnMuYwppbmRleCAwZWNmMDA2ZDI2YjMuLjRmOGQ0MzcwOTEyZiAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKQEAgLTEyNTYsNiArMTI1Niw3IEBAIHN0YXRp YyB2b2lkIGk5MTVfaW5zdGRvbmVfaW5mbyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsCiAJCQkgICAgICAgc3RydWN0IHNlcV9maWxlICptLAogCQkJICAgICAgIHN0cnVjdCBpbnRl bF9pbnN0ZG9uZSAqaW5zdGRvbmUpCiB7CisJc3RydWN0IHNzZXVfZGV2X2luZm8gKnNzZXUgPSAm UlVOVElNRV9JTkZPKGRldl9wcml2KS0+c3NldTsKIAlpbnQgc2xpY2U7CiAJaW50IHN1YnNsaWNl OwogCkBAIC0xMjcxLDExICsxMjcyLDExIEBAIHN0YXRpYyB2b2lkIGk5MTVfaW5zdGRvbmVfaW5m byhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJaWYgKElOVEVMX0dFTihkZXZf cHJpdikgPD0gNikKIAkJcmV0dXJuOwogCi0JZm9yX2VhY2hfaW5zdGRvbmVfc2xpY2Vfc3Vic2xp Y2UoZGV2X3ByaXYsIHNsaWNlLCBzdWJzbGljZSkKKwlmb3JfZWFjaF9pbnN0ZG9uZV9zbGljZV9z dWJzbGljZShkZXZfcHJpdiwgc3NldSwgc2xpY2UsIHN1YnNsaWNlKQogCQlzZXFfcHJpbnRmKG0s ICJcdFx0U0FNUExFUl9JTlNURE9ORVslZF1bJWRdOiAweCUwOHhcbiIsCiAJCQkgICBzbGljZSwg c3Vic2xpY2UsIGluc3Rkb25lLT5zYW1wbGVyW3NsaWNlXVtzdWJzbGljZV0pOwogCi0JZm9yX2Vh Y2hfaW5zdGRvbmVfc2xpY2Vfc3Vic2xpY2UoZGV2X3ByaXYsIHNsaWNlLCBzdWJzbGljZSkKKwlm b3JfZWFjaF9pbnN0ZG9uZV9zbGljZV9zdWJzbGljZShkZXZfcHJpdiwgc3NldSwgc2xpY2UsIHN1 YnNsaWNlKQogCQlzZXFfcHJpbnRmKG0sICJcdFx0Uk9XX0lOU1RET05FWyVkXVslZF06IDB4JTA4 eFxuIiwKIAkJCSAgIHNsaWNlLCBzdWJzbGljZSwgaW5zdGRvbmUtPnJvd1tzbGljZV1bc3Vic2xp Y2VdKTsKIH0KQEAgLTQwNjUsNyArNDA2Niw5IEBAIHN0YXRpYyB2b2lkIGdlbjEwX3NzZXVfZGV2 aWNlX3N0YXR1cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQljb250aW51 ZTsKIAogCQlzc2V1LT5zbGljZV9tYXNrIHw9IEJJVChzKTsKLQkJc3NldS0+c3Vic2xpY2VfbWFz a1tzXSA9IGluZm8tPnNzZXUuc3Vic2xpY2VfbWFza1tzXTsKKwkJc3NldV9jb3B5X3N1YnNsaWNl cygmaW5mby0+c3NldSwgcywKKwkJCQkgICAgc3NldS0+c3Vic2xpY2VfbWFzaywKKwkJCQkgICAg aW5mby0+c3NldS5zdWJzbGljZV9tYXNrKTsKIAogCQlmb3IgKHNzID0gMDsgc3MgPCBpbmZvLT5z c2V1Lm1heF9zdWJzbGljZXM7IHNzKyspIHsKIAkJCXVuc2lnbmVkIGludCBldV9jbnQ7CkBAIC00 MTE2LDE4ICs0MTE5LDIyIEBAIHN0YXRpYyB2b2lkIGdlbjlfc3NldV9kZXZpY2Vfc3RhdHVzKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJc3NldS0+c2xpY2VfbWFzayB8PSBC SVQocyk7CiAKIAkJaWYgKElTX0dFTjlfQkMoZGV2X3ByaXYpKQotCQkJc3NldS0+c3Vic2xpY2Vf bWFza1tzXSA9Ci0JCQkJUlVOVElNRV9JTkZPKGRldl9wcml2KS0+c3NldS5zdWJzbGljZV9tYXNr W3NdOworCQkJc3NldV9jb3B5X3N1YnNsaWNlcygmaW5mby0+c3NldSwgcywKKwkJCQkJICAgIHNz ZXUtPnN1YnNsaWNlX21hc2ssCisJCQkJCSAgICBpbmZvLT5zc2V1LnN1YnNsaWNlX21hc2spOwog CiAJCWZvciAoc3MgPSAwOyBzcyA8IGluZm8tPnNzZXUubWF4X3N1YnNsaWNlczsgc3MrKykgewog CQkJdW5zaWduZWQgaW50IGV1X2NudDsKKwkJCXU4IHNzX2lkeCA9IHMgKiBpbmZvLT5zc2V1LnNz X3N0cmlkZSArCisJCQkJICAgIHNzIC8gQklUU19QRVJfQllURTsKIAogCQkJaWYgKElTX0dFTjlf TFAoZGV2X3ByaXYpKSB7CiAJCQkJaWYgKCEoc19yZWdbc10gJiAoR0VOOV9QR0NUTF9TU19BQ0so c3MpKSkpCiAJCQkJCS8qIHNraXAgZGlzYWJsZWQgc3Vic2xpY2UgKi8KIAkJCQkJY29udGludWU7 CiAKLQkJCQlzc2V1LT5zdWJzbGljZV9tYXNrW3NdIHw9IEJJVChzcyk7CisJCQkJc3NldS0+c3Vi c2xpY2VfbWFza1tzc19pZHhdIHw9CisJCQkJCUJJVChzcyAlIEJJVFNfUEVSX0JZVEUpOwogCQkJ fQogCiAJCQlldV9jbnQgPSAyICogaHdlaWdodDMyKGV1X3JlZ1syKnMgKyBzcy8yXSAmCkBAIC00 MTQ0LDI1ICs0MTUxLDI0IEBAIHN0YXRpYyB2b2lkIGdlbjlfc3NldV9kZXZpY2Vfc3RhdHVzKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIHN0YXRpYyB2b2lkIGJyb2Fkd2VsbF9z c2V1X2RldmljZV9zdGF0dXMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQkJ CQkgc3RydWN0IHNzZXVfZGV2X2luZm8gKnNzZXUpCiB7CisJc3RydWN0IGludGVsX3J1bnRpbWVf aW5mbyAqaW5mbyA9IFJVTlRJTUVfSU5GTyhkZXZfcHJpdik7CiAJdTMyIHNsaWNlX2luZm8gPSBJ OTE1X1JFQUQoR0VOOF9HVF9TTElDRV9JTkZPKTsKIAlpbnQgczsKIAogCXNzZXUtPnNsaWNlX21h c2sgPSBzbGljZV9pbmZvICYgR0VOOF9MU0xJQ0VTVEFUX01BU0s7CiAKIAlpZiAoc3NldS0+c2xp Y2VfbWFzaykgewotCQlzc2V1LT5ldV9wZXJfc3Vic2xpY2UgPQotCQkJUlVOVElNRV9JTkZPKGRl dl9wcml2KS0+c3NldS5ldV9wZXJfc3Vic2xpY2U7Ci0JCWZvciAocyA9IDA7IHMgPCBmbHMoc3Nl dS0+c2xpY2VfbWFzayk7IHMrKykgewotCQkJc3NldS0+c3Vic2xpY2VfbWFza1tzXSA9Ci0JCQkJ UlVOVElNRV9JTkZPKGRldl9wcml2KS0+c3NldS5zdWJzbGljZV9tYXNrW3NdOwotCQl9CisJCXNz ZXUtPmV1X3Blcl9zdWJzbGljZSA9IGluZm8tPnNzZXUuZXVfcGVyX3N1YnNsaWNlOworCQlmb3Ig KHMgPSAwOyBzIDwgZmxzKHNzZXUtPnNsaWNlX21hc2spOyBzKyspCisJCQlzc2V1X2NvcHlfc3Vi c2xpY2VzKCZpbmZvLT5zc2V1LCBzLAorCQkJCQkgICAgc3NldS0+c3Vic2xpY2VfbWFzaywKKwkJ CQkJICAgIGluZm8tPnNzZXUuc3Vic2xpY2VfbWFzayk7CiAJCXNzZXUtPmV1X3RvdGFsID0gc3Nl dS0+ZXVfcGVyX3N1YnNsaWNlICoKIAkJCQkgc3NldV9zdWJzbGljZV90b3RhbChzc2V1KTsKIAog CQkvKiBzdWJ0cmFjdCBmdXNlZCBvZmYgRVUocykgZnJvbSBlbmFibGVkIHNsaWNlKHMpICovCiAJ CWZvciAocyA9IDA7IHMgPCBmbHMoc3NldS0+c2xpY2VfbWFzayk7IHMrKykgewotCQkJdTggc3Vi c2xpY2VfN2V1ID0KLQkJCQlSVU5USU1FX0lORk8oZGV2X3ByaXYpLT5zc2V1LnN1YnNsaWNlXzdl dVtzXTsKKwkJCXU4IHN1YnNsaWNlXzdldSA9IGluZm8tPnNzZXUuc3Vic2xpY2VfN2V1W3NdOwog CiAJCQlzc2V1LT5ldV90b3RhbCAtPSBod2VpZ2h0OChzdWJzbGljZV83ZXUpOwogCQl9CkBAIC00 MjA5LDYgKzQyMTUsNyBAQCBzdGF0aWMgdm9pZCBpOTE1X3ByaW50X3NzZXVfaW5mbyhzdHJ1Y3Qg c2VxX2ZpbGUgKm0sIGJvb2wgaXNfYXZhaWxhYmxlX2luZm8sCiBzdGF0aWMgaW50IGk5MTVfc3Nl dV9zdGF0dXMoc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCiB7CiAJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gbm9kZV90b19pOTE1KG0tPnByaXZhdGUpOworCWNv bnN0IHN0cnVjdCBpbnRlbF9ydW50aW1lX2luZm8gKmluZm8gPSBSVU5USU1FX0lORk8oZGV2X3By aXYpOwogCXN0cnVjdCBzc2V1X2Rldl9pbmZvIHNzZXU7CiAJaW50ZWxfd2FrZXJlZl90IHdha2Vy ZWY7CiAKQEAgLTQyMTYsMTQgKzQyMjMsMTIgQEAgc3RhdGljIGludCBpOTE1X3NzZXVfc3RhdHVz KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQogCQlyZXR1cm4gLUVOT0RFVjsKIAog CXNlcV9wdXRzKG0sICJTU0VVIERldmljZSBJbmZvXG4iKTsKLQlpOTE1X3ByaW50X3NzZXVfaW5m byhtLCB0cnVlLCAmUlVOVElNRV9JTkZPKGRldl9wcml2KS0+c3NldSk7CisJaTkxNV9wcmludF9z c2V1X2luZm8obSwgdHJ1ZSwgJmluZm8tPnNzZXUpOwogCiAJc2VxX3B1dHMobSwgIlNTRVUgRGV2 aWNlIFN0YXR1c1xuIik7CiAJbWVtc2V0KCZzc2V1LCAwLCBzaXplb2Yoc3NldSkpOwotCXNzZXUu bWF4X3NsaWNlcyA9IFJVTlRJTUVfSU5GTyhkZXZfcHJpdiktPnNzZXUubWF4X3NsaWNlczsKLQlz c2V1Lm1heF9zdWJzbGljZXMgPSBSVU5USU1FX0lORk8oZGV2X3ByaXYpLT5zc2V1Lm1heF9zdWJz bGljZXM7Ci0Jc3NldS5tYXhfZXVzX3Blcl9zdWJzbGljZSA9Ci0JCVJVTlRJTUVfSU5GTyhkZXZf cHJpdiktPnNzZXUubWF4X2V1c19wZXJfc3Vic2xpY2U7CisJc2V0X3NzZXVfaW5mbygmc3NldSwg aW5mby0+c3NldS5tYXhfc2xpY2VzLCBpbmZvLT5zc2V1Lm1heF9zdWJzbGljZXMsCisJCSAgICAg IGluZm8tPnNzZXUubWF4X2V1c19wZXJfc3Vic2xpY2UpOwogCiAJd2l0aF9pbnRlbF9ydW50aW1l X3BtKGRldl9wcml2LCB3YWtlcmVmKSB7CiAJCWlmIChJU19DSEVSUllWSUVXKGRldl9wcml2KSkK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5jCmluZGV4IGI2Y2U3NTgwZDQxNC4uN2E5NWMyNjJhYTE0IDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKQEAgLTMyMyw3ICszMjMsNyBAQCBzdGF0aWMgaW50IGk5 MTVfZ2V0cGFyYW1faW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAlz dHJ1Y3QgcGNpX2RldiAqcGRldiA9IGRldl9wcml2LT5kcm0ucGRldjsKIAlzdHJ1Y3Qgc3NldV9k ZXZfaW5mbyAqc3NldSA9ICZSVU5USU1FX0lORk8oZGV2X3ByaXYpLT5zc2V1OwogCWRybV9pOTE1 X2dldHBhcmFtX3QgKnBhcmFtID0gZGF0YTsKLQlpbnQgdmFsdWU7CisJaW50IHZhbHVlID0gMDsK IAogCXN3aXRjaCAocGFyYW0tPnBhcmFtKSB7CiAJY2FzZSBJOTE1X1BBUkFNX0lSUV9BQ1RJVkU6 CkBAIC00NTIsNyArNDUyLDkgQEAgc3RhdGljIGludCBpOTE1X2dldHBhcmFtX2lvY3RsKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJCQlyZXR1cm4gLUVOT0RFVjsKIAkJYnJl YWs7CiAJY2FzZSBJOTE1X1BBUkFNX1NVQlNMSUNFX01BU0s6Ci0JCXZhbHVlID0gc3NldS0+c3Vi c2xpY2VfbWFza1swXTsKKwkJLyogT25seSBjb3B5IGJpdHMgZnJvbSB0aGUgZmlyc3Qgc3Vic2xp Y2UgKi8KKwkJbWVtY3B5KCZ2YWx1ZSwgc3NldS0+c3Vic2xpY2VfbWFzaywKKwkJICAgICAgIG1p bihzc2V1LT5zc19zdHJpZGUsICh1OClzaXplb2YodmFsdWUpKSk7CiAJCWlmICghdmFsdWUpCiAJ CQlyZXR1cm4gLUVOT0RFVjsKIAkJYnJlYWs7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dwdV9lcnJvci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJy b3IuYwppbmRleCBmNTFmZjY4M2RkMmUuLjlkYTQxMThhZDQzYSAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dwdV9lcnJvci5jCkBAIC00MDUsNiArNDA1LDcgQEAgc3RhdGljIHZvaWQgcHJpbnRf ZXJyb3JfYnVmZmVycyhzdHJ1Y3QgZHJtX2k5MTVfZXJyb3Jfc3RhdGVfYnVmICptLAogc3RhdGlj IHZvaWQgZXJyb3JfcHJpbnRfaW5zdGRvbmUoc3RydWN0IGRybV9pOTE1X2Vycm9yX3N0YXRlX2J1 ZiAqbSwKIAkJCQkgY29uc3Qgc3RydWN0IGRybV9pOTE1X2Vycm9yX2VuZ2luZSAqZWUpCiB7CisJ c3RydWN0IHNzZXVfZGV2X2luZm8gKnNzZXUgPSAmUlVOVElNRV9JTkZPKG0tPmk5MTUpLT5zc2V1 OwogCWludCBzbGljZTsKIAlpbnQgc3Vic2xpY2U7CiAKQEAgLTQyMCwxMiArNDIxLDEyIEBAIHN0 YXRpYyB2b2lkIGVycm9yX3ByaW50X2luc3Rkb25lKHN0cnVjdCBkcm1faTkxNV9lcnJvcl9zdGF0 ZV9idWYgKm0sCiAJaWYgKElOVEVMX0dFTihtLT5pOTE1KSA8PSA2KQogCQlyZXR1cm47CiAKLQlm b3JfZWFjaF9pbnN0ZG9uZV9zbGljZV9zdWJzbGljZShtLT5pOTE1LCBzbGljZSwgc3Vic2xpY2Up CisJZm9yX2VhY2hfaW5zdGRvbmVfc2xpY2Vfc3Vic2xpY2UobS0+aTkxNSwgc3NldSwgc2xpY2Us IHN1YnNsaWNlKQogCQllcnJfcHJpbnRmKG0sICIgIFNBTVBMRVJfSU5TVERPTkVbJWRdWyVkXTog MHglMDh4XG4iLAogCQkJICAgc2xpY2UsIHN1YnNsaWNlLAogCQkJICAgZWUtPmluc3Rkb25lLnNh bXBsZXJbc2xpY2VdW3N1YnNsaWNlXSk7CiAKLQlmb3JfZWFjaF9pbnN0ZG9uZV9zbGljZV9zdWJz bGljZShtLT5pOTE1LCBzbGljZSwgc3Vic2xpY2UpCisJZm9yX2VhY2hfaW5zdGRvbmVfc2xpY2Vf c3Vic2xpY2UobS0+aTkxNSwgc3NldSwgc2xpY2UsIHN1YnNsaWNlKQogCQllcnJfcHJpbnRmKG0s ICIgIFJPV19JTlNURE9ORVslZF1bJWRdOiAweCUwOHhcbiIsCiAJCQkgICBzbGljZSwgc3Vic2xp Y2UsCiAJCQkgICBlZS0+aW5zdGRvbmUucm93W3NsaWNlXVtzdWJzbGljZV0pOwpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9xdWVyeS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9xdWVyeS5jCmluZGV4IDdjMTcwOGMyMjgxMS4uMDAwZGNiMTQ1Y2UwIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3F1ZXJ5LmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9xdWVyeS5jCkBAIC0zNyw4ICszNyw2IEBAIHN0YXRpYyBpbnQgcXVlcnlf dG9wb2xvZ3lfaW5mbyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJY29uc3Qg c3RydWN0IHNzZXVfZGV2X2luZm8gKnNzZXUgPSAmUlVOVElNRV9JTkZPKGRldl9wcml2KS0+c3Nl dTsKIAlzdHJ1Y3QgZHJtX2k5MTVfcXVlcnlfdG9wb2xvZ3lfaW5mbyB0b3BvOwogCXUzMiBzbGlj ZV9sZW5ndGgsIHN1YnNsaWNlX2xlbmd0aCwgZXVfbGVuZ3RoLCB0b3RhbF9sZW5ndGg7Ci0JdTgg c3Vic2xpY2Vfc3RyaWRlID0gR0VOX1NTRVVfU1RSSURFKHNzZXUtPm1heF9zdWJzbGljZXMpOwot CXU4IGV1X3N0cmlkZSA9IEdFTl9TU0VVX1NUUklERShzc2V1LT5tYXhfZXVzX3Blcl9zdWJzbGlj ZSk7CiAJaW50IHJldDsKIAogCWlmIChxdWVyeV9pdGVtLT5mbGFncyAhPSAwKQpAQCAtNTAsOCAr NDgsOCBAQCBzdGF0aWMgaW50IHF1ZXJ5X3RvcG9sb2d5X2luZm8oc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LAogCUJVSUxEX0JVR19PTihzaXplb2YodTgpICE9IHNpemVvZihzc2V1 LT5zbGljZV9tYXNrKSk7CiAKIAlzbGljZV9sZW5ndGggPSBzaXplb2Yoc3NldS0+c2xpY2VfbWFz ayk7Ci0Jc3Vic2xpY2VfbGVuZ3RoID0gc3NldS0+bWF4X3NsaWNlcyAqIHN1YnNsaWNlX3N0cmlk ZTsKLQlldV9sZW5ndGggPSBzc2V1LT5tYXhfc2xpY2VzICogc3NldS0+bWF4X3N1YnNsaWNlcyAq IGV1X3N0cmlkZTsKKwlzdWJzbGljZV9sZW5ndGggPSBzc2V1LT5tYXhfc2xpY2VzICogc3NldS0+ c3Nfc3RyaWRlOworCWV1X2xlbmd0aCA9IHNzZXUtPm1heF9zbGljZXMgKiBzc2V1LT5tYXhfc3Vi c2xpY2VzICogc3NldS0+ZXVfc3RyaWRlOwogCXRvdGFsX2xlbmd0aCA9IHNpemVvZih0b3BvKSAr IHNsaWNlX2xlbmd0aCArIHN1YnNsaWNlX2xlbmd0aCArCiAJCSAgICAgICBldV9sZW5ndGg7CiAK QEAgLTY5LDkgKzY3LDkgQEAgc3RhdGljIGludCBxdWVyeV90b3BvbG9neV9pbmZvKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAl0b3BvLm1heF9ldXNfcGVyX3N1YnNsaWNlID0g c3NldS0+bWF4X2V1c19wZXJfc3Vic2xpY2U7CiAKIAl0b3BvLnN1YnNsaWNlX29mZnNldCA9IHNs aWNlX2xlbmd0aDsKLQl0b3BvLnN1YnNsaWNlX3N0cmlkZSA9IHN1YnNsaWNlX3N0cmlkZTsKKwl0 b3BvLnN1YnNsaWNlX3N0cmlkZSA9IHNzZXUtPnNzX3N0cmlkZTsKIAl0b3BvLmV1X29mZnNldCA9 IHNsaWNlX2xlbmd0aCArIHN1YnNsaWNlX2xlbmd0aDsKLQl0b3BvLmV1X3N0cmlkZSA9IGV1X3N0 cmlkZTsKKwl0b3BvLmV1X3N0cmlkZSA9IHNzZXUtPmV1X3N0cmlkZTsKIAogCWlmIChfX2NvcHlf dG9fdXNlcih1NjRfdG9fdXNlcl9wdHIocXVlcnlfaXRlbS0+ZGF0YV9wdHIpLAogCQkJICAgJnRv cG8sIHNpemVvZih0b3BvKSkpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kZXZpY2VfaW5mby5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGV2aWNlX2luZm8u YwppbmRleCA1NTljZjBkMDYyOGUuLjFjYzcyYmViODZlZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZGV2aWNlX2luZm8uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kZXZpY2VfaW5mby5jCkBAIC04NCwxNyArODQsNDIgQEAgdm9pZCBpbnRlbF9kZXZp Y2VfaW5mb19kdW1wX2ZsYWdzKGNvbnN0IHN0cnVjdCBpbnRlbF9kZXZpY2VfaW5mbyAqaW5mbywK ICN1bmRlZiBQUklOVF9GTEFHCiB9CiAKKyNkZWZpbmUgU1NfU1RSX01BWF9TSVpFIChHRU5fTUFY X1NVQlNMSUNFX1NUUklERSAqIDIpCisKK3N0YXRpYyB1OCAqCitzdWJzbGljZV9wZXJfc2xpY2Vf c3RyKHU4ICpidWYsIGNvbnN0IHN0cnVjdCBzc2V1X2Rldl9pbmZvICpzc2V1LCB1OCBzbGljZSkK K3sKKwlpbnQgaTsKKwl1OCBzc19vZmZzZXQgPSBzbGljZSAqIHNzZXUtPnNzX3N0cmlkZTsKKwor CUdFTV9CVUdfT04oc2xpY2UgPj0gc3NldS0+bWF4X3NsaWNlcyk7CisKKwltZW1zZXQoYnVmLCAw LCBTU19TVFJfTUFYX1NJWkUpOworCisJLyoKKwkgKiBQcmludCBzdWJzbGljZSBpbmZvcm1hdGlv biBpbiByZXZlcnNlIG9yZGVyIHRvIG1hdGNoCisJICogdXNlcnNwYWNlIGV4cGVjdGF0aW9ucy4K KwkgKi8KKwlmb3IgKGkgPSAwOyBpIDwgc3NldS0+c3Nfc3RyaWRlOyBpKyspCisJCXNwcmludGYo JmJ1ZltpICogMl0sICIlMDJ4IiwKKwkJCXNzZXUtPnN1YnNsaWNlX21hc2tbc3Nfb2Zmc2V0ICsg c3NldS0+c3Nfc3RyaWRlIC0KKwkJCQkJICAgIChpICsgMSldKTsKKworCXJldHVybiBidWY7Cit9 CisKIHN0YXRpYyB2b2lkIHNzZXVfZHVtcChjb25zdCBzdHJ1Y3Qgc3NldV9kZXZfaW5mbyAqc3Nl dSwgc3RydWN0IGRybV9wcmludGVyICpwKQogewogCWludCBzOworCXU4IGJ1ZltTU19TVFJfTUFY X1NJWkVdOwogCiAJZHJtX3ByaW50ZihwLCAic2xpY2UgdG90YWw6ICV1LCBtYXNrPSUwNHhcbiIs CiAJCSAgIGh3ZWlnaHQ4KHNzZXUtPnNsaWNlX21hc2spLCBzc2V1LT5zbGljZV9tYXNrKTsKIAlk cm1fcHJpbnRmKHAsICJzdWJzbGljZSB0b3RhbDogJXVcbiIsIHNzZXVfc3Vic2xpY2VfdG90YWwo c3NldSkpOwogCWZvciAocyA9IDA7IHMgPCBzc2V1LT5tYXhfc2xpY2VzOyBzKyspIHsKLQkJZHJt X3ByaW50ZihwLCAic2xpY2UlZDogJXUgc3Vic2xpY2VzLCBtYXNrPSUwNHhcbiIsCisJCWRybV9w cmludGYocCwgInNsaWNlJWQ6ICV1IHN1YnNsaWNlcywgbWFzaz0lc1xuIiwKIAkJCSAgIHMsIHNz ZXVfc3Vic2xpY2VzX3Blcl9zbGljZShzc2V1LCBzKSwKLQkJCSAgIHNzZXUtPnN1YnNsaWNlX21h c2tbc10pOworCQkJICAgc3Vic2xpY2VfcGVyX3NsaWNlX3N0cihidWYsIHNzZXUsIHMpKTsKIAl9 CiAJZHJtX3ByaW50ZihwLCAiRVUgdG90YWw6ICV1XG4iLCBzc2V1LT5ldV90b3RhbCk7CiAJZHJt X3ByaW50ZihwLCAiRVUgcGVyIHN1YnNsaWNlOiAldVxuIiwgc3NldS0+ZXVfcGVyX3N1YnNsaWNl KTsKQEAgLTExOCw2ICsxNDMsNyBAQCB2b2lkIGludGVsX2RldmljZV9pbmZvX2R1bXBfdG9wb2xv Z3koY29uc3Qgc3RydWN0IHNzZXVfZGV2X2luZm8gKnNzZXUsCiAJCQkJICAgICBzdHJ1Y3QgZHJt X3ByaW50ZXIgKnApCiB7CiAJaW50IHMsIHNzOworCXU4IGJ1ZltTU19TVFJfTUFYX1NJWkVdOwog CiAJaWYgKHNzZXUtPm1heF9zbGljZXMgPT0gMCkgewogCQlkcm1fcHJpbnRmKHAsICJVbmF2YWls YWJsZVxuIik7CkBAIC0xMjUsOSArMTUxLDkgQEAgdm9pZCBpbnRlbF9kZXZpY2VfaW5mb19kdW1w X3RvcG9sb2d5KGNvbnN0IHN0cnVjdCBzc2V1X2Rldl9pbmZvICpzc2V1LAogCX0KIAogCWZvciAo cyA9IDA7IHMgPCBzc2V1LT5tYXhfc2xpY2VzOyBzKyspIHsKLQkJZHJtX3ByaW50ZihwLCAic2xp Y2UlZDogJXUgc3Vic2xpY2UocykgKDB4JWhoeCk6XG4iLAorCQlkcm1fcHJpbnRmKHAsICJzbGlj ZSVkOiAldSBzdWJzbGljZShzKSAoMHglcyk6XG4iLAogCQkJICAgcywgc3NldV9zdWJzbGljZXNf cGVyX3NsaWNlKHNzZXUsIHMpLAotCQkJICAgc3NldS0+c3Vic2xpY2VfbWFza1tzXSk7CisJCQkg ICBzdWJzbGljZV9wZXJfc2xpY2Vfc3RyKGJ1Ziwgc3NldSwgcykpOwogCiAJCWZvciAoc3MgPSAw OyBzcyA8IHNzZXUtPm1heF9zdWJzbGljZXM7IHNzKyspIHsKIAkJCXUxNiBlbmFibGVkX2V1cyA9 IHNzZXVfZ2V0X2V1cyhzc2V1LCBzLCBzcyk7CkBAIC0xNTYsMTUgKzE4MiwxMCBAQCBzdGF0aWMg dm9pZCBnZW4xMV9zc2V1X2luZm9faW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCiAJdTggZXVfZW47CiAJaW50IHM7CiAKLQlpZiAoSVNfRUxLSEFSVExBS0UoZGV2X3ByaXYp KSB7Ci0JCXNzZXUtPm1heF9zbGljZXMgPSAxOwotCQlzc2V1LT5tYXhfc3Vic2xpY2VzID0gNDsK LQkJc3NldS0+bWF4X2V1c19wZXJfc3Vic2xpY2UgPSA4OwotCX0gZWxzZSB7Ci0JCXNzZXUtPm1h eF9zbGljZXMgPSAxOwotCQlzc2V1LT5tYXhfc3Vic2xpY2VzID0gODsKLQkJc3NldS0+bWF4X2V1 c19wZXJfc3Vic2xpY2UgPSA4OwotCX0KKwlpZiAoSVNfRUxLSEFSVExBS0UoZGV2X3ByaXYpKQor CQlzZXRfc3NldV9pbmZvKHNzZXUsIDEsIDQsIDgpOworCWVsc2UKKwkJc2V0X3NzZXVfaW5mbyhz c2V1LCAxLCA4LCA4KTsKIAogCXNfZW4gPSBJOTE1X1JFQUQoR0VOMTFfR1RfU0xJQ0VfRU5BQkxF KSAmIEdFTjExX0dUX1NfRU5BX01BU0s7CiAJc3NfZW4gPSB+STkxNV9SRUFEKEdFTjExX0dUX1NV QlNMSUNFX0RJU0FCTEUpOwpAQCAtMTc3LDkgKzE5OCwxMSBAQCBzdGF0aWMgdm9pZCBnZW4xMV9z c2V1X2luZm9faW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCQlpbnQg c3M7CiAKIAkJCXNzZXUtPnNsaWNlX21hc2sgfD0gQklUKHMpOwotCQkJc3NldS0+c3Vic2xpY2Vf bWFza1tzXSA9IChzc19lbiA+PiBzc19pZHgpICYgc3NfZW5fbWFzazsKKwkJCXNzZXUtPnN1YnNs aWNlX21hc2tbcyAqIHNzZXUtPnNzX3N0cmlkZV0gPQorCQkJCShzc19lbiA+PiBzc19pZHgpICYg c3NfZW5fbWFzazsKIAkJCWZvciAoc3MgPSAwOyBzcyA8IHNzZXUtPm1heF9zdWJzbGljZXM7IHNz KyspIHsKLQkJCQlpZiAoc3NldS0+c3Vic2xpY2VfbWFza1tzXSAmIEJJVChzcykpCisJCQkJaWYg KHNzZXUtPnN1YnNsaWNlX21hc2tbcyAqIHNzZXUtPnNzX3N0cmlkZV0gJgorCQkJCSAgICBCSVQo c3MpKQogCQkJCQlzc2V1X3NldF9ldXMoc3NldSwgcywgc3MsIGV1X2VuKTsKIAkJCX0KIAkJfQpA QCAtMjAxLDIzICsyMjQsMTAgQEAgc3RhdGljIHZvaWQgZ2VuMTBfc3NldV9pbmZvX2luaXQoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCWNvbnN0IGludCBldV9tYXNrID0gMHhm ZjsKIAl1MzIgc3Vic2xpY2VfbWFzaywgZXVfZW47CiAKKwlzZXRfc3NldV9pbmZvKHNzZXUsIDYs IDQsIDgpOworCiAJc3NldS0+c2xpY2VfbWFzayA9IChmdXNlMiAmIEdFTjEwX0YyX1NfRU5BX01B U0spID4+CiAJCQkgICAgR0VOMTBfRjJfU19FTkFfU0hJRlQ7Ci0Jc3NldS0+bWF4X3NsaWNlcyA9 IDY7Ci0Jc3NldS0+bWF4X3N1YnNsaWNlcyA9IDQ7Ci0Jc3NldS0+bWF4X2V1c19wZXJfc3Vic2xp Y2UgPSA4OwotCi0Jc3Vic2xpY2VfbWFzayA9ICgxIDw8IDQpIC0gMTsKLQlzdWJzbGljZV9tYXNr ICY9IH4oKGZ1c2UyICYgR0VOMTBfRjJfU1NfRElTX01BU0spID4+Ci0JCQkgICBHRU4xMF9GMl9T U19ESVNfU0hJRlQpOwotCi0JLyoKLQkgKiBTbGljZTAgY2FuIGhhdmUgdXAgdG8gMyBzdWJzbGlj ZXMsIGJ1dCB0aGVyZSBhcmUgb25seSAyIGluCi0JICogc2xpY2UxLzIuCi0JICovCi0Jc3NldS0+ c3Vic2xpY2VfbWFza1swXSA9IHN1YnNsaWNlX21hc2s7Ci0JZm9yIChzID0gMTsgcyA8IHNzZXUt Pm1heF9zbGljZXM7IHMrKykKLQkJc3NldS0+c3Vic2xpY2VfbWFza1tzXSA9IHN1YnNsaWNlX21h c2sgJiAweDM7CiAKIAkvKiBTbGljZTAgKi8KIAlldV9lbiA9IH5JOTE1X1JFQUQoR0VOOF9FVV9E SVNBQkxFMCk7CkBAIC0yNDIsMTQgKzI1MiwyMiBAQCBzdGF0aWMgdm9pZCBnZW4xMF9zc2V1X2lu Zm9faW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJZXVfZW4gPSB+STkx NV9SRUFEKEdFTjEwX0VVX0RJU0FCTEUzKTsKIAlzc2V1X3NldF9ldXMoc3NldSwgNSwgMSwgZXVf ZW4gJiBldV9tYXNrKTsKIAotCS8qIERvIGEgc2Vjb25kIHBhc3Mgd2hlcmUgd2UgbWFyayB0aGUg c3Vic2xpY2VzIGRpc2FibGVkIGlmIGFsbCB0aGVpcgotCSAqIGV1cyBhcmUgb2ZmLgotCSAqLwor CXN1YnNsaWNlX21hc2sgPSAoMSA8PCA0KSAtIDE7CisJc3Vic2xpY2VfbWFzayAmPSB+KChmdXNl MiAmIEdFTjEwX0YyX1NTX0RJU19NQVNLKSA+PgorCQkJICAgR0VOMTBfRjJfU1NfRElTX1NISUZU KTsKKwogCWZvciAocyA9IDA7IHMgPCBzc2V1LT5tYXhfc2xpY2VzOyBzKyspIHsKIAkJZm9yIChz cyA9IDA7IHNzIDwgc3NldS0+bWF4X3N1YnNsaWNlczsgc3MrKykgewogCQkJaWYgKHNzZXVfZ2V0 X2V1cyhzc2V1LCBzLCBzcykgPT0gMCkKLQkJCQlzc2V1LT5zdWJzbGljZV9tYXNrW3NdICY9IH5C SVQoc3MpOworCQkJCXN1YnNsaWNlX21hc2sgJj0gfkJJVChzcyk7CiAJCX0KKworCQkvKgorCQkg KiBTbGljZTAgY2FuIGhhdmUgdXAgdG8gMyBzdWJzbGljZXMsIGJ1dCB0aGVyZSBhcmUgb25seSAy IGluCisJCSAqIHNsaWNlMS8yLgorCQkgKi8KKwkJc3NldV9zZXRfc3Vic2xpY2VzKHNzZXUsIHMs IHMgPT0gMCA/IHN1YnNsaWNlX21hc2sgOgorCQkJCQkJICAgICBzdWJzbGljZV9tYXNrICYgMHgz KTsKIAl9CiAKIAlzc2V1LT5ldV90b3RhbCA9IGNvbXB1dGVfZXVfdG90YWwoc3NldSk7CkBAIC0y NzQsMTMgKzI5MiwxMiBAQCBzdGF0aWMgdm9pZCBjaGVycnl2aWV3X3NzZXVfaW5mb19pbml0KHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKIAlzdHJ1Y3Qgc3NldV9kZXZfaW5m byAqc3NldSA9ICZSVU5USU1FX0lORk8oZGV2X3ByaXYpLT5zc2V1OwogCXUzMiBmdXNlOworCXU4 IHN1YnNsaWNlX21hc2s7CiAKIAlmdXNlID0gSTkxNV9SRUFEKENIVl9GVVNFX0dUKTsKIAogCXNz ZXUtPnNsaWNlX21hc2sgPSBCSVQoMCk7Ci0Jc3NldS0+bWF4X3NsaWNlcyA9IDE7Ci0Jc3NldS0+ bWF4X3N1YnNsaWNlcyA9IDI7Ci0Jc3NldS0+bWF4X2V1c19wZXJfc3Vic2xpY2UgPSA4OworCXNl dF9zc2V1X2luZm8oc3NldSwgMSwgMiwgOCk7CiAKIAlpZiAoIShmdXNlICYgQ0hWX0ZHVF9ESVNB QkxFX1NTMCkpIHsKIAkJdTggZGlzYWJsZWRfbWFzayA9CkBAIC0yODksNyArMzA2LDcgQEAgc3Rh dGljIHZvaWQgY2hlcnJ5dmlld19zc2V1X2luZm9faW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCiAJCQkoKChmdXNlICYgQ0hWX0ZHVF9FVV9ESVNfU1MwX1IxX01BU0spID4+ CiAJCQkgIENIVl9GR1RfRVVfRElTX1NTMF9SMV9TSElGVCkgPDwgNCk7CiAKLQkJc3NldS0+c3Vi c2xpY2VfbWFza1swXSB8PSBCSVQoMCk7CisJCXN1YnNsaWNlX21hc2sgfD0gQklUKDApOwogCQlz c2V1X3NldF9ldXMoc3NldSwgMCwgMCwgfmRpc2FibGVkX21hc2spOwogCX0KIApAQCAtMzAwLDEw ICszMTcsMTIgQEAgc3RhdGljIHZvaWQgY2hlcnJ5dmlld19zc2V1X2luZm9faW5pdChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCQkoKChmdXNlICYgQ0hWX0ZHVF9FVV9ESVNf U1MxX1IxX01BU0spID4+CiAJCQkgIENIVl9GR1RfRVVfRElTX1NTMV9SMV9TSElGVCkgPDwgNCk7 CiAKLQkJc3NldS0+c3Vic2xpY2VfbWFza1swXSB8PSBCSVQoMSk7CisJCXN1YnNsaWNlX21hc2sg fD0gQklUKDEpOwogCQlzc2V1X3NldF9ldXMoc3NldSwgMCwgMSwgfmRpc2FibGVkX21hc2spOwog CX0KIAorCXNzZXVfc2V0X3N1YnNsaWNlcyhzc2V1LCAwLCBzdWJzbGljZV9tYXNrKTsKKwogCXNz ZXUtPmV1X3RvdGFsID0gY29tcHV0ZV9ldV90b3RhbChzc2V1KTsKIAogCS8qCkBAIC0zMzUsOSAr MzU0LDggQEAgc3RhdGljIHZvaWQgZ2VuOV9zc2V1X2luZm9faW5pdChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCiAJc3NldS0+c2xpY2VfbWFzayA9IChmdXNlMiAmIEdFTjhfRjJf U19FTkFfTUFTSykgPj4gR0VOOF9GMl9TX0VOQV9TSElGVDsKIAogCS8qIEJYVCBoYXMgYSBzaW5n bGUgc2xpY2UgYW5kIGF0IG1vc3QgMyBzdWJzbGljZXMuICovCi0Jc3NldS0+bWF4X3NsaWNlcyA9 IElTX0dFTjlfTFAoZGV2X3ByaXYpID8gMSA6IDM7Ci0Jc3NldS0+bWF4X3N1YnNsaWNlcyA9IElT X0dFTjlfTFAoZGV2X3ByaXYpID8gMyA6IDQ7Ci0Jc3NldS0+bWF4X2V1c19wZXJfc3Vic2xpY2Ug PSA4OworCXNldF9zc2V1X2luZm8oc3NldSwgSVNfR0VOOV9MUChkZXZfcHJpdikgPyAxIDogMywK KwkJICAgICAgSVNfR0VOOV9MUChkZXZfcHJpdikgPyAzIDogNCwgOCk7CiAKIAkvKgogCSAqIFRo ZSBzdWJzbGljZSBkaXNhYmxlIGZpZWxkIGlzIGdsb2JhbCwgaS5lLiBpdCBhcHBsaWVzCkBAIC0z NTYsMTQgKzM3NCwxNiBAQCBzdGF0aWMgdm9pZCBnZW45X3NzZXVfaW5mb19pbml0KHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkJCS8qIHNraXAgZGlzYWJsZWQgc2xpY2UgKi8K IAkJCWNvbnRpbnVlOwogCi0JCXNzZXUtPnN1YnNsaWNlX21hc2tbc10gPSBzdWJzbGljZV9tYXNr OworCQlzc2V1X3NldF9zdWJzbGljZXMoc3NldSwgcywgc3Vic2xpY2VfbWFzayk7CiAKIAkJZXVf ZGlzYWJsZSA9IEk5MTVfUkVBRChHRU45X0VVX0RJU0FCTEUocykpOwogCQlmb3IgKHNzID0gMDsg c3MgPCBzc2V1LT5tYXhfc3Vic2xpY2VzOyBzcysrKSB7CiAJCQlpbnQgZXVfcGVyX3NzOwogCQkJ dTggZXVfZGlzYWJsZWRfbWFzazsKKwkJCXU4IHNzX2lkeCA9IHMgKiBzc2V1LT5zc19zdHJpZGUg KyBzcyAvIEJJVFNfUEVSX0JZVEU7CiAKLQkJCWlmICghKHNzZXUtPnN1YnNsaWNlX21hc2tbc10g JiBCSVQoc3MpKSkKKwkJCWlmICghKHNzZXUtPnN1YnNsaWNlX21hc2tbc3NfaWR4XSAmCisJCQkg ICAgICBCSVQoc3MgJSBCSVRTX1BFUl9CWVRFKSkpCiAJCQkJLyogc2tpcCBkaXNhYmxlZCBzdWJz bGljZSAqLwogCQkJCWNvbnRpbnVlOwogCkBAIC00MzUsOSArNDU1LDcgQEAgc3RhdGljIHZvaWQg YnJvYWR3ZWxsX3NzZXVfaW5mb19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKIAogCWZ1c2UyID0gSTkxNV9SRUFEKEdFTjhfRlVTRTIpOwogCXNzZXUtPnNsaWNlX21hc2sg PSAoZnVzZTIgJiBHRU44X0YyX1NfRU5BX01BU0spID4+IEdFTjhfRjJfU19FTkFfU0hJRlQ7Ci0J c3NldS0+bWF4X3NsaWNlcyA9IDM7Ci0Jc3NldS0+bWF4X3N1YnNsaWNlcyA9IDM7Ci0Jc3NldS0+ bWF4X2V1c19wZXJfc3Vic2xpY2UgPSA4OworCXNldF9zc2V1X2luZm8oc3NldSwgMywgMywgOCk7 CiAKIAkvKgogCSAqIFRoZSBzdWJzbGljZSBkaXNhYmxlIGZpZWxkIGlzIGdsb2JhbCwgaS5lLiBp dCBhcHBsaWVzCkBAIC00NjQsMTggKzQ4MiwyMSBAQCBzdGF0aWMgdm9pZCBicm9hZHdlbGxfc3Nl dV9pbmZvX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCQkJLyogc2tp cCBkaXNhYmxlZCBzbGljZSAqLwogCQkJY29udGludWU7CiAKLQkJc3NldS0+c3Vic2xpY2VfbWFz a1tzXSA9IHN1YnNsaWNlX21hc2s7CisJCXNzZXVfc2V0X3N1YnNsaWNlcyhzc2V1LCBzLCBzdWJz bGljZV9tYXNrKTsKIAogCQlmb3IgKHNzID0gMDsgc3MgPCBzc2V1LT5tYXhfc3Vic2xpY2VzOyBz cysrKSB7CiAJCQl1OCBldV9kaXNhYmxlZF9tYXNrOworCQkJdTggc3NfaWR4ID0gcyAqIHNzZXUt PnNzX3N0cmlkZSArIHNzIC8gQklUU19QRVJfQllURTsKIAkJCXUzMiBuX2Rpc2FibGVkOwogCi0J CQlpZiAoIShzc2V1LT5zdWJzbGljZV9tYXNrW3NdICYgQklUKHNzKSkpCisJCQlpZiAoIShzc2V1 LT5zdWJzbGljZV9tYXNrW3NzX2lkeF0gJgorCQkJICAgICAgQklUKHNzICUgQklUU19QRVJfQllU RSkpKQogCQkJCS8qIHNraXAgZGlzYWJsZWQgc3Vic2xpY2UgKi8KIAkJCQljb250aW51ZTsKIAog CQkJZXVfZGlzYWJsZWRfbWFzayA9Ci0JCQkJZXVfZGlzYWJsZVtzXSA+PiAoc3MgKiBzc2V1LT5t YXhfZXVzX3Blcl9zdWJzbGljZSk7CisJCQkJZXVfZGlzYWJsZVtzXSA+PgorCQkJCQkoc3MgKiBz c2V1LT5tYXhfZXVzX3Blcl9zdWJzbGljZSk7CiAKIAkJCXNzZXVfc2V0X2V1cyhzc2V1LCBzLCBz cywgfmV1X2Rpc2FibGVkX21hc2spOwogCkBAIC01MTQsNiArNTM1LDcgQEAgc3RhdGljIHZvaWQg aGFzd2VsbF9zc2V1X2luZm9faW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp CiAJc3RydWN0IHNzZXVfZGV2X2luZm8gKnNzZXUgPSAmUlVOVElNRV9JTkZPKGRldl9wcml2KS0+ c3NldTsKIAl1MzIgZnVzZTE7CiAJaW50IHMsIHNzOworCXUzMiBzdWJzbGljZV9tYXNrOwogCiAJ LyoKIAkgKiBUaGVyZSBpc24ndCBhIHJlZ2lzdGVyIHRvIHRlbGwgdXMgaG93IG1hbnkgc2xpY2Vz L3N1YnNsaWNlcy4gV2UKQEAgLTUyNSwyMiArNTQ3LDE4IEBAIHN0YXRpYyB2b2lkIGhhc3dlbGxf c3NldV9pbmZvX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCQkvKiBm YWxsIHRocm91Z2ggKi8KIAljYXNlIDE6CiAJCXNzZXUtPnNsaWNlX21hc2sgPSBCSVQoMCk7Ci0J CXNzZXUtPnN1YnNsaWNlX21hc2tbMF0gPSBCSVQoMCk7CisJCXN1YnNsaWNlX21hc2sgPSBCSVQo MCk7CiAJCWJyZWFrOwogCWNhc2UgMjoKIAkJc3NldS0+c2xpY2VfbWFzayA9IEJJVCgwKTsKLQkJ c3NldS0+c3Vic2xpY2VfbWFza1swXSA9IEJJVCgwKSB8IEJJVCgxKTsKKwkJc3Vic2xpY2VfbWFz ayA9IEJJVCgwKSB8IEJJVCgxKTsKIAkJYnJlYWs7CiAJY2FzZSAzOgogCQlzc2V1LT5zbGljZV9t YXNrID0gQklUKDApIHwgQklUKDEpOwotCQlzc2V1LT5zdWJzbGljZV9tYXNrWzBdID0gQklUKDAp IHwgQklUKDEpOwotCQlzc2V1LT5zdWJzbGljZV9tYXNrWzFdID0gQklUKDApIHwgQklUKDEpOwor CQlzdWJzbGljZV9tYXNrID0gQklUKDApIHwgQklUKDEpOwogCQlicmVhazsKIAl9CiAKLQlzc2V1 LT5tYXhfc2xpY2VzID0gaHdlaWdodDgoc3NldS0+c2xpY2VfbWFzayk7Ci0Jc3NldS0+bWF4X3N1 YnNsaWNlcyA9IGh3ZWlnaHQ4KHNzZXUtPnN1YnNsaWNlX21hc2tbMF0pOwotCiAJZnVzZTEgPSBJ OTE1X1JFQUQoSFNXX1BBVlBfRlVTRTEpOwogCXN3aXRjaCAoKGZ1c2UxICYgSFNXX0YxX0VVX0RJ U19NQVNLKSA+PiBIU1dfRjFfRVVfRElTX1NISUZUKSB7CiAJZGVmYXVsdDoKQEAgLTU1Nyw5ICs1 NzUsMTQgQEAgc3RhdGljIHZvaWQgaGFzd2VsbF9zc2V1X2luZm9faW5pdChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCXNzZXUtPmV1X3Blcl9zdWJzbGljZSA9IDY7CiAJCWJy ZWFrOwogCX0KLQlzc2V1LT5tYXhfZXVzX3Blcl9zdWJzbGljZSA9IHNzZXUtPmV1X3Blcl9zdWJz bGljZTsKKworCXNldF9zc2V1X2luZm8oc3NldSwgaHdlaWdodDgoc3NldS0+c2xpY2VfbWFzayks CisJCSAgICAgIGh3ZWlnaHQ4KHN1YnNsaWNlX21hc2spLAorCQkgICAgICBzc2V1LT5ldV9wZXJf c3Vic2xpY2UpOwogCiAJZm9yIChzID0gMDsgcyA8IHNzZXUtPm1heF9zbGljZXM7IHMrKykgewor CQlzc2V1X3NldF9zdWJzbGljZXMoc3NldSwgcywgc3Vic2xpY2VfbWFzayk7CisKIAkJZm9yIChz cyA9IDA7IHNzIDwgc3NldS0+bWF4X3N1YnNsaWNlczsgc3MrKykgewogCQkJc3NldV9zZXRfZXVz KHNzZXUsIHMsIHNzLAogCQkJCSAgICAgKDFVTCA8PCBzc2V1LT5ldV9wZXJfc3Vic2xpY2UpIC0g MSk7Ci0tIAoyLjIxLjAuNS5nYWViNTgyYTk4MwoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vaW50ZWwtZ2Z4