From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniele Ceraolo Spurio Subject: Re: [PATCH 5/5] drm/i915: Expand subslice mask Date: Thu, 16 May 2019 15:40:10 -0700 Message-ID: <0d176a40-8e99-b2bc-19b5-e248be644420@intel.com> References: <20190513205643.16488-1-stuart.summers@intel.com> <20190513205643.16488-6-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 mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1CE62897D7 for ; Thu, 16 May 2019 22:39:50 +0000 (UTC) In-Reply-To: <20190513205643.16488-6-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 PHNuaXA+Cgo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3NzZXUuaAo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3NzZXUuaAo+IEBAIC05LDE2ICs5LDE4 IEBACj4gICAKPiAgICNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgo+ICAgI2luY2x1ZGUgPGxpbnV4 L2tlcm5lbC5oPgo+ICsjaW5jbHVkZSA8bGludXgvc3RyaW5nLmg+CgpBRkFJQ1MgdGhpcyBoZWFk ZXIgaXMgbm90IG5lZWRlZCBhbnltb3JlLiBXaXRoIGl0IHJlbW92ZWQ6CgpSZXZpZXdlZC1ieTog RGFuaWVsZSBDZXJhb2xvIFNwdXJpbyA8ZGFuaWVsZS5jZXJhb2xvc3B1cmlvQGludGVsLmNvbT4K CkRhbmllbGUKCj4gICAKPiAgIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlOwo+ICAgCj4gICAjZGVm aW5lIEdFTl9NQVhfU0xJQ0VTCQkoNikgLyogQ05MIHVwcGVyIGJvdW5kICovCj4gICAjZGVmaW5l IEdFTl9NQVhfU1VCU0xJQ0VTCSg4KSAvKiBJQ0wgdXBwZXIgYm91bmQgKi8KPiAgICNkZWZpbmUg R0VOX1NTRVVfU1RSSURFKG1heF9lbnRyaWVzKSBESVZfUk9VTkRfVVAobWF4X2VudHJpZXMsIEJJ VFNfUEVSX0JZVEUpCj4gKyNkZWZpbmUgR0VOX01BWF9TVUJTTElDRV9TVFJJREUgR0VOX1NTRVVf U1RSSURFKEdFTl9NQVhfU1VCU0xJQ0VTKQo+ICAgCj4gICBzdHJ1Y3Qgc3NldV9kZXZfaW5mbyB7 Cj4gICAJdTggc2xpY2VfbWFzazsKPiAtCXU4IHN1YnNsaWNlX21hc2tbR0VOX01BWF9TTElDRVNd Owo+ICsJdTggc3Vic2xpY2VfbWFza1tHRU5fTUFYX1NMSUNFUyAqIEdFTl9NQVhfU1VCU0xJQ0Vf U1RSSURFXTsKPiAgIAl1MTYgZXVfdG90YWw7Cj4gICAJdTggZXVfcGVyX3N1YnNsaWNlOwo+ICAg CXU4IG1pbl9ldV9pbl9wb29sOwo+IEBAIC0zMyw2ICszNSw5IEBAIHN0cnVjdCBzc2V1X2Rldl9p bmZvIHsKPiAgIAl1OCBtYXhfc3Vic2xpY2VzOwo+ICAgCXU4IG1heF9ldXNfcGVyX3N1YnNsaWNl Owo+ICAgCj4gKwl1OCBzc19zdHJpZGU7Cj4gKwl1OCBldV9zdHJpZGU7Cj4gKwo+ICAgCS8qIFdl IGRvbid0IGhhdmUgbW9yZSB0aGFuIDggZXVzIHBlciBzdWJzbGljZSBhdCB0aGUgbW9tZW50IGFu ZCBhcyB3ZQo+ICAgCSAqIHN0b3JlIGV1cyBlbmFibGVkIHVzaW5nIGJpdHMsIG5vIG5lZWQgdG8g bXVsdGlwbHkgYnkgZXVzIHBlcgo+ICAgCSAqIHN1YnNsaWNlLgo+IEBAIC02MywxMiArNjgsMzMg QEAgaW50ZWxfc3NldV9mcm9tX2RldmljZV9pbmZvKGNvbnN0IHN0cnVjdCBzc2V1X2Rldl9pbmZv ICpzc2V1KQo+ICAgCXJldHVybiB2YWx1ZTsKPiAgIH0KPiAgIAo+ICtzdGF0aWMgaW5saW5lIGJv b2wKPiAraW50ZWxfc3NldV9oYXNfc3Vic2xpY2UoY29uc3Qgc3RydWN0IHNzZXVfZGV2X2luZm8g KnNzZXUsIGludCBzbGljZSwKPiArCQkJaW50IHN1YnNsaWNlKQo+ICt7Cj4gKwl1OCBtYXNrID0g c3NldS0+c3Vic2xpY2VfbWFza1tzbGljZSAqIHNzZXUtPnNzX3N0cmlkZSArCj4gKwkJCQkgICAg ICBzdWJzbGljZSAvIEJJVFNfUEVSX0JZVEVdOwo+ICsKPiArCXJldHVybiBtYXNrICYgQklUKHN1 YnNsaWNlICUgQklUU19QRVJfQllURSk7Cj4gK30KPiArCj4gK3ZvaWQgaW50ZWxfc3NldV9zZXRf aW5mbyhzdHJ1Y3Qgc3NldV9kZXZfaW5mbyAqc3NldSwgdTggbWF4X3NsaWNlcywKPiArCQkJIHU4 IG1heF9zdWJzbGljZXMsIHU4IG1heF9ldXNfcGVyX3N1YnNsaWNlKTsKPiArCj4gICB1bnNpZ25l ZCBpbnQKPiAgIGludGVsX3NzZXVfc3Vic2xpY2VfdG90YWwoY29uc3Qgc3RydWN0IHNzZXVfZGV2 X2luZm8gKnNzZXUpOwo+ICAgCj4gICB1bnNpZ25lZCBpbnQKPiAgIGludGVsX3NzZXVfc3Vic2xp Y2VzX3Blcl9zbGljZShjb25zdCBzdHJ1Y3Qgc3NldV9kZXZfaW5mbyAqc3NldSwgdTggc2xpY2Up Owo+ICAgCj4gK3ZvaWQgaW50ZWxfc3NldV9jb3B5X3N1YnNsaWNlcyhjb25zdCBzdHJ1Y3Qgc3Nl dV9kZXZfaW5mbyAqc3NldSwgaW50IHNsaWNlLAo+ICsJCQkgICAgICAgdTggKnRvX21hc2spOwo+ ICsKPiArdTMyICBpbnRlbF9zc2V1X2dldF9zdWJzbGljZXMoY29uc3Qgc3RydWN0IHNzZXVfZGV2 X2luZm8gKnNzZXUsIHU4IHNsaWNlKTsKPiArCj4gK3ZvaWQgaW50ZWxfc3NldV9zZXRfc3Vic2xp Y2VzKHN0cnVjdCBzc2V1X2Rldl9pbmZvICpzc2V1LCBpbnQgc2xpY2UsCj4gKwkJCSAgICAgIHUz MiBzc19tYXNrKTsKPiArCj4gICB1MzIgaW50ZWxfc3NldV9tYWtlX3JwY3Moc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUsCj4gICAJCQkgY29uc3Qgc3RydWN0IGludGVsX3NzZXUgKnJlcV9z c2V1KTsKPiAgIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF93 b3JrYXJvdW5kcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfd29ya2Fyb3VuZHMu Ywo+IGluZGV4IDQzZTI5MDMwNjU1MS4uODQzN2Y5ZDkxOGVjIDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3dvcmthcm91bmRzLmMKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC9pbnRlbF93b3JrYXJvdW5kcy5jCj4gQEAgLTc2Nyw3ICs3NjcsNyBAQCB3 YV9pbml0X21jcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgc3RydWN0IGk5MTVfd2Ff bGlzdCAqd2FsKQo+ICAgCQl1MzIgc2xpY2UgPSBmbHMoc3NldS0+c2xpY2VfbWFzayk7Cj4gICAJ CXUzMiBmdXNlMyA9Cj4gICAJCQlpbnRlbF91bmNvcmVfcmVhZCgmaTkxNS0+dW5jb3JlLCBHRU4x MF9NSVJST1JfRlVTRTMpOwo+IC0JCXU4IHNzX21hc2sgPSBzc2V1LT5zdWJzbGljZV9tYXNrW3Ns aWNlXTsKPiArCQl1MzIgc3NfbWFzayA9IGludGVsX3NzZXVfZ2V0X3N1YnNsaWNlcyhzc2V1LCBz bGljZSk7Cj4gICAKPiAgIAkJdTggZW5hYmxlZF9tYXNrID0gKHNzX21hc2sgfCBzc19tYXNrID4+ Cj4gICAJCQkJICAgR0VOMTBfTDNCQU5LX1BBSVJfQ09VTlQpICYgR0VOMTBfTDNCQU5LX01BU0s7 Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiBpbmRleCBhMjYwMTU3MjI0MDUuLjQ2 MzY1YWI5NTdlNiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVn ZnMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gQEAgLTEy NTksNiArMTI1OSw3IEBAIHN0YXRpYyB2b2lkIGk5MTVfaW5zdGRvbmVfaW5mbyhzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gICAJCQkgICAgICAgc3RydWN0IHNlcV9maWxlICpt LAo+ICAgCQkJICAgICAgIHN0cnVjdCBpbnRlbF9pbnN0ZG9uZSAqaW5zdGRvbmUpCj4gICB7Cj4g KwlzdHJ1Y3Qgc3NldV9kZXZfaW5mbyAqc3NldSA9ICZSVU5USU1FX0lORk8oZGV2X3ByaXYpLT5z c2V1Owo+ICAgCWludCBzbGljZTsKPiAgIAlpbnQgc3Vic2xpY2U7Cj4gICAKPiBAQCAtMTI3NCwx MSArMTI3NSwxMSBAQCBzdGF0aWMgdm9pZCBpOTE1X2luc3Rkb25lX2luZm8oc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAgCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDw9IDYp Cj4gICAJCXJldHVybjsKPiAgIAo+IC0JZm9yX2VhY2hfaW5zdGRvbmVfc2xpY2Vfc3Vic2xpY2Uo ZGV2X3ByaXYsIHNsaWNlLCBzdWJzbGljZSkKPiArCWZvcl9lYWNoX2luc3Rkb25lX3NsaWNlX3N1 YnNsaWNlKGRldl9wcml2LCBzc2V1LCBzbGljZSwgc3Vic2xpY2UpCj4gICAJCXNlcV9wcmludGYo bSwgIlx0XHRTQU1QTEVSX0lOU1RET05FWyVkXVslZF06IDB4JTA4eFxuIiwKPiAgIAkJCSAgIHNs aWNlLCBzdWJzbGljZSwgaW5zdGRvbmUtPnNhbXBsZXJbc2xpY2VdW3N1YnNsaWNlXSk7Cj4gICAK PiAtCWZvcl9lYWNoX2luc3Rkb25lX3NsaWNlX3N1YnNsaWNlKGRldl9wcml2LCBzbGljZSwgc3Vi c2xpY2UpCj4gKwlmb3JfZWFjaF9pbnN0ZG9uZV9zbGljZV9zdWJzbGljZShkZXZfcHJpdiwgc3Nl dSwgc2xpY2UsIHN1YnNsaWNlKQo+ICAgCQlzZXFfcHJpbnRmKG0sICJcdFx0Uk9XX0lOU1RET05F WyVkXVslZF06IDB4JTA4eFxuIiwKPiAgIAkJCSAgIHNsaWNlLCBzdWJzbGljZSwgaW5zdGRvbmUt PnJvd1tzbGljZV1bc3Vic2xpY2VdKTsKPiAgIH0KPiBAQCAtNDA3Miw3ICs0MDczLDcgQEAgc3Rh dGljIHZvaWQgZ2VuMTBfc3NldV9kZXZpY2Vfc3RhdHVzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKPiAgIAkJCWNvbnRpbnVlOwo+ICAgCj4gICAJCXNzZXUtPnNsaWNlX21hc2sg fD0gQklUKHMpOwo+IC0JCXNzZXUtPnN1YnNsaWNlX21hc2tbc10gPSBpbmZvLT5zc2V1LnN1YnNs aWNlX21hc2tbc107Cj4gKwkJaW50ZWxfc3NldV9jb3B5X3N1YnNsaWNlcygmaW5mby0+c3NldSwg cywgc3NldS0+c3Vic2xpY2VfbWFzayk7Cj4gICAKPiAgIAkJZm9yIChzcyA9IDA7IHNzIDwgaW5m by0+c3NldS5tYXhfc3Vic2xpY2VzOyBzcysrKSB7Cj4gICAJCQl1bnNpZ25lZCBpbnQgZXVfY250 Owo+IEBAIC00MTIzLDE4ICs0MTI0LDIxIEBAIHN0YXRpYyB2b2lkIGdlbjlfc3NldV9kZXZpY2Vf c3RhdHVzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgIAkJc3NldS0+c2xp Y2VfbWFzayB8PSBCSVQocyk7Cj4gICAKPiAgIAkJaWYgKElTX0dFTjlfQkMoZGV2X3ByaXYpKQo+ IC0JCQlzc2V1LT5zdWJzbGljZV9tYXNrW3NdID0KPiAtCQkJCVJVTlRJTUVfSU5GTyhkZXZfcHJp diktPnNzZXUuc3Vic2xpY2VfbWFza1tzXTsKPiArCQkJaW50ZWxfc3NldV9jb3B5X3N1YnNsaWNl cygmaW5mby0+c3NldSwgcywKPiArCQkJCQkJICBzc2V1LT5zdWJzbGljZV9tYXNrKTsKPiAgIAo+ ICAgCQlmb3IgKHNzID0gMDsgc3MgPCBpbmZvLT5zc2V1Lm1heF9zdWJzbGljZXM7IHNzKyspIHsK PiAgIAkJCXVuc2lnbmVkIGludCBldV9jbnQ7Cj4gKwkJCXU4IHNzX2lkeCA9IHMgKiBpbmZvLT5z c2V1LnNzX3N0cmlkZSArCj4gKwkJCQkgICAgc3MgLyBCSVRTX1BFUl9CWVRFOwo+ICAgCj4gICAJ CQlpZiAoSVNfR0VOOV9MUChkZXZfcHJpdikpIHsKPiAgIAkJCQlpZiAoIShzX3JlZ1tzXSAmIChH RU45X1BHQ1RMX1NTX0FDSyhzcykpKSkKPiAgIAkJCQkJLyogc2tpcCBkaXNhYmxlZCBzdWJzbGlj ZSAqLwo+ICAgCQkJCQljb250aW51ZTsKPiAgIAo+IC0JCQkJc3NldS0+c3Vic2xpY2VfbWFza1tz XSB8PSBCSVQoc3MpOwo+ICsJCQkJc3NldS0+c3Vic2xpY2VfbWFza1tzc19pZHhdIHw9Cj4gKwkJ CQkJQklUKHNzICUgQklUU19QRVJfQllURSk7Cj4gICAJCQl9Cj4gICAKPiAgIAkJCWV1X2NudCA9 IDIgKiBod2VpZ2h0MzIoZXVfcmVnWzIqcyArIHNzLzJdICYKPiBAQCAtNDE1MSwyNSArNDE1NSwy MyBAQCBzdGF0aWMgdm9pZCBnZW45X3NzZXVfZGV2aWNlX3N0YXR1cyhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCj4gICBzdGF0aWMgdm9pZCBicm9hZHdlbGxfc3NldV9kZXZpY2Vf c3RhdHVzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgIAkJCQkJIHN0cnVj dCBzc2V1X2Rldl9pbmZvICpzc2V1KQo+ICAgewo+ICsJc3RydWN0IGludGVsX3J1bnRpbWVfaW5m byAqaW5mbyA9IFJVTlRJTUVfSU5GTyhkZXZfcHJpdik7Cj4gICAJdTMyIHNsaWNlX2luZm8gPSBJ OTE1X1JFQUQoR0VOOF9HVF9TTElDRV9JTkZPKTsKPiAgIAlpbnQgczsKPiAgIAo+ICAgCXNzZXUt PnNsaWNlX21hc2sgPSBzbGljZV9pbmZvICYgR0VOOF9MU0xJQ0VTVEFUX01BU0s7Cj4gICAKPiAg IAlpZiAoc3NldS0+c2xpY2VfbWFzaykgewo+IC0JCXNzZXUtPmV1X3Blcl9zdWJzbGljZSA9Cj4g LQkJCVJVTlRJTUVfSU5GTyhkZXZfcHJpdiktPnNzZXUuZXVfcGVyX3N1YnNsaWNlOwo+IC0JCWZv ciAocyA9IDA7IHMgPCBmbHMoc3NldS0+c2xpY2VfbWFzayk7IHMrKykgewo+IC0JCQlzc2V1LT5z dWJzbGljZV9tYXNrW3NdID0KPiAtCQkJCVJVTlRJTUVfSU5GTyhkZXZfcHJpdiktPnNzZXUuc3Vi c2xpY2VfbWFza1tzXTsKPiAtCQl9Cj4gKwkJc3NldS0+ZXVfcGVyX3N1YnNsaWNlID0gaW5mby0+ c3NldS5ldV9wZXJfc3Vic2xpY2U7Cj4gKwkJZm9yIChzID0gMDsgcyA8IGZscyhzc2V1LT5zbGlj ZV9tYXNrKTsgcysrKQo+ICsJCQlpbnRlbF9zc2V1X2NvcHlfc3Vic2xpY2VzKCZpbmZvLT5zc2V1 LCBzLAo+ICsJCQkJCQkgIHNzZXUtPnN1YnNsaWNlX21hc2spOwo+ICAgCQlzc2V1LT5ldV90b3Rh bCA9IHNzZXUtPmV1X3Blcl9zdWJzbGljZSAqCj4gICAJCQkJIGludGVsX3NzZXVfc3Vic2xpY2Vf dG90YWwoc3NldSk7Cj4gICAKPiAgIAkJLyogc3VidHJhY3QgZnVzZWQgb2ZmIEVVKHMpIGZyb20g ZW5hYmxlZCBzbGljZShzKSAqLwo+ICAgCQlmb3IgKHMgPSAwOyBzIDwgZmxzKHNzZXUtPnNsaWNl X21hc2spOyBzKyspIHsKPiAtCQkJdTggc3Vic2xpY2VfN2V1ID0KPiAtCQkJCVJVTlRJTUVfSU5G TyhkZXZfcHJpdiktPnNzZXUuc3Vic2xpY2VfN2V1W3NdOwo+ICsJCQl1OCBzdWJzbGljZV83ZXUg PSBpbmZvLT5zc2V1LnN1YnNsaWNlXzdldVtzXTsKPiAgIAo+ICAgCQkJc3NldS0+ZXVfdG90YWwg LT0gaHdlaWdodDgoc3Vic2xpY2VfN2V1KTsKPiAgIAkJfQo+IEBAIC00MjE2LDYgKzQyMTgsNyBA QCBzdGF0aWMgdm9pZCBpOTE1X3ByaW50X3NzZXVfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIGJv b2wgaXNfYXZhaWxhYmxlX2luZm8sCj4gICBzdGF0aWMgaW50IGk5MTVfc3NldV9zdGF0dXMoc3Ry dWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCj4gICB7Cj4gICAJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gbm9kZV90b19pOTE1KG0tPnByaXZhdGUpOwo+ICsJY29uc3Qg c3RydWN0IGludGVsX3J1bnRpbWVfaW5mbyAqaW5mbyA9IFJVTlRJTUVfSU5GTyhkZXZfcHJpdik7 Cj4gICAJc3RydWN0IHNzZXVfZGV2X2luZm8gc3NldTsKPiAgIAlpbnRlbF93YWtlcmVmX3Qgd2Fr ZXJlZjsKPiAgIAo+IEBAIC00MjIzLDE0ICs0MjI2LDEzIEBAIHN0YXRpYyBpbnQgaTkxNV9zc2V1 X3N0YXR1cyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKPiAgIAkJcmV0dXJuIC1F Tk9ERVY7Cj4gICAKPiAgIAlzZXFfcHV0cyhtLCAiU1NFVSBEZXZpY2UgSW5mb1xuIik7Cj4gLQlp OTE1X3ByaW50X3NzZXVfaW5mbyhtLCB0cnVlLCAmUlVOVElNRV9JTkZPKGRldl9wcml2KS0+c3Nl dSk7Cj4gKwlpOTE1X3ByaW50X3NzZXVfaW5mbyhtLCB0cnVlLCAmaW5mby0+c3NldSk7Cj4gICAK PiAgIAlzZXFfcHV0cyhtLCAiU1NFVSBEZXZpY2UgU3RhdHVzXG4iKTsKPiAgIAltZW1zZXQoJnNz ZXUsIDAsIHNpemVvZihzc2V1KSk7Cj4gLQlzc2V1Lm1heF9zbGljZXMgPSBSVU5USU1FX0lORk8o ZGV2X3ByaXYpLT5zc2V1Lm1heF9zbGljZXM7Cj4gLQlzc2V1Lm1heF9zdWJzbGljZXMgPSBSVU5U SU1FX0lORk8oZGV2X3ByaXYpLT5zc2V1Lm1heF9zdWJzbGljZXM7Cj4gLQlzc2V1Lm1heF9ldXNf cGVyX3N1YnNsaWNlID0KPiAtCQlSVU5USU1FX0lORk8oZGV2X3ByaXYpLT5zc2V1Lm1heF9ldXNf cGVyX3N1YnNsaWNlOwo+ICsJaW50ZWxfc3NldV9zZXRfaW5mbygmc3NldSwgaW5mby0+c3NldS5t YXhfc2xpY2VzLAo+ICsJCQkgICAgaW5mby0+c3NldS5tYXhfc3Vic2xpY2VzLAo+ICsJCQkgICAg aW5mby0+c3NldS5tYXhfZXVzX3Blcl9zdWJzbGljZSk7Cj4gICAKPiAgIAl3aXRoX2ludGVsX3J1 bnRpbWVfcG0oZGV2X3ByaXYsIHdha2VyZWYpIHsKPiAgIAkJaWYgKElTX0NIRVJSWVZJRVcoZGV2 X3ByaXYpKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+IGluZGV4IDhhN2Q0ZGVhODYwOS4uZGM2 YmFmYzA5YjM2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4gQEAgLTMzMSw3ICszMzEs NyBAQCBzdGF0aWMgaW50IGk5MTVfZ2V0cGFyYW1faW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRl diwgdm9pZCAqZGF0YSwKPiAgIAlzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IGRldl9wcml2LT5kcm0u cGRldjsKPiAgIAljb25zdCBzdHJ1Y3Qgc3NldV9kZXZfaW5mbyAqc3NldSA9ICZSVU5USU1FX0lO Rk8oZGV2X3ByaXYpLT5zc2V1Owo+ICAgCWRybV9pOTE1X2dldHBhcmFtX3QgKnBhcmFtID0gZGF0 YTsKPiAtCWludCB2YWx1ZTsKPiArCWludCB2YWx1ZSA9IDA7Cj4gICAKPiAgIAlzd2l0Y2ggKHBh cmFtLT5wYXJhbSkgewo+ICAgCWNhc2UgSTkxNV9QQVJBTV9JUlFfQUNUSVZFOgo+IEBAIC00NjAs NyArNDYwLDkgQEAgc3RhdGljIGludCBpOTE1X2dldHBhcmFtX2lvY3RsKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4gICAJCQlyZXR1cm4gLUVOT0RFVjsKPiAgIAkJYnJlYWs7 Cj4gICAJY2FzZSBJOTE1X1BBUkFNX1NVQlNMSUNFX01BU0s6Cj4gLQkJdmFsdWUgPSBzc2V1LT5z dWJzbGljZV9tYXNrWzBdOwo+ICsJCS8qIE9ubHkgY29weSBiaXRzIGZyb20gdGhlIGZpcnN0IHNs aWNlICovCj4gKwkJbWVtY3B5KCZ2YWx1ZSwgc3NldS0+c3Vic2xpY2VfbWFzaywKPiArCQkgICAg ICAgbWluKHNzZXUtPnNzX3N0cmlkZSwgKHU4KXNpemVvZih2YWx1ZSkpKTsKPiAgIAkJaWYgKCF2 YWx1ZSkKPiAgIAkJCXJldHVybiAtRU5PREVWOwo+ICAgCQlicmVhazsKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ3B1X2Vycm9yLmMKPiBpbmRleCA0Zjg1Y2JkZGRiMGQuLmM3NjBjYzViMzM4OCAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYwo+IEBAIC00MDgsNiArNDA4 LDcgQEAgc3RhdGljIHZvaWQgcHJpbnRfZXJyb3JfYnVmZmVycyhzdHJ1Y3QgZHJtX2k5MTVfZXJy b3Jfc3RhdGVfYnVmICptLAo+ICAgc3RhdGljIHZvaWQgZXJyb3JfcHJpbnRfaW5zdGRvbmUoc3Ry dWN0IGRybV9pOTE1X2Vycm9yX3N0YXRlX2J1ZiAqbSwKPiAgIAkJCQkgY29uc3Qgc3RydWN0IGRy bV9pOTE1X2Vycm9yX2VuZ2luZSAqZWUpCj4gICB7Cj4gKwlzdHJ1Y3Qgc3NldV9kZXZfaW5mbyAq c3NldSA9ICZSVU5USU1FX0lORk8obS0+aTkxNSktPnNzZXU7Cj4gICAJaW50IHNsaWNlOwo+ICAg CWludCBzdWJzbGljZTsKPiAgIAo+IEBAIC00MjMsMTIgKzQyNCwxMiBAQCBzdGF0aWMgdm9pZCBl cnJvcl9wcmludF9pbnN0ZG9uZShzdHJ1Y3QgZHJtX2k5MTVfZXJyb3Jfc3RhdGVfYnVmICptLAo+ ICAgCWlmIChJTlRFTF9HRU4obS0+aTkxNSkgPD0gNikKPiAgIAkJcmV0dXJuOwo+ICAgCj4gLQlm b3JfZWFjaF9pbnN0ZG9uZV9zbGljZV9zdWJzbGljZShtLT5pOTE1LCBzbGljZSwgc3Vic2xpY2Up Cj4gKwlmb3JfZWFjaF9pbnN0ZG9uZV9zbGljZV9zdWJzbGljZShtLT5pOTE1LCBzc2V1LCBzbGlj ZSwgc3Vic2xpY2UpCj4gICAJCWVycl9wcmludGYobSwgIiAgU0FNUExFUl9JTlNURE9ORVslZF1b JWRdOiAweCUwOHhcbiIsCj4gICAJCQkgICBzbGljZSwgc3Vic2xpY2UsCj4gICAJCQkgICBlZS0+ aW5zdGRvbmUuc2FtcGxlcltzbGljZV1bc3Vic2xpY2VdKTsKPiAgIAo+IC0JZm9yX2VhY2hfaW5z dGRvbmVfc2xpY2Vfc3Vic2xpY2UobS0+aTkxNSwgc2xpY2UsIHN1YnNsaWNlKQo+ICsJZm9yX2Vh Y2hfaW5zdGRvbmVfc2xpY2Vfc3Vic2xpY2UobS0+aTkxNSwgc3NldSwgc2xpY2UsIHN1YnNsaWNl KQo+ICAgCQllcnJfcHJpbnRmKG0sICIgIFJPV19JTlNURE9ORVslZF1bJWRdOiAweCUwOHhcbiIs Cj4gICAJCQkgICBzbGljZSwgc3Vic2xpY2UsCj4gICAJCQkgICBlZS0+aW5zdGRvbmUucm93W3Ns aWNlXVtzdWJzbGljZV0pOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3F1ZXJ5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3F1ZXJ5LmMKPiBpbmRleCA3YzE3 MDhjMjI4MTEuLjAwMGRjYjE0NWNlMCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X3F1ZXJ5LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3F1ZXJ5LmMK PiBAQCAtMzcsOCArMzcsNiBAQCBzdGF0aWMgaW50IHF1ZXJ5X3RvcG9sb2d5X2luZm8oc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAgCWNvbnN0IHN0cnVjdCBzc2V1X2Rldl9p bmZvICpzc2V1ID0gJlJVTlRJTUVfSU5GTyhkZXZfcHJpdiktPnNzZXU7Cj4gICAJc3RydWN0IGRy bV9pOTE1X3F1ZXJ5X3RvcG9sb2d5X2luZm8gdG9wbzsKPiAgIAl1MzIgc2xpY2VfbGVuZ3RoLCBz dWJzbGljZV9sZW5ndGgsIGV1X2xlbmd0aCwgdG90YWxfbGVuZ3RoOwo+IC0JdTggc3Vic2xpY2Vf c3RyaWRlID0gR0VOX1NTRVVfU1RSSURFKHNzZXUtPm1heF9zdWJzbGljZXMpOwo+IC0JdTggZXVf c3RyaWRlID0gR0VOX1NTRVVfU1RSSURFKHNzZXUtPm1heF9ldXNfcGVyX3N1YnNsaWNlKTsKPiAg IAlpbnQgcmV0Owo+ICAgCj4gICAJaWYgKHF1ZXJ5X2l0ZW0tPmZsYWdzICE9IDApCj4gQEAgLTUw LDggKzQ4LDggQEAgc3RhdGljIGludCBxdWVyeV90b3BvbG9neV9pbmZvKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwKPiAgIAlCVUlMRF9CVUdfT04oc2l6ZW9mKHU4KSAhPSBzaXpl b2Yoc3NldS0+c2xpY2VfbWFzaykpOwo+ICAgCj4gICAJc2xpY2VfbGVuZ3RoID0gc2l6ZW9mKHNz ZXUtPnNsaWNlX21hc2spOwo+IC0Jc3Vic2xpY2VfbGVuZ3RoID0gc3NldS0+bWF4X3NsaWNlcyAq IHN1YnNsaWNlX3N0cmlkZTsKPiAtCWV1X2xlbmd0aCA9IHNzZXUtPm1heF9zbGljZXMgKiBzc2V1 LT5tYXhfc3Vic2xpY2VzICogZXVfc3RyaWRlOwo+ICsJc3Vic2xpY2VfbGVuZ3RoID0gc3NldS0+ bWF4X3NsaWNlcyAqIHNzZXUtPnNzX3N0cmlkZTsKPiArCWV1X2xlbmd0aCA9IHNzZXUtPm1heF9z bGljZXMgKiBzc2V1LT5tYXhfc3Vic2xpY2VzICogc3NldS0+ZXVfc3RyaWRlOwo+ICAgCXRvdGFs X2xlbmd0aCA9IHNpemVvZih0b3BvKSArIHNsaWNlX2xlbmd0aCArIHN1YnNsaWNlX2xlbmd0aCAr Cj4gICAJCSAgICAgICBldV9sZW5ndGg7Cj4gICAKPiBAQCAtNjksOSArNjcsOSBAQCBzdGF0aWMg aW50IHF1ZXJ5X3RvcG9sb2d5X2luZm8oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LAo+ICAgCXRvcG8ubWF4X2V1c19wZXJfc3Vic2xpY2UgPSBzc2V1LT5tYXhfZXVzX3Blcl9zdWJz bGljZTsKPiAgIAo+ICAgCXRvcG8uc3Vic2xpY2Vfb2Zmc2V0ID0gc2xpY2VfbGVuZ3RoOwo+IC0J dG9wby5zdWJzbGljZV9zdHJpZGUgPSBzdWJzbGljZV9zdHJpZGU7Cj4gKwl0b3BvLnN1YnNsaWNl X3N0cmlkZSA9IHNzZXUtPnNzX3N0cmlkZTsKPiAgIAl0b3BvLmV1X29mZnNldCA9IHNsaWNlX2xl bmd0aCArIHN1YnNsaWNlX2xlbmd0aDsKPiAtCXRvcG8uZXVfc3RyaWRlID0gZXVfc3RyaWRlOwo+ ICsJdG9wby5ldV9zdHJpZGUgPSBzc2V1LT5ldV9zdHJpZGU7Cj4gICAKPiAgIAlpZiAoX19jb3B5 X3RvX3VzZXIodTY0X3RvX3VzZXJfcHRyKHF1ZXJ5X2l0ZW0tPmRhdGFfcHRyKSwKPiAgIAkJCSAg ICZ0b3BvLCBzaXplb2YodG9wbykpKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kZXZpY2VfaW5mby5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGV2aWNl X2luZm8uYwo+IGluZGV4IDk3Zjc0MjUzMGZhMS4uMzYyNWY3NzdmM2EzIDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RldmljZV9pbmZvLmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kZXZpY2VfaW5mby5jCj4gQEAgLTkyLDkgKzkyLDkgQEAgc3Rh dGljIHZvaWQgc3NldV9kdW1wKGNvbnN0IHN0cnVjdCBzc2V1X2Rldl9pbmZvICpzc2V1LCBzdHJ1 Y3QgZHJtX3ByaW50ZXIgKnApCj4gICAJCSAgIGh3ZWlnaHQ4KHNzZXUtPnNsaWNlX21hc2spLCBz c2V1LT5zbGljZV9tYXNrKTsKPiAgIAlkcm1fcHJpbnRmKHAsICJzdWJzbGljZSB0b3RhbDogJXVc biIsIGludGVsX3NzZXVfc3Vic2xpY2VfdG90YWwoc3NldSkpOwo+ICAgCWZvciAocyA9IDA7IHMg PCBzc2V1LT5tYXhfc2xpY2VzOyBzKyspIHsKPiAtCQlkcm1fcHJpbnRmKHAsICJzbGljZSVkOiAl dSBzdWJzbGljZXMsIG1hc2s9JTA0eFxuIiwKPiArCQlkcm1fcHJpbnRmKHAsICJzbGljZSVkOiAl dSBzdWJzbGljZXMsIG1hc2s9JTA4eFxuIiwKPiAgIAkJCSAgIHMsIGludGVsX3NzZXVfc3Vic2xp Y2VzX3Blcl9zbGljZShzc2V1LCBzKSwKPiAtCQkJICAgc3NldS0+c3Vic2xpY2VfbWFza1tzXSk7 Cj4gKwkJCSAgIGludGVsX3NzZXVfZ2V0X3N1YnNsaWNlcyhzc2V1LCBzKSk7Cj4gICAJfQo+ICAg CWRybV9wcmludGYocCwgIkVVIHRvdGFsOiAldVxuIiwgc3NldS0+ZXVfdG90YWwpOwo+ICAgCWRy bV9wcmludGYocCwgIkVVIHBlciBzdWJzbGljZTogJXVcbiIsIHNzZXUtPmV1X3Blcl9zdWJzbGlj ZSk7Cj4gQEAgLTExNywxMCArMTE3LDkgQEAgdm9pZCBpbnRlbF9kZXZpY2VfaW5mb19kdW1wX3J1 bnRpbWUoY29uc3Qgc3RydWN0IGludGVsX3J1bnRpbWVfaW5mbyAqaW5mbywKPiAgIHN0YXRpYyBp bnQgc3NldV9ldV9pZHgoY29uc3Qgc3RydWN0IHNzZXVfZGV2X2luZm8gKnNzZXUsIGludCBzbGlj ZSwKPiAgIAkJICAgICAgIGludCBzdWJzbGljZSkKPiAgIHsKPiAtCWludCBzdWJzbGljZV9zdHJp ZGUgPSBHRU5fU1NFVV9TVFJJREUoc3NldS0+bWF4X2V1c19wZXJfc3Vic2xpY2UpOwo+IC0JaW50 IHNsaWNlX3N0cmlkZSA9IHNzZXUtPm1heF9zdWJzbGljZXMgKiBzdWJzbGljZV9zdHJpZGU7Cj4g KwlpbnQgc2xpY2Vfc3RyaWRlID0gc3NldS0+bWF4X3N1YnNsaWNlcyAqIHNzZXUtPmV1X3N0cmlk ZTsKPiAgIAo+IC0JcmV0dXJuIHNsaWNlICogc2xpY2Vfc3RyaWRlICsgc3Vic2xpY2UgKiBzdWJz bGljZV9zdHJpZGU7Cj4gKwlyZXR1cm4gc2xpY2UgKiBzbGljZV9zdHJpZGUgKyBzdWJzbGljZSAq IHNzZXUtPmV1X3N0cmlkZTsKPiAgIH0KPiAgIAo+ICAgc3RhdGljIHUxNiBzc2V1X2dldF9ldXMo Y29uc3Qgc3RydWN0IHNzZXVfZGV2X2luZm8gKnNzZXUsIGludCBzbGljZSwKPiBAQCAtMTI5LDcg KzEyOCw3IEBAIHN0YXRpYyB1MTYgc3NldV9nZXRfZXVzKGNvbnN0IHN0cnVjdCBzc2V1X2Rldl9p bmZvICpzc2V1LCBpbnQgc2xpY2UsCj4gICAJaW50IGksIG9mZnNldCA9IHNzZXVfZXVfaWR4KHNz ZXUsIHNsaWNlLCBzdWJzbGljZSk7Cj4gICAJdTE2IGV1X21hc2sgPSAwOwo+ICAgCj4gLQlmb3Ig KGkgPSAwOyBpIDwgR0VOX1NTRVVfU1RSSURFKHNzZXUtPm1heF9ldXNfcGVyX3N1YnNsaWNlKTsg aSsrKSB7Cj4gKwlmb3IgKGkgPSAwOyBpIDwgc3NldS0+ZXVfc3RyaWRlOyBpKyspIHsKPiAgIAkJ ZXVfbWFzayB8PSAoKHUxNilzc2V1LT5ldV9tYXNrW29mZnNldCArIGldKSA8PAo+ICAgCQkJKGkg KiBCSVRTX1BFUl9CWVRFKTsKPiAgIAl9Cj4gQEAgLTE0Miw3ICsxNDEsNyBAQCBzdGF0aWMgdm9p ZCBzc2V1X3NldF9ldXMoc3RydWN0IHNzZXVfZGV2X2luZm8gKnNzZXUsIGludCBzbGljZSwgaW50 IHN1YnNsaWNlLAo+ICAgewo+ICAgCWludCBpLCBvZmZzZXQgPSBzc2V1X2V1X2lkeChzc2V1LCBz bGljZSwgc3Vic2xpY2UpOwo+ICAgCj4gLQlmb3IgKGkgPSAwOyBpIDwgR0VOX1NTRVVfU1RSSURF KHNzZXUtPm1heF9ldXNfcGVyX3N1YnNsaWNlKTsgaSsrKSB7Cj4gKwlmb3IgKGkgPSAwOyBpIDwg c3NldS0+ZXVfc3RyaWRlOyBpKyspIHsKPiAgIAkJc3NldS0+ZXVfbWFza1tvZmZzZXQgKyBpXSA9 Cj4gICAJCQkoZXVfbWFzayA+PiAoQklUU19QRVJfQllURSAqIGkpKSAmIDB4ZmY7Cj4gICAJfQo+ IEBAIC0xNTksOSArMTU4LDkgQEAgdm9pZCBpbnRlbF9kZXZpY2VfaW5mb19kdW1wX3RvcG9sb2d5 KGNvbnN0IHN0cnVjdCBzc2V1X2Rldl9pbmZvICpzc2V1LAo+ICAgCX0KPiAgIAo+ICAgCWZvciAo cyA9IDA7IHMgPCBzc2V1LT5tYXhfc2xpY2VzOyBzKyspIHsKPiAtCQlkcm1fcHJpbnRmKHAsICJz bGljZSVkOiAldSBzdWJzbGljZShzKSAoMHglaGh4KTpcbiIsCj4gKwkJZHJtX3ByaW50ZihwLCAi c2xpY2UlZDogJXUgc3Vic2xpY2UocykgKDB4JTA4eCk6XG4iLAo+ICAgCQkJICAgcywgaW50ZWxf c3NldV9zdWJzbGljZXNfcGVyX3NsaWNlKHNzZXUsIHMpLAo+IC0JCQkgICBzc2V1LT5zdWJzbGlj ZV9tYXNrW3NdKTsKPiArCQkJICAgaW50ZWxfc3NldV9nZXRfc3Vic2xpY2VzKHNzZXUsIHMpKTsK PiAgIAo+ICAgCQlmb3IgKHNzID0gMDsgc3MgPCBzc2V1LT5tYXhfc3Vic2xpY2VzOyBzcysrKSB7 Cj4gICAJCQl1MTYgZW5hYmxlZF9ldXMgPSBzc2V1X2dldF9ldXMoc3NldSwgcywgc3MpOwo+IEBA IC0xOTAsMTUgKzE4OSwxMCBAQCBzdGF0aWMgdm9pZCBnZW4xMV9zc2V1X2luZm9faW5pdChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gICAJdTggZXVfZW47Cj4gICAJaW50IHM7 Cj4gICAKPiAtCWlmIChJU19FTEtIQVJUTEFLRShkZXZfcHJpdikpIHsKPiAtCQlzc2V1LT5tYXhf c2xpY2VzID0gMTsKPiAtCQlzc2V1LT5tYXhfc3Vic2xpY2VzID0gNDsKPiAtCQlzc2V1LT5tYXhf ZXVzX3Blcl9zdWJzbGljZSA9IDg7Cj4gLQl9IGVsc2Ugewo+IC0JCXNzZXUtPm1heF9zbGljZXMg PSAxOwo+IC0JCXNzZXUtPm1heF9zdWJzbGljZXMgPSA4Owo+IC0JCXNzZXUtPm1heF9ldXNfcGVy X3N1YnNsaWNlID0gODsKPiAtCX0KPiArCWlmIChJU19FTEtIQVJUTEFLRShkZXZfcHJpdikpCj4g KwkJaW50ZWxfc3NldV9zZXRfaW5mbyhzc2V1LCAxLCA0LCA4KTsKPiArCWVsc2UKPiArCQlpbnRl bF9zc2V1X3NldF9pbmZvKHNzZXUsIDEsIDgsIDgpOwo+ICAgCj4gICAJc19lbiA9IEk5MTVfUkVB RChHRU4xMV9HVF9TTElDRV9FTkFCTEUpICYgR0VOMTFfR1RfU19FTkFfTUFTSzsKPiAgIAlzc19l biA9IH5JOTE1X1JFQUQoR0VOMTFfR1RfU1VCU0xJQ0VfRElTQUJMRSk7Cj4gQEAgLTIwNywxNSAr MjAxLDE1IEBAIHN0YXRpYyB2b2lkIGdlbjExX3NzZXVfaW5mb19pbml0KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKPiAgIAo+ICAgCWZvciAocyA9IDA7IHMgPCBzc2V1LT5tYXhf c2xpY2VzOyBzKyspIHsKPiAgIAkJaWYgKHNfZW4gJiBCSVQocykpIHsKPiAtCQkJaW50IHNzX2lk eCA9IHNzZXUtPm1heF9zdWJzbGljZXMgKiBzOwo+ICAgCQkJaW50IHNzOwo+ICAgCj4gICAJCQlz c2V1LT5zbGljZV9tYXNrIHw9IEJJVChzKTsKPiAtCQkJc3NldS0+c3Vic2xpY2VfbWFza1tzXSA9 IChzc19lbiA+PiBzc19pZHgpICYgc3NfZW5fbWFzazsKPiAtCQkJZm9yIChzcyA9IDA7IHNzIDwg c3NldS0+bWF4X3N1YnNsaWNlczsgc3MrKykgewo+IC0JCQkJaWYgKHNzZXUtPnN1YnNsaWNlX21h c2tbc10gJiBCSVQoc3MpKQo+ICsKPiArCQkJaW50ZWxfc3NldV9zZXRfc3Vic2xpY2VzKHNzZXUs IHMsIHNzX2VuX21hc2spOwo+ICsKPiArCQkJZm9yIChzcyA9IDA7IHNzIDwgc3NldS0+bWF4X3N1 YnNsaWNlczsgc3MrKykKPiArCQkJCWlmIChpbnRlbF9zc2V1X2hhc19zdWJzbGljZShzc2V1LCBz LCBzcykpCj4gICAJCQkJCXNzZXVfc2V0X2V1cyhzc2V1LCBzLCBzcywgZXVfZW4pOwo+IC0JCQl9 Cj4gICAJCX0KPiAgIAl9Cj4gICAJc3NldS0+ZXVfcGVyX3N1YnNsaWNlID0gaHdlaWdodDgoZXVf ZW4pOwo+IEBAIC0yMzUsMjMgKzIyOSwxMCBAQCBzdGF0aWMgdm9pZCBnZW4xMF9zc2V1X2luZm9f aW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gICAJY29uc3QgaW50IGV1 X21hc2sgPSAweGZmOwo+ICAgCXUzMiBzdWJzbGljZV9tYXNrLCBldV9lbjsKPiAgIAo+ICsJaW50 ZWxfc3NldV9zZXRfaW5mbyhzc2V1LCA2LCA0LCA4KTsKPiArCj4gICAJc3NldS0+c2xpY2VfbWFz ayA9IChmdXNlMiAmIEdFTjEwX0YyX1NfRU5BX01BU0spID4+Cj4gICAJCQkgICAgR0VOMTBfRjJf U19FTkFfU0hJRlQ7Cj4gLQlzc2V1LT5tYXhfc2xpY2VzID0gNjsKPiAtCXNzZXUtPm1heF9zdWJz bGljZXMgPSA0Owo+IC0Jc3NldS0+bWF4X2V1c19wZXJfc3Vic2xpY2UgPSA4Owo+IC0KPiAtCXN1 YnNsaWNlX21hc2sgPSAoMSA8PCA0KSAtIDE7Cj4gLQlzdWJzbGljZV9tYXNrICY9IH4oKGZ1c2Uy ICYgR0VOMTBfRjJfU1NfRElTX01BU0spID4+Cj4gLQkJCSAgIEdFTjEwX0YyX1NTX0RJU19TSElG VCk7Cj4gLQo+IC0JLyoKPiAtCSAqIFNsaWNlMCBjYW4gaGF2ZSB1cCB0byAzIHN1YnNsaWNlcywg YnV0IHRoZXJlIGFyZSBvbmx5IDIgaW4KPiAtCSAqIHNsaWNlMS8yLgo+IC0JICovCj4gLQlzc2V1 LT5zdWJzbGljZV9tYXNrWzBdID0gc3Vic2xpY2VfbWFzazsKPiAtCWZvciAocyA9IDE7IHMgPCBz c2V1LT5tYXhfc2xpY2VzOyBzKyspCj4gLQkJc3NldS0+c3Vic2xpY2VfbWFza1tzXSA9IHN1YnNs aWNlX21hc2sgJiAweDM7Cj4gICAKPiAgIAkvKiBTbGljZTAgKi8KPiAgIAlldV9lbiA9IH5JOTE1 X1JFQUQoR0VOOF9FVV9ESVNBQkxFMCk7Cj4gQEAgLTI3NiwxNCArMjU3LDIyIEBAIHN0YXRpYyB2 b2lkIGdlbjEwX3NzZXVfaW5mb19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKPiAgIAlldV9lbiA9IH5JOTE1X1JFQUQoR0VOMTBfRVVfRElTQUJMRTMpOwo+ICAgCXNzZXVf c2V0X2V1cyhzc2V1LCA1LCAxLCBldV9lbiAmIGV1X21hc2spOwo+ICAgCj4gLQkvKiBEbyBhIHNl Y29uZCBwYXNzIHdoZXJlIHdlIG1hcmsgdGhlIHN1YnNsaWNlcyBkaXNhYmxlZCBpZiBhbGwgdGhl aXIKPiAtCSAqIGV1cyBhcmUgb2ZmLgo+IC0JICovCj4gKwlzdWJzbGljZV9tYXNrID0gKDEgPDwg NCkgLSAxOwo+ICsJc3Vic2xpY2VfbWFzayAmPSB+KChmdXNlMiAmIEdFTjEwX0YyX1NTX0RJU19N QVNLKSA+Pgo+ICsJCQkgICBHRU4xMF9GMl9TU19ESVNfU0hJRlQpOwo+ICsKPiAgIAlmb3IgKHMg PSAwOyBzIDwgc3NldS0+bWF4X3NsaWNlczsgcysrKSB7Cj4gICAJCWZvciAoc3MgPSAwOyBzcyA8 IHNzZXUtPm1heF9zdWJzbGljZXM7IHNzKyspIHsKPiAgIAkJCWlmIChzc2V1X2dldF9ldXMoc3Nl dSwgcywgc3MpID09IDApCj4gLQkJCQlzc2V1LT5zdWJzbGljZV9tYXNrW3NdICY9IH5CSVQoc3Mp Owo+ICsJCQkJc3Vic2xpY2VfbWFzayAmPSB+QklUKHNzKTsKPiAgIAkJfQo+ICsKPiArCQkvKgo+ ICsJCSAqIFNsaWNlMCBjYW4gaGF2ZSB1cCB0byAzIHN1YnNsaWNlcywgYnV0IHRoZXJlIGFyZSBv bmx5IDIgaW4KPiArCQkgKiBzbGljZTEvMi4KPiArCQkgKi8KPiArCQlpbnRlbF9zc2V1X3NldF9z dWJzbGljZXMoc3NldSwgcywgcyA9PSAwID8gc3Vic2xpY2VfbWFzayA6Cj4gKwkJCQkJCQkgICBz dWJzbGljZV9tYXNrICYgMHgzKTsKPiAgIAl9Cj4gICAKPiAgIAlzc2V1LT5ldV90b3RhbCA9IGNv bXB1dGVfZXVfdG90YWwoc3NldSk7Cj4gQEAgLTMwOSwxMyArMjk4LDEyIEBAIHN0YXRpYyB2b2lk IGNoZXJyeXZpZXdfc3NldV9pbmZvX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQo+ICAgewo+ICAgCXN0cnVjdCBzc2V1X2Rldl9pbmZvICpzc2V1ID0gJlJVTlRJTUVfSU5G TyhkZXZfcHJpdiktPnNzZXU7Cj4gICAJdTMyIGZ1c2U7Cj4gKwl1OCBzdWJzbGljZV9tYXNrOwo+ ICAgCj4gICAJZnVzZSA9IEk5MTVfUkVBRChDSFZfRlVTRV9HVCk7Cj4gICAKPiAgIAlzc2V1LT5z bGljZV9tYXNrID0gQklUKDApOwo+IC0Jc3NldS0+bWF4X3NsaWNlcyA9IDE7Cj4gLQlzc2V1LT5t YXhfc3Vic2xpY2VzID0gMjsKPiAtCXNzZXUtPm1heF9ldXNfcGVyX3N1YnNsaWNlID0gODsKPiAr CWludGVsX3NzZXVfc2V0X2luZm8oc3NldSwgMSwgMiwgOCk7Cj4gICAKPiAgIAlpZiAoIShmdXNl ICYgQ0hWX0ZHVF9ESVNBQkxFX1NTMCkpIHsKPiAgIAkJdTggZGlzYWJsZWRfbWFzayA9Cj4gQEAg LTMyNCw3ICszMTIsNyBAQCBzdGF0aWMgdm9pZCBjaGVycnl2aWV3X3NzZXVfaW5mb19pbml0KHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgIAkJCSgoKGZ1c2UgJiBDSFZfRkdU X0VVX0RJU19TUzBfUjFfTUFTSykgPj4KPiAgIAkJCSAgQ0hWX0ZHVF9FVV9ESVNfU1MwX1IxX1NI SUZUKSA8PCA0KTsKPiAgIAo+IC0JCXNzZXUtPnN1YnNsaWNlX21hc2tbMF0gfD0gQklUKDApOwo+ ICsJCXN1YnNsaWNlX21hc2sgfD0gQklUKDApOwo+ICAgCQlzc2V1X3NldF9ldXMoc3NldSwgMCwg MCwgfmRpc2FibGVkX21hc2spOwo+ICAgCX0KPiAgIAo+IEBAIC0zMzUsMTAgKzMyMywxMiBAQCBz dGF0aWMgdm9pZCBjaGVycnl2aWV3X3NzZXVfaW5mb19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKPiAgIAkJCSgoKGZ1c2UgJiBDSFZfRkdUX0VVX0RJU19TUzFfUjFfTUFT SykgPj4KPiAgIAkJCSAgQ0hWX0ZHVF9FVV9ESVNfU1MxX1IxX1NISUZUKSA8PCA0KTsKPiAgIAo+ IC0JCXNzZXUtPnN1YnNsaWNlX21hc2tbMF0gfD0gQklUKDEpOwo+ICsJCXN1YnNsaWNlX21hc2sg fD0gQklUKDEpOwo+ICAgCQlzc2V1X3NldF9ldXMoc3NldSwgMCwgMSwgfmRpc2FibGVkX21hc2sp Owo+ICAgCX0KPiAgIAo+ICsJaW50ZWxfc3NldV9zZXRfc3Vic2xpY2VzKHNzZXUsIDAsIHN1YnNs aWNlX21hc2spOwo+ICsKPiAgIAlzc2V1LT5ldV90b3RhbCA9IGNvbXB1dGVfZXVfdG90YWwoc3Nl dSk7Cj4gICAKPiAgIAkvKgo+IEBAIC0zNzEsOSArMzYxLDggQEAgc3RhdGljIHZvaWQgZ2VuOV9z c2V1X2luZm9faW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gICAJc3Nl dS0+c2xpY2VfbWFzayA9IChmdXNlMiAmIEdFTjhfRjJfU19FTkFfTUFTSykgPj4gR0VOOF9GMl9T X0VOQV9TSElGVDsKPiAgIAo+ICAgCS8qIEJYVCBoYXMgYSBzaW5nbGUgc2xpY2UgYW5kIGF0IG1v c3QgMyBzdWJzbGljZXMuICovCj4gLQlzc2V1LT5tYXhfc2xpY2VzID0gSVNfR0VOOV9MUChkZXZf cHJpdikgPyAxIDogMzsKPiAtCXNzZXUtPm1heF9zdWJzbGljZXMgPSBJU19HRU45X0xQKGRldl9w cml2KSA/IDMgOiA0Owo+IC0Jc3NldS0+bWF4X2V1c19wZXJfc3Vic2xpY2UgPSA4Owo+ICsJaW50 ZWxfc3NldV9zZXRfaW5mbyhzc2V1LCBJU19HRU45X0xQKGRldl9wcml2KSA/IDEgOiAzLAo+ICsJ CQkgICAgSVNfR0VOOV9MUChkZXZfcHJpdikgPyAzIDogNCwgOCk7Cj4gICAKPiAgIAkvKgo+ICAg CSAqIFRoZSBzdWJzbGljZSBkaXNhYmxlIGZpZWxkIGlzIGdsb2JhbCwgaS5lLiBpdCBhcHBsaWVz Cj4gQEAgLTM5MiwxNCArMzgxLDE0IEBAIHN0YXRpYyB2b2lkIGdlbjlfc3NldV9pbmZvX2luaXQo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgCQkJLyogc2tpcCBkaXNhYmxl ZCBzbGljZSAqLwo+ICAgCQkJY29udGludWU7Cj4gICAKPiAtCQlzc2V1LT5zdWJzbGljZV9tYXNr W3NdID0gc3Vic2xpY2VfbWFzazsKPiArCQlpbnRlbF9zc2V1X3NldF9zdWJzbGljZXMoc3NldSwg cywgc3Vic2xpY2VfbWFzayk7Cj4gICAKPiAgIAkJZXVfZGlzYWJsZSA9IEk5MTVfUkVBRChHRU45 X0VVX0RJU0FCTEUocykpOwo+ICAgCQlmb3IgKHNzID0gMDsgc3MgPCBzc2V1LT5tYXhfc3Vic2xp Y2VzOyBzcysrKSB7Cj4gICAJCQlpbnQgZXVfcGVyX3NzOwo+ICAgCQkJdTggZXVfZGlzYWJsZWRf bWFzazsKPiAgIAo+IC0JCQlpZiAoIShzc2V1LT5zdWJzbGljZV9tYXNrW3NdICYgQklUKHNzKSkp Cj4gKwkJCWlmICghaW50ZWxfc3NldV9oYXNfc3Vic2xpY2Uoc3NldSwgcywgc3MpKQo+ICAgCQkJ CS8qIHNraXAgZGlzYWJsZWQgc3Vic2xpY2UgKi8KPiAgIAkJCQljb250aW51ZTsKPiAgIAo+IEBA IC00NzIsOSArNDYxLDcgQEAgc3RhdGljIHZvaWQgYnJvYWR3ZWxsX3NzZXVfaW5mb19pbml0KHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgIAo+ICAgCWZ1c2UyID0gSTkxNV9S RUFEKEdFTjhfRlVTRTIpOwo+ICAgCXNzZXUtPnNsaWNlX21hc2sgPSAoZnVzZTIgJiBHRU44X0Yy X1NfRU5BX01BU0spID4+IEdFTjhfRjJfU19FTkFfU0hJRlQ7Cj4gLQlzc2V1LT5tYXhfc2xpY2Vz ID0gMzsKPiAtCXNzZXUtPm1heF9zdWJzbGljZXMgPSAzOwo+IC0Jc3NldS0+bWF4X2V1c19wZXJf c3Vic2xpY2UgPSA4Owo+ICsJaW50ZWxfc3NldV9zZXRfaW5mbyhzc2V1LCAzLCAzLCA4KTsKPiAg IAo+ICAgCS8qCj4gICAJICogVGhlIHN1YnNsaWNlIGRpc2FibGUgZmllbGQgaXMgZ2xvYmFsLCBp LmUuIGl0IGFwcGxpZXMKPiBAQCAtNTAxLDE4ICs0ODgsMTkgQEAgc3RhdGljIHZvaWQgYnJvYWR3 ZWxsX3NzZXVfaW5mb19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAg IAkJCS8qIHNraXAgZGlzYWJsZWQgc2xpY2UgKi8KPiAgIAkJCWNvbnRpbnVlOwo+ICAgCj4gLQkJ c3NldS0+c3Vic2xpY2VfbWFza1tzXSA9IHN1YnNsaWNlX21hc2s7Cj4gKwkJaW50ZWxfc3NldV9z ZXRfc3Vic2xpY2VzKHNzZXUsIHMsIHN1YnNsaWNlX21hc2spOwo+ICAgCj4gICAJCWZvciAoc3Mg PSAwOyBzcyA8IHNzZXUtPm1heF9zdWJzbGljZXM7IHNzKyspIHsKPiAgIAkJCXU4IGV1X2Rpc2Fi bGVkX21hc2s7Cj4gICAJCQl1MzIgbl9kaXNhYmxlZDsKPiAgIAo+IC0JCQlpZiAoIShzc2V1LT5z dWJzbGljZV9tYXNrW3NdICYgQklUKHNzKSkpCj4gKwkJCWlmICghaW50ZWxfc3NldV9oYXNfc3Vi c2xpY2Uoc3NldSwgcywgc3MpKQo+ICAgCQkJCS8qIHNraXAgZGlzYWJsZWQgc3Vic2xpY2UgKi8K PiAgIAkJCQljb250aW51ZTsKPiAgIAo+ICAgCQkJZXVfZGlzYWJsZWRfbWFzayA9Cj4gLQkJCQll dV9kaXNhYmxlW3NdID4+IChzcyAqIHNzZXUtPm1heF9ldXNfcGVyX3N1YnNsaWNlKTsKPiArCQkJ CWV1X2Rpc2FibGVbc10gPj4KPiArCQkJCQkoc3MgKiBzc2V1LT5tYXhfZXVzX3Blcl9zdWJzbGlj ZSk7Cj4gICAKPiAgIAkJCXNzZXVfc2V0X2V1cyhzc2V1LCBzLCBzcywgfmV1X2Rpc2FibGVkX21h c2spOwo+ICAgCj4gQEAgLTU1Miw2ICs1NDAsNyBAQCBzdGF0aWMgdm9pZCBoYXN3ZWxsX3NzZXVf aW5mb19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgIAlzdHJ1Y3Qg c3NldV9kZXZfaW5mbyAqc3NldSA9ICZSVU5USU1FX0lORk8oZGV2X3ByaXYpLT5zc2V1Owo+ICAg CXUzMiBmdXNlMTsKPiAgIAlpbnQgcywgc3M7Cj4gKwl1MzIgc3Vic2xpY2VfbWFzazsKPiAgIAo+ ICAgCS8qCj4gICAJICogVGhlcmUgaXNuJ3QgYSByZWdpc3RlciB0byB0ZWxsIHVzIGhvdyBtYW55 IHNsaWNlcy9zdWJzbGljZXMuIFdlCj4gQEAgLTU2MywyMiArNTUyLDE4IEBAIHN0YXRpYyB2b2lk IGhhc3dlbGxfc3NldV9pbmZvX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQo+ICAgCQkvKiBmYWxsIHRocm91Z2ggKi8KPiAgIAljYXNlIDE6Cj4gICAJCXNzZXUtPnNsaWNl X21hc2sgPSBCSVQoMCk7Cj4gLQkJc3NldS0+c3Vic2xpY2VfbWFza1swXSA9IEJJVCgwKTsKPiAr CQlzdWJzbGljZV9tYXNrID0gQklUKDApOwo+ICAgCQlicmVhazsKPiAgIAljYXNlIDI6Cj4gICAJ CXNzZXUtPnNsaWNlX21hc2sgPSBCSVQoMCk7Cj4gLQkJc3NldS0+c3Vic2xpY2VfbWFza1swXSA9 IEJJVCgwKSB8IEJJVCgxKTsKPiArCQlzdWJzbGljZV9tYXNrID0gQklUKDApIHwgQklUKDEpOwo+ ICAgCQlicmVhazsKPiAgIAljYXNlIDM6Cj4gICAJCXNzZXUtPnNsaWNlX21hc2sgPSBCSVQoMCkg fCBCSVQoMSk7Cj4gLQkJc3NldS0+c3Vic2xpY2VfbWFza1swXSA9IEJJVCgwKSB8IEJJVCgxKTsK PiAtCQlzc2V1LT5zdWJzbGljZV9tYXNrWzFdID0gQklUKDApIHwgQklUKDEpOwo+ICsJCXN1YnNs aWNlX21hc2sgPSBCSVQoMCkgfCBCSVQoMSk7Cj4gICAJCWJyZWFrOwo+ICAgCX0KPiAgIAo+IC0J c3NldS0+bWF4X3NsaWNlcyA9IGh3ZWlnaHQ4KHNzZXUtPnNsaWNlX21hc2spOwo+IC0Jc3NldS0+ bWF4X3N1YnNsaWNlcyA9IGh3ZWlnaHQ4KHNzZXUtPnN1YnNsaWNlX21hc2tbMF0pOwo+IC0KPiAg IAlmdXNlMSA9IEk5MTVfUkVBRChIU1dfUEFWUF9GVVNFMSk7Cj4gICAJc3dpdGNoICgoZnVzZTEg JiBIU1dfRjFfRVVfRElTX01BU0spID4+IEhTV19GMV9FVV9ESVNfU0hJRlQpIHsKPiAgIAlkZWZh dWx0Ogo+IEBAIC01OTUsOSArNTgwLDE0IEBAIHN0YXRpYyB2b2lkIGhhc3dlbGxfc3NldV9pbmZv X2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgCQlzc2V1LT5ldV9w ZXJfc3Vic2xpY2UgPSA2Owo+ICAgCQlicmVhazsKPiAgIAl9Cj4gLQlzc2V1LT5tYXhfZXVzX3Bl cl9zdWJzbGljZSA9IHNzZXUtPmV1X3Blcl9zdWJzbGljZTsKPiArCj4gKwlpbnRlbF9zc2V1X3Nl dF9pbmZvKHNzZXUsIGh3ZWlnaHQ4KHNzZXUtPnNsaWNlX21hc2spLAo+ICsJCQkgICAgaHdlaWdo dDgoc3Vic2xpY2VfbWFzayksCj4gKwkJCSAgICBzc2V1LT5ldV9wZXJfc3Vic2xpY2UpOwo+ICAg Cj4gICAJZm9yIChzID0gMDsgcyA8IHNzZXUtPm1heF9zbGljZXM7IHMrKykgewo+ICsJCWludGVs X3NzZXVfc2V0X3N1YnNsaWNlcyhzc2V1LCBzLCBzdWJzbGljZV9tYXNrKTsKPiArCj4gICAJCWZv ciAoc3MgPSAwOyBzcyA8IHNzZXUtPm1heF9zdWJzbGljZXM7IHNzKyspIHsKPiAgIAkJCXNzZXVf c2V0X2V1cyhzc2V1LCBzLCBzcywKPiAgIAkJCQkgICAgICgxVUwgPDwgc3NldS0+ZXVfcGVyX3N1 YnNsaWNlKSAtIDEpOwo+IApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRl bC1nZng=