From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 1/6] drm/i915: store all subslice masks Date: Thu, 11 Jan 2018 11:12:46 +0000 Message-ID: References: <20171218153520.14181-1-lionel.g.landwerlin@intel.com> <20171218153520.14181-2-lionel.g.landwerlin@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5138D89AF3 for ; Thu, 11 Jan 2018 11:12:49 +0000 (UTC) In-Reply-To: <20171218153520.14181-2-lionel.g.landwerlin@intel.com> Content-Language: en-GB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Lionel Landwerlin , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Ck9uIDE4LzEyLzIwMTcgMTU6MzUsIExpb25lbCBMYW5kd2VybGluIHdyb3RlOgo+IFVwIHRvIG5v dywgc3Vic2xpY2UgbWFzayB3YXMgYXNzdW1lZCB0byBiZSB1bmlmb3JtIGFjcm9zcyBzbGljZXMu IEJ1dAo+IHN0YXJ0aW5nIHdpdGggQ2Fubm9ubGFrZSwgc2xpY2VzIGNhbiBiZSBhc3ltZXRyaWMg KGZvciBleGFtcGxlIHNsaWNlMAoKYXN5bW1ldHJpYywgdGhhbmtzIGF1dG8gc3BlbGwgY2hlY2tl ci4gOikKCj4gaGFzIGRpZmZlcmVudCBudW1iZXIgb2Ygc3Vic2xpY2VzIGFzIHNsaWNlMSspLiBU aGlzIGNoYW5nZSBzdG9yZXMgYWxsCj4gc3Vic2xpY2VzIG1hc2tzIGZvciBhbGwgc2xpY2VzIHJh dGhlciB0aGFuIGhhdmluZyBhIHNpbmdsZSBtYXNrIHRoYXQKPiBhcHBsaWVzIHRvIGFsbCBzbGlj ZXMuCj4gCj4gU2lnbmVkLW9mZi1ieTogTGlvbmVsIExhbmR3ZXJsaW4gPGxpb25lbC5nLmxhbmR3 ZXJsaW5AaW50ZWwuY29tPgo+IC0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1 Z2ZzLmMgICAgICB8ICAyNCArKystLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu YyAgICAgICAgICB8ICAgMiArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAg ICAgICAgICB8ICAyMyArKysrLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGV2aWNl X2luZm8uYyB8IDE2OSArKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tCj4gICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyAgICAgICAgIHwgICAyICstCj4gICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmggIHwgICAyICstCj4gICA2IGZpbGVzIGNoYW5n ZWQsIDE2MSBpbnNlcnRpb25zKCspLCA2MSBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2RlYnVnZnMuYwo+IGluZGV4IDBkZGNlNzI1NTJiZi4uMGM3ODkwYjY5NWM1IDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiBAQCAtNDI5Myw3ICs0MjkzLDcgQEAg c3RhdGljIHZvaWQgY2hlcnJ5dmlld19zc2V1X2RldmljZV9zdGF0dXMoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LAo+ICAgCQkJY29udGludWU7Cj4gICAKPiAgIAkJc3NldS0+c2xp Y2VfbWFzayA9IEJJVCgwKTsKPiAtCQlzc2V1LT5zdWJzbGljZV9tYXNrIHw9IEJJVChzcyk7Cj4g KwkJc3NldS0+c3Vic2xpY2VzX21hc2tbMF0gfD0gQklUKHNzKTsKPiAgIAkJZXVfY250ID0gKChz aWcxW3NzXSAmIENIVl9FVTA4X1BHX0VOQUJMRSkgPyAwIDogMikgKwo+ICAgCQkJICgoc2lnMVtz c10gJiBDSFZfRVUxOV9QR19FTkFCTEUpID8gMCA6IDIpICsKPiAgIAkJCSAoKHNpZzFbc3NdICYg Q0hWX0VVMjEwX1BHX0VOQUJMRSkgPyAwIDogMikgKwo+IEBAIC00MzQwLDcgKzQzNDAsNyBAQCBz dGF0aWMgdm9pZCBnZW4xMF9zc2V1X2RldmljZV9zdGF0dXMoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LAo+ICAgCQkJY29udGludWU7Cj4gICAKPiAgIAkJc3NldS0+c2xpY2VfbWFz ayB8PSBCSVQocyk7Cj4gLQkJc3NldS0+c3Vic2xpY2VfbWFzayA9IGluZm8tPnNzZXUuc3Vic2xp Y2VfbWFzazsKPiArCQlzc2V1LT5zdWJzbGljZXNfbWFza1tzXSA9IGluZm8tPnNzZXUuc3Vic2xp Y2VzX21hc2tbc107Cj4gICAKPiAgIAkJZm9yIChzcyA9IDA7IHNzIDwgc3NfbWF4OyBzcysrKSB7 Cj4gICAJCQl1bnNpZ25lZCBpbnQgZXVfY250Owo+IEBAIC00Mzk1LDggKzQzOTUsOCBAQCBzdGF0 aWMgdm9pZCBnZW45X3NzZXVfZGV2aWNlX3N0YXR1cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsCj4gICAJCXNzZXUtPnNsaWNlX21hc2sgfD0gQklUKHMpOwo+ICAgCj4gICAJCWlm IChJU19HRU45X0JDKGRldl9wcml2KSkKPiAtCQkJc3NldS0+c3Vic2xpY2VfbWFzayA9Cj4gLQkJ CQlJTlRFTF9JTkZPKGRldl9wcml2KS0+c3NldS5zdWJzbGljZV9tYXNrOwo+ICsJCQlzc2V1LT5z dWJzbGljZXNfbWFza1tzXSA9Cj4gKwkJCQlJTlRFTF9JTkZPKGRldl9wcml2KS0+c3NldS5zdWJz bGljZXNfbWFza1tzXTsKPiAgIAo+ICAgCQlmb3IgKHNzID0gMDsgc3MgPCBzc19tYXg7IHNzKysp IHsKPiAgIAkJCXVuc2lnbmVkIGludCBldV9jbnQ7Cj4gQEAgLTQ0MDYsNyArNDQwNiw3IEBAIHN0 YXRpYyB2b2lkIGdlbjlfc3NldV9kZXZpY2Vfc3RhdHVzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKPiAgIAkJCQkJLyogc2tpcCBkaXNhYmxlZCBzdWJzbGljZSAqLwo+ICAgCQkJ CQljb250aW51ZTsKPiAgIAo+IC0JCQkJc3NldS0+c3Vic2xpY2VfbWFzayB8PSBCSVQoc3MpOwo+ ICsJCQkJc3NldS0+c3Vic2xpY2VzX21hc2tbc10gfD0gQklUKHNzKTsKPiAgIAkJCX0KPiAgIAo+ ICAgCQkJZXVfY250ID0gMiAqIGh3ZWlnaHQzMihldV9yZWdbMipzICsgc3MvMl0gJgo+IEBAIC00 NDI4LDkgKzQ0MjgsMTIgQEAgc3RhdGljIHZvaWQgYnJvYWR3ZWxsX3NzZXVfZGV2aWNlX3N0YXR1 cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gICAJc3NldS0+c2xpY2VfbWFz ayA9IHNsaWNlX2luZm8gJiBHRU44X0xTTElDRVNUQVRfTUFTSzsKPiAgIAo+ICAgCWlmIChzc2V1 LT5zbGljZV9tYXNrKSB7Cj4gLQkJc3NldS0+c3Vic2xpY2VfbWFzayA9IElOVEVMX0lORk8oZGV2 X3ByaXYpLT5zc2V1LnN1YnNsaWNlX21hc2s7Cj4gICAJCXNzZXUtPmV1X3Blcl9zdWJzbGljZSA9 Cj4gICAJCQkJSU5URUxfSU5GTyhkZXZfcHJpdiktPnNzZXUuZXVfcGVyX3N1YnNsaWNlOwo+ICsJ CWZvciAocyA9IDA7IHMgPCBmbHMoc3NldS0+c2xpY2VfbWFzayk7IHMrKykgewo+ICsJCQlzc2V1 LT5zdWJzbGljZXNfbWFza1tzXSA9Cj4gKwkJCQlJTlRFTF9JTkZPKGRldl9wcml2KS0+c3NldS5z dWJzbGljZXNfbWFza1tzXTsKPiArCQl9Cj4gICAJCXNzZXUtPmV1X3RvdGFsID0gc3NldS0+ZXVf cGVyX3N1YnNsaWNlICoKPiAgIAkJCQkgc3NldV9zdWJzbGljZV90b3RhbChzc2V1KTsKPiAgIAo+ IEBAIC00NDQ5LDYgKzQ0NTIsNyBAQCBzdGF0aWMgdm9pZCBpOTE1X3ByaW50X3NzZXVfaW5mbyhz dHJ1Y3Qgc2VxX2ZpbGUgKm0sIGJvb2wgaXNfYXZhaWxhYmxlX2luZm8sCj4gICB7Cj4gICAJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gbm9kZV90b19pOTE1KG0tPnByaXZhdGUp Owo+ICAgCWNvbnN0IGNoYXIgKnR5cGUgPSBpc19hdmFpbGFibGVfaW5mbyA/ICJBdmFpbGFibGUi IDogIkVuYWJsZWQiOwo+ICsJaW50IHM7Cj4gICAKPiAgIAlzZXFfcHJpbnRmKG0sICIgICVzIFNs aWNlIE1hc2s6ICUwNHhcbiIsIHR5cGUsCj4gICAJCSAgIHNzZXUtPnNsaWNlX21hc2spOwo+IEBA IC00NDU2LDEwICs0NDYwLDEwIEBAIHN0YXRpYyB2b2lkIGk5MTVfcHJpbnRfc3NldV9pbmZvKHN0 cnVjdCBzZXFfZmlsZSAqbSwgYm9vbCBpc19hdmFpbGFibGVfaW5mbywKPiAgIAkJICAgaHdlaWdo dDgoc3NldS0+c2xpY2VfbWFzaykpOwo+ICAgCXNlcV9wcmludGYobSwgIiAgJXMgU3Vic2xpY2Ug VG90YWw6ICV1XG4iLCB0eXBlLAo+ICAgCQkgICBzc2V1X3N1YnNsaWNlX3RvdGFsKHNzZXUpKTsK PiAtCXNlcV9wcmludGYobSwgIiAgJXMgU3Vic2xpY2UgTWFzazogJTA0eFxuIiwgdHlwZSwKPiAt CQkgICBzc2V1LT5zdWJzbGljZV9tYXNrKTsKPiAtCXNlcV9wcmludGYobSwgIiAgJXMgU3Vic2xp Y2UgUGVyIFNsaWNlOiAldVxuIiwgdHlwZSwKPiAtCQkgICBod2VpZ2h0OChzc2V1LT5zdWJzbGlj ZV9tYXNrKSk7Cj4gKwlmb3IgKHMgPSAwOyBzIDwgZmxzKHNzZXUtPnNsaWNlX21hc2spOyBzKysp IHsKClNsaWNlIG1hc2sgaXMgYWx3YXlzIGNvbnRpZ3VvdXMgYml0cz8KCj4gKwkJc2VxX3ByaW50 ZihtLCAiICAlcyBTbGljZSVpIFN1YnNsaWNlIE1hc2s6ICUwNHhcbiIsIHR5cGUsCj4gKwkJCSAg IHMsIHNzZXUtPnN1YnNsaWNlc19tYXNrW3NdKTsKCkRvbid0IHdhbnQgdG8ga2VlcCBwcmludGlu ZyB0aGUgY291bnQ/IExpa2UgbWF5YmUgIiAlcyBTbGljZSV1ICV1IApzdWJsaWNlcywgbWFzaz0l MDR4XG4iID8KCj4gKwl9Cj4gICAJc2VxX3ByaW50ZihtLCAiICAlcyBFVSBUb3RhbDogJXVcbiIs IHR5cGUsCj4gICAJCSAgIHNzZXUtPmV1X3RvdGFsKTsKPiAgIAlzZXFfcHJpbnRmKG0sICIgICVz IEVVIFBlciBTdWJzbGljZTogJXVcbiIsIHR5cGUsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4g aW5kZXggNzJiZWEyODFlZGI3Li44Yjk5ZTQxNWMzNDUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmMKPiBAQCAtNDE0LDcgKzQxNCw3IEBAIHN0YXRpYyBpbnQgaTkxNV9nZXRwYXJhbShzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+ICAgCQkJcmV0dXJuIC1FTk9ERVY7Cj4g ICAJCWJyZWFrOwo+ICAgCWNhc2UgSTkxNV9QQVJBTV9TVUJTTElDRV9NQVNLOgo+IC0JCXZhbHVl ID0gSU5URUxfSU5GTyhkZXZfcHJpdiktPnNzZXUuc3Vic2xpY2VfbWFzazsKPiArCQl2YWx1ZSA9 IElOVEVMX0lORk8oZGV2X3ByaXYpLT5zc2V1LnN1YnNsaWNlc19tYXNrWzBdOwo+ICAgCQlpZiAo IXZhbHVlKQo+ICAgCQkJcmV0dXJuIC1FTk9ERVY7Cj4gICAJCWJyZWFrOwo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuaAo+IGluZGV4IDFhYmE1NjU3ZjVmMC4uODJmYzU5MDc4YzZhIDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2Rydi5oCj4gQEAgLTgwMiw5ICs4MDIsMTIgQEAgc3RydWN0IGludGVsX2Nz ciB7Cj4gICAJZnVuYyhzdXBwb3J0c190dik7IFwKPiAgIAlmdW5jKGhhc19pcGMpOwo+ICAgCj4g KyNkZWZpbmUgR0VOX01BWF9TTElDRVMJCSg2KSAvKiBDTkwgdXBwZXIgYm91bmQgKi8KPiArI2Rl ZmluZSBHRU5fTUFYX1NVQlNMSUNFUwkoNykKPiArCj4gICBzdHJ1Y3Qgc3NldV9kZXZfaW5mbyB7 Cj4gICAJdTggc2xpY2VfbWFzazsKPiAtCXU4IHN1YnNsaWNlX21hc2s7Cj4gKwl1OCBzdWJzbGlj ZXNfbWFza1tHRU5fTUFYX1NMSUNFU107CgpQZXJzb25hbGx5IEkgd291bGQgcHJvYmFibHkga2Vw dCB0aGUgc3Vic2xpY2VfbWFzayBuYW1lIGFuZCBqdXN0IHR1cm5lZCAKaXQgaW50byBhbiBhcnJh eSwgYnV0IHRoYXQgaXMgYmlrZS1zaGVkIHRlcnJpdG9yeS4KCj4gICAJdTggZXVfdG90YWw7Cj4g ICAJdTggZXVfcGVyX3N1YnNsaWNlOwo+ICAgCXU4IG1pbl9ldV9pbl9wb29sOwo+IEBAIC04MTMs MTEgKzgxNiwyNyBAQCBzdHJ1Y3Qgc3NldV9kZXZfaW5mbyB7Cj4gICAJdTggaGFzX3NsaWNlX3Bn OjE7Cj4gICAJdTggaGFzX3N1YnNsaWNlX3BnOjE7Cj4gICAJdTggaGFzX2V1X3BnOjE7Cj4gKwo+ ICsJLyogVG9wb2xvZ3kgZmllbGRzICovCj4gKwl1OCBtYXhfc2xpY2VzOwo+ICsJdTggbWF4X3N1 YnNsaWNlczsKPiArCXU4IG1heF9ldXNfcGVyX3N1YnNsaWNlOwo+ICsKPiArCS8qIFdlIGRvbid0 IGhhdmUgbW9yZSB0aGFuIDggZXVzIHBlciBzdWJzbGljZSBhdCB0aGUgbW9tZW50IGFuZCBhcyB3 ZQo+ICsJICogc3RvcmUgZXVzIGVuYWJsZWQgdXNpbmcgYml0cywgbm8gbmVlZCB0byBtdWx0aXBs eSBieSBldXMgcGVyCj4gKwkgKiBzdWJzbGljZS4KPiArCSAqLwo+ICsJdTggZXVfbWFza1tHRU5f TUFYX1NMSUNFUyAqIEdFTl9NQVhfU1VCU0xJQ0VTXTsKPiAgIH07Cj4gICAKPiAgIHN0YXRpYyBp bmxpbmUgdW5zaWduZWQgaW50IHNzZXVfc3Vic2xpY2VfdG90YWwoY29uc3Qgc3RydWN0IHNzZXVf ZGV2X2luZm8gKnNzZXUpCj4gICB7Cj4gLQlyZXR1cm4gaHdlaWdodDgoc3NldS0+c2xpY2VfbWFz aykgKiBod2VpZ2h0OChzc2V1LT5zdWJzbGljZV9tYXNrKTsKPiArCXVuc2lnbmVkIHMsIHRvdGFs ID0gMDsKPiArCj4gKwlmb3IgKHMgPSAwOyBzIDwgQVJSQVlfU0laRShzc2V1LT5zdWJzbGljZXNf bWFzayk7IHMrKykKPiArCQl0b3RhbCArPSBod2VpZ2h0OChzc2V1LT5zdWJzbGljZXNfbWFza1tz XSk7Cj4gKwo+ICsJcmV0dXJuIHRvdGFsOwoKVGhlIGZ1bmN0aW9uIGlzIGJpZ2dlciBub3cgc28g bWF5YmUgaXQgbmVlZHMgc3RvcHMgYmVpbmcgaW5saW5lLCBidXQgCmVpdGhlciBtb3ZlZCB0byB0 aGUgLmMgZmlsZSwgb3IgZXZlbiB0aGUgdG90YWwgc3RvcmVkIGluIHN0cnVjdCAKc3NldV9kZXZf aW5mbywgYW5kIHRoZW4gdGhpcyBiZWNvbWVzIGp1c3QgYSBnZXR0ZXI/Cgo+ICAgfQo+ICAgCj4g ICAvKiBLZWVwIGluIGdlbiBiYXNlZCBvcmRlciwgYW5kIGNocm9ub2xvZ2ljYWwgb3JkZXIgd2l0 aGluIGEgZ2VuICovCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rl dmljZV9pbmZvLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZXZpY2VfaW5mby5jCj4g aW5kZXggZjQ3OGJlM2FlMGJhLi42YTNjNDA0MzllODMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZGV2aWNlX2luZm8uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2RldmljZV9pbmZvLmMKPiBAQCAtODIsMjIgKzgyLDc0IEBAIHZvaWQgaW50ZWxf ZGV2aWNlX2luZm9fZHVtcChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gICAj dW5kZWYgUFJJTlRfRkxBRwo+ICAgfQo+ICAgCj4gK3N0YXRpYyB1OCBjb21wdXRlX2V1X3RvdGFs KGNvbnN0IHN0cnVjdCBzc2V1X2Rldl9pbmZvICpzc2V1KQo+ICt7Cj4gKwl1OCBpLCB0b3RhbCA9 IDA7Cgpzc2V1X3N1YnNsaWNlX3RvdGFsIHJldHVybnMgYW4gdW5zaW5nZWQgaW50LCB3aGlsZSB0 aGlzIGlzIHU4LCAKc3VnZ2VzdGluZyB0aGVyZSBjYW4gYmUgbW9yZSBzdWJsaWNlcyBhbmQgZXVz LiA7KSBKb2tlcyBhc2lkZSwgSSdkIApwcm9iYWJseSBtYWtlIHRoZW0gY29uc2lzdGVudC4gVGhl IGluZGV4IHZhcmlhYmxlIGlzIHByb2JhYmx5IGJlc3QgYXMgCnVuc2lnbmVkIGludCwgYnV0IHRo ZSB0b3RhbCBhbmQgcmV0dXJuIGNhbiBiZSB1OCBpZiBiaWcgZW5vdWdoIGZvciB0b3RhbCAKZXVz PyBFaXRoZXIgd2F5IGJlc3QgaXQgbWF0Y2hlcyB0aGUgdHlwZXMgaW4gdGhlIHN0cnVjdCB0aGV5 IGdldCAKYXNzaWduZWQgdG8uCgo+ICsKPiArCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHNz ZXUtPmV1X21hc2spOyBpKyspCj4gKwkJdG90YWwgKz0gaHdlaWdodDgoc3NldS0+ZXVfbWFza1tp XSk7Cj4gKwo+ICsJcmV0dXJuIHRvdGFsOwo+ICt9Cj4gKwo+ICAgc3RhdGljIHZvaWQgZ2VuMTBf c3NldV9pbmZvX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgewo+ ICAgCXN0cnVjdCBzc2V1X2Rldl9pbmZvICpzc2V1ID0gJm1rd3JpdGVfZGV2aWNlX2luZm8oZGV2 X3ByaXYpLT5zc2V1Owo+ICAgCWNvbnN0IHUzMiBmdXNlMiA9IEk5MTVfUkVBRChHRU44X0ZVU0Uy KTsKPiArCWludCBzLCBzcywgZXVfbWFzayA9IDB4ZmY7Cgpjb25zdCBldV9tYXNrID8KCj4gKwl1 MzIgc3Vic2xpY2VfbWFzaywgZXVfZW47Cj4gICAKPiAgIAlzc2V1LT5zbGljZV9tYXNrID0gKGZ1 c2UyICYgR0VOMTBfRjJfU19FTkFfTUFTSykgPj4KPiAgIAkJCSAgICBHRU4xMF9GMl9TX0VOQV9T SElGVDsKPiAtCXNzZXUtPnN1YnNsaWNlX21hc2sgPSAoMSA8PCA0KSAtIDE7Cj4gLQlzc2V1LT5z dWJzbGljZV9tYXNrICY9IH4oKGZ1c2UyICYgR0VOMTBfRjJfU1NfRElTX01BU0spID4+Cj4gLQkJ CQkgR0VOMTBfRjJfU1NfRElTX1NISUZUKTsKPiArCXNzZXUtPm1heF9zbGljZXMgPSA2Owo+ICsJ c3NldS0+bWF4X3N1YnNsaWNlcyA9IDQ7Cj4gKwlzc2V1LT5tYXhfZXVzX3Blcl9zdWJzbGljZSA9 IDg7Cj4gKwo+ICsJc3Vic2xpY2VfbWFzayA9ICgxIDw8IDQpIC0gMTsKPiArCXN1YnNsaWNlX21h c2sgJj0gfigoZnVzZTIgJiBHRU4xMF9GMl9TU19ESVNfTUFTSykgPj4KPiArCQkJICAgR0VOMTBf RjJfU1NfRElTX1NISUZUKTsKPiArCj4gKwkvKiBTbGljZTAgY2FuIGhhdmUgdXAgdG8gMyBzdWJz bGljZXMsIGJ1dCB0aGVyZSBhcmUgb25seSAyIGluCj4gKwkgKiBzbGljZTEvMi4KPiArCSAqLwo+ ICsJc3NldS0+c3Vic2xpY2VzX21hc2tbMF0gPSBzdWJzbGljZV9tYXNrOwo+ICsJZm9yIChzID0g MTsgcyA8IHNzZXUtPm1heF9zbGljZXM7IHMrKykKPiArCQlzc2V1LT5zdWJzbGljZXNfbWFza1tz XSA9IHN1YnNsaWNlX21hc2sgJiAweDM7Cj4gKwo+ICsJLyogU2xpY2UwICovCj4gKwlldV9lbiA9 IH5JOTE1X1JFQUQoR0VOOF9FVV9ESVNBQkxFMCk7Cj4gKwlmb3IgKHNzID0gMDsgc3MgPCBzc2V1 LT5tYXhfc3Vic2xpY2VzOyBzcysrKQo+ICsJCXNzZXUtPmV1X21hc2tbc3NdICAgICA9IChldV9l biA+PiAoOCAqIHNzKSkgJiBldV9tYXNrOwo+ICsJLyogU2xpY2UxICovCj4gKwlzc2V1LT5ldV9t YXNrW3NzZXUtPm1heF9zdWJzbGljZXNdICAgICAgICAgPSAoZXVfZW4gPj4gMjQpICYgZXVfbWFz azsKPiArCWV1X2VuID0gfkk5MTVfUkVBRChHRU44X0VVX0RJU0FCTEUxKTsKPiArCXNzZXUtPmV1 X21hc2tbc3NldS0+bWF4X3N1YnNsaWNlcyArIDFdICAgICA9IGV1X2VuICYgZXVfbWFzazsKCkkg c3VnZ2VzdCBhIGhlbHBlciB0byBpbmRleCBpbnRvIHNzZS0+ZXVfbWFzaywgbGlrZSAKc3NldS0+ ZXVfbWFza1tfZXVfbWFza19pZHgoc2xpY2UsIHN1YnNsaWNlKV0gb3Igc29tZXRoaW5nLCBzbyBp dCBpcyBtb3JlIApyZWFkYWJsZSB3aGF0IGlzIGhhcHBlbmluZyBoZXJlLiBPciBldmVuOgoKICBf ZXVfbWFzayhzc2V1LCBzbGljZSwgc3Vic2xpY2UpID0gbWFzazsKCkRvYWJsZT8gSSBhbSBub3Qg MTAwJSBJIHBpY2tlZCB1cCBleGFjdGx5IG9uIHRoZSBsYXlvdXQgb2YgdGhlIGV1X21hc2sgCmFy cmF5Li4gZWFjaCBlbGVtZW50IGlzIG9uZSBzdWJzbGljZT8gQ29uc2VjdXRpdmUgZm9yIHNsaWNl MCwgCnN1YnNsaWNlMC4uTiwgc2xpY2UxLi4uIHNsaWNlTiA/Cgo+ICsJLyogU2xpY2UyICovCj4g Kwlzc2V1LT5ldV9tYXNrWzIgKiBzc2V1LT5tYXhfc3Vic2xpY2VzXSAgICAgPSAoZXVfZW4gPj4g OCkgJiBldV9tYXNrOwo+ICsJc3NldS0+ZXVfbWFza1syICogc3NldS0+bWF4X3N1YnNsaWNlcyAr IDFdID0gKGV1X2VuID4+IDE2KSAmIGV1X21hc2s7Cj4gKwkvKiBTbGljZTMgKi8KPiArCXNzZXUt PmV1X21hc2tbMyAqIHNzZXUtPm1heF9zdWJzbGljZXNdICAgICA9IChldV9lbiA+PiAyNCkgJiBl dV9tYXNrOwo+ICsJZXVfZW4gPSB+STkxNV9SRUFEKEdFTjhfRVVfRElTQUJMRTIpOwo+ICsJc3Nl dS0+ZXVfbWFza1szICogc3NldS0+bWF4X3N1YnNsaWNlcyArIDFdID0gZXVfZW4gJiBldV9tYXNr Owo+ICsJLyogU2xpY2U0ICovCj4gKwlzc2V1LT5ldV9tYXNrWzQgKiBzc2V1LT5tYXhfc3Vic2xp Y2VzXSAgICAgPSAoZXVfZW4gPj4gOCkgJiBldV9tYXNrOwo+ICsJc3NldS0+ZXVfbWFza1s0ICog c3NldS0+bWF4X3N1YnNsaWNlcyArIDFdID0gKGV1X2VuID4+IDE2KSAmIGV1X21hc2s7Cj4gKwkv KiBTbGljZTUgKi8KPiArCXNzZXUtPmV1X21hc2tbNSAqIHNzZXUtPm1heF9zdWJzbGljZXNdICAg ICA9IChldV9lbiA+PiAyNCkgJiBldV9tYXNrOwo+ICsJZXVfZW4gPSB+STkxNV9SRUFEKEdFTjEw X0VVX0RJU0FCTEUzKTsKPiArCXNzZXUtPmV1X21hc2tbNSAqIHNzZXUtPm1heF9zdWJzbGljZXMg KyAxXSA9IGV1X2VuICYgZXVfbWFzazsKPiArCj4gKwkvKiBEbyBhIHNlY29uZCBwYXNzIHdoZXJl IHdlIG1hcmtlZCB0aGUgc3Vic2xpY2VzIGRpc2FibGVkIGlmIGFsbAo+ICsJICogdGhlaXIgZXVz IGFyZSBvZmYuCj4gKwkgKi8KPiArCWZvciAocyA9IDA7IHMgPCBzc2V1LT5tYXhfc2xpY2VzOyBz KyspIHsKPiArCQlmb3IgKHNzID0gMDsgc3MgPCBzc2V1LT5tYXhfc3Vic2xpY2VzOyBzcysrKSB7 Cj4gKwkJCWlmIChzc2V1LT5ldV9tYXNrW3MgKiBzc2V1LT5tYXhfc3Vic2xpY2VzICsgc3NdID09 IDApCj4gKwkJCQlzc2V1LT5zdWJzbGljZXNfbWFza1tzXSAmPSB+QklUKHNzKTsKPiArCQl9Cj4g Kwl9Cj4gICAKPiAtCXNzZXUtPmV1X3RvdGFsID0gaHdlaWdodDMyKH5JOTE1X1JFQUQoR0VOOF9F VV9ESVNBQkxFMCkpOwo+IC0Jc3NldS0+ZXVfdG90YWwgKz0gaHdlaWdodDMyKH5JOTE1X1JFQUQo R0VOOF9FVV9ESVNBQkxFMSkpOwo+IC0Jc3NldS0+ZXVfdG90YWwgKz0gaHdlaWdodDMyKH5JOTE1 X1JFQUQoR0VOOF9FVV9ESVNBQkxFMikpOwo+IC0Jc3NldS0+ZXVfdG90YWwgKz0gaHdlaWdodDgo fihJOTE1X1JFQUQoR0VOMTBfRVVfRElTQUJMRTMpICYKPiAtCQkJCSAgICAgR0VOMTBfRVVfRElT X1NTX01BU0spKTsKPiArCXNzZXUtPmV1X3RvdGFsID0gY29tcHV0ZV9ldV90b3RhbChzc2V1KTsK PiAgIAo+ICAgCS8qCj4gICAJICogQ05MIGlzIGV4cGVjdGVkIHRvIGFsd2F5cyBoYXZlIGEgdW5p Zm9ybSBkaXN0cmlidXRpb24KPiBAQCAtMTE4LDI2ICsxNzAsMzAgQEAgc3RhdGljIHZvaWQgZ2Vu MTBfc3NldV9pbmZvX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAg c3RhdGljIHZvaWQgY2hlcnJ5dmlld19zc2V1X2luZm9faW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCj4gICB7Cj4gICAJc3RydWN0IHNzZXVfZGV2X2luZm8gKnNzZXUgPSAm bWt3cml0ZV9kZXZpY2VfaW5mbyhkZXZfcHJpdiktPnNzZXU7Cj4gLQl1MzIgZnVzZSwgZXVfZGlz Owo+ICsJdTMyIGZ1c2U7Cj4gICAKPiAgIAlmdXNlID0gSTkxNV9SRUFEKENIVl9GVVNFX0dUKTsK PiAgIAo+ICAgCXNzZXUtPnNsaWNlX21hc2sgPSBCSVQoMCk7Cj4gKwlzc2V1LT5tYXhfc2xpY2Vz ID0gMTsKPiArCXNzZXUtPm1heF9zdWJzbGljZXMgPSAyOwo+ICsJc3NldS0+bWF4X2V1c19wZXJf c3Vic2xpY2UgPSA4Owo+ICAgCj4gICAJaWYgKCEoZnVzZSAmIENIVl9GR1RfRElTQUJMRV9TUzAp KSB7Cj4gLQkJc3NldS0+c3Vic2xpY2VfbWFzayB8PSBCSVQoMCk7Cj4gLQkJZXVfZGlzID0gZnVz ZSAmIChDSFZfRkdUX0VVX0RJU19TUzBfUjBfTUFTSyB8Cj4gLQkJCQkgQ0hWX0ZHVF9FVV9ESVNf U1MwX1IxX01BU0spOwo+IC0JCXNzZXUtPmV1X3RvdGFsICs9IDggLSBod2VpZ2h0MzIoZXVfZGlz KTsKPiArCQlzc2V1LT5zdWJzbGljZXNfbWFza1swXSB8PSBCSVQoMCk7Cj4gKwkJc3NldS0+ZXVf bWFza1swXSA9IChmdXNlICYgQ0hWX0ZHVF9FVV9ESVNfU1MwX1IwX01BU0spID4+IENIVl9GR1Rf RVVfRElTX1NTMF9SMF9TSElGVDsKPiArCQlzc2V1LT5ldV9tYXNrWzBdIHw9ICgoZnVzZSAmIENI Vl9GR1RfRVVfRElTX1NTMF9SMV9NQVNLKSA+PiBDSFZfRkdUX0VVX0RJU19TUzBfUjFfU0hJRlQp IDw8IDQ7CgpEbyB5b3UgbmVlZCB0byBpbnZlcnQgdGhlIGJpdHMgaGVyZT8KCj4gKwkJc3NldS0+ c3Vic2xpY2VzX21hc2tbMF0gPSAxOwo+ICAgCX0KPiAgIAo+ICAgCWlmICghKGZ1c2UgJiBDSFZf RkdUX0RJU0FCTEVfU1MxKSkgewo+IC0JCXNzZXUtPnN1YnNsaWNlX21hc2sgfD0gQklUKDEpOwo+ IC0JCWV1X2RpcyA9IGZ1c2UgJiAoQ0hWX0ZHVF9FVV9ESVNfU1MxX1IwX01BU0sgfAo+IC0JCQkJ IENIVl9GR1RfRVVfRElTX1NTMV9SMV9NQVNLKTsKPiAtCQlzc2V1LT5ldV90b3RhbCArPSA4IC0g aHdlaWdodDMyKGV1X2Rpcyk7Cj4gKwkJc3NldS0+c3Vic2xpY2VzX21hc2tbMF0gfD0gQklUKDEp Owo+ICsJCXNzZXUtPmV1X21hc2tbMV0gPSAoZnVzZSAmIENIVl9GR1RfRVVfRElTX1NTMV9SMF9N QVNLKSA+PiBDSFZfRkdUX0VVX0RJU19TUzBfUjBfU0hJRlQ7Cj4gKwkJc3NldS0+ZXVfbWFza1sy XSB8PSAoKGZ1c2UgJiBDSFZfRkdUX0VVX0RJU19TUzFfUjFfTUFTSykgPj4gQ0hWX0ZHVF9FVV9E SVNfU1MwX1IxX1NISUZUKSA8PCA0OwoKV2h5IGV1X21hc2sgaW5kaWNlcyAxIGFuZCAyIGhlcmUs IHdoaWxlIGZvciBzdWJzbGljZSAwIHlvdSBtZXJnZWQgdGhlbSAKaW50byBpbmRleCAwPwoKPiAg IAl9Cj4gICAKPiArCXNzZXUtPmV1X3RvdGFsID0gY29tcHV0ZV9ldV90b3RhbChzc2V1KTsKPiAr Cj4gICAJLyoKPiAgIAkgKiBDSFYgZXhwZWN0ZWQgdG8gYWx3YXlzIGhhdmUgYSB1bmlmb3JtIGRp c3RyaWJ1dGlvbiBvZiBFVQo+ICAgCSAqIGFjcm9zcyBzdWJzbGljZXMuCj4gQEAgLTE1OSw0MSAr MjE1LDUwIEBAIHN0YXRpYyB2b2lkIGdlbjlfc3NldV9pbmZvX2luaXQoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgewo+ICAgCXN0cnVjdCBpbnRlbF9kZXZpY2VfaW5mbyAq aW5mbyA9IG1rd3JpdGVfZGV2aWNlX2luZm8oZGV2X3ByaXYpOwo+ICAgCXN0cnVjdCBzc2V1X2Rl dl9pbmZvICpzc2V1ID0gJmluZm8tPnNzZXU7Cj4gLQlpbnQgc19tYXggPSAzLCBzc19tYXggPSA0 LCBldV9tYXggPSA4Owo+ICAgCWludCBzLCBzczsKPiAtCXUzMiBmdXNlMiwgZXVfZGlzYWJsZTsK PiArCXUzMiBmdXNlMiwgZXVfZGlzYWJsZSwgc3Vic2xpY2VfbWFzazsKPiAgIAl1OCBldV9tYXNr ID0gMHhmZjsKPiAgIAo+ICAgCWZ1c2UyID0gSTkxNV9SRUFEKEdFTjhfRlVTRTIpOwo+ICAgCXNz ZXUtPnNsaWNlX21hc2sgPSAoZnVzZTIgJiBHRU44X0YyX1NfRU5BX01BU0spID4+IEdFTjhfRjJf U19FTkFfU0hJRlQ7Cj4gICAKPiArCS8qIEJYVCBoYXMgYSBzaW5nbGUgc2xpY2UgYW5kIGF0IG1v c3QgMyBzdWJzbGljZXMuICovCj4gKwlzc2V1LT5tYXhfc2xpY2VzID0gSVNfR0VOOV9MUChkZXZf cHJpdikgPyAxIDogMzsKPiArCXNzZXUtPm1heF9zdWJzbGljZXMgPSBJU19HRU45X0xQKGRldl9w cml2KSA/IDMgOiA0Owo+ICsJc3NldS0+bWF4X2V1c19wZXJfc3Vic2xpY2UgPSA4Owo+ICsKPiAg IAkvKgo+ICAgCSAqIFRoZSBzdWJzbGljZSBkaXNhYmxlIGZpZWxkIGlzIGdsb2JhbCwgaS5lLiBp dCBhcHBsaWVzCj4gICAJICogdG8gZWFjaCBvZiB0aGUgZW5hYmxlZCBzbGljZXMuCj4gICAJKi8K PiAtCXNzZXUtPnN1YnNsaWNlX21hc2sgPSAoMSA8PCBzc19tYXgpIC0gMTsKPiAtCXNzZXUtPnN1 YnNsaWNlX21hc2sgJj0gfigoZnVzZTIgJiBHRU45X0YyX1NTX0RJU19NQVNLKSA+Pgo+IC0JCQkJ IEdFTjlfRjJfU1NfRElTX1NISUZUKTsKPiArCXN1YnNsaWNlX21hc2sgPSAoMSA8PCBzc2V1LT5t YXhfc3Vic2xpY2VzKSAtIDE7Cj4gKwlzdWJzbGljZV9tYXNrICY9IH4oKGZ1c2UyICYgR0VOOV9G Ml9TU19ESVNfTUFTSykgPj4KPiArCQkJICAgR0VOOV9GMl9TU19ESVNfU0hJRlQpOwo+ICAgCj4g ICAJLyoKPiAgIAkgKiBJdGVyYXRlIHRocm91Z2ggZW5hYmxlZCBzbGljZXMgYW5kIHN1YnNsaWNl cyB0bwo+ICAgCSAqIGNvdW50IHRoZSB0b3RhbCBlbmFibGVkIEVVLgo+ICAgCSovCj4gLQlmb3Ig KHMgPSAwOyBzIDwgc19tYXg7IHMrKykgewo+ICsJZm9yIChzID0gMDsgcyA8IHNzZXUtPm1heF9z bGljZXM7IHMrKykgewo+ICAgCQlpZiAoIShzc2V1LT5zbGljZV9tYXNrICYgQklUKHMpKSkKPiAg IAkJCS8qIHNraXAgZGlzYWJsZWQgc2xpY2UgKi8KPiAgIAkJCWNvbnRpbnVlOwo+ICAgCj4gKwkJ c3NldS0+c3Vic2xpY2VzX21hc2tbc10gPSBzdWJzbGljZV9tYXNrOwo+ICsKPiAgIAkJZXVfZGlz YWJsZSA9IEk5MTVfUkVBRChHRU45X0VVX0RJU0FCTEUocykpOwo+IC0JCWZvciAoc3MgPSAwOyBz cyA8IHNzX21heDsgc3MrKykgewo+ICsJCWZvciAoc3MgPSAwOyBzcyA8IHNzZXUtPm1heF9zdWJz bGljZXM7IHNzKyspIHsKPiAgIAkJCWludCBldV9wZXJfc3M7Cj4gICAKPiAtCQkJaWYgKCEoc3Nl dS0+c3Vic2xpY2VfbWFzayAmIEJJVChzcykpKQo+ICsJCQlpZiAoIShzc2V1LT5zdWJzbGljZXNf bWFza1tzXSAmIEJJVChzcykpKQo+ICAgCQkJCS8qIHNraXAgZGlzYWJsZWQgc3Vic2xpY2UgKi8K PiAgIAkJCQljb250aW51ZTsKPiAgIAo+IC0JCQlldV9wZXJfc3MgPSBldV9tYXggLSBod2VpZ2h0 OCgoZXVfZGlzYWJsZSA+PiAoc3MqOCkpICYKPiAtCQkJCQkJICAgICAgZXVfbWFzayk7Cj4gKwkJ CXNzZXUtPmV1X21hc2tbc3MgKyBzICogc3NldS0+bWF4X3N1YnNsaWNlc10gPQo+ICsJCQkJfigo ZXVfZGlzYWJsZSA+PiAoc3MqOCkpICYgZXVfbWFzayk7Cj4gKwo+ICsJCQlldV9wZXJfc3MgPSBz c2V1LT5tYXhfZXVzX3Blcl9zdWJzbGljZSAtCj4gKwkJCQlod2VpZ2h0OCgoZXVfZGlzYWJsZSA+ PiAoc3MqOCkpICYgZXVfbWFzayk7CgpTdG9yZSAiZXVfZGlzYWJsZSA+PiAoc3MqOCkpICYgZXVf bWFzayIgaW4gYSBsb2NhbCBmb3IgcmVhZGFiaWxpdHkgc2luY2UgCml0IGlzIGNhbGN1bGF0ZWQg dHdpY2U/Cgo+ICAgCj4gICAJCQkvKgo+ICAgCQkJICogUmVjb3JkIHdoaWNoIHN1YnNsaWNlKHMp IGhhcyhoYXZlKSA3IEVVcy4gd2UKPiBAQCAtMjAyLDExICsyNjcsMTEgQEAgc3RhdGljIHZvaWQg Z2VuOV9zc2V1X2luZm9faW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4g ICAJCQkgKi8KPiAgIAkJCWlmIChldV9wZXJfc3MgPT0gNykKPiAgIAkJCQlzc2V1LT5zdWJzbGlj ZV83ZXVbc10gfD0gQklUKHNzKTsKPiAtCj4gLQkJCXNzZXUtPmV1X3RvdGFsICs9IGV1X3Blcl9z czsKCllvdSBjb3VsZCB0aGVvcmV0aWNhbGx5IGtlZXAgdGhpcyBydW5uaW5nIHRvdGFsIGFuZCB0 aGVuIGF0IHRoZSBlbmQgCmNvbXBhcmUgYWdhaW5zdCBjb21wdXRlX2V1X3RvdGFsIHVuZGVyIGEg R0VNX0JVR19PTiwganVzdCB0byBjaGVjayAKZXZlcnl0aW5nIGlzIHdvcmtpbmcgYXMgZXhwZWN0 ZWQuCgo+ICAgCQl9Cj4gICAJfQo+ICAgCj4gKwlzc2V1LT5ldV90b3RhbCA9IGNvbXB1dGVfZXVf dG90YWwoc3NldSk7Cj4gKwo+ICAgCS8qCj4gICAJICogU0tMIGlzIGV4cGVjdGVkIHRvIGFsd2F5 cyBoYXZlIGEgdW5pZm9ybSBkaXN0cmlidXRpb24KPiAgIAkgKiBvZiBFVSBhY3Jvc3Mgc3Vic2xp Y2VzIHdpdGggdGhlIGV4Y2VwdGlvbiB0aGF0IGFueSBvbmUKPiBAQCAtMjMyLDggKzI5Nyw4IEBA IHN0YXRpYyB2b2lkIGdlbjlfc3NldV9pbmZvX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQo+ICAgCXNzZXUtPmhhc19ldV9wZyA9IHNzZXUtPmV1X3Blcl9zdWJzbGljZSA+ IDI7Cj4gICAKPiAgIAlpZiAoSVNfR0VOOV9MUChkZXZfcHJpdikpIHsKPiAtI2RlZmluZSBJU19T U19ESVNBQkxFRChzcykJKCEoc3NldS0+c3Vic2xpY2VfbWFzayAmIEJJVChzcykpKQo+IC0JCWlu Zm8tPmhhc19wb29sZWRfZXUgPSBod2VpZ2h0OChzc2V1LT5zdWJzbGljZV9tYXNrKSA9PSAzOwo+ ICsjZGVmaW5lIElTX1NTX0RJU0FCTEVEKHNzKQkoIShzc2V1LT5zdWJzbGljZXNfbWFza1swXSAm IEJJVChzcykpKQo+ICsJCWluZm8tPmhhc19wb29sZWRfZXUgPSBod2VpZ2h0OChzc2V1LT5zdWJz bGljZXNfbWFza1swXSkgPT0gMzsKPiAgIAo+ICAgCQlzc2V1LT5taW5fZXVfaW5fcG9vbCA9IDA7 Cj4gICAJCWlmIChpbmZvLT5oYXNfcG9vbGVkX2V1KSB7Cj4gQEAgLTI1MSwxOSArMzE2LDIyIEBA IHN0YXRpYyB2b2lkIGdlbjlfc3NldV9pbmZvX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQo+ICAgc3RhdGljIHZvaWQgYnJvYWR3ZWxsX3NzZXVfaW5mb19pbml0KHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgIHsKPiAgIAlzdHJ1Y3Qgc3NldV9kZXZf aW5mbyAqc3NldSA9ICZta3dyaXRlX2RldmljZV9pbmZvKGRldl9wcml2KS0+c3NldTsKPiAtCWNv bnN0IGludCBzX21heCA9IDMsIHNzX21heCA9IDMsIGV1X21heCA9IDg7Cj4gICAJaW50IHMsIHNz Owo+IC0JdTMyIGZ1c2UyLCBldV9kaXNhYmxlWzNdOyAvKiBzX21heCAqLwo+ICsJdTMyIGZ1c2Uy LCBzdWJzbGljZV9tYXNrLCBldV9kaXNhYmxlWzNdOyAvKiBzX21heCAqLwo+ICAgCj4gICAJZnVz ZTIgPSBJOTE1X1JFQUQoR0VOOF9GVVNFMik7Cj4gICAJc3NldS0+c2xpY2VfbWFzayA9IChmdXNl MiAmIEdFTjhfRjJfU19FTkFfTUFTSykgPj4gR0VOOF9GMl9TX0VOQV9TSElGVDsKPiArCXNzZXUt Pm1heF9zbGljZXMgPSAzOwo+ICsJc3NldS0+bWF4X3N1YnNsaWNlcyA9IDM7Cj4gKwlzc2V1LT5t YXhfZXVzX3Blcl9zdWJzbGljZSA9IDg7Cj4gKwo+ICAgCS8qCj4gICAJICogVGhlIHN1YnNsaWNl IGRpc2FibGUgZmllbGQgaXMgZ2xvYmFsLCBpLmUuIGl0IGFwcGxpZXMKPiAgIAkgKiB0byBlYWNo IG9mIHRoZSBlbmFibGVkIHNsaWNlcy4KPiAgIAkgKi8KPiAtCXNzZXUtPnN1YnNsaWNlX21hc2sg PSBHRU5NQVNLKHNzX21heCAtIDEsIDApOwo+IC0Jc3NldS0+c3Vic2xpY2VfbWFzayAmPSB+KChm dXNlMiAmIEdFTjhfRjJfU1NfRElTX01BU0spID4+Cj4gLQkJCQkgR0VOOF9GMl9TU19ESVNfU0hJ RlQpOwo+ICsJc3Vic2xpY2VfbWFzayA9IEdFTk1BU0soc3NldS0+bWF4X3N1YnNsaWNlcyAtIDEs IDApOwo+ICsJc3Vic2xpY2VfbWFzayAmPSB+KChmdXNlMiAmIEdFTjhfRjJfU1NfRElTX01BU0sp ID4+Cj4gKwkJCSAgIEdFTjhfRjJfU1NfRElTX1NISUZUKTsKPiAgIAo+ICAgCWV1X2Rpc2FibGVb MF0gPSBJOTE1X1JFQUQoR0VOOF9FVV9ESVNBQkxFMCkgJiBHRU44X0VVX0RJUzBfUzBfTUFTSzsK PiAgIAlldV9kaXNhYmxlWzFdID0gKEk5MTVfUkVBRChHRU44X0VVX0RJU0FCTEUwKSA+PiBHRU44 X0VVX0RJUzBfUzFfU0hJRlQpIHwKPiBAQCAtMjc3LDMwICszNDUsMzYgQEAgc3RhdGljIHZvaWQg YnJvYWR3ZWxsX3NzZXVfaW5mb19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKPiAgIAkgKiBJdGVyYXRlIHRocm91Z2ggZW5hYmxlZCBzbGljZXMgYW5kIHN1YnNsaWNlcyB0 bwo+ICAgCSAqIGNvdW50IHRoZSB0b3RhbCBlbmFibGVkIEVVLgo+ICAgCSAqLwo+IC0JZm9yIChz ID0gMDsgcyA8IHNfbWF4OyBzKyspIHsKPiArCWZvciAocyA9IDA7IHMgPCBzc2V1LT5tYXhfc2xp Y2VzOyBzKyspIHsKPiAgIAkJaWYgKCEoc3NldS0+c2xpY2VfbWFzayAmIEJJVChzKSkpCj4gICAJ CQkvKiBza2lwIGRpc2FibGVkIHNsaWNlICovCj4gICAJCQljb250aW51ZTsKPiAgIAo+IC0JCWZv ciAoc3MgPSAwOyBzcyA8IHNzX21heDsgc3MrKykgewo+ICsJCXNzZXUtPnN1YnNsaWNlc19tYXNr W3NdID0gc3Vic2xpY2VfbWFzazsKPiArCj4gKwkJZm9yIChzcyA9IDA7IHNzIDwgc3NldS0+bWF4 X3N1YnNsaWNlczsgc3MrKykgewo+ICAgCQkJdTMyIG5fZGlzYWJsZWQ7Cj4gICAKPiAtCQkJaWYg KCEoc3NldS0+c3Vic2xpY2VfbWFzayAmIEJJVChzcykpKQo+ICsJCQlpZiAoIShzc2V1LT5zdWJz bGljZXNfbWFza1tzc10gJiBCSVQoc3MpKSkKPiAgIAkJCQkvKiBza2lwIGRpc2FibGVkIHN1YnNs aWNlICovCj4gICAJCQkJY29udGludWU7Cj4gICAKPiAtCQkJbl9kaXNhYmxlZCA9IGh3ZWlnaHQ4 KGV1X2Rpc2FibGVbc10gPj4gKHNzICogZXVfbWF4KSk7Cj4gKwkJCXNzZXUtPmV1X21hc2tbc3Mg KyBzICogc3NldS0+bWF4X3N1YnNsaWNlc10gPQo+ICsJCQkJfihldV9kaXNhYmxlW3NdID4+Cj4g KwkJCQkgIChzcyAqIHNzZXUtPm1heF9ldXNfcGVyX3N1YnNsaWNlKSk7Cj4gKwkJCW5fZGlzYWJs ZWQgPSBod2VpZ2h0OChldV9kaXNhYmxlW3NdID4+Cj4gKwkJCQkJICAgICAgKHNzICogc3NldS0+ bWF4X2V1c19wZXJfc3Vic2xpY2UpKTsKCkFzIGFib3ZlIGNvdWxkIHVzZSBhIGxvY2FsIGZvciAi ZXVfZGlzYWJsZVtzXSA+PiAoc3MgKiAKc3NldS0+bWF4X2V1c19wZXJfc3Vic2xpY2UpIgoKPiAg IAo+ICAgCQkJLyoKPiAgIAkJCSAqIFJlY29yZCB3aGljaCBzdWJzbGljZXMgaGF2ZSA3IEVVcy4K PiAgIAkJCSAqLwo+IC0JCQlpZiAoZXVfbWF4IC0gbl9kaXNhYmxlZCA9PSA3KQo+ICsJCQlpZiAo c3NldS0+bWF4X2V1c19wZXJfc3Vic2xpY2UgLSBuX2Rpc2FibGVkID09IDcpCj4gICAJCQkJc3Nl dS0+c3Vic2xpY2VfN2V1W3NdIHw9IDEgPDwgc3M7Cj4gLQo+IC0JCQlzc2V1LT5ldV90b3RhbCAr PSBldV9tYXggLSBuX2Rpc2FibGVkOwo+ICAgCQl9Cj4gICAJfQo+ICAgCj4gKwlzc2V1LT5ldV90 b3RhbCA9IGNvbXB1dGVfZXVfdG90YWwoc3NldSk7Cj4gKwo+ICAgCS8qCj4gICAJICogQkRXIGlz IGV4cGVjdGVkIHRvIGFsd2F5cyBoYXZlIGEgdW5pZm9ybSBkaXN0cmlidXRpb24gb2YgRVUgYWNy b3NzCj4gICAJICogc3Vic2xpY2VzIHdpdGggdGhlIGV4Y2VwdGlvbiB0aGF0IGFueSBvbmUgRVUg aW4gYW55IG9uZSBzdWJzbGljZSBtYXkKPiBAQCAtNDM3LDYgKzUxMSw3IEBAIHZvaWQgaW50ZWxf ZGV2aWNlX2luZm9fcnVudGltZV9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKPiAgIHsKPiAgIAlzdHJ1Y3QgaW50ZWxfZGV2aWNlX2luZm8gKmluZm8gPSBta3dyaXRlX2Rl dmljZV9pbmZvKGRldl9wcml2KTsKPiAgIAllbnVtIHBpcGUgcGlwZTsKPiArCWludCBzOwo+ICAg Cj4gICAJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTApIHsKPiAgIAkJZm9yX2VhY2hfcGlw ZShkZXZfcHJpdiwgcGlwZSkKPiBAQCAtNTQ4LDkgKzYyMywxMSBAQCB2b2lkIGludGVsX2Rldmlj ZV9pbmZvX3J1bnRpbWVfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4g ICAJRFJNX0RFQlVHX0RSSVZFUigic2xpY2UgdG90YWw6ICV1XG4iLCBod2VpZ2h0OChpbmZvLT5z c2V1LnNsaWNlX21hc2spKTsKPiAgIAlEUk1fREVCVUdfRFJJVkVSKCJzdWJzbGljZSB0b3RhbDog JXVcbiIsCj4gICAJCQkgc3NldV9zdWJzbGljZV90b3RhbCgmaW5mby0+c3NldSkpOwo+IC0JRFJN X0RFQlVHX0RSSVZFUigic3Vic2xpY2UgbWFzayAlMDR4XG4iLCBpbmZvLT5zc2V1LnN1YnNsaWNl X21hc2spOwo+IC0JRFJNX0RFQlVHX0RSSVZFUigic3Vic2xpY2UgcGVyIHNsaWNlOiAldVxuIiwK PiAtCQkJIGh3ZWlnaHQ4KGluZm8tPnNzZXUuc3Vic2xpY2VfbWFzaykpOwo+ICsJZm9yIChzID0g MDsgcyA8IEFSUkFZX1NJWkUoaW5mby0+c3NldS5zdWJzbGljZXNfbWFzayk7IHMrKykgewo+ICsJ CURSTV9ERUJVR19EUklWRVIoInN1YnNsaWNlIG1hc2sgJTA0eFxuIiwgaW5mby0+c3NldS5zdWJz bGljZXNfbWFza1tzXSk7Cj4gKwkJRFJNX0RFQlVHX0RSSVZFUigic3Vic2xpY2UgcGVyIHNsaWNl OiAldVxuIiwKPiArCQkJCSBod2VpZ2h0OChpbmZvLT5zc2V1LnN1YnNsaWNlc19tYXNrW3NdKSk7 CgpQdXQgYSBzdWJzbGljZSBpbmRleCBpbnRvIG1lc3NhZ2VzPwoKPiArCX0KPiAgIAlEUk1fREVC VUdfRFJJVkVSKCJFVSB0b3RhbDogJXVcbiIsIGluZm8tPnNzZXUuZXVfdG90YWwpOwo+ICAgCURS TV9ERUJVR19EUklWRVIoIkVVIHBlciBzdWJzbGljZTogJXVcbiIsIGluZm8tPnNzZXUuZXVfcGVy X3N1YnNsaWNlKTsKPiAgIAlEUk1fREVCVUdfRFJJVkVSKCJoYXMgc2xpY2UgcG93ZXIgZ2F0aW5n OiAlc1xuIiwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+IGluZGV4IDJlMzhmYmZkZjA4Zi4u NmU1NWI4NDJjMjFkIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xy Yy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPiBAQCAtMjA3Miw3 ICsyMDcyLDcgQEAgbWFrZV9ycGNzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikK PiAgIAo+ICAgCWlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+c3NldS5oYXNfc3Vic2xpY2VfcGcp IHsKPiAgIAkJcnBjcyB8PSBHRU44X1JQQ1NfU1NfQ05UX0VOQUJMRTsKPiAtCQlycGNzIHw9IGh3 ZWlnaHQ4KElOVEVMX0lORk8oZGV2X3ByaXYpLT5zc2V1LnN1YnNsaWNlX21hc2spIDw8Cj4gKwkJ cnBjcyB8PSBod2VpZ2h0OChJTlRFTF9JTkZPKGRldl9wcml2KS0+c3NldS5zdWJzbGljZXNfbWFz a1swXSkgPDwKPiAgIAkJCUdFTjhfUlBDU19TU19DTlRfU0hJRlQ7Cj4gICAJCXJwY3MgfD0gR0VO OF9SUENTX0VOQUJMRTsKPiAgIAl9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3JpbmdidWZmZXIuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZm ZXIuaAo+IGluZGV4IGM1ZmYyMDNlNDJkNi4uYTk0YmMxYjVjNTAyIDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAo+IEBAIC05MCw3ICs5MCw3IEBAIGhhbmdjaGVj a19hY3Rpb25fdG9fc3RyKGNvbnN0IGVudW0gaW50ZWxfZW5naW5lX2hhbmdjaGVja19hY3Rpb24g YSkKPiAgIAo+ICAgI2RlZmluZSBpbnN0ZG9uZV9zdWJzbGljZV9tYXNrKGRldl9wcml2X18pIFwK PiAgIAkoSU5URUxfR0VOKGRldl9wcml2X18pID09IDcgPyBcCj4gLQkgMSA6IElOVEVMX0lORk8o ZGV2X3ByaXZfXyktPnNzZXUuc3Vic2xpY2VfbWFzaykKPiArCSAxIDogSU5URUxfSU5GTyhkZXZf cHJpdl9fKS0+c3NldS5zdWJzbGljZXNfbWFza1swXSkKPiAgIAo+ICAgI2RlZmluZSBmb3JfZWFj aF9pbnN0ZG9uZV9zbGljZV9zdWJzbGljZShkZXZfcHJpdl9fLCBzbGljZV9fLCBzdWJzbGljZV9f KSBcCj4gICAJZm9yICgoc2xpY2VfXykgPSAwLCAoc3Vic2xpY2VfXykgPSAwOyBcCj4gCgpSZWdh cmRzLAoKVHZydGtvCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdm eAo=