From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH 5/5] drm/i915: Expand subslice mask Date: Tue, 30 Apr 2019 12:03:37 +0300 Message-ID: <87bm0nrhjq.fsf@intel.com> References: <20190429155135.6468-1-stuart.summers@intel.com> <20190429155135.6468-6-stuart.summers@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2667D8901F for ; Tue, 30 Apr 2019 09:01:34 +0000 (UTC) In-Reply-To: <20190429155135.6468-6-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: Stuart Summers , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCAyOSBBcHIgMjAxOSwgU3R1YXJ0IFN1bW1lcnMgPHN0dWFydC5zdW1tZXJzQGludGVs LmNvbT4gd3JvdGU6Cj4gQ3VycmVudGx5LCB0aGUgc3Vic2xpY2VfbWFzayBydW50aW1lIHBhcmFt ZXRlciBpcyBzdG9yZWQgYXMgYW4KPiBhcnJheSBvZiBzdWJzbGljZXMgcGVyIHNsaWNlLiBFeHBh bmQgdGhlIHN1YnNsaWNlIG1hc2sgYXJyYXkgdG8KPiBiZXR0ZXIgbWF0Y2ggd2hhdCBpcyBwcmVz ZW50ZWQgdG8gdXNlcnNwYWNlIHRocm91Z2ggdGhlCj4gSTkxNV9RVUVSWV9UT1BPTE9HWV9JTkZP IGlvY3RsLiBUaGUgaW5kZXggaW50byB0aGlzIGFycmF5IGlzCj4gdGhlbiBjYWxjdWxhdGVkOgo+ ICAgc2xpY2UgKiBzdWJzbGljZSBzdHJpZGUgKyBzdWJzbGljZSBpbmRleCAvIDgKPgo+IHYyOiBm aXggc3BhY2luZyBpbiBzZXRfc3NldV9pbmZvIGFyZ3MKPiAgICAgdXNlIHNldF9zc2V1X2luZm8g dG8gaW5pdGlhbGl6ZSBzc2V1IGRhdGEgd2hlbiBidWlsZGluZwo+ICAgICBkZXZpY2Ugc3RhdHVz IGluIGRlYnVnZnMKPiAgICAgcmVuYW1lIHZhcmlhYmxlcyBpbiBpbnRlbF9lbmdpbmVfdHlwZXMu aCB0byBhdm9pZCBjaGVja3BhdGNoCj4gICAgIHdhcm5pbmdzCj4gdjM6IHVwZGF0ZSBoZWFkZXJz IGluIGludGVsX3NzZXUuaAo+Cj4gQ2M6IERhbmllbGUgQ2VyYW9sbyBTcHVyaW8gPGRhbmllbGUu Y2VyYW9sb3NwdXJpb0BpbnRlbC5jb20+Cj4gU2lnbmVkLW9mZi1ieTogU3R1YXJ0IFN1bW1lcnMg PHN0dWFydC5zdW1tZXJzQGludGVsLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3QvaW50ZWxfZW5naW5lX2NzLmMgICAgfCAgIDYgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3QvaW50ZWxfZW5naW5lX3R5cGVzLmggfCAgMzIgKysrLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3QvaW50ZWxfaGFuZ2NoZWNrLmMgICAgfCAgIDMgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3QvaW50ZWxfc3NldS5oICAgICAgICAgfCAgNDUgKysrKystCj4gIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d0L2ludGVsX3dvcmthcm91bmRzLmMgIHwgICAyICstCj4gIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZGVidWdmcy5jICAgICAgICAgIHwgIDQzICsrKy0tLQo+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5jICAgICAgICAgICAgICB8ICAgNiArLQo+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jICAgICAgICB8ICAgNSArLQo+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3F1ZXJ5LmMgICAgICAgICAgICB8ICAxMCArLQo+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kZXZpY2VfaW5mby5jICAgICB8IDEzOSArKysrKysrKysrKy0tLS0t LS0tCj4gIDEwIGZpbGVzIGNoYW5nZWQsIDE4MyBpbnNlcnRpb25zKCspLCAxMDggZGVsZXRpb25z KC0pCj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5l X2NzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYwo+IGluZGV4 IGY3MzA4NDc5ZDUxMS4uODkyMjM1OGVlNmM2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d0L2ludGVsX2VuZ2luZV9jcy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3QvaW50ZWxfZW5naW5lX2NzLmMKPiBAQCAtOTA4LDcgKzkwOCw3IEBAIHUzMiBpbnRlbF9jYWxj dWxhdGVfbWNyX3Nfc3Nfc2VsZWN0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikK PiAgCWNvbnN0IHN0cnVjdCBzc2V1X2Rldl9pbmZvICpzc2V1ID0gJlJVTlRJTUVfSU5GTyhkZXZf cHJpdiktPnNzZXU7Cj4gIAl1MzIgbWNyX3Nfc3Nfc2VsZWN0Owo+ICAJdTMyIHNsaWNlID0gZmxz KHNzZXUtPnNsaWNlX21hc2spOwo+IC0JdTMyIHN1YnNsaWNlID0gZmxzKHNzZXUtPnN1YnNsaWNl X21hc2tbc2xpY2VdKTsKPiArCXUzMiBzdWJzbGljZSA9IGZscyhzc2V1LT5zdWJzbGljZV9tYXNr W3NsaWNlICogc3NldS0+c3Nfc3RyaWRlXSk7Cj4gIAo+ICAJaWYgKElTX0dFTihkZXZfcHJpdiwg MTApKQo+ICAJCW1jcl9zX3NzX3NlbGVjdCA9IEdFTjhfTUNSX1NMSUNFKHNsaWNlKSB8Cj4gQEAg LTk4NCw2ICs5ODQsNyBAQCB2b2lkIGludGVsX2VuZ2luZV9nZXRfaW5zdGRvbmUoc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lLAo+ICAJCQkgICAgICAgc3RydWN0IGludGVsX2luc3Rkb25l ICppbnN0ZG9uZSkKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g ZW5naW5lLT5pOTE1Owo+ICsJc3RydWN0IHNzZXVfZGV2X2luZm8gKnNzZXUgPSAmUlVOVElNRV9J TkZPKGRldl9wcml2KS0+c3NldTsKCmNvbnN0PwoKPiAgCXN0cnVjdCBpbnRlbF91bmNvcmUgKnVu Y29yZSA9IGVuZ2luZS0+dW5jb3JlOwo+ICAJdTMyIG1taW9fYmFzZSA9IGVuZ2luZS0+bW1pb19i YXNlOwo+ICAJaW50IHNsaWNlOwo+IEBAIC0xMDAxLDcgKzEwMDIsOCBAQCB2b2lkIGludGVsX2Vu Z2luZV9nZXRfaW5zdGRvbmUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAo+ICAKPiAg CQlpbnN0ZG9uZS0+c2xpY2VfY29tbW9uID0KPiAgCQkJaW50ZWxfdW5jb3JlX3JlYWQodW5jb3Jl LCBHRU43X1NDX0lOU1RET05FKTsKPiAtCQlmb3JfZWFjaF9pbnN0ZG9uZV9zbGljZV9zdWJzbGlj ZShkZXZfcHJpdiwgc2xpY2UsIHN1YnNsaWNlKSB7Cj4gKwkJZm9yX2VhY2hfaW5zdGRvbmVfc2xp Y2Vfc3Vic2xpY2UoZGV2X3ByaXYsIHNzZXUsIHNsaWNlLAo+ICsJCQkJCQkgc3Vic2xpY2UpIHsK PiAgCQkJaW5zdGRvbmUtPnNhbXBsZXJbc2xpY2VdW3N1YnNsaWNlXSA9Cj4gIAkJCQlyZWFkX3N1 YnNsaWNlX3JlZyhkZXZfcHJpdiwgc2xpY2UsIHN1YnNsaWNlLAo+ICAJCQkJCQkgIEdFTjdfU0FN UExFUl9JTlNURE9ORSk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2lu dGVsX2VuZ2luZV90eXBlcy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5l X3R5cGVzLmgKPiBpbmRleCBkOTcyYzMzOTMwOWMuLmZhNzA1Mjg5NjNhNCAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfdHlwZXMuaAo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV90eXBlcy5oCj4gQEAgLTUzNCwyMCAr NTM0LDIyIEBAIGludGVsX2VuZ2luZV9uZWVkc19icmVhZGNydW1iX3Rhc2tsZXQoY29uc3Qgc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAJcmV0dXJuIGVuZ2luZS0+ZmxhZ3MgJiBJ OTE1X0VOR0lORV9ORUVEU19CUkVBRENSVU1CX1RBU0tMRVQ7Cj4gIH0KPiAgCj4gLSNkZWZpbmUg aW5zdGRvbmVfc2xpY2VfbWFzayhkZXZfcHJpdl9fKSBcCj4gLQkoSVNfR0VOKGRldl9wcml2X18s IDcpID8gXAo+IC0JIDEgOiBSVU5USU1FX0lORk8oZGV2X3ByaXZfXyktPnNzZXUuc2xpY2VfbWFz aykKPiAtCj4gLSNkZWZpbmUgaW5zdGRvbmVfc3Vic2xpY2VfbWFzayhkZXZfcHJpdl9fKSBcCj4g LQkoSVNfR0VOKGRldl9wcml2X18sIDcpID8gXAo+IC0JIDEgOiBSVU5USU1FX0lORk8oZGV2X3By aXZfXyktPnNzZXUuc3Vic2xpY2VfbWFza1swXSkKPiAtCj4gLSNkZWZpbmUgZm9yX2VhY2hfaW5z dGRvbmVfc2xpY2Vfc3Vic2xpY2UoZGV2X3ByaXZfXywgc2xpY2VfXywgc3Vic2xpY2VfXykgXAo+ IC0JZm9yICgoc2xpY2VfXykgPSAwLCAoc3Vic2xpY2VfXykgPSAwOyBcCj4gLQkgICAgIChzbGlj ZV9fKSA8IEk5MTVfTUFYX1NMSUNFUzsgXAo+IC0JICAgICAoc3Vic2xpY2VfXykgPSAoKHN1YnNs aWNlX18pICsgMSkgPCBJOTE1X01BWF9TVUJTTElDRVMgPyAoc3Vic2xpY2VfXykgKyAxIDogMCwg XAo+IC0JICAgICAgIChzbGljZV9fKSArPSAoKHN1YnNsaWNlX18pID09IDApKSBcCj4gLQkJZm9y X2VhY2hfaWYoKEJJVChzbGljZV9fKSAmIGluc3Rkb25lX3NsaWNlX21hc2soZGV2X3ByaXZfXykp ICYmIFwKPiAtCQkJICAgIChCSVQoc3Vic2xpY2VfXykgJiBpbnN0ZG9uZV9zdWJzbGljZV9tYXNr KGRldl9wcml2X18pKSkKPiArI2RlZmluZSBpbnN0ZG9uZV9oYXNfc2xpY2UoZGV2X3ByaXZfX18s IHNzZXVfX18sIHNsaWNlX19fKSBcCj4gKwkoKElTX0dFTihkZXZfcHJpdl9fXywgNykgPyBcCj4g KwkgIDEgOiAoc3NldV9fXyktPnNsaWNlX21hc2spICYgXAo+ICsJQklUKHNsaWNlX19fKSkgXAo+ ICsKPiArI2RlZmluZSBpbnN0ZG9uZV9oYXNfc3Vic2xpY2UoZGV2X3ByaXZfXywgc3NldV9fLCBz bGljZV9fLCBzdWJzbGljZV9fKSBcCj4gKwkoKElTX0dFTihkZXZfcHJpdl9fLCA3KSA/IFwKPiAr CSAgMSA6IChzc2V1X18pLT5zdWJzbGljZV9tYXNrW3NsaWNlX18gKiAoc3NldV9fKS0+c3Nfc3Ry aWRlICsgXAo+ICsJCQkJICAgICAgc3Vic2xpY2VfXyAvIEJJVFNfUEVSX0JZVEVdKSAmIFwKPiAr CSBCSVQoc3Vic2xpY2VfXyAlIEJJVFNfUEVSX0JZVEUpKSBcCj4gKwo+ICsjZGVmaW5lIGZvcl9l YWNoX2luc3Rkb25lX3NsaWNlX3N1YnNsaWNlKGRldl9wcml2Xywgc3NldV8sIHNsaWNlXywgc3Vi c2xpY2VfKSBcCj4gKwlmb3IgKChzbGljZV8pID0gMCwgKHN1YnNsaWNlXykgPSAwOyAoc2xpY2Vf KSA8IEk5MTVfTUFYX1NMSUNFUzsgXAo+ICsJICAgICAoc3Vic2xpY2VfKSA9ICgoc3Vic2xpY2Vf KSArIDEpIDwgSTkxNV9NQVhfU1VCU0xJQ0VTID8gKHN1YnNsaWNlXykgKyAxIDogMCwgXAo+ICsJ ICAgICAgIChzbGljZV8pICs9ICgoc3Vic2xpY2VfKSA9PSAwKSkgXAo+ICsJCWZvcl9lYWNoX2lm KGluc3Rkb25lX2hhc19zbGljZShkZXZfcHJpdl8sIHNzZXVfLCBzbGljZSkgJiYgXAo+ICsJCQkg ICAgaW5zdGRvbmVfaGFzX3N1YnNsaWNlKGRldl9wcml2Xywgc3NldV8sIHNsaWNlXywgc3Vic2xp Y2VfKSkgXAo+ICAKPiAgI2VuZGlmIC8qIF9fSU5URUxfRU5HSU5FX1RZUEVTX0hfXyAqLwo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9oYW5nY2hlY2suYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2hhbmdjaGVjay5jCj4gaW5kZXggZTVlYWEwNmZl NzRkLi45NWRmY2U2NWMwMGMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv aW50ZWxfaGFuZ2NoZWNrLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9o YW5nY2hlY2suYwo+IEBAIC01MCw2ICs1MCw3IEBAIHN0YXRpYyBib29sIGluc3Rkb25lX3VuY2hh bmdlZCh1MzIgY3VycmVudF9pbnN0ZG9uZSwgdTMyICpvbGRfaW5zdGRvbmUpCj4gIHN0YXRpYyBi b29sIHN1YnVuaXRzX3N0dWNrKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgewo+ ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZW5naW5lLT5pOTE1Owo+ICsJ c3RydWN0IHNzZXVfZGV2X2luZm8gKnNzZXUgPSAmUlVOVElNRV9JTkZPKGRldl9wcml2KS0+c3Nl dTsKCmNvbnN0PwoKPiAgCXN0cnVjdCBpbnRlbF9pbnN0ZG9uZSBpbnN0ZG9uZTsKPiAgCXN0cnVj dCBpbnRlbF9pbnN0ZG9uZSAqYWNjdV9pbnN0ZG9uZSA9ICZlbmdpbmUtPmhhbmdjaGVjay5pbnN0 ZG9uZTsKPiAgCWJvb2wgc3R1Y2s7Cj4gQEAgLTcxLDcgKzcyLDcgQEAgc3RhdGljIGJvb2wgc3Vi dW5pdHNfc3R1Y2soc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAJc3R1Y2sgJj0g aW5zdGRvbmVfdW5jaGFuZ2VkKGluc3Rkb25lLnNsaWNlX2NvbW1vbiwKPiAgCQkJCSAgICAmYWNj dV9pbnN0ZG9uZS0+c2xpY2VfY29tbW9uKTsKPiAgCj4gLQlmb3JfZWFjaF9pbnN0ZG9uZV9zbGlj ZV9zdWJzbGljZShkZXZfcHJpdiwgc2xpY2UsIHN1YnNsaWNlKSB7Cj4gKwlmb3JfZWFjaF9pbnN0 ZG9uZV9zbGljZV9zdWJzbGljZShkZXZfcHJpdiwgc3NldSwgc2xpY2UsIHN1YnNsaWNlKSB7Cj4g IAkJc3R1Y2sgJj0gaW5zdGRvbmVfdW5jaGFuZ2VkKGluc3Rkb25lLnNhbXBsZXJbc2xpY2VdW3N1 YnNsaWNlXSwKPiAgCQkJCQkgICAgJmFjY3VfaW5zdGRvbmUtPnNhbXBsZXJbc2xpY2VdW3N1YnNs aWNlXSk7Cj4gIAkJc3R1Y2sgJj0gaW5zdGRvbmVfdW5jaGFuZ2VkKGluc3Rkb25lLnJvd1tzbGlj ZV1bc3Vic2xpY2VdLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRl bF9zc2V1LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9zc2V1LmgKPiBpbmRleCA1 MTI3YjRmZjkyYmYuLjM0YjQ2MWRhNjczNSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC9pbnRlbF9zc2V1LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRl bF9zc2V1LmgKPiBAQCAtOSwxNiArOSwxOCBAQAo+ICAKPiAgI2luY2x1ZGUgPGxpbnV4L3R5cGVz Lmg+Cj4gICNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KPiArI2luY2x1ZGUgPGxpbnV4L3N0cmlu Zy5oPgo+ICAKPiAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGU7Cj4gIAo+ICAjZGVmaW5lIEdFTl9N QVhfU0xJQ0VTCQkoNikgLyogQ05MIHVwcGVyIGJvdW5kICovCj4gICNkZWZpbmUgR0VOX01BWF9T VUJTTElDRVMJKDgpIC8qIElDTCB1cHBlciBib3VuZCAqLwo+ICAjZGVmaW5lIEdFTl9TU0VVX1NU UklERShiaXRzKSBESVZfUk9VTkRfVVAoYml0cywgQklUU19QRVJfQllURSkKPiArI2RlZmluZSBH RU5fTUFYX1NVQlNMSUNFX1NUUklERSBHRU5fU1NFVV9TVFJJREUoR0VOX01BWF9TVUJTTElDRVMp Cj4gIAo+ICBzdHJ1Y3Qgc3NldV9kZXZfaW5mbyB7Cj4gIAl1OCBzbGljZV9tYXNrOwo+IC0JdTgg c3Vic2xpY2VfbWFza1tHRU5fTUFYX1NMSUNFU107Cj4gKwl1OCBzdWJzbGljZV9tYXNrW0dFTl9N QVhfU0xJQ0VTICogR0VOX01BWF9TVUJTTElDRV9TVFJJREVdOwo+ICAJdTE2IGV1X3RvdGFsOwo+ ICAJdTggZXVfcGVyX3N1YnNsaWNlOwo+ICAJdTggbWluX2V1X2luX3Bvb2w7Cj4gQEAgLTMzLDYg KzM1LDkgQEAgc3RydWN0IHNzZXVfZGV2X2luZm8gewo+ICAJdTggbWF4X3N1YnNsaWNlczsKPiAg CXU4IG1heF9ldXNfcGVyX3N1YnNsaWNlOwo+ICAKPiArCXU4IHNzX3N0cmlkZTsKPiArCXU4IGV1 X3N0cmlkZTsKPiArCj4gIAkvKiBXZSBkb24ndCBoYXZlIG1vcmUgdGhhbiA4IGV1cyBwZXIgc3Vi c2xpY2UgYXQgdGhlIG1vbWVudCBhbmQgYXMgd2UKPiAgCSAqIHN0b3JlIGV1cyBlbmFibGVkIHVz aW5nIGJpdHMsIG5vIG5lZWQgdG8gbXVsdGlwbHkgYnkgZXVzIHBlcgo+ICAJICogc3Vic2xpY2Uu Cj4gQEAgLTYzLDYgKzY4LDE3IEBAIGludGVsX3NzZXVfZnJvbV9kZXZpY2VfaW5mbyhjb25zdCBz dHJ1Y3Qgc3NldV9kZXZfaW5mbyAqc3NldSkKPiAgCXJldHVybiB2YWx1ZTsKPiAgfQo+ICAKPiAr c3RhdGljIGlubGluZSB2b2lkIHNldF9zc2V1X2luZm8oc3RydWN0IHNzZXVfZGV2X2luZm8gKnNz ZXUsIHU4IG1heF9zbGljZXMsCj4gKwkJCQkgdTggbWF4X3N1YnNsaWNlcywgdTggbWF4X2V1c19w ZXJfc3Vic2xpY2UpCj4gK3sKPiArCXNzZXUtPm1heF9zbGljZXMgPSBtYXhfc2xpY2VzOwo+ICsJ c3NldS0+bWF4X3N1YnNsaWNlcyA9IG1heF9zdWJzbGljZXM7Cj4gKwlzc2V1LT5tYXhfZXVzX3Bl cl9zdWJzbGljZSA9IG1heF9ldXNfcGVyX3N1YnNsaWNlOwo+ICsKPiArCXNzZXUtPnNzX3N0cmlk ZSA9IEdFTl9TU0VVX1NUUklERShzc2V1LT5tYXhfc3Vic2xpY2VzKTsKPiArCXNzZXUtPmV1X3N0 cmlkZSA9IEdFTl9TU0VVX1NUUklERShzc2V1LT5tYXhfZXVzX3Blcl9zdWJzbGljZSk7Cj4gK30K PiArCj4gIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IHNzZXVfc3Vic2xpY2VfdG90YWwoY29u c3Qgc3RydWN0IHNzZXVfZGV2X2luZm8gKnNzZXUpCj4gIHsKPiAgCXVuc2lnbmVkIGludCBpLCB0 b3RhbCA9IDA7Cj4gQEAgLTc2LDcgKzkyLDMyIEBAIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50 IHNzZXVfc3Vic2xpY2VfdG90YWwoY29uc3Qgc3RydWN0IHNzZXVfZGV2X2luZm8gKnNzZXUpCj4g IHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50Cj4gIHNzZXVfc3Vic2xpY2VzX3Blcl9zbGljZShj b25zdCBzdHJ1Y3Qgc3NldV9kZXZfaW5mbyAqc3NldSwgdTggc2xpY2UpCj4gIHsKPiAtCXJldHVy biBod2VpZ2h0OChzc2V1LT5zdWJzbGljZV9tYXNrW3NsaWNlXSk7Cj4gKwl1bnNpZ25lZCBpbnQg aSwgdG90YWwgPSAwOwo+ICsKPiArCWZvciAoaSA9IDA7IGkgPCBzc2V1LT5zc19zdHJpZGU7IGkr KykKPiArCQl0b3RhbCArPSBod2VpZ2h0OChzc2V1LT5zdWJzbGljZV9tYXNrW3NsaWNlICogc3Nl dS0+c3Nfc3RyaWRlICsKPiArCQkJCQkJICAgICAgaV0pOwo+ICsKPiArCXJldHVybiB0b3RhbDsK PiArfQo+ICsKPiArc3RhdGljIGlubGluZSB2b2lkIHNzZXVfY29weV9zdWJzbGljZXMoY29uc3Qg c3RydWN0IHNzZXVfZGV2X2luZm8gKnNzZXUsCj4gKwkJCQkgICAgICAgaW50IHNsaWNlLCB1OCAq dG9fbWFzaywKPiArCQkJCSAgICAgICBjb25zdCB1OCAqZnJvbV9tYXNrKQo+ICt7Cj4gKwlpbnQg b2Zmc2V0ID0gc2xpY2UgKiBzc2V1LT5zc19zdHJpZGU7Cj4gKwo+ICsJbWVtY3B5KCZ0b19tYXNr W29mZnNldF0sICZmcm9tX21hc2tbb2Zmc2V0XSwgc3NldS0+c3Nfc3RyaWRlKTsKPiArfQo+ICsK PiArc3RhdGljIGlubGluZSB2b2lkIHNzZXVfc2V0X3N1YnNsaWNlcyhzdHJ1Y3Qgc3NldV9kZXZf aW5mbyAqc3NldSwKPiArCQkJCSAgICAgIGludCBzbGljZSwgdTMyIHNzX21hc2spCj4gK3sKPiAr CWludCBpLCBvZmZzZXQgPSBzbGljZSAqIHNzZXUtPnNzX3N0cmlkZTsKPiArCj4gKwlmb3IgKGkg PSAwOyBpIDwgc3NldS0+c3Nfc3RyaWRlOyBpKyspCj4gKwkJc3NldS0+c3Vic2xpY2VfbWFza1tv ZmZzZXQgKyBpXSA9Cj4gKwkJCShzc19tYXNrID4+IChCSVRTX1BFUl9CWVRFICogaSkpICYgMHhm ZjsKPiAgfQo+ICAKPiAgc3RhdGljIGlubGluZSBpbnQgc3NldV9ldV9pZHgoY29uc3Qgc3RydWN0 IHNzZXVfZGV2X2luZm8gKnNzZXUsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L2ludGVsX3dvcmthcm91bmRzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF93 b3JrYXJvdW5kcy5jCj4gaW5kZXggNTc1MTQ0NmE0YjBiLi41MWRmODg4NzNmZjUgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfd29ya2Fyb3VuZHMuYwo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3dvcmthcm91bmRzLmMKPiBAQCAtNzcxLDcg Kzc3MSw3IEBAIHdhX2luaXRfbWNyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCBzdHJ1 Y3QgaTkxNV93YV9saXN0ICp3YWwpCj4gIAkJdTMyIHNsaWNlID0gZmxzKHNzZXUtPnNsaWNlX21h c2spOwo+ICAJCXUzMiBmdXNlMyA9Cj4gIAkJCWludGVsX3VuY29yZV9yZWFkKCZpOTE1LT51bmNv cmUsIEdFTjEwX01JUlJPUl9GVVNFMyk7Cj4gLQkJdTggc3NfbWFzayA9IHNzZXUtPnN1YnNsaWNl X21hc2tbc2xpY2VdOwo+ICsJCXU4IHNzX21hc2sgPSBzc2V1LT5zdWJzbGljZV9tYXNrW3NsaWNl ICogc3NldS0+c3Nfc3RyaWRlXTsKPiAgCj4gIAkJdTggZW5hYmxlZF9tYXNrID0gKHNzX21hc2sg fCBzc19tYXNrID4+Cj4gIAkJCQkgICBHRU4xMF9MM0JBTktfUEFJUl9DT1VOVCkgJiBHRU4xMF9M M0JBTktfTUFTSzsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1 Z2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+IGluZGV4IDBlY2Yw MDZkMjZiMy4uNGY4ZDQzNzA5MTJmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZGVidWdmcy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2Zz LmMKPiBAQCAtMTI1Niw2ICsxMjU2LDcgQEAgc3RhdGljIHZvaWQgaTkxNV9pbnN0ZG9uZV9pbmZv KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCQkJICAgICAgIHN0cnVjdCBz ZXFfZmlsZSAqbSwKPiAgCQkJICAgICAgIHN0cnVjdCBpbnRlbF9pbnN0ZG9uZSAqaW5zdGRvbmUp Cj4gIHsKPiArCXN0cnVjdCBzc2V1X2Rldl9pbmZvICpzc2V1ID0gJlJVTlRJTUVfSU5GTyhkZXZf cHJpdiktPnNzZXU7Cj4gIAlpbnQgc2xpY2U7Cj4gIAlpbnQgc3Vic2xpY2U7Cj4gIAo+IEBAIC0x MjcxLDExICsxMjcyLDExIEBAIHN0YXRpYyB2b2lkIGk5MTVfaW5zdGRvbmVfaW5mbyhzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8 PSA2KQo+ICAJCXJldHVybjsKPiAgCj4gLQlmb3JfZWFjaF9pbnN0ZG9uZV9zbGljZV9zdWJzbGlj ZShkZXZfcHJpdiwgc2xpY2UsIHN1YnNsaWNlKQo+ICsJZm9yX2VhY2hfaW5zdGRvbmVfc2xpY2Vf c3Vic2xpY2UoZGV2X3ByaXYsIHNzZXUsIHNsaWNlLCBzdWJzbGljZSkKPiAgCQlzZXFfcHJpbnRm KG0sICJcdFx0U0FNUExFUl9JTlNURE9ORVslZF1bJWRdOiAweCUwOHhcbiIsCj4gIAkJCSAgIHNs aWNlLCBzdWJzbGljZSwgaW5zdGRvbmUtPnNhbXBsZXJbc2xpY2VdW3N1YnNsaWNlXSk7Cj4gIAo+ IC0JZm9yX2VhY2hfaW5zdGRvbmVfc2xpY2Vfc3Vic2xpY2UoZGV2X3ByaXYsIHNsaWNlLCBzdWJz bGljZSkKPiArCWZvcl9lYWNoX2luc3Rkb25lX3NsaWNlX3N1YnNsaWNlKGRldl9wcml2LCBzc2V1 LCBzbGljZSwgc3Vic2xpY2UpCj4gIAkJc2VxX3ByaW50ZihtLCAiXHRcdFJPV19JTlNURE9ORVsl ZF1bJWRdOiAweCUwOHhcbiIsCj4gIAkJCSAgIHNsaWNlLCBzdWJzbGljZSwgaW5zdGRvbmUtPnJv d1tzbGljZV1bc3Vic2xpY2VdKTsKPiAgfQo+IEBAIC00MDY1LDcgKzQwNjYsOSBAQCBzdGF0aWMg dm9pZCBnZW4xMF9zc2V1X2RldmljZV9zdGF0dXMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAo+ICAJCQljb250aW51ZTsKPiAgCj4gIAkJc3NldS0+c2xpY2VfbWFzayB8PSBCSVQo cyk7Cj4gLQkJc3NldS0+c3Vic2xpY2VfbWFza1tzXSA9IGluZm8tPnNzZXUuc3Vic2xpY2VfbWFz a1tzXTsKPiArCQlzc2V1X2NvcHlfc3Vic2xpY2VzKCZpbmZvLT5zc2V1LCBzLAo+ICsJCQkJICAg IHNzZXUtPnN1YnNsaWNlX21hc2ssCj4gKwkJCQkgICAgaW5mby0+c3NldS5zdWJzbGljZV9tYXNr KTsKPiAgCj4gIAkJZm9yIChzcyA9IDA7IHNzIDwgaW5mby0+c3NldS5tYXhfc3Vic2xpY2VzOyBz cysrKSB7Cj4gIAkJCXVuc2lnbmVkIGludCBldV9jbnQ7Cj4gQEAgLTQxMTYsMTggKzQxMTksMjIg QEAgc3RhdGljIHZvaWQgZ2VuOV9zc2V1X2RldmljZV9zdGF0dXMoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LAo+ICAJCXNzZXUtPnNsaWNlX21hc2sgfD0gQklUKHMpOwo+ICAKPiAg CQlpZiAoSVNfR0VOOV9CQyhkZXZfcHJpdikpCj4gLQkJCXNzZXUtPnN1YnNsaWNlX21hc2tbc10g PQo+IC0JCQkJUlVOVElNRV9JTkZPKGRldl9wcml2KS0+c3NldS5zdWJzbGljZV9tYXNrW3NdOwo+ ICsJCQlzc2V1X2NvcHlfc3Vic2xpY2VzKCZpbmZvLT5zc2V1LCBzLAo+ICsJCQkJCSAgICBzc2V1 LT5zdWJzbGljZV9tYXNrLAo+ICsJCQkJCSAgICBpbmZvLT5zc2V1LnN1YnNsaWNlX21hc2spOwo+ ICAKPiAgCQlmb3IgKHNzID0gMDsgc3MgPCBpbmZvLT5zc2V1Lm1heF9zdWJzbGljZXM7IHNzKysp IHsKPiAgCQkJdW5zaWduZWQgaW50IGV1X2NudDsKPiArCQkJdTggc3NfaWR4ID0gcyAqIGluZm8t PnNzZXUuc3Nfc3RyaWRlICsKPiArCQkJCSAgICBzcyAvIEJJVFNfUEVSX0JZVEU7Cj4gIAo+ICAJ CQlpZiAoSVNfR0VOOV9MUChkZXZfcHJpdikpIHsKPiAgCQkJCWlmICghKHNfcmVnW3NdICYgKEdF TjlfUEdDVExfU1NfQUNLKHNzKSkpKQo+ICAJCQkJCS8qIHNraXAgZGlzYWJsZWQgc3Vic2xpY2Ug Ki8KPiAgCQkJCQljb250aW51ZTsKPiAgCj4gLQkJCQlzc2V1LT5zdWJzbGljZV9tYXNrW3NdIHw9 IEJJVChzcyk7Cj4gKwkJCQlzc2V1LT5zdWJzbGljZV9tYXNrW3NzX2lkeF0gfD0KPiArCQkJCQlC SVQoc3MgJSBCSVRTX1BFUl9CWVRFKTsKPiAgCQkJfQo+ICAKPiAgCQkJZXVfY250ID0gMiAqIGh3 ZWlnaHQzMihldV9yZWdbMipzICsgc3MvMl0gJgo+IEBAIC00MTQ0LDI1ICs0MTUxLDI0IEBAIHN0 YXRpYyB2b2lkIGdlbjlfc3NldV9kZXZpY2Vfc3RhdHVzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKPiAgc3RhdGljIHZvaWQgYnJvYWR3ZWxsX3NzZXVfZGV2aWNlX3N0YXR1cyhz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJCQkJIHN0cnVjdCBzc2V1X2Rl dl9pbmZvICpzc2V1KQo+ICB7Cj4gKwlzdHJ1Y3QgaW50ZWxfcnVudGltZV9pbmZvICppbmZvID0g UlVOVElNRV9JTkZPKGRldl9wcml2KTsKPiAgCXUzMiBzbGljZV9pbmZvID0gSTkxNV9SRUFEKEdF TjhfR1RfU0xJQ0VfSU5GTyk7Cj4gIAlpbnQgczsKPiAgCj4gIAlzc2V1LT5zbGljZV9tYXNrID0g c2xpY2VfaW5mbyAmIEdFTjhfTFNMSUNFU1RBVF9NQVNLOwo+ICAKPiAgCWlmIChzc2V1LT5zbGlj ZV9tYXNrKSB7Cj4gLQkJc3NldS0+ZXVfcGVyX3N1YnNsaWNlID0KPiAtCQkJUlVOVElNRV9JTkZP KGRldl9wcml2KS0+c3NldS5ldV9wZXJfc3Vic2xpY2U7Cj4gLQkJZm9yIChzID0gMDsgcyA8IGZs cyhzc2V1LT5zbGljZV9tYXNrKTsgcysrKSB7Cj4gLQkJCXNzZXUtPnN1YnNsaWNlX21hc2tbc10g PQo+IC0JCQkJUlVOVElNRV9JTkZPKGRldl9wcml2KS0+c3NldS5zdWJzbGljZV9tYXNrW3NdOwo+ IC0JCX0KPiArCQlzc2V1LT5ldV9wZXJfc3Vic2xpY2UgPSBpbmZvLT5zc2V1LmV1X3Blcl9zdWJz bGljZTsKPiArCQlmb3IgKHMgPSAwOyBzIDwgZmxzKHNzZXUtPnNsaWNlX21hc2spOyBzKyspCj4g KwkJCXNzZXVfY29weV9zdWJzbGljZXMoJmluZm8tPnNzZXUsIHMsCj4gKwkJCQkJICAgIHNzZXUt PnN1YnNsaWNlX21hc2ssCj4gKwkJCQkJICAgIGluZm8tPnNzZXUuc3Vic2xpY2VfbWFzayk7Cj4g IAkJc3NldS0+ZXVfdG90YWwgPSBzc2V1LT5ldV9wZXJfc3Vic2xpY2UgKgo+ICAJCQkJIHNzZXVf c3Vic2xpY2VfdG90YWwoc3NldSk7Cj4gIAo+ICAJCS8qIHN1YnRyYWN0IGZ1c2VkIG9mZiBFVShz KSBmcm9tIGVuYWJsZWQgc2xpY2UocykgKi8KPiAgCQlmb3IgKHMgPSAwOyBzIDwgZmxzKHNzZXUt PnNsaWNlX21hc2spOyBzKyspIHsKPiAtCQkJdTggc3Vic2xpY2VfN2V1ID0KPiAtCQkJCVJVTlRJ TUVfSU5GTyhkZXZfcHJpdiktPnNzZXUuc3Vic2xpY2VfN2V1W3NdOwo+ICsJCQl1OCBzdWJzbGlj ZV83ZXUgPSBpbmZvLT5zc2V1LnN1YnNsaWNlXzdldVtzXTsKPiAgCj4gIAkJCXNzZXUtPmV1X3Rv dGFsIC09IGh3ZWlnaHQ4KHN1YnNsaWNlXzdldSk7Cj4gIAkJfQo+IEBAIC00MjA5LDYgKzQyMTUs NyBAQCBzdGF0aWMgdm9pZCBpOTE1X3ByaW50X3NzZXVfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0s IGJvb2wgaXNfYXZhaWxhYmxlX2luZm8sCj4gIHN0YXRpYyBpbnQgaTkxNV9zc2V1X3N0YXR1cyhz dHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gbm9kZV90b19pOTE1KG0tPnByaXZhdGUpOwo+ICsJY29uc3Qg c3RydWN0IGludGVsX3J1bnRpbWVfaW5mbyAqaW5mbyA9IFJVTlRJTUVfSU5GTyhkZXZfcHJpdik7 Cj4gIAlzdHJ1Y3Qgc3NldV9kZXZfaW5mbyBzc2V1Owo+ICAJaW50ZWxfd2FrZXJlZl90IHdha2Vy ZWY7Cj4gIAo+IEBAIC00MjE2LDE0ICs0MjIzLDEyIEBAIHN0YXRpYyBpbnQgaTkxNV9zc2V1X3N0 YXR1cyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKPiAgCQlyZXR1cm4gLUVOT0RF VjsKPiAgCj4gIAlzZXFfcHV0cyhtLCAiU1NFVSBEZXZpY2UgSW5mb1xuIik7Cj4gLQlpOTE1X3By aW50X3NzZXVfaW5mbyhtLCB0cnVlLCAmUlVOVElNRV9JTkZPKGRldl9wcml2KS0+c3NldSk7Cj4g KwlpOTE1X3ByaW50X3NzZXVfaW5mbyhtLCB0cnVlLCAmaW5mby0+c3NldSk7Cj4gIAo+ICAJc2Vx X3B1dHMobSwgIlNTRVUgRGV2aWNlIFN0YXR1c1xuIik7Cj4gIAltZW1zZXQoJnNzZXUsIDAsIHNp emVvZihzc2V1KSk7Cj4gLQlzc2V1Lm1heF9zbGljZXMgPSBSVU5USU1FX0lORk8oZGV2X3ByaXYp LT5zc2V1Lm1heF9zbGljZXM7Cj4gLQlzc2V1Lm1heF9zdWJzbGljZXMgPSBSVU5USU1FX0lORk8o ZGV2X3ByaXYpLT5zc2V1Lm1heF9zdWJzbGljZXM7Cj4gLQlzc2V1Lm1heF9ldXNfcGVyX3N1YnNs aWNlID0KPiAtCQlSVU5USU1FX0lORk8oZGV2X3ByaXYpLT5zc2V1Lm1heF9ldXNfcGVyX3N1YnNs aWNlOwo+ICsJc2V0X3NzZXVfaW5mbygmc3NldSwgaW5mby0+c3NldS5tYXhfc2xpY2VzLCBpbmZv LT5zc2V1Lm1heF9zdWJzbGljZXMsCj4gKwkJICAgICAgaW5mby0+c3NldS5tYXhfZXVzX3Blcl9z dWJzbGljZSk7Cj4gIAo+ICAJd2l0aF9pbnRlbF9ydW50aW1lX3BtKGRldl9wcml2LCB3YWtlcmVm KSB7Cj4gIAkJaWYgKElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKQo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuYwo+IGluZGV4IGI2Y2U3NTgwZDQxNC4uN2E5NWMyNjJhYTE0IDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5jCj4gQEAgLTMyMyw3ICszMjMsNyBAQCBzdGF0aWMgaW50IGk5MTVfZ2V0cGFy YW1faW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKPiAgCXN0cnVjdCBw Y2lfZGV2ICpwZGV2ID0gZGV2X3ByaXYtPmRybS5wZGV2Owo+ICAJc3RydWN0IHNzZXVfZGV2X2lu Zm8gKnNzZXUgPSAmUlVOVElNRV9JTkZPKGRldl9wcml2KS0+c3NldTsKPiAgCWRybV9pOTE1X2dl dHBhcmFtX3QgKnBhcmFtID0gZGF0YTsKPiAtCWludCB2YWx1ZTsKPiArCWludCB2YWx1ZSA9IDA7 Cj4gIAo+ICAJc3dpdGNoIChwYXJhbS0+cGFyYW0pIHsKPiAgCWNhc2UgSTkxNV9QQVJBTV9JUlFf QUNUSVZFOgo+IEBAIC00NTIsNyArNDUyLDkgQEAgc3RhdGljIGludCBpOTE1X2dldHBhcmFtX2lv Y3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4gIAkJCXJldHVybiAtRU5P REVWOwo+ICAJCWJyZWFrOwo+ICAJY2FzZSBJOTE1X1BBUkFNX1NVQlNMSUNFX01BU0s6Cj4gLQkJ dmFsdWUgPSBzc2V1LT5zdWJzbGljZV9tYXNrWzBdOwo+ICsJCS8qIE9ubHkgY29weSBiaXRzIGZy b20gdGhlIGZpcnN0IHN1YnNsaWNlICovCj4gKwkJbWVtY3B5KCZ2YWx1ZSwgc3NldS0+c3Vic2xp Y2VfbWFzaywKPiArCQkgICAgICAgbWluKHNzZXUtPnNzX3N0cmlkZSwgKHU4KXNpemVvZih2YWx1 ZSkpKTsKPiAgCQlpZiAoIXZhbHVlKQo+ICAJCQlyZXR1cm4gLUVOT0RFVjsKPiAgCQlicmVhazsK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMKPiBpbmRleCBmNTFmZjY4M2RkMmUu LjlkYTQxMThhZDQzYSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dw dV9lcnJvci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYwo+ IEBAIC00MDUsNiArNDA1LDcgQEAgc3RhdGljIHZvaWQgcHJpbnRfZXJyb3JfYnVmZmVycyhzdHJ1 Y3QgZHJtX2k5MTVfZXJyb3Jfc3RhdGVfYnVmICptLAo+ICBzdGF0aWMgdm9pZCBlcnJvcl9wcmlu dF9pbnN0ZG9uZShzdHJ1Y3QgZHJtX2k5MTVfZXJyb3Jfc3RhdGVfYnVmICptLAo+ICAJCQkJIGNv bnN0IHN0cnVjdCBkcm1faTkxNV9lcnJvcl9lbmdpbmUgKmVlKQo+ICB7Cj4gKwlzdHJ1Y3Qgc3Nl dV9kZXZfaW5mbyAqc3NldSA9ICZSVU5USU1FX0lORk8obS0+aTkxNSktPnNzZXU7Cj4gIAlpbnQg c2xpY2U7Cj4gIAlpbnQgc3Vic2xpY2U7Cj4gIAo+IEBAIC00MjAsMTIgKzQyMSwxMiBAQCBzdGF0 aWMgdm9pZCBlcnJvcl9wcmludF9pbnN0ZG9uZShzdHJ1Y3QgZHJtX2k5MTVfZXJyb3Jfc3RhdGVf YnVmICptLAo+ICAJaWYgKElOVEVMX0dFTihtLT5pOTE1KSA8PSA2KQo+ICAJCXJldHVybjsKPiAg Cj4gLQlmb3JfZWFjaF9pbnN0ZG9uZV9zbGljZV9zdWJzbGljZShtLT5pOTE1LCBzbGljZSwgc3Vi c2xpY2UpCj4gKwlmb3JfZWFjaF9pbnN0ZG9uZV9zbGljZV9zdWJzbGljZShtLT5pOTE1LCBzc2V1 LCBzbGljZSwgc3Vic2xpY2UpCj4gIAkJZXJyX3ByaW50ZihtLCAiICBTQU1QTEVSX0lOU1RET05F WyVkXVslZF06IDB4JTA4eFxuIiwKPiAgCQkJICAgc2xpY2UsIHN1YnNsaWNlLAo+ICAJCQkgICBl ZS0+aW5zdGRvbmUuc2FtcGxlcltzbGljZV1bc3Vic2xpY2VdKTsKPiAgCj4gLQlmb3JfZWFjaF9p bnN0ZG9uZV9zbGljZV9zdWJzbGljZShtLT5pOTE1LCBzbGljZSwgc3Vic2xpY2UpCj4gKwlmb3Jf ZWFjaF9pbnN0ZG9uZV9zbGljZV9zdWJzbGljZShtLT5pOTE1LCBzc2V1LCBzbGljZSwgc3Vic2xp Y2UpCj4gIAkJZXJyX3ByaW50ZihtLCAiICBST1dfSU5TVERPTkVbJWRdWyVkXTogMHglMDh4XG4i LAo+ICAJCQkgICBzbGljZSwgc3Vic2xpY2UsCj4gIAkJCSAgIGVlLT5pbnN0ZG9uZS5yb3dbc2xp Y2VdW3N1YnNsaWNlXSk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf cXVlcnkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcXVlcnkuYwo+IGluZGV4IDdjMTcw OGMyMjgxMS4uMDAwZGNiMTQ1Y2UwIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfcXVlcnkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcXVlcnkuYwo+ IEBAIC0zNyw4ICszNyw2IEBAIHN0YXRpYyBpbnQgcXVlcnlfdG9wb2xvZ3lfaW5mbyhzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAljb25zdCBzdHJ1Y3Qgc3NldV9kZXZfaW5m byAqc3NldSA9ICZSVU5USU1FX0lORk8oZGV2X3ByaXYpLT5zc2V1Owo+ICAJc3RydWN0IGRybV9p OTE1X3F1ZXJ5X3RvcG9sb2d5X2luZm8gdG9wbzsKPiAgCXUzMiBzbGljZV9sZW5ndGgsIHN1YnNs aWNlX2xlbmd0aCwgZXVfbGVuZ3RoLCB0b3RhbF9sZW5ndGg7Cj4gLQl1OCBzdWJzbGljZV9zdHJp ZGUgPSBHRU5fU1NFVV9TVFJJREUoc3NldS0+bWF4X3N1YnNsaWNlcyk7Cj4gLQl1OCBldV9zdHJp ZGUgPSBHRU5fU1NFVV9TVFJJREUoc3NldS0+bWF4X2V1c19wZXJfc3Vic2xpY2UpOwo+ICAJaW50 IHJldDsKPiAgCj4gIAlpZiAocXVlcnlfaXRlbS0+ZmxhZ3MgIT0gMCkKPiBAQCAtNTAsOCArNDgs OCBAQCBzdGF0aWMgaW50IHF1ZXJ5X3RvcG9sb2d5X2luZm8oc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LAo+ICAJQlVJTERfQlVHX09OKHNpemVvZih1OCkgIT0gc2l6ZW9mKHNzZXUt PnNsaWNlX21hc2spKTsKPiAgCj4gIAlzbGljZV9sZW5ndGggPSBzaXplb2Yoc3NldS0+c2xpY2Vf bWFzayk7Cj4gLQlzdWJzbGljZV9sZW5ndGggPSBzc2V1LT5tYXhfc2xpY2VzICogc3Vic2xpY2Vf c3RyaWRlOwo+IC0JZXVfbGVuZ3RoID0gc3NldS0+bWF4X3NsaWNlcyAqIHNzZXUtPm1heF9zdWJz bGljZXMgKiBldV9zdHJpZGU7Cj4gKwlzdWJzbGljZV9sZW5ndGggPSBzc2V1LT5tYXhfc2xpY2Vz ICogc3NldS0+c3Nfc3RyaWRlOwo+ICsJZXVfbGVuZ3RoID0gc3NldS0+bWF4X3NsaWNlcyAqIHNz ZXUtPm1heF9zdWJzbGljZXMgKiBzc2V1LT5ldV9zdHJpZGU7Cj4gIAl0b3RhbF9sZW5ndGggPSBz aXplb2YodG9wbykgKyBzbGljZV9sZW5ndGggKyBzdWJzbGljZV9sZW5ndGggKwo+ICAJCSAgICAg ICBldV9sZW5ndGg7Cj4gIAo+IEBAIC02OSw5ICs2Nyw5IEBAIHN0YXRpYyBpbnQgcXVlcnlfdG9w b2xvZ3lfaW5mbyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAl0b3BvLm1h eF9ldXNfcGVyX3N1YnNsaWNlID0gc3NldS0+bWF4X2V1c19wZXJfc3Vic2xpY2U7Cj4gIAo+ICAJ dG9wby5zdWJzbGljZV9vZmZzZXQgPSBzbGljZV9sZW5ndGg7Cj4gLQl0b3BvLnN1YnNsaWNlX3N0 cmlkZSA9IHN1YnNsaWNlX3N0cmlkZTsKPiArCXRvcG8uc3Vic2xpY2Vfc3RyaWRlID0gc3NldS0+ c3Nfc3RyaWRlOwo+ICAJdG9wby5ldV9vZmZzZXQgPSBzbGljZV9sZW5ndGggKyBzdWJzbGljZV9s ZW5ndGg7Cj4gLQl0b3BvLmV1X3N0cmlkZSA9IGV1X3N0cmlkZTsKPiArCXRvcG8uZXVfc3RyaWRl ID0gc3NldS0+ZXVfc3RyaWRlOwo+ICAKPiAgCWlmIChfX2NvcHlfdG9fdXNlcih1NjRfdG9fdXNl cl9wdHIocXVlcnlfaXRlbS0+ZGF0YV9wdHIpLAo+ICAJCQkgICAmdG9wbywgc2l6ZW9mKHRvcG8p KSkKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGV2aWNlX2luZm8u YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RldmljZV9pbmZvLmMKPiBpbmRleCA1NTlj ZjBkMDYyOGUuLjFjYzcyYmViODZlZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kZXZpY2VfaW5mby5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZGV2aWNlX2luZm8uYwo+IEBAIC04NCwxNyArODQsNDIgQEAgdm9pZCBpbnRlbF9kZXZpY2VfaW5m b19kdW1wX2ZsYWdzKGNvbnN0IHN0cnVjdCBpbnRlbF9kZXZpY2VfaW5mbyAqaW5mbywKPiAgI3Vu ZGVmIFBSSU5UX0ZMQUcKPiAgfQo+ICAKPiArI2RlZmluZSBTU19TVFJfTUFYX1NJWkUgKEdFTl9N QVhfU1VCU0xJQ0VfU1RSSURFICogMikKPiArCj4gK3N0YXRpYyB1OCAqCj4gK3N1YnNsaWNlX3Bl cl9zbGljZV9zdHIodTggKmJ1ZiwgY29uc3Qgc3RydWN0IHNzZXVfZGV2X2luZm8gKnNzZXUsIHU4 IHNsaWNlKQo+ICt7Cj4gKwlpbnQgaTsKPiArCXU4IHNzX29mZnNldCA9IHNsaWNlICogc3NldS0+ c3Nfc3RyaWRlOwo+ICsKPiArCUdFTV9CVUdfT04oc2xpY2UgPj0gc3NldS0+bWF4X3NsaWNlcyk7 Cj4gKwo+ICsJbWVtc2V0KGJ1ZiwgMCwgU1NfU1RSX01BWF9TSVpFKTsKPiArCj4gKwkvKgo+ICsJ ICogUHJpbnQgc3Vic2xpY2UgaW5mb3JtYXRpb24gaW4gcmV2ZXJzZSBvcmRlciB0byBtYXRjaAo+ ICsJICogdXNlcnNwYWNlIGV4cGVjdGF0aW9ucy4KPiArCSAqLwo+ICsJZm9yIChpID0gMDsgaSA8 IHNzZXUtPnNzX3N0cmlkZTsgaSsrKQo+ICsJCXNwcmludGYoJmJ1ZltpICogMl0sICIlMDJ4IiwK PiArCQkJc3NldS0+c3Vic2xpY2VfbWFza1tzc19vZmZzZXQgKyBzc2V1LT5zc19zdHJpZGUgLQo+ ICsJCQkJCSAgICAoaSArIDEpXSk7Cj4gKwo+ICsJcmV0dXJuIGJ1ZjsKPiArfQo+ICsKPiAgc3Rh dGljIHZvaWQgc3NldV9kdW1wKGNvbnN0IHN0cnVjdCBzc2V1X2Rldl9pbmZvICpzc2V1LCBzdHJ1 Y3QgZHJtX3ByaW50ZXIgKnApCj4gIHsKPiAgCWludCBzOwo+ICsJdTggYnVmW1NTX1NUUl9NQVhf U0laRV07Cj4gIAo+ICAJZHJtX3ByaW50ZihwLCAic2xpY2UgdG90YWw6ICV1LCBtYXNrPSUwNHhc biIsCj4gIAkJICAgaHdlaWdodDgoc3NldS0+c2xpY2VfbWFzayksIHNzZXUtPnNsaWNlX21hc2sp Owo+ICAJZHJtX3ByaW50ZihwLCAic3Vic2xpY2UgdG90YWw6ICV1XG4iLCBzc2V1X3N1YnNsaWNl X3RvdGFsKHNzZXUpKTsKPiAgCWZvciAocyA9IDA7IHMgPCBzc2V1LT5tYXhfc2xpY2VzOyBzKysp IHsKPiAtCQlkcm1fcHJpbnRmKHAsICJzbGljZSVkOiAldSBzdWJzbGljZXMsIG1hc2s9JTA0eFxu IiwKPiArCQlkcm1fcHJpbnRmKHAsICJzbGljZSVkOiAldSBzdWJzbGljZXMsIG1hc2s9JXNcbiIs Cj4gIAkJCSAgIHMsIHNzZXVfc3Vic2xpY2VzX3Blcl9zbGljZShzc2V1LCBzKSwKPiAtCQkJICAg c3NldS0+c3Vic2xpY2VfbWFza1tzXSk7Cj4gKwkJCSAgIHN1YnNsaWNlX3Blcl9zbGljZV9zdHIo YnVmLCBzc2V1LCBzKSk7Cj4gIAl9Cj4gIAlkcm1fcHJpbnRmKHAsICJFVSB0b3RhbDogJXVcbiIs IHNzZXUtPmV1X3RvdGFsKTsKPiAgCWRybV9wcmludGYocCwgIkVVIHBlciBzdWJzbGljZTogJXVc biIsIHNzZXUtPmV1X3Blcl9zdWJzbGljZSk7Cj4gQEAgLTExOCw2ICsxNDMsNyBAQCB2b2lkIGlu dGVsX2RldmljZV9pbmZvX2R1bXBfdG9wb2xvZ3koY29uc3Qgc3RydWN0IHNzZXVfZGV2X2luZm8g KnNzZXUsCj4gIAkJCQkgICAgIHN0cnVjdCBkcm1fcHJpbnRlciAqcCkKPiAgewo+ICAJaW50IHMs IHNzOwo+ICsJdTggYnVmW1NTX1NUUl9NQVhfU0laRV07Cj4gIAo+ICAJaWYgKHNzZXUtPm1heF9z bGljZXMgPT0gMCkgewo+ICAJCWRybV9wcmludGYocCwgIlVuYXZhaWxhYmxlXG4iKTsKPiBAQCAt MTI1LDkgKzE1MSw5IEBAIHZvaWQgaW50ZWxfZGV2aWNlX2luZm9fZHVtcF90b3BvbG9neShjb25z dCBzdHJ1Y3Qgc3NldV9kZXZfaW5mbyAqc3NldSwKPiAgCX0KPiAgCj4gIAlmb3IgKHMgPSAwOyBz IDwgc3NldS0+bWF4X3NsaWNlczsgcysrKSB7Cj4gLQkJZHJtX3ByaW50ZihwLCAic2xpY2UlZDog JXUgc3Vic2xpY2UocykgKDB4JWhoeCk6XG4iLAo+ICsJCWRybV9wcmludGYocCwgInNsaWNlJWQ6 ICV1IHN1YnNsaWNlKHMpICgweCVzKTpcbiIsCj4gIAkJCSAgIHMsIHNzZXVfc3Vic2xpY2VzX3Bl cl9zbGljZShzc2V1LCBzKSwKPiAtCQkJICAgc3NldS0+c3Vic2xpY2VfbWFza1tzXSk7Cj4gKwkJ CSAgIHN1YnNsaWNlX3Blcl9zbGljZV9zdHIoYnVmLCBzc2V1LCBzKSk7Cj4gIAo+ICAJCWZvciAo c3MgPSAwOyBzcyA8IHNzZXUtPm1heF9zdWJzbGljZXM7IHNzKyspIHsKPiAgCQkJdTE2IGVuYWJs ZWRfZXVzID0gc3NldV9nZXRfZXVzKHNzZXUsIHMsIHNzKTsKPiBAQCAtMTU2LDE1ICsxODIsMTAg QEAgc3RhdGljIHZvaWQgZ2VuMTFfc3NldV9pbmZvX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KQo+ICAJdTggZXVfZW47Cj4gIAlpbnQgczsKPiAgCj4gLQlpZiAoSVNfRUxL SEFSVExBS0UoZGV2X3ByaXYpKSB7Cj4gLQkJc3NldS0+bWF4X3NsaWNlcyA9IDE7Cj4gLQkJc3Nl dS0+bWF4X3N1YnNsaWNlcyA9IDQ7Cj4gLQkJc3NldS0+bWF4X2V1c19wZXJfc3Vic2xpY2UgPSA4 Owo+IC0JfSBlbHNlIHsKPiAtCQlzc2V1LT5tYXhfc2xpY2VzID0gMTsKPiAtCQlzc2V1LT5tYXhf c3Vic2xpY2VzID0gODsKPiAtCQlzc2V1LT5tYXhfZXVzX3Blcl9zdWJzbGljZSA9IDg7Cj4gLQl9 Cj4gKwlpZiAoSVNfRUxLSEFSVExBS0UoZGV2X3ByaXYpKQo+ICsJCXNldF9zc2V1X2luZm8oc3Nl dSwgMSwgNCwgOCk7Cj4gKwllbHNlCj4gKwkJc2V0X3NzZXVfaW5mbyhzc2V1LCAxLCA4LCA4KTsK PiAgCj4gIAlzX2VuID0gSTkxNV9SRUFEKEdFTjExX0dUX1NMSUNFX0VOQUJMRSkgJiBHRU4xMV9H VF9TX0VOQV9NQVNLOwo+ICAJc3NfZW4gPSB+STkxNV9SRUFEKEdFTjExX0dUX1NVQlNMSUNFX0RJ U0FCTEUpOwo+IEBAIC0xNzcsOSArMTk4LDExIEBAIHN0YXRpYyB2b2lkIGdlbjExX3NzZXVfaW5m b19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCQkJaW50IHNzOwo+ ICAKPiAgCQkJc3NldS0+c2xpY2VfbWFzayB8PSBCSVQocyk7Cj4gLQkJCXNzZXUtPnN1YnNsaWNl X21hc2tbc10gPSAoc3NfZW4gPj4gc3NfaWR4KSAmIHNzX2VuX21hc2s7Cj4gKwkJCXNzZXUtPnN1 YnNsaWNlX21hc2tbcyAqIHNzZXUtPnNzX3N0cmlkZV0gPQo+ICsJCQkJKHNzX2VuID4+IHNzX2lk eCkgJiBzc19lbl9tYXNrOwo+ICAJCQlmb3IgKHNzID0gMDsgc3MgPCBzc2V1LT5tYXhfc3Vic2xp Y2VzOyBzcysrKSB7Cj4gLQkJCQlpZiAoc3NldS0+c3Vic2xpY2VfbWFza1tzXSAmIEJJVChzcykp Cj4gKwkJCQlpZiAoc3NldS0+c3Vic2xpY2VfbWFza1tzICogc3NldS0+c3Nfc3RyaWRlXSAmCj4g KwkJCQkgICAgQklUKHNzKSkKPiAgCQkJCQlzc2V1X3NldF9ldXMoc3NldSwgcywgc3MsIGV1X2Vu KTsKPiAgCQkJfQo+ICAJCX0KPiBAQCAtMjAxLDIzICsyMjQsMTAgQEAgc3RhdGljIHZvaWQgZ2Vu MTBfc3NldV9pbmZvX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJ Y29uc3QgaW50IGV1X21hc2sgPSAweGZmOwo+ICAJdTMyIHN1YnNsaWNlX21hc2ssIGV1X2VuOwo+ ICAKPiArCXNldF9zc2V1X2luZm8oc3NldSwgNiwgNCwgOCk7Cj4gKwo+ICAJc3NldS0+c2xpY2Vf bWFzayA9IChmdXNlMiAmIEdFTjEwX0YyX1NfRU5BX01BU0spID4+Cj4gIAkJCSAgICBHRU4xMF9G Ml9TX0VOQV9TSElGVDsKPiAtCXNzZXUtPm1heF9zbGljZXMgPSA2Owo+IC0Jc3NldS0+bWF4X3N1 YnNsaWNlcyA9IDQ7Cj4gLQlzc2V1LT5tYXhfZXVzX3Blcl9zdWJzbGljZSA9IDg7Cj4gLQo+IC0J c3Vic2xpY2VfbWFzayA9ICgxIDw8IDQpIC0gMTsKPiAtCXN1YnNsaWNlX21hc2sgJj0gfigoZnVz ZTIgJiBHRU4xMF9GMl9TU19ESVNfTUFTSykgPj4KPiAtCQkJICAgR0VOMTBfRjJfU1NfRElTX1NI SUZUKTsKPiAtCj4gLQkvKgo+IC0JICogU2xpY2UwIGNhbiBoYXZlIHVwIHRvIDMgc3Vic2xpY2Vz LCBidXQgdGhlcmUgYXJlIG9ubHkgMiBpbgo+IC0JICogc2xpY2UxLzIuCj4gLQkgKi8KPiAtCXNz ZXUtPnN1YnNsaWNlX21hc2tbMF0gPSBzdWJzbGljZV9tYXNrOwo+IC0JZm9yIChzID0gMTsgcyA8 IHNzZXUtPm1heF9zbGljZXM7IHMrKykKPiAtCQlzc2V1LT5zdWJzbGljZV9tYXNrW3NdID0gc3Vi c2xpY2VfbWFzayAmIDB4MzsKPiAgCj4gIAkvKiBTbGljZTAgKi8KPiAgCWV1X2VuID0gfkk5MTVf UkVBRChHRU44X0VVX0RJU0FCTEUwKTsKPiBAQCAtMjQyLDE0ICsyNTIsMjIgQEAgc3RhdGljIHZv aWQgZ2VuMTBfc3NldV9pbmZvX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQo+ICAJZXVfZW4gPSB+STkxNV9SRUFEKEdFTjEwX0VVX0RJU0FCTEUzKTsKPiAgCXNzZXVfc2V0 X2V1cyhzc2V1LCA1LCAxLCBldV9lbiAmIGV1X21hc2spOwo+ICAKPiAtCS8qIERvIGEgc2Vjb25k IHBhc3Mgd2hlcmUgd2UgbWFyayB0aGUgc3Vic2xpY2VzIGRpc2FibGVkIGlmIGFsbCB0aGVpcgo+ IC0JICogZXVzIGFyZSBvZmYuCj4gLQkgKi8KPiArCXN1YnNsaWNlX21hc2sgPSAoMSA8PCA0KSAt IDE7Cj4gKwlzdWJzbGljZV9tYXNrICY9IH4oKGZ1c2UyICYgR0VOMTBfRjJfU1NfRElTX01BU0sp ID4+Cj4gKwkJCSAgIEdFTjEwX0YyX1NTX0RJU19TSElGVCk7Cj4gKwo+ICAJZm9yIChzID0gMDsg cyA8IHNzZXUtPm1heF9zbGljZXM7IHMrKykgewo+ICAJCWZvciAoc3MgPSAwOyBzcyA8IHNzZXUt Pm1heF9zdWJzbGljZXM7IHNzKyspIHsKPiAgCQkJaWYgKHNzZXVfZ2V0X2V1cyhzc2V1LCBzLCBz cykgPT0gMCkKPiAtCQkJCXNzZXUtPnN1YnNsaWNlX21hc2tbc10gJj0gfkJJVChzcyk7Cj4gKwkJ CQlzdWJzbGljZV9tYXNrICY9IH5CSVQoc3MpOwo+ICAJCX0KPiArCj4gKwkJLyoKPiArCQkgKiBT bGljZTAgY2FuIGhhdmUgdXAgdG8gMyBzdWJzbGljZXMsIGJ1dCB0aGVyZSBhcmUgb25seSAyIGlu Cj4gKwkJICogc2xpY2UxLzIuCj4gKwkJICovCj4gKwkJc3NldV9zZXRfc3Vic2xpY2VzKHNzZXUs IHMsIHMgPT0gMCA/IHN1YnNsaWNlX21hc2sgOgo+ICsJCQkJCQkgICAgIHN1YnNsaWNlX21hc2sg JiAweDMpOwo+ICAJfQo+ICAKPiAgCXNzZXUtPmV1X3RvdGFsID0gY29tcHV0ZV9ldV90b3RhbChz c2V1KTsKPiBAQCAtMjc0LDEzICsyOTIsMTIgQEAgc3RhdGljIHZvaWQgY2hlcnJ5dmlld19zc2V1 X2luZm9faW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIHsKPiAgCXN0 cnVjdCBzc2V1X2Rldl9pbmZvICpzc2V1ID0gJlJVTlRJTUVfSU5GTyhkZXZfcHJpdiktPnNzZXU7 Cj4gIAl1MzIgZnVzZTsKPiArCXU4IHN1YnNsaWNlX21hc2s7Cj4gIAo+ICAJZnVzZSA9IEk5MTVf UkVBRChDSFZfRlVTRV9HVCk7Cj4gIAo+ICAJc3NldS0+c2xpY2VfbWFzayA9IEJJVCgwKTsKPiAt CXNzZXUtPm1heF9zbGljZXMgPSAxOwo+IC0Jc3NldS0+bWF4X3N1YnNsaWNlcyA9IDI7Cj4gLQlz c2V1LT5tYXhfZXVzX3Blcl9zdWJzbGljZSA9IDg7Cj4gKwlzZXRfc3NldV9pbmZvKHNzZXUsIDEs IDIsIDgpOwo+ICAKPiAgCWlmICghKGZ1c2UgJiBDSFZfRkdUX0RJU0FCTEVfU1MwKSkgewo+ICAJ CXU4IGRpc2FibGVkX21hc2sgPQo+IEBAIC0yODksNyArMzA2LDcgQEAgc3RhdGljIHZvaWQgY2hl cnJ5dmlld19zc2V1X2luZm9faW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp Cj4gIAkJCSgoKGZ1c2UgJiBDSFZfRkdUX0VVX0RJU19TUzBfUjFfTUFTSykgPj4KPiAgCQkJICBD SFZfRkdUX0VVX0RJU19TUzBfUjFfU0hJRlQpIDw8IDQpOwo+ICAKPiAtCQlzc2V1LT5zdWJzbGlj ZV9tYXNrWzBdIHw9IEJJVCgwKTsKPiArCQlzdWJzbGljZV9tYXNrIHw9IEJJVCgwKTsKPiAgCQlz c2V1X3NldF9ldXMoc3NldSwgMCwgMCwgfmRpc2FibGVkX21hc2spOwo+ICAJfQo+ICAKPiBAQCAt MzAwLDEwICszMTcsMTIgQEAgc3RhdGljIHZvaWQgY2hlcnJ5dmlld19zc2V1X2luZm9faW5pdChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAkJCSgoKGZ1c2UgJiBDSFZfRkdU X0VVX0RJU19TUzFfUjFfTUFTSykgPj4KPiAgCQkJICBDSFZfRkdUX0VVX0RJU19TUzFfUjFfU0hJ RlQpIDw8IDQpOwo+ICAKPiAtCQlzc2V1LT5zdWJzbGljZV9tYXNrWzBdIHw9IEJJVCgxKTsKPiAr CQlzdWJzbGljZV9tYXNrIHw9IEJJVCgxKTsKPiAgCQlzc2V1X3NldF9ldXMoc3NldSwgMCwgMSwg fmRpc2FibGVkX21hc2spOwo+ICAJfQo+ICAKPiArCXNzZXVfc2V0X3N1YnNsaWNlcyhzc2V1LCAw LCBzdWJzbGljZV9tYXNrKTsKPiArCj4gIAlzc2V1LT5ldV90b3RhbCA9IGNvbXB1dGVfZXVfdG90 YWwoc3NldSk7Cj4gIAo+ICAJLyoKPiBAQCAtMzM1LDkgKzM1NCw4IEBAIHN0YXRpYyB2b2lkIGdl bjlfc3NldV9pbmZvX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJ c3NldS0+c2xpY2VfbWFzayA9IChmdXNlMiAmIEdFTjhfRjJfU19FTkFfTUFTSykgPj4gR0VOOF9G Ml9TX0VOQV9TSElGVDsKPiAgCj4gIAkvKiBCWFQgaGFzIGEgc2luZ2xlIHNsaWNlIGFuZCBhdCBt b3N0IDMgc3Vic2xpY2VzLiAqLwo+IC0Jc3NldS0+bWF4X3NsaWNlcyA9IElTX0dFTjlfTFAoZGV2 X3ByaXYpID8gMSA6IDM7Cj4gLQlzc2V1LT5tYXhfc3Vic2xpY2VzID0gSVNfR0VOOV9MUChkZXZf cHJpdikgPyAzIDogNDsKPiAtCXNzZXUtPm1heF9ldXNfcGVyX3N1YnNsaWNlID0gODsKPiArCXNl dF9zc2V1X2luZm8oc3NldSwgSVNfR0VOOV9MUChkZXZfcHJpdikgPyAxIDogMywKPiArCQkgICAg ICBJU19HRU45X0xQKGRldl9wcml2KSA/IDMgOiA0LCA4KTsKPiAgCj4gIAkvKgo+ICAJICogVGhl IHN1YnNsaWNlIGRpc2FibGUgZmllbGQgaXMgZ2xvYmFsLCBpLmUuIGl0IGFwcGxpZXMKPiBAQCAt MzU2LDE0ICszNzQsMTYgQEAgc3RhdGljIHZvaWQgZ2VuOV9zc2V1X2luZm9faW5pdChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAkJCS8qIHNraXAgZGlzYWJsZWQgc2xpY2Ug Ki8KPiAgCQkJY29udGludWU7Cj4gIAo+IC0JCXNzZXUtPnN1YnNsaWNlX21hc2tbc10gPSBzdWJz bGljZV9tYXNrOwo+ICsJCXNzZXVfc2V0X3N1YnNsaWNlcyhzc2V1LCBzLCBzdWJzbGljZV9tYXNr KTsKPiAgCj4gIAkJZXVfZGlzYWJsZSA9IEk5MTVfUkVBRChHRU45X0VVX0RJU0FCTEUocykpOwo+ ICAJCWZvciAoc3MgPSAwOyBzcyA8IHNzZXUtPm1heF9zdWJzbGljZXM7IHNzKyspIHsKPiAgCQkJ aW50IGV1X3Blcl9zczsKPiAgCQkJdTggZXVfZGlzYWJsZWRfbWFzazsKPiArCQkJdTggc3NfaWR4 ID0gcyAqIHNzZXUtPnNzX3N0cmlkZSArIHNzIC8gQklUU19QRVJfQllURTsKPiAgCj4gLQkJCWlm ICghKHNzZXUtPnN1YnNsaWNlX21hc2tbc10gJiBCSVQoc3MpKSkKPiArCQkJaWYgKCEoc3NldS0+ c3Vic2xpY2VfbWFza1tzc19pZHhdICYKPiArCQkJICAgICAgQklUKHNzICUgQklUU19QRVJfQllU RSkpKQo+ICAJCQkJLyogc2tpcCBkaXNhYmxlZCBzdWJzbGljZSAqLwo+ICAJCQkJY29udGludWU7 Cj4gIAo+IEBAIC00MzUsOSArNDU1LDcgQEAgc3RhdGljIHZvaWQgYnJvYWR3ZWxsX3NzZXVfaW5m b19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCj4gIAlmdXNlMiA9 IEk5MTVfUkVBRChHRU44X0ZVU0UyKTsKPiAgCXNzZXUtPnNsaWNlX21hc2sgPSAoZnVzZTIgJiBH RU44X0YyX1NfRU5BX01BU0spID4+IEdFTjhfRjJfU19FTkFfU0hJRlQ7Cj4gLQlzc2V1LT5tYXhf c2xpY2VzID0gMzsKPiAtCXNzZXUtPm1heF9zdWJzbGljZXMgPSAzOwo+IC0Jc3NldS0+bWF4X2V1 c19wZXJfc3Vic2xpY2UgPSA4Owo+ICsJc2V0X3NzZXVfaW5mbyhzc2V1LCAzLCAzLCA4KTsKPiAg Cj4gIAkvKgo+ICAJICogVGhlIHN1YnNsaWNlIGRpc2FibGUgZmllbGQgaXMgZ2xvYmFsLCBpLmUu IGl0IGFwcGxpZXMKPiBAQCAtNDY0LDE4ICs0ODIsMjEgQEAgc3RhdGljIHZvaWQgYnJvYWR3ZWxs X3NzZXVfaW5mb19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCQkJ Lyogc2tpcCBkaXNhYmxlZCBzbGljZSAqLwo+ICAJCQljb250aW51ZTsKPiAgCj4gLQkJc3NldS0+ c3Vic2xpY2VfbWFza1tzXSA9IHN1YnNsaWNlX21hc2s7Cj4gKwkJc3NldV9zZXRfc3Vic2xpY2Vz KHNzZXUsIHMsIHN1YnNsaWNlX21hc2spOwo+ICAKPiAgCQlmb3IgKHNzID0gMDsgc3MgPCBzc2V1 LT5tYXhfc3Vic2xpY2VzOyBzcysrKSB7Cj4gIAkJCXU4IGV1X2Rpc2FibGVkX21hc2s7Cj4gKwkJ CXU4IHNzX2lkeCA9IHMgKiBzc2V1LT5zc19zdHJpZGUgKyBzcyAvIEJJVFNfUEVSX0JZVEU7Cj4g IAkJCXUzMiBuX2Rpc2FibGVkOwo+ICAKPiAtCQkJaWYgKCEoc3NldS0+c3Vic2xpY2VfbWFza1tz XSAmIEJJVChzcykpKQo+ICsJCQlpZiAoIShzc2V1LT5zdWJzbGljZV9tYXNrW3NzX2lkeF0gJgo+ ICsJCQkgICAgICBCSVQoc3MgJSBCSVRTX1BFUl9CWVRFKSkpCj4gIAkJCQkvKiBza2lwIGRpc2Fi bGVkIHN1YnNsaWNlICovCj4gIAkJCQljb250aW51ZTsKPiAgCj4gIAkJCWV1X2Rpc2FibGVkX21h c2sgPQo+IC0JCQkJZXVfZGlzYWJsZVtzXSA+PiAoc3MgKiBzc2V1LT5tYXhfZXVzX3Blcl9zdWJz bGljZSk7Cj4gKwkJCQlldV9kaXNhYmxlW3NdID4+Cj4gKwkJCQkJKHNzICogc3NldS0+bWF4X2V1 c19wZXJfc3Vic2xpY2UpOwo+ICAKPiAgCQkJc3NldV9zZXRfZXVzKHNzZXUsIHMsIHNzLCB+ZXVf ZGlzYWJsZWRfbWFzayk7Cj4gIAo+IEBAIC01MTQsNiArNTM1LDcgQEAgc3RhdGljIHZvaWQgaGFz d2VsbF9zc2V1X2luZm9faW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4g IAlzdHJ1Y3Qgc3NldV9kZXZfaW5mbyAqc3NldSA9ICZSVU5USU1FX0lORk8oZGV2X3ByaXYpLT5z c2V1Owo+ICAJdTMyIGZ1c2UxOwo+ICAJaW50IHMsIHNzOwo+ICsJdTMyIHN1YnNsaWNlX21hc2s7 Cj4gIAo+ICAJLyoKPiAgCSAqIFRoZXJlIGlzbid0IGEgcmVnaXN0ZXIgdG8gdGVsbCB1cyBob3cg bWFueSBzbGljZXMvc3Vic2xpY2VzLiBXZQo+IEBAIC01MjUsMjIgKzU0NywxOCBAQCBzdGF0aWMg dm9pZCBoYXN3ZWxsX3NzZXVfaW5mb19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKPiAgCQkvKiBmYWxsIHRocm91Z2ggKi8KPiAgCWNhc2UgMToKPiAgCQlzc2V1LT5zbGlj ZV9tYXNrID0gQklUKDApOwo+IC0JCXNzZXUtPnN1YnNsaWNlX21hc2tbMF0gPSBCSVQoMCk7Cj4g KwkJc3Vic2xpY2VfbWFzayA9IEJJVCgwKTsKPiAgCQlicmVhazsKPiAgCWNhc2UgMjoKPiAgCQlz c2V1LT5zbGljZV9tYXNrID0gQklUKDApOwo+IC0JCXNzZXUtPnN1YnNsaWNlX21hc2tbMF0gPSBC SVQoMCkgfCBCSVQoMSk7Cj4gKwkJc3Vic2xpY2VfbWFzayA9IEJJVCgwKSB8IEJJVCgxKTsKPiAg CQlicmVhazsKPiAgCWNhc2UgMzoKPiAgCQlzc2V1LT5zbGljZV9tYXNrID0gQklUKDApIHwgQklU KDEpOwo+IC0JCXNzZXUtPnN1YnNsaWNlX21hc2tbMF0gPSBCSVQoMCkgfCBCSVQoMSk7Cj4gLQkJ c3NldS0+c3Vic2xpY2VfbWFza1sxXSA9IEJJVCgwKSB8IEJJVCgxKTsKPiArCQlzdWJzbGljZV9t YXNrID0gQklUKDApIHwgQklUKDEpOwo+ICAJCWJyZWFrOwo+ICAJfQo+ICAKPiAtCXNzZXUtPm1h eF9zbGljZXMgPSBod2VpZ2h0OChzc2V1LT5zbGljZV9tYXNrKTsKPiAtCXNzZXUtPm1heF9zdWJz bGljZXMgPSBod2VpZ2h0OChzc2V1LT5zdWJzbGljZV9tYXNrWzBdKTsKPiAtCj4gIAlmdXNlMSA9 IEk5MTVfUkVBRChIU1dfUEFWUF9GVVNFMSk7Cj4gIAlzd2l0Y2ggKChmdXNlMSAmIEhTV19GMV9F VV9ESVNfTUFTSykgPj4gSFNXX0YxX0VVX0RJU19TSElGVCkgewo+ICAJZGVmYXVsdDoKPiBAQCAt NTU3LDkgKzU3NSwxNCBAQCBzdGF0aWMgdm9pZCBoYXN3ZWxsX3NzZXVfaW5mb19pbml0KHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCQlzc2V1LT5ldV9wZXJfc3Vic2xpY2Ug PSA2Owo+ICAJCWJyZWFrOwo+ICAJfQo+IC0Jc3NldS0+bWF4X2V1c19wZXJfc3Vic2xpY2UgPSBz c2V1LT5ldV9wZXJfc3Vic2xpY2U7Cj4gKwo+ICsJc2V0X3NzZXVfaW5mbyhzc2V1LCBod2VpZ2h0 OChzc2V1LT5zbGljZV9tYXNrKSwKPiArCQkgICAgICBod2VpZ2h0OChzdWJzbGljZV9tYXNrKSwK PiArCQkgICAgICBzc2V1LT5ldV9wZXJfc3Vic2xpY2UpOwo+ICAKPiAgCWZvciAocyA9IDA7IHMg PCBzc2V1LT5tYXhfc2xpY2VzOyBzKyspIHsKPiArCQlzc2V1X3NldF9zdWJzbGljZXMoc3NldSwg cywgc3Vic2xpY2VfbWFzayk7Cj4gKwo+ICAJCWZvciAoc3MgPSAwOyBzcyA8IHNzZXUtPm1heF9z dWJzbGljZXM7IHNzKyspIHsKPiAgCQkJc3NldV9zZXRfZXVzKHNzZXUsIHMsIHNzLAo+ICAJCQkJ ICAgICAoMVVMIDw8IHNzZXUtPmV1X3Blcl9zdWJzbGljZSkgLSAxKTsKCi0tIApKYW5pIE5pa3Vs YSwgSW50ZWwgT3BlbiBTb3VyY2UgR3JhcGhpY3MgQ2VudGVyCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwt Z2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeA==