From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stuart Summers Subject: [PATCH 5/5] drm/i915: Expand subslice mask Date: Fri, 3 May 2019 14:30:20 -0700 Message-ID: <20190503213020.25628-6-stuart.summers@intel.com> References: <20190503213020.25628-1-stuart.summers@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3DE8C8982E for ; Fri, 3 May 2019 21:30:22 +0000 (UTC) In-Reply-To: <20190503213020.25628-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 byBhbmQgRGFuaWVsZQoKQ2M6IERhbmllbGUgQ2VyYW9sbyBTcHVyaW8gPGRhbmllbGUuY2VyYW9s b3NwdXJpb0BpbnRlbC5jb20+CkNjOiBMaW9uZWwgTGFuZHdlcmxpbiA8bGlvbmVsLmcubGFuZHdl cmxpbkBpbnRlbC5jb20+CkFja2VkLWJ5OiBMaW9uZWwgTGFuZHdlcmxpbiA8bGlvbmVsLmcubGFu ZHdlcmxpbkBpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IFN0dWFydCBTdW1tZXJzIDxzdHVhcnQu c3VtbWVyc0BpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5n aW5lX2NzLmMgICAgfCAgMjQgKystCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdp bmVfdHlwZXMuaCB8ICAzMCArKy0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9oYW5n Y2hlY2suYyAgICB8ICAgMyArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfc3NldS5j ICAgICAgICAgfCAgNDMgKysrKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3NzZXUu aCAgICAgICAgIHwgIDI4ICsrKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3dvcmth cm91bmRzLmMgIHwgICAyICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyAg ICAgICAgICB8ICA0MCArKy0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyAgICAg ICAgICAgICAgfCAgIDYgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMg ICAgICAgIHwgICA1ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3F1ZXJ5LmMgICAgICAg ICAgICB8ICAxMCArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGV2aWNlX2luZm8uYyAg ICAgfCAxNTUgKysrKysrKysrKy0tLS0tLS0tLQogMTEgZmlsZXMgY2hhbmdlZCwgMjI3IGluc2Vy dGlvbnMoKyksIDExOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVs X2VuZ2luZV9jcy5jCmluZGV4IDU5MDdhOTYxMzY0MS4uMjkwYmRhNWNjODJiIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYworKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYwpAQCAtOTA5LDEyICs5MDksMzAgQEAg Y29uc3QgY2hhciAqaTkxNV9jYWNoZV9sZXZlbF9zdHIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg Kmk5MTUsIGludCB0eXBlKQogCX0KIH0KIAorc3RhdGljIGlubGluZSB1MzIKK2ludGVsX3NzZXVf ZmxzX3N1YnNsaWNlKGNvbnN0IHN0cnVjdCBzc2V1X2Rldl9pbmZvICpzc2V1LCB1MzIgc2xpY2Up Cit7CisJdTMyIHN1YnNsaWNlOworCWludCBpOworCisJZm9yIChpID0gc3NldS0+c3Nfc3RyaWRl IC0gMTsgaSA+PSAwOyBpLS0pIHsKKwkJc3Vic2xpY2UgPSBmbHMoc3NldS0+c3Vic2xpY2VfbWFz a1tzbGljZSAqIHNzZXUtPnNzX3N0cmlkZSArCisJCQkJCQkgICBpXSk7CisJCWlmIChzdWJzbGlj ZSkgeworCQkJc3Vic2xpY2UgKz0gaSAqIEJJVFNfUEVSX0JZVEU7CisJCQlicmVhazsKKwkJfQor CX0KKworCXJldHVybiBzdWJzbGljZTsKK30KKwogdTMyIGludGVsX2NhbGN1bGF0ZV9tY3Jfc19z c19zZWxlY3Qoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogewogCWNvbnN0IHN0 cnVjdCBzc2V1X2Rldl9pbmZvICpzc2V1ID0gJlJVTlRJTUVfSU5GTyhkZXZfcHJpdiktPnNzZXU7 CiAJdTMyIG1jcl9zX3NzX3NlbGVjdDsKIAl1MzIgc2xpY2UgPSBmbHMoc3NldS0+c2xpY2VfbWFz ayk7Ci0JdTMyIHN1YnNsaWNlID0gZmxzKHNzZXUtPnN1YnNsaWNlX21hc2tbc2xpY2VdKTsKKwl1 MzIgc3Vic2xpY2UgPSBpbnRlbF9zc2V1X2Zsc19zdWJzbGljZShzc2V1LCBzbGljZSk7CiAKIAlp ZiAoSVNfR0VOKGRldl9wcml2LCAxMCkpCiAJCW1jcl9zX3NzX3NlbGVjdCA9IEdFTjhfTUNSX1NM SUNFKHNsaWNlKSB8CkBAIC05OTAsNiArMTAwOCw3IEBAIHZvaWQgaW50ZWxfZW5naW5lX2dldF9p bnN0ZG9uZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCiAJCQkgICAgICAgc3RydWN0 IGludGVsX2luc3Rkb25lICppbnN0ZG9uZSkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSBlbmdpbmUtPmk5MTU7CisJY29uc3Qgc3RydWN0IHNzZXVfZGV2X2luZm8gKnNz ZXUgPSAmUlVOVElNRV9JTkZPKGRldl9wcml2KS0+c3NldTsKIAlzdHJ1Y3QgaW50ZWxfdW5jb3Jl ICp1bmNvcmUgPSBlbmdpbmUtPnVuY29yZTsKIAl1MzIgbW1pb19iYXNlID0gZW5naW5lLT5tbWlv X2Jhc2U7CiAJaW50IHNsaWNlOwpAQCAtMTAwNyw3ICsxMDI2LDggQEAgdm9pZCBpbnRlbF9lbmdp bmVfZ2V0X2luc3Rkb25lKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKIAogCQlpbnN0 ZG9uZS0+c2xpY2VfY29tbW9uID0KIAkJCWludGVsX3VuY29yZV9yZWFkKHVuY29yZSwgR0VON19T Q19JTlNURE9ORSk7Ci0JCWZvcl9lYWNoX2luc3Rkb25lX3NsaWNlX3N1YnNsaWNlKGRldl9wcml2 LCBzbGljZSwgc3Vic2xpY2UpIHsKKwkJZm9yX2VhY2hfaW5zdGRvbmVfc2xpY2Vfc3Vic2xpY2Uo ZGV2X3ByaXYsIHNzZXUsIHNsaWNlLAorCQkJCQkJIHN1YnNsaWNlKSB7CiAJCQlpbnN0ZG9uZS0+ c2FtcGxlcltzbGljZV1bc3Vic2xpY2VdID0KIAkJCQlyZWFkX3N1YnNsaWNlX3JlZyhkZXZfcHJp diwgc2xpY2UsIHN1YnNsaWNlLAogCQkJCQkJICBHRU43X1NBTVBMRVJfSU5TVERPTkUpOwpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3R5cGVzLmggYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfdHlwZXMuaAppbmRleCBjMGFiMTFi MTJlMTQuLjU4MjM0MGI1NTE0NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv aW50ZWxfZW5naW5lX3R5cGVzLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxf ZW5naW5lX3R5cGVzLmgKQEAgLTUzNSwyMCArNTM1LDIwIEBAIGludGVsX2VuZ2luZV9uZWVkc19i cmVhZGNydW1iX3Rhc2tsZXQoY29uc3Qgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQog CXJldHVybiBlbmdpbmUtPmZsYWdzICYgSTkxNV9FTkdJTkVfTkVFRFNfQlJFQURDUlVNQl9UQVNL TEVUOwogfQogCi0jZGVmaW5lIGluc3Rkb25lX3NsaWNlX21hc2soZGV2X3ByaXZfXykgXAotCShJ U19HRU4oZGV2X3ByaXZfXywgNykgPyBcCi0JIDEgOiBSVU5USU1FX0lORk8oZGV2X3ByaXZfXykt PnNzZXUuc2xpY2VfbWFzaykKLQotI2RlZmluZSBpbnN0ZG9uZV9zdWJzbGljZV9tYXNrKGRldl9w cml2X18pIFwKLQkoSVNfR0VOKGRldl9wcml2X18sIDcpID8gXAotCSAxIDogUlVOVElNRV9JTkZP KGRldl9wcml2X18pLT5zc2V1LnN1YnNsaWNlX21hc2tbMF0pCi0KLSNkZWZpbmUgZm9yX2VhY2hf aW5zdGRvbmVfc2xpY2Vfc3Vic2xpY2UoZGV2X3ByaXZfXywgc2xpY2VfXywgc3Vic2xpY2VfXykg XAotCWZvciAoKHNsaWNlX18pID0gMCwgKHN1YnNsaWNlX18pID0gMDsgXAotCSAgICAgKHNsaWNl X18pIDwgSTkxNV9NQVhfU0xJQ0VTOyBcCi0JICAgICAoc3Vic2xpY2VfXykgPSAoKHN1YnNsaWNl X18pICsgMSkgPCBJOTE1X01BWF9TVUJTTElDRVMgPyAoc3Vic2xpY2VfXykgKyAxIDogMCwgXAot CSAgICAgICAoc2xpY2VfXykgKz0gKChzdWJzbGljZV9fKSA9PSAwKSkgXAotCQlmb3JfZWFjaF9p ZigoQklUKHNsaWNlX18pICYgaW5zdGRvbmVfc2xpY2VfbWFzayhkZXZfcHJpdl9fKSkgJiYgXAot CQkJICAgIChCSVQoc3Vic2xpY2VfXykgJiBpbnN0ZG9uZV9zdWJzbGljZV9tYXNrKGRldl9wcml2 X18pKSkKKyNkZWZpbmUgaW5zdGRvbmVfaGFzX3NsaWNlKGRldl9wcml2X19fLCBzc2V1X19fLCBz bGljZV9fXykgXAorCSgoSVNfR0VOKGRldl9wcml2X19fLCA3KSA/IDEgOiAoKHNzZXVfX18pLT5z bGljZV9tYXNrKSkgJiBcCisJQklUKHNsaWNlX19fKSkKKworI2RlZmluZSBpbnN0ZG9uZV9oYXNf c3Vic2xpY2UoZGV2X3ByaXZfXywgc3NldV9fLCBzbGljZV9fLCBzdWJzbGljZV9fKSBcCisJKElT X0dFTihkZXZfcHJpdl9fLCA3KSA/IDEgOiBcCisJIGludGVsX3NzZXVfaGFzX3N1YnNsaWNlKHNz ZXVfXywgc2xpY2VfXywgc3Vic2xpY2VfXykpCisKKyNkZWZpbmUgZm9yX2VhY2hfaW5zdGRvbmVf c2xpY2Vfc3Vic2xpY2UoZGV2X3ByaXZfLCBzc2V1Xywgc2xpY2VfLCBzdWJzbGljZV8pIFwKKwlm b3IgKChzbGljZV8pID0gMCwgKHN1YnNsaWNlXykgPSAwOyAoc2xpY2VfKSA8IEk5MTVfTUFYX1NM SUNFUzsgXAorCSAgICAgKHN1YnNsaWNlXykgPSAoKHN1YnNsaWNlXykgKyAxKSAlIEk5MTVfTUFY X1NVQlNMSUNFUywgXAorCSAgICAgKHNsaWNlXykgKz0gKChzdWJzbGljZV8pID09IDApKSBcCisJ CWZvcl9lYWNoX2lmKChpbnN0ZG9uZV9oYXNfc2xpY2UoZGV2X3ByaXZfLCBzc2V1Xywgc2xpY2Vf KSkgJiYgXAorCQkJICAgIChpbnN0ZG9uZV9oYXNfc3Vic2xpY2UoZGV2X3ByaXZfLCBzc2V1Xywg c2xpY2VfLCBcCisJCQkJCQkgICAgc3Vic2xpY2VfKSkpCiAKICNlbmRpZiAvKiBfX0lOVEVMX0VO R0lORV9UWVBFU19IX18gKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2lu dGVsX2hhbmdjaGVjay5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfaGFuZ2NoZWNr LmMKaW5kZXggNzIxYWI3NGEzODJmLi4xMGUwMzJjOWFiMTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L2ludGVsX2hhbmdjaGVjay5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L2ludGVsX2hhbmdjaGVjay5jCkBAIC01MSw2ICs1MSw3IEBAIHN0YXRpYyBib29sIGlu c3Rkb25lX3VuY2hhbmdlZCh1MzIgY3VycmVudF9pbnN0ZG9uZSwgdTMyICpvbGRfaW5zdGRvbmUp CiBzdGF0aWMgYm9vbCBzdWJ1bml0c19zdHVjayhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZW5naW5lLT5pOTE1 OworCWNvbnN0IHN0cnVjdCBzc2V1X2Rldl9pbmZvICpzc2V1ID0gJlJVTlRJTUVfSU5GTyhkZXZf cHJpdiktPnNzZXU7CiAJc3RydWN0IGludGVsX2luc3Rkb25lIGluc3Rkb25lOwogCXN0cnVjdCBp bnRlbF9pbnN0ZG9uZSAqYWNjdV9pbnN0ZG9uZSA9ICZlbmdpbmUtPmhhbmdjaGVjay5pbnN0ZG9u ZTsKIAlib29sIHN0dWNrOwpAQCAtNzIsNyArNzMsNyBAQCBzdGF0aWMgYm9vbCBzdWJ1bml0c19z dHVjayhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJc3R1Y2sgJj0gaW5zdGRvbmVf dW5jaGFuZ2VkKGluc3Rkb25lLnNsaWNlX2NvbW1vbiwKIAkJCQkgICAgJmFjY3VfaW5zdGRvbmUt PnNsaWNlX2NvbW1vbik7CiAKLQlmb3JfZWFjaF9pbnN0ZG9uZV9zbGljZV9zdWJzbGljZShkZXZf cHJpdiwgc2xpY2UsIHN1YnNsaWNlKSB7CisJZm9yX2VhY2hfaW5zdGRvbmVfc2xpY2Vfc3Vic2xp Y2UoZGV2X3ByaXYsIHNzZXUsIHNsaWNlLCBzdWJzbGljZSkgewogCQlzdHVjayAmPSBpbnN0ZG9u ZV91bmNoYW5nZWQoaW5zdGRvbmUuc2FtcGxlcltzbGljZV1bc3Vic2xpY2VdLAogCQkJCQkgICAg JmFjY3VfaW5zdGRvbmUtPnNhbXBsZXJbc2xpY2VdW3N1YnNsaWNlXSk7CiAJCXN0dWNrICY9IGlu c3Rkb25lX3VuY2hhbmdlZChpbnN0ZG9uZS5yb3dbc2xpY2VdW3N1YnNsaWNlXSwKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3NzZXUuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d0L2ludGVsX3NzZXUuYwppbmRleCBhMDc1NmYwMDZmNWYuLmE4Yjk4YjAyNjZiNyAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfc3NldS5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3NzZXUuYwpAQCAtOCw2ICs4LDE3IEBACiAjaW5j bHVkZSAiaW50ZWxfbHJjX3JlZy5oIgogI2luY2x1ZGUgImludGVsX3NzZXUuaCIKIAordm9pZCBp bnRlbF9zc2V1X3NldF9pbmZvKHN0cnVjdCBzc2V1X2Rldl9pbmZvICpzc2V1LCB1OCBtYXhfc2xp Y2VzLAorCQkJIHU4IG1heF9zdWJzbGljZXMsIHU4IG1heF9ldXNfcGVyX3N1YnNsaWNlKQorewor CXNzZXUtPm1heF9zbGljZXMgPSBtYXhfc2xpY2VzOworCXNzZXUtPm1heF9zdWJzbGljZXMgPSBt YXhfc3Vic2xpY2VzOworCXNzZXUtPm1heF9ldXNfcGVyX3N1YnNsaWNlID0gbWF4X2V1c19wZXJf c3Vic2xpY2U7CisKKwlzc2V1LT5zc19zdHJpZGUgPSBHRU5fU1NFVV9TVFJJREUoc3NldS0+bWF4 X3N1YnNsaWNlcyk7CisJc3NldS0+ZXVfc3RyaWRlID0gR0VOX1NTRVVfU1RSSURFKHNzZXUtPm1h eF9ldXNfcGVyX3N1YnNsaWNlKTsKK30KKwogdW5zaWduZWQgaW50CiBpbnRlbF9zc2V1X3N1YnNs aWNlX3RvdGFsKGNvbnN0IHN0cnVjdCBzc2V1X2Rldl9pbmZvICpzc2V1KQogewpAQCAtMTksMTAg KzMwLDQwIEBAIGludGVsX3NzZXVfc3Vic2xpY2VfdG90YWwoY29uc3Qgc3RydWN0IHNzZXVfZGV2 X2luZm8gKnNzZXUpCiAJcmV0dXJuIHRvdGFsOwogfQogCit2b2lkIGludGVsX3NzZXVfY29weV9z dWJzbGljZXMoY29uc3Qgc3RydWN0IHNzZXVfZGV2X2luZm8gKnNzZXUsIGludCBzbGljZSwKKwkJ CSAgICAgICB1OCAqdG9fbWFzaykKK3sKKwlpbnQgb2Zmc2V0ID0gc2xpY2UgKiBzc2V1LT5zc19z dHJpZGU7CisKKwltZW1jcHkoJnRvX21hc2tbb2Zmc2V0XSwgJnNzZXUtPnN1YnNsaWNlX21hc2tb b2Zmc2V0XSwgc3NldS0+c3Nfc3RyaWRlKTsKK30KKwordTMyICBpbnRlbF9zc2V1X2dldF9zdWJz bGljZXMoY29uc3Qgc3RydWN0IHNzZXVfZGV2X2luZm8gKnNzZXUsIHU4IHNsaWNlKQoreworCWlu dCBpLCBvZmZzZXQgPSBzbGljZSAqIHNzZXUtPnNzX3N0cmlkZTsKKwl1MzIgbWFzazsKKworCWZv ciAoaSA9IDA7IGkgPCBzc2V1LT5zc19zdHJpZGU7IGkrKykKKwkJbWFzayB8PSAodTMyKXNzZXUt PnN1YnNsaWNlX21hc2tbb2Zmc2V0ICsgaV0gPDwKKwkJCWkgKiBCSVRTX1BFUl9CWVRFOworCisJ cmV0dXJuIG1hc2s7Cit9CisKK3ZvaWQgaW50ZWxfc3NldV9zZXRfc3Vic2xpY2VzKHN0cnVjdCBz c2V1X2Rldl9pbmZvICpzc2V1LCBpbnQgc2xpY2UsCisJCQkgICAgICB1MzIgc3NfbWFzaykKK3sK KwlpbnQgaSwgb2Zmc2V0ID0gc2xpY2UgKiBzc2V1LT5zc19zdHJpZGU7CisKKwlmb3IgKGkgPSAw OyBpIDwgc3NldS0+c3Nfc3RyaWRlOyBpKyspCisJCXNzZXUtPnN1YnNsaWNlX21hc2tbb2Zmc2V0 ICsgaV0gPQorCQkJKHNzX21hc2sgPj4gKEJJVFNfUEVSX0JZVEUgKiBpKSkgJiAweGZmOworfQor CiB1bnNpZ25lZCBpbnQKIGludGVsX3NzZXVfc3Vic2xpY2VzX3Blcl9zbGljZShjb25zdCBzdHJ1 Y3Qgc3NldV9kZXZfaW5mbyAqc3NldSwgdTggc2xpY2UpCiB7Ci0JcmV0dXJuIGh3ZWlnaHQ4KHNz ZXUtPnN1YnNsaWNlX21hc2tbc2xpY2VdKTsKKwlyZXR1cm4gaHdlaWdodDMyKGludGVsX3NzZXVf Z2V0X3N1YnNsaWNlcyhzc2V1LCBzbGljZSkpOwogfQogCiB1MzIgaW50ZWxfc3NldV9tYWtlX3Jw Y3Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC9pbnRlbF9zc2V1LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRl bF9zc2V1LmgKaW5kZXggYjUwZDA0MDFhNGUyLi4zNjAyYWU1NGI5MzcgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3NzZXUuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC9pbnRlbF9zc2V1LmgKQEAgLTksMTYgKzksMTggQEAKIAogI2luY2x1ZGUgPGxpbnV4 L3R5cGVzLmg+CiAjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CisjaW5jbHVkZSA8bGludXgvc3Ry aW5nLmg+CiAKIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlOwogCiAjZGVmaW5lIEdFTl9NQVhfU0xJ Q0VTCQkoNikgLyogQ05MIHVwcGVyIGJvdW5kICovCiAjZGVmaW5lIEdFTl9NQVhfU1VCU0xJQ0VT CSg4KSAvKiBJQ0wgdXBwZXIgYm91bmQgKi8KICNkZWZpbmUgR0VOX1NTRVVfU1RSSURFKG1heF9l bnRyaWVzKSBESVZfUk9VTkRfVVAobWF4X2VudHJpZXMsIEJJVFNfUEVSX0JZVEUpCisjZGVmaW5l IEdFTl9NQVhfU1VCU0xJQ0VfU1RSSURFIEdFTl9TU0VVX1NUUklERShHRU5fTUFYX1NVQlNMSUNF UykKIAogc3RydWN0IHNzZXVfZGV2X2luZm8gewogCXU4IHNsaWNlX21hc2s7Ci0JdTggc3Vic2xp Y2VfbWFza1tHRU5fTUFYX1NMSUNFU107CisJdTggc3Vic2xpY2VfbWFza1tHRU5fTUFYX1NMSUNF UyAqIEdFTl9NQVhfU1VCU0xJQ0VfU1RSSURFXTsKIAl1MTYgZXVfdG90YWw7CiAJdTggZXVfcGVy X3N1YnNsaWNlOwogCXU4IG1pbl9ldV9pbl9wb29sOwpAQCAtMzMsNiArMzUsOSBAQCBzdHJ1Y3Qg c3NldV9kZXZfaW5mbyB7CiAJdTggbWF4X3N1YnNsaWNlczsKIAl1OCBtYXhfZXVzX3Blcl9zdWJz bGljZTsKIAorCXU4IHNzX3N0cmlkZTsKKwl1OCBldV9zdHJpZGU7CisKIAkvKiBXZSBkb24ndCBo YXZlIG1vcmUgdGhhbiA4IGV1cyBwZXIgc3Vic2xpY2UgYXQgdGhlIG1vbWVudCBhbmQgYXMgd2UK IAkgKiBzdG9yZSBldXMgZW5hYmxlZCB1c2luZyBiaXRzLCBubyBuZWVkIHRvIG11bHRpcGx5IGJ5 IGV1cyBwZXIKIAkgKiBzdWJzbGljZS4KQEAgLTYzLDEyICs2OCwzMyBAQCBpbnRlbF9zc2V1X2Zy b21fZGV2aWNlX2luZm8oY29uc3Qgc3RydWN0IHNzZXVfZGV2X2luZm8gKnNzZXUpCiAJcmV0dXJu IHZhbHVlOwogfQogCitzdGF0aWMgaW5saW5lIGJvb2wKK2ludGVsX3NzZXVfaGFzX3N1YnNsaWNl KGNvbnN0IHN0cnVjdCBzc2V1X2Rldl9pbmZvICpzc2V1LCBpbnQgc2xpY2UsCisJCQlpbnQgc3Vi c2xpY2UpCit7CisJdTggbWFzayA9IHNzZXUtPnN1YnNsaWNlX21hc2tbc2xpY2UgKiBzc2V1LT5z c19zdHJpZGUgKworCQkJCSAgICAgIHN1YnNsaWNlIC8gQklUU19QRVJfQllURV07CisKKwlyZXR1 cm4gbWFzayAmIEJJVChzdWJzbGljZSAlIEJJVFNfUEVSX0JZVEUpOworfQorCit2b2lkIGludGVs X3NzZXVfc2V0X2luZm8oc3RydWN0IHNzZXVfZGV2X2luZm8gKnNzZXUsIHU4IG1heF9zbGljZXMs CisJCQkgdTggbWF4X3N1YnNsaWNlcywgdTggbWF4X2V1c19wZXJfc3Vic2xpY2UpOworCiB1bnNp Z25lZCBpbnQKIGludGVsX3NzZXVfc3Vic2xpY2VfdG90YWwoY29uc3Qgc3RydWN0IHNzZXVfZGV2 X2luZm8gKnNzZXUpOwogCiB1bnNpZ25lZCBpbnQKIGludGVsX3NzZXVfc3Vic2xpY2VzX3Blcl9z bGljZShjb25zdCBzdHJ1Y3Qgc3NldV9kZXZfaW5mbyAqc3NldSwgdTggc2xpY2UpOwogCit2b2lk IGludGVsX3NzZXVfY29weV9zdWJzbGljZXMoY29uc3Qgc3RydWN0IHNzZXVfZGV2X2luZm8gKnNz ZXUsIGludCBzbGljZSwKKwkJCSAgICAgICB1OCAqdG9fbWFzayk7CisKK3UzMiAgaW50ZWxfc3Nl dV9nZXRfc3Vic2xpY2VzKGNvbnN0IHN0cnVjdCBzc2V1X2Rldl9pbmZvICpzc2V1LCB1OCBzbGlj ZSk7CisKK3ZvaWQgaW50ZWxfc3NldV9zZXRfc3Vic2xpY2VzKHN0cnVjdCBzc2V1X2Rldl9pbmZv ICpzc2V1LCBpbnQgc2xpY2UsCisJCQkgICAgICB1MzIgc3NfbWFzayk7CisKIHUzMiBpbnRlbF9z c2V1X21ha2VfcnBjcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKIAkJCSBjb25zdCBz dHJ1Y3QgaW50ZWxfc3NldSAqcmVxX3NzZXUpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC9pbnRlbF93b3JrYXJvdW5kcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv aW50ZWxfd29ya2Fyb3VuZHMuYwppbmRleCA0M2UyOTAzMDY1NTEuLjg0MzdmOWQ5MThlYyAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfd29ya2Fyb3VuZHMuYworKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF93b3JrYXJvdW5kcy5jCkBAIC03NjcsNyAr NzY3LDcgQEAgd2FfaW5pdF9tY3Ioc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIHN0cnVj dCBpOTE1X3dhX2xpc3QgKndhbCkKIAkJdTMyIHNsaWNlID0gZmxzKHNzZXUtPnNsaWNlX21hc2sp OwogCQl1MzIgZnVzZTMgPQogCQkJaW50ZWxfdW5jb3JlX3JlYWQoJmk5MTUtPnVuY29yZSwgR0VO MTBfTUlSUk9SX0ZVU0UzKTsKLQkJdTggc3NfbWFzayA9IHNzZXUtPnN1YnNsaWNlX21hc2tbc2xp Y2VdOworCQl1MzIgc3NfbWFzayA9IGludGVsX3NzZXVfZ2V0X3N1YnNsaWNlcyhzc2V1LCBzbGlj ZSk7CiAKIAkJdTggZW5hYmxlZF9tYXNrID0gKHNzX21hc2sgfCBzc19tYXNrID4+CiAJCQkJICAg R0VOMTBfTDNCQU5LX1BBSVJfQ09VTlQpICYgR0VOMTBfTDNCQU5LX01BU0s7CmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZGVidWdmcy5jCmluZGV4IGZjZTNjY2Q4N2Y3Ni4uMjJhYzJkYjk4ZGRlIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYworKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwpAQCAtMTI1OSw2ICsxMjU5LDcgQEAgc3RhdGlj IHZvaWQgaTkxNV9pbnN0ZG9uZV9pbmZvKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKIAkJCSAgICAgICBzdHJ1Y3Qgc2VxX2ZpbGUgKm0sCiAJCQkgICAgICAgc3RydWN0IGludGVs X2luc3Rkb25lICppbnN0ZG9uZSkKIHsKKwlzdHJ1Y3Qgc3NldV9kZXZfaW5mbyAqc3NldSA9ICZS VU5USU1FX0lORk8oZGV2X3ByaXYpLT5zc2V1OwogCWludCBzbGljZTsKIAlpbnQgc3Vic2xpY2U7 CiAKQEAgLTEyNzQsMTEgKzEyNzUsMTEgQEAgc3RhdGljIHZvaWQgaTkxNV9pbnN0ZG9uZV9pbmZv KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAlpZiAoSU5URUxfR0VOKGRldl9w cml2KSA8PSA2KQogCQlyZXR1cm47CiAKLQlmb3JfZWFjaF9pbnN0ZG9uZV9zbGljZV9zdWJzbGlj ZShkZXZfcHJpdiwgc2xpY2UsIHN1YnNsaWNlKQorCWZvcl9lYWNoX2luc3Rkb25lX3NsaWNlX3N1 YnNsaWNlKGRldl9wcml2LCBzc2V1LCBzbGljZSwgc3Vic2xpY2UpCiAJCXNlcV9wcmludGYobSwg Ilx0XHRTQU1QTEVSX0lOU1RET05FWyVkXVslZF06IDB4JTA4eFxuIiwKIAkJCSAgIHNsaWNlLCBz dWJzbGljZSwgaW5zdGRvbmUtPnNhbXBsZXJbc2xpY2VdW3N1YnNsaWNlXSk7CiAKLQlmb3JfZWFj aF9pbnN0ZG9uZV9zbGljZV9zdWJzbGljZShkZXZfcHJpdiwgc2xpY2UsIHN1YnNsaWNlKQorCWZv cl9lYWNoX2luc3Rkb25lX3NsaWNlX3N1YnNsaWNlKGRldl9wcml2LCBzc2V1LCBzbGljZSwgc3Vi c2xpY2UpCiAJCXNlcV9wcmludGYobSwgIlx0XHRST1dfSU5TVERPTkVbJWRdWyVkXTogMHglMDh4 XG4iLAogCQkJICAgc2xpY2UsIHN1YnNsaWNlLCBpbnN0ZG9uZS0+cm93W3NsaWNlXVtzdWJzbGlj ZV0pOwogfQpAQCAtNDA2OCw3ICs0MDY5LDcgQEAgc3RhdGljIHZvaWQgZ2VuMTBfc3NldV9kZXZp Y2Vfc3RhdHVzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJCWNvbnRpbnVl OwogCiAJCXNzZXUtPnNsaWNlX21hc2sgfD0gQklUKHMpOwotCQlzc2V1LT5zdWJzbGljZV9tYXNr W3NdID0gaW5mby0+c3NldS5zdWJzbGljZV9tYXNrW3NdOworCQlpbnRlbF9zc2V1X2NvcHlfc3Vi c2xpY2VzKCZpbmZvLT5zc2V1LCBzLCBzc2V1LT5zdWJzbGljZV9tYXNrKTsKIAogCQlmb3IgKHNz ID0gMDsgc3MgPCBpbmZvLT5zc2V1Lm1heF9zdWJzbGljZXM7IHNzKyspIHsKIAkJCXVuc2lnbmVk IGludCBldV9jbnQ7CkBAIC00MTE5LDE4ICs0MTIwLDIxIEBAIHN0YXRpYyB2b2lkIGdlbjlfc3Nl dV9kZXZpY2Vfc3RhdHVzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJc3Nl dS0+c2xpY2VfbWFzayB8PSBCSVQocyk7CiAKIAkJaWYgKElTX0dFTjlfQkMoZGV2X3ByaXYpKQot CQkJc3NldS0+c3Vic2xpY2VfbWFza1tzXSA9Ci0JCQkJUlVOVElNRV9JTkZPKGRldl9wcml2KS0+ c3NldS5zdWJzbGljZV9tYXNrW3NdOworCQkJaW50ZWxfc3NldV9jb3B5X3N1YnNsaWNlcygmaW5m by0+c3NldSwgcywKKwkJCQkJCSAgc3NldS0+c3Vic2xpY2VfbWFzayk7CiAKIAkJZm9yIChzcyA9 IDA7IHNzIDwgaW5mby0+c3NldS5tYXhfc3Vic2xpY2VzOyBzcysrKSB7CiAJCQl1bnNpZ25lZCBp bnQgZXVfY250OworCQkJdTggc3NfaWR4ID0gcyAqIGluZm8tPnNzZXUuc3Nfc3RyaWRlICsKKwkJ CQkgICAgc3MgLyBCSVRTX1BFUl9CWVRFOwogCiAJCQlpZiAoSVNfR0VOOV9MUChkZXZfcHJpdikp IHsKIAkJCQlpZiAoIShzX3JlZ1tzXSAmIChHRU45X1BHQ1RMX1NTX0FDSyhzcykpKSkKIAkJCQkJ Lyogc2tpcCBkaXNhYmxlZCBzdWJzbGljZSAqLwogCQkJCQljb250aW51ZTsKIAotCQkJCXNzZXUt PnN1YnNsaWNlX21hc2tbc10gfD0gQklUKHNzKTsKKwkJCQlzc2V1LT5zdWJzbGljZV9tYXNrW3Nz X2lkeF0gfD0KKwkJCQkJQklUKHNzICUgQklUU19QRVJfQllURSk7CiAJCQl9CiAKIAkJCWV1X2Nu dCA9IDIgKiBod2VpZ2h0MzIoZXVfcmVnWzIqcyArIHNzLzJdICYKQEAgLTQxNDcsMjUgKzQxNTEs MjMgQEAgc3RhdGljIHZvaWQgZ2VuOV9zc2V1X2RldmljZV9zdGF0dXMoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LAogc3RhdGljIHZvaWQgYnJvYWR3ZWxsX3NzZXVfZGV2aWNlX3N0 YXR1cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQkJCSBzdHJ1Y3Qgc3Nl dV9kZXZfaW5mbyAqc3NldSkKIHsKKwlzdHJ1Y3QgaW50ZWxfcnVudGltZV9pbmZvICppbmZvID0g UlVOVElNRV9JTkZPKGRldl9wcml2KTsKIAl1MzIgc2xpY2VfaW5mbyA9IEk5MTVfUkVBRChHRU44 X0dUX1NMSUNFX0lORk8pOwogCWludCBzOwogCiAJc3NldS0+c2xpY2VfbWFzayA9IHNsaWNlX2lu Zm8gJiBHRU44X0xTTElDRVNUQVRfTUFTSzsKIAogCWlmIChzc2V1LT5zbGljZV9tYXNrKSB7Ci0J CXNzZXUtPmV1X3Blcl9zdWJzbGljZSA9Ci0JCQlSVU5USU1FX0lORk8oZGV2X3ByaXYpLT5zc2V1 LmV1X3Blcl9zdWJzbGljZTsKLQkJZm9yIChzID0gMDsgcyA8IGZscyhzc2V1LT5zbGljZV9tYXNr KTsgcysrKSB7Ci0JCQlzc2V1LT5zdWJzbGljZV9tYXNrW3NdID0KLQkJCQlSVU5USU1FX0lORk8o ZGV2X3ByaXYpLT5zc2V1LnN1YnNsaWNlX21hc2tbc107Ci0JCX0KKwkJc3NldS0+ZXVfcGVyX3N1 YnNsaWNlID0gaW5mby0+c3NldS5ldV9wZXJfc3Vic2xpY2U7CisJCWZvciAocyA9IDA7IHMgPCBm bHMoc3NldS0+c2xpY2VfbWFzayk7IHMrKykKKwkJCWludGVsX3NzZXVfY29weV9zdWJzbGljZXMo JmluZm8tPnNzZXUsIHMsCisJCQkJCQkgIHNzZXUtPnN1YnNsaWNlX21hc2spOwogCQlzc2V1LT5l dV90b3RhbCA9IHNzZXUtPmV1X3Blcl9zdWJzbGljZSAqCiAJCQkJIGludGVsX3NzZXVfc3Vic2xp Y2VfdG90YWwoc3NldSk7CiAKIAkJLyogc3VidHJhY3QgZnVzZWQgb2ZmIEVVKHMpIGZyb20gZW5h YmxlZCBzbGljZShzKSAqLwogCQlmb3IgKHMgPSAwOyBzIDwgZmxzKHNzZXUtPnNsaWNlX21hc2sp OyBzKyspIHsKLQkJCXU4IHN1YnNsaWNlXzdldSA9Ci0JCQkJUlVOVElNRV9JTkZPKGRldl9wcml2 KS0+c3NldS5zdWJzbGljZV83ZXVbc107CisJCQl1OCBzdWJzbGljZV83ZXUgPSBpbmZvLT5zc2V1 LnN1YnNsaWNlXzdldVtzXTsKIAogCQkJc3NldS0+ZXVfdG90YWwgLT0gaHdlaWdodDgoc3Vic2xp Y2VfN2V1KTsKIAkJfQpAQCAtNDIxMiw2ICs0MjE0LDcgQEAgc3RhdGljIHZvaWQgaTkxNV9wcmlu dF9zc2V1X2luZm8oc3RydWN0IHNlcV9maWxlICptLCBib29sIGlzX2F2YWlsYWJsZV9pbmZvLAog c3RhdGljIGludCBpOTE1X3NzZXVfc3RhdHVzKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51 c2VkKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IG5vZGVfdG9faTkx NShtLT5wcml2YXRlKTsKKwljb25zdCBzdHJ1Y3QgaW50ZWxfcnVudGltZV9pbmZvICppbmZvID0g UlVOVElNRV9JTkZPKGRldl9wcml2KTsKIAlzdHJ1Y3Qgc3NldV9kZXZfaW5mbyBzc2V1OwogCWlu dGVsX3dha2VyZWZfdCB3YWtlcmVmOwogCkBAIC00MjE5LDE0ICs0MjIyLDEzIEBAIHN0YXRpYyBp bnQgaTkxNV9zc2V1X3N0YXR1cyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKIAkJ cmV0dXJuIC1FTk9ERVY7CiAKIAlzZXFfcHV0cyhtLCAiU1NFVSBEZXZpY2UgSW5mb1xuIik7Ci0J aTkxNV9wcmludF9zc2V1X2luZm8obSwgdHJ1ZSwgJlJVTlRJTUVfSU5GTyhkZXZfcHJpdiktPnNz ZXUpOworCWk5MTVfcHJpbnRfc3NldV9pbmZvKG0sIHRydWUsICZpbmZvLT5zc2V1KTsKIAogCXNl cV9wdXRzKG0sICJTU0VVIERldmljZSBTdGF0dXNcbiIpOwogCW1lbXNldCgmc3NldSwgMCwgc2l6 ZW9mKHNzZXUpKTsKLQlzc2V1Lm1heF9zbGljZXMgPSBSVU5USU1FX0lORk8oZGV2X3ByaXYpLT5z c2V1Lm1heF9zbGljZXM7Ci0Jc3NldS5tYXhfc3Vic2xpY2VzID0gUlVOVElNRV9JTkZPKGRldl9w cml2KS0+c3NldS5tYXhfc3Vic2xpY2VzOwotCXNzZXUubWF4X2V1c19wZXJfc3Vic2xpY2UgPQot CQlSVU5USU1FX0lORk8oZGV2X3ByaXYpLT5zc2V1Lm1heF9ldXNfcGVyX3N1YnNsaWNlOworCWlu dGVsX3NzZXVfc2V0X2luZm8oJnNzZXUsIGluZm8tPnNzZXUubWF4X3NsaWNlcywKKwkJCSAgICBp bmZvLT5zc2V1Lm1heF9zdWJzbGljZXMsCisJCQkgICAgaW5mby0+c3NldS5tYXhfZXVzX3Blcl9z dWJzbGljZSk7CiAKIAl3aXRoX2ludGVsX3J1bnRpbWVfcG0oZGV2X3ByaXYsIHdha2VyZWYpIHsK IAkJaWYgKElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKaW5k ZXggYzJlYTNmMDk5MmIyLi5jMzQzMmI1ZjlkNGIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwpA QCAtMzMwLDcgKzMzMCw3IEBAIHN0YXRpYyBpbnQgaTkxNV9nZXRwYXJhbV9pb2N0bChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCXN0cnVjdCBwY2lfZGV2ICpwZGV2ID0gZGV2 X3ByaXYtPmRybS5wZGV2OwogCWNvbnN0IHN0cnVjdCBzc2V1X2Rldl9pbmZvICpzc2V1ID0gJlJV TlRJTUVfSU5GTyhkZXZfcHJpdiktPnNzZXU7CiAJZHJtX2k5MTVfZ2V0cGFyYW1fdCAqcGFyYW0g PSBkYXRhOwotCWludCB2YWx1ZTsKKwlpbnQgdmFsdWUgPSAwOwogCiAJc3dpdGNoIChwYXJhbS0+ cGFyYW0pIHsKIAljYXNlIEk5MTVfUEFSQU1fSVJRX0FDVElWRToKQEAgLTQ1OSw3ICs0NTksOSBA QCBzdGF0aWMgaW50IGk5MTVfZ2V0cGFyYW1faW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwg dm9pZCAqZGF0YSwKIAkJCXJldHVybiAtRU5PREVWOwogCQlicmVhazsKIAljYXNlIEk5MTVfUEFS QU1fU1VCU0xJQ0VfTUFTSzoKLQkJdmFsdWUgPSBzc2V1LT5zdWJzbGljZV9tYXNrWzBdOworCQkv KiBPbmx5IGNvcHkgYml0cyBmcm9tIHRoZSBmaXJzdCBzbGljZSAqLworCQltZW1jcHkoJnZhbHVl LCBzc2V1LT5zdWJzbGljZV9tYXNrLAorCQkgICAgICAgbWluKHNzZXUtPnNzX3N0cmlkZSwgKHU4 KXNpemVvZih2YWx1ZSkpKTsKIAkJaWYgKCF2YWx1ZSkKIAkJCXJldHVybiAtRU5PREVWOwogCQli cmVhazsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jCmluZGV4IDRmODVjYmRkZGIw ZC4uYzc2MGNjNWIzMzg4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dw dV9lcnJvci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMKQEAg LTQwOCw2ICs0MDgsNyBAQCBzdGF0aWMgdm9pZCBwcmludF9lcnJvcl9idWZmZXJzKHN0cnVjdCBk cm1faTkxNV9lcnJvcl9zdGF0ZV9idWYgKm0sCiBzdGF0aWMgdm9pZCBlcnJvcl9wcmludF9pbnN0 ZG9uZShzdHJ1Y3QgZHJtX2k5MTVfZXJyb3Jfc3RhdGVfYnVmICptLAogCQkJCSBjb25zdCBzdHJ1 Y3QgZHJtX2k5MTVfZXJyb3JfZW5naW5lICplZSkKIHsKKwlzdHJ1Y3Qgc3NldV9kZXZfaW5mbyAq c3NldSA9ICZSVU5USU1FX0lORk8obS0+aTkxNSktPnNzZXU7CiAJaW50IHNsaWNlOwogCWludCBz dWJzbGljZTsKIApAQCAtNDIzLDEyICs0MjQsMTIgQEAgc3RhdGljIHZvaWQgZXJyb3JfcHJpbnRf aW5zdGRvbmUoc3RydWN0IGRybV9pOTE1X2Vycm9yX3N0YXRlX2J1ZiAqbSwKIAlpZiAoSU5URUxf R0VOKG0tPmk5MTUpIDw9IDYpCiAJCXJldHVybjsKIAotCWZvcl9lYWNoX2luc3Rkb25lX3NsaWNl X3N1YnNsaWNlKG0tPmk5MTUsIHNsaWNlLCBzdWJzbGljZSkKKwlmb3JfZWFjaF9pbnN0ZG9uZV9z bGljZV9zdWJzbGljZShtLT5pOTE1LCBzc2V1LCBzbGljZSwgc3Vic2xpY2UpCiAJCWVycl9wcmlu dGYobSwgIiAgU0FNUExFUl9JTlNURE9ORVslZF1bJWRdOiAweCUwOHhcbiIsCiAJCQkgICBzbGlj ZSwgc3Vic2xpY2UsCiAJCQkgICBlZS0+aW5zdGRvbmUuc2FtcGxlcltzbGljZV1bc3Vic2xpY2Vd KTsKIAotCWZvcl9lYWNoX2luc3Rkb25lX3NsaWNlX3N1YnNsaWNlKG0tPmk5MTUsIHNsaWNlLCBz dWJzbGljZSkKKwlmb3JfZWFjaF9pbnN0ZG9uZV9zbGljZV9zdWJzbGljZShtLT5pOTE1LCBzc2V1 LCBzbGljZSwgc3Vic2xpY2UpCiAJCWVycl9wcmludGYobSwgIiAgUk9XX0lOU1RET05FWyVkXVsl ZF06IDB4JTA4eFxuIiwKIAkJCSAgIHNsaWNlLCBzdWJzbGljZSwKIAkJCSAgIGVlLT5pbnN0ZG9u ZS5yb3dbc2xpY2VdW3N1YnNsaWNlXSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X3F1ZXJ5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3F1ZXJ5LmMKaW5kZXgg N2MxNzA4YzIyODExLi4wMDBkY2IxNDVjZTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfcXVlcnkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3F1ZXJ5LmMK QEAgLTM3LDggKzM3LDYgQEAgc3RhdGljIGludCBxdWVyeV90b3BvbG9neV9pbmZvKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAljb25zdCBzdHJ1Y3Qgc3NldV9kZXZfaW5mbyAq c3NldSA9ICZSVU5USU1FX0lORk8oZGV2X3ByaXYpLT5zc2V1OwogCXN0cnVjdCBkcm1faTkxNV9x dWVyeV90b3BvbG9neV9pbmZvIHRvcG87CiAJdTMyIHNsaWNlX2xlbmd0aCwgc3Vic2xpY2VfbGVu Z3RoLCBldV9sZW5ndGgsIHRvdGFsX2xlbmd0aDsKLQl1OCBzdWJzbGljZV9zdHJpZGUgPSBHRU5f U1NFVV9TVFJJREUoc3NldS0+bWF4X3N1YnNsaWNlcyk7Ci0JdTggZXVfc3RyaWRlID0gR0VOX1NT RVVfU1RSSURFKHNzZXUtPm1heF9ldXNfcGVyX3N1YnNsaWNlKTsKIAlpbnQgcmV0OwogCiAJaWYg KHF1ZXJ5X2l0ZW0tPmZsYWdzICE9IDApCkBAIC01MCw4ICs0OCw4IEBAIHN0YXRpYyBpbnQgcXVl cnlfdG9wb2xvZ3lfaW5mbyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJQlVJ TERfQlVHX09OKHNpemVvZih1OCkgIT0gc2l6ZW9mKHNzZXUtPnNsaWNlX21hc2spKTsKIAogCXNs aWNlX2xlbmd0aCA9IHNpemVvZihzc2V1LT5zbGljZV9tYXNrKTsKLQlzdWJzbGljZV9sZW5ndGgg PSBzc2V1LT5tYXhfc2xpY2VzICogc3Vic2xpY2Vfc3RyaWRlOwotCWV1X2xlbmd0aCA9IHNzZXUt Pm1heF9zbGljZXMgKiBzc2V1LT5tYXhfc3Vic2xpY2VzICogZXVfc3RyaWRlOworCXN1YnNsaWNl X2xlbmd0aCA9IHNzZXUtPm1heF9zbGljZXMgKiBzc2V1LT5zc19zdHJpZGU7CisJZXVfbGVuZ3Ro ID0gc3NldS0+bWF4X3NsaWNlcyAqIHNzZXUtPm1heF9zdWJzbGljZXMgKiBzc2V1LT5ldV9zdHJp ZGU7CiAJdG90YWxfbGVuZ3RoID0gc2l6ZW9mKHRvcG8pICsgc2xpY2VfbGVuZ3RoICsgc3Vic2xp Y2VfbGVuZ3RoICsKIAkJICAgICAgIGV1X2xlbmd0aDsKIApAQCAtNjksOSArNjcsOSBAQCBzdGF0 aWMgaW50IHF1ZXJ5X3RvcG9sb2d5X2luZm8oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LAogCXRvcG8ubWF4X2V1c19wZXJfc3Vic2xpY2UgPSBzc2V1LT5tYXhfZXVzX3Blcl9zdWJz bGljZTsKIAogCXRvcG8uc3Vic2xpY2Vfb2Zmc2V0ID0gc2xpY2VfbGVuZ3RoOwotCXRvcG8uc3Vi c2xpY2Vfc3RyaWRlID0gc3Vic2xpY2Vfc3RyaWRlOworCXRvcG8uc3Vic2xpY2Vfc3RyaWRlID0g c3NldS0+c3Nfc3RyaWRlOwogCXRvcG8uZXVfb2Zmc2V0ID0gc2xpY2VfbGVuZ3RoICsgc3Vic2xp Y2VfbGVuZ3RoOwotCXRvcG8uZXVfc3RyaWRlID0gZXVfc3RyaWRlOworCXRvcG8uZXVfc3RyaWRl ID0gc3NldS0+ZXVfc3RyaWRlOwogCiAJaWYgKF9fY29weV90b191c2VyKHU2NF90b191c2VyX3B0 cihxdWVyeV9pdGVtLT5kYXRhX3B0ciksCiAJCQkgICAmdG9wbywgc2l6ZW9mKHRvcG8pKSkKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RldmljZV9pbmZvLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZXZpY2VfaW5mby5jCmluZGV4IDY4OTcwMmIyOGU4MC4u YjcyNTA1YTE5MmEwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZXZp Y2VfaW5mby5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RldmljZV9pbmZvLmMK QEAgLTg0LDE3ICs4NCw0NiBAQCB2b2lkIGludGVsX2RldmljZV9pbmZvX2R1bXBfZmxhZ3MoY29u c3Qgc3RydWN0IGludGVsX2RldmljZV9pbmZvICppbmZvLAogI3VuZGVmIFBSSU5UX0ZMQUcKIH0K IAorI2RlZmluZSBTU19TVFJfTUFYX1NJWkUgKEdFTl9NQVhfU1VCU0xJQ0VfU1RSSURFICogMiAr IDEpCisKK3N0YXRpYyBjaGFyICoKK3N1YnNsaWNlX3Blcl9zbGljZV9zdHIoY2hhciAqYnVmLCB1 OCBzaXplLCBjb25zdCBzdHJ1Y3Qgc3NldV9kZXZfaW5mbyAqc3NldSwKKwkJICAgICAgIHU4IHNs aWNlKQoreworCWludCBpOworCXU4IHNzX29mZnNldCA9IHNsaWNlICogc3NldS0+c3Nfc3RyaWRl OworCisJR0VNX0JVR19PTihzbGljZSA+PSBzc2V1LT5tYXhfc2xpY2VzKTsKKworCS8qIFR3byBB U0NJSSBjaGFyYWN0ZXIgaGV4IHBsdXMgbnVsbCB0ZXJtaW5hdG9yICovCisJR0VNX0JVR19PTihz aXplIDwgc3NldS0+c3Nfc3RyaWRlICogMiArIDEpOworCisJbWVtc2V0KGJ1ZiwgMCwgc2l6ZSk7 CisKKwkvKgorCSAqIFByaW50IHN1YnNsaWNlIGluZm9ybWF0aW9uIGluIHJldmVyc2Ugb3JkZXIg dG8gbWF0Y2gKKwkgKiB1c2Vyc3BhY2UgZXhwZWN0YXRpb25zLgorCSAqLworCWZvciAoaSA9IDA7 IGkgPCBzc2V1LT5zc19zdHJpZGU7IGkrKykKKwkJc3ByaW50ZigmYnVmW2kgKiAyXSwgIiUwMngi LAorCQkJc3NldS0+c3Vic2xpY2VfbWFza1tzc19vZmZzZXQgKyBzc2V1LT5zc19zdHJpZGUgLQor CQkJCQkgICAgKGkgKyAxKV0pOworCisJcmV0dXJuIGJ1ZjsKK30KKwogc3RhdGljIHZvaWQgc3Nl dV9kdW1wKGNvbnN0IHN0cnVjdCBzc2V1X2Rldl9pbmZvICpzc2V1LCBzdHJ1Y3QgZHJtX3ByaW50 ZXIgKnApCiB7CiAJaW50IHM7CisJY2hhciBidWZbU1NfU1RSX01BWF9TSVpFXTsKIAogCWRybV9w cmludGYocCwgInNsaWNlIHRvdGFsOiAldSwgbWFzaz0lMDR4XG4iLAogCQkgICBod2VpZ2h0OChz c2V1LT5zbGljZV9tYXNrKSwgc3NldS0+c2xpY2VfbWFzayk7CiAJZHJtX3ByaW50ZihwLCAic3Vi c2xpY2UgdG90YWw6ICV1XG4iLCBpbnRlbF9zc2V1X3N1YnNsaWNlX3RvdGFsKHNzZXUpKTsKIAlm b3IgKHMgPSAwOyBzIDwgc3NldS0+bWF4X3NsaWNlczsgcysrKSB7Ci0JCWRybV9wcmludGYocCwg InNsaWNlJWQ6ICV1IHN1YnNsaWNlcywgbWFzaz0lMDR4XG4iLAorCQlkcm1fcHJpbnRmKHAsICJz bGljZSVkOiAldSBzdWJzbGljZXMsIG1hc2s9JXNcbiIsCiAJCQkgICBzLCBpbnRlbF9zc2V1X3N1 YnNsaWNlc19wZXJfc2xpY2Uoc3NldSwgcyksCi0JCQkgICBzc2V1LT5zdWJzbGljZV9tYXNrW3Nd KTsKKwkJCSAgIHN1YnNsaWNlX3Blcl9zbGljZV9zdHIoYnVmLCBBUlJBWV9TSVpFKGJ1ZiksIHNz ZXUsIHMpKTsKIAl9CiAJZHJtX3ByaW50ZihwLCAiRVUgdG90YWw6ICV1XG4iLCBzc2V1LT5ldV90 b3RhbCk7CiAJZHJtX3ByaW50ZihwLCAiRVUgcGVyIHN1YnNsaWNlOiAldVxuIiwgc3NldS0+ZXVf cGVyX3N1YnNsaWNlKTsKQEAgLTExNywxMSArMTQ2LDkgQEAgdm9pZCBpbnRlbF9kZXZpY2VfaW5m b19kdW1wX3J1bnRpbWUoY29uc3Qgc3RydWN0IGludGVsX3J1bnRpbWVfaW5mbyAqaW5mbywKIHN0 YXRpYyBpbnQgaW50ZWxfc3NldV9ldV9pZHgoY29uc3Qgc3RydWN0IHNzZXVfZGV2X2luZm8gKnNz ZXUsIGludCBzbGljZSwKIAkJCSAgICAgaW50IHN1YnNsaWNlKQogewotCWludCBzdWJzbGljZV9z dHJpZGUgPSBESVZfUk9VTkRfVVAoc3NldS0+bWF4X2V1c19wZXJfc3Vic2xpY2UsCi0JCQkJCSAg IEJJVFNfUEVSX0JZVEUpOwotCWludCBzbGljZV9zdHJpZGUgPSBzc2V1LT5tYXhfc3Vic2xpY2Vz ICogc3Vic2xpY2Vfc3RyaWRlOworCWludCBzbGljZV9zdHJpZGUgPSBzc2V1LT5tYXhfc3Vic2xp Y2VzICogc3NldS0+ZXVfc3RyaWRlOwogCi0JcmV0dXJuIHNsaWNlICogc2xpY2Vfc3RyaWRlICsg c3Vic2xpY2UgKiBzdWJzbGljZV9zdHJpZGU7CisJcmV0dXJuIHNsaWNlICogc2xpY2Vfc3RyaWRl ICsgc3Vic2xpY2UgKiBzc2V1LT5ldV9zdHJpZGU7CiB9CiAKIHN0YXRpYyB1MTYgaW50ZWxfc3Nl dV9nZXRfZXVzKGNvbnN0IHN0cnVjdCBzc2V1X2Rldl9pbmZvICpzc2V1LCBpbnQgc2xpY2UsCkBA IC0xMzAsOCArMTU3LDcgQEAgc3RhdGljIHUxNiBpbnRlbF9zc2V1X2dldF9ldXMoY29uc3Qgc3Ry dWN0IHNzZXVfZGV2X2luZm8gKnNzZXUsIGludCBzbGljZSwKIAlpbnQgaSwgb2Zmc2V0ID0gaW50 ZWxfc3NldV9ldV9pZHgoc3NldSwgc2xpY2UsIHN1YnNsaWNlKTsKIAl1MTYgZXVfbWFzayA9IDA7 CiAKLQlmb3IgKGkgPSAwOwotCSAgICAgaSA8IERJVl9ST1VORF9VUChzc2V1LT5tYXhfZXVzX3Bl cl9zdWJzbGljZSwgQklUU19QRVJfQllURSk7IGkrKykgeworCWZvciAoaSA9IDA7IGkgPCBzc2V1 LT5ldV9zdHJpZGU7IGkrKykgewogCQlldV9tYXNrIHw9ICgodTE2KXNzZXUtPmV1X21hc2tbb2Zm c2V0ICsgaV0pIDw8CiAJCQkoaSAqIEJJVFNfUEVSX0JZVEUpOwogCX0KQEAgLTE0NCw4ICsxNzAs NyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9zc2V1X3NldF9ldXMoc3RydWN0IHNzZXVfZGV2X2luZm8g KnNzZXUsIGludCBzbGljZSwKIHsKIAlpbnQgaSwgb2Zmc2V0ID0gaW50ZWxfc3NldV9ldV9pZHgo c3NldSwgc2xpY2UsIHN1YnNsaWNlKTsKIAotCWZvciAoaSA9IDA7Ci0JICAgICBpIDwgRElWX1JP VU5EX1VQKHNzZXUtPm1heF9ldXNfcGVyX3N1YnNsaWNlLCBCSVRTX1BFUl9CWVRFKTsgaSsrKSB7 CisJZm9yIChpID0gMDsgaSA8IHNzZXUtPmV1X3N0cmlkZTsgaSsrKSB7CiAJCXNzZXUtPmV1X21h c2tbb2Zmc2V0ICsgaV0gPQogCQkJKGV1X21hc2sgPj4gKEJJVFNfUEVSX0JZVEUgKiBpKSkgJiAw eGZmOwogCX0KQEAgLTE1NSw2ICsxODAsNyBAQCB2b2lkIGludGVsX2RldmljZV9pbmZvX2R1bXBf dG9wb2xvZ3koY29uc3Qgc3RydWN0IHNzZXVfZGV2X2luZm8gKnNzZXUsCiAJCQkJICAgICBzdHJ1 Y3QgZHJtX3ByaW50ZXIgKnApCiB7CiAJaW50IHMsIHNzOworCWNoYXIgYnVmW1NTX1NUUl9NQVhf U0laRV07CiAKIAlpZiAoc3NldS0+bWF4X3NsaWNlcyA9PSAwKSB7CiAJCWRybV9wcmludGYocCwg IlVuYXZhaWxhYmxlXG4iKTsKQEAgLTE2Miw5ICsxODgsOSBAQCB2b2lkIGludGVsX2RldmljZV9p bmZvX2R1bXBfdG9wb2xvZ3koY29uc3Qgc3RydWN0IHNzZXVfZGV2X2luZm8gKnNzZXUsCiAJfQog CiAJZm9yIChzID0gMDsgcyA8IHNzZXUtPm1heF9zbGljZXM7IHMrKykgewotCQlkcm1fcHJpbnRm KHAsICJzbGljZSVkOiAldSBzdWJzbGljZShzKSAoMHglaGh4KTpcbiIsCisJCWRybV9wcmludGYo cCwgInNsaWNlJWQ6ICV1IHN1YnNsaWNlKHMpICgweCVzKTpcbiIsCiAJCQkgICBzLCBpbnRlbF9z c2V1X3N1YnNsaWNlc19wZXJfc2xpY2Uoc3NldSwgcyksCi0JCQkgICBzc2V1LT5zdWJzbGljZV9t YXNrW3NdKTsKKwkJCSAgIHN1YnNsaWNlX3Blcl9zbGljZV9zdHIoYnVmLCBBUlJBWV9TSVpFKGJ1 ZiksIHNzZXUsIHMpKTsKIAogCQlmb3IgKHNzID0gMDsgc3MgPCBzc2V1LT5tYXhfc3Vic2xpY2Vz OyBzcysrKSB7CiAJCQl1MTYgZW5hYmxlZF9ldXMgPSBpbnRlbF9zc2V1X2dldF9ldXMoc3NldSwg cywgc3MpOwpAQCAtMTkzLDE1ICsyMTksMTAgQEAgc3RhdGljIHZvaWQgZ2VuMTFfc3NldV9pbmZv X2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCXU4IGV1X2VuOwogCWlu dCBzOwogCi0JaWYgKElTX0VMS0hBUlRMQUtFKGRldl9wcml2KSkgewotCQlzc2V1LT5tYXhfc2xp Y2VzID0gMTsKLQkJc3NldS0+bWF4X3N1YnNsaWNlcyA9IDQ7Ci0JCXNzZXUtPm1heF9ldXNfcGVy X3N1YnNsaWNlID0gODsKLQl9IGVsc2UgewotCQlzc2V1LT5tYXhfc2xpY2VzID0gMTsKLQkJc3Nl dS0+bWF4X3N1YnNsaWNlcyA9IDg7Ci0JCXNzZXUtPm1heF9ldXNfcGVyX3N1YnNsaWNlID0gODsK LQl9CisJaWYgKElTX0VMS0hBUlRMQUtFKGRldl9wcml2KSkKKwkJaW50ZWxfc3NldV9zZXRfaW5m byhzc2V1LCAxLCA0LCA4KTsKKwllbHNlCisJCWludGVsX3NzZXVfc2V0X2luZm8oc3NldSwgMSwg OCwgOCk7CiAKIAlzX2VuID0gSTkxNV9SRUFEKEdFTjExX0dUX1NMSUNFX0VOQUJMRSkgJiBHRU4x MV9HVF9TX0VOQV9NQVNLOwogCXNzX2VuID0gfkk5MTVfUkVBRChHRU4xMV9HVF9TVUJTTElDRV9E SVNBQkxFKTsKQEAgLTIxMCwxNSArMjMxLDE1IEBAIHN0YXRpYyB2b2lkIGdlbjExX3NzZXVfaW5m b19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAogCWZvciAocyA9IDA7 IHMgPCBzc2V1LT5tYXhfc2xpY2VzOyBzKyspIHsKIAkJaWYgKHNfZW4gJiBCSVQocykpIHsKLQkJ CWludCBzc19pZHggPSBzc2V1LT5tYXhfc3Vic2xpY2VzICogczsKIAkJCWludCBzczsKIAogCQkJ c3NldS0+c2xpY2VfbWFzayB8PSBCSVQocyk7Ci0JCQlzc2V1LT5zdWJzbGljZV9tYXNrW3NdID0g KHNzX2VuID4+IHNzX2lkeCkgJiBzc19lbl9tYXNrOwotCQkJZm9yIChzcyA9IDA7IHNzIDwgc3Nl dS0+bWF4X3N1YnNsaWNlczsgc3MrKykgewotCQkJCWlmIChzc2V1LT5zdWJzbGljZV9tYXNrW3Nd ICYgQklUKHNzKSkKKworCQkJaW50ZWxfc3NldV9zZXRfc3Vic2xpY2VzKHNzZXUsIHMsIHNzX2Vu X21hc2spOworCisJCQlmb3IgKHNzID0gMDsgc3MgPCBzc2V1LT5tYXhfc3Vic2xpY2VzOyBzcysr KQorCQkJCWlmIChpbnRlbF9zc2V1X2hhc19zdWJzbGljZShzc2V1LCBzLCBzcykpCiAJCQkJCWlu dGVsX3NzZXVfc2V0X2V1cyhzc2V1LCBzLCBzcywgZXVfZW4pOwotCQkJfQogCQl9CiAJfQogCXNz ZXUtPmV1X3Blcl9zdWJzbGljZSA9IGh3ZWlnaHQ4KGV1X2VuKTsKQEAgLTIzOCwyMyArMjU5LDEw IEBAIHN0YXRpYyB2b2lkIGdlbjEwX3NzZXVfaW5mb19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKIAljb25zdCBpbnQgZXVfbWFzayA9IDB4ZmY7CiAJdTMyIHN1YnNsaWNl X21hc2ssIGV1X2VuOwogCisJaW50ZWxfc3NldV9zZXRfaW5mbyhzc2V1LCA2LCA0LCA4KTsKKwog CXNzZXUtPnNsaWNlX21hc2sgPSAoZnVzZTIgJiBHRU4xMF9GMl9TX0VOQV9NQVNLKSA+PgogCQkJ ICAgIEdFTjEwX0YyX1NfRU5BX1NISUZUOwotCXNzZXUtPm1heF9zbGljZXMgPSA2OwotCXNzZXUt Pm1heF9zdWJzbGljZXMgPSA0OwotCXNzZXUtPm1heF9ldXNfcGVyX3N1YnNsaWNlID0gODsKLQot CXN1YnNsaWNlX21hc2sgPSAoMSA8PCA0KSAtIDE7Ci0Jc3Vic2xpY2VfbWFzayAmPSB+KChmdXNl MiAmIEdFTjEwX0YyX1NTX0RJU19NQVNLKSA+PgotCQkJICAgR0VOMTBfRjJfU1NfRElTX1NISUZU KTsKLQotCS8qCi0JICogU2xpY2UwIGNhbiBoYXZlIHVwIHRvIDMgc3Vic2xpY2VzLCBidXQgdGhl cmUgYXJlIG9ubHkgMiBpbgotCSAqIHNsaWNlMS8yLgotCSAqLwotCXNzZXUtPnN1YnNsaWNlX21h c2tbMF0gPSBzdWJzbGljZV9tYXNrOwotCWZvciAocyA9IDE7IHMgPCBzc2V1LT5tYXhfc2xpY2Vz OyBzKyspCi0JCXNzZXUtPnN1YnNsaWNlX21hc2tbc10gPSBzdWJzbGljZV9tYXNrICYgMHgzOwog CiAJLyogU2xpY2UwICovCiAJZXVfZW4gPSB+STkxNV9SRUFEKEdFTjhfRVVfRElTQUJMRTApOwpA QCAtMjc5LDE0ICsyODcsMjIgQEAgc3RhdGljIHZvaWQgZ2VuMTBfc3NldV9pbmZvX2luaXQoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCWV1X2VuID0gfkk5MTVfUkVBRChHRU4x MF9FVV9ESVNBQkxFMyk7CiAJaW50ZWxfc3NldV9zZXRfZXVzKHNzZXUsIDUsIDEsIGV1X2VuICYg ZXVfbWFzayk7CiAKLQkvKiBEbyBhIHNlY29uZCBwYXNzIHdoZXJlIHdlIG1hcmsgdGhlIHN1YnNs aWNlcyBkaXNhYmxlZCBpZiBhbGwgdGhlaXIKLQkgKiBldXMgYXJlIG9mZi4KLQkgKi8KKwlzdWJz bGljZV9tYXNrID0gKDEgPDwgNCkgLSAxOworCXN1YnNsaWNlX21hc2sgJj0gfigoZnVzZTIgJiBH RU4xMF9GMl9TU19ESVNfTUFTSykgPj4KKwkJCSAgIEdFTjEwX0YyX1NTX0RJU19TSElGVCk7CisK IAlmb3IgKHMgPSAwOyBzIDwgc3NldS0+bWF4X3NsaWNlczsgcysrKSB7CiAJCWZvciAoc3MgPSAw OyBzcyA8IHNzZXUtPm1heF9zdWJzbGljZXM7IHNzKyspIHsKIAkJCWlmIChpbnRlbF9zc2V1X2dl dF9ldXMoc3NldSwgcywgc3MpID09IDApCi0JCQkJc3NldS0+c3Vic2xpY2VfbWFza1tzXSAmPSB+ QklUKHNzKTsKKwkJCQlzdWJzbGljZV9tYXNrICY9IH5CSVQoc3MpOwogCQl9CisKKwkJLyoKKwkJ ICogU2xpY2UwIGNhbiBoYXZlIHVwIHRvIDMgc3Vic2xpY2VzLCBidXQgdGhlcmUgYXJlIG9ubHkg MiBpbgorCQkgKiBzbGljZTEvMi4KKwkJICovCisJCWludGVsX3NzZXVfc2V0X3N1YnNsaWNlcyhz c2V1LCBzLCBzID09IDAgPyBzdWJzbGljZV9tYXNrIDoKKwkJCQkJCQkgICBzdWJzbGljZV9tYXNr ICYgMHgzKTsKIAl9CiAKIAlzc2V1LT5ldV90b3RhbCA9IGNvbXB1dGVfZXVfdG90YWwoc3NldSk7 CkBAIC0zMTIsMTMgKzMyOCwxMiBAQCBzdGF0aWMgdm9pZCBjaGVycnl2aWV3X3NzZXVfaW5mb19p bml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKIAlzdHJ1Y3Qgc3NldV9k ZXZfaW5mbyAqc3NldSA9ICZSVU5USU1FX0lORk8oZGV2X3ByaXYpLT5zc2V1OwogCXUzMiBmdXNl OworCXU4IHN1YnNsaWNlX21hc2s7CiAKIAlmdXNlID0gSTkxNV9SRUFEKENIVl9GVVNFX0dUKTsK IAogCXNzZXUtPnNsaWNlX21hc2sgPSBCSVQoMCk7Ci0Jc3NldS0+bWF4X3NsaWNlcyA9IDE7Ci0J c3NldS0+bWF4X3N1YnNsaWNlcyA9IDI7Ci0Jc3NldS0+bWF4X2V1c19wZXJfc3Vic2xpY2UgPSA4 OworCWludGVsX3NzZXVfc2V0X2luZm8oc3NldSwgMSwgMiwgOCk7CiAKIAlpZiAoIShmdXNlICYg Q0hWX0ZHVF9ESVNBQkxFX1NTMCkpIHsKIAkJdTggZGlzYWJsZWRfbWFzayA9CkBAIC0zMjcsNyAr MzQyLDcgQEAgc3RhdGljIHZvaWQgY2hlcnJ5dmlld19zc2V1X2luZm9faW5pdChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCQkoKChmdXNlICYgQ0hWX0ZHVF9FVV9ESVNfU1Mw X1IxX01BU0spID4+CiAJCQkgIENIVl9GR1RfRVVfRElTX1NTMF9SMV9TSElGVCkgPDwgNCk7CiAK LQkJc3NldS0+c3Vic2xpY2VfbWFza1swXSB8PSBCSVQoMCk7CisJCXN1YnNsaWNlX21hc2sgfD0g QklUKDApOwogCQlpbnRlbF9zc2V1X3NldF9ldXMoc3NldSwgMCwgMCwgfmRpc2FibGVkX21hc2sp OwogCX0KIApAQCAtMzM4LDEwICszNTMsMTIgQEAgc3RhdGljIHZvaWQgY2hlcnJ5dmlld19zc2V1 X2luZm9faW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCQkoKChmdXNl ICYgQ0hWX0ZHVF9FVV9ESVNfU1MxX1IxX01BU0spID4+CiAJCQkgIENIVl9GR1RfRVVfRElTX1NT MV9SMV9TSElGVCkgPDwgNCk7CiAKLQkJc3NldS0+c3Vic2xpY2VfbWFza1swXSB8PSBCSVQoMSk7 CisJCXN1YnNsaWNlX21hc2sgfD0gQklUKDEpOwogCQlpbnRlbF9zc2V1X3NldF9ldXMoc3NldSwg MCwgMSwgfmRpc2FibGVkX21hc2spOwogCX0KIAorCWludGVsX3NzZXVfc2V0X3N1YnNsaWNlcyhz c2V1LCAwLCBzdWJzbGljZV9tYXNrKTsKKwogCXNzZXUtPmV1X3RvdGFsID0gY29tcHV0ZV9ldV90 b3RhbChzc2V1KTsKIAogCS8qCkBAIC0zNzQsOSArMzkxLDggQEAgc3RhdGljIHZvaWQgZ2VuOV9z c2V1X2luZm9faW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJc3NldS0+ c2xpY2VfbWFzayA9IChmdXNlMiAmIEdFTjhfRjJfU19FTkFfTUFTSykgPj4gR0VOOF9GMl9TX0VO QV9TSElGVDsKIAogCS8qIEJYVCBoYXMgYSBzaW5nbGUgc2xpY2UgYW5kIGF0IG1vc3QgMyBzdWJz bGljZXMuICovCi0Jc3NldS0+bWF4X3NsaWNlcyA9IElTX0dFTjlfTFAoZGV2X3ByaXYpID8gMSA6 IDM7Ci0Jc3NldS0+bWF4X3N1YnNsaWNlcyA9IElTX0dFTjlfTFAoZGV2X3ByaXYpID8gMyA6IDQ7 Ci0Jc3NldS0+bWF4X2V1c19wZXJfc3Vic2xpY2UgPSA4OworCWludGVsX3NzZXVfc2V0X2luZm8o c3NldSwgSVNfR0VOOV9MUChkZXZfcHJpdikgPyAxIDogMywKKwkJCSAgICBJU19HRU45X0xQKGRl dl9wcml2KSA/IDMgOiA0LCA4KTsKIAogCS8qCiAJICogVGhlIHN1YnNsaWNlIGRpc2FibGUgZmll bGQgaXMgZ2xvYmFsLCBpLmUuIGl0IGFwcGxpZXMKQEAgLTM5NSwxNCArNDExLDE0IEBAIHN0YXRp YyB2b2lkIGdlbjlfc3NldV9pbmZvX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQogCQkJLyogc2tpcCBkaXNhYmxlZCBzbGljZSAqLwogCQkJY29udGludWU7CiAKLQkJc3Nl dS0+c3Vic2xpY2VfbWFza1tzXSA9IHN1YnNsaWNlX21hc2s7CisJCWludGVsX3NzZXVfc2V0X3N1 YnNsaWNlcyhzc2V1LCBzLCBzdWJzbGljZV9tYXNrKTsKIAogCQlldV9kaXNhYmxlID0gSTkxNV9S RUFEKEdFTjlfRVVfRElTQUJMRShzKSk7CiAJCWZvciAoc3MgPSAwOyBzcyA8IHNzZXUtPm1heF9z dWJzbGljZXM7IHNzKyspIHsKIAkJCWludCBldV9wZXJfc3M7CiAJCQl1OCBldV9kaXNhYmxlZF9t YXNrOwogCi0JCQlpZiAoIShzc2V1LT5zdWJzbGljZV9tYXNrW3NdICYgQklUKHNzKSkpCisJCQlp ZiAoIWludGVsX3NzZXVfaGFzX3N1YnNsaWNlKHNzZXUsIHMsIHNzKSkKIAkJCQkvKiBza2lwIGRp c2FibGVkIHN1YnNsaWNlICovCiAJCQkJY29udGludWU7CiAKQEAgLTQ3NSw5ICs0OTEsNyBAQCBz dGF0aWMgdm9pZCBicm9hZHdlbGxfc3NldV9pbmZvX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KQogCiAJZnVzZTIgPSBJOTE1X1JFQUQoR0VOOF9GVVNFMik7CiAJc3NldS0+ c2xpY2VfbWFzayA9IChmdXNlMiAmIEdFTjhfRjJfU19FTkFfTUFTSykgPj4gR0VOOF9GMl9TX0VO QV9TSElGVDsKLQlzc2V1LT5tYXhfc2xpY2VzID0gMzsKLQlzc2V1LT5tYXhfc3Vic2xpY2VzID0g MzsKLQlzc2V1LT5tYXhfZXVzX3Blcl9zdWJzbGljZSA9IDg7CisJaW50ZWxfc3NldV9zZXRfaW5m byhzc2V1LCAzLCAzLCA4KTsKIAogCS8qCiAJICogVGhlIHN1YnNsaWNlIGRpc2FibGUgZmllbGQg aXMgZ2xvYmFsLCBpLmUuIGl0IGFwcGxpZXMKQEAgLTUwNCwxOCArNTE4LDE5IEBAIHN0YXRpYyB2 b2lkIGJyb2Fkd2VsbF9zc2V1X2luZm9faW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCiAJCQkvKiBza2lwIGRpc2FibGVkIHNsaWNlICovCiAJCQljb250aW51ZTsKIAotCQlz c2V1LT5zdWJzbGljZV9tYXNrW3NdID0gc3Vic2xpY2VfbWFzazsKKwkJaW50ZWxfc3NldV9zZXRf c3Vic2xpY2VzKHNzZXUsIHMsIHN1YnNsaWNlX21hc2spOwogCiAJCWZvciAoc3MgPSAwOyBzcyA8 IHNzZXUtPm1heF9zdWJzbGljZXM7IHNzKyspIHsKIAkJCXU4IGV1X2Rpc2FibGVkX21hc2s7CiAJ CQl1MzIgbl9kaXNhYmxlZDsKIAotCQkJaWYgKCEoc3NldS0+c3Vic2xpY2VfbWFza1tzXSAmIEJJ VChzcykpKQorCQkJaWYgKCFpbnRlbF9zc2V1X2hhc19zdWJzbGljZShzc2V1LCBzLCBzcykpCiAJ CQkJLyogc2tpcCBkaXNhYmxlZCBzdWJzbGljZSAqLwogCQkJCWNvbnRpbnVlOwogCiAJCQlldV9k aXNhYmxlZF9tYXNrID0KLQkJCQlldV9kaXNhYmxlW3NdID4+IChzcyAqIHNzZXUtPm1heF9ldXNf cGVyX3N1YnNsaWNlKTsKKwkJCQlldV9kaXNhYmxlW3NdID4+CisJCQkJCShzcyAqIHNzZXUtPm1h eF9ldXNfcGVyX3N1YnNsaWNlKTsKIAogCQkJaW50ZWxfc3NldV9zZXRfZXVzKHNzZXUsIHMsIHNz LCB+ZXVfZGlzYWJsZWRfbWFzayk7CiAKQEAgLTU1NSw2ICs1NzAsNyBAQCBzdGF0aWMgdm9pZCBo YXN3ZWxsX3NzZXVfaW5mb19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikK IAlzdHJ1Y3Qgc3NldV9kZXZfaW5mbyAqc3NldSA9ICZSVU5USU1FX0lORk8oZGV2X3ByaXYpLT5z c2V1OwogCXUzMiBmdXNlMTsKIAlpbnQgcywgc3M7CisJdTMyIHN1YnNsaWNlX21hc2s7CiAKIAkv KgogCSAqIFRoZXJlIGlzbid0IGEgcmVnaXN0ZXIgdG8gdGVsbCB1cyBob3cgbWFueSBzbGljZXMv c3Vic2xpY2VzLiBXZQpAQCAtNTY2LDIyICs1ODIsMTggQEAgc3RhdGljIHZvaWQgaGFzd2VsbF9z c2V1X2luZm9faW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCS8qIGZh bGwgdGhyb3VnaCAqLwogCWNhc2UgMToKIAkJc3NldS0+c2xpY2VfbWFzayA9IEJJVCgwKTsKLQkJ c3NldS0+c3Vic2xpY2VfbWFza1swXSA9IEJJVCgwKTsKKwkJc3Vic2xpY2VfbWFzayA9IEJJVCgw KTsKIAkJYnJlYWs7CiAJY2FzZSAyOgogCQlzc2V1LT5zbGljZV9tYXNrID0gQklUKDApOwotCQlz c2V1LT5zdWJzbGljZV9tYXNrWzBdID0gQklUKDApIHwgQklUKDEpOworCQlzdWJzbGljZV9tYXNr ID0gQklUKDApIHwgQklUKDEpOwogCQlicmVhazsKIAljYXNlIDM6CiAJCXNzZXUtPnNsaWNlX21h c2sgPSBCSVQoMCkgfCBCSVQoMSk7Ci0JCXNzZXUtPnN1YnNsaWNlX21hc2tbMF0gPSBCSVQoMCkg fCBCSVQoMSk7Ci0JCXNzZXUtPnN1YnNsaWNlX21hc2tbMV0gPSBCSVQoMCkgfCBCSVQoMSk7CisJ CXN1YnNsaWNlX21hc2sgPSBCSVQoMCkgfCBCSVQoMSk7CiAJCWJyZWFrOwogCX0KIAotCXNzZXUt Pm1heF9zbGljZXMgPSBod2VpZ2h0OChzc2V1LT5zbGljZV9tYXNrKTsKLQlzc2V1LT5tYXhfc3Vi c2xpY2VzID0gaHdlaWdodDgoc3NldS0+c3Vic2xpY2VfbWFza1swXSk7Ci0KIAlmdXNlMSA9IEk5 MTVfUkVBRChIU1dfUEFWUF9GVVNFMSk7CiAJc3dpdGNoICgoZnVzZTEgJiBIU1dfRjFfRVVfRElT X01BU0spID4+IEhTV19GMV9FVV9ESVNfU0hJRlQpIHsKIAlkZWZhdWx0OgpAQCAtNTk4LDkgKzYx MCwxNCBAQCBzdGF0aWMgdm9pZCBoYXN3ZWxsX3NzZXVfaW5mb19pbml0KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKIAkJc3NldS0+ZXVfcGVyX3N1YnNsaWNlID0gNjsKIAkJYnJl YWs7CiAJfQotCXNzZXUtPm1heF9ldXNfcGVyX3N1YnNsaWNlID0gc3NldS0+ZXVfcGVyX3N1YnNs aWNlOworCisJaW50ZWxfc3NldV9zZXRfaW5mbyhzc2V1LCBod2VpZ2h0OChzc2V1LT5zbGljZV9t YXNrKSwKKwkJCSAgICBod2VpZ2h0OChzdWJzbGljZV9tYXNrKSwKKwkJCSAgICBzc2V1LT5ldV9w ZXJfc3Vic2xpY2UpOwogCiAJZm9yIChzID0gMDsgcyA8IHNzZXUtPm1heF9zbGljZXM7IHMrKykg eworCQlpbnRlbF9zc2V1X3NldF9zdWJzbGljZXMoc3NldSwgcywgc3Vic2xpY2VfbWFzayk7CisK IAkJZm9yIChzcyA9IDA7IHNzIDwgc3NldS0+bWF4X3N1YnNsaWNlczsgc3MrKykgewogCQkJaW50 ZWxfc3NldV9zZXRfZXVzKHNzZXUsIHMsIHNzLAogCQkJCQkgICAoMVVMIDw8IHNzZXUtPmV1X3Bl cl9zdWJzbGljZSkgLSAxKTsKLS0gCjIuMjEuMC41LmdhZWI1ODJhOTgzCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0 CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng=