From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: Re: [PATCH v3 2/2] drm/i915: Make sure we have enough memory bandwidth on ICL Date: Mon, 13 May 2019 12:58:51 +0200 Message-ID: <7482f42d-2fe5-3eaf-da0a-1b56862f980b@linux.intel.com> References: <20190503190831.1759-1-ville.syrjala@linux.intel.com> <20190503190831.1759-2-ville.syrjala@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by gabe.freedesktop.org (Postfix) with ESMTPS id 251558993B for ; Mon, 13 May 2019 10:58:54 +0000 (UTC) In-Reply-To: <20190503190831.1759-2-ville.syrjala@linux.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: Ville Syrjala , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T3AgMDMtMDUtMjAxOSBvbSAyMTowOCBzY2hyZWVmIFZpbGxlIFN5cmphbGE6Cj4gRnJvbTogVmls bGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KPgo+IElDTCBoYXMg c28gbWFueSBwbGFuZXMgdGhhdCBpdCBjYW4gZWFzaWx5IGV4Y2VlZCB0aGUgbWF4aW11bQo+IGVm ZmVjdGl2ZSBtZW1vcnkgYmFuZHdpZHRoIG9mIHRoZSBzeXN0ZW0uIFdlIG11c3QgdGhlcmVmb3Jl IGNoZWNrCj4gdGhhdCB3ZSBkb24ndCBleGNlZWQgdGhhdCBsaW1pdC4KPgo+IFRoZSBhbGdvcml0 aG0gaXMgdmVyeSBtYWdpYyBudW1iZXIgaGVhdnkgYW5kIGxhY2tzIHN1ZmZpY2llbnQKPiBleHBs YW5hdGlvbiBmb3Igbm93LiBXZSBhbHNvIGhhdmUgbm8gc2FuZSB3YXkgdG8gcXVlcnkgdGhlCj4g bWVtb3J5IGNsb2NrIGFuZCB0aW1pbmdzLCBzbyB3ZSBtdXN0IHJlbHkgb24gYSBjb21iaW5hdGlv biBvZgo+IHJhdyByZWFkb3V0IGZyb20gdGhlIG1lbW9yeSBjb250cm9sbGVyIGFuZCBoYXJkY29k ZWQgYXNzdW1wdGlvbnMuCj4gVGhlIG1lbW9yeSBjb250cm9sbGVyIHZhbHVlcyBvYnZpb3VzbHkg Y2hhbmdlIGFzIHRoZSBzeXN0ZW0KPiBqdW1wcyBiZXR3ZWVuIHRoZSBkaWZmZXJlbnQgU0FHViBw b2ludHMsIHNvIHdlIHRyeSB0byBzdGFiaWxpemUKPiBpdCBmaXJzdCBieSBkaXNhYmxpbmcgU0FH ViBmb3IgdGhlIGR1cmF0aW9uIG9mIHRoZSByZWFkb3V0Lgo+Cj4gVGhlIHV0aWxpemVkIGJhbmR3 aWR0aCBpcyB0cmFja2VkIHZpYSBhIGRldmljZSB3aWRlIGF0b21pYwo+IHByaXZhdGUgb2JqZWN0 LiBUaGF0IGlzIGFjdHVhbGx5IG5vdCByb2J1c3QgYmVjYXVzZSB3ZSBjYW4ndAo+IGFmZm9yZCB0 byBlbmZvcmNlIHN0cmljdCBnbG9iYWwgb3JkZXJpbmcgYmV0d2VlbiB0aGUgcGlwZXMuCj4gVGh1 cyBJIHRoaW5rIEknbGwgbmVlZCB0byBjaGFuZ2UgdGhpcyB0byBzaW1wbHkgY2hvcCB1cCB0aGUK PiBhdmFpbGFibGUgYmFuZHdpZHRoIGJldHdlZW4gYWxsIHRoZSBhY3RpdmUgcGlwZXMuIEVhY2gg cGlwZQo+IGNhbiB0aGVuIGRvIHdoYXRldmVyIGl0IHdhbnRzIGFzIGxvbmcgYXMgaXQgZG9lc24n dCBleGNlZWQKPiBpdHMgYnVkZ2V0LiBUaGF0IHNjaGVtZSB3aWxsIGFsc28gcmVxdWlyZSB0aGF0 IHdlIGFzc3VtZSB0aGF0Cj4gYW55IG51bWJlciBvZiBwbGFuZXMgY291bGQgYmUgYWN0aXZlIGF0 IGFueSB0aW1lLgo+Cj4gVE9ETzogbWFrZSBpdCByb2J1c3QgYW5kIGRlYWwgd2l0aCBhbGwgdGhl IG9wZW4gcXVlc3Rpb25zCj4KPiB2MjogU2xlZXAgbG9uZ2VyIGFmdGVyIGRpc2FibGluZyBTQUdW Cj4gdjM6IFBvbGwgZm9yIHRoZSBkY2xrIHRvIGdldCByYWlzZWQgKHNlZW4gaXQgdGFrZSAyNTBt cyEpCj4gICAgIElmIHRoZSBzeXN0ZW0gaGFzIDIxMzNNVC9zIG1lbW9yeSB0aGVuIHdlIHBvaW50 bGVzc2x5Cj4gICAgIHdhaXQgb25lIGZ1bGwgc2Vjb25kIDooCj4gdjQ6IFVzZSB0aGUgbmV3IHBj b2RlIGludGVyZmFjZSB0byBnZXQgdGhlIHFndiBwb2ludHMgcmF0aGVyCj4gICAgIHRoYXQgdXNp bmcgaGFyZGNvZGVkIG51bWJlcnMKPgo+IFNpZ25lZC1vZmYtYnk6IFZpbGxlIFN5cmrDpGzDpCA8 dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cj4gLS0tClNwbGl0dGluZyBvdXQgdGhlIEhX IHJlYWRvdXQgd291bGQgYmUgbmljZSwgaXQgd291bGQgbWFrZSBpdCBlYXNpZXIgdG8gcmV2aWV3 IHRoZSBzZXBhcmF0ZSBwYXJ0cyB0aGF0IHRoaXMgcGF0Y2ggdHJpZXMgdG8gYWNjb21wbGlzaC4g OikKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgICAgICAgICAgICAgfCAgIDEgKwo+ ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jICAgICAgICAgICB8IDIyOSArKysrKysr KysrKysrKysrKysrKysrCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAg ICAgIHwgIDEwICsKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCAgICAgICAgICAg fCAgIDMgKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9taWNfcGxhbmUuYyB8ICAy MCArKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9taWNfcGxhbmUuaCB8ICAgMiAr Cj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2J3LmMgICAgICAgICAgIHwgMTgxICsrKysr KysrKysrKysrKysrCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2J3LmggICAgICAgICAg IHwgIDQ2ICsrKysrCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyAgICAg IHwgIDQwICsrKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgICAgICAg fCAgIDIgKwo+ICAxMCBmaWxlcyBjaGFuZ2VkLCA1MzMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlv bigtKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYncu Ywo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYncuaAo+ Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvTWFrZWZpbGUKPiBpbmRleCA2ODEwNmZlMzVhMDQuLjEzOWEwZmMxOTM5MCAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCj4gQEAgLTEzOCw2ICsxMzgsNyBAQCBpOTE1LXkgKz0g aW50ZWxfYXVkaW8ubyBcCj4gIAkgIGludGVsX2F0b21pYy5vIFwKPiAgCSAgaW50ZWxfYXRvbWlj X3BsYW5lLm8gXAo+ICAJICBpbnRlbF9iaW9zLm8gXAo+ICsJICBpbnRlbF9idy5vIFwKPiAgCSAg aW50ZWxfY2RjbGsubyBcCj4gIAkgIGludGVsX2NvbG9yLm8gXAo+ICAJICBpbnRlbF9jb21ib19w aHkubyBcCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4gaW5kZXggNWVkODY0NzUyYzdiLi5iN2Zh N2I1MWMyZTIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPiBAQCAtNzAsNiArNzAsNyBA QAo+ICAjaW5jbHVkZSAiaW50ZWxfb3ZlcmxheS5oIgo+ICAjaW5jbHVkZSAiaW50ZWxfcGlwZV9j cmMuaCIKPiAgI2luY2x1ZGUgImludGVsX3BtLmgiCj4gKyNpbmNsdWRlICJpbnRlbF9zaWRlYmFu ZC5oIgo+ICAjaW5jbHVkZSAiaW50ZWxfc3ByaXRlLmgiCj4gICNpbmNsdWRlICJpbnRlbF91Yy5o Igo+ICAKPiBAQCAtMTQzNSw2ICsxNDM2LDIzMiBAQCBieHRfZ2V0X2RyYW1faW5mbyhzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAKPiArc3Ry dWN0IGludGVsX3Fndl9wb2ludCB7Cj4gKwl1MTYgZGNsaywgdF9ycCwgdF9yZHByZSwgdF9yYywg dF9yYXMsIHRfcmNkOwo+ICt9Owo+ICsKPiArc3RydWN0IGludGVsX3NhZ3ZfaW5mbyB7Cj4gKwlz dHJ1Y3QgaW50ZWxfcWd2X3BvaW50IHBvaW50c1szXTsKPiArCXU4IG51bV9wb2ludHM7Cj4gKwl1 OCBudW1fY2hhbm5lbHM7Cj4gKwl1OCB0X2JsOwo+ICsJZW51bSBpbnRlbF9kcmFtX3R5cGUgZHJh bV90eXBlOwo+ICt9Owo+ICsKPiArc3RhdGljIGludCBpY2xfcGNvZGVfcmVhZF9tZW1fZ2xvYmFs X2luZm8oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICsJCQkJCSAgc3RydWN0 IGludGVsX3NhZ3ZfaW5mbyAqc2kpCj4gK3sKPiArCXUzMiB2YWwgPSAwOwo+ICsJaW50IHJldDsK PiArCj4gKwlyZXQgPSBzYW5keWJyaWRnZV9wY29kZV9yZWFkKGRldl9wcml2LAo+ICsJCQkJICAg ICBJQ0xfUENPREVfTUVNX1NVQlNZU1lTVEVNX0lORk8gfAo+ICsJCQkJICAgICBJQ0xfUENPREVf TUVNX1NTX1JFQURfR0xPQkFMX0lORk8sCj4gKwkJCQkgICAgICZ2YWwsIE5VTEwpOwo+ICsJaWYg KHJldCkKPiArCQlyZXR1cm4gcmV0Owo+ICsKPiArCXN3aXRjaCAodmFsICYgMHhmKSB7Cj4gKwlj YXNlIDA6Cj4gKwkJc2ktPmRyYW1fdHlwZSA9IElOVEVMX0RSQU1fRERSNDsKPiArCQlicmVhazsK PiArCWNhc2UgMToKPiArCQlzaS0+ZHJhbV90eXBlID0gSU5URUxfRFJBTV9ERFIzOwo+ICsJCWJy ZWFrOwo+ICsJY2FzZSAyOgo+ICsJCXNpLT5kcmFtX3R5cGUgPSBJTlRFTF9EUkFNX0xQRERSMzsK PiArCQlicmVhazsKPiArCWNhc2UgMzoKPiArCQlzaS0+ZHJhbV90eXBlID0gSU5URUxfRFJBTV9M UEREUjM7Cj4gKwkJYnJlYWs7Cj4gKwlkZWZhdWx0Ogo+ICsJCU1JU1NJTkdfQ0FTRSh2YWwgJiAw eGYpOwo+ICsJCWJyZWFrOwo+ICsJfQo+ICsKPiArCXNpLT5udW1fY2hhbm5lbHMgPSAodmFsICYg MHhmMCkgPj4gNDsKPiArCXNpLT5udW1fcG9pbnRzID0gKHZhbCAmIDB4ZjAwKSA+PiA4Owo+ICsK PiArCXNpLT50X2JsID0gc2ktPmRyYW1fdHlwZSA9PSBJTlRFTF9EUkFNX0REUjQgPyA0IDogODsK PiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGludCBpY2xfcGNvZGVfcmVhZF9x Z3ZfcG9pbnRfaW5mbyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gKwkJCQkJ IHN0cnVjdCBpbnRlbF9xZ3ZfcG9pbnQgKnNwLAo+ICsJCQkJCSBpbnQgcG9pbnQpCj4gK3sKPiAr CXUzMiB2YWwgPSAwLCB2YWwyOwo+ICsJaW50IHJldDsKPiArCj4gKwlyZXQgPSBzYW5keWJyaWRn ZV9wY29kZV9yZWFkKGRldl9wcml2LAo+ICsJCQkJICAgICBJQ0xfUENPREVfTUVNX1NVQlNZU1lT VEVNX0lORk8gfAo+ICsJCQkJICAgICBJQ0xfUENPREVfTUVNX1NTX1JFQURfUUdWX1BPSU5UX0lO Rk8ocG9pbnQpLAo+ICsJCQkJICAgICAmdmFsLCAmdmFsMik7Cj4gKwlpZiAocmV0KQo+ICsJCXJl dHVybiByZXQ7Cj4gKwo+ICsJc3AtPmRjbGsgPSB2YWwgJiAweGZmZmY7Cj4gKwlzcC0+dF9ycCA9 ICh2YWwgJiAweGZmMDAwMCkgPj4gMTY7Cj4gKwlzcC0+dF9yY2QgPSAodmFsICYgMHhmZjAwMDAw MCkgPj4gMjQ7Cj4gKwo+ICsJc3AtPnRfcmRwcmUgPSB2YWwyICYgMHhmZjsKPiArCXNwLT50X3Jh cyA9ICh2YWwyICYgMHhmZjAwKSA+PiA4Owo+ICsKPiArCXNwLT50X3JjID0gc3AtPnRfcnAgKyBz cC0+dF9yYXM7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgaWNsX2dl dF9xZ3ZfcG9pbnRzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiArCQkJICAg ICAgc3RydWN0IGludGVsX3NhZ3ZfaW5mbyAqc2kpCj4gK3sKPiArCWludCBpLCByZXQ7Cj4gKwo+ ICsJcmV0ID0gaWNsX3Bjb2RlX3JlYWRfbWVtX2dsb2JhbF9pbmZvKGRldl9wcml2LCBzaSk7Cj4g KwlpZiAocmV0KQo+ICsJCXJldHVybiByZXQ7Cj4gKwo+ICsJaWYgKFdBUk5fT04oc2ktPm51bV9w b2ludHMgPiBBUlJBWV9TSVpFKHNpLT5wb2ludHMpKSkKPiArCQlzaS0+bnVtX3BvaW50cyA9IEFS UkFZX1NJWkUoc2ktPnBvaW50cyk7Cj4gKwo+ICsJZm9yIChpID0gMDsgaSA8IHNpLT5udW1fcG9p bnRzOyBpKyspIHsKPiArCQlzdHJ1Y3QgaW50ZWxfcWd2X3BvaW50ICpzcCA9ICZzaS0+cG9pbnRz W2ldOwo+ICsKPiArCQlyZXQgPSBpY2xfcGNvZGVfcmVhZF9xZ3ZfcG9pbnRfaW5mbyhkZXZfcHJp diwgc3AsIGkpOwo+ICsJCWlmIChyZXQpCj4gKwkJCXJldHVybiByZXQ7Cj4gKwo+ICsJCURSTV9E RUJVR19LTVMoIlFHViAlZDogRENMSz0lZCB0UlA9JWQgdFJEUFJFPSVkIHRSQVM9JWQgdFJDRD0l ZCB0UkM9JWRcbiIsCj4gKwkJCSAgICAgIGksIHNwLT5kY2xrLCBzcC0+dF9ycCwgc3AtPnRfcmRw cmUsIHNwLT50X3JhcywKPiArCQkJICAgICAgc3AtPnRfcmNkLCBzcC0+dF9yYyk7Cj4gKwl9Cj4g Kwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgaWNsX2NhbGNfYncoaW50IGRj bGssIGludCBudW0sIGludCBkZW4pCj4gK3sKPiArCS8qIG11bHRpcGxlcyBvZiAxNi42NjZNSHog KDEwMC82KSAqLwo+ICsJcmV0dXJuIERJVl9ST1VORF9DTE9TRVNUKG51bSAqIGRjbGsgKiAxMDAs IGRlbiAqIDYpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGljbF9zYWd2X21heF9kY2xrKGNvbnN0 IHN0cnVjdCBpbnRlbF9zYWd2X2luZm8gKnNpKQo+ICt7Cj4gKwl1MTYgZGNsayA9IDA7Cj4gKwlp bnQgaTsKPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgc2ktPm51bV9wb2ludHM7IGkrKykKPiArCQlk Y2xrID0gbWF4KGRjbGssIHNpLT5wb2ludHNbaV0uZGNsayk7Cj4gKwo+ICsJcmV0dXJuIGRjbGs7 Cj4gK30KPiArCj4gK3N0cnVjdCBpbnRlbF9zYV9pbmZvIHsKPiArCXU4IGRlYnVyc3QsIG1wYWdl c2l6ZSwgZGVwcm9nYndsaW1pdCwgZGlzcGxheXJ0aWRzOwo+ICt9Owo+ICsKPiArc3RhdGljIGNv bnN0IHN0cnVjdCBpbnRlbF9zYV9pbmZvIGljbF9zYV9pbmZvID0gewo+ICsJLmRlYnVyc3QgPSA4 LAo+ICsJLm1wYWdlc2l6ZSA9IDE2LAo+ICsJLmRlcHJvZ2J3bGltaXQgPSAyNSwgLyogR0IvcyAq Lwo+ICsJLmRpc3BsYXlydGlkcyA9IDEyOCwKPiArfTsKPiArCj4gK3N0YXRpYyBpbnQgaWNsX2dl dF9id19pbmZvKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiArewo+ICsJc3Ry dWN0IGludGVsX3NhZ3ZfaW5mbyBzaSA9IHt9Owo+ICsJY29uc3Qgc3RydWN0IGludGVsX3NhX2lu Zm8gKnNhID0gJmljbF9zYV9pbmZvOwo+ICsJYm9vbCBpc195X3RpbGUgPSB0cnVlOyAvKiBhc3N1 bWUgeSB0aWxlIG1heSBiZSB1c2VkICovCj4gKwlpbnQgbnVtX2NoYW5uZWxzOwo+ICsJaW50IGRl aW50ZXJsZWF2ZTsKPiArCWludCBpcHFkZXB0aCwgaXBxZGVwdGhwY2g7Cj4gKwlpbnQgZGNsa19t YXg7Cj4gKwlpbnQgbWF4ZGVidzsKPiArCWludCBpLCByZXQ7Cj4gKwo+ICsJcmV0ID0gaWNsX2dl dF9xZ3ZfcG9pbnRzKGRldl9wcml2LCAmc2kpOwo+ICsJaWYgKHJldCkKPiArCQlyZXR1cm4gcmV0 Owo+ICsJbnVtX2NoYW5uZWxzID0gc2kubnVtX2NoYW5uZWxzOwo+ICsKPiArCWRlaW50ZXJsZWF2 ZSA9IERJVl9ST1VORF9VUChudW1fY2hhbm5lbHMsIGlzX3lfdGlsZSA/IDQgOiAyKTsKPiArCWRj bGtfbWF4ID0gaWNsX3NhZ3ZfbWF4X2RjbGsoJnNpKTsKPiArCj4gKwlpcHFkZXB0aHBjaCA9IDE2 Owo+ICsKPiArCW1heGRlYncgPSBtaW4oc2EtPmRlcHJvZ2J3bGltaXQgKiAxMDAwLAo+ICsJCSAg ICAgIGljbF9jYWxjX2J3KGRjbGtfbWF4LCAxNiwgMSkgKiA2IC8gMTApOyAvKiA2MCUgKi8KPiAr CWlwcWRlcHRoID0gbWluKGlwcWRlcHRocGNoLCBzYS0+ZGlzcGxheXJ0aWRzIC8gbnVtX2NoYW5u ZWxzKTsKPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShkZXZfcHJpdi0+bWF4X2J3 KTsgaSsrKSB7Cj4gKwkJc3RydWN0IGludGVsX2J3X2luZm8gKmJpID0gJmRldl9wcml2LT5tYXhf YndbaV07Cj4gKwkJaW50IGNscGNoZ3JvdXA7Cj4gKwkJaW50IGo7Cj4gKwo+ICsJCWNscGNoZ3Jv dXAgPSAoc2EtPmRlYnVyc3QgKiBkZWludGVybGVhdmUgLyBudW1fY2hhbm5lbHMpIDw8IGk7Cj4g KwkJYmktPm51bV9wbGFuZXMgPSAoaXBxZGVwdGggLSBjbHBjaGdyb3VwKSAvIGNscGNoZ3JvdXAg KyAxOwo+ICsKPiArCQlmb3IgKGogPSAwOyBqIDwgc2kubnVtX3BvaW50czsgaisrKSB7Cj4gKwkJ CWNvbnN0IHN0cnVjdCBpbnRlbF9xZ3ZfcG9pbnQgKnNwID0gJnNpLnBvaW50c1tqXTsKPiArCQkJ aW50IGN0LCBidzsKPiArCj4gKwkJCS8qCj4gKwkJCSAqIE1heCByb3cgY3ljbGUgdGltZQo+ICsJ CQkgKgo+ICsJCQkgKiBGSVhNRSB3aGF0IGlzIHRoZSBsb2dpYyBiZWhpbmQgdGhlCj4gKwkJCSAq IGFzc3VtZWQgYnVyc3QgbGVuZ3RoPwo+ICsJCQkgKi8KPiArCQkJY3QgPSBtYXhfdChpbnQsIHNw LT50X3JjLCBzcC0+dF9ycCArIHNwLT50X3JjZCArCj4gKwkJCQkgICAoY2xwY2hncm91cCAtIDEp ICogc2kudF9ibCArIHNwLT50X3JkcHJlKTsKPiArCQkJYncgPSBpY2xfY2FsY19idyhzcC0+ZGNs aywgY2xwY2hncm91cCAqIDMyICogbnVtX2NoYW5uZWxzLCBjdCk7Cj4gKwo+ICsJCQliaS0+ZGVy YXRlZGJ3W2pdID0gbWluKG1heGRlYncsCj4gKwkJCQkJICAgICAgIGJ3ICogOSAvIDEwKTsgLyog OTAlICovCj4gKwo+ICsJCQlEUk1fREVCVUdfS01TKCJCVyVkIC8gUUdWICVkOiBudW1fcGxhbmVz PSVkIGRlcmF0ZWRidz0lZFxuIiwKPiArCQkJCSAgICAgIGksIGosIGJpLT5udW1fcGxhbmVzLCBi aS0+ZGVyYXRlZGJ3W2pdKTsKPiArCQl9Cj4gKwo+ICsJCWlmIChiaS0+bnVtX3BsYW5lcyA9PSAx KQo+ICsJCQlicmVhazsKPiArCX0KPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGlj IHVuc2lnbmVkIGludCBpY2xfbWF4X2J3KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKPiArCQkJICAgICAgIGludCBudW1fcGxhbmVzLCBpbnQgcWd2X3BvaW50KQo+ICt7Cj4gKwlp bnQgaTsKPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShkZXZfcHJpdi0+bWF4X2J3 KTsgaSsrKSB7Cj4gKwkJY29uc3Qgc3RydWN0IGludGVsX2J3X2luZm8gKmJpID0KPiArCQkJJmRl dl9wcml2LT5tYXhfYndbaV07Cj4gKwo+ICsJCWlmIChudW1fcGxhbmVzID49IGJpLT5udW1fcGxh bmVzKQo+ICsJCQlyZXR1cm4gYmktPmRlcmF0ZWRid1txZ3ZfcG9pbnRdOwo+ICsJfQo+ICsKPiAr CXJldHVybiAwOwo+ICt9Cj4gKwo+ICt1bnNpZ25lZCBpbnQgaW50ZWxfbWF4X2RhdGFfcmF0ZShz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gKwkJCQkgaW50IG51bV9wbGFuZXMp Cj4gK3sKPiArCWlmIChJU19JQ0VMQUtFKGRldl9wcml2KSkKPiArCQkvKgo+ICsJCSAqIEZJWE1F IHdpdGggU0FHViBkaXNhYmxlZCBtYXliZSB3ZSBjYW4gYXNzdW1lCj4gKwkJICogcG9pbnQgMSB3 aWxsIGFsd2F5cyBiZSB1c2VkPyBTZWVtcyB0byBtYXRjaAo+ICsJCSAqIHRoZSBiZWhhdmlvdXIg b2JzZXJ2ZWQgaW4gdGhlIHdpbGQuCj4gKwkJICovCj4gKwkJcmV0dXJuIG1pbjMoaWNsX21heF9i dyhkZXZfcHJpdiwgbnVtX3BsYW5lcywgMCksCj4gKwkJCSAgICBpY2xfbWF4X2J3KGRldl9wcml2 LCBudW1fcGxhbmVzLCAxKSwKPiArCQkJICAgIGljbF9tYXhfYncoZGV2X3ByaXYsIG51bV9wbGFu ZXMsIDIpKTsKPiArCWVsc2UKPiArCQlyZXR1cm4gVUlOVF9NQVg7Cj4gK30KPiArCj4gIHN0YXRp YyB2b2lkCj4gIGludGVsX2dldF9kcmFtX2luZm8oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KQo+ICB7Cj4gQEAgLTE2NTUsNiArMTg4Miw4IEBAIHN0YXRpYyBpbnQgaTkxNV9kcml2 ZXJfaW5pdF9odyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAkgKi8KPiAg CWludGVsX2dldF9kcmFtX2luZm8oZGV2X3ByaXYpOwo+ICAKPiArCWlmIChJTlRFTF9HRU4oZGV2 X3ByaXYpID49IDExKQo+ICsJCWljbF9nZXRfYndfaW5mbyhkZXZfcHJpdik7Cj4gIAo+ICAJcmV0 dXJuIDA7Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5o IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IGluZGV4IDY0ZmEzNTNhNjJiYi4u ZDFiOWMzZmU1ODAyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gQEAgLTU0LDYgKzU0 LDcgQEAKPiAgI2luY2x1ZGUgPGRybS9kcm1fY2FjaGUuaD4KPiAgI2luY2x1ZGUgPGRybS9kcm1f dXRpbC5oPgo+ICAjaW5jbHVkZSA8ZHJtL2RybV9kc2MuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1f YXRvbWljLmg+Cj4gICNpbmNsdWRlIDxkcm0vZHJtX2Nvbm5lY3Rvci5oPgo+ICAjaW5jbHVkZSA8 ZHJtL2k5MTVfbWVpX2hkY3BfaW50ZXJmYWNlLmg+Cj4gIAo+IEBAIC0xODM3LDYgKzE4MzgsMTMg QEAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgewo+ICAJCX0gdHlwZTsKPiAgCX0gZHJhbV9pbmZv Owo+ICAKPiArCXN0cnVjdCBpbnRlbF9id19pbmZvIHsKPiArCQlpbnQgbnVtX3BsYW5lczsKPiAr CQlpbnQgZGVyYXRlZGJ3WzNdOwo+ICsJfSBtYXhfYndbNl07Cj4gKwo+ICsJc3RydWN0IGRybV9w cml2YXRlX29iaiBid19vYmo7Cj4gKwo+ICAJc3RydWN0IGk5MTVfcnVudGltZV9wbSBydW50aW1l X3BtOwo+ICAKPiAgCXN0cnVjdCB7Cj4gQEAgLTI3MDYsNiArMjcxNCw4IEBAIGV4dGVybiB1bnNp Z25lZCBsb25nIGk5MTVfbWNoX3ZhbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp Owo+ICBleHRlcm4gdW5zaWduZWQgbG9uZyBpOTE1X2dmeF92YWwoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KTsKPiAgZXh0ZXJuIHZvaWQgaTkxNV91cGRhdGVfZ2Z4X3ZhbChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICBpbnQgdmx2X2ZvcmNlX2dmeF9jbG9j ayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGJvb2wgb24pOwo+ICt1bnNpZ25l ZCBpbnQgaW50ZWxfbWF4X2RhdGFfcmF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsCj4gKwkJCQkgaW50IG51bV9wbGFuZXMpOwo+ICAKPiAgdTMyIGludGVsX2NhbGN1bGF0ZV9t Y3Jfc19zc19zZWxlY3Qoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiAgCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmggYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gaW5kZXggZTk3YzQ3ZmNhNjQ1Li4zOTkzNjZhNDE1MjQg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiBAQCAtODc3NCw2ICs4Nzc0LDkgQEAgZW51 bSB7Cj4gICNkZWZpbmUgICBHRU42X1BDT0RFX1dSSVRFX01JTl9GUkVRX1RBQkxFCTB4OAo+ICAj ZGVmaW5lICAgR0VONl9QQ09ERV9SRUFEX01JTl9GUkVRX1RBQkxFCTB4OQo+ICAjZGVmaW5lICAg R0VONl9SRUFEX09DX1BBUkFNUwkJCTB4Ywo+ICsjZGVmaW5lICAgSUNMX1BDT0RFX01FTV9TVUJT WVNZU1RFTV9JTkZPCTB4ZAo+ICsjZGVmaW5lICAgICBJQ0xfUENPREVfTUVNX1NTX1JFQURfR0xP QkFMX0lORk8JKDB4MCA8PCA4KQo+ICsjZGVmaW5lICAgICBJQ0xfUENPREVfTUVNX1NTX1JFQURf UUdWX1BPSU5UX0lORk8ocG9pbnQpCSgoKHBvaW50KSA8PCAxNikgfCAoMHgxIDw8IDgpKQo+ICAj ZGVmaW5lICAgR0VONl9QQ09ERV9SRUFEX0RfQ09NUAkJMHgxMAo+ICAjZGVmaW5lICAgR0VONl9Q Q09ERV9XUklURV9EX0NPTVAJCTB4MTEKPiAgI2RlZmluZSAgIEhTV19QQ09ERV9ERV9XUklURV9G UkVRX1JFUQkJMHgxNwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9h dG9taWNfcGxhbmUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pY19wbGFuZS5j Cj4gaW5kZXggZDExNjgxZDcxYWRkLi5mMTQyYzVjMjJkN2UgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljX3BsYW5lLmMKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9hdG9taWNfcGxhbmUuYwo+IEBAIC0xMTQsNiArMTE0LDIyIEBAIGludGVs X3BsYW5lX2Rlc3Ryb3lfc3RhdGUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gIAlkcm1fYXRv bWljX2hlbHBlcl9wbGFuZV9kZXN0cm95X3N0YXRlKHBsYW5lLCBzdGF0ZSk7Cj4gIH0KPiAgCj4g K3Vuc2lnbmVkIGludCBpbnRlbF9wbGFuZV9kYXRhX3JhdGUoY29uc3Qgc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gKwkJCQkgICBjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVf c3RhdGUgKnBsYW5lX3N0YXRlKQo+ICt7Cj4gKwljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVy ICpmYiA9IHBsYW5lX3N0YXRlLT5iYXNlLmZiOwo+ICsJdW5zaWduZWQgaW50IGNwcCA9IDA7Cj4g KwlpbnQgaTsKPiArCj4gKwlpZiAoIXBsYW5lX3N0YXRlLT5iYXNlLnZpc2libGUpCj4gKwkJcmV0 dXJuIDA7Cj4gKwo+ICsJZm9yIChpID0gMDsgaSA8IGZiLT5mb3JtYXQtPm51bV9wbGFuZXM7IGkr KykKPiArCQljcHAgKz0gZmItPmZvcm1hdC0+Y3BwW2ldOwo+ICsKPiArCXJldHVybiBjcHAgKiBj cnRjX3N0YXRlLT5waXhlbF9yYXRlOwo+ICt9Cj4gKwo+ICBpbnQgaW50ZWxfcGxhbmVfYXRvbWlj X2NoZWNrX3dpdGhfc3RhdGUoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRj X3N0YXRlLAo+ICAJCQkJCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpuZXdfY3J0Y19zdGF0ZSwK PiAgCQkJCQljb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKm9sZF9wbGFuZV9zdGF0ZSwK PiBAQCAtMTI1LDYgKzE0MSw3IEBAIGludCBpbnRlbF9wbGFuZV9hdG9taWNfY2hlY2tfd2l0aF9z dGF0ZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNfCj4gIAluZXdfY3J0 Y19zdGF0ZS0+YWN0aXZlX3BsYW5lcyAmPSB+QklUKHBsYW5lLT5pZCk7Cj4gIAluZXdfY3J0Y19z dGF0ZS0+bnYxMl9wbGFuZXMgJj0gfkJJVChwbGFuZS0+aWQpOwo+ICAJbmV3X2NydGNfc3RhdGUt PmM4X3BsYW5lcyAmPSB+QklUKHBsYW5lLT5pZCk7Cj4gKwluZXdfY3J0Y19zdGF0ZS0+ZGF0YV9y YXRlW3BsYW5lLT5pZF0gPSAwOwo+ICAJbmV3X3BsYW5lX3N0YXRlLT5iYXNlLnZpc2libGUgPSBm YWxzZTsKPiAgCj4gIAlpZiAoIW5ld19wbGFuZV9zdGF0ZS0+YmFzZS5jcnRjICYmICFvbGRfcGxh bmVfc3RhdGUtPmJhc2UuY3J0YykKPiBAQCAtMTQ5LDYgKzE2Niw5IEBAIGludCBpbnRlbF9wbGFu ZV9hdG9taWNfY2hlY2tfd2l0aF9zdGF0ZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq b2xkX2NydGNfCj4gIAlpZiAobmV3X3BsYW5lX3N0YXRlLT5iYXNlLnZpc2libGUgfHwgb2xkX3Bs YW5lX3N0YXRlLT5iYXNlLnZpc2libGUpCj4gIAkJbmV3X2NydGNfc3RhdGUtPnVwZGF0ZV9wbGFu ZXMgfD0gQklUKHBsYW5lLT5pZCk7Cj4gIAo+ICsJbmV3X2NydGNfc3RhdGUtPmRhdGFfcmF0ZVtw bGFuZS0+aWRdID0KPiArCQlpbnRlbF9wbGFuZV9kYXRhX3JhdGUobmV3X2NydGNfc3RhdGUsIG5l d19wbGFuZV9zdGF0ZSk7Cj4gKwo+ICAJcmV0dXJuIGludGVsX3BsYW5lX2F0b21pY19jYWxjX2No YW5nZXMob2xkX2NydGNfc3RhdGUsCj4gIAkJCQkJICAgICAgICZuZXdfY3J0Y19zdGF0ZS0+YmFz ZSwKPiAgCQkJCQkgICAgICAgb2xkX3BsYW5lX3N0YXRlLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9taWNfcGxhbmUuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2F0b21pY19wbGFuZS5oCj4gaW5kZXggMTQ2Nzg2MjA0NDBmLi4wYTk2NTEzNzZkMGUg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljX3BsYW5lLmgK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9taWNfcGxhbmUuaAo+IEBAIC0x NSw2ICsxNSw4IEBAIHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZTsKPiAgCj4gIGV4dGVybiBjb25z dCBzdHJ1Y3QgZHJtX3BsYW5lX2hlbHBlcl9mdW5jcyBpbnRlbF9wbGFuZV9oZWxwZXJfZnVuY3M7 Cj4gIAo+ICt1bnNpZ25lZCBpbnQgaW50ZWxfcGxhbmVfZGF0YV9yYXRlKGNvbnN0IHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICsJCQkJICAgY29uc3Qgc3RydWN0IGludGVs X3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSk7Cj4gIHZvaWQgaW50ZWxfdXBkYXRlX3BsYW5lKHN0 cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUsCj4gIAkJCWNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlLAo+ICAJCQljb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBs YW5lX3N0YXRlKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYncu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2J3LmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0 NAo+IGluZGV4IDAwMDAwMDAwMDAwMC4uMzA0YmY4N2YwYTJlCj4gLS0tIC9kZXYvbnVsbAo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2J3LmMKPiBAQCAtMCwwICsxLDE4MSBAQAo+ ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUCj4gKy8qCj4gKyAqIENvcHlyaWdodCDC qSAyMDE5IEludGVsIENvcnBvcmF0aW9uCj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgPGRybS9kcm1f YXRvbWljX3N0YXRlX2hlbHBlci5oPgo+ICsKPiArI2luY2x1ZGUgImludGVsX2J3LmgiCj4gKyNp bmNsdWRlICJpbnRlbF9kcnYuaCIKPiArCj4gK3N0YXRpYyB1bnNpZ25lZCBpbnQgaW50ZWxfYndf Y3J0Y19udW1fYWN0aXZlX3BsYW5lcyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0 Y19zdGF0ZSkKPiArewo+ICsJLyoKPiArCSAqIFdlIGFzc3VtZSBjdXJzb3JzIGFyZSBzbWFsbCBl bm91Z2gKPiArCSAqIHRvIG5vdCBub3QgY2F1c2UgYmFuZHdpZHRoIHByb2JsZW1zLgo+ICsJICov Cj4gKwlyZXR1cm4gaHdlaWdodDgoY3J0Y19zdGF0ZS0+YWN0aXZlX3BsYW5lcyAmIH5CSVQoUExB TkVfQ1VSU09SKSk7Cj4gK30KPiArCj4gK3N0YXRpYyB1bnNpZ25lZCBpbnQgaW50ZWxfYndfY3J0 Y19kYXRhX3JhdGUoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4g K3sKPiArCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRl LT5iYXNlLmNydGMpOwo+ICsJdW5zaWduZWQgaW50IGRhdGFfcmF0ZSA9IDA7Cj4gKwllbnVtIHBs YW5lX2lkIHBsYW5lX2lkOwo+ICsKPiArCWZvcl9lYWNoX3BsYW5lX2lkX29uX2NydGMoY3J0Yywg cGxhbmVfaWQpIHsKPiArCQkvKgo+ICsJCSAqIFdlIGFzc3VtZSBjdXJzb3JzIGFyZSBzbWFsbCBl bm91Z2gKPiArCQkgKiB0byBub3Qgbm90IGNhdXNlIGJhbmR3aWR0aCBwcm9ibGVtcy4KPiArCQkg Ki8KPiArCQlpZiAocGxhbmVfaWQgPT0gUExBTkVfQ1VSU09SKQo+ICsJCQljb250aW51ZTsKPiAr Cj4gKwkJZGF0YV9yYXRlICs9IGNydGNfc3RhdGUtPmRhdGFfcmF0ZVtwbGFuZV9pZF07Cj4gKwl9 Cj4gKwo+ICsJcmV0dXJuIGRhdGFfcmF0ZTsKPiArfQo+ICsKPiArdm9pZCBpbnRlbF9id19jcnRj X3VwZGF0ZShzdHJ1Y3QgaW50ZWxfYndfc3RhdGUgKmJ3X3N0YXRlLAo+ICsJCQkgIGNvbnN0IHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+ICt7Cj4gKwlzdHJ1Y3QgaW50ZWxf Y3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+YmFzZS5jcnRjKTsKPiArCj4g Kwlid19zdGF0ZS0+ZGF0YV9yYXRlW2NydGMtPnBpcGVdID0KPiArCQlpbnRlbF9id19jcnRjX2Rh dGFfcmF0ZShjcnRjX3N0YXRlKTsKPiArCWJ3X3N0YXRlLT5udW1fYWN0aXZlX3BsYW5lc1tjcnRj LT5waXBlXSA9Cj4gKwkJaW50ZWxfYndfY3J0Y19udW1fYWN0aXZlX3BsYW5lcyhjcnRjX3N0YXRl KTsKPiArCj4gKwlEUk1fREVCVUdfS01TKCJwaXBlICVjIGRhdGEgcmF0ZSAldSBudW0gYWN0aXZl IHBsYW5lcyAldVxuIiwKPiArCQkgICAgICBwaXBlX25hbWUoY3J0Yy0+cGlwZSksCj4gKwkJICAg ICAgYndfc3RhdGUtPmRhdGFfcmF0ZVtjcnRjLT5waXBlXSwKPiArCQkgICAgICBid19zdGF0ZS0+ bnVtX2FjdGl2ZV9wbGFuZXNbY3J0Yy0+cGlwZV0pOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdW5zaWdu ZWQgaW50IGludGVsX2J3X251bV9hY3RpdmVfcGxhbmVzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKPiArCQkJCQkgICAgICAgY29uc3Qgc3RydWN0IGludGVsX2J3X3N0YXRlICpi d19zdGF0ZSkKPiArewo+ICsJdW5zaWduZWQgaW50IG51bV9hY3RpdmVfcGxhbmVzID0gMDsKPiAr CWVudW0gcGlwZSBwaXBlOwo+ICsKPiArCWZvcl9lYWNoX3BpcGUoZGV2X3ByaXYsIHBpcGUpCj4g KwkJbnVtX2FjdGl2ZV9wbGFuZXMgKz0gYndfc3RhdGUtPm51bV9hY3RpdmVfcGxhbmVzW3BpcGVd Owo+ICsKPiArCXJldHVybiBudW1fYWN0aXZlX3BsYW5lczsKPiArfQo+ICsKPiArc3RhdGljIHVu c2lnbmVkIGludCBpbnRlbF9id19kYXRhX3JhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAo+ICsJCQkJICAgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9id19zdGF0ZSAqYndfc3Rh dGUpCj4gK3sKPiArCXVuc2lnbmVkIGludCBkYXRhX3JhdGUgPSAwOwo+ICsJZW51bSBwaXBlIHBp cGU7Cj4gKwo+ICsJZm9yX2VhY2hfcGlwZShkZXZfcHJpdiwgcGlwZSkKPiArCQlkYXRhX3JhdGUg Kz0gYndfc3RhdGUtPmRhdGFfcmF0ZVtwaXBlXTsKPiArCj4gKwlyZXR1cm4gZGF0YV9yYXRlOwo+ ICt9Cj4gKwo+ICtpbnQgaW50ZWxfYndfYXRvbWljX2NoZWNrKHN0cnVjdCBpbnRlbF9hdG9taWNf c3RhdGUgKnN0YXRlKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSB0b19pOTE1KHN0YXRlLT5iYXNlLmRldik7Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq bmV3X2NydGNfc3RhdGUsICpvbGRfY3J0Y19zdGF0ZTsKPiArCXN0cnVjdCBpbnRlbF9id19zdGF0 ZSAqYndfc3RhdGUgPSBOVUxMOwo+ICsJdW5zaWduZWQgaW50IGRhdGFfcmF0ZSwgbWF4X2RhdGFf cmF0ZTsKPiArCXVuc2lnbmVkIGludCBudW1fYWN0aXZlX3BsYW5lczsKPiArCXN0cnVjdCBpbnRl bF9jcnRjICpjcnRjOwo+ICsJaW50IGk7Cj4gKwo+ICsJLyogRklYTUUgZWFybGllciBnZW5zIG5l ZWQgc29tZSBjaGVja3MgdG9vICovCj4gKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDExKQo+ ICsJCXJldHVybiAwOwo+ICsKPiArCWZvcl9lYWNoX29sZG5ld19pbnRlbF9jcnRjX2luX3N0YXRl KHN0YXRlLCBjcnRjLCBvbGRfY3J0Y19zdGF0ZSwKPiArCQkJCQkgICAgbmV3X2NydGNfc3RhdGUs IGkpIHsKPiArCQl1bnNpZ25lZCBpbnQgb2xkX2RhdGFfcmF0ZSA9Cj4gKwkJCWludGVsX2J3X2Ny dGNfZGF0YV9yYXRlKG9sZF9jcnRjX3N0YXRlKTsKPiArCQl1bnNpZ25lZCBpbnQgbmV3X2RhdGFf cmF0ZSA9Cj4gKwkJCWludGVsX2J3X2NydGNfZGF0YV9yYXRlKG5ld19jcnRjX3N0YXRlKTsKPiAr CQl1bnNpZ25lZCBpbnQgb2xkX2FjdGl2ZV9wbGFuZXMgPQo+ICsJCQlpbnRlbF9id19jcnRjX251 bV9hY3RpdmVfcGxhbmVzKG9sZF9jcnRjX3N0YXRlKTsKPiArCQl1bnNpZ25lZCBpbnQgbmV3X2Fj dGl2ZV9wbGFuZXMgPQo+ICsJCQlpbnRlbF9id19jcnRjX251bV9hY3RpdmVfcGxhbmVzKG5ld19j cnRjX3N0YXRlKTsKPiArCj4gKwkJLyoKPiArCQkgKiBBdm9pZCBsb2NraW5nIHRoZSBidyBzdGF0 ZSB3aGVuCj4gKwkJICogbm90aGluZyBzaWduaWZpY2FudCBoYXMgY2hhbmdlZC4KPiArCQkgKi8K PiArCQlpZiAob2xkX2RhdGFfcmF0ZSA9PSBuZXdfZGF0YV9yYXRlICYmCj4gKwkJICAgIG9sZF9h Y3RpdmVfcGxhbmVzID09IG5ld19hY3RpdmVfcGxhbmVzKQo+ICsJCQljb250aW51ZTsKPiArCj4g KwkJYndfc3RhdGUgID0gaW50ZWxfYXRvbWljX2dldF9id19zdGF0ZShzdGF0ZSk7Cj4gKwkJaWYg KElTX0VSUihid19zdGF0ZSkpCj4gKwkJCXJldHVybiBQVFJfRVJSKGJ3X3N0YXRlKTsKPiArCj4g KwkJYndfc3RhdGUtPmRhdGFfcmF0ZVtjcnRjLT5waXBlXSA9IG5ld19kYXRhX3JhdGU7Cj4gKwkJ Yndfc3RhdGUtPm51bV9hY3RpdmVfcGxhbmVzW2NydGMtPnBpcGVdID0gbmV3X2FjdGl2ZV9wbGFu ZXM7Cj4gKwo+ICsJCURSTV9ERUJVR19LTVMoInBpcGUgJWMgZGF0YSByYXRlICV1IG51bSBhY3Rp dmUgcGxhbmVzICV1XG4iLAo+ICsJCQkgICAgICBwaXBlX25hbWUoY3J0Yy0+cGlwZSksCj4gKwkJ CSAgICAgIGJ3X3N0YXRlLT5kYXRhX3JhdGVbY3J0Yy0+cGlwZV0sCj4gKwkJCSAgICAgIGJ3X3N0 YXRlLT5udW1fYWN0aXZlX3BsYW5lc1tjcnRjLT5waXBlXSk7Cj4gKwl9Cj4gKwo+ICsJaWYgKCFi d19zdGF0ZSkKPiArCQlyZXR1cm4gMDsKPiArCj4gKwlkYXRhX3JhdGUgPSBpbnRlbF9id19kYXRh X3JhdGUoZGV2X3ByaXYsIGJ3X3N0YXRlKTsKPiArCW51bV9hY3RpdmVfcGxhbmVzID0gaW50ZWxf YndfbnVtX2FjdGl2ZV9wbGFuZXMoZGV2X3ByaXYsIGJ3X3N0YXRlKTsKPiArCj4gKwltYXhfZGF0 YV9yYXRlID0gaW50ZWxfbWF4X2RhdGFfcmF0ZShkZXZfcHJpdiwgbnVtX2FjdGl2ZV9wbGFuZXMp Owo+ICsKPiArCWRhdGFfcmF0ZSA9IERJVl9ST1VORF9VUChkYXRhX3JhdGUsIDEwMDApOwo+ICsK PiArCWlmIChkYXRhX3JhdGUgPiBtYXhfZGF0YV9yYXRlKSB7Cj4gKwkJRFJNX0RFQlVHX0tNUygi QmFuZHdpZHRoICV1IE1CL3MgZXhjZWVkcyBtYXggYXZhaWxhYmxlICVkIE1CL3MgKCVkIGFjdGl2 ZSBwbGFuZXMpXG4iLAo+ICsJCQkgICAgICBkYXRhX3JhdGUsIG1heF9kYXRhX3JhdGUsIG51bV9h Y3RpdmVfcGxhbmVzKTsKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCX0KPiArCj4gKwlyZXR1cm4g MDsKPiArfQo+ICsKPiArc3RhdGljIHN0cnVjdCBkcm1fcHJpdmF0ZV9zdGF0ZSAqaW50ZWxfYndf ZHVwbGljYXRlX3N0YXRlKHN0cnVjdCBkcm1fcHJpdmF0ZV9vYmogKm9iaikKPiArewo+ICsJc3Ry dWN0IGludGVsX2J3X3N0YXRlICpzdGF0ZTsKPiArCj4gKwlzdGF0ZSA9IGttZW1kdXAob2JqLT5z dGF0ZSwgc2l6ZW9mKCpzdGF0ZSksIEdGUF9LRVJORUwpOwo+ICsJaWYgKCFzdGF0ZSkKPiArCQly ZXR1cm4gTlVMTDsKPiArCj4gKwlfX2RybV9hdG9taWNfaGVscGVyX3ByaXZhdGVfb2JqX2R1cGxp Y2F0ZV9zdGF0ZShvYmosICZzdGF0ZS0+YmFzZSk7Cj4gKwo+ICsJcmV0dXJuICZzdGF0ZS0+YmFz ZTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgaW50ZWxfYndfZGVzdHJveV9zdGF0ZShzdHJ1Y3Qg ZHJtX3ByaXZhdGVfb2JqICpvYmosCj4gKwkJCQkgICBzdHJ1Y3QgZHJtX3ByaXZhdGVfc3RhdGUg KnN0YXRlKQo+ICt7Cj4gKwlrZnJlZShzdGF0ZSk7Cj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCBz dHJ1Y3QgZHJtX3ByaXZhdGVfc3RhdGVfZnVuY3MgaW50ZWxfYndfZnVuY3MgPSB7Cj4gKwkuYXRv bWljX2R1cGxpY2F0ZV9zdGF0ZSA9IGludGVsX2J3X2R1cGxpY2F0ZV9zdGF0ZSwKPiArCS5hdG9t aWNfZGVzdHJveV9zdGF0ZSA9IGludGVsX2J3X2Rlc3Ryb3lfc3RhdGUsCj4gK307Cj4gKwo+ICtp bnQgaW50ZWxfYndfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gK3sK PiArCXN0cnVjdCBpbnRlbF9id19zdGF0ZSAqc3RhdGU7Cj4gKwo+ICsJc3RhdGUgPSBremFsbG9j KHNpemVvZigqc3RhdGUpLCBHRlBfS0VSTkVMKTsKPiArCWlmICghc3RhdGUpCj4gKwkJcmV0dXJu IC1FTk9NRU07Cj4gKwo+ICsJZHJtX2F0b21pY19wcml2YXRlX29ial9pbml0KCZkZXZfcHJpdi0+ ZHJtLCAmZGV2X3ByaXYtPmJ3X29iaiwKPiArCQkJCSAgICAmc3RhdGUtPmJhc2UsICZpbnRlbF9i d19mdW5jcyk7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfYncuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2J3LmgK PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAwMC4uYzE0MjcyY2E1YjU5 Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2J3LmgK PiBAQCAtMCwwICsxLDQ2IEBACj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQgKi8K PiArLyoKPiArICogQ29weXJpZ2h0IMKpIDIwMTkgSW50ZWwgQ29ycG9yYXRpb24KPiArICovCj4g Kwo+ICsjaWZuZGVmIF9fSU5URUxfQldfSF9fCj4gKyNkZWZpbmUgX19JTlRFTF9CV19IX18KPiAr Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX2F0b21pYy5oPgo+ICsKPiArI2luY2x1ZGUgImk5MTVfZHJ2 LmgiCj4gKyNpbmNsdWRlICJpbnRlbF9kaXNwbGF5LmgiCj4gKwo+ICtzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZTsKPiArc3RydWN0IGludGVsX2F0b21pY19zdGF0ZTsKPiArc3RydWN0IGludGVsX2Ny dGNfc3RhdGU7Cj4gKwo+ICtzdHJ1Y3QgaW50ZWxfYndfc3RhdGUgewo+ICsJc3RydWN0IGRybV9w cml2YXRlX3N0YXRlIGJhc2U7Cj4gKwo+ICsJdW5zaWduZWQgaW50IGRhdGFfcmF0ZVtJOTE1X01B WF9QSVBFU107Cj4gKwl1OCBudW1fYWN0aXZlX3BsYW5lc1tJOTE1X01BWF9QSVBFU107Cj4gK307 Cj4gKwo+ICsjZGVmaW5lIHRvX2ludGVsX2J3X3N0YXRlKHgpIGNvbnRhaW5lcl9vZigoeCksIHN0 cnVjdCBpbnRlbF9id19zdGF0ZSwgYmFzZSkKPiArCj4gK3N0YXRpYyBpbmxpbmUgc3RydWN0IGlu dGVsX2J3X3N0YXRlICoKPiAraW50ZWxfYXRvbWljX2dldF9id19zdGF0ZShzdHJ1Y3QgaW50ZWxf YXRvbWljX3N0YXRlICpzdGF0ZSkKPiArewo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gdG9faTkxNShzdGF0ZS0+YmFzZS5kZXYpOwo+ICsJc3RydWN0IGRybV9wcml2YXRl X3N0YXRlICpid19zdGF0ZTsKPiArCj4gKwlid19zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X3ByaXZh dGVfb2JqX3N0YXRlKCZzdGF0ZS0+YmFzZSwKPiArCQkJCQkJICAgICZkZXZfcHJpdi0+Yndfb2Jq KTsKPiArCWlmIChJU19FUlIoYndfc3RhdGUpKQo+ICsJCXJldHVybiBFUlJfQ0FTVChid19zdGF0 ZSk7Cj4gKwo+ICsJcmV0dXJuIHRvX2ludGVsX2J3X3N0YXRlKGJ3X3N0YXRlKTsKPiArfQo+ICsK PiAraW50IGludGVsX2J3X2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsK PiAraW50IGludGVsX2J3X2F0b21pY19jaGVjayhzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpz dGF0ZSk7Cj4gK3ZvaWQgaW50ZWxfYndfY3J0Y191cGRhdGUoc3RydWN0IGludGVsX2J3X3N0YXRl ICpid19zdGF0ZSwKPiArCQkJICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19z dGF0ZSk7Cj4gKwo+ICsjZW5kaWYgLyogX19JTlRFTF9CV19IX18gKi8KPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZGlzcGxheS5jCj4gaW5kZXggZDgxZWM4MGUzNGY2Li5hOTU1ODQwYjczY2IgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gQEAgLTUwLDYgKzUwLDcgQEAK PiAgI2luY2x1ZGUgImludGVsX2FjcGkuaCIKPiAgI2luY2x1ZGUgImludGVsX2F0b21pYy5oIgo+ ICAjaW5jbHVkZSAiaW50ZWxfYXRvbWljX3BsYW5lLmgiCj4gKyNpbmNsdWRlICJpbnRlbF9idy5o Igo+ICAjaW5jbHVkZSAiaW50ZWxfY29sb3IuaCIKPiAgI2luY2x1ZGUgImludGVsX2NkY2xrLmgi Cj4gICNpbmNsdWRlICJpbnRlbF9jcnQuaCIKPiBAQCAtMjg2Myw2ICsyODY0LDcgQEAgc3RhdGlj IHZvaWQgaW50ZWxfcGxhbmVfZGlzYWJsZV9ub2F0b21pYyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0 YywKPiAgCj4gIAlpbnRlbF9zZXRfcGxhbmVfdmlzaWJsZShjcnRjX3N0YXRlLCBwbGFuZV9zdGF0 ZSwgZmFsc2UpOwo+ICAJZml4dXBfYWN0aXZlX3BsYW5lcyhjcnRjX3N0YXRlKTsKPiArCWNydGNf c3RhdGUtPmRhdGFfcmF0ZVtwbGFuZS0+aWRdID0gMDsKPiAgCj4gIAlpZiAocGxhbmUtPmlkID09 IFBMQU5FX1BSSU1BUlkpCj4gIAkJaW50ZWxfcHJlX2Rpc2FibGVfcHJpbWFyeV9ub2F0b21pYygm Y3J0Yy0+YmFzZSk7Cj4gQEAgLTY1OTAsNiArNjU5Miw4IEBAIHN0YXRpYyB2b2lkIGludGVsX2Ny dGNfZGlzYWJsZV9ub2F0b21pYyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gIAlzdHJ1Y3QgaW50 ZWxfZW5jb2RlciAqZW5jb2RlcjsKPiAgCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0g dG9faW50ZWxfY3J0YyhjcnRjKTsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IHRvX2k5MTUoY3J0Yy0+ZGV2KTsKPiArCXN0cnVjdCBpbnRlbF9id19zdGF0ZSAqYndfc3Rh dGUgPQo+ICsJCXRvX2ludGVsX2J3X3N0YXRlKGRldl9wcml2LT5id19vYmouc3RhdGUpOwo+ICAJ ZW51bSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2RvbWFpbiBkb21haW47Cj4gIAlzdHJ1Y3QgaW50ZWxf cGxhbmUgKnBsYW5lOwo+ICAJdTY0IGRvbWFpbnM7Cj4gQEAgLTY2NTIsNiArNjY1Niw5IEBAIHN0 YXRpYyB2b2lkIGludGVsX2NydGNfZGlzYWJsZV9ub2F0b21pYyhzdHJ1Y3QgZHJtX2NydGMgKmNy dGMsCj4gIAlkZXZfcHJpdi0+YWN0aXZlX2NydGNzICY9IH4oMSA8PCBpbnRlbF9jcnRjLT5waXBl KTsKPiAgCWRldl9wcml2LT5taW5fY2RjbGtbaW50ZWxfY3J0Yy0+cGlwZV0gPSAwOwo+ICAJZGV2 X3ByaXYtPm1pbl92b2x0YWdlX2xldmVsW2ludGVsX2NydGMtPnBpcGVdID0gMDsKPiArCj4gKwli d19zdGF0ZS0+ZGF0YV9yYXRlW2ludGVsX2NydGMtPnBpcGVdID0gMDsKPiArCWJ3X3N0YXRlLT5u dW1fYWN0aXZlX3BsYW5lc1tpbnRlbF9jcnRjLT5waXBlXSA9IDA7Cj4gIH0KPiAgCj4gIC8qCj4g QEAgLTExMTc2LDYgKzExMTgzLDcgQEAgaW50IGludGVsX3BsYW5lX2F0b21pY19jYWxjX2NoYW5n ZXMoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXQKPiAgCWlmICgh aXNfY3J0Y19lbmFibGVkKSB7Cj4gIAkJcGxhbmVfc3RhdGUtPnZpc2libGUgPSB2aXNpYmxlID0g ZmFsc2U7Cj4gIAkJdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjX3N0YXRlKS0+YWN0aXZlX3BsYW5l cyAmPSB+QklUKHBsYW5lLT5pZCk7Cj4gKwkJdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjX3N0YXRl KS0+ZGF0YV9yYXRlW3BsYW5lLT5pZF0gPSAwOwo+ICAJfQo+ICAKPiAgCWlmICghd2FzX3Zpc2li bGUgJiYgIXZpc2libGUpCj4gQEAgLTEzMjk2LDcgKzEzMzA0LDE1IEBAIHN0YXRpYyBpbnQgaW50 ZWxfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAkJcmV0dXJuIHJldDsK PiAgCj4gIAlpbnRlbF9mYmNfY2hvb3NlX2NydGMoZGV2X3ByaXYsIGludGVsX3N0YXRlKTsKPiAt CXJldHVybiBjYWxjX3dhdGVybWFya19kYXRhKGludGVsX3N0YXRlKTsKPiArCXJldCA9IGNhbGNf d2F0ZXJtYXJrX2RhdGEoaW50ZWxfc3RhdGUpOwo+ICsJaWYgKHJldCkKPiArCQlyZXR1cm4gcmV0 Owo+ICsKPiArCXJldCA9IGludGVsX2J3X2F0b21pY19jaGVjayhpbnRlbF9zdGF0ZSk7Cj4gKwlp ZiAocmV0KQo+ICsJCXJldHVybiByZXQ7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gIHN0 YXRpYyBpbnQgaW50ZWxfYXRvbWljX3ByZXBhcmVfY29tbWl0KHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsCj4gQEAgLTE1Njk2LDYgKzE1NzEyLDEwIEBAIGludCBpbnRlbF9tb2Rlc2V0X2luaXQoc3Ry dWN0IGRybV9kZXZpY2UgKmRldikKPiAgCj4gIAlkcm1fbW9kZV9jb25maWdfaW5pdChkZXYpOwo+ ICAKPiArCXJldCA9IGludGVsX2J3X2luaXQoZGV2X3ByaXYpOwo+ICsJaWYgKHJldCkKPiArCQly ZXR1cm4gcmV0Owo+ICsKPiAgCWRldi0+bW9kZV9jb25maWcubWluX3dpZHRoID0gMDsKPiAgCWRl di0+bW9kZV9jb25maWcubWluX2hlaWdodCA9IDA7Cj4gIAo+IEBAIC0xNjMxOCw4ICsxNjMzOCwx MSBAQCBzdGF0aWMgdm9pZCBpbnRlbF9tb2Rlc2V0X3JlYWRvdXRfaHdfc3RhdGUoc3RydWN0IGRy bV9kZXZpY2UgKmRldikKPiAgCWRybV9jb25uZWN0b3JfbGlzdF9pdGVyX2VuZCgmY29ubl9pdGVy KTsKPiAgCj4gIAlmb3JfZWFjaF9pbnRlbF9jcnRjKGRldiwgY3J0Yykgewo+ICsJCXN0cnVjdCBp bnRlbF9id19zdGF0ZSAqYndfc3RhdGUgPQo+ICsJCQl0b19pbnRlbF9id19zdGF0ZShkZXZfcHJp di0+Yndfb2JqLnN0YXRlKTsKPiAgCQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0 ZSA9Cj4gIAkJCXRvX2ludGVsX2NydGNfc3RhdGUoY3J0Yy0+YmFzZS5zdGF0ZSk7Cj4gKwkJc3Ry dWN0IGludGVsX3BsYW5lICpwbGFuZTsKPiAgCQlpbnQgbWluX2NkY2xrID0gMDsKPiAgCj4gIAkJ bWVtc2V0KCZjcnRjLT5iYXNlLm1vZGUsIDAsIHNpemVvZihjcnRjLT5iYXNlLm1vZGUpKTsKPiBA QCAtMTYzNTgsNiArMTYzODEsMjEgQEAgc3RhdGljIHZvaWQgaW50ZWxfbW9kZXNldF9yZWFkb3V0 X2h3X3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAkJZGV2X3ByaXYtPm1pbl92b2x0 YWdlX2xldmVsW2NydGMtPnBpcGVdID0KPiAgCQkJY3J0Y19zdGF0ZS0+bWluX3ZvbHRhZ2VfbGV2 ZWw7Cj4gIAo+ICsJCWZvcl9lYWNoX2ludGVsX3BsYW5lX29uX2NydGMoJmRldl9wcml2LT5kcm0s IGNydGMsIHBsYW5lKSB7Cj4gKwkJCWNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxh bmVfc3RhdGUgPQo+ICsJCQkJdG9faW50ZWxfcGxhbmVfc3RhdGUocGxhbmUtPmJhc2Uuc3RhdGUp Owo+ICsKPiArCQkJLyoKPiArCQkJICogRklYTUUgZG9uJ3QgaGF2ZSB0aGUgZmIgeWV0LCBzbyBj YW4ndAo+ICsJCQkgKiB1c2UgaW50ZWxfcGxhbmVfZGF0YV9yYXRlKCkgOigKPiArCQkJICovCj4g KwkJCWlmIChwbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlKQo+ICsJCQkJY3J0Y19zdGF0ZS0+ZGF0 YV9yYXRlW3BsYW5lLT5pZF0gPQo+ICsJCQkJCTQgKiBjcnRjX3N0YXRlLT5waXhlbF9yYXRlOwo+ ICsJCX0KPiArCj4gKwkJaW50ZWxfYndfY3J0Y191cGRhdGUoYndfc3RhdGUsIGNydGNfc3RhdGUp Owo+ICsKPiAgCQlpbnRlbF9waXBlX2NvbmZpZ19zYW5pdHlfY2hlY2soZGV2X3ByaXYsIGNydGNf c3RhdGUpOwo+ICAJfQo+ICB9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiBpbmRleCA0MDQ5 ZTAzZDJjMGQuLjQ3ZjU1MTYwMWEwNSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4g QEAgLTg4NSw2ICs4ODUsOCBAQCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSB7Cj4gIAo+ICAJc3Ry dWN0IGludGVsX2NydGNfd21fc3RhdGUgd207Cj4gIAo+ICsJdTMyIGRhdGFfcmF0ZVtJOTE1X01B WF9QTEFORVNdOwo+ICsKPiAgCS8qIEdhbW1hIG1vZGUgcHJvZ3JhbW1lZCBvbiB0aGUgcGlwZSAq Lwo+ICAJdTMyIGdhbW1hX21vZGU7Cj4gIAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2ludGVsLWdmeA==