From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 6/6] drm/i915: Expand subslice mask Date: Wed, 1 May 2019 19:22:31 +0100 Message-ID: References: <20190501153450.30494-1-stuart.summers@intel.com> <20190501153450.30494-7-stuart.summers@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7336889057 for ; Wed, 1 May 2019 18:22:34 +0000 (UTC) In-Reply-To: <20190501153450.30494-7-stuart.summers@intel.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Stuart Summers , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Ckp1c3Qgb25lIGRyaXZlIGJ5IGJlbG93Li4uCgpPbiAwMS8wNS8yMDE5IDE2OjM0LCBTdHVhcnQg U3VtbWVycyB3cm90ZToKPiBDdXJyZW50bHksIHRoZSBzdWJzbGljZV9tYXNrIHJ1bnRpbWUgcGFy YW1ldGVyIGlzIHN0b3JlZCBhcyBhbgo+IGFycmF5IG9mIHN1YnNsaWNlcyBwZXIgc2xpY2UuIEV4 cGFuZCB0aGUgc3Vic2xpY2UgbWFzayBhcnJheSB0bwo+IGJldHRlciBtYXRjaCB3aGF0IGlzIHBy ZXNlbnRlZCB0byB1c2Vyc3BhY2UgdGhyb3VnaCB0aGUKPiBJOTE1X1FVRVJZX1RPUE9MT0dZX0lO Rk8gaW9jdGwuIFRoZSBpbmRleCBpbnRvIHRoaXMgYXJyYXkgaXMKPiB0aGVuIGNhbGN1bGF0ZWQ6 Cj4gICAgc2xpY2UgKiBzdWJzbGljZSBzdHJpZGUgKyBzdWJzbGljZSBpbmRleCAvIDgKPiAKPiB2 MjogZml4IHNwYWNpbmcgaW4gc2V0X3NzZXVfaW5mbyBhcmdzCj4gICAgICB1c2Ugc2V0X3NzZXVf aW5mbyB0byBpbml0aWFsaXplIHNzZXUgZGF0YSB3aGVuIGJ1aWxkaW5nCj4gICAgICBkZXZpY2Ug c3RhdHVzIGluIGRlYnVnZnMKPiAgICAgIHJlbmFtZSB2YXJpYWJsZXMgaW4gaW50ZWxfZW5naW5l X3R5cGVzLmggdG8gYXZvaWQgY2hlY2twYXRjaAo+ICAgICAgd2FybmluZ3MKPiB2MzogdXBkYXRl IGhlYWRlcnMgaW4gaW50ZWxfc3NldS5oCj4gdjQ6IGFkZCBjb25zdCB0byBzb21lIHNzZXVfZGV2 X2luZm8gdmFyaWFibGVzCj4gICAgICB1c2Ugc3NldS0+ZXVfc3RyaWRlIGZvciBFVSBzdHJpZGUg Y2FsY3VsYXRpb25zCj4gCj4gQ2M6IERhbmllbGUgQ2VyYW9sbyBTcHVyaW8gPGRhbmllbGUuY2Vy YW9sb3NwdXJpb0BpbnRlbC5jb20+Cj4gU2lnbmVkLW9mZi1ieTogU3R1YXJ0IFN1bW1lcnMgPHN0 dWFydC5zdW1tZXJzQGludGVsLmNvbT4KPiAtLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L2ludGVsX2VuZ2luZV9jcy5jICAgIHwgICA2ICstCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9n dC9pbnRlbF9lbmdpbmVfdHlwZXMuaCB8ICAzMiArKystLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3QvaW50ZWxfaGFuZ2NoZWNrLmMgICAgfCAgIDMgKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L2ludGVsX3NzZXUuYyAgICAgICAgIHwgIDQ5ICsrKysrLS0KPiAgIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L2ludGVsX3NzZXUuaCAgICAgICAgIHwgIDE2ICsrLQo+ICAgZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3QvaW50ZWxfd29ya2Fyb3VuZHMuYyAgfCAgIDIgKy0KPiAgIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jICAgICAgICAgIHwgIDQ0ICsrKy0tLQo+ICAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyAgICAgICAgICAgICAgfCAgIDYgKy0KPiAgIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMgICAgICAgIHwgICA1ICstCj4gICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3F1ZXJ5LmMgICAgICAgICAgICB8ICAxMCArLQo+ICAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGV2aWNlX2luZm8uYyAgICAgfCAxNDIgKysrKysr KysrKystLS0tLS0tLQo+ICAgMTEgZmlsZXMgY2hhbmdlZCwgMTk4IGluc2VydGlvbnMoKyksIDEx NyBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv aW50ZWxfZW5naW5lX2NzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVf Y3MuYwo+IGluZGV4IDZlNDBmOGVhOWE2YS4uOGY3OTY3Y2M5YTUwIDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9jcy5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2NzLmMKPiBAQCAtOTE0LDcgKzkxNCw3IEBAIHUz MiBpbnRlbF9jYWxjdWxhdGVfbWNyX3Nfc3Nfc2VsZWN0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKPiAgIAljb25zdCBzdHJ1Y3Qgc3NldV9kZXZfaW5mbyAqc3NldSA9ICZSVU5U SU1FX0lORk8oZGV2X3ByaXYpLT5zc2V1Owo+ICAgCXUzMiBtY3Jfc19zc19zZWxlY3Q7Cj4gICAJ dTMyIHNsaWNlID0gZmxzKHNzZXUtPnNsaWNlX21hc2spOwo+IC0JdTMyIHN1YnNsaWNlID0gZmxz KHNzZXUtPnN1YnNsaWNlX21hc2tbc2xpY2VdKTsKPiArCXUzMiBzdWJzbGljZSA9IGZscyhzc2V1 LT5zdWJzbGljZV9tYXNrW3NsaWNlICogc3NldS0+c3Nfc3RyaWRlXSk7Cj4gICAKPiAgIAlpZiAo SVNfR0VOKGRldl9wcml2LCAxMCkpCj4gICAJCW1jcl9zX3NzX3NlbGVjdCA9IEdFTjhfTUNSX1NM SUNFKHNsaWNlKSB8Cj4gQEAgLTk5MCw2ICs5OTAsNyBAQCB2b2lkIGludGVsX2VuZ2luZV9nZXRf aW5zdGRvbmUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAo+ICAgCQkJICAgICAgIHN0 cnVjdCBpbnRlbF9pbnN0ZG9uZSAqaW5zdGRvbmUpCj4gICB7Cj4gICAJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gZW5naW5lLT5pOTE1Owo+ICsJY29uc3Qgc3RydWN0IHNzZXVf ZGV2X2luZm8gKnNzZXUgPSAmUlVOVElNRV9JTkZPKGRldl9wcml2KS0+c3NldTsKPiAgIAlzdHJ1 Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUgPSBlbmdpbmUtPnVuY29yZTsKPiAgIAl1MzIgbW1pb19i YXNlID0gZW5naW5lLT5tbWlvX2Jhc2U7Cj4gICAJaW50IHNsaWNlOwo+IEBAIC0xMDA3LDcgKzEw MDgsOCBAQCB2b2lkIGludGVsX2VuZ2luZV9nZXRfaW5zdGRvbmUoc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lLAo+ICAgCj4gICAJCWluc3Rkb25lLT5zbGljZV9jb21tb24gPQo+ICAgCQkJ aW50ZWxfdW5jb3JlX3JlYWQodW5jb3JlLCBHRU43X1NDX0lOU1RET05FKTsKPiAtCQlmb3JfZWFj aF9pbnN0ZG9uZV9zbGljZV9zdWJzbGljZShkZXZfcHJpdiwgc2xpY2UsIHN1YnNsaWNlKSB7Cj4g KwkJZm9yX2VhY2hfaW5zdGRvbmVfc2xpY2Vfc3Vic2xpY2UoZGV2X3ByaXYsIHNzZXUsIHNsaWNl LAo+ICsJCQkJCQkgc3Vic2xpY2UpIHsKPiAgIAkJCWluc3Rkb25lLT5zYW1wbGVyW3NsaWNlXVtz dWJzbGljZV0gPQo+ICAgCQkJCXJlYWRfc3Vic2xpY2VfcmVnKGRldl9wcml2LCBzbGljZSwgc3Vi c2xpY2UsCj4gICAJCQkJCQkgIEdFTjdfU0FNUExFUl9JTlNURE9ORSk7Cj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV90eXBlcy5oIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3R5cGVzLmgKPiBpbmRleCA5ZDY0ZTMzZjg0Mjcu LjE3MTA1NDZhMjQ0NiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRl bF9lbmdpbmVfdHlwZXMuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2Vu Z2luZV90eXBlcy5oCj4gQEAgLTUzNCwyMCArNTM0LDIyIEBAIGludGVsX2VuZ2luZV9uZWVkc19i cmVhZGNydW1iX3Rhc2tsZXQoY29uc3Qgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ ICAgCXJldHVybiBlbmdpbmUtPmZsYWdzICYgSTkxNV9FTkdJTkVfTkVFRFNfQlJFQURDUlVNQl9U QVNLTEVUOwo+ICAgfQo+ICAgCj4gLSNkZWZpbmUgaW5zdGRvbmVfc2xpY2VfbWFzayhkZXZfcHJp dl9fKSBcCj4gLQkoSVNfR0VOKGRldl9wcml2X18sIDcpID8gXAo+IC0JIDEgOiBSVU5USU1FX0lO Rk8oZGV2X3ByaXZfXyktPnNzZXUuc2xpY2VfbWFzaykKPiAtCj4gLSNkZWZpbmUgaW5zdGRvbmVf c3Vic2xpY2VfbWFzayhkZXZfcHJpdl9fKSBcCj4gLQkoSVNfR0VOKGRldl9wcml2X18sIDcpID8g XAo+IC0JIDEgOiBSVU5USU1FX0lORk8oZGV2X3ByaXZfXyktPnNzZXUuc3Vic2xpY2VfbWFza1sw XSkKPiAtCj4gLSNkZWZpbmUgZm9yX2VhY2hfaW5zdGRvbmVfc2xpY2Vfc3Vic2xpY2UoZGV2X3By aXZfXywgc2xpY2VfXywgc3Vic2xpY2VfXykgXAo+IC0JZm9yICgoc2xpY2VfXykgPSAwLCAoc3Vi c2xpY2VfXykgPSAwOyBcCj4gLQkgICAgIChzbGljZV9fKSA8IEk5MTVfTUFYX1NMSUNFUzsgXAo+ IC0JICAgICAoc3Vic2xpY2VfXykgPSAoKHN1YnNsaWNlX18pICsgMSkgPCBJOTE1X01BWF9TVUJT TElDRVMgPyAoc3Vic2xpY2VfXykgKyAxIDogMCwgXAo+IC0JICAgICAgIChzbGljZV9fKSArPSAo KHN1YnNsaWNlX18pID09IDApKSBcCj4gLQkJZm9yX2VhY2hfaWYoKEJJVChzbGljZV9fKSAmIGlu c3Rkb25lX3NsaWNlX21hc2soZGV2X3ByaXZfXykpICYmIFwKPiAtCQkJICAgIChCSVQoc3Vic2xp Y2VfXykgJiBpbnN0ZG9uZV9zdWJzbGljZV9tYXNrKGRldl9wcml2X18pKSkKPiArI2RlZmluZSBp bnN0ZG9uZV9oYXNfc2xpY2UoZGV2X3ByaXZfX18sIHNzZXVfX18sIHNsaWNlX19fKSBcCj4gKwko KElTX0dFTihkZXZfcHJpdl9fXywgNykgPyBcCj4gKwkgIDEgOiAoc3NldV9fXyktPnNsaWNlX21h c2spICYgXAo+ICsJQklUKHNsaWNlX19fKSkgXAo+ICsKPiArI2RlZmluZSBpbnN0ZG9uZV9oYXNf c3Vic2xpY2UoZGV2X3ByaXZfXywgc3NldV9fLCBzbGljZV9fLCBzdWJzbGljZV9fKSBcCj4gKwko KElTX0dFTihkZXZfcHJpdl9fLCA3KSA/IFwKPiArCSAgMSA6IChzc2V1X18pLT5zdWJzbGljZV9t YXNrW3NsaWNlX18gKiAoc3NldV9fKS0+c3Nfc3RyaWRlICsgXAo+ICsJCQkJICAgICAgc3Vic2xp Y2VfXyAvIEJJVFNfUEVSX0JZVEVdKSAmIFwKPiArCSBCSVQoc3Vic2xpY2VfXyAlIEJJVFNfUEVS X0JZVEUpKSBcCj4gKwo+ICsjZGVmaW5lIGZvcl9lYWNoX2luc3Rkb25lX3NsaWNlX3N1YnNsaWNl KGRldl9wcml2Xywgc3NldV8sIHNsaWNlXywgc3Vic2xpY2VfKSBcCj4gKwlmb3IgKChzbGljZV8p ID0gMCwgKHN1YnNsaWNlXykgPSAwOyAoc2xpY2VfKSA8IEk5MTVfTUFYX1NMSUNFUzsgXAo+ICsJ ICAgICAoc3Vic2xpY2VfKSA9ICgoc3Vic2xpY2VfKSArIDEpIDwgSTkxNV9NQVhfU1VCU0xJQ0VT ID8gKHN1YnNsaWNlXykgKyAxIDogMCwgXAo+ICsJICAgICAgIChzbGljZV8pICs9ICgoc3Vic2xp Y2VfKSA9PSAwKSkgXAo+ICsJCWZvcl9lYWNoX2lmKGluc3Rkb25lX2hhc19zbGljZShkZXZfcHJp dl8sIHNzZXVfLCBzbGljZSkgJiYgXAo+ICsJCQkgICAgaW5zdGRvbmVfaGFzX3N1YnNsaWNlKGRl dl9wcml2Xywgc3NldV8sIHNsaWNlXywgc3Vic2xpY2VfKSkgXAo+ICAgCj4gICAjZW5kaWYgLyog X19JTlRFTF9FTkdJTkVfVFlQRVNfSF9fICovCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d0L2ludGVsX2hhbmdjaGVjay5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50 ZWxfaGFuZ2NoZWNrLmMKPiBpbmRleCBlNWVhYTA2ZmU3NGQuLjUzYzFjOTgxNjFlMSAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9oYW5nY2hlY2suYwo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2hhbmdjaGVjay5jCj4gQEAgLTUwLDYgKzUw LDcgQEAgc3RhdGljIGJvb2wgaW5zdGRvbmVfdW5jaGFuZ2VkKHUzMiBjdXJyZW50X2luc3Rkb25l LCB1MzIgKm9sZF9pbnN0ZG9uZSkKPiAgIHN0YXRpYyBib29sIHN1YnVuaXRzX3N0dWNrKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIHsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSBlbmdpbmUtPmk5MTU7Cj4gKwljb25zdCBzdHJ1Y3Qgc3NldV9kZXZf aW5mbyAqc3NldSA9ICZSVU5USU1FX0lORk8oZGV2X3ByaXYpLT5zc2V1Owo+ICAgCXN0cnVjdCBp bnRlbF9pbnN0ZG9uZSBpbnN0ZG9uZTsKPiAgIAlzdHJ1Y3QgaW50ZWxfaW5zdGRvbmUgKmFjY3Vf aW5zdGRvbmUgPSAmZW5naW5lLT5oYW5nY2hlY2suaW5zdGRvbmU7Cj4gICAJYm9vbCBzdHVjazsK PiBAQCAtNzEsNyArNzIsNyBAQCBzdGF0aWMgYm9vbCBzdWJ1bml0c19zdHVjayhzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICAJc3R1Y2sgJj0gaW5zdGRvbmVfdW5jaGFuZ2VkKGlu c3Rkb25lLnNsaWNlX2NvbW1vbiwKPiAgIAkJCQkgICAgJmFjY3VfaW5zdGRvbmUtPnNsaWNlX2Nv bW1vbik7Cj4gICAKPiAtCWZvcl9lYWNoX2luc3Rkb25lX3NsaWNlX3N1YnNsaWNlKGRldl9wcml2 LCBzbGljZSwgc3Vic2xpY2UpIHsKPiArCWZvcl9lYWNoX2luc3Rkb25lX3NsaWNlX3N1YnNsaWNl KGRldl9wcml2LCBzc2V1LCBzbGljZSwgc3Vic2xpY2UpIHsKPiAgIAkJc3R1Y2sgJj0gaW5zdGRv bmVfdW5jaGFuZ2VkKGluc3Rkb25lLnNhbXBsZXJbc2xpY2VdW3N1YnNsaWNlXSwKPiAgIAkJCQkJ ICAgICZhY2N1X2luc3Rkb25lLT5zYW1wbGVyW3NsaWNlXVtzdWJzbGljZV0pOwo+ICAgCQlzdHVj ayAmPSBpbnN0ZG9uZV91bmNoYW5nZWQoaW5zdGRvbmUucm93W3NsaWNlXVtzdWJzbGljZV0sCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3NzZXUuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3NzZXUuYwo+IGluZGV4IDRhMGI4MmZjMTA4Yy4uNDkz MTZiN2VmMDc0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3Nz ZXUuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3NzZXUuYwo+IEBAIC04 LDYgKzgsMTcgQEAKPiAgICNpbmNsdWRlICJpbnRlbF9scmNfcmVnLmgiCj4gICAjaW5jbHVkZSAi aW50ZWxfc3NldS5oIgo+ICAgCj4gK3ZvaWQgaW50ZWxfc3NldV9zZXRfaW5mbyhzdHJ1Y3Qgc3Nl dV9kZXZfaW5mbyAqc3NldSwgdTggbWF4X3NsaWNlcywKPiArCQkJIHU4IG1heF9zdWJzbGljZXMs IHU4IG1heF9ldXNfcGVyX3N1YnNsaWNlKQo+ICt7Cj4gKwlzc2V1LT5tYXhfc2xpY2VzID0gbWF4 X3NsaWNlczsKPiArCXNzZXUtPm1heF9zdWJzbGljZXMgPSBtYXhfc3Vic2xpY2VzOwo+ICsJc3Nl dS0+bWF4X2V1c19wZXJfc3Vic2xpY2UgPSBtYXhfZXVzX3Blcl9zdWJzbGljZTsKPiArCj4gKwlz c2V1LT5zc19zdHJpZGUgPSBHRU5fU1NFVV9TVFJJREUoc3NldS0+bWF4X3N1YnNsaWNlcyk7Cj4g Kwlzc2V1LT5ldV9zdHJpZGUgPSBHRU5fU1NFVV9TVFJJREUoc3NldS0+bWF4X2V1c19wZXJfc3Vi c2xpY2UpOwo+ICt9Cj4gKwo+ICAgdW5zaWduZWQgaW50Cj4gICBpbnRlbF9zc2V1X3N1YnNsaWNl X3RvdGFsKGNvbnN0IHN0cnVjdCBzc2V1X2Rldl9pbmZvICpzc2V1KQo+ICAgewo+IEBAIC0yMiwx NyArMzMsMzkgQEAgaW50ZWxfc3NldV9zdWJzbGljZV90b3RhbChjb25zdCBzdHJ1Y3Qgc3NldV9k ZXZfaW5mbyAqc3NldSkKPiAgIHVuc2lnbmVkIGludAo+ICAgaW50ZWxfc3NldV9zdWJzbGljZXNf cGVyX3NsaWNlKGNvbnN0IHN0cnVjdCBzc2V1X2Rldl9pbmZvICpzc2V1LCB1OCBzbGljZSkKPiAg IHsKPiAtCXJldHVybiBod2VpZ2h0OChzc2V1LT5zdWJzbGljZV9tYXNrW3NsaWNlXSk7Cj4gKwl1 bnNpZ25lZCBpbnQgaSwgdG90YWwgPSAwOwo+ICsKPiArCWZvciAoaSA9IDA7IGkgPCBzc2V1LT5z c19zdHJpZGU7IGkrKykKPiArCQl0b3RhbCArPSBod2VpZ2h0OChzc2V1LT5zdWJzbGljZV9tYXNr W3NsaWNlICogc3NldS0+c3Nfc3RyaWRlICsKPiArCQkJCQkJICAgICAgaV0pOwo+ICsKPiArCXJl dHVybiB0b3RhbDsKPiArfQo+ICsKPiArdm9pZCBpbnRlbF9zc2V1X2NvcHlfc3Vic2xpY2VzKGNv bnN0IHN0cnVjdCBzc2V1X2Rldl9pbmZvICpzc2V1LCBpbnQgc2xpY2UsCj4gKwkJCSAgICAgICB1 OCAqdG9fbWFzaywgY29uc3QgdTggKmZyb21fbWFzaykKPiArewo+ICsJaW50IG9mZnNldCA9IHNs aWNlICogc3NldS0+c3Nfc3RyaWRlOwo+ICsKPiArCW1lbWNweSgmdG9fbWFza1tvZmZzZXRdLCAm ZnJvbV9tYXNrW29mZnNldF0sIHNzZXUtPnNzX3N0cmlkZSk7Cj4gK30KPiArCj4gK3ZvaWQgaW50 ZWxfc3NldV9zZXRfc3Vic2xpY2VzKHN0cnVjdCBzc2V1X2Rldl9pbmZvICpzc2V1LCBpbnQgc2xp Y2UsCj4gKwkJCSAgICAgIHUzMiBzc19tYXNrKQo+ICt7Cj4gKwlpbnQgaSwgb2Zmc2V0ID0gc2xp Y2UgKiBzc2V1LT5zc19zdHJpZGU7Cj4gKwo+ICsJZm9yIChpID0gMDsgaSA8IHNzZXUtPnNzX3N0 cmlkZTsgaSsrKQo+ICsJCXNzZXUtPnN1YnNsaWNlX21hc2tbb2Zmc2V0ICsgaV0gPQo+ICsJCQko c3NfbWFzayA+PiAoQklUU19QRVJfQllURSAqIGkpKSAmIDB4ZmY7Cj4gICB9Cj4gICAKPiAgIHN0 YXRpYyBpbnQgaW50ZWxfc3NldV9ldV9pZHgoY29uc3Qgc3RydWN0IHNzZXVfZGV2X2luZm8gKnNz ZXUsIGludCBzbGljZSwKPiAgIAkJCSAgICAgaW50IHN1YnNsaWNlKQo+ICAgewo+IC0JaW50IHN1 YnNsaWNlX3N0cmlkZSA9IERJVl9ST1VORF9VUChzc2V1LT5tYXhfZXVzX3Blcl9zdWJzbGljZSwK PiAtCQkJCQkgICBCSVRTX1BFUl9CWVRFKTsKPiAtCWludCBzbGljZV9zdHJpZGUgPSBzc2V1LT5t YXhfc3Vic2xpY2VzICogc3Vic2xpY2Vfc3RyaWRlOwo+ICsJaW50IHNsaWNlX3N0cmlkZSA9IHNz ZXUtPm1heF9zdWJzbGljZXMgKiBzc2V1LT5ldV9zdHJpZGU7Cj4gICAKPiAtCXJldHVybiBzbGlj ZSAqIHNsaWNlX3N0cmlkZSArIHN1YnNsaWNlICogc3Vic2xpY2Vfc3RyaWRlOwo+ICsJcmV0dXJu IHNsaWNlICogc2xpY2Vfc3RyaWRlICsgc3Vic2xpY2UgKiBzc2V1LT5ldV9zdHJpZGU7Cj4gICB9 Cj4gICAKPiAgIHUxNiBpbnRlbF9zc2V1X2dldF9ldXMoY29uc3Qgc3RydWN0IHNzZXVfZGV2X2lu Zm8gKnNzZXUsIGludCBzbGljZSwKPiBAQCAtNDEsOCArNzQsNyBAQCB1MTYgaW50ZWxfc3NldV9n ZXRfZXVzKGNvbnN0IHN0cnVjdCBzc2V1X2Rldl9pbmZvICpzc2V1LCBpbnQgc2xpY2UsCj4gICAJ aW50IGksIG9mZnNldCA9IGludGVsX3NzZXVfZXVfaWR4KHNzZXUsIHNsaWNlLCBzdWJzbGljZSk7 Cj4gICAJdTE2IGV1X21hc2sgPSAwOwo+ICAgCj4gLQlmb3IgKGkgPSAwOwo+IC0JICAgICBpIDwg RElWX1JPVU5EX1VQKHNzZXUtPm1heF9ldXNfcGVyX3N1YnNsaWNlLCBCSVRTX1BFUl9CWVRFKTsg aSsrKSB7Cj4gKwlmb3IgKGkgPSAwOyBpIDwgc3NldS0+ZXVfc3RyaWRlOyBpKyspIHsKPiAgIAkJ ZXVfbWFzayB8PSAoKHUxNilzc2V1LT5ldV9tYXNrW29mZnNldCArIGldKSA8PAo+ICAgCQkJKGkg KiBCSVRTX1BFUl9CWVRFKTsKPiAgIAl9Cj4gQEAgLTU1LDggKzg3LDcgQEAgdm9pZCBpbnRlbF9z c2V1X3NldF9ldXMoc3RydWN0IHNzZXVfZGV2X2luZm8gKnNzZXUsIGludCBzbGljZSwgaW50IHN1 YnNsaWNlLAo+ICAgewo+ICAgCWludCBpLCBvZmZzZXQgPSBpbnRlbF9zc2V1X2V1X2lkeChzc2V1 LCBzbGljZSwgc3Vic2xpY2UpOwo+ICAgCj4gLQlmb3IgKGkgPSAwOwo+IC0JICAgICBpIDwgRElW X1JPVU5EX1VQKHNzZXUtPm1heF9ldXNfcGVyX3N1YnNsaWNlLCBCSVRTX1BFUl9CWVRFKTsgaSsr KSB7Cj4gKwlmb3IgKGkgPSAwOyBpIDwgc3NldS0+ZXVfc3RyaWRlOyBpKyspIHsKPiAgIAkJc3Nl dS0+ZXVfbWFza1tvZmZzZXQgKyBpXSA9Cj4gICAJCQkoZXVfbWFzayA+PiAoQklUU19QRVJfQllU RSAqIGkpKSAmIDB4ZmY7Cj4gICAJfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC9pbnRlbF9zc2V1LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9zc2V1LmgK PiBpbmRleCA1NmUzNzIxYWU4M2YuLmJmMDFmMzM4YThjYyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9zc2V1LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC9pbnRlbF9zc2V1LmgKPiBAQCAtOSwxNiArOSwxOCBAQAo+ICAgCj4gICAjaW5jbHVkZSA8 bGludXgvdHlwZXMuaD4KPiAgICNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KPiArI2luY2x1ZGUg PGxpbnV4L3N0cmluZy5oPgo+ICAgCj4gICBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZTsKPiAgIAo+ ICAgI2RlZmluZSBHRU5fTUFYX1NMSUNFUwkJKDYpIC8qIENOTCB1cHBlciBib3VuZCAqLwo+ICAg I2RlZmluZSBHRU5fTUFYX1NVQlNMSUNFUwkoOCkgLyogSUNMIHVwcGVyIGJvdW5kICovCj4gICAj ZGVmaW5lIEdFTl9TU0VVX1NUUklERShiaXRzKSBESVZfUk9VTkRfVVAoYml0cywgQklUU19QRVJf QllURSkKPiArI2RlZmluZSBHRU5fTUFYX1NVQlNMSUNFX1NUUklERSBHRU5fU1NFVV9TVFJJREUo R0VOX01BWF9TVUJTTElDRVMpCj4gICAKPiAgIHN0cnVjdCBzc2V1X2Rldl9pbmZvIHsKPiAgIAl1 OCBzbGljZV9tYXNrOwo+IC0JdTggc3Vic2xpY2VfbWFza1tHRU5fTUFYX1NMSUNFU107Cj4gKwl1 OCBzdWJzbGljZV9tYXNrW0dFTl9NQVhfU0xJQ0VTICogR0VOX01BWF9TVUJTTElDRV9TVFJJREVd Owo+ICAgCXUxNiBldV90b3RhbDsKPiAgIAl1OCBldV9wZXJfc3Vic2xpY2U7Cj4gICAJdTggbWlu X2V1X2luX3Bvb2w7Cj4gQEAgLTMzLDYgKzM1LDkgQEAgc3RydWN0IHNzZXVfZGV2X2luZm8gewo+ ICAgCXU4IG1heF9zdWJzbGljZXM7Cj4gICAJdTggbWF4X2V1c19wZXJfc3Vic2xpY2U7Cj4gICAK PiArCXU4IHNzX3N0cmlkZTsKPiArCXU4IGV1X3N0cmlkZTsKPiArCj4gICAJLyogV2UgZG9uJ3Qg aGF2ZSBtb3JlIHRoYW4gOCBldXMgcGVyIHN1YnNsaWNlIGF0IHRoZSBtb21lbnQgYW5kIGFzIHdl Cj4gICAJICogc3RvcmUgZXVzIGVuYWJsZWQgdXNpbmcgYml0cywgbm8gbmVlZCB0byBtdWx0aXBs eSBieSBldXMgcGVyCj4gICAJICogc3Vic2xpY2UuCj4gQEAgLTYzLDEyICs2OCwyMSBAQCBpbnRl bF9zc2V1X2Zyb21fZGV2aWNlX2luZm8oY29uc3Qgc3RydWN0IHNzZXVfZGV2X2luZm8gKnNzZXUp Cj4gICAJcmV0dXJuIHZhbHVlOwo+ICAgfQo+ICAgCj4gK3ZvaWQgaW50ZWxfc3NldV9zZXRfaW5m byhzdHJ1Y3Qgc3NldV9kZXZfaW5mbyAqc3NldSwgdTggbWF4X3NsaWNlcywKPiArCQkJIHU4IG1h eF9zdWJzbGljZXMsIHU4IG1heF9ldXNfcGVyX3N1YnNsaWNlKTsKPiArCj4gICB1bnNpZ25lZCBp bnQKPiAgIGludGVsX3NzZXVfc3Vic2xpY2VfdG90YWwoY29uc3Qgc3RydWN0IHNzZXVfZGV2X2lu Zm8gKnNzZXUpOwo+ICAgCj4gICB1bnNpZ25lZCBpbnQKPiAgIGludGVsX3NzZXVfc3Vic2xpY2Vz X3Blcl9zbGljZShjb25zdCBzdHJ1Y3Qgc3NldV9kZXZfaW5mbyAqc3NldSwgdTggc2xpY2UpOwo+ ICAgCj4gK3ZvaWQgaW50ZWxfc3NldV9jb3B5X3N1YnNsaWNlcyhjb25zdCBzdHJ1Y3Qgc3NldV9k ZXZfaW5mbyAqc3NldSwgaW50IHNsaWNlLAo+ICsJCQkgICAgICAgdTggKnRvX21hc2ssIGNvbnN0 IHU4ICpmcm9tX21hc2spOwo+ICsKPiArdm9pZCBpbnRlbF9zc2V1X3NldF9zdWJzbGljZXMoc3Ry dWN0IHNzZXVfZGV2X2luZm8gKnNzZXUsIGludCBzbGljZSwKPiArCQkJICAgICAgdTMyIHNzX21h c2spOwo+ICsKPiAgIHUxNiBpbnRlbF9zc2V1X2dldF9ldXMoY29uc3Qgc3RydWN0IHNzZXVfZGV2 X2luZm8gKnNzZXUsIGludCBzbGljZSwKPiAgIAkJICAgICAgIGludCBzdWJzbGljZSk7Cj4gICAK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfd29ya2Fyb3VuZHMu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3dvcmthcm91bmRzLmMKPiBpbmRleCA0 M2UyOTAzMDY1NTEuLjdjN2U5NTU2YzFjNSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC9pbnRlbF93b3JrYXJvdW5kcy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3QvaW50ZWxfd29ya2Fyb3VuZHMuYwo+IEBAIC03NjcsNyArNzY3LDcgQEAgd2FfaW5pdF9tY3Io c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIHN0cnVjdCBpOTE1X3dhX2xpc3QgKndhbCkK PiAgIAkJdTMyIHNsaWNlID0gZmxzKHNzZXUtPnNsaWNlX21hc2spOwo+ICAgCQl1MzIgZnVzZTMg PQo+ICAgCQkJaW50ZWxfdW5jb3JlX3JlYWQoJmk5MTUtPnVuY29yZSwgR0VOMTBfTUlSUk9SX0ZV U0UzKTsKPiAtCQl1OCBzc19tYXNrID0gc3NldS0+c3Vic2xpY2VfbWFza1tzbGljZV07Cj4gKwkJ dTggc3NfbWFzayA9IHNzZXUtPnN1YnNsaWNlX21hc2tbc2xpY2UgKiBzc2V1LT5zc19zdHJpZGVd Owo+ICAgCj4gICAJCXU4IGVuYWJsZWRfbWFzayA9IChzc19tYXNrIHwgc3NfbWFzayA+Pgo+ICAg CQkJCSAgIEdFTjEwX0wzQkFOS19QQUlSX0NPVU5UKSAmIEdFTjEwX0wzQkFOS19NQVNLOwo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gaW5kZXggM2YzZWU4M2FjMzE1Li4wODA4OWMy NGRiMjUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+IEBAIC0xMjU3LDYg KzEyNTcsNyBAQCBzdGF0aWMgdm9pZCBpOTE1X2luc3Rkb25lX2luZm8oc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LAo+ICAgCQkJICAgICAgIHN0cnVjdCBzZXFfZmlsZSAqbSwKPiAg IAkJCSAgICAgICBzdHJ1Y3QgaW50ZWxfaW5zdGRvbmUgKmluc3Rkb25lKQo+ICAgewo+ICsJc3Ry dWN0IHNzZXVfZGV2X2luZm8gKnNzZXUgPSAmUlVOVElNRV9JTkZPKGRldl9wcml2KS0+c3NldTsK PiAgIAlpbnQgc2xpY2U7Cj4gICAJaW50IHN1YnNsaWNlOwo+ICAgCj4gQEAgLTEyNzIsMTEgKzEy NzMsMTEgQEAgc3RhdGljIHZvaWQgaTkxNV9pbnN0ZG9uZV9pbmZvKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKPiAgIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8PSA2KQo+ICAg CQlyZXR1cm47Cj4gICAKPiAtCWZvcl9lYWNoX2luc3Rkb25lX3NsaWNlX3N1YnNsaWNlKGRldl9w cml2LCBzbGljZSwgc3Vic2xpY2UpCj4gKwlmb3JfZWFjaF9pbnN0ZG9uZV9zbGljZV9zdWJzbGlj ZShkZXZfcHJpdiwgc3NldSwgc2xpY2UsIHN1YnNsaWNlKQo+ICAgCQlzZXFfcHJpbnRmKG0sICJc dFx0U0FNUExFUl9JTlNURE9ORVslZF1bJWRdOiAweCUwOHhcbiIsCj4gICAJCQkgICBzbGljZSwg c3Vic2xpY2UsIGluc3Rkb25lLT5zYW1wbGVyW3NsaWNlXVtzdWJzbGljZV0pOwo+ICAgCj4gLQlm b3JfZWFjaF9pbnN0ZG9uZV9zbGljZV9zdWJzbGljZShkZXZfcHJpdiwgc2xpY2UsIHN1YnNsaWNl KQo+ICsJZm9yX2VhY2hfaW5zdGRvbmVfc2xpY2Vfc3Vic2xpY2UoZGV2X3ByaXYsIHNzZXUsIHNs aWNlLCBzdWJzbGljZSkKPiAgIAkJc2VxX3ByaW50ZihtLCAiXHRcdFJPV19JTlNURE9ORVslZF1b JWRdOiAweCUwOHhcbiIsCj4gICAJCQkgICBzbGljZSwgc3Vic2xpY2UsIGluc3Rkb25lLT5yb3db c2xpY2VdW3N1YnNsaWNlXSk7Cj4gICB9Cj4gQEAgLTQwNjYsNyArNDA2Nyw5IEBAIHN0YXRpYyB2 b2lkIGdlbjEwX3NzZXVfZGV2aWNlX3N0YXR1cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCj4gICAJCQljb250aW51ZTsKPiAgIAo+ICAgCQlzc2V1LT5zbGljZV9tYXNrIHw9IEJJ VChzKTsKPiAtCQlzc2V1LT5zdWJzbGljZV9tYXNrW3NdID0gaW5mby0+c3NldS5zdWJzbGljZV9t YXNrW3NdOwo+ICsJCWludGVsX3NzZXVfY29weV9zdWJzbGljZXMoJmluZm8tPnNzZXUsIHMsCj4g KwkJCQkJICBzc2V1LT5zdWJzbGljZV9tYXNrLAo+ICsJCQkJCSAgaW5mby0+c3NldS5zdWJzbGlj ZV9tYXNrKTsKPiAgIAo+ICAgCQlmb3IgKHNzID0gMDsgc3MgPCBpbmZvLT5zc2V1Lm1heF9zdWJz bGljZXM7IHNzKyspIHsKPiAgIAkJCXVuc2lnbmVkIGludCBldV9jbnQ7Cj4gQEAgLTQxMTcsMTgg KzQxMjAsMjIgQEAgc3RhdGljIHZvaWQgZ2VuOV9zc2V1X2RldmljZV9zdGF0dXMoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAgCQlzc2V1LT5zbGljZV9tYXNrIHw9IEJJVChz KTsKPiAgIAo+ICAgCQlpZiAoSVNfR0VOOV9CQyhkZXZfcHJpdikpCj4gLQkJCXNzZXUtPnN1YnNs aWNlX21hc2tbc10gPQo+IC0JCQkJUlVOVElNRV9JTkZPKGRldl9wcml2KS0+c3NldS5zdWJzbGlj ZV9tYXNrW3NdOwo+ICsJCQlpbnRlbF9zc2V1X2NvcHlfc3Vic2xpY2VzKCZpbmZvLT5zc2V1LCBz LAo+ICsJCQkJCQkgIHNzZXUtPnN1YnNsaWNlX21hc2ssCj4gKwkJCQkJCSAgaW5mby0+c3NldS5z dWJzbGljZV9tYXNrKTsKPiAgIAo+ICAgCQlmb3IgKHNzID0gMDsgc3MgPCBpbmZvLT5zc2V1Lm1h eF9zdWJzbGljZXM7IHNzKyspIHsKPiAgIAkJCXVuc2lnbmVkIGludCBldV9jbnQ7Cj4gKwkJCXU4 IHNzX2lkeCA9IHMgKiBpbmZvLT5zc2V1LnNzX3N0cmlkZSArCj4gKwkJCQkgICAgc3MgLyBCSVRT X1BFUl9CWVRFOwo+ICAgCj4gICAJCQlpZiAoSVNfR0VOOV9MUChkZXZfcHJpdikpIHsKPiAgIAkJ CQlpZiAoIShzX3JlZ1tzXSAmIChHRU45X1BHQ1RMX1NTX0FDSyhzcykpKSkKPiAgIAkJCQkJLyog c2tpcCBkaXNhYmxlZCBzdWJzbGljZSAqLwo+ICAgCQkJCQljb250aW51ZTsKPiAgIAo+IC0JCQkJ c3NldS0+c3Vic2xpY2VfbWFza1tzXSB8PSBCSVQoc3MpOwo+ICsJCQkJc3NldS0+c3Vic2xpY2Vf bWFza1tzc19pZHhdIHw9Cj4gKwkJCQkJQklUKHNzICUgQklUU19QRVJfQllURSk7Cj4gICAJCQl9 Cj4gICAKPiAgIAkJCWV1X2NudCA9IDIgKiBod2VpZ2h0MzIoZXVfcmVnWzIqcyArIHNzLzJdICYK PiBAQCAtNDE0NSwyNSArNDE1MiwyNCBAQCBzdGF0aWMgdm9pZCBnZW45X3NzZXVfZGV2aWNlX3N0 YXR1cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gICBzdGF0aWMgdm9pZCBi cm9hZHdlbGxfc3NldV9kZXZpY2Vfc3RhdHVzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwKPiAgIAkJCQkJIHN0cnVjdCBzc2V1X2Rldl9pbmZvICpzc2V1KQo+ICAgewo+ICsJc3Ry dWN0IGludGVsX3J1bnRpbWVfaW5mbyAqaW5mbyA9IFJVTlRJTUVfSU5GTyhkZXZfcHJpdik7Cj4g ICAJdTMyIHNsaWNlX2luZm8gPSBJOTE1X1JFQUQoR0VOOF9HVF9TTElDRV9JTkZPKTsKPiAgIAlp bnQgczsKPiAgIAo+ICAgCXNzZXUtPnNsaWNlX21hc2sgPSBzbGljZV9pbmZvICYgR0VOOF9MU0xJ Q0VTVEFUX01BU0s7Cj4gICAKPiAgIAlpZiAoc3NldS0+c2xpY2VfbWFzaykgewo+IC0JCXNzZXUt PmV1X3Blcl9zdWJzbGljZSA9Cj4gLQkJCVJVTlRJTUVfSU5GTyhkZXZfcHJpdiktPnNzZXUuZXVf cGVyX3N1YnNsaWNlOwo+IC0JCWZvciAocyA9IDA7IHMgPCBmbHMoc3NldS0+c2xpY2VfbWFzayk7 IHMrKykgewo+IC0JCQlzc2V1LT5zdWJzbGljZV9tYXNrW3NdID0KPiAtCQkJCVJVTlRJTUVfSU5G TyhkZXZfcHJpdiktPnNzZXUuc3Vic2xpY2VfbWFza1tzXTsKPiAtCQl9Cj4gKwkJc3NldS0+ZXVf cGVyX3N1YnNsaWNlID0gaW5mby0+c3NldS5ldV9wZXJfc3Vic2xpY2U7Cj4gKwkJZm9yIChzID0g MDsgcyA8IGZscyhzc2V1LT5zbGljZV9tYXNrKTsgcysrKQo+ICsJCQlpbnRlbF9zc2V1X2NvcHlf c3Vic2xpY2VzKCZpbmZvLT5zc2V1LCBzLAo+ICsJCQkJCQkgIHNzZXUtPnN1YnNsaWNlX21hc2ss Cj4gKwkJCQkJCSAgaW5mby0+c3NldS5zdWJzbGljZV9tYXNrKTsKPiAgIAkJc3NldS0+ZXVfdG90 YWwgPSBzc2V1LT5ldV9wZXJfc3Vic2xpY2UgKgo+ICAgCQkJCSBpbnRlbF9zc2V1X3N1YnNsaWNl X3RvdGFsKHNzZXUpOwo+ICAgCj4gICAJCS8qIHN1YnRyYWN0IGZ1c2VkIG9mZiBFVShzKSBmcm9t IGVuYWJsZWQgc2xpY2UocykgKi8KPiAgIAkJZm9yIChzID0gMDsgcyA8IGZscyhzc2V1LT5zbGlj ZV9tYXNrKTsgcysrKSB7Cj4gLQkJCXU4IHN1YnNsaWNlXzdldSA9Cj4gLQkJCQlSVU5USU1FX0lO Rk8oZGV2X3ByaXYpLT5zc2V1LnN1YnNsaWNlXzdldVtzXTsKPiArCQkJdTggc3Vic2xpY2VfN2V1 ID0gaW5mby0+c3NldS5zdWJzbGljZV83ZXVbc107Cj4gICAKPiAgIAkJCXNzZXUtPmV1X3RvdGFs IC09IGh3ZWlnaHQ4KHN1YnNsaWNlXzdldSk7Cj4gICAJCX0KPiBAQCAtNDIxMCw2ICs0MjE2LDcg QEAgc3RhdGljIHZvaWQgaTkxNV9wcmludF9zc2V1X2luZm8oc3RydWN0IHNlcV9maWxlICptLCBi b29sIGlzX2F2YWlsYWJsZV9pbmZvLAo+ICAgc3RhdGljIGludCBpOTE1X3NzZXVfc3RhdHVzKHN0 cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQo+ICAgewo+ICAgCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IG5vZGVfdG9faTkxNShtLT5wcml2YXRlKTsKPiArCWNvbnN0 IHN0cnVjdCBpbnRlbF9ydW50aW1lX2luZm8gKmluZm8gPSBSVU5USU1FX0lORk8oZGV2X3ByaXYp Owo+ICAgCXN0cnVjdCBzc2V1X2Rldl9pbmZvIHNzZXU7Cj4gICAJaW50ZWxfd2FrZXJlZl90IHdh a2VyZWY7Cj4gICAKPiBAQCAtNDIxNywxNCArNDIyNCwxMyBAQCBzdGF0aWMgaW50IGk5MTVfc3Nl dV9zdGF0dXMoc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCj4gICAJCXJldHVybiAt RU5PREVWOwo+ICAgCj4gICAJc2VxX3B1dHMobSwgIlNTRVUgRGV2aWNlIEluZm9cbiIpOwo+IC0J aTkxNV9wcmludF9zc2V1X2luZm8obSwgdHJ1ZSwgJlJVTlRJTUVfSU5GTyhkZXZfcHJpdiktPnNz ZXUpOwo+ICsJaTkxNV9wcmludF9zc2V1X2luZm8obSwgdHJ1ZSwgJmluZm8tPnNzZXUpOwo+ICAg Cj4gICAJc2VxX3B1dHMobSwgIlNTRVUgRGV2aWNlIFN0YXR1c1xuIik7Cj4gICAJbWVtc2V0KCZz c2V1LCAwLCBzaXplb2Yoc3NldSkpOwo+IC0Jc3NldS5tYXhfc2xpY2VzID0gUlVOVElNRV9JTkZP KGRldl9wcml2KS0+c3NldS5tYXhfc2xpY2VzOwo+IC0Jc3NldS5tYXhfc3Vic2xpY2VzID0gUlVO VElNRV9JTkZPKGRldl9wcml2KS0+c3NldS5tYXhfc3Vic2xpY2VzOwo+IC0Jc3NldS5tYXhfZXVz X3Blcl9zdWJzbGljZSA9Cj4gLQkJUlVOVElNRV9JTkZPKGRldl9wcml2KS0+c3NldS5tYXhfZXVz X3Blcl9zdWJzbGljZTsKPiArCWludGVsX3NzZXVfc2V0X2luZm8oJnNzZXUsIGluZm8tPnNzZXUu bWF4X3NsaWNlcywKPiArCQkJICAgIGluZm8tPnNzZXUubWF4X3N1YnNsaWNlcywKPiArCQkJICAg IGluZm8tPnNzZXUubWF4X2V1c19wZXJfc3Vic2xpY2UpOwo+ICAgCj4gICAJd2l0aF9pbnRlbF9y dW50aW1lX3BtKGRldl9wcml2LCB3YWtlcmVmKSB7Cj4gICAJCWlmIChJU19DSEVSUllWSUVXKGRl dl9wcml2KSkKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPiBpbmRleCAxMzBjNTE0MGRiMGQuLjZh ZmU0ZTNhZmVhNCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+IEBAIC0zMjYsNyArMzI2 LDcgQEAgc3RhdGljIGludCBpOTE1X2dldHBhcmFtX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsIHZvaWQgKmRhdGEsCj4gICAJc3RydWN0IHBjaV9kZXYgKnBkZXYgPSBkZXZfcHJpdi0+ZHJt LnBkZXY7Cj4gICAJY29uc3Qgc3RydWN0IHNzZXVfZGV2X2luZm8gKnNzZXUgPSAmUlVOVElNRV9J TkZPKGRldl9wcml2KS0+c3NldTsKPiAgIAlkcm1faTkxNV9nZXRwYXJhbV90ICpwYXJhbSA9IGRh dGE7Cj4gLQlpbnQgdmFsdWU7Cj4gKwlpbnQgdmFsdWUgPSAwOwo+ICAgCj4gICAJc3dpdGNoIChw YXJhbS0+cGFyYW0pIHsKPiAgIAljYXNlIEk5MTVfUEFSQU1fSVJRX0FDVElWRToKPiBAQCAtNDU1 LDcgKzQ1NSw5IEBAIHN0YXRpYyBpbnQgaTkxNV9nZXRwYXJhbV9pb2N0bChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LCB2b2lkICpkYXRhLAo+ICAgCQkJcmV0dXJuIC1FTk9ERVY7Cj4gICAJCWJyZWFr Owo+ICAgCWNhc2UgSTkxNV9QQVJBTV9TVUJTTElDRV9NQVNLOgo+IC0JCXZhbHVlID0gc3NldS0+ c3Vic2xpY2VfbWFza1swXTsKPiArCQkvKiBPbmx5IGNvcHkgYml0cyBmcm9tIHRoZSBmaXJzdCBz dWJzbGljZSAqLwo+ICsJCW1lbWNweSgmdmFsdWUsIHNzZXUtPnN1YnNsaWNlX21hc2ssCj4gKwkJ ICAgICAgIG1pbihzc2V1LT5zc19zdHJpZGUsICh1OClzaXplb2YodmFsdWUpKSk7Cj4gICAJCWlm ICghdmFsdWUpCj4gICAJCQlyZXR1cm4gLUVOT0RFVjsKPiAgIAkJYnJlYWs7Cj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jCj4gaW5kZXggZTFiODU4YmQxZDMyLi4xNDA5MThkZDli N2QgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYwo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMKPiBAQCAtNDA3LDYg KzQwNyw3IEBAIHN0YXRpYyB2b2lkIHByaW50X2Vycm9yX2J1ZmZlcnMoc3RydWN0IGRybV9pOTE1 X2Vycm9yX3N0YXRlX2J1ZiAqbSwKPiAgIHN0YXRpYyB2b2lkIGVycm9yX3ByaW50X2luc3Rkb25l KHN0cnVjdCBkcm1faTkxNV9lcnJvcl9zdGF0ZV9idWYgKm0sCj4gICAJCQkJIGNvbnN0IHN0cnVj dCBkcm1faTkxNV9lcnJvcl9lbmdpbmUgKmVlKQo+ICAgewo+ICsJc3RydWN0IHNzZXVfZGV2X2lu Zm8gKnNzZXUgPSAmUlVOVElNRV9JTkZPKG0tPmk5MTUpLT5zc2V1Owo+ICAgCWludCBzbGljZTsK PiAgIAlpbnQgc3Vic2xpY2U7Cj4gICAKPiBAQCAtNDIyLDEyICs0MjMsMTIgQEAgc3RhdGljIHZv aWQgZXJyb3JfcHJpbnRfaW5zdGRvbmUoc3RydWN0IGRybV9pOTE1X2Vycm9yX3N0YXRlX2J1ZiAq bSwKPiAgIAlpZiAoSU5URUxfR0VOKG0tPmk5MTUpIDw9IDYpCj4gICAJCXJldHVybjsKPiAgIAo+ IC0JZm9yX2VhY2hfaW5zdGRvbmVfc2xpY2Vfc3Vic2xpY2UobS0+aTkxNSwgc2xpY2UsIHN1YnNs aWNlKQo+ICsJZm9yX2VhY2hfaW5zdGRvbmVfc2xpY2Vfc3Vic2xpY2UobS0+aTkxNSwgc3NldSwg c2xpY2UsIHN1YnNsaWNlKQo+ICAgCQllcnJfcHJpbnRmKG0sICIgIFNBTVBMRVJfSU5TVERPTkVb JWRdWyVkXTogMHglMDh4XG4iLAo+ICAgCQkJICAgc2xpY2UsIHN1YnNsaWNlLAo+ICAgCQkJICAg ZWUtPmluc3Rkb25lLnNhbXBsZXJbc2xpY2VdW3N1YnNsaWNlXSk7Cj4gICAKPiAtCWZvcl9lYWNo X2luc3Rkb25lX3NsaWNlX3N1YnNsaWNlKG0tPmk5MTUsIHNsaWNlLCBzdWJzbGljZSkKPiArCWZv cl9lYWNoX2luc3Rkb25lX3NsaWNlX3N1YnNsaWNlKG0tPmk5MTUsIHNzZXUsIHNsaWNlLCBzdWJz bGljZSkKPiAgIAkJZXJyX3ByaW50ZihtLCAiICBST1dfSU5TVERPTkVbJWRdWyVkXTogMHglMDh4 XG4iLAo+ICAgCQkJICAgc2xpY2UsIHN1YnNsaWNlLAo+ICAgCQkJICAgZWUtPmluc3Rkb25lLnJv d1tzbGljZV1bc3Vic2xpY2VdKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9xdWVyeS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9xdWVyeS5jCj4gaW5kZXgg N2MxNzA4YzIyODExLi4wMDBkY2IxNDVjZTAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9xdWVyeS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9xdWVy eS5jCj4gQEAgLTM3LDggKzM3LDYgQEAgc3RhdGljIGludCBxdWVyeV90b3BvbG9neV9pbmZvKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgIAljb25zdCBzdHJ1Y3Qgc3NldV9k ZXZfaW5mbyAqc3NldSA9ICZSVU5USU1FX0lORk8oZGV2X3ByaXYpLT5zc2V1Owo+ICAgCXN0cnVj dCBkcm1faTkxNV9xdWVyeV90b3BvbG9neV9pbmZvIHRvcG87Cj4gICAJdTMyIHNsaWNlX2xlbmd0 aCwgc3Vic2xpY2VfbGVuZ3RoLCBldV9sZW5ndGgsIHRvdGFsX2xlbmd0aDsKPiAtCXU4IHN1YnNs aWNlX3N0cmlkZSA9IEdFTl9TU0VVX1NUUklERShzc2V1LT5tYXhfc3Vic2xpY2VzKTsKPiAtCXU4 IGV1X3N0cmlkZSA9IEdFTl9TU0VVX1NUUklERShzc2V1LT5tYXhfZXVzX3Blcl9zdWJzbGljZSk7 Cj4gICAJaW50IHJldDsKPiAgIAo+ICAgCWlmIChxdWVyeV9pdGVtLT5mbGFncyAhPSAwKQo+IEBA IC01MCw4ICs0OCw4IEBAIHN0YXRpYyBpbnQgcXVlcnlfdG9wb2xvZ3lfaW5mbyhzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gICAJQlVJTERfQlVHX09OKHNpemVvZih1OCkgIT0g c2l6ZW9mKHNzZXUtPnNsaWNlX21hc2spKTsKPiAgIAo+ICAgCXNsaWNlX2xlbmd0aCA9IHNpemVv Zihzc2V1LT5zbGljZV9tYXNrKTsKPiAtCXN1YnNsaWNlX2xlbmd0aCA9IHNzZXUtPm1heF9zbGlj ZXMgKiBzdWJzbGljZV9zdHJpZGU7Cj4gLQlldV9sZW5ndGggPSBzc2V1LT5tYXhfc2xpY2VzICog c3NldS0+bWF4X3N1YnNsaWNlcyAqIGV1X3N0cmlkZTsKPiArCXN1YnNsaWNlX2xlbmd0aCA9IHNz ZXUtPm1heF9zbGljZXMgKiBzc2V1LT5zc19zdHJpZGU7Cj4gKwlldV9sZW5ndGggPSBzc2V1LT5t YXhfc2xpY2VzICogc3NldS0+bWF4X3N1YnNsaWNlcyAqIHNzZXUtPmV1X3N0cmlkZTsKPiAgIAl0 b3RhbF9sZW5ndGggPSBzaXplb2YodG9wbykgKyBzbGljZV9sZW5ndGggKyBzdWJzbGljZV9sZW5n dGggKwo+ICAgCQkgICAgICAgZXVfbGVuZ3RoOwo+ICAgCj4gQEAgLTY5LDkgKzY3LDkgQEAgc3Rh dGljIGludCBxdWVyeV90b3BvbG9neV9pbmZvKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwKPiAgIAl0b3BvLm1heF9ldXNfcGVyX3N1YnNsaWNlID0gc3NldS0+bWF4X2V1c19wZXJf c3Vic2xpY2U7Cj4gICAKPiAgIAl0b3BvLnN1YnNsaWNlX29mZnNldCA9IHNsaWNlX2xlbmd0aDsK PiAtCXRvcG8uc3Vic2xpY2Vfc3RyaWRlID0gc3Vic2xpY2Vfc3RyaWRlOwo+ICsJdG9wby5zdWJz bGljZV9zdHJpZGUgPSBzc2V1LT5zc19zdHJpZGU7Cj4gICAJdG9wby5ldV9vZmZzZXQgPSBzbGlj ZV9sZW5ndGggKyBzdWJzbGljZV9sZW5ndGg7Cj4gLQl0b3BvLmV1X3N0cmlkZSA9IGV1X3N0cmlk ZTsKPiArCXRvcG8uZXVfc3RyaWRlID0gc3NldS0+ZXVfc3RyaWRlOwo+ICAgCj4gICAJaWYgKF9f Y29weV90b191c2VyKHU2NF90b191c2VyX3B0cihxdWVyeV9pdGVtLT5kYXRhX3B0ciksCj4gICAJ CQkgICAmdG9wbywgc2l6ZW9mKHRvcG8pKSkKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZGV2aWNlX2luZm8uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rl dmljZV9pbmZvLmMKPiBpbmRleCBlMWRiY2NmMDRjZDkuLmJiYmMwYThjMjE4MyAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZXZpY2VfaW5mby5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGV2aWNlX2luZm8uYwo+IEBAIC04NCwxNyArODQsNDIg QEAgdm9pZCBpbnRlbF9kZXZpY2VfaW5mb19kdW1wX2ZsYWdzKGNvbnN0IHN0cnVjdCBpbnRlbF9k ZXZpY2VfaW5mbyAqaW5mbywKPiAgICN1bmRlZiBQUklOVF9GTEFHCj4gICB9Cj4gICAKPiArI2Rl ZmluZSBTU19TVFJfTUFYX1NJWkUgKEdFTl9NQVhfU1VCU0xJQ0VfU1RSSURFICogMikKPiArCj4g K3N0YXRpYyB1OCAqCj4gK3N1YnNsaWNlX3Blcl9zbGljZV9zdHIodTggKmJ1ZiwgY29uc3Qgc3Ry dWN0IHNzZXVfZGV2X2luZm8gKnNzZXUsIHU4IHNsaWNlKQo+ICt7Cj4gKwlpbnQgaTsKPiArCXU4 IHNzX29mZnNldCA9IHNsaWNlICogc3NldS0+c3Nfc3RyaWRlOwo+ICsKPiArCUdFTV9CVUdfT04o c2xpY2UgPj0gc3NldS0+bWF4X3NsaWNlcyk7Cj4gKwo+ICsJbWVtc2V0KGJ1ZiwgMCwgU1NfU1RS X01BWF9TSVpFKTsKCkkgc3VnZ2VzdCBhIG1vcmUgaGFyZGVuZWQgYXBwcm9hY2ggb2YgY2FsbGVy IHBhc3NpbmcgaW4gdGhlIGJ1ZmZlciBzaXplLCAKc2luY2UgaXQgaXMgdGhlaXIgYnVmZmVyLgoK UmVnYXJkcywKClR2cnRrbwoKPiArCj4gKwkvKgo+ICsJICogUHJpbnQgc3Vic2xpY2UgaW5mb3Jt YXRpb24gaW4gcmV2ZXJzZSBvcmRlciB0byBtYXRjaAo+ICsJICogdXNlcnNwYWNlIGV4cGVjdGF0 aW9ucy4KPiArCSAqLwo+ICsJZm9yIChpID0gMDsgaSA8IHNzZXUtPnNzX3N0cmlkZTsgaSsrKQo+ ICsJCXNwcmludGYoJmJ1ZltpICogMl0sICIlMDJ4IiwKPiArCQkJc3NldS0+c3Vic2xpY2VfbWFz a1tzc19vZmZzZXQgKyBzc2V1LT5zc19zdHJpZGUgLQo+ICsJCQkJCSAgICAoaSArIDEpXSk7Cj4g Kwo+ICsJcmV0dXJuIGJ1ZjsKPiArfQo+ICsKPiAgIHN0YXRpYyB2b2lkIHNzZXVfZHVtcChjb25z dCBzdHJ1Y3Qgc3NldV9kZXZfaW5mbyAqc3NldSwgc3RydWN0IGRybV9wcmludGVyICpwKQo+ICAg ewo+ICAgCWludCBzOwo+ICsJdTggYnVmW1NTX1NUUl9NQVhfU0laRV07Cj4gICAKPiAgIAlkcm1f cHJpbnRmKHAsICJzbGljZSB0b3RhbDogJXUsIG1hc2s9JTA0eFxuIiwKPiAgIAkJICAgaHdlaWdo dDgoc3NldS0+c2xpY2VfbWFzayksIHNzZXUtPnNsaWNlX21hc2spOwo+ICAgCWRybV9wcmludGYo cCwgInN1YnNsaWNlIHRvdGFsOiAldVxuIiwgaW50ZWxfc3NldV9zdWJzbGljZV90b3RhbChzc2V1 KSk7Cj4gICAJZm9yIChzID0gMDsgcyA8IHNzZXUtPm1heF9zbGljZXM7IHMrKykgewo+IC0JCWRy bV9wcmludGYocCwgInNsaWNlJWQ6ICV1IHN1YnNsaWNlcywgbWFzaz0lMDR4XG4iLAo+ICsJCWRy bV9wcmludGYocCwgInNsaWNlJWQ6ICV1IHN1YnNsaWNlcywgbWFzaz0lc1xuIiwKPiAgIAkJCSAg IHMsIGludGVsX3NzZXVfc3Vic2xpY2VzX3Blcl9zbGljZShzc2V1LCBzKSwKPiAtCQkJICAgc3Nl dS0+c3Vic2xpY2VfbWFza1tzXSk7Cj4gKwkJCSAgIHN1YnNsaWNlX3Blcl9zbGljZV9zdHIoYnVm LCBzc2V1LCBzKSk7Cj4gICAJfQo+ICAgCWRybV9wcmludGYocCwgIkVVIHRvdGFsOiAldVxuIiwg c3NldS0+ZXVfdG90YWwpOwo+ICAgCWRybV9wcmludGYocCwgIkVVIHBlciBzdWJzbGljZTogJXVc biIsIHNzZXUtPmV1X3Blcl9zdWJzbGljZSk7Cj4gQEAgLTExOCw2ICsxNDMsNyBAQCB2b2lkIGlu dGVsX2RldmljZV9pbmZvX2R1bXBfdG9wb2xvZ3koY29uc3Qgc3RydWN0IHNzZXVfZGV2X2luZm8g KnNzZXUsCj4gICAJCQkJICAgICBzdHJ1Y3QgZHJtX3ByaW50ZXIgKnApCj4gICB7Cj4gICAJaW50 IHMsIHNzOwo+ICsJdTggYnVmW1NTX1NUUl9NQVhfU0laRV07Cj4gICAKPiAgIAlpZiAoc3NldS0+ bWF4X3NsaWNlcyA9PSAwKSB7Cj4gICAJCWRybV9wcmludGYocCwgIlVuYXZhaWxhYmxlXG4iKTsK PiBAQCAtMTI1LDkgKzE1MSw5IEBAIHZvaWQgaW50ZWxfZGV2aWNlX2luZm9fZHVtcF90b3BvbG9n eShjb25zdCBzdHJ1Y3Qgc3NldV9kZXZfaW5mbyAqc3NldSwKPiAgIAl9Cj4gICAKPiAgIAlmb3Ig KHMgPSAwOyBzIDwgc3NldS0+bWF4X3NsaWNlczsgcysrKSB7Cj4gLQkJZHJtX3ByaW50ZihwLCAi c2xpY2UlZDogJXUgc3Vic2xpY2UocykgKDB4JWhoeCk6XG4iLAo+ICsJCWRybV9wcmludGYocCwg InNsaWNlJWQ6ICV1IHN1YnNsaWNlKHMpICgweCVzKTpcbiIsCj4gICAJCQkgICBzLCBpbnRlbF9z c2V1X3N1YnNsaWNlc19wZXJfc2xpY2Uoc3NldSwgcyksCj4gLQkJCSAgIHNzZXUtPnN1YnNsaWNl X21hc2tbc10pOwo+ICsJCQkgICBzdWJzbGljZV9wZXJfc2xpY2Vfc3RyKGJ1Ziwgc3NldSwgcykp Owo+ICAgCj4gICAJCWZvciAoc3MgPSAwOyBzcyA8IHNzZXUtPm1heF9zdWJzbGljZXM7IHNzKysp IHsKPiAgIAkJCXUxNiBlbmFibGVkX2V1cyA9IGludGVsX3NzZXVfZ2V0X2V1cyhzc2V1LCBzLCBz cyk7Cj4gQEAgLTE1NiwxNSArMTgyLDEwIEBAIHN0YXRpYyB2b2lkIGdlbjExX3NzZXVfaW5mb19p bml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgIAl1OCBldV9lbjsKPiAg IAlpbnQgczsKPiAgIAo+IC0JaWYgKElTX0VMS0hBUlRMQUtFKGRldl9wcml2KSkgewo+IC0JCXNz ZXUtPm1heF9zbGljZXMgPSAxOwo+IC0JCXNzZXUtPm1heF9zdWJzbGljZXMgPSA0Owo+IC0JCXNz ZXUtPm1heF9ldXNfcGVyX3N1YnNsaWNlID0gODsKPiAtCX0gZWxzZSB7Cj4gLQkJc3NldS0+bWF4 X3NsaWNlcyA9IDE7Cj4gLQkJc3NldS0+bWF4X3N1YnNsaWNlcyA9IDg7Cj4gLQkJc3NldS0+bWF4 X2V1c19wZXJfc3Vic2xpY2UgPSA4Owo+IC0JfQo+ICsJaWYgKElTX0VMS0hBUlRMQUtFKGRldl9w cml2KSkKPiArCQlpbnRlbF9zc2V1X3NldF9pbmZvKHNzZXUsIDEsIDQsIDgpOwo+ICsJZWxzZQo+ ICsJCWludGVsX3NzZXVfc2V0X2luZm8oc3NldSwgMSwgOCwgOCk7Cj4gICAKPiAgIAlzX2VuID0g STkxNV9SRUFEKEdFTjExX0dUX1NMSUNFX0VOQUJMRSkgJiBHRU4xMV9HVF9TX0VOQV9NQVNLOwo+ ICAgCXNzX2VuID0gfkk5MTVfUkVBRChHRU4xMV9HVF9TVUJTTElDRV9ESVNBQkxFKTsKPiBAQCAt MTc3LDkgKzE5OCwxMSBAQCBzdGF0aWMgdm9pZCBnZW4xMV9zc2V1X2luZm9faW5pdChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gICAJCQlpbnQgc3M7Cj4gICAKPiAgIAkJCXNz ZXUtPnNsaWNlX21hc2sgfD0gQklUKHMpOwo+IC0JCQlzc2V1LT5zdWJzbGljZV9tYXNrW3NdID0g KHNzX2VuID4+IHNzX2lkeCkgJiBzc19lbl9tYXNrOwo+ICsJCQlzc2V1LT5zdWJzbGljZV9tYXNr W3MgKiBzc2V1LT5zc19zdHJpZGVdID0KPiArCQkJCShzc19lbiA+PiBzc19pZHgpICYgc3NfZW5f bWFzazsKPiAgIAkJCWZvciAoc3MgPSAwOyBzcyA8IHNzZXUtPm1heF9zdWJzbGljZXM7IHNzKysp IHsKPiAtCQkJCWlmIChzc2V1LT5zdWJzbGljZV9tYXNrW3NdICYgQklUKHNzKSkKPiArCQkJCWlm IChzc2V1LT5zdWJzbGljZV9tYXNrW3MgKiBzc2V1LT5zc19zdHJpZGVdICYKPiArCQkJCSAgICBC SVQoc3MpKQo+ICAgCQkJCQlpbnRlbF9zc2V1X3NldF9ldXMoc3NldSwgcywgc3MsIGV1X2VuKTsK PiAgIAkJCX0KPiAgIAkJfQo+IEBAIC0yMDEsMjMgKzIyNCwxMCBAQCBzdGF0aWMgdm9pZCBnZW4x MF9zc2V1X2luZm9faW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gICAJ Y29uc3QgaW50IGV1X21hc2sgPSAweGZmOwo+ICAgCXUzMiBzdWJzbGljZV9tYXNrLCBldV9lbjsK PiAgIAo+ICsJaW50ZWxfc3NldV9zZXRfaW5mbyhzc2V1LCA2LCA0LCA4KTsKPiArCj4gICAJc3Nl dS0+c2xpY2VfbWFzayA9IChmdXNlMiAmIEdFTjEwX0YyX1NfRU5BX01BU0spID4+Cj4gICAJCQkg ICAgR0VOMTBfRjJfU19FTkFfU0hJRlQ7Cj4gLQlzc2V1LT5tYXhfc2xpY2VzID0gNjsKPiAtCXNz ZXUtPm1heF9zdWJzbGljZXMgPSA0Owo+IC0Jc3NldS0+bWF4X2V1c19wZXJfc3Vic2xpY2UgPSA4 Owo+IC0KPiAtCXN1YnNsaWNlX21hc2sgPSAoMSA8PCA0KSAtIDE7Cj4gLQlzdWJzbGljZV9tYXNr ICY9IH4oKGZ1c2UyICYgR0VOMTBfRjJfU1NfRElTX01BU0spID4+Cj4gLQkJCSAgIEdFTjEwX0Yy X1NTX0RJU19TSElGVCk7Cj4gLQo+IC0JLyoKPiAtCSAqIFNsaWNlMCBjYW4gaGF2ZSB1cCB0byAz IHN1YnNsaWNlcywgYnV0IHRoZXJlIGFyZSBvbmx5IDIgaW4KPiAtCSAqIHNsaWNlMS8yLgo+IC0J ICovCj4gLQlzc2V1LT5zdWJzbGljZV9tYXNrWzBdID0gc3Vic2xpY2VfbWFzazsKPiAtCWZvciAo cyA9IDE7IHMgPCBzc2V1LT5tYXhfc2xpY2VzOyBzKyspCj4gLQkJc3NldS0+c3Vic2xpY2VfbWFz a1tzXSA9IHN1YnNsaWNlX21hc2sgJiAweDM7Cj4gICAKPiAgIAkvKiBTbGljZTAgKi8KPiAgIAll dV9lbiA9IH5JOTE1X1JFQUQoR0VOOF9FVV9ESVNBQkxFMCk7Cj4gQEAgLTI0MiwxNCArMjUyLDIy IEBAIHN0YXRpYyB2b2lkIGdlbjEwX3NzZXVfaW5mb19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKPiAgIAlldV9lbiA9IH5JOTE1X1JFQUQoR0VOMTBfRVVfRElTQUJMRTMp Owo+ICAgCWludGVsX3NzZXVfc2V0X2V1cyhzc2V1LCA1LCAxLCBldV9lbiAmIGV1X21hc2spOwo+ ICAgCj4gLQkvKiBEbyBhIHNlY29uZCBwYXNzIHdoZXJlIHdlIG1hcmsgdGhlIHN1YnNsaWNlcyBk aXNhYmxlZCBpZiBhbGwgdGhlaXIKPiAtCSAqIGV1cyBhcmUgb2ZmLgo+IC0JICovCj4gKwlzdWJz bGljZV9tYXNrID0gKDEgPDwgNCkgLSAxOwo+ICsJc3Vic2xpY2VfbWFzayAmPSB+KChmdXNlMiAm IEdFTjEwX0YyX1NTX0RJU19NQVNLKSA+Pgo+ICsJCQkgICBHRU4xMF9GMl9TU19ESVNfU0hJRlQp Owo+ICsKPiAgIAlmb3IgKHMgPSAwOyBzIDwgc3NldS0+bWF4X3NsaWNlczsgcysrKSB7Cj4gICAJ CWZvciAoc3MgPSAwOyBzcyA8IHNzZXUtPm1heF9zdWJzbGljZXM7IHNzKyspIHsKPiAgIAkJCWlm IChpbnRlbF9zc2V1X2dldF9ldXMoc3NldSwgcywgc3MpID09IDApCj4gLQkJCQlzc2V1LT5zdWJz bGljZV9tYXNrW3NdICY9IH5CSVQoc3MpOwo+ICsJCQkJc3Vic2xpY2VfbWFzayAmPSB+QklUKHNz KTsKPiAgIAkJfQo+ICsKPiArCQkvKgo+ICsJCSAqIFNsaWNlMCBjYW4gaGF2ZSB1cCB0byAzIHN1 YnNsaWNlcywgYnV0IHRoZXJlIGFyZSBvbmx5IDIgaW4KPiArCQkgKiBzbGljZTEvMi4KPiArCQkg Ki8KPiArCQlpbnRlbF9zc2V1X3NldF9zdWJzbGljZXMoc3NldSwgcywgcyA9PSAwID8gc3Vic2xp Y2VfbWFzayA6Cj4gKwkJCQkJCQkgICBzdWJzbGljZV9tYXNrICYgMHgzKTsKPiAgIAl9Cj4gICAK PiAgIAlzc2V1LT5ldV90b3RhbCA9IGNvbXB1dGVfZXVfdG90YWwoc3NldSk7Cj4gQEAgLTI3NSwx MyArMjkzLDEyIEBAIHN0YXRpYyB2b2lkIGNoZXJyeXZpZXdfc3NldV9pbmZvX2luaXQoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgewo+ICAgCXN0cnVjdCBzc2V1X2Rldl9p bmZvICpzc2V1ID0gJlJVTlRJTUVfSU5GTyhkZXZfcHJpdiktPnNzZXU7Cj4gICAJdTMyIGZ1c2U7 Cj4gKwl1OCBzdWJzbGljZV9tYXNrOwo+ICAgCj4gICAJZnVzZSA9IEk5MTVfUkVBRChDSFZfRlVT RV9HVCk7Cj4gICAKPiAgIAlzc2V1LT5zbGljZV9tYXNrID0gQklUKDApOwo+IC0Jc3NldS0+bWF4 X3NsaWNlcyA9IDE7Cj4gLQlzc2V1LT5tYXhfc3Vic2xpY2VzID0gMjsKPiAtCXNzZXUtPm1heF9l dXNfcGVyX3N1YnNsaWNlID0gODsKPiArCWludGVsX3NzZXVfc2V0X2luZm8oc3NldSwgMSwgMiwg OCk7Cj4gICAKPiAgIAlpZiAoIShmdXNlICYgQ0hWX0ZHVF9ESVNBQkxFX1NTMCkpIHsKPiAgIAkJ dTggZGlzYWJsZWRfbWFzayA9Cj4gQEAgLTI5MCw3ICszMDcsNyBAQCBzdGF0aWMgdm9pZCBjaGVy cnl2aWV3X3NzZXVfaW5mb19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikK PiAgIAkJCSgoKGZ1c2UgJiBDSFZfRkdUX0VVX0RJU19TUzBfUjFfTUFTSykgPj4KPiAgIAkJCSAg Q0hWX0ZHVF9FVV9ESVNfU1MwX1IxX1NISUZUKSA8PCA0KTsKPiAgIAo+IC0JCXNzZXUtPnN1YnNs aWNlX21hc2tbMF0gfD0gQklUKDApOwo+ICsJCXN1YnNsaWNlX21hc2sgfD0gQklUKDApOwo+ICAg CQlpbnRlbF9zc2V1X3NldF9ldXMoc3NldSwgMCwgMCwgfmRpc2FibGVkX21hc2spOwo+ICAgCX0K PiAgIAo+IEBAIC0zMDEsMTAgKzMxOCwxMiBAQCBzdGF0aWMgdm9pZCBjaGVycnl2aWV3X3NzZXVf aW5mb19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgIAkJCSgoKGZ1 c2UgJiBDSFZfRkdUX0VVX0RJU19TUzFfUjFfTUFTSykgPj4KPiAgIAkJCSAgQ0hWX0ZHVF9FVV9E SVNfU1MxX1IxX1NISUZUKSA8PCA0KTsKPiAgIAo+IC0JCXNzZXUtPnN1YnNsaWNlX21hc2tbMF0g fD0gQklUKDEpOwo+ICsJCXN1YnNsaWNlX21hc2sgfD0gQklUKDEpOwo+ICAgCQlpbnRlbF9zc2V1 X3NldF9ldXMoc3NldSwgMCwgMSwgfmRpc2FibGVkX21hc2spOwo+ICAgCX0KPiAgIAo+ICsJaW50 ZWxfc3NldV9zZXRfc3Vic2xpY2VzKHNzZXUsIDAsIHN1YnNsaWNlX21hc2spOwo+ICsKPiAgIAlz c2V1LT5ldV90b3RhbCA9IGNvbXB1dGVfZXVfdG90YWwoc3NldSk7Cj4gICAKPiAgIAkvKgo+IEBA IC0zMTIsNyArMzMxLDggQEAgc3RhdGljIHZvaWQgY2hlcnJ5dmlld19zc2V1X2luZm9faW5pdChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gICAJICogYWNyb3NzIHN1YnNsaWNl cy4KPiAgIAkqLwo+ICAgCXNzZXUtPmV1X3Blcl9zdWJzbGljZSA9IGludGVsX3NzZXVfc3Vic2xp Y2VfdG90YWwoc3NldSkgPwo+IC0JCQkJc3NldS0+ZXVfdG90YWwgLyBpbnRlbF9zc2V1X3N1YnNs aWNlX3RvdGFsKHNzZXUpIDoKPiArCQkJCXNzZXUtPmV1X3RvdGFsIC8KPiArCQkJCQlpbnRlbF9z c2V1X3N1YnNsaWNlX3RvdGFsKHNzZXUpIDoKPiAgIAkJCQkwOwo+ICAgCS8qCj4gICAJICogQ0hW IHN1cHBvcnRzIHN1YnNsaWNlIHBvd2VyIGdhdGluZyBvbiBkZXZpY2VzIHdpdGggbW9yZSB0aGFu Cj4gQEAgLTMzNiw5ICszNTYsOCBAQCBzdGF0aWMgdm9pZCBnZW45X3NzZXVfaW5mb19pbml0KHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgIAlzc2V1LT5zbGljZV9tYXNrID0g KGZ1c2UyICYgR0VOOF9GMl9TX0VOQV9NQVNLKSA+PiBHRU44X0YyX1NfRU5BX1NISUZUOwo+ICAg Cj4gICAJLyogQlhUIGhhcyBhIHNpbmdsZSBzbGljZSBhbmQgYXQgbW9zdCAzIHN1YnNsaWNlcy4g Ki8KPiAtCXNzZXUtPm1heF9zbGljZXMgPSBJU19HRU45X0xQKGRldl9wcml2KSA/IDEgOiAzOwo+ IC0Jc3NldS0+bWF4X3N1YnNsaWNlcyA9IElTX0dFTjlfTFAoZGV2X3ByaXYpID8gMyA6IDQ7Cj4g LQlzc2V1LT5tYXhfZXVzX3Blcl9zdWJzbGljZSA9IDg7Cj4gKwlpbnRlbF9zc2V1X3NldF9pbmZv KHNzZXUsIElTX0dFTjlfTFAoZGV2X3ByaXYpID8gMSA6IDMsCj4gKwkJCSAgICBJU19HRU45X0xQ KGRldl9wcml2KSA/IDMgOiA0LCA4KTsKPiAgIAo+ICAgCS8qCj4gICAJICogVGhlIHN1YnNsaWNl IGRpc2FibGUgZmllbGQgaXMgZ2xvYmFsLCBpLmUuIGl0IGFwcGxpZXMKPiBAQCAtMzU3LDE0ICsz NzYsMTYgQEAgc3RhdGljIHZvaWQgZ2VuOV9zc2V1X2luZm9faW5pdChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCj4gICAJCQkvKiBza2lwIGRpc2FibGVkIHNsaWNlICovCj4gICAJ CQljb250aW51ZTsKPiAgIAo+IC0JCXNzZXUtPnN1YnNsaWNlX21hc2tbc10gPSBzdWJzbGljZV9t YXNrOwo+ICsJCWludGVsX3NzZXVfc2V0X3N1YnNsaWNlcyhzc2V1LCBzLCBzdWJzbGljZV9tYXNr KTsKPiAgIAo+ICAgCQlldV9kaXNhYmxlID0gSTkxNV9SRUFEKEdFTjlfRVVfRElTQUJMRShzKSk7 Cj4gICAJCWZvciAoc3MgPSAwOyBzcyA8IHNzZXUtPm1heF9zdWJzbGljZXM7IHNzKyspIHsKPiAg IAkJCWludCBldV9wZXJfc3M7Cj4gICAJCQl1OCBldV9kaXNhYmxlZF9tYXNrOwo+ICsJCQl1OCBz c19pZHggPSBzICogc3NldS0+c3Nfc3RyaWRlICsgc3MgLyBCSVRTX1BFUl9CWVRFOwo+ICAgCj4g LQkJCWlmICghKHNzZXUtPnN1YnNsaWNlX21hc2tbc10gJiBCSVQoc3MpKSkKPiArCQkJaWYgKCEo c3NldS0+c3Vic2xpY2VfbWFza1tzc19pZHhdICYKPiArCQkJICAgICAgQklUKHNzICUgQklUU19Q RVJfQllURSkpKQo+ICAgCQkJCS8qIHNraXAgZGlzYWJsZWQgc3Vic2xpY2UgKi8KPiAgIAkJCQlj b250aW51ZTsKPiAgIAo+IEBAIC00MzcsOSArNDU4LDcgQEAgc3RhdGljIHZvaWQgYnJvYWR3ZWxs X3NzZXVfaW5mb19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgIAo+ ICAgCWZ1c2UyID0gSTkxNV9SRUFEKEdFTjhfRlVTRTIpOwo+ICAgCXNzZXUtPnNsaWNlX21hc2sg PSAoZnVzZTIgJiBHRU44X0YyX1NfRU5BX01BU0spID4+IEdFTjhfRjJfU19FTkFfU0hJRlQ7Cj4g LQlzc2V1LT5tYXhfc2xpY2VzID0gMzsKPiAtCXNzZXUtPm1heF9zdWJzbGljZXMgPSAzOwo+IC0J c3NldS0+bWF4X2V1c19wZXJfc3Vic2xpY2UgPSA4Owo+ICsJaW50ZWxfc3NldV9zZXRfaW5mbyhz c2V1LCAzLCAzLCA4KTsKPiAgIAo+ICAgCS8qCj4gICAJICogVGhlIHN1YnNsaWNlIGRpc2FibGUg ZmllbGQgaXMgZ2xvYmFsLCBpLmUuIGl0IGFwcGxpZXMKPiBAQCAtNDY2LDE4ICs0ODUsMjEgQEAg c3RhdGljIHZvaWQgYnJvYWR3ZWxsX3NzZXVfaW5mb19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKPiAgIAkJCS8qIHNraXAgZGlzYWJsZWQgc2xpY2UgKi8KPiAgIAkJCWNv bnRpbnVlOwo+ICAgCj4gLQkJc3NldS0+c3Vic2xpY2VfbWFza1tzXSA9IHN1YnNsaWNlX21hc2s7 Cj4gKwkJaW50ZWxfc3NldV9zZXRfc3Vic2xpY2VzKHNzZXUsIHMsIHN1YnNsaWNlX21hc2spOwo+ ICAgCj4gICAJCWZvciAoc3MgPSAwOyBzcyA8IHNzZXUtPm1heF9zdWJzbGljZXM7IHNzKyspIHsK PiAgIAkJCXU4IGV1X2Rpc2FibGVkX21hc2s7Cj4gKwkJCXU4IHNzX2lkeCA9IHMgKiBzc2V1LT5z c19zdHJpZGUgKyBzcyAvIEJJVFNfUEVSX0JZVEU7Cj4gICAJCQl1MzIgbl9kaXNhYmxlZDsKPiAg IAo+IC0JCQlpZiAoIShzc2V1LT5zdWJzbGljZV9tYXNrW3NdICYgQklUKHNzKSkpCj4gKwkJCWlm ICghKHNzZXUtPnN1YnNsaWNlX21hc2tbc3NfaWR4XSAmCj4gKwkJCSAgICAgIEJJVChzcyAlIEJJ VFNfUEVSX0JZVEUpKSkKPiAgIAkJCQkvKiBza2lwIGRpc2FibGVkIHN1YnNsaWNlICovCj4gICAJ CQkJY29udGludWU7Cj4gICAKPiAgIAkJCWV1X2Rpc2FibGVkX21hc2sgPQo+IC0JCQkJZXVfZGlz YWJsZVtzXSA+PiAoc3MgKiBzc2V1LT5tYXhfZXVzX3Blcl9zdWJzbGljZSk7Cj4gKwkJCQlldV9k aXNhYmxlW3NdID4+Cj4gKwkJCQkJKHNzICogc3NldS0+bWF4X2V1c19wZXJfc3Vic2xpY2UpOwo+ ICAgCj4gICAJCQlpbnRlbF9zc2V1X3NldF9ldXMoc3NldSwgcywgc3MsIH5ldV9kaXNhYmxlZF9t YXNrKTsKPiAgIAo+IEBAIC01MTcsNiArNTM5LDcgQEAgc3RhdGljIHZvaWQgaGFzd2VsbF9zc2V1 X2luZm9faW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gICAJc3RydWN0 IHNzZXVfZGV2X2luZm8gKnNzZXUgPSAmUlVOVElNRV9JTkZPKGRldl9wcml2KS0+c3NldTsKPiAg IAl1MzIgZnVzZTE7Cj4gICAJaW50IHMsIHNzOwo+ICsJdTMyIHN1YnNsaWNlX21hc2s7Cj4gICAK PiAgIAkvKgo+ICAgCSAqIFRoZXJlIGlzbid0IGEgcmVnaXN0ZXIgdG8gdGVsbCB1cyBob3cgbWFu eSBzbGljZXMvc3Vic2xpY2VzLiBXZQo+IEBAIC01MjgsMjIgKzU1MSwxOCBAQCBzdGF0aWMgdm9p ZCBoYXN3ZWxsX3NzZXVfaW5mb19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKPiAgIAkJLyogZmFsbCB0aHJvdWdoICovCj4gICAJY2FzZSAxOgo+ICAgCQlzc2V1LT5zbGlj ZV9tYXNrID0gQklUKDApOwo+IC0JCXNzZXUtPnN1YnNsaWNlX21hc2tbMF0gPSBCSVQoMCk7Cj4g KwkJc3Vic2xpY2VfbWFzayA9IEJJVCgwKTsKPiAgIAkJYnJlYWs7Cj4gICAJY2FzZSAyOgo+ICAg CQlzc2V1LT5zbGljZV9tYXNrID0gQklUKDApOwo+IC0JCXNzZXUtPnN1YnNsaWNlX21hc2tbMF0g PSBCSVQoMCkgfCBCSVQoMSk7Cj4gKwkJc3Vic2xpY2VfbWFzayA9IEJJVCgwKSB8IEJJVCgxKTsK PiAgIAkJYnJlYWs7Cj4gICAJY2FzZSAzOgo+ICAgCQlzc2V1LT5zbGljZV9tYXNrID0gQklUKDAp IHwgQklUKDEpOwo+IC0JCXNzZXUtPnN1YnNsaWNlX21hc2tbMF0gPSBCSVQoMCkgfCBCSVQoMSk7 Cj4gLQkJc3NldS0+c3Vic2xpY2VfbWFza1sxXSA9IEJJVCgwKSB8IEJJVCgxKTsKPiArCQlzdWJz bGljZV9tYXNrID0gQklUKDApIHwgQklUKDEpOwo+ICAgCQlicmVhazsKPiAgIAl9Cj4gICAKPiAt CXNzZXUtPm1heF9zbGljZXMgPSBod2VpZ2h0OChzc2V1LT5zbGljZV9tYXNrKTsKPiAtCXNzZXUt Pm1heF9zdWJzbGljZXMgPSBod2VpZ2h0OChzc2V1LT5zdWJzbGljZV9tYXNrWzBdKTsKPiAtCj4g ICAJZnVzZTEgPSBJOTE1X1JFQUQoSFNXX1BBVlBfRlVTRTEpOwo+ICAgCXN3aXRjaCAoKGZ1c2Ux ICYgSFNXX0YxX0VVX0RJU19NQVNLKSA+PiBIU1dfRjFfRVVfRElTX1NISUZUKSB7Cj4gICAJZGVm YXVsdDoKPiBAQCAtNTYwLDkgKzU3OSwxNCBAQCBzdGF0aWMgdm9pZCBoYXN3ZWxsX3NzZXVfaW5m b19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgIAkJc3NldS0+ZXVf cGVyX3N1YnNsaWNlID0gNjsKPiAgIAkJYnJlYWs7Cj4gICAJfQo+IC0Jc3NldS0+bWF4X2V1c19w ZXJfc3Vic2xpY2UgPSBzc2V1LT5ldV9wZXJfc3Vic2xpY2U7Cj4gKwo+ICsJaW50ZWxfc3NldV9z ZXRfaW5mbyhzc2V1LCBod2VpZ2h0OChzc2V1LT5zbGljZV9tYXNrKSwKPiArCQkJICAgIGh3ZWln aHQ4KHN1YnNsaWNlX21hc2spLAo+ICsJCQkgICAgc3NldS0+ZXVfcGVyX3N1YnNsaWNlKTsKPiAg IAo+ICAgCWZvciAocyA9IDA7IHMgPCBzc2V1LT5tYXhfc2xpY2VzOyBzKyspIHsKPiArCQlpbnRl bF9zc2V1X3NldF9zdWJzbGljZXMoc3NldSwgcywgc3Vic2xpY2VfbWFzayk7Cj4gKwo+ICAgCQlm b3IgKHNzID0gMDsgc3MgPCBzc2V1LT5tYXhfc3Vic2xpY2VzOyBzcysrKSB7Cj4gICAJCQlpbnRl bF9zc2V1X3NldF9ldXMoc3NldSwgcywgc3MsCj4gICAJCQkJCSAgICgxVUwgPDwgc3NldS0+ZXVf cGVyX3N1YnNsaWNlKSAtIDEpOwo+IApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9pbnRlbC1nZng=