From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [CI,5/5] drm/i915: Expand subslice mask Date: Wed, 29 May 2019 17:33:46 +0300 Message-ID: <87tvdd49f9.fsf@intel.com> References: <20190524154022.13575-6-stuart.summers@intel.com> <20190529075836.GA62087@archlinux-epyc> 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 67A5E8953E for ; Wed, 29 May 2019 14:30:36 +0000 (UTC) In-Reply-To: <20190529075836.GA62087@archlinux-epyc> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Nathan Chancellor , Stuart Summers Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCAyOSBNYXkgMjAxOSwgTmF0aGFuIENoYW5jZWxsb3IgPG5hdGVjaGFuY2VsbG9yQGdt YWlsLmNvbT4gd3JvdGU6Cj4gSGkgU3R1YXJ0LAo+Cj4gT24gRnJpLCBNYXkgMjQsIDIwMTkgYXQg MDg6NDA6MjJBTSAtMDcwMCwgU3R1YXJ0IFN1bW1lcnMgd3JvdGU6Cj4+IEN1cnJlbnRseSwgdGhl IHN1YnNsaWNlX21hc2sgcnVudGltZSBwYXJhbWV0ZXIgaXMgc3RvcmVkIGFzIGFuCj4+IGFycmF5 IG9mIHN1YnNsaWNlcyBwZXIgc2xpY2UuIEV4cGFuZCB0aGUgc3Vic2xpY2UgbWFzayBhcnJheSB0 bwo+PiBiZXR0ZXIgbWF0Y2ggd2hhdCBpcyBwcmVzZW50ZWQgdG8gdXNlcnNwYWNlIHRocm91Z2gg dGhlCj4+IEk5MTVfUVVFUllfVE9QT0xPR1lfSU5GTyBpb2N0bC4gVGhlIGluZGV4IGludG8gdGhp cyBhcnJheSBpcwo+PiB0aGVuIGNhbGN1bGF0ZWQ6Cj4+ICAgc2xpY2UgKiBzdWJzbGljZSBzdHJp ZGUgKyBzdWJzbGljZSBpbmRleCAvIDgKPj4gCj4+IHYyOiBmaXggc3BhY2luZyBpbiBzZXRfc3Nl dV9pbmZvIGFyZ3MKPj4gICAgIHVzZSBzZXRfc3NldV9pbmZvIHRvIGluaXRpYWxpemUgc3NldSBk YXRhIHdoZW4gYnVpbGRpbmcKPj4gICAgIGRldmljZSBzdGF0dXMgaW4gZGVidWdmcwo+PiAgICAg cmVuYW1lIHZhcmlhYmxlcyBpbiBpbnRlbF9lbmdpbmVfdHlwZXMuaCB0byBhdm9pZCBjaGVja3Bh dGNoCj4+ICAgICB3YXJuaW5ncwo+PiB2MzogdXBkYXRlIGhlYWRlcnMgaW4gaW50ZWxfc3NldS5o Cj4+IHY0OiBhZGQgY29uc3QgdG8gc29tZSBzc2V1X2Rldl9pbmZvIHZhcmlhYmxlcwo+PiAgICAg dXNlIHNzZXUtPmV1X3N0cmlkZSBmb3IgRVUgc3RyaWRlIGNhbGN1bGF0aW9ucwo+PiB2NTogYWRk cmVzcyByZXZpZXcgY29tbWVudHMgZnJvbSBUdnJ0a28gYW5kIERhbmllbGUKPj4gdjY6IHJlbW92 ZSBleHRyYSBzcGFjZSBpbiBpbnRlbF9zc2V1X2dldF9zdWJzbGljZXMKPj4gICAgIHJldHVybiB0 aGUgY29ycmVjdCBzdWJzbGljZSBlbmFibGUgaW4gZm9yX2VhY2hfaW5zdGRvbmUKPj4gICAgIGFk ZCBHRU1fQlVHX09OIHRvIGVuc3VyZSB1c2VyIGRvZXNuJ3QgcGFzcyBpbnZhbGlkIHNzX21hc2sg c2l6ZQo+PiAgICAgdXNlIHByaW50ayBmb3JtYXR0ZWQgc3RyaW5nIGZvciBzdWJzbGljZSBtYXNr Cj4+IHY3OiByZW1vdmUgc3RyaW5nLmggaGVhZGVyIGFuZCByZWJhc2UKPj4gCj4+IENjOiBEYW5p ZWxlIENlcmFvbG8gU3B1cmlvIDxkYW5pZWxlLmNlcmFvbG9zcHVyaW9AaW50ZWwuY29tPgo+PiBD YzogTGlvbmVsIExhbmR3ZXJsaW4gPGxpb25lbC5nLmxhbmR3ZXJsaW5AaW50ZWwuY29tPgo+PiBB Y2tlZC1ieTogTGlvbmVsIExhbmR3ZXJsaW4gPGxpb25lbC5nLmxhbmR3ZXJsaW5AaW50ZWwuY29t Pgo+PiBSZXZpZXdlZC1ieTogRGFuaWVsZSBDZXJhb2xvIFNwdXJpbyA8ZGFuaWVsZS5jZXJhb2xv c3B1cmlvQGludGVsLmNvbT4KPj4gU2lnbmVkLW9mZi1ieTogU3R1YXJ0IFN1bW1lcnMgPHN0dWFy dC5zdW1tZXJzQGludGVsLmNvbT4KPj4gLS0tCj4KPiA8c25pcD4KPgo+PiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGV2aWNlX2luZm8uYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2RldmljZV9pbmZvLmMKPj4gaW5kZXggOTdmNzQyNTMwZmExLi4zNjI1Zjc3 N2YzYTMgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RldmljZV9p bmZvLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGV2aWNlX2luZm8uYwo+ PiBAQCAtOTIsOSArOTIsOSBAQCBzdGF0aWMgdm9pZCBzc2V1X2R1bXAoY29uc3Qgc3RydWN0IHNz ZXVfZGV2X2luZm8gKnNzZXUsIHN0cnVjdCBkcm1fcHJpbnRlciAqcCkKPj4gIAkJICAgaHdlaWdo dDgoc3NldS0+c2xpY2VfbWFzayksIHNzZXUtPnNsaWNlX21hc2spOwo+PiAgCWRybV9wcmludGYo cCwgInN1YnNsaWNlIHRvdGFsOiAldVxuIiwgaW50ZWxfc3NldV9zdWJzbGljZV90b3RhbChzc2V1 KSk7Cj4+ICAJZm9yIChzID0gMDsgcyA8IHNzZXUtPm1heF9zbGljZXM7IHMrKykgewo+PiAtCQlk cm1fcHJpbnRmKHAsICJzbGljZSVkOiAldSBzdWJzbGljZXMsIG1hc2s9JTA0eFxuIiwKPj4gKwkJ ZHJtX3ByaW50ZihwLCAic2xpY2UlZDogJXUgc3Vic2xpY2VzLCBtYXNrPSUwOHhcbiIsCj4+ICAJ CQkgICBzLCBpbnRlbF9zc2V1X3N1YnNsaWNlc19wZXJfc2xpY2Uoc3NldSwgcyksCj4+IC0JCQkg ICBzc2V1LT5zdWJzbGljZV9tYXNrW3NdKTsKPj4gKwkJCSAgIGludGVsX3NzZXVfZ2V0X3N1YnNs aWNlcyhzc2V1LCBzKSk7Cj4+ICAJfQo+PiAgCWRybV9wcmludGYocCwgIkVVIHRvdGFsOiAldVxu Iiwgc3NldS0+ZXVfdG90YWwpOwo+PiAgCWRybV9wcmludGYocCwgIkVVIHBlciBzdWJzbGljZTog JXVcbiIsIHNzZXUtPmV1X3Blcl9zdWJzbGljZSk7Cj4+IEBAIC0xMTcsMTAgKzExNyw5IEBAIHZv aWQgaW50ZWxfZGV2aWNlX2luZm9fZHVtcF9ydW50aW1lKGNvbnN0IHN0cnVjdCBpbnRlbF9ydW50 aW1lX2luZm8gKmluZm8sCj4+ICBzdGF0aWMgaW50IHNzZXVfZXVfaWR4KGNvbnN0IHN0cnVjdCBz c2V1X2Rldl9pbmZvICpzc2V1LCBpbnQgc2xpY2UsCj4+ICAJCSAgICAgICBpbnQgc3Vic2xpY2Up Cj4+ICB7Cj4+IC0JaW50IHN1YnNsaWNlX3N0cmlkZSA9IEdFTl9TU0VVX1NUUklERShzc2V1LT5t YXhfZXVzX3Blcl9zdWJzbGljZSk7Cj4+IC0JaW50IHNsaWNlX3N0cmlkZSA9IHNzZXUtPm1heF9z dWJzbGljZXMgKiBzdWJzbGljZV9zdHJpZGU7Cj4+ICsJaW50IHNsaWNlX3N0cmlkZSA9IHNzZXUt Pm1heF9zdWJzbGljZXMgKiBzc2V1LT5ldV9zdHJpZGU7Cj4+ICAKPj4gLQlyZXR1cm4gc2xpY2Ug KiBzbGljZV9zdHJpZGUgKyBzdWJzbGljZSAqIHN1YnNsaWNlX3N0cmlkZTsKPj4gKwlyZXR1cm4g c2xpY2UgKiBzbGljZV9zdHJpZGUgKyBzdWJzbGljZSAqIHNzZXUtPmV1X3N0cmlkZTsKPj4gIH0K Pj4gIAo+PiAgc3RhdGljIHUxNiBzc2V1X2dldF9ldXMoY29uc3Qgc3RydWN0IHNzZXVfZGV2X2lu Zm8gKnNzZXUsIGludCBzbGljZSwKPj4gQEAgLTEyOSw3ICsxMjgsNyBAQCBzdGF0aWMgdTE2IHNz ZXVfZ2V0X2V1cyhjb25zdCBzdHJ1Y3Qgc3NldV9kZXZfaW5mbyAqc3NldSwgaW50IHNsaWNlLAo+ PiAgCWludCBpLCBvZmZzZXQgPSBzc2V1X2V1X2lkeChzc2V1LCBzbGljZSwgc3Vic2xpY2UpOwo+ PiAgCXUxNiBldV9tYXNrID0gMDsKPj4gIAo+PiAtCWZvciAoaSA9IDA7IGkgPCBHRU5fU1NFVV9T VFJJREUoc3NldS0+bWF4X2V1c19wZXJfc3Vic2xpY2UpOyBpKyspIHsKPj4gKwlmb3IgKGkgPSAw OyBpIDwgc3NldS0+ZXVfc3RyaWRlOyBpKyspIHsKPj4gIAkJZXVfbWFzayB8PSAoKHUxNilzc2V1 LT5ldV9tYXNrW29mZnNldCArIGldKSA8PAo+PiAgCQkJKGkgKiBCSVRTX1BFUl9CWVRFKTsKPj4g IAl9Cj4+IEBAIC0xNDIsNyArMTQxLDcgQEAgc3RhdGljIHZvaWQgc3NldV9zZXRfZXVzKHN0cnVj dCBzc2V1X2Rldl9pbmZvICpzc2V1LCBpbnQgc2xpY2UsIGludCBzdWJzbGljZSwKPj4gIHsKPj4g IAlpbnQgaSwgb2Zmc2V0ID0gc3NldV9ldV9pZHgoc3NldSwgc2xpY2UsIHN1YnNsaWNlKTsKPj4g IAo+PiAtCWZvciAoaSA9IDA7IGkgPCBHRU5fU1NFVV9TVFJJREUoc3NldS0+bWF4X2V1c19wZXJf c3Vic2xpY2UpOyBpKyspIHsKPj4gKwlmb3IgKGkgPSAwOyBpIDwgc3NldS0+ZXVfc3RyaWRlOyBp KyspIHsKPj4gIAkJc3NldS0+ZXVfbWFza1tvZmZzZXQgKyBpXSA9Cj4+ICAJCQkoZXVfbWFzayA+ PiAoQklUU19QRVJfQllURSAqIGkpKSAmIDB4ZmY7Cj4+ICAJfQo+PiBAQCAtMTU5LDkgKzE1OCw5 IEBAIHZvaWQgaW50ZWxfZGV2aWNlX2luZm9fZHVtcF90b3BvbG9neShjb25zdCBzdHJ1Y3Qgc3Nl dV9kZXZfaW5mbyAqc3NldSwKPj4gIAl9Cj4+ICAKPj4gIAlmb3IgKHMgPSAwOyBzIDwgc3NldS0+ bWF4X3NsaWNlczsgcysrKSB7Cj4+IC0JCWRybV9wcmludGYocCwgInNsaWNlJWQ6ICV1IHN1YnNs aWNlKHMpICgweCVoaHgpOlxuIiwKPj4gKwkJZHJtX3ByaW50ZihwLCAic2xpY2UlZDogJXUgc3Vi c2xpY2UocykgKDB4JTA4eCk6XG4iLAo+PiAgCQkJICAgcywgaW50ZWxfc3NldV9zdWJzbGljZXNf cGVyX3NsaWNlKHNzZXUsIHMpLAo+PiAtCQkJICAgc3NldS0+c3Vic2xpY2VfbWFza1tzXSk7Cj4+ ICsJCQkgICBpbnRlbF9zc2V1X2dldF9zdWJzbGljZXMoc3NldSwgcykpOwo+PiAgCj4+ICAJCWZv ciAoc3MgPSAwOyBzcyA8IHNzZXUtPm1heF9zdWJzbGljZXM7IHNzKyspIHsKPj4gIAkJCXUxNiBl bmFibGVkX2V1cyA9IHNzZXVfZ2V0X2V1cyhzc2V1LCBzLCBzcyk7Cj4+IEBAIC0xOTAsMTUgKzE4 OSwxMCBAQCBzdGF0aWMgdm9pZCBnZW4xMV9zc2V1X2luZm9faW5pdChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCj4+ICAJdTggZXVfZW47Cj4+ICAJaW50IHM7Cj4+ICAKPj4gLQlp ZiAoSVNfRUxLSEFSVExBS0UoZGV2X3ByaXYpKSB7Cj4+IC0JCXNzZXUtPm1heF9zbGljZXMgPSAx Owo+PiAtCQlzc2V1LT5tYXhfc3Vic2xpY2VzID0gNDsKPj4gLQkJc3NldS0+bWF4X2V1c19wZXJf c3Vic2xpY2UgPSA4Owo+PiAtCX0gZWxzZSB7Cj4+IC0JCXNzZXUtPm1heF9zbGljZXMgPSAxOwo+ PiAtCQlzc2V1LT5tYXhfc3Vic2xpY2VzID0gODsKPj4gLQkJc3NldS0+bWF4X2V1c19wZXJfc3Vi c2xpY2UgPSA4Owo+PiAtCX0KPj4gKwlpZiAoSVNfRUxLSEFSVExBS0UoZGV2X3ByaXYpKQo+PiAr CQlpbnRlbF9zc2V1X3NldF9pbmZvKHNzZXUsIDEsIDQsIDgpOwo+PiArCWVsc2UKPj4gKwkJaW50 ZWxfc3NldV9zZXRfaW5mbyhzc2V1LCAxLCA4LCA4KTsKPj4gIAo+PiAgCXNfZW4gPSBJOTE1X1JF QUQoR0VOMTFfR1RfU0xJQ0VfRU5BQkxFKSAmIEdFTjExX0dUX1NfRU5BX01BU0s7Cj4+ICAJc3Nf ZW4gPSB+STkxNV9SRUFEKEdFTjExX0dUX1NVQlNMSUNFX0RJU0FCTEUpOwo+PiBAQCAtMjA3LDE1 ICsyMDEsMTUgQEAgc3RhdGljIHZvaWQgZ2VuMTFfc3NldV9pbmZvX2luaXQoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQo+PiAgCj4+ICAJZm9yIChzID0gMDsgcyA8IHNzZXUtPm1h eF9zbGljZXM7IHMrKykgewo+PiAgCQlpZiAoc19lbiAmIEJJVChzKSkgewo+PiAtCQkJaW50IHNz X2lkeCA9IHNzZXUtPm1heF9zdWJzbGljZXMgKiBzOwo+PiAgCQkJaW50IHNzOwo+PiAgCj4+ICAJ CQlzc2V1LT5zbGljZV9tYXNrIHw9IEJJVChzKTsKPj4gLQkJCXNzZXUtPnN1YnNsaWNlX21hc2tb c10gPSAoc3NfZW4gPj4gc3NfaWR4KSAmIHNzX2VuX21hc2s7Cj4+IC0JCQlmb3IgKHNzID0gMDsg c3MgPCBzc2V1LT5tYXhfc3Vic2xpY2VzOyBzcysrKSB7Cj4+IC0JCQkJaWYgKHNzZXUtPnN1YnNs aWNlX21hc2tbc10gJiBCSVQoc3MpKQo+PiArCj4+ICsJCQlpbnRlbF9zc2V1X3NldF9zdWJzbGlj ZXMoc3NldSwgcywgc3NfZW5fbWFzayk7Cj4+ICsKPj4gKwkJCWZvciAoc3MgPSAwOyBzcyA8IHNz ZXUtPm1heF9zdWJzbGljZXM7IHNzKyspCj4+ICsJCQkJaWYgKGludGVsX3NzZXVfaGFzX3N1YnNs aWNlKHNzZXUsIHMsIHNzKSkKPj4gIAkJCQkJc3NldV9zZXRfZXVzKHNzZXUsIHMsIHNzLCBldV9l bik7Cj4+IC0JCQl9Cj4+ICAJCX0KPj4gIAl9Cj4+ICAJc3NldS0+ZXVfcGVyX3N1YnNsaWNlID0g aHdlaWdodDgoZXVfZW4pOwo+PiBAQCAtMjM1LDIzICsyMjksMTAgQEAgc3RhdGljIHZvaWQgZ2Vu MTBfc3NldV9pbmZvX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+PiAg CWNvbnN0IGludCBldV9tYXNrID0gMHhmZjsKPj4gIAl1MzIgc3Vic2xpY2VfbWFzaywgZXVfZW47 Cj4+ICAKPj4gKwlpbnRlbF9zc2V1X3NldF9pbmZvKHNzZXUsIDYsIDQsIDgpOwo+PiArCj4+ICAJ c3NldS0+c2xpY2VfbWFzayA9IChmdXNlMiAmIEdFTjEwX0YyX1NfRU5BX01BU0spID4+Cj4+ICAJ CQkgICAgR0VOMTBfRjJfU19FTkFfU0hJRlQ7Cj4+IC0Jc3NldS0+bWF4X3NsaWNlcyA9IDY7Cj4+ IC0Jc3NldS0+bWF4X3N1YnNsaWNlcyA9IDQ7Cj4+IC0Jc3NldS0+bWF4X2V1c19wZXJfc3Vic2xp Y2UgPSA4Owo+PiAtCj4+IC0Jc3Vic2xpY2VfbWFzayA9ICgxIDw8IDQpIC0gMTsKPj4gLQlzdWJz bGljZV9tYXNrICY9IH4oKGZ1c2UyICYgR0VOMTBfRjJfU1NfRElTX01BU0spID4+Cj4+IC0JCQkg ICBHRU4xMF9GMl9TU19ESVNfU0hJRlQpOwo+PiAtCj4+IC0JLyoKPj4gLQkgKiBTbGljZTAgY2Fu IGhhdmUgdXAgdG8gMyBzdWJzbGljZXMsIGJ1dCB0aGVyZSBhcmUgb25seSAyIGluCj4+IC0JICog c2xpY2UxLzIuCj4+IC0JICovCj4+IC0Jc3NldS0+c3Vic2xpY2VfbWFza1swXSA9IHN1YnNsaWNl X21hc2s7Cj4+IC0JZm9yIChzID0gMTsgcyA8IHNzZXUtPm1heF9zbGljZXM7IHMrKykKPj4gLQkJ c3NldS0+c3Vic2xpY2VfbWFza1tzXSA9IHN1YnNsaWNlX21hc2sgJiAweDM7Cj4+ICAKPj4gIAkv KiBTbGljZTAgKi8KPj4gIAlldV9lbiA9IH5JOTE1X1JFQUQoR0VOOF9FVV9ESVNBQkxFMCk7Cj4+ IEBAIC0yNzYsMTQgKzI1NywyMiBAQCBzdGF0aWMgdm9pZCBnZW4xMF9zc2V1X2luZm9faW5pdChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4+ICAJZXVfZW4gPSB+STkxNV9SRUFE KEdFTjEwX0VVX0RJU0FCTEUzKTsKPj4gIAlzc2V1X3NldF9ldXMoc3NldSwgNSwgMSwgZXVfZW4g JiBldV9tYXNrKTsKPj4gIAo+PiAtCS8qIERvIGEgc2Vjb25kIHBhc3Mgd2hlcmUgd2UgbWFyayB0 aGUgc3Vic2xpY2VzIGRpc2FibGVkIGlmIGFsbCB0aGVpcgo+PiAtCSAqIGV1cyBhcmUgb2ZmLgo+ PiAtCSAqLwo+PiArCXN1YnNsaWNlX21hc2sgPSAoMSA8PCA0KSAtIDE7Cj4+ICsJc3Vic2xpY2Vf bWFzayAmPSB+KChmdXNlMiAmIEdFTjEwX0YyX1NTX0RJU19NQVNLKSA+Pgo+PiArCQkJICAgR0VO MTBfRjJfU1NfRElTX1NISUZUKTsKPj4gKwo+PiAgCWZvciAocyA9IDA7IHMgPCBzc2V1LT5tYXhf c2xpY2VzOyBzKyspIHsKPj4gIAkJZm9yIChzcyA9IDA7IHNzIDwgc3NldS0+bWF4X3N1YnNsaWNl czsgc3MrKykgewo+PiAgCQkJaWYgKHNzZXVfZ2V0X2V1cyhzc2V1LCBzLCBzcykgPT0gMCkKPj4g LQkJCQlzc2V1LT5zdWJzbGljZV9tYXNrW3NdICY9IH5CSVQoc3MpOwo+PiArCQkJCXN1YnNsaWNl X21hc2sgJj0gfkJJVChzcyk7Cj4+ICAJCX0KPj4gKwo+PiArCQkvKgo+PiArCQkgKiBTbGljZTAg Y2FuIGhhdmUgdXAgdG8gMyBzdWJzbGljZXMsIGJ1dCB0aGVyZSBhcmUgb25seSAyIGluCj4+ICsJ CSAqIHNsaWNlMS8yLgo+PiArCQkgKi8KPj4gKwkJaW50ZWxfc3NldV9zZXRfc3Vic2xpY2VzKHNz ZXUsIHMsIHMgPT0gMCA/IHN1YnNsaWNlX21hc2sgOgo+PiArCQkJCQkJCSAgIHN1YnNsaWNlX21h c2sgJiAweDMpOwo+PiAgCX0KPj4gIAo+PiAgCXNzZXUtPmV1X3RvdGFsID0gY29tcHV0ZV9ldV90 b3RhbChzc2V1KTsKPj4gQEAgLTMwOSwxMyArMjk4LDEyIEBAIHN0YXRpYyB2b2lkIGNoZXJyeXZp ZXdfc3NldV9pbmZvX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+PiAg ewo+PiAgCXN0cnVjdCBzc2V1X2Rldl9pbmZvICpzc2V1ID0gJlJVTlRJTUVfSU5GTyhkZXZfcHJp diktPnNzZXU7Cj4+ICAJdTMyIGZ1c2U7Cj4+ICsJdTggc3Vic2xpY2VfbWFzazsKPj4gIAo+PiAg CWZ1c2UgPSBJOTE1X1JFQUQoQ0hWX0ZVU0VfR1QpOwo+PiAgCj4+ICAJc3NldS0+c2xpY2VfbWFz ayA9IEJJVCgwKTsKPj4gLQlzc2V1LT5tYXhfc2xpY2VzID0gMTsKPj4gLQlzc2V1LT5tYXhfc3Vi c2xpY2VzID0gMjsKPj4gLQlzc2V1LT5tYXhfZXVzX3Blcl9zdWJzbGljZSA9IDg7Cj4+ICsJaW50 ZWxfc3NldV9zZXRfaW5mbyhzc2V1LCAxLCAyLCA4KTsKPj4gIAo+PiAgCWlmICghKGZ1c2UgJiBD SFZfRkdUX0RJU0FCTEVfU1MwKSkgewo+PiAgCQl1OCBkaXNhYmxlZF9tYXNrID0KPj4gQEAgLTMy NCw3ICszMTIsNyBAQCBzdGF0aWMgdm9pZCBjaGVycnl2aWV3X3NzZXVfaW5mb19pbml0KHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPj4gIAkJCSgoKGZ1c2UgJiBDSFZfRkdUX0VV X0RJU19TUzBfUjFfTUFTSykgPj4KPj4gIAkJCSAgQ0hWX0ZHVF9FVV9ESVNfU1MwX1IxX1NISUZU KSA8PCA0KTsKPj4gIAo+PiAtCQlzc2V1LT5zdWJzbGljZV9tYXNrWzBdIHw9IEJJVCgwKTsKPj4g KwkJc3Vic2xpY2VfbWFzayB8PSBCSVQoMCk7Cj4KPiBXaGVuIGJ1aWxkaW5nIHdpdGggLVd1bmlu aXRpYWxpemVkLCBjbGFuZyB3YXJuczoKPgo+IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rl dmljZV9pbmZvLmM6MzE1OjM6IHdhcm5pbmc6IHZhcmlhYmxlICdzdWJzbGljZV9tYXNrJyBpcyB1 bmluaXRpYWxpemVkIHdoZW4gdXNlZCBoZXJlIFstV3VuaW5pdGlhbGl6ZWRdCj4gICAgICAgICAg ICAgICAgIHN1YnNsaWNlX21hc2sgfD0gQklUKDApOwo+ICAgICAgICAgICAgICAgICBefn5+fn5+ fn5+fn5+Cj4gZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGV2aWNlX2luZm8uYzozMDE6MTg6 IG5vdGU6IGluaXRpYWxpemUgdGhlIHZhcmlhYmxlICdzdWJzbGljZV9tYXNrJyB0byBzaWxlbmNl IHRoaXMgd2FybmluZwo+ICAgICAgICAgdTggc3Vic2xpY2VfbWFzazsKPiAgICAgICAgICAgICAg ICAgICAgICAgICBeCj4gICAgICAgICAgICAgICAgICAgICAgICAgID0gJ1wwJwo+Cj4gSSBhc3N1 bWUgdGhhdCBpdCBzaG91bGQgYmUgaW5pdGlhbGl6ZWQgdG8gemVybyBidXQgbWF5YmUgeW91IGlu dGVuZGVkCj4gc29tZXRoaW5nIGRpZmZlcmVudD8KCkFzIGl0IGhhcHBlbnMsIHRoZSBjb21taXQg aGFzIGJlZW4gcmV2ZXJ0ZWQgZm9yIG90aGVyIHJlYXNvbnMsIGFuZCB3ZQoodGhlIHJveWFsIHdl LCBJIHJlYWxseSBtZWFuIFN0dWFydCkgY2FuIGZpeCB0aGlzIHdoaWxlIGF0IGl0LiA7KQoKQlIs CkphbmkuCgoKLS0gCkphbmkgTmlrdWxhLCBJbnRlbCBPcGVuIFNvdXJjZSBHcmFwaGljcyBDZW50 ZXIKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwt Z2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4