From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH] drm/i915/dp: Fix dsc bpp calculations, v3. Date: Mon, 23 Sep 2019 16:03:07 +0300 Message-ID: <20190923130307.GK1208@intel.com> References: <20190920163814.GD1208@intel.com> <20190923125252.25913-1-maarten.lankhorst@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id 40E796E8E9 for ; Mon, 23 Sep 2019 13:03:11 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20190923125252.25913-1-maarten.lankhorst@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Maarten Lankhorst Cc: intel-gfx@lists.freedesktop.org, stable@vger.kernel.org List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCBTZXAgMjMsIDIwMTkgYXQgMDI6NTI6NTJQTSArMDIwMCwgTWFhcnRlbiBMYW5raG9y c3Qgd3JvdGU6Cj4gVGhlcmUgd2FzIGEgaW50ZWdlciB3cmFwYXJvdW5kIHdoZW4gbW9kZV9jbG9j ayBiZWNhbWUgdG9vIGhpZ2gsCj4gYW5kIHdlIGRpZG4ndCBjb3JyZWN0IGZvciB0aGUgRkVDIG92 ZXJoZWFkIGZhY3RvciB3aGVuIGRpdmlkaW5nLAo+IHdpdGggdGhlIGNhbGN1bGF0aW9ucyBicmVh a2luZyBhdCBIQlIzLgo+IAo+IEFzIGEgcmVzdWx0IG91ciBjYWxjdWxhdGVkIGJwcCB3YXMgd2F5 IHRvbyBoaWdoLCBhbmQgdGhlIGxpbmsgd2lkdGgKPiBsaW1pdGF0aW9uIG5ldmVyIGNhbWUgaW50 byBlZmZlY3QuCj4gCj4gUHJpbnQgb3V0IHRoZSByZXN1bHRpbmcgYnBwIGNhbGN1bHVsYXRpb25z IGFzIGEgc2FuaXR5IGNoZWNrLCBqdXN0Cj4gaW4gY2FzZSB3ZSBldmVyIGhhdmUgdG8gZGVidWcg aXQgbGF0ZXIgb24gYWdhaW4uCj4gCj4gV2UgYWxzbyB1c2VkIHRoZSB3cm9uZyBmYWN0b3IgZm9y IEZFQy4gV2hpbGUgYnNwZWMgbWVudGlvbnMgMi40JSwKPiBhbGwgdGhlIGNhbGN1bGF0aW9ucyB1 c2UgMS8wLjk3MjI2MSwgYW5kIHRoZSBzYW1lIHJhdGlvIHNob3VsZCBiZQo+IGFwcGxpZWQgdG8g ZGF0YSBNL04gYXMgd2VsbCwgc28gdXNlIGl0IHRoZXJlIHdoZW4gRkVDIGlzIGVuYWJsZWQuCj4g Cj4gTWFrZSBzdXJlIHdlIGRvbid0IGJyZWFrIGh3IHJlYWRvdXQsIGFuZCByZWFkIG91dCBGRUMg ZW5hYmxlIHN0YXRlCj4gYW5kIGNvcnJlY3QgdGhlIERESSBjbG9jayByZWFkb3V0IGZvciB0aGUg bmV3IHZhbHVlcy4KPiAKPiBUaGlzIGZpeGVzIHRoZSBGSUZPIHVuZGVycnVuIHdlIGFyZSBzZWVp bmcgd2l0aCBGRUMgZW5hYmxlZC4KPiAKPiBDaGFuZ2VzIHNpbmNlIHYyOgo+IC0gSGFuZGxlIGZl Y19lbmFibGUgaW4gaW50ZWxfbGlua19jb21wdXRlX21fbiwgc28gb25seSBkYXRhIE0vTiBpcyBh ZGp1c3RlZC4gKFZpbGxlKQo+IC0gRml4IGluaXRpYWwgaGFyZHdhcmUgcmVhZG91dCBmb3IgRkVD LiAoVmlsbGUpCj4gCj4gU2lnbmVkLW9mZi1ieTogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4u bGFua2hvcnN0QGxpbnV4LmludGVsLmNvbT4KPiBGaXhlczogZDkyMThjOGY2Y2Y0ICgiZHJtL2k5 MTUvZHA6IEFkZCBoZWxwZXJzIGZvciBDb21wcmVzc2VkIEJQUCBhbmQgU2xpY2UgQ291bnQgZm9y IERTQyIpCj4gQ2M6IDxzdGFibGVAdmdlci5rZXJuZWwub3JnPiAjIHY1LjArCj4gQ2M6IE1hbmFz aSBOYXZhcmUgPG1hbmFzaS5kLm5hdmFyZUBpbnRlbC5jb20+Cj4gLS0tCj4gVGhhbmtzLCB0aGF0 IGZpeGVkIHRoZSBGSUZPIHVuZGVycnVuLCBtYWtpbmcgdGhlIGRpc2FibGVtZW50IHBhdGNoIG9i c29sZXRlLgo+IEJpZ2pvaW5lciBpcyBub3cgY29tcGxldGVseSB3b3JraW5nIGFzIGludGVuZGVk LiA6KQo+IAo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RkaS5jICAgICB8 ICAyMSArKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYyB8 ICAxMyArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuaCB8 ICAgMiArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RwLmMgICAgICB8 IDE5MSArKysrKysrKysrLS0tLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkv aW50ZWxfZHAuaCAgICAgIHwgICA3ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkv aW50ZWxfZHBfbXN0LmMgIHwgICAyICstCj4gIDYgZmlsZXMgY2hhbmdlZCwgMTM3IGluc2VydGlv bnMoKyksIDk5IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9kaXNwbGF5L2ludGVsX2RkaS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9p bnRlbF9kZGkuYwo+IGluZGV4IDBjMGRhOWY2YzJlOC4uM2U3N2IzMGQ5MWQ1IDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGRpLmMKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RkaS5jCj4gQEAgLTE0NzksNiArMTQ3OSwx MCBAQCBzdGF0aWMgdm9pZCBkZGlfZG90Y2xvY2tfZ2V0KHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpwaXBlX2NvbmZpZykKPiAgCWlmIChwaXBlX2NvbmZpZy0+cGl4ZWxfbXVsdGlwbGllcikKPiAg CQlkb3RjbG9jayAvPSBwaXBlX2NvbmZpZy0+cGl4ZWxfbXVsdGlwbGllcjsKPiAgCj4gKwkvKiBm ZWMgYWRkcyBvdmVyaGVhZCB0byB0aGUgZGF0YSBNL04gdmFsdWVzLCBjb3JyZWN0IGZvciBpdCAq Lwo+ICsJaWYgKHBpcGVfY29uZmlnLT5mZWNfZW5hYmxlKQo+ICsJCWRvdGNsb2NrID0gaW50ZWxf ZHBfZmVjX3RvX21vZGVfY2xvY2soZG90Y2xvY2spOwoKVGhhdCdzIHN0aWxsIG5vbnNlbnNlLgoK PiArCj4gIAlwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfY2xvY2sgPSBkb3Rj bG9jazsKPiAgfQo+ICAKPiBAQCAtNDA0NSw2ICs0MDQ5LDIzIEBAIHZvaWQgaW50ZWxfZGRpX2dl dF9jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gIAkJcGlwZV9jb25maWct PmxhbmVfY291bnQgPQo+ICAJCQkoKHRlbXAgJiBERElfUE9SVF9XSURUSF9NQVNLKSA+PiBERElf UE9SVF9XSURUSF9TSElGVCkgKyAxOwo+ICAJCWludGVsX2RwX2dldF9tX24oaW50ZWxfY3J0Yywg cGlwZV9jb25maWcpOwo+ICsKPiArCQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMSkgewo+ ICsJCQlpOTE1X3JlZ190IGRwX3RwX2N0bDsKPiArCj4gKwkJCWlmIChJU19HRU4oZGV2X3ByaXYs IDExKSkKPiArCQkJCWRwX3RwX2N0bCA9IERQX1RQX0NUTChwaXBlX2NvbmZpZy0+Y3B1X3RyYW5z Y29kZXIpOwo+ICsJCQllbHNlCj4gKwkJCQlkcF90cF9jdGwgPSBUR0xfRFBfVFBfQ1RMKHBpcGVf Y29uZmlnLT5jcHVfdHJhbnNjb2Rlcik7Cj4gKwo+ICsJCQlwaXBlX2NvbmZpZy0+ZmVjX2VuYWJs ZSA9Cj4gKwkJCQlJOTE1X1JFQUQoZHBfdHBfY3RsKSAmIERQX1RQX0NUTF9GRUNfRU5BQkxFOwo+ ICsKPiArCQkJRFJNX0RFQlVHX0tNUygiW0VOQ09ERVI6JWQ6JXNdIEZlYyBzdGF0dXM6ICV1XG4i LAo+ICsJCQkJICAgICAgZW5jb2Rlci0+YmFzZS5iYXNlLmlkLCBlbmNvZGVyLT5iYXNlLm5hbWUs Cj4gKwkJCQkgICAgICBwaXBlX2NvbmZpZy0+ZmVjX2VuYWJsZSk7Cj4gKwkJfQo+ICsKPiAgCQli cmVhazsKPiAgCWNhc2UgVFJBTlNfRERJX01PREVfU0VMRUNUX0RQX01TVDoKPiAgCQlwaXBlX2Nv bmZpZy0+b3V0cHV0X3R5cGVzIHw9IEJJVChJTlRFTF9PVVRQVVRfRFBfTVNUKTsKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYwo+IGluZGV4IDVlY2Y1NDI3 MDE4MS4uMzE2OThhNTc3NzNmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rp c3BsYXkvaW50ZWxfZGlzcGxheS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxh eS9pbnRlbF9kaXNwbGF5LmMKPiBAQCAtNzI5MSw3ICs3MjkxLDcgQEAgc3RhdGljIGludCBpcm9u bGFrZV9mZGlfY29tcHV0ZV9jb25maWcoc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMsCj4g IAlwaXBlX2NvbmZpZy0+ZmRpX2xhbmVzID0gbGFuZTsKPiAgCj4gIAlpbnRlbF9saW5rX2NvbXB1 dGVfbV9uKHBpcGVfY29uZmlnLT5waXBlX2JwcCwgbGFuZSwgZmRpX2RvdGNsb2NrLAo+IC0JCQkg ICAgICAgbGlua19idywgJnBpcGVfY29uZmlnLT5mZGlfbV9uLCBmYWxzZSk7Cj4gKwkJCSAgICAg ICBsaW5rX2J3LCAmcGlwZV9jb25maWctPmZkaV9tX24sIGZhbHNlLCBmYWxzZSk7Cj4gIAo+ICAJ cmV0ID0gaXJvbmxha2VfY2hlY2tfZmRpX2xhbmVzKGRldiwgaW50ZWxfY3J0Yy0+cGlwZSwgcGlw ZV9jb25maWcpOwo+ICAJaWYgKHJldCA9PSAtRURFQURMSykKPiBAQCAtNzUzOCwxMSArNzUzOCwx NSBAQCB2b2lkCj4gIGludGVsX2xpbmtfY29tcHV0ZV9tX24odTE2IGJpdHNfcGVyX3BpeGVsLCBp bnQgbmxhbmVzLAo+ICAJCSAgICAgICBpbnQgcGl4ZWxfY2xvY2ssIGludCBsaW5rX2Nsb2NrLAo+ ICAJCSAgICAgICBzdHJ1Y3QgaW50ZWxfbGlua19tX24gKm1fbiwKPiAtCQkgICAgICAgYm9vbCBj b25zdGFudF9uKQo+ICsJCSAgICAgICBib29sIGNvbnN0YW50X24sIGJvb2wgZmVjX2VuYWJsZSkK PiAgewo+IC0JbV9uLT50dSA9IDY0Owo+ICsJdTMyIGRhdGFfY2xvY2sgPSBiaXRzX3Blcl9waXhl bCAqIHBpeGVsX2Nsb2NrOwo+ICsKPiArCWlmIChmZWNfZW5hYmxlKQo+ICsJCWRhdGFfY2xvY2sg PSBpbnRlbF9kcF9tb2RlX3RvX2ZlY19jbG9jayhkYXRhX2Nsb2NrKTsKPiAgCj4gLQljb21wdXRl X21fbihiaXRzX3Blcl9waXhlbCAqIHBpeGVsX2Nsb2NrLAo+ICsJbV9uLT50dSA9IDY0Owo+ICsJ Y29tcHV0ZV9tX24oZGF0YV9jbG9jaywKPiAgCQkgICAgbGlua19jbG9jayAqIG5sYW5lcyAqIDgs Cj4gIAkJICAgICZtX24tPmdtY2hfbSwgJm1fbi0+Z21jaF9uLAo+ICAJCSAgICBjb25zdGFudF9u KTsKPiBAQCAtMTI4MzIsNiArMTI4MzYsNyBAQCBpbnRlbF9waXBlX2NvbmZpZ19jb21wYXJlKGNv bnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjdXJyZW50X2NvbmZpZywKPiAgCVBJUEVfQ09O Rl9DSEVDS19CT09MKGhkbWlfc2NyYW1ibGluZyk7Cj4gIAlQSVBFX0NPTkZfQ0hFQ0tfQk9PTCho ZG1pX2hpZ2hfdG1kc19jbG9ja19yYXRpbyk7Cj4gIAlQSVBFX0NPTkZfQ0hFQ0tfQk9PTChoYXNf aW5mb2ZyYW1lKTsKPiArCVBJUEVfQ09ORl9DSEVDS19CT09MKGZlY19lbmFibGUpOwo+ICAKPiAg CVBJUEVfQ09ORl9DSEVDS19CT09MX0lOQ09NUExFVEUoaGFzX2F1ZGlvKTsKPiAgCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5oIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmgKPiBpbmRleCA1Y2VhNmY4 ZTEwN2EuLjRiOWUxOGU1YTI2MyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9k aXNwbGF5L2ludGVsX2Rpc3BsYXkuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3Bs YXkvaW50ZWxfZGlzcGxheS5oCj4gQEAgLTQ0Myw3ICs0NDMsNyBAQCBlbnVtIHBoeV9maWEgewo+ ICB2b2lkIGludGVsX2xpbmtfY29tcHV0ZV9tX24odTE2IGJwcCwgaW50IG5sYW5lcywKPiAgCQkJ ICAgIGludCBwaXhlbF9jbG9jaywgaW50IGxpbmtfY2xvY2ssCj4gIAkJCSAgICBzdHJ1Y3QgaW50 ZWxfbGlua19tX24gKm1fbiwKPiAtCQkJICAgIGJvb2wgY29uc3RhbnRfbik7Cj4gKwkJCSAgICBi b29sIGNvbnN0YW50X24sIGJvb2wgZmVjX2VuYWJsZSk7Cj4gIGJvb2wgaXNfY2NzX21vZGlmaWVy KHU2NCBtb2RpZmllcik7Cj4gIHZvaWQgbHB0X2Rpc2FibGVfY2xrb3V0X2RwKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gIHUzMiBpbnRlbF9wbGFuZV9mYl9tYXhfc3RyaWRl KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kcC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv ZGlzcGxheS9pbnRlbF9kcC5jCj4gaW5kZXggODI5NTU5Zjk3NDQwLi4yZDNmNDE4M2Y5OWQgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kcC5jCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kcC5jCj4gQEAgLTc2LDggKzc2 LDggQEAKPiAgI2RlZmluZSBEUF9EU0NfTUFYX0VOQ19USFJPVUdIUFVUXzAJCTM0MDAwMAo+ICAj ZGVmaW5lIERQX0RTQ19NQVhfRU5DX1RIUk9VR0hQVVRfMQkJNDAwMDAwCj4gIAo+IC0vKiBEUCBE U0MgRkVDIE92ZXJoZWFkIGZhY3RvciA9ICgxMDAgLSAyLjQpLzEwMCAqLwo+IC0jZGVmaW5lIERQ X0RTQ19GRUNfT1ZFUkhFQURfRkFDVE9SCQk5NzYKPiArLyogRFAgRFNDIEZFQyBPdmVyaGVhZCBm YWN0b3IgPSAxLygwLjk3MjI2MSkgKi8KPiArI2RlZmluZSBEUF9EU0NfRkVDX09WRVJIRUFEX0ZB Q1RPUgkJOTcyMjYxCj4gIAo+ICAvKiBDb21wbGlhbmNlIHRlc3Qgc3RhdHVzIGJpdHMgICovCj4g ICNkZWZpbmUgSU5URUxfRFBfUkVTT0xVVElPTl9TSElGVF9NQVNLCTAKPiBAQCAtNDkyLDYgKzQ5 MiwxMDQgQEAgaW50IGludGVsX2RwX2dldF9saW5rX3RyYWluX2ZhbGxiYWNrX3ZhbHVlcyhzdHJ1 Y3QgaW50ZWxfZHAgKmludGVsX2RwLAo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gK3UzMiBpbnRl bF9kcF9tb2RlX3RvX2ZlY19jbG9jayh1MzIgbW9kZV9jbG9jaykKPiArewo+ICsJcmV0dXJuIGRp dl91NjQobXVsX3UzMl91MzIobW9kZV9jbG9jaywgMTAwMDAwMFUpLAo+ICsJCSAgICAgICBEUF9E U0NfRkVDX09WRVJIRUFEX0ZBQ1RPUik7Cj4gK30KPiArCj4gK3UzMiBpbnRlbF9kcF9mZWNfdG9f bW9kZV9jbG9jayh1MzIgZmVjX2Nsb2NrKQo+ICt7Cj4gKwlyZXR1cm4gZGl2X3U2NChtdWxfdTMy X3UzMihmZWNfY2xvY2ssCj4gKwkJCQkgICBEUF9EU0NfRkVDX09WRVJIRUFEX0ZBQ1RPUiksCj4g KwkJICAgICAgIDEwMDAwMDBVKTsKPiArfQo+ICsKPiArc3RhdGljIHUxNiBpbnRlbF9kcF9kc2Nf Z2V0X291dHB1dF9icHAodTMyIGxpbmtfY2xvY2ssIHUzMiBsYW5lX2NvdW50LAo+ICsJCQkJICAg ICAgIHUzMiBtb2RlX2Nsb2NrLCB1MzIgbW9kZV9oZGlzcGxheSkKPiArewo+ICsJdTMyIGJpdHNf cGVyX3BpeGVsLCBtYXhfYnBwX3NtYWxsX2pvaW5lcl9yYW07Cj4gKwlpbnQgaTsKPiArCj4gKwkv Kgo+ICsJICogQXZhaWxhYmxlIExpbmsgQmFuZHdpZHRoKEtiaXRzL3NlYykgPSAoTnVtYmVyT2ZM YW5lcykqCj4gKwkgKiAoTGlua1N5bWJvbENsb2NrKSogOCAqIChUaW1lU2xvdHNQZXJNVFApCj4g KwkgKiBmb3IgU1NUIC0+IFRpbWVTbG90c1Blck1UUCBpcyAxLAo+ICsJICogZm9yIE1TVCAtPiBU aW1lU2xvdHNQZXJNVFAgaGFzIHRvIGJlIGNhbGN1bGF0ZWQKPiArCSAqLwo+ICsJYml0c19wZXJf cGl4ZWwgPSAobGlua19jbG9jayAqIGxhbmVfY291bnQgKiA4KSAvCj4gKwkJCSBpbnRlbF9kcF9t b2RlX3RvX2ZlY19jbG9jayhtb2RlX2Nsb2NrKTsKPiArCURSTV9ERUJVR19LTVMoIk1heCBsaW5r IGJwcDogJXVcbiIsIGJpdHNfcGVyX3BpeGVsKTsKPiArCj4gKwkvKiBTbWFsbCBKb2luZXIgQ2hl Y2s6IG91dHB1dCBicHAgPD0gam9pbmVyIFJBTSAoYml0cykgLyBIb3Jpei4gd2lkdGggKi8KPiAr CW1heF9icHBfc21hbGxfam9pbmVyX3JhbSA9IERQX0RTQ19NQVhfU01BTExfSk9JTkVSX1JBTV9C VUZGRVIgLyBtb2RlX2hkaXNwbGF5Owo+ICsJRFJNX0RFQlVHX0tNUygiTWF4IHNtYWxsIGpvaW5l ciBicHA6ICV1XG4iLCBtYXhfYnBwX3NtYWxsX2pvaW5lcl9yYW0pOwo+ICsKPiArCS8qCj4gKwkg KiBHcmVhdGVzdCBhbGxvd2VkIERTQyBCUFAgPSBNSU4gKG91dHB1dCBCUFAgZnJvbSBhdmFpbGFi bGUgTGluayBCVwo+ICsJICogY2hlY2ssIG91dHB1dCBicHAgZnJvbSBzbWFsbCBqb2luZXIgUkFN IGNoZWNrKQo+ICsJICovCj4gKwliaXRzX3Blcl9waXhlbCA9IG1pbihiaXRzX3Blcl9waXhlbCwg bWF4X2JwcF9zbWFsbF9qb2luZXJfcmFtKTsKPiArCj4gKwkvKiBFcnJvciBvdXQgaWYgdGhlIG1h eCBicHAgaXMgbGVzcyB0aGFuIHNtYWxsZXN0IGFsbG93ZWQgdmFsaWQgYnBwICovCj4gKwlpZiAo Yml0c19wZXJfcGl4ZWwgPCB2YWxpZF9kc2NfYnBwWzBdKSB7Cj4gKwkJRFJNX0RFQlVHX0tNUygi VW5zdXBwb3J0ZWQgQlBQICV1LCBtaW4gJXVcbiIsCj4gKwkJCSAgICAgIGJpdHNfcGVyX3BpeGVs LCB2YWxpZF9kc2NfYnBwWzBdKTsKPiArCQlyZXR1cm4gMDsKPiArCX0KPiArCj4gKwkvKiBGaW5k IHRoZSBuZWFyZXN0IG1hdGNoIGluIHRoZSBhcnJheSBvZiBrbm93biBCUFBzIGZyb20gVkVTQSAq Lwo+ICsJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUodmFsaWRfZHNjX2JwcCkgLSAxOyBpKysp IHsKPiArCQlpZiAoYml0c19wZXJfcGl4ZWwgPCB2YWxpZF9kc2NfYnBwW2kgKyAxXSkKPiArCQkJ YnJlYWs7Cj4gKwl9Cj4gKwliaXRzX3Blcl9waXhlbCA9IHZhbGlkX2RzY19icHBbaV07Cj4gKwo+ ICsJLyoKPiArCSAqIENvbXByZXNzZWQgQlBQIGluIFU2LjQgZm9ybWF0IHNvIG11bHRpcGx5IGJ5 IDE2LCBmb3IgR2VuIDExLAo+ICsJICogZnJhY3Rpb25hbCBwYXJ0IGlzIDAKPiArCSAqLwo+ICsJ cmV0dXJuIGJpdHNfcGVyX3BpeGVsIDw8IDQ7Cj4gK30KPiArCj4gK3N0YXRpYyB1OCBpbnRlbF9k cF9kc2NfZ2V0X3NsaWNlX2NvdW50KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4gKwkJCQkg ICAgICAgaW50IG1vZGVfY2xvY2ssIGludCBtb2RlX2hkaXNwbGF5KQo+ICt7Cj4gKwl1OCBtaW5f c2xpY2VfY291bnQsIGk7Cj4gKwlpbnQgbWF4X3NsaWNlX3dpZHRoOwo+ICsKPiArCWlmIChtb2Rl X2Nsb2NrIDw9IERQX0RTQ19QRUFLX1BJWEVMX1JBVEUpCj4gKwkJbWluX3NsaWNlX2NvdW50ID0g RElWX1JPVU5EX1VQKG1vZGVfY2xvY2ssCj4gKwkJCQkJICAgICAgIERQX0RTQ19NQVhfRU5DX1RI Uk9VR0hQVVRfMCk7Cj4gKwllbHNlCj4gKwkJbWluX3NsaWNlX2NvdW50ID0gRElWX1JPVU5EX1VQ KG1vZGVfY2xvY2ssCj4gKwkJCQkJICAgICAgIERQX0RTQ19NQVhfRU5DX1RIUk9VR0hQVVRfMSk7 Cj4gKwo+ICsJbWF4X3NsaWNlX3dpZHRoID0gZHJtX2RwX2RzY19zaW5rX21heF9zbGljZV93aWR0 aChpbnRlbF9kcC0+ZHNjX2RwY2QpOwo+ICsJaWYgKG1heF9zbGljZV93aWR0aCA8IERQX0RTQ19N SU5fU0xJQ0VfV0lEVEhfVkFMVUUpIHsKPiArCQlEUk1fREVCVUdfS01TKCJVbnN1cHBvcnRlZCBz bGljZSB3aWR0aCAlZCBieSBEUCBEU0MgU2luayBkZXZpY2VcbiIsCj4gKwkJCSAgICAgIG1heF9z bGljZV93aWR0aCk7Cj4gKwkJcmV0dXJuIDA7Cj4gKwl9Cj4gKwkvKiBBbHNvIHRha2UgaW50byBh Y2NvdW50IG1heCBzbGljZSB3aWR0aCAqLwo+ICsJbWluX3NsaWNlX2NvdW50ID0gbWluX3QodTgs IG1pbl9zbGljZV9jb3VudCwKPiArCQkJCURJVl9ST1VORF9VUChtb2RlX2hkaXNwbGF5LAo+ICsJ CQkJCSAgICAgbWF4X3NsaWNlX3dpZHRoKSk7Cj4gKwo+ICsJLyogRmluZCB0aGUgY2xvc2VzdCBt YXRjaCB0byB0aGUgdmFsaWQgc2xpY2UgY291bnQgdmFsdWVzICovCj4gKwlmb3IgKGkgPSAwOyBp IDwgQVJSQVlfU0laRSh2YWxpZF9kc2Nfc2xpY2Vjb3VudCk7IGkrKykgewo+ICsJCWlmICh2YWxp ZF9kc2Nfc2xpY2Vjb3VudFtpXSA+Cj4gKwkJICAgIGRybV9kcF9kc2Nfc2lua19tYXhfc2xpY2Vf Y291bnQoaW50ZWxfZHAtPmRzY19kcGNkLAo+ICsJCQkJCQkgICAgZmFsc2UpKQo+ICsJCQlicmVh azsKPiArCQlpZiAobWluX3NsaWNlX2NvdW50ICA8PSB2YWxpZF9kc2Nfc2xpY2Vjb3VudFtpXSkK PiArCQkJcmV0dXJuIHZhbGlkX2RzY19zbGljZWNvdW50W2ldOwo+ICsJfQo+ICsKPiArCURSTV9E RUJVR19LTVMoIlVuc3VwcG9ydGVkIFNsaWNlIENvdW50ICVkXG4iLCBtaW5fc2xpY2VfY291bnQp Owo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gIHN0YXRpYyBlbnVtIGRybV9tb2RlX3N0YXR1cwo+ ICBpbnRlbF9kcF9tb2RlX3ZhbGlkKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4g IAkJICAgIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlKQo+IEBAIC0yMjU5LDcgKzIzNTcs NyBAQCBpbnRlbF9kcF9jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2Rl ciwKPiAgCQkJICAgICAgIGFkanVzdGVkX21vZGUtPmNydGNfY2xvY2ssCj4gIAkJCSAgICAgICBw aXBlX2NvbmZpZy0+cG9ydF9jbG9jaywKPiAgCQkJICAgICAgICZwaXBlX2NvbmZpZy0+ZHBfbV9u LAo+IC0JCQkgICAgICAgY29uc3RhbnRfbik7Cj4gKwkJCSAgICAgICBjb25zdGFudF9uLCBwaXBl X2NvbmZpZy0+ZmVjX2VuYWJsZSk7Cj4gIAo+ICAJaWYgKGludGVsX2Nvbm5lY3Rvci0+cGFuZWwu ZG93bmNsb2NrX21vZGUgIT0gTlVMTCAmJgo+ICAJCWRldl9wcml2LT5kcnJzLnR5cGUgPT0gU0VB TUxFU1NfRFJSU19TVVBQT1JUKSB7Cj4gQEAgLTIyNjksNyArMjM2Nyw3IEBAIGludGVsX2RwX2Nv bXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAJCQkJCSAgICAg ICBpbnRlbF9jb25uZWN0b3ItPnBhbmVsLmRvd25jbG9ja19tb2RlLT5jbG9jaywKPiAgCQkJCQkg ICAgICAgcGlwZV9jb25maWctPnBvcnRfY2xvY2ssCj4gIAkJCQkJICAgICAgICZwaXBlX2NvbmZp Zy0+ZHBfbTJfbjIsCj4gLQkJCQkJICAgICAgIGNvbnN0YW50X24pOwo+ICsJCQkJCSAgICAgICBj b25zdGFudF9uLCBwaXBlX2NvbmZpZy0+ZmVjX2VuYWJsZSk7Cj4gIAl9Cj4gIAo+ICAJaWYgKCFI QVNfRERJKGRldl9wcml2KSkKPiBAQCAtNDM3Myw5MSArNDQ3MSw2IEBAIGludGVsX2RwX2dldF9z aW5rX2lycV9lc2koc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwgdTggKnNpbmtfaXJxX3ZlY3Rv cikKPiAgCQlEUF9EUFJYX0VTSV9MRU47Cj4gIH0KPiAgCj4gLXUxNiBpbnRlbF9kcF9kc2NfZ2V0 X291dHB1dF9icHAoaW50IGxpbmtfY2xvY2ssIHU4IGxhbmVfY291bnQsCj4gLQkJCQlpbnQgbW9k ZV9jbG9jaywgaW50IG1vZGVfaGRpc3BsYXkpCj4gLXsKPiAtCXUxNiBiaXRzX3Blcl9waXhlbCwg bWF4X2JwcF9zbWFsbF9qb2luZXJfcmFtOwo+IC0JaW50IGk7Cj4gLQo+IC0JLyoKPiAtCSAqIEF2 YWlsYWJsZSBMaW5rIEJhbmR3aWR0aChLYml0cy9zZWMpID0gKE51bWJlck9mTGFuZXMpKgo+IC0J ICogKExpbmtTeW1ib2xDbG9jaykqIDggKiAoKDEwMC1GRUNPdmVyaGVhZCkvMTAwKSooVGltZVNs b3RzUGVyTVRQKQo+IC0JICogRkVDT3ZlcmhlYWQgPSAyLjQlLCBmb3IgU1NUIC0+IFRpbWVTbG90 c1Blck1UUCBpcyAxLAo+IC0JICogZm9yIE1TVCAtPiBUaW1lU2xvdHNQZXJNVFAgaGFzIHRvIGJl IGNhbGN1bGF0ZWQKPiAtCSAqLwo+IC0JYml0c19wZXJfcGl4ZWwgPSAobGlua19jbG9jayAqIGxh bmVfY291bnQgKiA4ICoKPiAtCQkJICBEUF9EU0NfRkVDX09WRVJIRUFEX0ZBQ1RPUikgLwo+IC0J CW1vZGVfY2xvY2s7Cj4gLQo+IC0JLyogU21hbGwgSm9pbmVyIENoZWNrOiBvdXRwdXQgYnBwIDw9 IGpvaW5lciBSQU0gKGJpdHMpIC8gSG9yaXouIHdpZHRoICovCj4gLQltYXhfYnBwX3NtYWxsX2pv aW5lcl9yYW0gPSBEUF9EU0NfTUFYX1NNQUxMX0pPSU5FUl9SQU1fQlVGRkVSIC8KPiAtCQltb2Rl X2hkaXNwbGF5Owo+IC0KPiAtCS8qCj4gLQkgKiBHcmVhdGVzdCBhbGxvd2VkIERTQyBCUFAgPSBN SU4gKG91dHB1dCBCUFAgZnJvbSBhdmFpYWxibGUgTGluayBCVwo+IC0JICogY2hlY2ssIG91dHB1 dCBicHAgZnJvbSBzbWFsbCBqb2luZXIgUkFNIGNoZWNrKQo+IC0JICovCj4gLQliaXRzX3Blcl9w aXhlbCA9IG1pbihiaXRzX3Blcl9waXhlbCwgbWF4X2JwcF9zbWFsbF9qb2luZXJfcmFtKTsKPiAt Cj4gLQkvKiBFcnJvciBvdXQgaWYgdGhlIG1heCBicHAgaXMgbGVzcyB0aGFuIHNtYWxsZXN0IGFs bG93ZWQgdmFsaWQgYnBwICovCj4gLQlpZiAoYml0c19wZXJfcGl4ZWwgPCB2YWxpZF9kc2NfYnBw WzBdKSB7Cj4gLQkJRFJNX0RFQlVHX0tNUygiVW5zdXBwb3J0ZWQgQlBQICVkXG4iLCBiaXRzX3Bl cl9waXhlbCk7Cj4gLQkJcmV0dXJuIDA7Cj4gLQl9Cj4gLQo+IC0JLyogRmluZCB0aGUgbmVhcmVz dCBtYXRjaCBpbiB0aGUgYXJyYXkgb2Yga25vd24gQlBQcyBmcm9tIFZFU0EgKi8KPiAtCWZvciAo aSA9IDA7IGkgPCBBUlJBWV9TSVpFKHZhbGlkX2RzY19icHApIC0gMTsgaSsrKSB7Cj4gLQkJaWYg KGJpdHNfcGVyX3BpeGVsIDwgdmFsaWRfZHNjX2JwcFtpICsgMV0pCj4gLQkJCWJyZWFrOwo+IC0J fQo+IC0JYml0c19wZXJfcGl4ZWwgPSB2YWxpZF9kc2NfYnBwW2ldOwo+IC0KPiAtCS8qCj4gLQkg KiBDb21wcmVzc2VkIEJQUCBpbiBVNi40IGZvcm1hdCBzbyBtdWx0aXBseSBieSAxNiwgZm9yIEdl biAxMSwKPiAtCSAqIGZyYWN0aW9uYWwgcGFydCBpcyAwCj4gLQkgKi8KPiAtCXJldHVybiBiaXRz X3Blcl9waXhlbCA8PCA0Owo+IC19Cj4gLQo+IC11OCBpbnRlbF9kcF9kc2NfZ2V0X3NsaWNlX2Nv dW50KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4gLQkJCQlpbnQgbW9kZV9jbG9jaywKPiAt CQkJCWludCBtb2RlX2hkaXNwbGF5KQo+IC17Cj4gLQl1OCBtaW5fc2xpY2VfY291bnQsIGk7Cj4g LQlpbnQgbWF4X3NsaWNlX3dpZHRoOwo+IC0KPiAtCWlmIChtb2RlX2Nsb2NrIDw9IERQX0RTQ19Q RUFLX1BJWEVMX1JBVEUpCj4gLQkJbWluX3NsaWNlX2NvdW50ID0gRElWX1JPVU5EX1VQKG1vZGVf Y2xvY2ssCj4gLQkJCQkJICAgICAgIERQX0RTQ19NQVhfRU5DX1RIUk9VR0hQVVRfMCk7Cj4gLQll bHNlCj4gLQkJbWluX3NsaWNlX2NvdW50ID0gRElWX1JPVU5EX1VQKG1vZGVfY2xvY2ssCj4gLQkJ CQkJICAgICAgIERQX0RTQ19NQVhfRU5DX1RIUk9VR0hQVVRfMSk7Cj4gLQo+IC0JbWF4X3NsaWNl X3dpZHRoID0gZHJtX2RwX2RzY19zaW5rX21heF9zbGljZV93aWR0aChpbnRlbF9kcC0+ZHNjX2Rw Y2QpOwo+IC0JaWYgKG1heF9zbGljZV93aWR0aCA8IERQX0RTQ19NSU5fU0xJQ0VfV0lEVEhfVkFM VUUpIHsKPiAtCQlEUk1fREVCVUdfS01TKCJVbnN1cHBvcnRlZCBzbGljZSB3aWR0aCAlZCBieSBE UCBEU0MgU2luayBkZXZpY2VcbiIsCj4gLQkJCSAgICAgIG1heF9zbGljZV93aWR0aCk7Cj4gLQkJ cmV0dXJuIDA7Cj4gLQl9Cj4gLQkvKiBBbHNvIHRha2UgaW50byBhY2NvdW50IG1heCBzbGljZSB3 aWR0aCAqLwo+IC0JbWluX3NsaWNlX2NvdW50ID0gbWluX3QodTgsIG1pbl9zbGljZV9jb3VudCwK PiAtCQkJCURJVl9ST1VORF9VUChtb2RlX2hkaXNwbGF5LAo+IC0JCQkJCSAgICAgbWF4X3NsaWNl X3dpZHRoKSk7Cj4gLQo+IC0JLyogRmluZCB0aGUgY2xvc2VzdCBtYXRjaCB0byB0aGUgdmFsaWQg c2xpY2UgY291bnQgdmFsdWVzICovCj4gLQlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRSh2YWxp ZF9kc2Nfc2xpY2Vjb3VudCk7IGkrKykgewo+IC0JCWlmICh2YWxpZF9kc2Nfc2xpY2Vjb3VudFtp XSA+Cj4gLQkJICAgIGRybV9kcF9kc2Nfc2lua19tYXhfc2xpY2VfY291bnQoaW50ZWxfZHAtPmRz Y19kcGNkLAo+IC0JCQkJCQkgICAgZmFsc2UpKQo+IC0JCQlicmVhazsKPiAtCQlpZiAobWluX3Ns aWNlX2NvdW50ICA8PSB2YWxpZF9kc2Nfc2xpY2Vjb3VudFtpXSkKPiAtCQkJcmV0dXJuIHZhbGlk X2RzY19zbGljZWNvdW50W2ldOwo+IC0JfQo+IC0KPiAtCURSTV9ERUJVR19LTVMoIlVuc3VwcG9y dGVkIFNsaWNlIENvdW50ICVkXG4iLCBtaW5fc2xpY2VfY291bnQpOwo+IC0JcmV0dXJuIDA7Cj4g LX0KPiAtCj4gIHN0YXRpYyB2b2lkCj4gIGludGVsX3BpeGVsX2VuY29kaW5nX3NldHVwX3ZzYyhz dHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAo+ICAJCQkgICAgICAgY29uc3Qgc3RydWN0IGludGVs X2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2Rpc3BsYXkvaW50ZWxfZHAuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50 ZWxfZHAuaAo+IGluZGV4IGUwMWQxZjg5NDA5ZC4uMjE0N2QzYzE0ODcwIDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHAuaAo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZHAuaAo+IEBAIC0xMDMsMTAgKzEwMyw2IEBAIGJv b2wgaW50ZWxfZHBfc291cmNlX3N1cHBvcnRzX2hicjIoc3RydWN0IGludGVsX2RwICppbnRlbF9k cCk7Cj4gIGJvb2wgaW50ZWxfZHBfc291cmNlX3N1cHBvcnRzX2hicjMoc3RydWN0IGludGVsX2Rw ICppbnRlbF9kcCk7Cj4gIGJvb2wKPiAgaW50ZWxfZHBfZ2V0X2xpbmtfc3RhdHVzKHN0cnVjdCBp bnRlbF9kcCAqaW50ZWxfZHAsIHU4ICpsaW5rX3N0YXR1cyk7Cj4gLXUxNiBpbnRlbF9kcF9kc2Nf Z2V0X291dHB1dF9icHAoaW50IGxpbmtfY2xvY2ssIHU4IGxhbmVfY291bnQsCj4gLQkJCQlpbnQg bW9kZV9jbG9jaywgaW50IG1vZGVfaGRpc3BsYXkpOwo+IC11OCBpbnRlbF9kcF9kc2NfZ2V0X3Ns aWNlX2NvdW50KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsIGludCBtb2RlX2Nsb2NrLAo+IC0J CQkJaW50IG1vZGVfaGRpc3BsYXkpOwo+ICAKPiAgYm9vbCBpbnRlbF9kcF9yZWFkX2RwY2Qoc3Ry dWN0IGludGVsX2RwICppbnRlbF9kcCk7Cj4gIGJvb2wgaW50ZWxfZHBfZ2V0X2NvbG9yaW1ldHJ5 X3N0YXR1cyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKTsKPiBAQCAtMTE5LDQgKzExNSw3IEBA IHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGludGVsX2RwX3VudXNlZF9sYW5lX21hc2soaW50 IGxhbmVfY291bnQpCj4gIAlyZXR1cm4gfigoMSA8PCBsYW5lX2NvdW50KSAtIDEpICYgMHhmOwo+ ICB9Cj4gIAo+ICt1MzIgaW50ZWxfZHBfZmVjX3RvX21vZGVfY2xvY2sodTMyIGZlY19jbG9jayk7 Cj4gK3UzMiBpbnRlbF9kcF9tb2RlX3RvX2ZlY19jbG9jayh1MzIgbW9kZV9jbG9jayk7Cj4gKwo+ ICAjZW5kaWYgLyogX19JTlRFTF9EUF9IX18gKi8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kcF9tc3QuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rp c3BsYXkvaW50ZWxfZHBfbXN0LmMKPiBpbmRleCBlZWViM2Y5MzNhYTQuLmNmNGQ4NTFhNTEzOSAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2RwX21zdC5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kcF9tc3QuYwo+IEBA IC04MSw3ICs4MSw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfZHBfbXN0X2NvbXB1dGVfbGlua19jb25m aWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gIAkJCSAgICAgICBhZGp1c3RlZF9t b2RlLT5jcnRjX2Nsb2NrLAo+ICAJCQkgICAgICAgY3J0Y19zdGF0ZS0+cG9ydF9jbG9jaywKPiAg CQkJICAgICAgICZjcnRjX3N0YXRlLT5kcF9tX24sCj4gLQkJCSAgICAgICBjb25zdGFudF9uKTsK PiArCQkJICAgICAgIGNvbnN0YW50X24sIGNydGNfc3RhdGUtPmZlY19lbmFibGUpOwo+ICAJY3J0 Y19zdGF0ZS0+ZHBfbV9uLnR1ID0gc2xvdHM7Cj4gIAo+ICAJcmV0dXJuIDA7Cj4gLS0gCj4gMi4y MC4xCgotLSAKVmlsbGUgU3lyasOkbMOkCkludGVsCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxp c3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2ludGVsLWdmeA==