From mboxrd@z Thu Jan 1 00:00:00 1970 From: Manasi Navare Subject: Re: [PATCH 1/3] drm/i915: Move dsc rate params compute into drm Date: Wed, 13 Feb 2019 10:36:51 -0800 Message-ID: <20190213183651.GA11553@intel.com> References: <20190213144536.21661-1-David.Francis@amd.com> <20190213144536.21661-2-David.Francis@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20190213144536.21661-2-David.Francis@amd.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: David Francis Cc: intel-gfx@lists.freedesktop.org, harry.wentland@amd.com, amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, nikola.cornij@amd.com List-Id: amd-gfx.lists.freedesktop.org T24gV2VkLCBGZWIgMTMsIDIwMTkgYXQgMDk6NDU6MzRBTSAtMDUwMCwgRGF2aWQgRnJhbmNpcyB3 cm90ZToKPiBUaGUgZnVuY3Rpb24gaW50ZWxfY29tcHV0ZV9yY19wYXJhbWV0ZXJzIGlzIHBhcnQg b2YgdGhlIGRzYyBzcGVjCj4gYW5kIGlzIG5vdCBkcml2ZXItc3BlY2lmaWMuIE90aGVyIGRybSBk cml2ZXJzIG1pZ2h0IGxpa2UgdG8gdXNlCj4gaXQuICBUaGUgZnVuY3Rpb24gaXMgbm90IGNoYW5n ZWQ7IGp1c3QgbW92ZWQgYW5kIHJlbmFtZWQuCj4KClllcyB0aGlzIHNvdW5kcyBmYWlyIHNpbmNl IGl0cyBEU0Mgc3BlYyByZWxhdGVkIGFuZCBjYW4gbW92ZSB0byBkcm1fZHNjLmMuCkFzIGEgcGFy dCBvZiB0aGlzIHNlcmllcyBvciBsYXRlciB5b3Ugc2hvdWxkIGFsc28gY29uc2lkZXIgbW92aW5n IHRoZQpyY19wYXJhbWV0ZXJzIHN0cnVjdCBmb3IgaW5wdXQgYnBjL291dHB1dCBCUFAgY29tYmlu YXRpb25zIHRvIERSTSBzaW5jZSB0aGF0CmlzIGFsc28gcHVyZWx5IHNwZWMgcmVsYXRlZC4KCldp dGggdGhpcyBjaGFuZ2UgYW5kIGNvbXB1dGVfcmNfcGFyYW1zIGZ1bmN0aW9uIGluIERSTSwgcGxl YXNlIGFkZCBhcHByb3ByaWF0ZQpkZXNjcmlwdGlvbiBvZiB0aGUgZnVuY3Rpb24gYXMgcGFydCBv ZiBrZXJuZWwgZG9jdW1lbnRhdGlvbi4KCldpdGggdGhlIGRvY3VtZW50YXRpb24gY2hhbmdlLCB5 b3UgaGF2ZSBteSByLWIuCgpSZWdhcmRzCk1hbmFzaQogCj4gU2lnbmVkLW9mZi1ieTogRGF2aWQg RnJhbmNpcyA8RGF2aWQuRnJhbmNpc0BhbWQuY29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0v ZHJtX2RzYy5jICAgICAgICAgfCAxMzMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4g IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Zkc2MuYyB8IDEyNSArLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCj4gIGluY2x1ZGUvZHJtL2RybV9kc2MuaCAgICAgICAgICAgICB8ICAgMSAr Cj4gIDMgZmlsZXMgY2hhbmdlZCwgMTM1IGluc2VydGlvbnMoKyksIDEyNCBkZWxldGlvbnMoLSkK PiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9kc2MuYyBiL2RyaXZlcnMvZ3B1 L2RybS9kcm1fZHNjLmMKPiBpbmRleCBiYzJiMjNhZGIwNzIuLjRiMGUzYzljM2ZmOCAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2RzYy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2RybV9kc2MuYwo+IEBAIC0xMSw2ICsxMSw3IEBACj4gICNpbmNsdWRlIDxsaW51eC9pbml0Lmg+ Cj4gICNpbmNsdWRlIDxsaW51eC9lcnJuby5oPgo+ICAjaW5jbHVkZSA8bGludXgvYnl0ZW9yZGVy L2dlbmVyaWMuaD4KPiArI2luY2x1ZGUgPGRybS9kcm1fcHJpbnQuaD4KPiAgI2luY2x1ZGUgPGRy bS9kcm1fZHBfaGVscGVyLmg+Cj4gICNpbmNsdWRlIDxkcm0vZHJtX2RzYy5oPgo+ICAKPiBAQCAt MjI2LDMgKzIyNywxMzUgQEAgdm9pZCBkcm1fZHNjX3Bwc19pbmZvZnJhbWVfcGFjayhzdHJ1Y3Qg ZHJtX2RzY19wcHNfaW5mb2ZyYW1lICpwcHNfc2RwLAo+ICAJLyogUFBTIDk0IC0gMTI3IGFyZSBP ICovCj4gIH0KPiAgRVhQT1JUX1NZTUJPTChkcm1fZHNjX3Bwc19pbmZvZnJhbWVfcGFjayk7Cj4g Kwo+ICsvKioKPiArICogZHJtX2RzY19jb21wdXRlX3JjX3BhcmFtZXRlcnMoKSAtIFdyaXRlIHJh dGUgY29udHJvbAo+ICsgKiBwYXJhbWV0ZXJzIHRvIHRoZSBkc2MgY29uZmlndXJhdGlvbi4gU29t ZSBjb25maWd1cmF0aW9uCj4gKyAqIGZpZWxkcyBtdXN0IGJlIHByZXNlbnQgYmVmb3JlaGFuZC4K PiArICoKPiArICogQGRzY19jZmc6Cj4gKyAqIERTQyBDb25maWd1cmF0aW9uIGRhdGEgcGFydGlh bGx5IGZpbGxlZCBieSBkcml2ZXIKPiArICovCj4gK2ludCBkcm1fZHNjX2NvbXB1dGVfcmNfcGFy YW1ldGVycyhzdHJ1Y3QgZHJtX2RzY19jb25maWcgKnZkc2NfY2ZnKQo+ICt7Cj4gKwl1bnNpZ25l ZCBsb25nIGdyb3Vwc19wZXJfbGluZSA9IDA7Cj4gKwl1bnNpZ25lZCBsb25nIGdyb3Vwc190b3Rh bCA9IDA7Cj4gKwl1bnNpZ25lZCBsb25nIG51bV9leHRyYV9tdXhfYml0cyA9IDA7Cj4gKwl1bnNp Z25lZCBsb25nIHNsaWNlX2JpdHMgPSAwOwo+ICsJdW5zaWduZWQgbG9uZyBocmRfZGVsYXkgPSAw Owo+ICsJdW5zaWduZWQgbG9uZyBmaW5hbF9zY2FsZSA9IDA7Cj4gKwl1bnNpZ25lZCBsb25nIHJi c19taW4gPSAwOwo+ICsKPiArCS8qIE51bWJlciBvZiBncm91cHMgdXNlZCB0byBjb2RlIGVhY2gg bGluZSBvZiBhIHNsaWNlICovCj4gKwlncm91cHNfcGVyX2xpbmUgPSBESVZfUk9VTkRfVVAodmRz Y19jZmctPnNsaWNlX3dpZHRoLAo+ICsJCQkJICAgICAgIERTQ19SQ19QSVhFTFNfUEVSX0dST1VQ KTsKPiArCj4gKwkvKiBjaHVua3NpemUgaW4gQnl0ZXMgKi8KPiArCXZkc2NfY2ZnLT5zbGljZV9j aHVua19zaXplID0gRElWX1JPVU5EX1VQKHZkc2NfY2ZnLT5zbGljZV93aWR0aCAqCj4gKwkJCQkJ CSAgdmRzY19jZmctPmJpdHNfcGVyX3BpeGVsLAo+ICsJCQkJCQkgICg4ICogMTYpKTsKPiArCj4g KwlpZiAodmRzY19jZmctPmNvbnZlcnRfcmdiKQo+ICsJCW51bV9leHRyYV9tdXhfYml0cyA9IDMg KiAodmRzY19jZmctPm11eF93b3JkX3NpemUgKwo+ICsJCQkJCSAgKDQgKiB2ZHNjX2NmZy0+Yml0 c19wZXJfY29tcG9uZW50ICsgNCkKPiArCQkJCQkgIC0gMik7Cj4gKwllbHNlCj4gKwkJbnVtX2V4 dHJhX211eF9iaXRzID0gMyAqIHZkc2NfY2ZnLT5tdXhfd29yZF9zaXplICsKPiArCQkJKDQgKiB2 ZHNjX2NmZy0+Yml0c19wZXJfY29tcG9uZW50ICsgNCkgKwo+ICsJCQkyICogKDQgKiB2ZHNjX2Nm Zy0+Yml0c19wZXJfY29tcG9uZW50KSAtIDI7Cj4gKwkvKiBOdW1iZXIgb2YgYml0cyBpbiBvbmUg U2xpY2UgKi8KPiArCXNsaWNlX2JpdHMgPSA4ICogdmRzY19jZmctPnNsaWNlX2NodW5rX3NpemUg KiB2ZHNjX2NmZy0+c2xpY2VfaGVpZ2h0Owo+ICsKPiArCXdoaWxlICgobnVtX2V4dHJhX211eF9i aXRzID4gMCkgJiYKPiArCSAgICAgICAoKHNsaWNlX2JpdHMgLSBudW1fZXh0cmFfbXV4X2JpdHMp ICUgdmRzY19jZmctPm11eF93b3JkX3NpemUpKQo+ICsJCW51bV9leHRyYV9tdXhfYml0cy0tOwo+ ICsKPiArCWlmIChncm91cHNfcGVyX2xpbmUgPCB2ZHNjX2NmZy0+aW5pdGlhbF9zY2FsZV92YWx1 ZSAtIDgpCj4gKwkJdmRzY19jZmctPmluaXRpYWxfc2NhbGVfdmFsdWUgPSBncm91cHNfcGVyX2xp bmUgKyA4Owo+ICsKPiArCS8qIHNjYWxlX2RlY3JlbWVudF9pbnRlcnZhbCBjYWxjdWxhdGlvbiBh Y2NvcmRpbmcgdG8gRFNDIHNwZWMgMS4xMSAqLwo+ICsJaWYgKHZkc2NfY2ZnLT5pbml0aWFsX3Nj YWxlX3ZhbHVlID4gOCkKPiArCQl2ZHNjX2NmZy0+c2NhbGVfZGVjcmVtZW50X2ludGVydmFsID0g Z3JvdXBzX3Blcl9saW5lIC8KPiArCQkJKHZkc2NfY2ZnLT5pbml0aWFsX3NjYWxlX3ZhbHVlIC0g OCk7Cj4gKwllbHNlCj4gKwkJdmRzY19jZmctPnNjYWxlX2RlY3JlbWVudF9pbnRlcnZhbCA9IERT Q19TQ0FMRV9ERUNSRU1FTlRfSU5URVJWQUxfTUFYOwo+ICsKPiArCXZkc2NfY2ZnLT5maW5hbF9v ZmZzZXQgPSB2ZHNjX2NmZy0+cmNfbW9kZWxfc2l6ZSAtCj4gKwkJKHZkc2NfY2ZnLT5pbml0aWFs X3htaXRfZGVsYXkgKgo+ICsJCSB2ZHNjX2NmZy0+Yml0c19wZXJfcGl4ZWwgKyA4KSAvIDE2ICsg bnVtX2V4dHJhX211eF9iaXRzOwo+ICsKPiArCWlmICh2ZHNjX2NmZy0+ZmluYWxfb2Zmc2V0ID49 IHZkc2NfY2ZnLT5yY19tb2RlbF9zaXplKSB7Cj4gKwkJRFJNX0RFQlVHX0tNUygiRmluYWxPZnMg PCBSY01vZGVsU3plIGZvciB0aGlzIEluaXRpYWxYbWl0RGVsYXlcbiIpOwo+ICsJCXJldHVybiAt RVJBTkdFOwo+ICsJfQo+ICsKPiArCWZpbmFsX3NjYWxlID0gKHZkc2NfY2ZnLT5yY19tb2RlbF9z aXplICogOCkgLwo+ICsJCSh2ZHNjX2NmZy0+cmNfbW9kZWxfc2l6ZSAtIHZkc2NfY2ZnLT5maW5h bF9vZmZzZXQpOwo+ICsJaWYgKHZkc2NfY2ZnLT5zbGljZV9oZWlnaHQgPiAxKQo+ICsJCS8qCj4g KwkJICogTmZsQnBnT2Zmc2V0IGlzIDE2IGJpdCB2YWx1ZSB3aXRoIDExIGZyYWN0aW9uYWwgYml0 cwo+ICsJCSAqIGhlbmNlIHdlIG11bHRpcGx5IGJ5IDJeMTEgZm9yIHByZXNlcnZpbmcgdGhlCj4g KwkJICogZnJhY3Rpb25hbCBwYXJ0Cj4gKwkJICovCj4gKwkJdmRzY19jZmctPm5mbF9icGdfb2Zm c2V0ID0gRElWX1JPVU5EX1VQKCh2ZHNjX2NmZy0+Zmlyc3RfbGluZV9icGdfb2Zmc2V0IDw8IDEx KSwKPiArCQkJCQkJCSh2ZHNjX2NmZy0+c2xpY2VfaGVpZ2h0IC0gMSkpOwo+ICsJZWxzZQo+ICsJ CXZkc2NfY2ZnLT5uZmxfYnBnX29mZnNldCA9IDA7Cj4gKwo+ICsJLyogMl4xNiAtIDEgKi8KPiAr CWlmICh2ZHNjX2NmZy0+bmZsX2JwZ19vZmZzZXQgPiA2NTUzNSkgewo+ICsJCURSTV9ERUJVR19L TVMoIk5mbEJwZ09mZnNldCBpcyB0b28gbGFyZ2UgZm9yIHRoaXMgc2xpY2UgaGVpZ2h0XG4iKTsK PiArCQlyZXR1cm4gLUVSQU5HRTsKPiArCX0KPiArCj4gKwkvKiBOdW1iZXIgb2YgZ3JvdXBzIHVz ZWQgdG8gY29kZSB0aGUgZW50aXJlIHNsaWNlICovCj4gKwlncm91cHNfdG90YWwgPSBncm91cHNf cGVyX2xpbmUgKiB2ZHNjX2NmZy0+c2xpY2VfaGVpZ2h0Owo+ICsKPiArCS8qIHNsaWNlX2JwZ19v ZmZzZXQgaXMgMTYgYml0IHZhbHVlIHdpdGggMTEgZnJhY3Rpb25hbCBiaXRzICovCj4gKwl2ZHNj X2NmZy0+c2xpY2VfYnBnX29mZnNldCA9IERJVl9ST1VORF9VUCgoKHZkc2NfY2ZnLT5yY19tb2Rl bF9zaXplIC0KPiArCQkJCQkJICAgIHZkc2NfY2ZnLT5pbml0aWFsX29mZnNldCArCj4gKwkJCQkJ CSAgICBudW1fZXh0cmFfbXV4X2JpdHMpIDw8IDExKSwKPiArCQkJCQkJICBncm91cHNfdG90YWwp Owo+ICsKPiArCWlmIChmaW5hbF9zY2FsZSA+IDkpIHsKPiArCQkvKgo+ICsJCSAqIFNjYWxlSW5j cmVtZW50SW50ZXJ2YWwgPQo+ICsJCSAqIGZpbmFsb2Zmc2V0LygoTmZsQnBnT2Zmc2V0ICsgU2xp Y2VCcGdPZmZzZXQpKjgoZmluYWxzY2FsZSAtIDEuMTI1KSkKPiArCQkgKiBhcyAoTmZsQnBnT2Zm c2V0ICsgU2xpY2VCcGdPZmZzZXQpIGhhcyAxMSBiaXQgZnJhY3Rpb25hbCB2YWx1ZSwKPiArCQkg KiB3ZSBuZWVkIGRpdmlkZSBieSAyXjExIGZyb20gcHN0RHNjQ2ZnIHZhbHVlcwo+ICsJCSAqLwo+ ICsJCXZkc2NfY2ZnLT5zY2FsZV9pbmNyZW1lbnRfaW50ZXJ2YWwgPQo+ICsJCQkJKHZkc2NfY2Zn LT5maW5hbF9vZmZzZXQgKiAoMSA8PCAxMSkpIC8KPiArCQkJCSgodmRzY19jZmctPm5mbF9icGdf b2Zmc2V0ICsKPiArCQkJCXZkc2NfY2ZnLT5zbGljZV9icGdfb2Zmc2V0KSAqCj4gKwkJCQkoZmlu YWxfc2NhbGUgLSA5KSk7Cj4gKwl9IGVsc2Ugewo+ICsJCS8qCj4gKwkJICogSWYgZmluYWxTY2Fs ZVZhbHVlIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byA5LCBhIHZhbHVlIG9mIDAgc2hvdWxkCj4g KwkJICogYmUgdXNlZCB0byBkaXNhYmxlIHRoZSBzY2FsZSBpbmNyZW1lbnQgYXQgdGhlIGVuZCBv ZiB0aGUgc2xpY2UKPiArCQkgKi8KPiArCQl2ZHNjX2NmZy0+c2NhbGVfaW5jcmVtZW50X2ludGVy dmFsID0gMDsKPiArCX0KPiArCj4gKwlpZiAodmRzY19jZmctPnNjYWxlX2luY3JlbWVudF9pbnRl cnZhbCA+IDY1NTM1KSB7Cj4gKwkJRFJNX0RFQlVHX0tNUygiU2NhbGVJbmNyZW1lbnRJbnRlcnZh bCBpcyBsYXJnZSBmb3Igc2xpY2UgaGVpZ2h0XG4iKTsKPiArCQlyZXR1cm4gLUVSQU5HRTsKPiAr CX0KPiArCj4gKwkvKgo+ICsJICogRFNDIHNwZWMgbWVudGlvbnMgdGhhdCBiaXRzX3Blcl9waXhl bCBzcGVjaWZpZXMgdGhlIHRhcmdldAo+ICsJICogYml0cy9waXhlbCAoYnBwKSByYXRlIHRoYXQg aXMgdXNlZCBieSB0aGUgZW5jb2RlciwKPiArCSAqIGluIHN0ZXBzIG9mIDEvMTYgb2YgYSBiaXQg cGVyIHBpeGVsCj4gKwkgKi8KPiArCXJic19taW4gPSB2ZHNjX2NmZy0+cmNfbW9kZWxfc2l6ZSAt IHZkc2NfY2ZnLT5pbml0aWFsX29mZnNldCArCj4gKwkJRElWX1JPVU5EX1VQKHZkc2NfY2ZnLT5p bml0aWFsX3htaXRfZGVsYXkgKgo+ICsJCQkgICAgIHZkc2NfY2ZnLT5iaXRzX3Blcl9waXhlbCwg MTYpICsKPiArCQlncm91cHNfcGVyX2xpbmUgKiB2ZHNjX2NmZy0+Zmlyc3RfbGluZV9icGdfb2Zm c2V0Owo+ICsKPiArCWhyZF9kZWxheSA9IERJVl9ST1VORF9VUCgocmJzX21pbiAqIDE2KSwgdmRz Y19jZmctPmJpdHNfcGVyX3BpeGVsKTsKPiArCXZkc2NfY2ZnLT5yY19iaXRzID0gKGhyZF9kZWxh eSAqIHZkc2NfY2ZnLT5iaXRzX3Blcl9waXhlbCkgLyAxNjsKPiArCXZkc2NfY2ZnLT5pbml0aWFs X2RlY19kZWxheSA9IGhyZF9kZWxheSAtIHZkc2NfY2ZnLT5pbml0aWFsX3htaXRfZGVsYXk7Cj4g Kwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArRVhQT1JUX1NZTUJPTChkcm1fZHNjX2NvbXB1dGVfcmNf cGFyYW1ldGVycyk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Zk c2MuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Zkc2MuYwo+IGluZGV4IGM1NmJhMGUw NDA0NC4uYzc2Y2VjOGJmYjc0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3Zkc2MuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Zkc2MuYwo+IEBA IC0zMTgsMTI5ICszMTgsNiBAQCBzdGF0aWMgaW50IGdldF9jb2x1bW5faW5kZXhfZm9yX3JjX3Bh cmFtcyh1OCBiaXRzX3Blcl9jb21wb25lbnQpCj4gIAl9Cj4gIH0KPiAgCj4gLXN0YXRpYyBpbnQg aW50ZWxfY29tcHV0ZV9yY19wYXJhbWV0ZXJzKHN0cnVjdCBkcm1fZHNjX2NvbmZpZyAqdmRzY19j ZmcpCj4gLXsKPiAtCXVuc2lnbmVkIGxvbmcgZ3JvdXBzX3Blcl9saW5lID0gMDsKPiAtCXVuc2ln bmVkIGxvbmcgZ3JvdXBzX3RvdGFsID0gMDsKPiAtCXVuc2lnbmVkIGxvbmcgbnVtX2V4dHJhX211 eF9iaXRzID0gMDsKPiAtCXVuc2lnbmVkIGxvbmcgc2xpY2VfYml0cyA9IDA7Cj4gLQl1bnNpZ25l ZCBsb25nIGhyZF9kZWxheSA9IDA7Cj4gLQl1bnNpZ25lZCBsb25nIGZpbmFsX3NjYWxlID0gMDsK PiAtCXVuc2lnbmVkIGxvbmcgcmJzX21pbiA9IDA7Cj4gLQo+IC0JLyogTnVtYmVyIG9mIGdyb3Vw cyB1c2VkIHRvIGNvZGUgZWFjaCBsaW5lIG9mIGEgc2xpY2UgKi8KPiAtCWdyb3Vwc19wZXJfbGlu ZSA9IERJVl9ST1VORF9VUCh2ZHNjX2NmZy0+c2xpY2Vfd2lkdGgsCj4gLQkJCQkgICAgICAgRFND X1JDX1BJWEVMU19QRVJfR1JPVVApOwo+IC0KPiAtCS8qIGNodW5rc2l6ZSBpbiBCeXRlcyAqLwo+ IC0JdmRzY19jZmctPnNsaWNlX2NodW5rX3NpemUgPSBESVZfUk9VTkRfVVAodmRzY19jZmctPnNs aWNlX3dpZHRoICoKPiAtCQkJCQkJICB2ZHNjX2NmZy0+Yml0c19wZXJfcGl4ZWwsCj4gLQkJCQkJ CSAgKDggKiAxNikpOwo+IC0KPiAtCWlmICh2ZHNjX2NmZy0+Y29udmVydF9yZ2IpCj4gLQkJbnVt X2V4dHJhX211eF9iaXRzID0gMyAqICh2ZHNjX2NmZy0+bXV4X3dvcmRfc2l6ZSArCj4gLQkJCQkJ ICAoNCAqIHZkc2NfY2ZnLT5iaXRzX3Blcl9jb21wb25lbnQgKyA0KQo+IC0JCQkJCSAgLSAyKTsK PiAtCWVsc2UKPiAtCQludW1fZXh0cmFfbXV4X2JpdHMgPSAzICogdmRzY19jZmctPm11eF93b3Jk X3NpemUgKwo+IC0JCQkoNCAqIHZkc2NfY2ZnLT5iaXRzX3Blcl9jb21wb25lbnQgKyA0KSArCj4g LQkJCTIgKiAoNCAqIHZkc2NfY2ZnLT5iaXRzX3Blcl9jb21wb25lbnQpIC0gMjsKPiAtCS8qIE51 bWJlciBvZiBiaXRzIGluIG9uZSBTbGljZSAqLwo+IC0Jc2xpY2VfYml0cyA9IDggKiB2ZHNjX2Nm Zy0+c2xpY2VfY2h1bmtfc2l6ZSAqIHZkc2NfY2ZnLT5zbGljZV9oZWlnaHQ7Cj4gLQo+IC0Jd2hp bGUgKChudW1fZXh0cmFfbXV4X2JpdHMgPiAwKSAmJgo+IC0JICAgICAgICgoc2xpY2VfYml0cyAt IG51bV9leHRyYV9tdXhfYml0cykgJSB2ZHNjX2NmZy0+bXV4X3dvcmRfc2l6ZSkpCj4gLQkJbnVt X2V4dHJhX211eF9iaXRzLS07Cj4gLQo+IC0JaWYgKGdyb3Vwc19wZXJfbGluZSA8IHZkc2NfY2Zn LT5pbml0aWFsX3NjYWxlX3ZhbHVlIC0gOCkKPiAtCQl2ZHNjX2NmZy0+aW5pdGlhbF9zY2FsZV92 YWx1ZSA9IGdyb3Vwc19wZXJfbGluZSArIDg7Cj4gLQo+IC0JLyogc2NhbGVfZGVjcmVtZW50X2lu dGVydmFsIGNhbGN1bGF0aW9uIGFjY29yZGluZyB0byBEU0Mgc3BlYyAxLjExICovCj4gLQlpZiAo dmRzY19jZmctPmluaXRpYWxfc2NhbGVfdmFsdWUgPiA4KQo+IC0JCXZkc2NfY2ZnLT5zY2FsZV9k ZWNyZW1lbnRfaW50ZXJ2YWwgPSBncm91cHNfcGVyX2xpbmUgLwo+IC0JCQkodmRzY19jZmctPmlu aXRpYWxfc2NhbGVfdmFsdWUgLSA4KTsKPiAtCWVsc2UKPiAtCQl2ZHNjX2NmZy0+c2NhbGVfZGVj cmVtZW50X2ludGVydmFsID0gRFNDX1NDQUxFX0RFQ1JFTUVOVF9JTlRFUlZBTF9NQVg7Cj4gLQo+ IC0JdmRzY19jZmctPmZpbmFsX29mZnNldCA9IHZkc2NfY2ZnLT5yY19tb2RlbF9zaXplIC0KPiAt CQkodmRzY19jZmctPmluaXRpYWxfeG1pdF9kZWxheSAqCj4gLQkJIHZkc2NfY2ZnLT5iaXRzX3Bl cl9waXhlbCArIDgpIC8gMTYgKyBudW1fZXh0cmFfbXV4X2JpdHM7Cj4gLQo+IC0JaWYgKHZkc2Nf Y2ZnLT5maW5hbF9vZmZzZXQgPj0gdmRzY19jZmctPnJjX21vZGVsX3NpemUpIHsKPiAtCQlEUk1f REVCVUdfS01TKCJGaW5hbE9mcyA8IFJjTW9kZWxTemUgZm9yIHRoaXMgSW5pdGlhbFhtaXREZWxh eVxuIik7Cj4gLQkJcmV0dXJuIC1FUkFOR0U7Cj4gLQl9Cj4gLQo+IC0JZmluYWxfc2NhbGUgPSAo dmRzY19jZmctPnJjX21vZGVsX3NpemUgKiA4KSAvCj4gLQkJKHZkc2NfY2ZnLT5yY19tb2RlbF9z aXplIC0gdmRzY19jZmctPmZpbmFsX29mZnNldCk7Cj4gLQlpZiAodmRzY19jZmctPnNsaWNlX2hl aWdodCA+IDEpCj4gLQkJLyoKPiAtCQkgKiBOZmxCcGdPZmZzZXQgaXMgMTYgYml0IHZhbHVlIHdp dGggMTEgZnJhY3Rpb25hbCBiaXRzCj4gLQkJICogaGVuY2Ugd2UgbXVsdGlwbHkgYnkgMl4xMSBm b3IgcHJlc2VydmluZyB0aGUKPiAtCQkgKiBmcmFjdGlvbmFsIHBhcnQKPiAtCQkgKi8KPiAtCQl2 ZHNjX2NmZy0+bmZsX2JwZ19vZmZzZXQgPSBESVZfUk9VTkRfVVAoKHZkc2NfY2ZnLT5maXJzdF9s aW5lX2JwZ19vZmZzZXQgPDwgMTEpLAo+IC0JCQkJCQkJKHZkc2NfY2ZnLT5zbGljZV9oZWlnaHQg LSAxKSk7Cj4gLQllbHNlCj4gLQkJdmRzY19jZmctPm5mbF9icGdfb2Zmc2V0ID0gMDsKPiAtCj4g LQkvKiAyXjE2IC0gMSAqLwo+IC0JaWYgKHZkc2NfY2ZnLT5uZmxfYnBnX29mZnNldCA+IDY1NTM1 KSB7Cj4gLQkJRFJNX0RFQlVHX0tNUygiTmZsQnBnT2Zmc2V0IGlzIHRvbyBsYXJnZSBmb3IgdGhp cyBzbGljZSBoZWlnaHRcbiIpOwo+IC0JCXJldHVybiAtRVJBTkdFOwo+IC0JfQo+IC0KPiAtCS8q IE51bWJlciBvZiBncm91cHMgdXNlZCB0byBjb2RlIHRoZSBlbnRpcmUgc2xpY2UgKi8KPiAtCWdy b3Vwc190b3RhbCA9IGdyb3Vwc19wZXJfbGluZSAqIHZkc2NfY2ZnLT5zbGljZV9oZWlnaHQ7Cj4g LQo+IC0JLyogc2xpY2VfYnBnX29mZnNldCBpcyAxNiBiaXQgdmFsdWUgd2l0aCAxMSBmcmFjdGlv bmFsIGJpdHMgKi8KPiAtCXZkc2NfY2ZnLT5zbGljZV9icGdfb2Zmc2V0ID0gRElWX1JPVU5EX1VQ KCgodmRzY19jZmctPnJjX21vZGVsX3NpemUgLQo+IC0JCQkJCQkgICAgdmRzY19jZmctPmluaXRp YWxfb2Zmc2V0ICsKPiAtCQkJCQkJICAgIG51bV9leHRyYV9tdXhfYml0cykgPDwgMTEpLAo+IC0J CQkJCQkgIGdyb3Vwc190b3RhbCk7Cj4gLQo+IC0JaWYgKGZpbmFsX3NjYWxlID4gOSkgewo+IC0J CS8qCj4gLQkJICogU2NhbGVJbmNyZW1lbnRJbnRlcnZhbCA9Cj4gLQkJICogZmluYWxvZmZzZXQv KChOZmxCcGdPZmZzZXQgKyBTbGljZUJwZ09mZnNldCkqOChmaW5hbHNjYWxlIC0gMS4xMjUpKQo+ IC0JCSAqIGFzIChOZmxCcGdPZmZzZXQgKyBTbGljZUJwZ09mZnNldCkgaGFzIDExIGJpdCBmcmFj dGlvbmFsIHZhbHVlLAo+IC0JCSAqIHdlIG5lZWQgZGl2aWRlIGJ5IDJeMTEgZnJvbSBwc3REc2ND ZmcgdmFsdWVzCj4gLQkJICovCj4gLQkJdmRzY19jZmctPnNjYWxlX2luY3JlbWVudF9pbnRlcnZh bCA9Cj4gLQkJCQkodmRzY19jZmctPmZpbmFsX29mZnNldCAqICgxIDw8IDExKSkgLwo+IC0JCQkJ KCh2ZHNjX2NmZy0+bmZsX2JwZ19vZmZzZXQgKwo+IC0JCQkJdmRzY19jZmctPnNsaWNlX2JwZ19v ZmZzZXQpICoKPiAtCQkJCShmaW5hbF9zY2FsZSAtIDkpKTsKPiAtCX0gZWxzZSB7Cj4gLQkJLyoK PiAtCQkgKiBJZiBmaW5hbFNjYWxlVmFsdWUgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIDksIGEg dmFsdWUgb2YgMCBzaG91bGQKPiAtCQkgKiBiZSB1c2VkIHRvIGRpc2FibGUgdGhlIHNjYWxlIGlu Y3JlbWVudCBhdCB0aGUgZW5kIG9mIHRoZSBzbGljZQo+IC0JCSAqLwo+IC0JCXZkc2NfY2ZnLT5z Y2FsZV9pbmNyZW1lbnRfaW50ZXJ2YWwgPSAwOwo+IC0JfQo+IC0KPiAtCWlmICh2ZHNjX2NmZy0+ c2NhbGVfaW5jcmVtZW50X2ludGVydmFsID4gNjU1MzUpIHsKPiAtCQlEUk1fREVCVUdfS01TKCJT Y2FsZUluY3JlbWVudEludGVydmFsIGlzIGxhcmdlIGZvciBzbGljZSBoZWlnaHRcbiIpOwo+IC0J CXJldHVybiAtRVJBTkdFOwo+IC0JfQo+IC0KPiAtCS8qCj4gLQkgKiBEU0Mgc3BlYyBtZW50aW9u cyB0aGF0IGJpdHNfcGVyX3BpeGVsIHNwZWNpZmllcyB0aGUgdGFyZ2V0Cj4gLQkgKiBiaXRzL3Bp eGVsIChicHApIHJhdGUgdGhhdCBpcyB1c2VkIGJ5IHRoZSBlbmNvZGVyLAo+IC0JICogaW4gc3Rl cHMgb2YgMS8xNiBvZiBhIGJpdCBwZXIgcGl4ZWwKPiAtCSAqLwo+IC0JcmJzX21pbiA9IHZkc2Nf Y2ZnLT5yY19tb2RlbF9zaXplIC0gdmRzY19jZmctPmluaXRpYWxfb2Zmc2V0ICsKPiAtCQlESVZf Uk9VTkRfVVAodmRzY19jZmctPmluaXRpYWxfeG1pdF9kZWxheSAqCj4gLQkJCSAgICAgdmRzY19j ZmctPmJpdHNfcGVyX3BpeGVsLCAxNikgKwo+IC0JCWdyb3Vwc19wZXJfbGluZSAqIHZkc2NfY2Zn LT5maXJzdF9saW5lX2JwZ19vZmZzZXQ7Cj4gLQo+IC0JaHJkX2RlbGF5ID0gRElWX1JPVU5EX1VQ KChyYnNfbWluICogMTYpLCB2ZHNjX2NmZy0+Yml0c19wZXJfcGl4ZWwpOwo+IC0JdmRzY19jZmct PnJjX2JpdHMgPSAoaHJkX2RlbGF5ICogdmRzY19jZmctPmJpdHNfcGVyX3BpeGVsKSAvIDE2Owo+ IC0JdmRzY19jZmctPmluaXRpYWxfZGVjX2RlbGF5ID0gaHJkX2RlbGF5IC0gdmRzY19jZmctPmlu aXRpYWxfeG1pdF9kZWxheTsKPiAtCj4gLQlyZXR1cm4gMDsKPiAtfQo+IC0KPiAgaW50IGludGVs X2RwX2NvbXB1dGVfZHNjX3BhcmFtcyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAo+ICAJCQkJ c3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKQo+ICB7Cj4gQEAgLTU3NSw3ICs0 NTIsNyBAQCBpbnQgaW50ZWxfZHBfY29tcHV0ZV9kc2NfcGFyYW1zKHN0cnVjdCBpbnRlbF9kcCAq aW50ZWxfZHAsCj4gIAl2ZHNjX2NmZy0+aW5pdGlhbF9zY2FsZV92YWx1ZSA9ICh2ZHNjX2NmZy0+ cmNfbW9kZWxfc2l6ZSA8PCAzKSAvCj4gIAkJKHZkc2NfY2ZnLT5yY19tb2RlbF9zaXplIC0gdmRz Y19jZmctPmluaXRpYWxfb2Zmc2V0KTsKPiAgCj4gLQlyZXR1cm4gaW50ZWxfY29tcHV0ZV9yY19w YXJhbWV0ZXJzKHZkc2NfY2ZnKTsKPiArCXJldHVybiBkcm1fZHNjX2NvbXB1dGVfcmNfcGFyYW1l dGVycyh2ZHNjX2NmZyk7Cj4gIH0KPiAgCj4gIGVudW0gaW50ZWxfZGlzcGxheV9wb3dlcl9kb21h aW4KPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2RzYy5oIGIvaW5jbHVkZS9kcm0vZHJt X2RzYy5oCj4gaW5kZXggZDAzZjFiODM0MjFhLi5hZDQzNDk0ZjFjYzggMTAwNjQ0Cj4gLS0tIGEv aW5jbHVkZS9kcm0vZHJtX2RzYy5oCj4gKysrIGIvaW5jbHVkZS9kcm0vZHJtX2RzYy5oCj4gQEAg LTQ4MSw1ICs0ODEsNiBAQCBzdHJ1Y3QgZHJtX2RzY19wcHNfaW5mb2ZyYW1lIHsKPiAgdm9pZCBk cm1fZHNjX2RwX3Bwc19oZWFkZXJfaW5pdChzdHJ1Y3QgZHJtX2RzY19wcHNfaW5mb2ZyYW1lICpw cHNfc2RwKTsKPiAgdm9pZCBkcm1fZHNjX3Bwc19pbmZvZnJhbWVfcGFjayhzdHJ1Y3QgZHJtX2Rz Y19wcHNfaW5mb2ZyYW1lICpwcHNfc2RwLAo+ICAJCQkJY29uc3Qgc3RydWN0IGRybV9kc2NfY29u ZmlnICpkc2NfY2ZnKTsKPiAraW50IGRybV9kc2NfY29tcHV0ZV9yY19wYXJhbWV0ZXJzKHN0cnVj dCBkcm1fZHNjX2NvbmZpZyAqdmRzY19jZmcpOwo+ICAKPiAgI2VuZGlmIC8qIF9EUk1fRFNDX0hf ICovCj4gLS0gCj4gMi4xNy4xCj4gCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2ludGVsLWdmeA==