From mboxrd@z Thu Jan 1 00:00:00 1970 From: Manasi Navare Subject: Re: [PATCH v9 08/24] drm/i915/dp: Compute DSC pipe config in atomic check Date: Mon, 19 Nov 2018 13:54:32 -0800 Message-ID: <20181119215431.GD32069@intel.com> References: <20181114015232.21952-1-manasi.d.navare@intel.com> <20181114015232.21952-9-manasi.d.navare@intel.com> <20181119201104.GL9144@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: <20181119201104.GL9144@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 VGhhbmtzIGZvciB0aGUgY29tbWVudHMsIHBsZWFzZSBzb21lIG15IGFuc3dlcnMgYmVsb3c6CgpP biBNb24sIE5vdiAxOSwgMjAxOCBhdCAxMDoxMTowNFBNICswMjAwLCBWaWxsZSBTeXJqw6Rsw6Qg d3JvdGU6Cj4gT24gVHVlLCBOb3YgMTMsIDIwMTggYXQgMDU6NTI6MTZQTSAtMDgwMCwgTWFuYXNp IE5hdmFyZSB3cm90ZToKPiA+IERTQyBwYXJhbXMgbGlrZSB0aGUgZW5hYmxlLCBjb21wcmVzc2Vk IGJwcCwgc2xpY2UgY291bnQgYW5kCj4gPiBkc2Nfc3BsaXQgYXJlIGFkZGVkIHRvIHRoZSBpbnRl bF9jcnRjX3N0YXRlLiBUaGVzZSBwYXJhbWV0ZXJzCj4gPiBhcmUgc2V0IGJhc2VkIG9uIHRoZSBy ZXF1ZXN0ZWQgbW9kZSBhbmQgYXZhaWxhYmxlIGxpbmsgcGFyYW1ldGVycwo+ID4gZHVyaW5nIHRo ZSBwaXBlIGNvbmZpZ3VyYXRpb24gaW4gYXRvbWljIGNoZWNrIHBoYXNlLgo+ID4gVGhlc2UgdmFs dWVzIGFyZSB0aGVuIGxhdGVyIHVzZWQgdG8gcG9wdWxhdGUgdGhlIHJlbWFpbmluZyBEU0MKPiA+ IGFuZCBSQyBwYXJhbWV0ZXJzIGJlZm9yZSBlbmJhbGluZyBEU0MgaW4gYXRvbWljIGNvbW1pdC4K PiA+IAo+ID4gdjEzOgo+ID4gKiBDb21wdXRlIERTQyBicGMgb25seSB3aGVuIERTQyBpcyByZXEg dG8gYmUgZW5hYmxlZCAoVmlsbGUpCj4gPiB2MTI6Cj4gPiAqIE92ZXJyaWRlIGJwcCB3aXRoIGRz YyBkcGNkIGNvbG9yIGRlcHRoIChNYW5hc2kpCj4gPiB2MTE6Cj4gPiAqIENvbnN0IGNydGNfc3Rh dGUsIHJlamVjdCBEU0Mgb24gRFAgd2l0aG91dCBGRUMgKFZpbGxlKQo+ID4gKiBEb250IHNldCBk c2Nfc3BsaXQgdG8gZmFsc2UgKFZpbGxlKQo+ID4gdjEwOgo+ID4gKiBBZGQgYSBoZWxwZXIgZm9y IGRwX2RzYyBzdXBwb3J0IChWaWxsZSkKPiA+ICogU2V0IHBpcGVfY29uZmlnIHRvIG1heCBicHAs IGxpbmsgcGFyYW1zIGZvciBEU0MgZm9yIG5vdyAoVmlsbGUpCj4gPiAqIENvbXB1dGUgYnBwIC0g dXNlIGRwIGRzYyBzdXBwb3J0IGhlbHBlciAoVmlsbGUpCj4gPiB2OToKPiA+ICogUmViYXNlIG9u IHRvcCBvZiBkcm0tdGlwIHRoYXQgbm93IHVzZXMgZmFzdF9uYXJyb3cgY29uZmlnCj4gPiBmb3Ig ZWRwIChNYW5hc2kpCj4gPiB2ODoKPiA+ICogQ2hlY2sgZm9yIERTQyBicGMgbm90IDAgKG1hbmFz aSkKPiA+IAo+ID4gdjc6Cj4gPiAqIEZpeCBpbmRlbnRhdGlvbiBpbiBjb21wdXRlX21fbiAoTWFu YXNpKQo+ID4gCj4gPiB2NiAoRnJvbSBHYXVyYXYpOgo+ID4gKiBSZW1vdmUgZnVuY3Rpb24gY2Fs bCBvZiBpbnRlbF9kcF9jb21wdXRlX2RzY19wYXJhbXMoKSBhbmQKPiA+IGludm9rZSBpbnRlbF9k cF9jb21wdXRlX2RzY19wYXJhbXMoKSBpbiB0aGUgcGF0Y2ggd2hlcmUKPiA+IGl0IGlzIGRlZmlu ZWQgdG8gZml4IGNvbXBpbGF0aW9uIHdhcm5pbmcgKEdhdXJhdikKPiA+IAo+ID4gdjU6Cj4gPiBB ZGQgZHJtX2RzY19jZmcgaW4gaW50ZWxfY3J0Y19zdGF0ZSAoTWFuYXNpKQo+ID4gCj4gPiB2NDoK PiA+ICogUmViYXNlIG9uIHJlZmFjdG9yaW5nIG9mIGludGVsX2RwX2NvbXB1dGVfY29uZmlnIG9u IHRpcCAoTWFuYXNpKQo+ID4gKiBBZGQgYSBjb21tZW50IHdoeSB3ZSBuZWVkIHRvIGNoZWNrIFBT UiB3aGlsZSBlbmFibGluZyBEU0MgKEdhdXJhdikKPiA+IAo+ID4gdjM6Cj4gPiAqIENoZWNrIFBQ UiA+IG1heF9jZGNsb2NrIHRvIHVzZSAyIFZEU0MgaW5zdGFuY2VzIChWaWxsZSkKPiA+IAo+ID4g djI6Cj4gPiAqIEFkZCBpZi1lbHNlIGZvciBlRFAvRFAgKEdhdXJhdikKPiA+IAo+ID4gQ2M6IEph bmkgTmlrdWxhIDxqYW5pLm5pa3VsYUBsaW51eC5pbnRlbC5jb20+Cj4gPiBDYzogVmlsbGUgU3ly amFsYSA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cj4gPiBDYzogQW51c2hhIFNyaXZh dHNhIDxhbnVzaGEuc3JpdmF0c2FAaW50ZWwuY29tPgo+ID4gQ2M6IEdhdXJhdiBLIFNpbmdoIDxn YXVyYXYuay5zaW5naEBpbnRlbC5jb20+Cj4gPiBTaWduZWQtb2ZmLWJ5OiBNYW5hc2kgTmF2YXJl IDxtYW5hc2kuZC5uYXZhcmVAaW50ZWwuY29tPgo+ID4gUmV2aWV3ZWQtYnk6IEFudXNoYSBTcml2 YXRzYSA8YW51c2hhLnNyaXZhdHNhQGludGVsLmNvbT4KPiA+IEFja2VkLWJ5OiBKYW5pIE5pa3Vs YSA8amFuaS5uaWt1bGFAbGludXguaW50ZWwuY29tPgo+ID4gLS0tCj4gPiAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHwgIDIwICsrLQo+ID4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rpc3BsYXkuaCB8ICAgMyArLQo+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2RwLmMgICAgICB8IDE4NyArKysrKysrKysrKysrKysrKysrKysrKystLS0KPiA+ICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcF9tc3QuYyAgfCAgIDIgKy0KPiA+ICA0IGZpbGVzIGNo YW5nZWQsIDE4NCBpbnNlcnRpb25zKCspLCAyOCBkZWxldGlvbnMoLSkKPiA+IAo+ID4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ID4gaW5kZXggMTMyZTk3ODIyN2ZiLi4zOTBjNGIz OTcwZGIgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5 LmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ID4gQEAg LTY0ODMsNyArNjQ4Myw3IEBAIHN0YXRpYyBpbnQgaXJvbmxha2VfZmRpX2NvbXB1dGVfY29uZmln KHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjLAo+ID4gIAo+ID4gIAlwaXBlX2NvbmZpZy0+ ZmRpX2xhbmVzID0gbGFuZTsKPiA+ICAKPiA+IC0JaW50ZWxfbGlua19jb21wdXRlX21fbihwaXBl X2NvbmZpZy0+cGlwZV9icHAsIGxhbmUsIGZkaV9kb3RjbG9jaywKPiA+ICsJaW50ZWxfbGlua19j b21wdXRlX21fbihwaXBlX2NvbmZpZy0+cGlwZV9icHAsIDAsIGxhbmUsIGZkaV9kb3RjbG9jaywK PiA+ICAJCQkgICAgICAgbGlua19idywgJnBpcGVfY29uZmlnLT5mZGlfbV9uLCBmYWxzZSk7Cj4g PiAgCj4gPiAgCXJldCA9IGlyb25sYWtlX2NoZWNrX2ZkaV9sYW5lcyhkZXYsIGludGVsX2NydGMt PnBpcGUsIHBpcGVfY29uZmlnKTsKPiA+IEBAIC02NzIzLDE3ICs2NzIzLDI1IEBAIHN0YXRpYyB2 b2lkIGNvbXB1dGVfbV9uKHVuc2lnbmVkIGludCBtLCB1bnNpZ25lZCBpbnQgbiwKPiA+ICB9Cj4g PiAgCj4gPiAgdm9pZAo+ID4gLWludGVsX2xpbmtfY29tcHV0ZV9tX24oaW50IGJpdHNfcGVyX3Bp eGVsLCBpbnQgbmxhbmVzLAo+ID4gK2ludGVsX2xpbmtfY29tcHV0ZV9tX24oaW50IGJpdHNfcGVy X3BpeGVsLCB1aW50MTZfdCBjb21wcmVzc2VkX2JwcCwKPiA+ICsJCSAgICAgICBpbnQgbmxhbmVz LAo+ID4gIAkJICAgICAgIGludCBwaXhlbF9jbG9jaywgaW50IGxpbmtfY2xvY2ssCj4gPiAgCQkg ICAgICAgc3RydWN0IGludGVsX2xpbmtfbV9uICptX24sCj4gPiAgCQkgICAgICAgYm9vbCBjb25z dGFudF9uKQo+ID4gIHsKPiA+ICAJbV9uLT50dSA9IDY0Owo+ID4gIAo+ID4gLQljb21wdXRlX21f bihiaXRzX3Blcl9waXhlbCAqIHBpeGVsX2Nsb2NrLAo+ID4gLQkJICAgIGxpbmtfY2xvY2sgKiBu bGFuZXMgKiA4LAo+ID4gLQkJICAgICZtX24tPmdtY2hfbSwgJm1fbi0+Z21jaF9uLAo+ID4gLQkJ ICAgIGNvbnN0YW50X24pOwo+ID4gKwkvKiBGb3IgRFNDLCBEYXRhIE0vTiBjYWxjdWxhdGlvbiB1 c2VzIGNvbXByZXNzZWQgQlBQICovCj4gPiArCWlmIChjb21wcmVzc2VkX2JwcCkKPiAKPiBUaGUg ZXh0cmEgcGFyYW1ldGVyIHNlZW1zIHRvIGJlIHBvaW50bGVzcy4gSnVzdCBwYXNzCj4gY29tcHJl c3NlZF9icHAgaW5zdGVhZCBvZiBwaXBlX2JwcCBhbmQgaXQnbGwgZG8gd2hhdAo+IHlvdSB3YW50 LgoKU28gaWYgY29tcHJlc3NlZF9icHAgdGhlbiBqdXN0IHBhc3MgY29tcHJlc3NlZF9icHAgaW5z dGVhZCBvZiBiaXRzX3Blcl9waXhlbCwKaXMgdGhhdCB3aGF0IHlvdSBhcmUgc3VnZ2VzdGluZz8g QmVjYXVzZSB3ZSBkb250IHdhbnQgdG8gY2FsbCBjb21wcmVzc2VkX2JwcCBvdGhlcndpc2UuCgo+ IAo+ID4gKwkJY29tcHV0ZV9tX24oY29tcHJlc3NlZF9icHAgKiBwaXhlbF9jbG9jaywKPiA+ICsJ CQkgICAgbGlua19jbG9jayAqIG5sYW5lcyAqIDgsCj4gPiArCQkJICAgICZtX24tPmdtY2hfbSwg Jm1fbi0+Z21jaF9uLAo+ID4gKwkJCSAgICBjb25zdGFudF9uKTsKPiA+ICsJZWxzZQo+ID4gKwkJ Y29tcHV0ZV9tX24oYml0c19wZXJfcGl4ZWwgKiBwaXhlbF9jbG9jaywKPiA+ICsJCQkgICAgbGlu a19jbG9jayAqIG5sYW5lcyAqIDgsCj4gPiArCQkJICAgICZtX24tPmdtY2hfbSwgJm1fbi0+Z21j aF9uLAo+ID4gKwkJCSAgICBjb25zdGFudF9uKTsKPiA+ICAKPiA+ICAJY29tcHV0ZV9tX24ocGl4 ZWxfY2xvY2ssIGxpbmtfY2xvY2ssCj4gPiAgCQkgICAgJm1fbi0+bGlua19tLCAmbV9uLT5saW5r X24sCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5o IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5oCj4gPiBpbmRleCA1ZDUwZGVj YmNiYjUuLmIwYjIzZTFlOTM5MiAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rpc3BsYXkuaAo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlz cGxheS5oCj4gPiBAQCAtNDA3LDcgKzQwNyw4IEBAIHN0cnVjdCBpbnRlbF9saW5rX21fbiB7Cj4g PiAgCSAgICAgKF9faSkrKykgXAo+ID4gIAkJZm9yX2VhY2hfaWYocGxhbmUpCj4gPiAgCj4gPiAt dm9pZCBpbnRlbF9saW5rX2NvbXB1dGVfbV9uKGludCBicHAsIGludCBubGFuZXMsCj4gPiArdm9p ZCBpbnRlbF9saW5rX2NvbXB1dGVfbV9uKGludCBicHAsIHVpbnQxNl90IGNvbXByZXNzZWRfYnBw LAo+ID4gKwkJCSAgICBpbnQgbmxhbmVzLAo+ID4gIAkJCSAgICBpbnQgcGl4ZWxfY2xvY2ssIGlu dCBsaW5rX2Nsb2NrLAo+ID4gIAkJCSAgICBzdHJ1Y3QgaW50ZWxfbGlua19tX24gKm1fbiwKPiA+ ICAJCQkgICAgYm9vbCBjb25zdGFudF9uKTsKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kcC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+ID4g aW5kZXggMmIwOTA2MDliZWUyLi45MzFjM2M3ZTU1YzEgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcC5jCj4gPiBAQCAtNDcsNiArNDcsOCBAQAo+ID4gIAo+ID4gIC8qIERQIERTQyBzbWFs bCBqb2luZXIgaGFzIDIgRklGT3MgZWFjaCBvZiA2NDAgeCA2IGJ5dGVzICovCj4gPiAgI2RlZmlu ZSBEUF9EU0NfTUFYX1NNQUxMX0pPSU5FUl9SQU1fQlVGRkVSCTYxNDQwCj4gPiArI2RlZmluZSBE UF9EU0NfTUlOX1NVUFBPUlRFRF9CUEMJCTgKPiA+ICsjZGVmaW5lIERQX0RTQ19NQVhfU1VQUE9S VEVEX0JQQwkJMTAKPiA+ICAKPiA+ICAvKiBEUCBEU0MgdGhyb3VnaHB1dCB2YWx1ZXMgdXNlZCBm b3Igc2xpY2UgY291bnQgY2FsY3VsYXRpb25zIEtQaXhlbHMvcyAqLwo+ID4gICNkZWZpbmUgRFBf RFNDX1BFQUtfUElYRUxfUkFURQkJCTI3MjAwMDAKPiA+IEBAIC0xNzA4LDYgKzE3MTAsMjkgQEAg c3RydWN0IGxpbmtfY29uZmlnX2xpbWl0cyB7Cj4gPiAgCWludCBtaW5fYnBwLCBtYXhfYnBwOwo+ ID4gIH07Cj4gPiAgCj4gPiArc3RhdGljIGJvb2wgaW50ZWxfZHBfc291cmNlX3N1cHBvcnRzX2Rz YyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAo+ID4gKwkJCQkJIGNvbnN0IHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZykKPiA+ICt7Cj4gPiArCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IGRwX3RvX2k5MTUoaW50ZWxfZHApOwo+ID4gKwo+ID4gKwkvKiBG SVhNRTogRkVDIG5lZWRlZCBmb3IgZXh0ZXJuYWwgRFAgdW50aWwgdGhlbiByZWplY3QgRFNDIG9u IERQICovCj4gPiArCWlmICghaW50ZWxfZHBfaXNfZWRwKGludGVsX2RwKSkKPiA+ICsJCXJldHVy biBmYWxzZTsKPiA+ICsKPiA+ICsJcmV0dXJuIElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTAgJiYK PiA+ICsJCXBpcGVfY29uZmlnLT5jcHVfdHJhbnNjb2RlciAhPSBUUkFOU0NPREVSX0E7Cj4gPiAr fQo+ID4gKwo+ID4gK3N0YXRpYyBib29sIGludGVsX2RwX3N1cHBvcnRzX2RzYyhzdHJ1Y3QgaW50 ZWxfZHAgKmludGVsX2RwLAo+ID4gKwkJCQkgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpwaXBlX2NvbmZpZykKPiA+ICt7Cj4gPiArCWlmICghaW50ZWxfZHBfc291cmNlX3N1cHBvcnRz X2RzYyhpbnRlbF9kcCwgcGlwZV9jb25maWcpIHx8Cj4gPiArCSAgICAhZHJtX2RwX3Npbmtfc3Vw cG9ydHNfZHNjKGludGVsX2RwLT5kc2NfZHBjZCkpCj4gPiArCQlyZXR1cm4gZmFsc2U7Cj4gCj4g T3Igc2xpZ2h0bHkgbW9yZSBzdHJhaWdodGZvcndhcmQ6Cj4gCj4gcmV0dXJuIGludGVsX2RwX3Nv dXJjZV9zdXBwb3J0c19kc2MoKSAmJgo+IAlkcm1fZHBfc2lua19zdXBwb3J0c19kc2MoKTsKPiAK PiBJIGdlbmVyYWxseSBsaWtlIHRvIHJlYWQgdGhlc2Ugc29ydCBvZiB0aGluZ3Mgb3V0bG91ZCB0 byBteXNlbGYuCj4gVGhhdCB1c3VhbGx5IGhlbHBzIHBpY2sgb3V0IHRoZSBsZWFzdCBjb252b2x1 dGVkIGZvcm0uCgpDb29sIHdpbGwgZG8uCgo+IAo+ID4gKwo+ID4gKwlyZXR1cm4gdHJ1ZTsKPiA+ ICt9Cj4gPiArCj4gPiAgc3RhdGljIGludCBpbnRlbF9kcF9jb21wdXRlX2JwcChzdHJ1Y3QgaW50 ZWxfZHAgKmludGVsX2RwLAo+ID4gIAkJCQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9j b25maWcpCj4gPiAgewo+ID4gQEAgLTE4NDIsMTQgKzE4NjcsMTE4IEBAIGludGVsX2RwX2NvbXB1 dGVfbGlua19jb25maWdfZmFzdChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAo+ID4gIAlyZXR1 cm4gZmFsc2U7Cj4gPiAgfQo+ID4gIAo+ID4gK3N0YXRpYyBpbnQgaW50ZWxfZHBfZHNjX2NvbXB1 dGVfYnBwKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsIHU4IGRzY19tYXhfYnBjKQo+ID4gK3sK PiA+ICsJaW50IGk7Cj4gPiArCXU4IGRzY19zaW5rX2NvbG9yX2RlcHRoX2NhcFs4XSA9IHswfTsK PiAKPiBUaGUgdmFyaWFibGUgbmFtZSBpc24ndCB2ZXJ5IGRlc2NyaXB0aXZlLiBKdXN0IGJwY1td LCBkc2NfYnBjW10gZXRjLiB3b3VsZAo+IHNlZW0gYmV0dGVyLiBBbmQgdGhyZWUgZWxlbWVudHMg c2hvdWxkIGJlIGFsbCB3ZSBuZWVkLgoKWWVzCgo+IAo+ID4gKwo+ID4gKwlkcm1fZHBfZHNjX3Np bmtfY29sb3JfZGVwdGhfY2FwKGludGVsX2RwLT5kc2NfZHBjZCwKPiA+ICsJCQkJCWRzY19zaW5r X2NvbG9yX2RlcHRoX2NhcCk7Cj4gCj4gVGhlIGZ1bmN0aW9uIG5hbWUgaXNuJ3QgYWxsIHRoYXQg ZGVzY3JpcHRpdmUgZWl0aGVyLgo+IGRybV9kcF9kc2Nfc3VwcG9ydGVkX2lucHV0X2JwY3MoKSBt YXliZT8KPiAKPiA+ICsJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoZHNjX3NpbmtfY29sb3Jf ZGVwdGhfY2FwKTsgaSsrKSB7Cj4gPiArCQlpZiAoZHNjX21heF9icGMgPD0gZHNjX3NpbmtfY29s b3JfZGVwdGhfY2FwW2ldKQo+IAo+IFRoaXMgdGVzdCBzZWVtcyB0aGUgd3Jvbmcgd2F5IGFyb3Vu ZC4KCldlIGhhdmUgdG8gZmluZCB0aGUgZmlyc3QgdmFsdWUgaW4gZHNjX3NpbmtfY29sb3JfZGVw dGhfY2FwIGFycmF5IHRoYXQKaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIGRzY19tYXhfYnBjIGFu ZCByZXR1cm4gdGhhdCByaWdodD8KU28geWVzIHRoaXMgc2hvdWxkIGRzY19tYXhfYnBjID49IGRz Y19zaW5rX21heF9jb2xvcl9kZXB0aF9jYXAKCk1BbmFzaQoKPiAKPiA+ICsJCQlyZXR1cm4gZHNj X3NpbmtfY29sb3JfZGVwdGhfY2FwW2ldICogMzsKPiA+ICsJfQo+ID4gKwo+ID4gKwlyZXR1cm4g MDsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIGJvb2wgaW50ZWxfZHBfZHNjX2NvbXB1dGVfY29u ZmlnKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4gPiArCQkJCQlzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqcGlwZV9jb25maWcsCj4gPiArCQkJCQlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0 ZSAqY29ubl9zdGF0ZSwKPiA+ICsJCQkJCXN0cnVjdCBsaW5rX2NvbmZpZ19saW1pdHMgKmxpbWl0 cykKPiA+ICt7Cj4gPiArCXN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRpZ19wb3J0ID0gZHBf dG9fZGlnX3BvcnQoaW50ZWxfZHApOwo+ID4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSB0b19pOTE1KGRpZ19wb3J0LT5iYXNlLmJhc2UuZGV2KTsKPiA+ICsJc3RydWN0IGRy bV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUgPSAmcGlwZV9jb25maWctPmJhc2UuYWRqdXN0 ZWRfbW9kZTsKPiA+ICsJdTggZHNjX21heF9icGM7Cj4gPiArCXUxNiBkc2NfbWF4X291dHB1dF9i cHAgPSAwOwo+ID4gKwl1OCBkc2NfZHBfc2xpY2VfY291bnQgPSAwOwo+ID4gKwlpbnQgcGlwZV9i cHA7Cj4gPiArCj4gPiArCWlmICghaW50ZWxfZHBfc3VwcG9ydHNfZHNjKGludGVsX2RwLCBwaXBl X2NvbmZpZykpCj4gPiArCQlyZXR1cm4gZmFsc2U7Cj4gPiArCj4gPiArCWRzY19tYXhfYnBjID0g bWluX3QodTgsIERQX0RTQ19NQVhfU1VQUE9SVEVEX0JQQywKPiA+ICsJCQkgICAgY29ubl9zdGF0 ZS0+bWF4X3JlcXVlc3RlZF9icGMpOwo+ID4gKwo+ID4gKwlpZiAoZHNjX21heF9icGMgPCBEUF9E U0NfTUlOX1NVUFBPUlRFRF9CUEMpIHsKPiA+ICsJCURSTV9ERUJVR19LTVMoIk5vIERTQyBzdXBw b3J0IGZvciBsZXNzIHRoYW4gOGJwY1xuIik7Cj4gPiArCQlyZXR1cm4gZmFsc2U7Cj4gPiArCX0K PiAKPiBXZSBkb24ndCByZWFsbHkgbmVlZCB0aGlzIGNoZWNrIGhlcmUuIGludGVsX2RwX2RzY19j b21wdXRlX2JwcCgpCj4gd2lsbCByZXR1cm4gMCBpZiB0aGUgbWF4IGlzIGJlbG93IGFueSBzdXBw b3J0ZWQgdmFsdWUuIFNvIHdlIGNhbgo+IHJlbHkgb24gdGhlIGNoZWNrIGFmdGVyd2FyZHMuCj4g Cj4gPiArCXBpcGVfYnBwID0gaW50ZWxfZHBfZHNjX2NvbXB1dGVfYnBwKGludGVsX2RwLCBkc2Nf bWF4X2JwYyk7Cj4gPiArCWlmICghcGlwZV9icHAgfHwgcGlwZV9icHAgPCBEUF9EU0NfTUlOX1NV UFBPUlRFRF9CUEMgKiAzKSB7Cj4gCj4gVGhlICFwaXBlX2JwcCBjaGVjayBpcyByZWR1bmRhbnQu Cj4gCj4gPiArCQlEUk1fREVCVUdfS01TKCJObyBEU0Mgc3VwcG9ydCBmb3IgbGVzcyB0aGFuIDhi cGNcbiIpOwo+ID4gKwkJcmV0dXJuIGZhbHNlOwo+ID4gKwl9Cj4gPiArCj4gPiArCS8qCj4gPiAr CSAqIEZvciBub3cgZW5hYmxlIERTQyBmb3IgbWF4IGJwcCwgbWF4IGxpbmsgcmF0ZSwgbWF4IGxh bmUgY291bnQuCj4gPiArCSAqIE9wdGltaXplIHRoaXMgbGF0ZXIgZm9yIHRoZSBtaW5pbXVtIHBv c3NpYmxlIGxpbmsgcmF0ZS9sYW5lIGNvdW50Cj4gPiArCSAqIHdpdGggRFNDIGVuYWJsZWQgZm9y IHRoZSByZXF1ZXN0ZWQgbW9kZS4KPiA+ICsJICovCj4gPiArCXBpcGVfY29uZmlnLT5waXBlX2Jw cCA9IHBpcGVfYnBwOwo+ID4gKwlwaXBlX2NvbmZpZy0+cG9ydF9jbG9jayA9IGludGVsX2RwLT5j b21tb25fcmF0ZXNbbGltaXRzLT5tYXhfY2xvY2tdOwo+ID4gKwlwaXBlX2NvbmZpZy0+bGFuZV9j b3VudCA9IGxpbWl0cy0+bWF4X2xhbmVfY291bnQ7Cj4gPiArCj4gPiArCWlmIChpbnRlbF9kcF9p c19lZHAoaW50ZWxfZHApKSB7Cj4gPiArCQlwaXBlX2NvbmZpZy0+ZHNjX3BhcmFtcy5jb21wcmVz c2VkX2JwcCA9Cj4gPiArCQkJbWluX3QodTE2LCBkcm1fZWRwX2RzY19zaW5rX291dHB1dF9icHAo aW50ZWxfZHAtPmRzY19kcGNkKSA+PiA0LAo+ID4gKwkJCSAgICAgIHBpcGVfY29uZmlnLT5waXBl X2JwcCk7Cj4gPiArCQlwaXBlX2NvbmZpZy0+ZHNjX3BhcmFtcy5zbGljZV9jb3VudCA9Cj4gPiAr CQkJZHJtX2RwX2RzY19zaW5rX21heF9zbGljZV9jb3VudChpbnRlbF9kcC0+ZHNjX2RwY2QsCj4g PiArCQkJCQkJCXRydWUpOwo+ID4gKwl9IGVsc2Ugewo+ID4gKwkJZHNjX21heF9vdXRwdXRfYnBw ID0KPiA+ICsJCQlpbnRlbF9kcF9kc2NfZ2V0X291dHB1dF9icHAocGlwZV9jb25maWctPnBvcnRf Y2xvY2ssCj4gPiArCQkJCQkJICAgIHBpcGVfY29uZmlnLT5sYW5lX2NvdW50LAo+ID4gKwkJCQkJ CSAgICBhZGp1c3RlZF9tb2RlLT5jcnRjX2Nsb2NrLAo+ID4gKwkJCQkJCSAgICBhZGp1c3RlZF9t b2RlLT5jcnRjX2hkaXNwbGF5KTsKPiA+ICsJCQlkc2NfZHBfc2xpY2VfY291bnQgPQo+ID4gKwkJ CQlpbnRlbF9kcF9kc2NfZ2V0X3NsaWNlX2NvdW50KGludGVsX2RwLAo+ID4gKwkJCQkJCQkgICAg IGFkanVzdGVkX21vZGUtPmNydGNfY2xvY2ssCj4gPiArCQkJCQkJCSAgICAgYWRqdXN0ZWRfbW9k ZS0+Y3J0Y19oZGlzcGxheSk7Cj4gPiArCQlpZiAoIShkc2NfbWF4X291dHB1dF9icHAgJiYgZHNj X2RwX3NsaWNlX2NvdW50KSkgewo+ID4gKwkJCURSTV9ERUJVR19LTVMoIkNvbXByZXNzZWQgQlBQ L1NsaWNlIENvdW50IG5vdCBzdXBwb3J0ZWRcbiIpOwo+ID4gKwkJCXJldHVybiBmYWxzZTsKPiA+ ICsJCX0KPiA+ICsJCXBpcGVfY29uZmlnLT5kc2NfcGFyYW1zLmNvbXByZXNzZWRfYnBwID0gbWlu X3QodTE2LAo+ID4gKwkJCQkJCQkgICAgICAgZHNjX21heF9vdXRwdXRfYnBwID4+IDQsCj4gPiAr CQkJCQkJCSAgICAgICBwaXBlX2NvbmZpZy0+cGlwZV9icHApOwo+ID4gKwkJcGlwZV9jb25maWct PmRzY19wYXJhbXMuc2xpY2VfY291bnQgPSBkc2NfZHBfc2xpY2VfY291bnQ7Cj4gPiArCX0KPiA+ ICsJLyoKPiA+ICsJICogVkRTQyBlbmdpbmUgb3BlcmF0ZXMgYXQgMSBQaXhlbCBwZXIgY2xvY2ss IHNvIGlmIHBlYWsgcGl4ZWwgcmF0ZQo+ID4gKwkgKiBpcyBncmVhdGVyIHRoYW4gdGhlIG1heGlt dW0gQ2RjbG9jayBhbmQgaWYgc2xpY2UgY291bnQgaXMgZXZlbgo+ID4gKwkgKiB0aGVuIHdlIG5l ZWQgdG8gdXNlIDIgVkRTQyBpbnN0YW5jZXMuCj4gPiArCSAqLwo+ID4gKwlpZiAoYWRqdXN0ZWRf bW9kZS0+Y3J0Y19jbG9jayA+IGRldl9wcml2LT5tYXhfY2RjbGtfZnJlcSkgewo+ID4gKwkJaWYg KHBpcGVfY29uZmlnLT5kc2NfcGFyYW1zLnNsaWNlX2NvdW50ID4gMSkgewo+ID4gKwkJCXBpcGVf Y29uZmlnLT5kc2NfcGFyYW1zLmRzY19zcGxpdCA9IHRydWU7Cj4gPiArCQl9IGVsc2Ugewo+ID4g KwkJCURSTV9ERUJVR19LTVMoIkNhbm5vdCBzcGxpdCBzdHJlYW0gdG8gdXNlIDIgVkRTQyBpbnN0 YW5jZXNcbiIpOwo+ID4gKwkJCXJldHVybiBmYWxzZTsKPiA+ICsJCX0KPiA+ICsJfQo+ID4gKwlw aXBlX2NvbmZpZy0+ZHNjX3BhcmFtcy5jb21wcmVzc2lvbl9lbmFibGUgPSB0cnVlOwo+ID4gKwlE Uk1fREVCVUdfS01TKCJEUCBEU0MgY29tcHV0ZWQgd2l0aCBJbnB1dCBCcHAgPSAlZCAiCj4gPiAr CQkgICAgICAiQ29tcHJlc3NlZCBCcHAgPSAlZCBTbGljZSBDb3VudCA9ICVkXG4iLAo+ID4gKwkJ ICAgICAgcGlwZV9jb25maWctPnBpcGVfYnBwLAo+ID4gKwkJICAgICAgcGlwZV9jb25maWctPmRz Y19wYXJhbXMuY29tcHJlc3NlZF9icHAsCj4gPiArCQkgICAgICBwaXBlX2NvbmZpZy0+ZHNjX3Bh cmFtcy5zbGljZV9jb3VudCk7Cj4gPiArCj4gPiArCXJldHVybiB0cnVlOwo+ID4gK30KPiA+ICsK PiA+ICBzdGF0aWMgYm9vbAo+ID4gIGludGVsX2RwX2NvbXB1dGVfbGlua19jb25maWcoc3RydWN0 IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gPiAtCQkJICAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqcGlwZV9jb25maWcpCj4gPiArCQkJICAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq cGlwZV9jb25maWcsCj4gPiArCQkJICAgICBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29u bl9zdGF0ZSkKPiA+ICB7Cj4gPiAgCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9t b2RlID0gJnBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGU7Cj4gPiAgCXN0cnVjdCBpbnRl bF9kcCAqaW50ZWxfZHAgPSBlbmNfdG9faW50ZWxfZHAoJmVuY29kZXItPmJhc2UpOwo+ID4gIAlz dHJ1Y3QgbGlua19jb25maWdfbGltaXRzIGxpbWl0czsKPiA+ICAJaW50IGNvbW1vbl9sZW47Cj4g PiArCWJvb2wgcmV0ID0gZmFsc2U7Cj4gCj4gVW5lY2Vzc2FyeSBpbml0aWFsaXphdGlvbiBBRkFJ Q1MuCj4gCj4gPiAgCj4gPiAgCWNvbW1vbl9sZW4gPSBpbnRlbF9kcF9jb21tb25fbGVuX3JhdGVf bGltaXQoaW50ZWxfZHAsCj4gPiAgCQkJCQkJICAgIGludGVsX2RwLT5tYXhfbGlua19yYXRlKTsK PiA+IEBAIC0xODYzLDggKzE5OTIsOCBAQCBpbnRlbF9kcF9jb21wdXRlX2xpbmtfY29uZmlnKHN0 cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ID4gIAlsaW1pdHMubWluX2xhbmVfY291bnQg PSAxOwo+ID4gIAlsaW1pdHMubWF4X2xhbmVfY291bnQgPSBpbnRlbF9kcF9tYXhfbGFuZV9jb3Vu dChpbnRlbF9kcCk7Cj4gPiAgCj4gPiAtCWxpbWl0cy5taW5fYnBwID0gNiAqIDM7Cj4gPiAgCWxp bWl0cy5tYXhfYnBwID0gaW50ZWxfZHBfY29tcHV0ZV9icHAoaW50ZWxfZHAsIHBpcGVfY29uZmln KTsKPiA+ICsJbGltaXRzLm1pbl9icHAgPSA2ICogMzsKPiAKPiBMZWZ0b3ZlcnMKPiAKPiA+ICAK PiA+ICAJaWYgKGludGVsX2RwX2lzX2VkcChpbnRlbF9kcCkgJiYgaW50ZWxfZHAtPmVkcF9kcGNk WzBdIDwgRFBfRURQXzE0KSB7Cj4gPiAgCQkvKgo+ID4gQEAgLTE4ODgsNyArMjAxNyw3IEBAIGlu dGVsX2RwX2NvbXB1dGVfbGlua19jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIs Cj4gPiAgCQkgICAgICBpbnRlbF9kcC0+Y29tbW9uX3JhdGVzW2xpbWl0cy5tYXhfY2xvY2tdLAo+ ID4gIAkJICAgICAgbGltaXRzLm1heF9icHAsIGFkanVzdGVkX21vZGUtPmNydGNfY2xvY2spOwo+ ID4gIAo+ID4gLQlpZiAoaW50ZWxfZHBfaXNfZWRwKGludGVsX2RwKSkgewo+ID4gKwlpZiAoaW50 ZWxfZHBfaXNfZWRwKGludGVsX2RwKSkKPiA+ICAJCS8qCj4gPiAgCQkgKiBPcHRpbWl6ZSBmb3Ig ZmFzdCBhbmQgbmFycm93LiBlRFAgMS4zIHNlY3Rpb24gMy4zIGFuZCBlRFAgMS40Cj4gPiAgCQkg KiBzZWN0aW9uIEEuMTogIkl0IGlzIHJlY29tbWVuZGVkIHRoYXQgdGhlIG1pbmltdW0gbnVtYmVy IG9mCj4gPiBAQCAtMTg5OCwyNiArMjAyNyw0MiBAQCBpbnRlbF9kcF9jb21wdXRlX2xpbmtfY29u ZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ID4gIAkJICogTm90ZSB0aGF0IHdl IHVzZSB0aGUgbWF4IGNsb2NrIGFuZCBsYW5lIGNvdW50IGZvciBlRFAgMS4zIGFuZAo+ID4gIAkJ ICogZWFybGllciwgYW5kIGZhc3QgdnMuIHdpZGUgaXMgaXJyZWxldmFudC4KPiA+ICAJCSAqLwo+ ID4gLQkJaWYgKCFpbnRlbF9kcF9jb21wdXRlX2xpbmtfY29uZmlnX2Zhc3QoaW50ZWxfZHAsIHBp cGVfY29uZmlnLAo+ID4gLQkJCQkJCSAgICAgICAmbGltaXRzKSkKPiA+IC0JCQlyZXR1cm4gZmFs c2U7Cj4gPiAtCX0gZWxzZSB7Cj4gPiArCQlyZXQgPSBpbnRlbF9kcF9jb21wdXRlX2xpbmtfY29u ZmlnX2Zhc3QoaW50ZWxfZHAsIHBpcGVfY29uZmlnLAo+ID4gKwkJCQkJCQkmbGltaXRzKTsKPiA+ ICsJIGVsc2UKPiA+ICAJCS8qIE9wdGltaXplIGZvciBzbG93IGFuZCB3aWRlLiAqLwo+ID4gLQkJ aWYgKCFpbnRlbF9kcF9jb21wdXRlX2xpbmtfY29uZmlnX3dpZGUoaW50ZWxfZHAsIHBpcGVfY29u ZmlnLAo+ID4gLQkJCQkJCSAgICAgICAmbGltaXRzKSkKPiA+ICsJCXJldCA9IGludGVsX2RwX2Nv bXB1dGVfbGlua19jb25maWdfd2lkZShpbnRlbF9kcCwgcGlwZV9jb25maWcsCj4gPiArCQkJCQkJ CSZsaW1pdHMpOwo+ID4gKwo+ID4gKwkvKiBlbmFibGUgY29tcHJlc3Npb24gaWYgdGhlIG1vZGUg ZG9lc24ndCBmaXQgYXZhaWxhYmxlIEJXICovCj4gPiArCWlmICghcmV0KSB7Cj4gPiArCQlpZiAo IWludGVsX2RwX2RzY19jb21wdXRlX2NvbmZpZyhpbnRlbF9kcCwgcGlwZV9jb25maWcsCj4gPiAr CQkJCQkJIGNvbm5fc3RhdGUsICZsaW1pdHMpKQo+ID4gIAkJCXJldHVybiBmYWxzZTsKPiA+ICAJ fQo+ID4gIAo+ID4gLQlEUk1fREVCVUdfS01TKCJEUCBsYW5lIGNvdW50ICVkIGNsb2NrICVkIGJw cCAlZFxuIiwKPiA+IC0JCSAgICAgIHBpcGVfY29uZmlnLT5sYW5lX2NvdW50LCBwaXBlX2NvbmZp Zy0+cG9ydF9jbG9jaywKPiA+IC0JCSAgICAgIHBpcGVfY29uZmlnLT5waXBlX2JwcCk7Cj4gPiAr CWlmIChwaXBlX2NvbmZpZy0+ZHNjX3BhcmFtcy5jb21wcmVzc2lvbl9lbmFibGUpIHsKPiA+ICsJ CURSTV9ERUJVR19LTVMoIkRQIGxhbmUgY291bnQgJWQgY2xvY2sgJWQgSW5wdXQgYnBwICVkIENv bXByZXNzZWQgYnBwICVkXG4iLAo+ID4gKwkJCSAgICAgIHBpcGVfY29uZmlnLT5sYW5lX2NvdW50 LCBwaXBlX2NvbmZpZy0+cG9ydF9jbG9jaywKPiA+ICsJCQkgICAgICBwaXBlX2NvbmZpZy0+cGlw ZV9icHAsCj4gPiArCQkJICAgICAgcGlwZV9jb25maWctPmRzY19wYXJhbXMuY29tcHJlc3NlZF9i cHApOwo+ID4gIAo+ID4gLQlEUk1fREVCVUdfS01TKCJEUCBsaW5rIHJhdGUgcmVxdWlyZWQgJWkg YXZhaWxhYmxlICVpXG4iLAo+ID4gLQkJICAgICAgaW50ZWxfZHBfbGlua19yZXF1aXJlZChhZGp1 c3RlZF9tb2RlLT5jcnRjX2Nsb2NrLAo+ID4gLQkJCQkJICAgICBwaXBlX2NvbmZpZy0+cGlwZV9i cHApLAo+ID4gLQkJICAgICAgaW50ZWxfZHBfbWF4X2RhdGFfcmF0ZShwaXBlX2NvbmZpZy0+cG9y dF9jbG9jaywKPiA+IC0JCQkJCSAgICAgcGlwZV9jb25maWctPmxhbmVfY291bnQpKTsKPiA+ICsJ CURSTV9ERUJVR19LTVMoIkRQIGxpbmsgcmF0ZSByZXF1aXJlZCAlaSBhdmFpbGFibGUgJWlcbiIs Cj4gPiArCQkJICAgICAgaW50ZWxfZHBfbGlua19yZXF1aXJlZChhZGp1c3RlZF9tb2RlLT5jcnRj X2Nsb2NrLAo+ID4gKwkJCQkJCSAgICAgcGlwZV9jb25maWctPmRzY19wYXJhbXMuY29tcHJlc3Nl ZF9icHApLAo+ID4gKwkJCSAgICAgIGludGVsX2RwX21heF9kYXRhX3JhdGUocGlwZV9jb25maWct PnBvcnRfY2xvY2ssCj4gPiArCQkJCQkJICAgICBwaXBlX2NvbmZpZy0+bGFuZV9jb3VudCkpOwo+ ID4gKwl9IGVsc2Ugewo+ID4gKwkJRFJNX0RFQlVHX0tNUygiRFAgbGFuZSBjb3VudCAlZCBjbG9j ayAlZCBicHAgJWRcbiIsCj4gPiArCQkJICAgICAgcGlwZV9jb25maWctPmxhbmVfY291bnQsIHBp cGVfY29uZmlnLT5wb3J0X2Nsb2NrLAo+ID4gKwkJCSAgICAgIHBpcGVfY29uZmlnLT5waXBlX2Jw cCk7Cj4gPiAgCj4gPiArCQlEUk1fREVCVUdfS01TKCJEUCBsaW5rIHJhdGUgcmVxdWlyZWQgJWkg YXZhaWxhYmxlICVpXG4iLAo+ID4gKwkJCSAgICAgIGludGVsX2RwX2xpbmtfcmVxdWlyZWQoYWRq dXN0ZWRfbW9kZS0+Y3J0Y19jbG9jaywKPiA+ICsJCQkJCQkgICAgIHBpcGVfY29uZmlnLT5waXBl X2JwcCksCj4gPiArCQkJICAgICAgaW50ZWxfZHBfbWF4X2RhdGFfcmF0ZShwaXBlX2NvbmZpZy0+ cG9ydF9jbG9jaywKPiA+ICsJCQkJCQkgICAgIHBpcGVfY29uZmlnLT5sYW5lX2NvdW50KSk7Cj4g PiArCX0KPiA+ICAJcmV0dXJuIHRydWU7Cj4gPiAgfQo+ID4gIAo+ID4gQEAgLTE5ODMsNyArMjEy OCw3IEBAIGludGVsX2RwX2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNv ZGVyLAo+ID4gIAlpZiAoYWRqdXN0ZWRfbW9kZS0+ZmxhZ3MgJiBEUk1fTU9ERV9GTEFHX0RCTENM SykKPiA+ICAJCXJldHVybiBmYWxzZTsKPiA+ICAKPiA+IC0JaWYgKCFpbnRlbF9kcF9jb21wdXRl X2xpbmtfY29uZmlnKGVuY29kZXIsIHBpcGVfY29uZmlnKSkKPiA+ICsJaWYgKCFpbnRlbF9kcF9j b21wdXRlX2xpbmtfY29uZmlnKGVuY29kZXIsIHBpcGVfY29uZmlnLCBjb25uX3N0YXRlKSkKPiA+ ICAJCXJldHVybiBmYWxzZTsKPiA+ICAKPiA+ICAJaWYgKGludGVsX2Nvbm5fc3RhdGUtPmJyb2Fk Y2FzdF9yZ2IgPT0gSU5URUxfQlJPQURDQVNUX1JHQl9BVVRPKSB7Cj4gPiBAQCAtMjAwMSw3ICsy MTQ2LDkgQEAgaW50ZWxfZHBfY29tcHV0ZV9jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVu Y29kZXIsCj4gPiAgCQkJaW50ZWxfY29ubl9zdGF0ZS0+YnJvYWRjYXN0X3JnYiA9PSBJTlRFTF9C Uk9BRENBU1RfUkdCX0xJTUlURUQ7Cj4gPiAgCX0KPiA+ICAKPiA+IC0JaW50ZWxfbGlua19jb21w dXRlX21fbihwaXBlX2NvbmZpZy0+cGlwZV9icHAsIHBpcGVfY29uZmlnLT5sYW5lX2NvdW50LAo+ ID4gKwlpbnRlbF9saW5rX2NvbXB1dGVfbV9uKHBpcGVfY29uZmlnLT5waXBlX2JwcCwKPiA+ICsJ CQkgICAgICAgcGlwZV9jb25maWctPmRzY19wYXJhbXMuY29tcHJlc3NlZF9icHAsCj4gPiArCQkJ ICAgICAgIHBpcGVfY29uZmlnLT5sYW5lX2NvdW50LAo+ID4gIAkJCSAgICAgICBhZGp1c3RlZF9t b2RlLT5jcnRjX2Nsb2NrLAo+ID4gIAkJCSAgICAgICBwaXBlX2NvbmZpZy0+cG9ydF9jbG9jaywK PiA+ICAJCQkgICAgICAgJnBpcGVfY29uZmlnLT5kcF9tX24sCj4gPiBAQCAtMjAxMCw3ICsyMTU3 LDcgQEAgaW50ZWxfZHBfY29tcHV0ZV9jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29k ZXIsCj4gPiAgCWlmIChpbnRlbF9jb25uZWN0b3ItPnBhbmVsLmRvd25jbG9ja19tb2RlICE9IE5V TEwgJiYKPiA+ICAJCWRldl9wcml2LT5kcnJzLnR5cGUgPT0gU0VBTUxFU1NfRFJSU19TVVBQT1JU KSB7Cj4gPiAgCQkJcGlwZV9jb25maWctPmhhc19kcnJzID0gdHJ1ZTsKPiA+IC0JCQlpbnRlbF9s aW5rX2NvbXB1dGVfbV9uKHBpcGVfY29uZmlnLT5waXBlX2JwcCwKPiA+ICsJCQlpbnRlbF9saW5r X2NvbXB1dGVfbV9uKHBpcGVfY29uZmlnLT5waXBlX2JwcCwgMCwKPiA+ICAJCQkJCSAgICAgICBw aXBlX2NvbmZpZy0+bGFuZV9jb3VudCwKPiA+ICAJCQkJCSAgICAgICBpbnRlbF9jb25uZWN0b3It PnBhbmVsLmRvd25jbG9ja19tb2RlLT5jbG9jaywKPiA+ICAJCQkJCSAgICAgICBwaXBlX2NvbmZp Zy0+cG9ydF9jbG9jaywKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kcF9tc3QuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX21zdC5jCj4gPiBpbmRl eCA0ZGUyNDdkZGYwNWYuLjNmMzQ2YjJlM2I0OCAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2RwX21zdC5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcF9tc3QuYwo+ID4gQEAgLTkwLDcgKzkwLDcgQEAgc3RhdGljIGJvb2wgaW50ZWxfZHBf bXN0X2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ID4gIAkJ fQo+ID4gIAl9Cj4gPiAgCj4gPiAtCWludGVsX2xpbmtfY29tcHV0ZV9tX24oYnBwLCBsYW5lX2Nv dW50LAo+ID4gKwlpbnRlbF9saW5rX2NvbXB1dGVfbV9uKGJwcCwgMCwgbGFuZV9jb3VudCwKPiA+ ICAJCQkgICAgICAgYWRqdXN0ZWRfbW9kZS0+Y3J0Y19jbG9jaywKPiA+ICAJCQkgICAgICAgcGlw ZV9jb25maWctPnBvcnRfY2xvY2ssCj4gPiAgCQkJICAgICAgICZwaXBlX2NvbmZpZy0+ZHBfbV9u LAo+ID4gLS0gCj4gPiAyLjE5LjEKPiAKPiAtLSAKPiBWaWxsZSBTeXJqw6Rsw6QKPiBJbnRlbApf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZngg bWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK