From mboxrd@z Thu Jan 1 00:00:00 1970 From: Manasi Navare Subject: Re: [PATCH v8 07/19] drm/i915/dp: Compute DSC pipe config in atomic check Date: Wed, 7 Nov 2018 14:31:56 -0800 Message-ID: <20181107223156.GC25820@intel.com> References: <20181102213138.301-1-manasi.d.navare@intel.com> <20181102213138.301-8-manasi.d.navare@intel.com> <20181103020902.GA11271@intel.com> <20181106144256.GX9144@intel.com> <20181106203759.GF26420@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20181106203759.GF26420@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Cc: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gVHVlLCBOb3YgMDYsIDIwMTggYXQgMTI6Mzc6NTlQTSAtMDgwMCwgTWFuYXNpIE5hdmFyZSB3 cm90ZToKPiBPbiBUdWUsIE5vdiAwNiwgMjAxOCBhdCAwNDo0Mjo1NlBNICswMjAwLCBWaWxsZSBT eXJqw6Rsw6Qgd3JvdGU6Cj4gPiBPbiBGcmksIE5vdiAwMiwgMjAxOCBhdCAwNzowOTowM1BNIC0w NzAwLCBNYW5hc2kgTmF2YXJlIHdyb3RlOgo+ID4gPiBPbiBGcmksIE5vdiAwMiwgMjAxOCBhdCAw MjozMToyNlBNIC0wNzAwLCBNYW5hc2kgTmF2YXJlIHdyb3RlOgo+ID4gPiA+IERTQyBwYXJhbXMg bGlrZSB0aGUgZW5hYmxlLCBjb21wcmVzc2VkIGJwcCwgc2xpY2UgY291bnQgYW5kCj4gPiA+ID4g ZHNjX3NwbGl0IGFyZSBhZGRlZCB0byB0aGUgaW50ZWxfY3J0Y19zdGF0ZS4gVGhlc2UgcGFyYW1l dGVycwo+ID4gPiA+IGFyZSBzZXQgYmFzZWQgb24gdGhlIHJlcXVlc3RlZCBtb2RlIGFuZCBhdmFp bGFibGUgbGluayBwYXJhbWV0ZXJzCj4gPiA+ID4gZHVyaW5nIHRoZSBwaXBlIGNvbmZpZ3VyYXRp b24gaW4gYXRvbWljIGNoZWNrIHBoYXNlLgo+ID4gPiA+IFRoZXNlIHZhbHVlcyBhcmUgdGhlbiBs YXRlciB1c2VkIHRvIHBvcHVsYXRlIHRoZSByZW1haW5pbmcgRFNDCj4gPiA+ID4gYW5kIFJDIHBh cmFtZXRlcnMgYmVmb3JlIGVuYmFsaW5nIERTQyBpbiBhdG9taWMgY29tbWl0Lgo+ID4gPiA+IAo+ ID4gPiA+IHYxMToKPiA+ID4gPiAqIENvbnN0IGNydGNfc3RhdGUsIHJlamVjdCBEU0Mgb24gRFAg d2l0aG91dCBGRUMgKFZpbGxlKQo+ID4gPiA+ICogRG9udCBzZXQgZHNjX3NwbGl0IHRvIGZhbHNl IChWaWxsZSkKPiA+ID4gPiB2MTA6Cj4gPiA+ID4gKiBBZGQgYSBoZWxwZXIgZm9yIGRwX2RzYyBz dXBwb3J0IChWaWxsZSkKPiA+ID4gPiAqIFNldCBwaXBlX2NvbmZpZyB0byBtYXggYnBwLCBsaW5r IHBhcmFtcyBmb3IgRFNDIGZvciBub3cgKFZpbGxlKQo+ID4gPiA+ICogQ29tcHV0ZSBicHAgLSB1 c2UgZHAgZHNjIHN1cHBvcnQgaGVscGVyIChWaWxsZSkKPiA+ID4gPiB2OToKPiA+ID4gPiAqIFJl YmFzZSBvbiB0b3Agb2YgZHJtLXRpcCB0aGF0IG5vdyB1c2VzIGZhc3RfbmFycm93IGNvbmZpZwo+ ID4gPiA+IGZvciBlZHAgKE1hbmFzaSkKPiA+ID4gPiB2ODoKPiA+ID4gPiAqIENoZWNrIGZvciBE U0MgYnBjIG5vdCAwIChtYW5hc2kpCj4gPiA+ID4gCj4gPiA+ID4gdjc6Cj4gPiA+ID4gKiBGaXgg aW5kZW50YXRpb24gaW4gY29tcHV0ZV9tX24gKE1hbmFzaSkKPiA+ID4gPiAKPiA+ID4gPiB2NiAo RnJvbSBHYXVyYXYpOgo+ID4gPiA+ICogUmVtb3ZlIGZ1bmN0aW9uIGNhbGwgb2YgaW50ZWxfZHBf Y29tcHV0ZV9kc2NfcGFyYW1zKCkgYW5kCj4gPiA+ID4gaW52b2tlIGludGVsX2RwX2NvbXB1dGVf ZHNjX3BhcmFtcygpIGluIHRoZSBwYXRjaCB3aGVyZQo+ID4gPiA+IGl0IGlzIGRlZmluZWQgdG8g Zml4IGNvbXBpbGF0aW9uIHdhcm5pbmcgKEdhdXJhdikKPiA+ID4gPiAKPiA+ID4gPiB2NToKPiA+ ID4gPiBBZGQgZHJtX2RzY19jZmcgaW4gaW50ZWxfY3J0Y19zdGF0ZSAoTWFuYXNpKQo+ID4gPiA+ IAo+ID4gPiA+IHY0Ogo+ID4gPiA+ICogUmViYXNlIG9uIHJlZmFjdG9yaW5nIG9mIGludGVsX2Rw X2NvbXB1dGVfY29uZmlnIG9uIHRpcCAoTWFuYXNpKQo+ID4gPiA+ICogQWRkIGEgY29tbWVudCB3 aHkgd2UgbmVlZCB0byBjaGVjayBQU1Igd2hpbGUgZW5hYmxpbmcgRFNDIChHYXVyYXYpCj4gPiA+ ID4gCj4gPiA+ID4gdjM6Cj4gPiA+ID4gKiBDaGVjayBQUFIgPiBtYXhfY2RjbG9jayB0byB1c2Ug MiBWRFNDIGluc3RhbmNlcyAoVmlsbGUpCj4gPiA+ID4gCj4gPiA+ID4gdjI6Cj4gPiA+ID4gKiBB ZGQgaWYtZWxzZSBmb3IgZURQL0RQIChHYXVyYXYpCj4gPiA+ID4gCj4gPiA+ID4gQ2M6IEphbmkg TmlrdWxhIDxqYW5pLm5pa3VsYUBsaW51eC5pbnRlbC5jb20+Cj4gPiA+ID4gQ2M6IFZpbGxlIFN5 cmphbGEgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgo+ID4gPiA+IENjOiBBbnVzaGEg U3JpdmF0c2EgPGFudXNoYS5zcml2YXRzYUBpbnRlbC5jb20+Cj4gPiA+ID4gQ2M6IEdhdXJhdiBL IFNpbmdoIDxnYXVyYXYuay5zaW5naEBpbnRlbC5jb20+Cj4gPiA+ID4gU2lnbmVkLW9mZi1ieTog TWFuYXNpIE5hdmFyZSA8bWFuYXNpLmQubmF2YXJlQGludGVsLmNvbT4KPiA+ID4gPiBSZXZpZXdl ZC1ieTogQW51c2hhIFNyaXZhdHNhIDxhbnVzaGEuc3JpdmF0c2FAaW50ZWwuY29tPgo+ID4gPiA+ IEFja2VkLWJ5OiBKYW5pIE5pa3VsYSA8amFuaS5uaWt1bGFAbGludXguaW50ZWwuY29tPgo+ID4g PiA+IC0tLQo+ID4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgfCAg MjAgKysrLQo+ID4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmggfCAg IDMgKy0KPiA+ID4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyAgICAgIHwgMTY3 ICsrKysrKysrKysrKysrKysrKysrKysrKy0tLQo+ID4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcF9tc3QuYyAgfCAgIDIgKy0KPiA+ID4gPiAgNCBmaWxlcyBjaGFuZ2VkLCAxNjYg aW5zZXJ0aW9ucygrKSwgMjYgZGVsZXRpb25zKC0pCj4gPiA+ID4gCj4gPiA+ID4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ID4gPiA+IGluZGV4IGIyMTlkNTg1ODE2MC4uNDc3ZTUz YzM3MzUzIDEwMDY0NAo+ID4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rp c3BsYXkuYwo+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXku Ywo+ID4gPiA+IEBAIC02NDQyLDcgKzY0NDIsNyBAQCBzdGF0aWMgaW50IGlyb25sYWtlX2ZkaV9j b21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YywKPiA+ID4gPiAgCj4g PiA+ID4gIAlwaXBlX2NvbmZpZy0+ZmRpX2xhbmVzID0gbGFuZTsKPiA+ID4gPiAgCj4gPiA+ID4g LQlpbnRlbF9saW5rX2NvbXB1dGVfbV9uKHBpcGVfY29uZmlnLT5waXBlX2JwcCwgbGFuZSwgZmRp X2RvdGNsb2NrLAo+ID4gPiA+ICsJaW50ZWxfbGlua19jb21wdXRlX21fbihwaXBlX2NvbmZpZy0+ cGlwZV9icHAsIDAsIGxhbmUsIGZkaV9kb3RjbG9jaywKPiA+ID4gPiAgCQkJICAgICAgIGxpbmtf YncsICZwaXBlX2NvbmZpZy0+ZmRpX21fbiwgZmFsc2UpOwo+ID4gPiA+ICAKPiA+ID4gPiAgCXJl dCA9IGlyb25sYWtlX2NoZWNrX2ZkaV9sYW5lcyhkZXYsIGludGVsX2NydGMtPnBpcGUsIHBpcGVf Y29uZmlnKTsKPiA+ID4gPiBAQCAtNjY3OSwxNyArNjY3OSwyNSBAQCBzdGF0aWMgdm9pZCBjb21w dXRlX21fbih1bnNpZ25lZCBpbnQgbSwgdW5zaWduZWQgaW50IG4sCj4gPiA+ID4gIH0KPiA+ID4g PiAgCj4gPiA+ID4gIHZvaWQKPiA+ID4gPiAtaW50ZWxfbGlua19jb21wdXRlX21fbihpbnQgYml0 c19wZXJfcGl4ZWwsIGludCBubGFuZXMsCj4gPiA+ID4gK2ludGVsX2xpbmtfY29tcHV0ZV9tX24o aW50IGJpdHNfcGVyX3BpeGVsLCB1aW50MTZfdCBjb21wcmVzc2VkX2JwcCwKPiA+ID4gPiArCQkg ICAgICAgaW50IG5sYW5lcywKPiA+ID4gPiAgCQkgICAgICAgaW50IHBpeGVsX2Nsb2NrLCBpbnQg bGlua19jbG9jaywKPiA+ID4gPiAgCQkgICAgICAgc3RydWN0IGludGVsX2xpbmtfbV9uICptX24s Cj4gPiA+ID4gIAkJICAgICAgIGJvb2wgY29uc3RhbnRfbikKPiA+ID4gPiAgewo+ID4gPiA+ICAJ bV9uLT50dSA9IDY0Owo+ID4gPiA+ICAKPiA+ID4gPiAtCWNvbXB1dGVfbV9uKGJpdHNfcGVyX3Bp eGVsICogcGl4ZWxfY2xvY2ssCj4gPiA+ID4gLQkJICAgIGxpbmtfY2xvY2sgKiBubGFuZXMgKiA4 LAo+ID4gPiA+IC0JCSAgICAmbV9uLT5nbWNoX20sICZtX24tPmdtY2hfbiwKPiA+ID4gPiAtCQkg ICAgY29uc3RhbnRfbik7Cj4gPiA+ID4gKwkvKiBGb3IgRFNDLCBEYXRhIE0vTiBjYWxjdWxhdGlv biB1c2VzIGNvbXByZXNzZWQgQlBQICovCj4gPiA+ID4gKwlpZiAoY29tcHJlc3NlZF9icHApCj4g PiA+ID4gKwkJY29tcHV0ZV9tX24oY29tcHJlc3NlZF9icHAgKiBwaXhlbF9jbG9jaywKPiA+ID4g PiArCQkJICAgIGxpbmtfY2xvY2sgKiBubGFuZXMgKiA4LAo+ID4gPiA+ICsJCQkgICAgJm1fbi0+ Z21jaF9tLCAmbV9uLT5nbWNoX24sCj4gPiA+ID4gKwkJCSAgICBjb25zdGFudF9uKTsKPiA+ID4g PiArCWVsc2UKPiA+ID4gPiArCQljb21wdXRlX21fbihiaXRzX3Blcl9waXhlbCAqIHBpeGVsX2Ns b2NrLAo+ID4gPiA+ICsJCQkgICAgbGlua19jbG9jayAqIG5sYW5lcyAqIDgsCj4gPiA+ID4gKwkJ CSAgICAmbV9uLT5nbWNoX20sICZtX24tPmdtY2hfbiwKPiA+ID4gPiArCQkJICAgIGNvbnN0YW50 X24pOwo+ID4gPiA+ICAKPiA+ID4gPiAgCWNvbXB1dGVfbV9uKHBpeGVsX2Nsb2NrLCBsaW5rX2Ns b2NrLAo+ID4gPiA+ICAJCSAgICAmbV9uLT5saW5rX20sICZtX24tPmxpbmtfbiwKPiA+ID4gPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5oIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5oCj4gPiA+ID4gaW5kZXggNWQ1MGRlY2JjYmI1 Li5iMGIyM2UxZTkzOTIgMTAwNjQ0Cj4gPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZGlzcGxheS5oCj4gPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZGlzcGxheS5oCj4gPiA+ID4gQEAgLTQwNyw3ICs0MDcsOCBAQCBzdHJ1Y3QgaW50ZWxfbGlua19t X24gewo+ID4gPiA+ICAJICAgICAoX19pKSsrKSBcCj4gPiA+ID4gIAkJZm9yX2VhY2hfaWYocGxh bmUpCj4gPiA+ID4gIAo+ID4gPiA+IC12b2lkIGludGVsX2xpbmtfY29tcHV0ZV9tX24oaW50IGJw cCwgaW50IG5sYW5lcywKPiA+ID4gPiArdm9pZCBpbnRlbF9saW5rX2NvbXB1dGVfbV9uKGludCBi cHAsIHVpbnQxNl90IGNvbXByZXNzZWRfYnBwLAo+ID4gPiA+ICsJCQkgICAgaW50IG5sYW5lcywK PiA+ID4gPiAgCQkJICAgIGludCBwaXhlbF9jbG9jaywgaW50IGxpbmtfY2xvY2ssCj4gPiA+ID4g IAkJCSAgICBzdHJ1Y3QgaW50ZWxfbGlua19tX24gKm1fbiwKPiA+ID4gPiAgCQkJICAgIGJvb2wg Y29uc3RhbnRfbik7Cj4gPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2RwLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gPiA+ID4gaW5kZXgg YjM5YjRiZGE4ZTQwLi41ODMyNmZjOWQ5MzUgMTAwNjQ0Cj4gPiA+ID4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2RwLmMKPiA+ID4gPiBAQCAtNDcsNiArNDcsOCBAQAo+ID4gPiA+ICAKPiA+ID4gPiAg LyogRFAgRFNDIHNtYWxsIGpvaW5lciBoYXMgMiBGSUZPcyBlYWNoIG9mIDY0MCB4IDYgYnl0ZXMg Ki8KPiA+ID4gPiAgI2RlZmluZSBEUF9EU0NfTUFYX1NNQUxMX0pPSU5FUl9SQU1fQlVGRkVSCTYx NDQwCj4gPiA+ID4gKyNkZWZpbmUgRFBfRFNDX01JTl9TVVBQT1JURURfQlBDCQk4Cj4gPiA+ID4g KyNkZWZpbmUgRFBfRFNDX01BWF9TVVBQT1JURURfQlBDCQkxMAo+ID4gPiA+ICAKPiA+ID4gPiAg LyogRFAgRFNDIHRocm91Z2hwdXQgdmFsdWVzIHVzZWQgZm9yIHNsaWNlIGNvdW50IGNhbGN1bGF0 aW9ucyBLUGl4ZWxzL3MgKi8KPiA+ID4gPiAgI2RlZmluZSBEUF9EU0NfUEVBS19QSVhFTF9SQVRF CQkJMjcyMDAwMAo+ID4gPiA+IEBAIC0xODQwLDYgKzE4NDIsMjkgQEAgc3RydWN0IGxpbmtfY29u ZmlnX2xpbWl0cyB7Cj4gPiA+ID4gIAlpbnQgbWluX2JwcCwgbWF4X2JwcDsKPiA+ID4gPiAgfTsK PiA+ID4gPiAgCj4gPiA+ID4gK3N0YXRpYyBib29sIGludGVsX2RwX3NvdXJjZV9zdXBwb3J0c19k c2Moc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKPiA+ID4gPiArCQkJCQkgY29uc3Qgc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKQo+ID4gPiA+ICt7Cj4gPiA+ID4gKwlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkcF90b19pOTE1KGludGVsX2RwKTsKPiA+ ID4gPiArCj4gPiA+ID4gKwkvKiBGSVhNRTogRkVDIG5lZWRlZCBmb3IgZXh0ZXJuYWwgRFAgdW50 aWwgdGhlbiByZWplY3QgRFNDIG9uIERQICovCj4gPiA+ID4gKwlpZiAoIWludGVsX2RwX2lzX2Vk cChpbnRlbF9kcCkpCj4gPiA+ID4gKwkJcmV0dXJuIGZhbHNlOwo+ID4gPiA+ICsKPiA+ID4gPiAr CXJldHVybiBJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEwICYmCj4gPiA+ID4gKwkJcGlwZV9jb25m aWctPmNwdV90cmFuc2NvZGVyICE9IFRSQU5TQ09ERVJfQTsKPiA+ID4gPiArfQo+ID4gPiA+ICsK PiA+ID4gPiArc3RhdGljIGJvb2wgaW50ZWxfZHBfc3VwcG9ydHNfZHNjKHN0cnVjdCBpbnRlbF9k cCAqaW50ZWxfZHAsCj4gPiA+ID4gKwkJCQkgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpwaXBlX2NvbmZpZykKPiA+ID4gPiArewo+ID4gPiA+ICsJaWYgKCFpbnRlbF9kcF9zb3VyY2Vf c3VwcG9ydHNfZHNjKGludGVsX2RwLCBwaXBlX2NvbmZpZykgfHwKPiA+ID4gPiArCSAgICAhZHJt X2RwX3Npbmtfc3VwcG9ydHNfZHNjKGludGVsX2RwLT5kc2NfZHBjZCkpCj4gPiA+ID4gKwkJcmV0 dXJuIGZhbHNlOwo+ID4gPiA+ICsKPiA+ID4gPiArCXJldHVybiB0cnVlOwo+ID4gPiA+ICt9Cj4g PiA+ID4gKwo+ID4gPiA+ICBzdGF0aWMgaW50IGludGVsX2RwX2NvbXB1dGVfYnBwKHN0cnVjdCBp bnRlbF9kcCAqaW50ZWxfZHAsCj4gPiA+ID4gIAkJCQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq cGlwZV9jb25maWcpCj4gPiA+ID4gIHsKPiA+ID4gPiBAQCAtMTg2Myw2ICsxODg4LDE1IEBAIHN0 YXRpYyBpbnQgaW50ZWxfZHBfY29tcHV0ZV9icHAoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwK PiA+ID4gPiAgCQl9Cj4gPiA+ID4gIAl9Cj4gPiA+ID4gIAo+ID4gPiA+ICsJLyogSWYgRFNDIGlz IHN1cHBvcnRlZCwgdXNlIHRoZSBtYXggdmFsdWUgcmVwb3J0ZWQgYnkgcGFuZWwgKi8KPiA+ID4g PiArCWlmIChpbnRlbF9kcF9zdXBwb3J0c19kc2MoaW50ZWxfZHAsIHBpcGVfY29uZmlnKSkgewo+ ID4gPiA+ICsJCWJwYyA9IG1pbl90KHU4LAo+ID4gPiA+ICsJCQkgICAgZHJtX2RwX2RzY19zaW5r X21heF9jb2xvcl9kZXB0aChpbnRlbF9kcC0+ZHNjX2RwY2QpLAo+ID4gPiA+ICsJCQkgICAgRFBf RFNDX01BWF9TVVBQT1JURURfQlBDKTsKPiA+ID4gPiArCQlpZiAoYnBjKQo+ID4gPiA+ICsJCQli cHAgPSBtaW4oYnBwLCAzKmJwYyk7CgpJIGFtIGp1c3QgbGVhdmluZyBpdCBhdCBicHAgPSAzICpi cGMgaGVyZSBzaW5jZSB0YWtpbmcgYSBtaW4gd2lsbCBicmluZyBpdCBkb3duIHRvIHRoZSB2YnQg YnBwCndoaWNoIHdlIGRvbnQgd2FudCBpbiBjYXNlIERTQyBpcyBzdXBwb29ydGVkIHRoYXQgc2hv dWxkIG92ZXJyaWRlIHRoZSB2YnQgYW5kIEVESUQgYnBwLgoKTWFuYXNpCgo+ID4gPiAKPiA+ID4g VmlsbGUsIHRoZSBwcm9ibGVtIHdpdGggY2hvc2luZyB0aGUgbWluIGJldHdlZW4gZXhpc3Rpbmcg YnBwIGFuZCAzICogYnBjIChjb21wdXRlZCBmcm9tIERTQyBkcGNkKSBpcyB0aGF0IEVESUQgYmFz ZWQgYnBjCj4gPiA+IG1pZ2h0IGJlIGxvd2VyIGFuZCBpbiBjYXNlIERTQyBpcyBzdXBwb3J0ZWQs IHRoZSBicGMgdmFsdWUgc2hvdWxkIGJlIGJhc2VkIG9uIHRoZSBkc2MgY29sb3IgZGVwdGggYW5k IHRoYXQgc2hvdWxkCj4gPiA+IG92ZXJyaWRlIHRoZSB2YWx1ZSBvYnRhaW5lZCBmcm9tIEVESUQu ICBUaGlzIHdhcyBjb25maXJtZWQgZnJvbSB0aGUgVkRTQyBwcm9ncmFtbWluZyBkb2N1bWVudHMg b2J0YWluZWQgZnJvbQo+ID4gPiBIVyBhcmNoaXRlY3R1cmUgZm9sa3MKPiA+ID4gCj4gPiA+IFNv IGkgdGhpbmsgaXQgc2hvdWxkIHN0aWxsIGJlIGlmIERTQyBzdXBwb3J0ZWQgdXNlIHRoZSBicGMg ZGlyZWN0bHkgZnJvbSBtaW5fdCh1OCwgZHJtX2RwX2RzY19zaW5rX21heF9jb2xvcl9kZXB0aChp bnRlbF9kcC0+ZHNjX2RwY2QpLERQX0RTQ19NQVhfU1VQUE9SVEVEX0JQQyk7Cj4gPiAKPiA+IE1h eWJlCj4gPiAKPiA+IGJwY19taW4gPSBzb21ldGhpbmc7Cj4gPiBicGNfbWF4ID0gc29tZXRoaW5n X2Vsc2U7Cj4gCj4gU28gdGhpcyBicGNfbWF4IHdpbGwgY29tZSBmcm9tIGludGVsX2RwX2NvbXB1 dGVfYnBwKCkgYW5kIHRoZXJlIGl0IHdpbGwganVzdCByZXR1cm4gYnBjIGZyb20gRFNDIERQQ0Qg Y29sb3IgZGVwdGggaWYgRFNDIHN1cHBvcnRlZC4KPiBTbyB0aGVuIGluIHRoYXQgZnVuY3Rpb24g d2UgZG9udCBuZWVkIG1pbihicHAsIDMqYnBjKTsgcmlnaHQ/Cj4gCj4gPiBicHAgPSBjbGFtcChi cHAsIGJwY19taW4qMywgYnBjX21heCozKTsKPiAKPiBBbmQgdGhlbiB3ZSBjbGFtcCB0aGUgcGlw ZV9icHAgYmV0d2VlbiBtaW4gYnBjIGFuZCBtYXggYnBjLCByaWdodD8KPiAKPiBNYW5hc2kKPiAK PiAKPiA+IAo+ID4gRWl0aGVyIHRoYXQgb3Igd2UganVzdCByZXR1cm4gYW4gZXJyb3Igb2YgdGhl IHJlcXVlc3RlZCBicHAgaXMgYmVsb3cgdGhlCj4gPiBkc2MgbWluaW11bS4KPiA+IAo+ID4gPiAK PiA+ID4gTWFuYXNpCj4gPiA+IAo+ID4gPiA+ICsJfQo+ID4gPiA+ICsKPiA+ID4gPiAgCXJldHVy biBicHA7Cj4gPiA+ID4gIH0KPiA+ID4gPiAgCj4gPiA+ID4gQEAgLTE5NzQsNiArMjAwOCw4MCBA QCBpbnRlbF9kcF9jb21wdXRlX2xpbmtfY29uZmlnX2Zhc3Qoc3RydWN0IGludGVsX2RwICppbnRl bF9kcCwKPiA+ID4gPiAgCXJldHVybiBmYWxzZTsKPiA+ID4gPiAgfQo+ID4gPiA+ICAKPiA+ID4g PiArc3RhdGljIGJvb2wgaW50ZWxfZHBfZHNjX2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9k cCAqaW50ZWxfZHAsCj4gPiA+ID4gKwkJCQkJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVf Y29uZmlnLAo+ID4gPiA+ICsJCQkJCWNvbnN0IHN0cnVjdCBsaW5rX2NvbmZpZ19saW1pdHMgKmxp bWl0cykKPiA+ID4gPiArewo+ID4gPiA+ICsJc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqZGln X3BvcnQgPSBkcF90b19kaWdfcG9ydChpbnRlbF9kcCk7Cj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRpZ19wb3J0LT5iYXNlLmJhc2UuZGV2KTsK PiA+ID4gPiArCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlID0gJnBpcGVf Y29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGU7Cj4gPiA+ID4gKwl1MTYgZHNjX21heF9vdXRwdXRf YnBwID0gMDsKPiA+ID4gPiArCXU4IGRzY19kcF9zbGljZV9jb3VudCA9IDA7Cj4gPiA+ID4gKwo+ ID4gPiA+ICsJaWYgKCFpbnRlbF9kcF9zdXBwb3J0c19kc2MoaW50ZWxfZHAsIHBpcGVfY29uZmln KSkKPiA+ID4gPiArCQlyZXR1cm4gZmFsc2U7Cj4gPiA+ID4gKwo+ID4gPiA+ICsJLyogRFNDIG5v dCBzdXBwb3J0ZWQgZm9yIERTQyBzaW5rIEJQQyA8IDggKi8KPiA+ID4gPiArCWlmIChsaW1pdHMt Pm1heF9icHAgPCAzICogRFBfRFNDX01JTl9TVVBQT1JURURfQlBDKSB7Cj4gPiA+ID4gKwkJRFJN X0RFQlVHX0tNUygiTm8gRFNDIHN1cHBvcnQgZm9yIGxlc3MgdGhhbiA4YnBjXG4iKTsKPiA+ID4g PiArCQlyZXR1cm4gZmFsc2U7Cj4gPiA+ID4gKwl9Cj4gPiA+ID4gKwo+ID4gPiA+ICsJLyoKPiA+ ID4gPiArCSAqIEZvciBub3cgZW5hYmxlIERTQyBmb3IgbWF4IGJwcCwgbWF4IGxpbmsgcmF0ZSwg bWF4IGxhbmUgY291bnQuCj4gPiA+ID4gKwkgKiBPcHRpbWl6ZSB0aGlzIGxhdGVyIGZvciB0aGUg bWluaW11bSBwb3NzaWJsZSBsaW5rIHJhdGUvbGFuZSBjb3VudAo+ID4gPiA+ICsJICogd2l0aCBE U0MgZW5hYmxlZCBmb3IgdGhlIHJlcXVlc3RlZCBtb2RlLgo+ID4gPiA+ICsJICovCj4gPiA+ID4g KwlwaXBlX2NvbmZpZy0+cGlwZV9icHAgPSBsaW1pdHMtPm1heF9icHA7Cj4gPiA+ID4gKwlwaXBl X2NvbmZpZy0+cG9ydF9jbG9jayA9IGludGVsX2RwLT5jb21tb25fcmF0ZXNbbGltaXRzLT5tYXhf Y2xvY2tdOwo+ID4gPiA+ICsJcGlwZV9jb25maWctPmxhbmVfY291bnQgPSBsaW1pdHMtPm1heF9s YW5lX2NvdW50Owo+ID4gPiA+ICsKPiA+ID4gPiArCWlmIChpbnRlbF9kcF9pc19lZHAoaW50ZWxf ZHApKSB7Cj4gPiA+ID4gKwkJcGlwZV9jb25maWctPmRzY19wYXJhbXMuY29tcHJlc3NlZF9icHAg PQo+ID4gPiA+ICsJCQlkcm1fZWRwX2RzY19zaW5rX291dHB1dF9icHAoaW50ZWxfZHAtPmRzY19k cGNkKSA+PiA0Owo+ID4gPiA+ICsJCXBpcGVfY29uZmlnLT5kc2NfcGFyYW1zLnNsaWNlX2NvdW50 ID0KPiA+ID4gPiArCQkJZHJtX2RwX2RzY19zaW5rX21heF9zbGljZV9jb3VudChpbnRlbF9kcC0+ ZHNjX2RwY2QsCj4gPiA+ID4gKwkJCQkJCQl0cnVlKTsKPiA+ID4gPiArCX0gZWxzZSB7Cj4gPiA+ ID4gKwkJZHNjX21heF9vdXRwdXRfYnBwID0KPiA+ID4gPiArCQkJaW50ZWxfZHBfZHNjX2dldF9v dXRwdXRfYnBwKHBpcGVfY29uZmlnLT5wb3J0X2Nsb2NrLAo+ID4gPiA+ICsJCQkJCQkgICAgcGlw ZV9jb25maWctPmxhbmVfY291bnQsCj4gPiA+ID4gKwkJCQkJCSAgICBhZGp1c3RlZF9tb2RlLT5j cnRjX2Nsb2NrLAo+ID4gPiA+ICsJCQkJCQkgICAgYWRqdXN0ZWRfbW9kZS0+Y3J0Y19oZGlzcGxh eSk7Cj4gPiA+ID4gKwkJZHNjX2RwX3NsaWNlX2NvdW50ID0KPiA+ID4gPiArCQkJaW50ZWxfZHBf ZHNjX2dldF9zbGljZV9jb3VudChpbnRlbF9kcCwKPiA+ID4gPiArCQkJCQkJICAgICBhZGp1c3Rl ZF9tb2RlLT5jcnRjX2Nsb2NrLAo+ID4gPiA+ICsJCQkJCQkgICAgIGFkanVzdGVkX21vZGUtPmNy dGNfaGRpc3BsYXkpOwo+ID4gPiA+ICsJCWlmICghKGRzY19tYXhfb3V0cHV0X2JwcCAmJiBkc2Nf ZHBfc2xpY2VfY291bnQpKSB7Cj4gPiA+ID4gKwkJCURSTV9ERUJVR19LTVMoIkNvbXByZXNzZWQg QlBQL1NsaWNlIENvdW50IG5vdCBzdXBwb3J0ZWRcbiIpOwo+ID4gPiA+ICsJCQlyZXR1cm4gZmFs c2U7Cj4gPiA+ID4gKwkJfQo+ID4gPiA+ICsJCXBpcGVfY29uZmlnLT5kc2NfcGFyYW1zLmNvbXBy ZXNzZWRfYnBwID0gZHNjX21heF9vdXRwdXRfYnBwID4+IDQ7Cj4gPiA+ID4gKwkJcGlwZV9jb25m aWctPmRzY19wYXJhbXMuc2xpY2VfY291bnQgPSBkc2NfZHBfc2xpY2VfY291bnQ7Cj4gPiA+ID4g Kwl9Cj4gPiA+ID4gKwkvKgo+ID4gPiA+ICsJICogVkRTQyBlbmdpbmUgb3BlcmF0ZXMgYXQgMSBQ aXhlbCBwZXIgY2xvY2ssIHNvIGlmIHBlYWsgcGl4ZWwgcmF0ZQo+ID4gPiA+ICsJICogaXMgZ3Jl YXRlciB0aGFuIHRoZSBtYXhpbXVtIENkY2xvY2sgYW5kIGlmIHNsaWNlIGNvdW50IGlzIGV2ZW4K PiA+ID4gPiArCSAqIHRoZW4gd2UgbmVlZCB0byB1c2UgMiBWRFNDIGluc3RhbmNlcy4KPiA+ID4g PiArCSAqLwo+ID4gPiA+ICsJaWYgKGFkanVzdGVkX21vZGUtPmNydGNfY2xvY2sgPiBkZXZfcHJp di0+bWF4X2NkY2xrX2ZyZXEpIHsKPiA+ID4gPiArCQlpZiAocGlwZV9jb25maWctPmRzY19wYXJh bXMuc2xpY2VfY291bnQgPiAxKSB7Cj4gPiA+ID4gKwkJCXBpcGVfY29uZmlnLT5kc2NfcGFyYW1z LmRzY19zcGxpdCA9IHRydWU7Cj4gPiA+ID4gKwkJfSBlbHNlIHsKPiA+ID4gPiArCQkJRFJNX0RF QlVHX0tNUygiQ2Fubm90IHNwbGl0IHN0cmVhbSB0byB1c2UgMiBWRFNDIGluc3RhbmNlc1xuIik7 Cj4gPiA+ID4gKwkJCXJldHVybiBmYWxzZTsKPiA+ID4gPiArCQl9Cj4gPiA+ID4gKwl9Cj4gPiA+ ID4gKwlwaXBlX2NvbmZpZy0+ZHNjX3BhcmFtcy5jb21wcmVzc2lvbl9lbmFibGUgPSB0cnVlOwo+ ID4gPiA+ICsJRFJNX0RFQlVHX0tNUygiRFAgRFNDIGNvbXB1dGVkIHdpdGggSW5wdXQgQnBwID0g JWQgIgo+ID4gPiA+ICsJCSAgICAgICJDb21wcmVzc2VkIEJwcCA9ICVkIFNsaWNlIENvdW50ID0g JWRcbiIsCj4gPiA+ID4gKwkJICAgICAgcGlwZV9jb25maWctPnBpcGVfYnBwLAo+ID4gPiA+ICsJ CSAgICAgIHBpcGVfY29uZmlnLT5kc2NfcGFyYW1zLmNvbXByZXNzZWRfYnBwLAo+ID4gPiA+ICsJ CSAgICAgIHBpcGVfY29uZmlnLT5kc2NfcGFyYW1zLnNsaWNlX2NvdW50KTsKPiA+ID4gPiArCj4g PiA+ID4gKwlyZXR1cm4gdHJ1ZTsKPiA+ID4gPiArfQo+ID4gPiA+ICsKPiA+ID4gPiAgc3RhdGlj IGJvb2wKPiA+ID4gPiAgaW50ZWxfZHBfY29tcHV0ZV9saW5rX2NvbmZpZyhzdHJ1Y3QgaW50ZWxf ZW5jb2RlciAqZW5jb2RlciwKPiA+ID4gPiAgCQkJICAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqcGlwZV9jb25maWcpCj4gPiA+ID4gQEAgLTE5ODIsNiArMjA5MCw3IEBAIGludGVsX2RwX2Nv bXB1dGVfbGlua19jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gPiA+ID4g IAlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0gZW5jX3RvX2ludGVsX2RwKCZlbmNvZGVyLT5i YXNlKTsKPiA+ID4gPiAgCXN0cnVjdCBsaW5rX2NvbmZpZ19saW1pdHMgbGltaXRzOwo+ID4gPiA+ ICAJaW50IGNvbW1vbl9sZW47Cj4gPiA+ID4gKwlib29sIHJldCA9IGZhbHNlOwo+ID4gPiA+ICAK PiA+ID4gPiAgCWNvbW1vbl9sZW4gPSBpbnRlbF9kcF9jb21tb25fbGVuX3JhdGVfbGltaXQoaW50 ZWxfZHAsCj4gPiA+ID4gIAkJCQkJCSAgICBpbnRlbF9kcC0+bWF4X2xpbmtfcmF0ZSk7Cj4gPiA+ ID4gQEAgLTE5OTUsOCArMjEwNCwxMiBAQCBpbnRlbF9kcF9jb21wdXRlX2xpbmtfY29uZmlnKHN0 cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ID4gPiA+ICAJbGltaXRzLm1pbl9sYW5lX2Nv dW50ID0gMTsKPiA+ID4gPiAgCWxpbWl0cy5tYXhfbGFuZV9jb3VudCA9IGludGVsX2RwX21heF9s YW5lX2NvdW50KGludGVsX2RwKTsKPiA+ID4gPiAgCj4gPiA+ID4gLQlsaW1pdHMubWluX2JwcCA9 IDYgKiAzOwo+ID4gPiA+ICAJbGltaXRzLm1heF9icHAgPSBpbnRlbF9kcF9jb21wdXRlX2JwcChp bnRlbF9kcCwgcGlwZV9jb25maWcpOwo+ID4gPiA+ICsJaWYgKGludGVsX2RwX3N1cHBvcnRzX2Rz YyhpbnRlbF9kcCwgcGlwZV9jb25maWcpICYmCj4gPiA+ID4gKwkgICAgbGltaXRzLm1heF9icHAg Pj0gRFBfRFNDX01JTl9TVVBQT1JURURfQlBDKjMpCj4gPiA+ID4gKwkJbGltaXRzLm1pbl9icHAg PSBEUF9EU0NfTUlOX1NVUFBPUlRFRF9CUEMgKiAzOwo+ID4gPiA+ICsJZWxzZQo+ID4gPiA+ICsJ CWxpbWl0cy5taW5fYnBwID0gNiAqIDM7Cj4gPiA+ID4gIAo+ID4gPiA+ICAJaWYgKGludGVsX2Rw X2lzX2VkcChpbnRlbF9kcCkgJiYgaW50ZWxfZHAtPmVkcF9kcGNkWzBdIDwgRFBfRURQXzE0KSB7 Cj4gPiA+ID4gIAkJLyoKPiA+ID4gPiBAQCAtMjAyMCw3ICsyMTMzLDcgQEAgaW50ZWxfZHBfY29t cHV0ZV9saW5rX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiA+ID4gPiAg CQkgICAgICBpbnRlbF9kcC0+Y29tbW9uX3JhdGVzW2xpbWl0cy5tYXhfY2xvY2tdLAo+ID4gPiA+ ICAJCSAgICAgIGxpbWl0cy5tYXhfYnBwLCBhZGp1c3RlZF9tb2RlLT5jcnRjX2Nsb2NrKTsKPiA+ ID4gPiAgCj4gPiA+ID4gLQlpZiAoaW50ZWxfZHBfaXNfZWRwKGludGVsX2RwKSkgewo+ID4gPiA+ ICsJaWYgKGludGVsX2RwX2lzX2VkcChpbnRlbF9kcCkpCj4gPiA+ID4gIAkJLyoKPiA+ID4gPiAg CQkgKiBPcHRpbWl6ZSBmb3IgZmFzdCBhbmQgbmFycm93LiBlRFAgMS4zIHNlY3Rpb24gMy4zIGFu ZCBlRFAgMS40Cj4gPiA+ID4gIAkJICogc2VjdGlvbiBBLjE6ICJJdCBpcyByZWNvbW1lbmRlZCB0 aGF0IHRoZSBtaW5pbXVtIG51bWJlciBvZgo+ID4gPiA+IEBAIC0yMDMwLDI2ICsyMTQzLDQyIEBA IGludGVsX2RwX2NvbXB1dGVfbGlua19jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29k ZXIsCj4gPiA+ID4gIAkJICogTm90ZSB0aGF0IHdlIHVzZSB0aGUgbWF4IGNsb2NrIGFuZCBsYW5l IGNvdW50IGZvciBlRFAgMS4zIGFuZAo+ID4gPiA+ICAJCSAqIGVhcmxpZXIsIGFuZCBmYXN0IHZz LiB3aWRlIGlzIGlycmVsZXZhbnQuCj4gPiA+ID4gIAkJICovCj4gPiA+ID4gLQkJaWYgKCFpbnRl bF9kcF9jb21wdXRlX2xpbmtfY29uZmlnX2Zhc3QoaW50ZWxfZHAsIHBpcGVfY29uZmlnLAo+ID4g PiA+IC0JCQkJCQkgICAgICAgJmxpbWl0cykpCj4gPiA+ID4gLQkJCXJldHVybiBmYWxzZTsKPiA+ ID4gPiAtCX0gZWxzZSB7Cj4gPiA+ID4gKwkJcmV0ID0gaW50ZWxfZHBfY29tcHV0ZV9saW5rX2Nv bmZpZ19mYXN0KGludGVsX2RwLCBwaXBlX2NvbmZpZywKPiA+ID4gPiArCQkJCQkJCSZsaW1pdHMp Owo+ID4gPiA+ICsJZWxzZQo+ID4gPiA+ICAJCS8qIE9wdGltaXplIGZvciBzbG93IGFuZCB3aWRl LiAqLwo+ID4gPiA+IC0JCWlmICghaW50ZWxfZHBfY29tcHV0ZV9saW5rX2NvbmZpZ193aWRlKGlu dGVsX2RwLCBwaXBlX2NvbmZpZywKPiA+ID4gPiAtCQkJCQkJICAgICAgICZsaW1pdHMpKQo+ID4g PiA+ICsJCXJldCA9IGludGVsX2RwX2NvbXB1dGVfbGlua19jb25maWdfd2lkZShpbnRlbF9kcCwg cGlwZV9jb25maWcsCj4gPiA+ID4gKwkJCQkJCQkmbGltaXRzKTsKPiA+ID4gPiArCj4gPiA+ID4g KwkvKiBlbmFibGUgY29tcHJlc3Npb24gaWYgdGhlIG1vZGUgZG9lc24ndCBmaXQgYXZhaWxhYmxl IEJXICovCj4gPiA+ID4gKwlpZiAoIXJldCkgewo+ID4gPiA+ICsJCWlmICghaW50ZWxfZHBfZHNj X2NvbXB1dGVfY29uZmlnKGludGVsX2RwLCBwaXBlX2NvbmZpZywKPiA+ID4gPiArCQkJCQkJICZs aW1pdHMpKQo+ID4gPiA+ICAJCQlyZXR1cm4gZmFsc2U7Cj4gPiA+ID4gIAl9Cj4gPiA+ID4gIAo+ ID4gPiA+IC0JRFJNX0RFQlVHX0tNUygiRFAgbGFuZSBjb3VudCAlZCBjbG9jayAlZCBicHAgJWRc biIsCj4gPiA+ID4gLQkJICAgICAgcGlwZV9jb25maWctPmxhbmVfY291bnQsIHBpcGVfY29uZmln LT5wb3J0X2Nsb2NrLAo+ID4gPiA+IC0JCSAgICAgIHBpcGVfY29uZmlnLT5waXBlX2JwcCk7Cj4g PiA+ID4gKwlpZiAocGlwZV9jb25maWctPmRzY19wYXJhbXMuY29tcHJlc3Npb25fZW5hYmxlKSB7 Cj4gPiA+ID4gKwkJRFJNX0RFQlVHX0tNUygiRFAgbGFuZSBjb3VudCAlZCBjbG9jayAlZCBJbnB1 dCBicHAgJWQgQ29tcHJlc3NlZCBicHAgJWRcbiIsCj4gPiA+ID4gKwkJCSAgICAgIHBpcGVfY29u ZmlnLT5sYW5lX2NvdW50LCBwaXBlX2NvbmZpZy0+cG9ydF9jbG9jaywKPiA+ID4gPiArCQkJICAg ICAgcGlwZV9jb25maWctPnBpcGVfYnBwLAo+ID4gPiA+ICsJCQkgICAgICBwaXBlX2NvbmZpZy0+ ZHNjX3BhcmFtcy5jb21wcmVzc2VkX2JwcCk7Cj4gPiA+ID4gIAo+ID4gPiA+IC0JRFJNX0RFQlVH X0tNUygiRFAgbGluayByYXRlIHJlcXVpcmVkICVpIGF2YWlsYWJsZSAlaVxuIiwKPiA+ID4gPiAt CQkgICAgICBpbnRlbF9kcF9saW5rX3JlcXVpcmVkKGFkanVzdGVkX21vZGUtPmNydGNfY2xvY2ss Cj4gPiA+ID4gLQkJCQkJICAgICBwaXBlX2NvbmZpZy0+cGlwZV9icHApLAo+ID4gPiA+IC0JCSAg ICAgIGludGVsX2RwX21heF9kYXRhX3JhdGUocGlwZV9jb25maWctPnBvcnRfY2xvY2ssCj4gPiA+ ID4gLQkJCQkJICAgICBwaXBlX2NvbmZpZy0+bGFuZV9jb3VudCkpOwo+ID4gPiA+ICsJCURSTV9E RUJVR19LTVMoIkRQIGxpbmsgcmF0ZSByZXF1aXJlZCAlaSBhdmFpbGFibGUgJWlcbiIsCj4gPiA+ ID4gKwkJCSAgICAgIGludGVsX2RwX2xpbmtfcmVxdWlyZWQoYWRqdXN0ZWRfbW9kZS0+Y3J0Y19j bG9jaywKPiA+ID4gPiArCQkJCQkJICAgICBwaXBlX2NvbmZpZy0+ZHNjX3BhcmFtcy5jb21wcmVz c2VkX2JwcCksCj4gPiA+ID4gKwkJCSAgICAgIGludGVsX2RwX21heF9kYXRhX3JhdGUocGlwZV9j b25maWctPnBvcnRfY2xvY2ssCj4gPiA+ID4gKwkJCQkJCSAgICAgcGlwZV9jb25maWctPmxhbmVf Y291bnQpKTsKPiA+ID4gPiArCX0gZWxzZSB7Cj4gPiA+ID4gKwkJRFJNX0RFQlVHX0tNUygiRFAg bGFuZSBjb3VudCAlZCBjbG9jayAlZCBicHAgJWRcbiIsCj4gPiA+ID4gKwkJCSAgICAgIHBpcGVf Y29uZmlnLT5sYW5lX2NvdW50LCBwaXBlX2NvbmZpZy0+cG9ydF9jbG9jaywKPiA+ID4gPiArCQkJ ICAgICAgcGlwZV9jb25maWctPnBpcGVfYnBwKTsKPiA+ID4gPiAgCj4gPiA+ID4gKwkJRFJNX0RF QlVHX0tNUygiRFAgbGluayByYXRlIHJlcXVpcmVkICVpIGF2YWlsYWJsZSAlaVxuIiwKPiA+ID4g PiArCQkJICAgICAgaW50ZWxfZHBfbGlua19yZXF1aXJlZChhZGp1c3RlZF9tb2RlLT5jcnRjX2Ns b2NrLAo+ID4gPiA+ICsJCQkJCQkgICAgIHBpcGVfY29uZmlnLT5waXBlX2JwcCksCj4gPiA+ID4g KwkJCSAgICAgIGludGVsX2RwX21heF9kYXRhX3JhdGUocGlwZV9jb25maWctPnBvcnRfY2xvY2ss Cj4gPiA+ID4gKwkJCQkJCSAgICAgcGlwZV9jb25maWctPmxhbmVfY291bnQpKTsKPiA+ID4gPiAr CX0KPiA+ID4gPiAgCXJldHVybiB0cnVlOwo+ID4gPiA+ICB9Cj4gPiA+ID4gIAo+ID4gPiA+IEBA IC0yMTMzLDcgKzIyNjIsOSBAQCBpbnRlbF9kcF9jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxf ZW5jb2RlciAqZW5jb2RlciwKPiA+ID4gPiAgCQkJaW50ZWxfY29ubl9zdGF0ZS0+YnJvYWRjYXN0 X3JnYiA9PSBJTlRFTF9CUk9BRENBU1RfUkdCX0xJTUlURUQ7Cj4gPiA+ID4gIAl9Cj4gPiA+ID4g IAo+ID4gPiA+IC0JaW50ZWxfbGlua19jb21wdXRlX21fbihwaXBlX2NvbmZpZy0+cGlwZV9icHAs IHBpcGVfY29uZmlnLT5sYW5lX2NvdW50LAo+ID4gPiA+ICsJaW50ZWxfbGlua19jb21wdXRlX21f bihwaXBlX2NvbmZpZy0+cGlwZV9icHAsCj4gPiA+ID4gKwkJCSAgICAgICBwaXBlX2NvbmZpZy0+ ZHNjX3BhcmFtcy5jb21wcmVzc2VkX2JwcCwKPiA+ID4gPiArCQkJICAgICAgIHBpcGVfY29uZmln LT5sYW5lX2NvdW50LAo+ID4gPiA+ICAJCQkgICAgICAgYWRqdXN0ZWRfbW9kZS0+Y3J0Y19jbG9j aywKPiA+ID4gPiAgCQkJICAgICAgIHBpcGVfY29uZmlnLT5wb3J0X2Nsb2NrLAo+ID4gPiA+ICAJ CQkgICAgICAgJnBpcGVfY29uZmlnLT5kcF9tX24sCj4gPiA+ID4gQEAgLTIxNDIsNyArMjI3Myw3 IEBAIGludGVsX2RwX2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVy LAo+ID4gPiA+ICAJaWYgKGludGVsX2Nvbm5lY3Rvci0+cGFuZWwuZG93bmNsb2NrX21vZGUgIT0g TlVMTCAmJgo+ID4gPiA+ICAJCWRldl9wcml2LT5kcnJzLnR5cGUgPT0gU0VBTUxFU1NfRFJSU19T VVBQT1JUKSB7Cj4gPiA+ID4gIAkJCXBpcGVfY29uZmlnLT5oYXNfZHJycyA9IHRydWU7Cj4gPiA+ ID4gLQkJCWludGVsX2xpbmtfY29tcHV0ZV9tX24ocGlwZV9jb25maWctPnBpcGVfYnBwLAo+ID4g PiA+ICsJCQlpbnRlbF9saW5rX2NvbXB1dGVfbV9uKHBpcGVfY29uZmlnLT5waXBlX2JwcCwgMCwK PiA+ID4gPiAgCQkJCQkgICAgICAgcGlwZV9jb25maWctPmxhbmVfY291bnQsCj4gPiA+ID4gIAkJ CQkJICAgICAgIGludGVsX2Nvbm5lY3Rvci0+cGFuZWwuZG93bmNsb2NrX21vZGUtPmNsb2NrLAo+ ID4gPiA+ICAJCQkJCSAgICAgICBwaXBlX2NvbmZpZy0+cG9ydF9jbG9jaywKPiA+ID4gPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBfbXN0LmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcF9tc3QuYwo+ID4gPiA+IGluZGV4IDhiNzFkNjRlYmQ5ZC4uZTAy Y2FlZGQ0NDNjIDEwMDY0NAo+ID4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2RwX21zdC5jCj4gPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBfbXN0 LmMKPiA+ID4gPiBAQCAtOTAsNyArOTAsNyBAQCBzdGF0aWMgYm9vbCBpbnRlbF9kcF9tc3RfY29t cHV0ZV9jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gPiA+ID4gIAkJfQo+ ID4gPiA+ICAJfQo+ID4gPiA+ICAKPiA+ID4gPiAtCWludGVsX2xpbmtfY29tcHV0ZV9tX24oYnBw LCBsYW5lX2NvdW50LAo+ID4gPiA+ICsJaW50ZWxfbGlua19jb21wdXRlX21fbihicHAsIDAsIGxh bmVfY291bnQsCj4gPiA+ID4gIAkJCSAgICAgICBhZGp1c3RlZF9tb2RlLT5jcnRjX2Nsb2NrLAo+ ID4gPiA+ICAJCQkgICAgICAgcGlwZV9jb25maWctPnBvcnRfY2xvY2ssCj4gPiA+ID4gIAkJCSAg ICAgICAmcGlwZV9jb25maWctPmRwX21fbiwKPiA+ID4gPiAtLSAKPiA+ID4gPiAyLjE4LjAKPiA+ ID4gPiAKPiA+IAo+ID4gLS0gCj4gPiBWaWxsZSBTeXJqw6Rsw6QKPiA+IEludGVsCj4gX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBJbnRlbC1nZnggbWFp bGluZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxp c3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=