From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 4/4] drm/i915: Remove begin/finish_crtc_commit, v2. Date: Thu, 26 Sep 2019 15:45:31 +0300 Message-ID: <20190926124531.GL1208@intel.com> References: <20190925145901.3943-1-maarten.lankhorst@linux.intel.com> <20190925145901.3943-4-maarten.lankhorst@linux.intel.com> <20190925214212.GT1869@mdroper-desk1.amr.corp.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 401A86ED12 for ; Thu, 26 Sep 2019 12:45:35 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20190925214212.GT1869@mdroper-desk1.amr.corp.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Matt Roper Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBTZXAgMjUsIDIwMTkgYXQgMDI6NDI6MTJQTSAtMDcwMCwgTWF0dCBSb3BlciB3cm90 ZToKPiBPbiBXZWQsIFNlcCAyNSwgMjAxOSBhdCAwNDo1OTowMVBNICswMjAwLCBNYWFydGVuIExh bmtob3JzdCB3cm90ZToKPiA+IFRoaXMgY2FuIGFsbCBiZSBkb25lIGZyb20gdGhlIGludGVsX3Vw ZGF0ZV9jcnRjIGZ1bmN0aW9uLiBTcGxpdCBvdXQgdGhlCj4gPiBwaXBlIHVwZGF0ZSBpbnRvIGEg c2VwYXJhdGUgZnVuY3Rpb24sIGp1c3QgbGlrZSBpcyBkb25lIGZvciB0aGUgcGxhbmVzLgo+ID4g UHVsbCBpbiBhbGwgdGhlIGNoYW5nZXMgZG9uZSBkdXJpbmcgZmFzdHNldCBhcyB3ZWxsLiBJdCBt YWtlcyBubyBzZW5zZQo+ID4gZm9yIGl0IHRvIHN0aWxsIGV4aXN0IGFzIGEgc2VwYXJhdGUgZnVu Y3Rpb24uCj4gPiAKPiA+IENoYW5nZXMgc2luY2UgdjE6Cj4gPiAtIElubGluZSBpbnRlbF91cGRh dGVfcGlwZV9jb25maWcoKQo+ID4gCj4gPiBTaWduZWQtb2ZmLWJ5OiBNYWFydGVuIExhbmtob3Jz dCA8bWFhcnRlbi5sYW5raG9yc3RAbGludXguaW50ZWwuY29tPgo+ID4gLS0tCj4gPiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMgfCAxOTcgKysrKysrKystLS0t LS0tLS0tLQo+ID4gIDEgZmlsZSBjaGFuZ2VkLCA4NiBpbnNlcnRpb25zKCspLCAxMTEgZGVsZXRp b25zKC0pCj4gPiAKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5 L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlz cGxheS5jCj4gPiBpbmRleCBiNzc1NzRjZGE2NDguLjVhOWQwNmFmOWYyOSAxMDA2NDQKPiA+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jCj4gPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2Rpc3BsYXkuYwo+ID4gQEAgLTEz Niw4ICsxMzYsNiBAQCBzdGF0aWMgdm9pZCB2bHZfcHJlcGFyZV9wbGwoc3RydWN0IGludGVsX2Ny dGMgKmNydGMsCj4gPiAgCQkJICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBl X2NvbmZpZyk7Cj4gPiAgc3RhdGljIHZvaWQgY2h2X3ByZXBhcmVfcGxsKHN0cnVjdCBpbnRlbF9j cnRjICpjcnRjLAo+ID4gIAkJCSAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlw ZV9jb25maWcpOwo+ID4gLXN0YXRpYyB2b2lkIGludGVsX2JlZ2luX2NydGNfY29tbWl0KHN0cnVj dCBpbnRlbF9hdG9taWNfc3RhdGUgKiwgc3RydWN0IGludGVsX2NydGMgKik7Cj4gPiAtc3RhdGlj IHZvaWQgaW50ZWxfZmluaXNoX2NydGNfY29tbWl0KHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUg Kiwgc3RydWN0IGludGVsX2NydGMgKik7Cj4gPiAgc3RhdGljIHZvaWQgaW50ZWxfY3J0Y19pbml0 X3NjYWxlcnMoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gPiAgCQkJCSAgICBzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSk7Cj4gPiAgc3RhdGljIHZvaWQgc2t5bGFrZV9wZml0 X2VuYWJsZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSk7Cj4gPiBA QCAtNDQwOSw0NSArNDQwNyw2IEBAIHN0YXRpYyB2b2lkIGljbF9zZXRfcGlwZV9jaGlja2VuKHN0 cnVjdCBpbnRlbF9jcnRjICpjcnRjKQo+ID4gIAlJOTE1X1dSSVRFKFBJUEVfQ0hJQ0tFTihwaXBl KSwgdG1wKTsKPiA+ICB9Cj4gPiAgCj4gPiAtc3RhdGljIHZvaWQgaW50ZWxfdXBkYXRlX3BpcGVf Y29uZmlnKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZSwKPiA+ IC0JCQkJICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqbmV3X2NydGNfc3RhdGUp Cj4gPiAtewo+ID4gLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMobmV3 X2NydGNfc3RhdGUtPnVhcGkuY3J0Yyk7Cj4gPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwo+ID4gLQo+ID4gLQkvKiBkcm1fYXRv bWljX2hlbHBlcl91cGRhdGVfbGVnYWN5X21vZGVzZXRfc3RhdGUgbWlnaHQgbm90IGJlIGNhbGxl ZC4gKi8KPiA+IC0JY3J0Yy0+YmFzZS5tb2RlID0gbmV3X2NydGNfc3RhdGUtPnVhcGkubW9kZTsK PiA+IC0KPiA+IC0JLyoKPiA+IC0JICogVXBkYXRlIHBpcGUgc2l6ZSBhbmQgYWRqdXN0IGZpdHRl ciBpZiBuZWVkZWQ6IHRoZSByZWFzb24gZm9yIHRoaXMgaXMKPiA+IC0JICogdGhhdCBpbiBjb21w dXRlX21vZGVfY2hhbmdlcyB3ZSBjaGVjayB0aGUgbmF0aXZlIG1vZGUgKG5vdCB0aGUgcGZpdAo+ ID4gLQkgKiBtb2RlKSB0byBzZWUgaWYgd2UgY2FuIGZsaXAgcmF0aGVyIHRoYW4gZG8gYSBmdWxs IG1vZGUgc2V0LiBJbiB0aGUKPiA+IC0JICogZmFzdGJvb3QgY2FzZSwgd2UnbGwgZmxpcCwgYnV0 IGlmIHdlIGRvbid0IHVwZGF0ZSB0aGUgcGlwZXNyYyBhbmQKPiA+IC0JICogcGZpdCBzdGF0ZSwg d2UnbGwgZW5kIHVwIHdpdGggYSBiaWcgZmIgc2Nhbm5lZCBvdXQgaW50byB0aGUgd3JvbmcKPiA+ IC0JICogc2l6ZWQgc3VyZmFjZS4KPiA+IC0JICovCj4gPiAtCj4gPiAtCUk5MTVfV1JJVEUoUElQ RVNSQyhjcnRjLT5waXBlKSwKPiA+IC0JCSAgICgobmV3X2NydGNfc3RhdGUtPnBpcGVfc3JjX3cg LSAxKSA8PCAxNikgfAo+ID4gLQkJICAgKG5ld19jcnRjX3N0YXRlLT5waXBlX3NyY19oIC0gMSkp Owo+ID4gLQo+ID4gLQkvKiBvbiBza3lsYWtlIHRoaXMgaXMgZG9uZSBieSBkZXRhY2hpbmcgc2Nh bGVycyAqLwo+ID4gLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KSB7Cj4gPiAtCQlza2xf ZGV0YWNoX3NjYWxlcnMobmV3X2NydGNfc3RhdGUpOwo+ID4gLQo+ID4gLQkJaWYgKG5ld19jcnRj X3N0YXRlLT5wY2hfcGZpdC5lbmFibGVkKQo+ID4gLQkJCXNreWxha2VfcGZpdF9lbmFibGUobmV3 X2NydGNfc3RhdGUpOwo+ID4gLQl9IGVsc2UgaWYgKEhBU19QQ0hfU1BMSVQoZGV2X3ByaXYpKSB7 Cj4gPiAtCQlpZiAobmV3X2NydGNfc3RhdGUtPnBjaF9wZml0LmVuYWJsZWQpCj4gPiAtCQkJaXJv bmxha2VfcGZpdF9lbmFibGUobmV3X2NydGNfc3RhdGUpOwo+ID4gLQkJZWxzZSBpZiAob2xkX2Ny dGNfc3RhdGUtPnBjaF9wZml0LmVuYWJsZWQpCj4gPiAtCQkJaXJvbmxha2VfcGZpdF9kaXNhYmxl KG9sZF9jcnRjX3N0YXRlKTsKPiA+IC0JfQo+ID4gLQo+ID4gLQlpZiAoSU5URUxfR0VOKGRldl9w cml2KSA+PSAxMSkKPiA+IC0JCWljbF9zZXRfcGlwZV9jaGlja2VuKGNydGMpOwo+ID4gLX0KPiA+ IC0KPiA+ICBzdGF0aWMgdm9pZCBpbnRlbF9mZGlfbm9ybWFsX3RyYWluKHN0cnVjdCBpbnRlbF9j cnRjICpjcnRjKQo+ID4gIHsKPiA+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmJh c2UuZGV2Owo+ID4gQEAgLTEzNzM5LDEzICsxMzY5OCw4OCBAQCB1MzIgaW50ZWxfY3J0Y19nZXRf dmJsYW5rX2NvdW50ZXIoc3RydWN0IGludGVsX2NydGMgKmNydGMpCj4gPiAgCXJldHVybiBjcnRj LT5iYXNlLmZ1bmNzLT5nZXRfdmJsYW5rX2NvdW50ZXIoJmNydGMtPmJhc2UpOwo+ID4gIH0KPiA+ ICAKPiA+ICt2b2lkIGludGVsX2NydGNfYXJtX2ZpZm9fdW5kZXJydW4oc3RydWN0IGludGVsX2Ny dGMgKmNydGMsCj4gPiArCQkJCSAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUp Cj4gPiArewo+ID4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1 KGNydGMtPmJhc2UuZGV2KTsKPiA+ICsKPiA+ICsJaWYgKCFJU19HRU4oZGV2X3ByaXYsIDIpKQo+ ID4gKwkJaW50ZWxfc2V0X2NwdV9maWZvX3VuZGVycnVuX3JlcG9ydGluZyhkZXZfcHJpdiwgY3J0 Yy0+cGlwZSwgdHJ1ZSk7Cj4gPiArCj4gPiArCWlmIChjcnRjX3N0YXRlLT5oYXNfcGNoX2VuY29k ZXIpIHsKPiA+ICsJCWVudW0gcGlwZSBwY2hfdHJhbnNjb2RlciA9Cj4gPiArCQkJaW50ZWxfY3J0 Y19wY2hfdHJhbnNjb2RlcihjcnRjKTsKPiA+ICsKPiA+ICsJCWludGVsX3NldF9wY2hfZmlmb191 bmRlcnJ1bl9yZXBvcnRpbmcoZGV2X3ByaXYsIHBjaF90cmFuc2NvZGVyLCB0cnVlKTsKPiA+ICsJ fQo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgdm9pZCBjb21taXRfcGlwZV9jb25maWcoc3RydWN0 IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUsCj4gPiArCQkJICAgICAgIHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZSwKPiA+ICsJCQkgICAgICAgc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKm5ld19jcnRjX3N0YXRlKQo+ID4gK3sKPiA+ICsJc3RydWN0IGludGVsX2NydGMg KmNydGMgPSB0b19pbnRlbF9jcnRjKG5ld19jcnRjX3N0YXRlLT51YXBpLmNydGMpOwo+ID4gKwlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHN0YXRlLT5iYXNlLmRl dik7Cj4gPiArCWJvb2wgbW9kZXNldCA9IG5lZWRzX21vZGVzZXQobmV3X2NydGNfc3RhdGUpOwo+ ID4gKwo+ID4gKwlpZiAoIW1vZGVzZXQpIHsKPiA+ICsJCWlmIChuZXdfY3J0Y19zdGF0ZS0+dWFw aS5jb2xvcl9tZ210X2NoYW5nZWQgfHwKPiA+ICsJCSAgICBuZXdfY3J0Y19zdGF0ZS0+dXBkYXRl X3BpcGUpCj4gPiArCQkJaW50ZWxfY29sb3JfY29tbWl0KG5ld19jcnRjX3N0YXRlKTsKPiA+ICsK PiA+ICsJCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpCj4gPiArCQkJc2tsX2RldGFjaF9z Y2FsZXJzKG5ld19jcnRjX3N0YXRlKTsKPiA+ICsKPiA+ICsJCWlmIChuZXdfY3J0Y19zdGF0ZS0+ dXBkYXRlX3BpcGUpIHsKPiA+ICsJCQkvKiBkcm1fYXRvbWljX2hlbHBlcl91cGRhdGVfbGVnYWN5 X21vZGVzZXRfc3RhdGUgbWlnaHQgbm90IGJlIGNhbGxlZC4gKi8KPiA+ICsJCQljcnRjLT5iYXNl Lm1vZGUgPSBuZXdfY3J0Y19zdGF0ZS0+dWFwaS5tb2RlOwo+ID4gKwo+ID4gKwkJCS8qCj4gPiAr CQkJICogVXBkYXRlIHBpcGUgc2l6ZSBhbmQgYWRqdXN0IGZpdHRlciBpZiBuZWVkZWQ6IHRoZSBy ZWFzb24gZm9yIHRoaXMgaXMKPiA+ICsJCQkgKiB0aGF0IGluIGNvbXB1dGVfbW9kZV9jaGFuZ2Vz IHdlIGNoZWNrIHRoZSBuYXRpdmUgbW9kZSAobm90IHRoZSBwZml0Cj4gPiArCQkJICogbW9kZSkg dG8gc2VlIGlmIHdlIGNhbiBmbGlwIHJhdGhlciB0aGFuIGRvIGEgZnVsbCBtb2RlIHNldC4gSW4g dGhlCj4gPiArCQkJICogZmFzdGJvb3QgY2FzZSwgd2UnbGwgZmxpcCwgYnV0IGlmIHdlIGRvbid0 IHVwZGF0ZSB0aGUgcGlwZXNyYyBhbmQKPiA+ICsJCQkgKiBwZml0IHN0YXRlLCB3ZSdsbCBlbmQg dXAgd2l0aCBhIGJpZyBmYiBzY2FubmVkIG91dCBpbnRvIHRoZSB3cm9uZwo+ID4gKwkJCSAqIHNp emVkIHN1cmZhY2UuCj4gPiArCQkJICovCj4gPiArCj4gPiArCQkJSTkxNV9XUklURShQSVBFU1JD KGNydGMtPnBpcGUpLAo+ID4gKwkJCQkgICgobmV3X2NydGNfc3RhdGUtPnBpcGVfc3JjX3cgLSAx KSA8PCAxNikgfAo+ID4gKwkJCQkgIChuZXdfY3J0Y19zdGF0ZS0+cGlwZV9zcmNfaCAtIDEpKTsK PiAKPiBpbnRlbF9zZXRfcGlwZV9zcmNfc2l6ZShuZXdfY3J0Y19zdGF0ZSk7Cj4gCj4gdG8gYmUg bW9yZSBmdXR1cmUtcHJvb2YgaW4gY2FzZSB0aGUgcmVnaXN0ZXIgY2hhbmdlcyBpbiB0aGUgZnV0 dXJlLgo+IAo+ID4gKwo+ID4gKwkJCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpIHsKPiA+ ICsJCQkJLyoKPiA+ICsJCQkJICogZW5hYmxlIHBpcGUgc2NhbGVyIGhlcmUgaWYgbmVlZGVkLCBp Zgo+ID4gKwkJCQkgKiBpdCdzIGRpc2FibGVkLCB0aGF0J3MgZG9uZSBieQo+ID4gKwkJCQkgKiBz a2xfZGV0YWNoX3NjYWxlcnMoKSBhYm92ZS4KPiA+ICsJCQkJICovCj4gPiArCQkJCXNreWxha2Vf cGZpdF9lbmFibGUobmV3X2NydGNfc3RhdGUpOwo+ID4gKwkJCX0gZWxzZSBpZiAoSEFTX1BDSF9T UExJVChkZXZfcHJpdikpIHsKPiA+ICsJCQkJaWYgKCFuZXdfY3J0Y19zdGF0ZS0+cGNoX3BmaXQu ZW5hYmxlZCkKPiA+ICsJCQkJCWlyb25sYWtlX3BmaXRfZGlzYWJsZShvbGRfY3J0Y19zdGF0ZSk7 Cj4gPiArCQkJCWVsc2UKPiA+ICsJCQkJCWlyb25sYWtlX3BmaXRfZW5hYmxlKG5ld19jcnRjX3N0 YXRlKTsKPiA+ICsJCQl9Cj4gPiArCj4gPiArCQkJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0g MTEpCj4gPiArCQkJCWljbF9zZXRfcGlwZV9jaGlja2VuKGNydGMpOwo+ID4gKwkJfQo+ID4gKwo+ ID4gKwkJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSB8fCBJU19CUk9BRFdFTEwoZGV2X3By aXYpKQo+ID4gKwkJCWJkd19zZXRfcGlwZW1pc2MobmV3X2NydGNfc3RhdGUpOwo+ID4gKwl9Cj4g PiArCj4gPiArCWlmIChkZXZfcHJpdi0+ZGlzcGxheS5hdG9taWNfdXBkYXRlX3dhdGVybWFya3Mp Cj4gPiArCQlkZXZfcHJpdi0+ZGlzcGxheS5hdG9taWNfdXBkYXRlX3dhdGVybWFya3Moc3RhdGUs Cj4gPiArCQkJCQkJCSAgIG5ld19jcnRjX3N0YXRlKTsKPiAKPiBJdCBtaWdodCBtYWtlIHNlbnNl IHRvIG1vdmUgdGhlIHdhdGVybWFyayB1cGRhdGUgb3V0IHRvIHRoZSBjYWxsZXIuICBUaGUKPiB3 YXRlcm1hcmsgcmVnaXN0ZXJzIHRoZW1zZWx2ZXMgYXJlIHBsYW5lLWJhc2VkLCBzbyBkZWFsaW5n IHdpdGggdGhlbSBpbgo+IHRoZSBjb21taXRfcGlwZV9jb25maWcgZnVuY3Rpb24gaXMgYWxyZWFk eSBzbGlnaHRseSBub24taW50dWl0aXZlLgoKVGhpcyBvbmUgYWN0dWFsbHkganVzdCBkb2VzIHRo ZSBsaW5ldGltZSB3bSBvbiBza2wrLiBXZSBzaG91bGQgcHJvYmFibHkKanVzdCBtb3ZlIHRoYXQg aW50byBzb21lIG90aGVyIHBsYWNlIHNvIHdlIGNvdWxkIGdldCByaWQgb2YgdGhpcyBob29rIG9u CnRob3NlIHBsYXRmb3Jtcy4KCj4gUGx1cwo+IHRoYXQgd2lsbCBsZXQgdXMganVzdCBkbyBhCj4g Cj4gICAgICAgICAvKgo+ICAgICAgICAgICogRHVyaW5nIG1vZGVzZXRzIHBpcGUgY29uZmlndXJh dGlvbiB3YXMgcHJvZ3JhbW1lZCBhcyB0aGUKPiAgICAgICAgICAqIENSVEMgd2FzIGVuYWJsZWQu Cj4gICAgICAgICAgKi8KPiAgICAgICAgIGlmICghbW9kZXNldCkKPiAgICAgICAgICAgICAgICAg cmV0dXJuOwo+IAo+IGFuZCBkcm9wIGEgbGV2ZWwgb2YgbmVzdGluZyBmb3IgdGhlIHJlc3Qgb2Yg dGhpcyBmdW5jdGlvbi4KPiAKPiAKPiA+ICt9Cj4gPiArCj4gPiAgc3RhdGljIHZvaWQgaW50ZWxf dXBkYXRlX2NydGMoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gPiAgCQkJICAgICAgc3RydWN0 IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUsCj4gPiAgCQkJICAgICAgc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlLAo+ID4gIAkJCSAgICAgIHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpuZXdfY3J0Y19zdGF0ZSkKPiA+ICB7Cj4gPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpk ZXYgPSBzdGF0ZS0+YmFzZS5kZXY7Cj4gPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IHRvX2k5MTUoZGV2KTsKPiA+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gdG9faTkxNShzdGF0ZS0+YmFzZS5kZXYpOwo+ID4gIAlib29sIG1vZGVzZXQgPSBuZWVk c19tb2Rlc2V0KG5ld19jcnRjX3N0YXRlKTsKPiA+ICAJc3RydWN0IGludGVsX3BsYW5lX3N0YXRl ICpuZXdfcGxhbmVfc3RhdGUgPQo+ID4gIAkJaW50ZWxfYXRvbWljX2dldF9uZXdfcGxhbmVfc3Rh dGUoc3RhdGUsCj4gPiBAQCAtMTM3NjksMTQgKzEzODAzLDIxIEBAIHN0YXRpYyB2b2lkIGludGVs X3VwZGF0ZV9jcnRjKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ID4gIAllbHNlIGlmIChuZXdf cGxhbmVfc3RhdGUpCj4gPiAgCQlpbnRlbF9mYmNfZW5hYmxlKGNydGMsIG5ld19jcnRjX3N0YXRl LCBuZXdfcGxhbmVfc3RhdGUpOwo+ID4gIAo+ID4gLQlpbnRlbF9iZWdpbl9jcnRjX2NvbW1pdChz dGF0ZSwgY3J0Yyk7Cj4gPiArCS8qIFBlcmZvcm0gdmJsYW5rIGV2YXNpb24gYXJvdW5kIGNvbW1p dCBvcGVyYXRpb24gKi8KPiA+ICsJaW50ZWxfcGlwZV91cGRhdGVfc3RhcnQobmV3X2NydGNfc3Rh dGUpOwo+ID4gKwo+ID4gKwljb21taXRfcGlwZV9jb25maWcoc3RhdGUsIG9sZF9jcnRjX3N0YXRl LCBuZXdfY3J0Y19zdGF0ZSk7Cj4gPiAgCj4gPiAgCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49 IDkpCj4gPiAgCQlza2xfdXBkYXRlX3BsYW5lc19vbl9jcnRjKHN0YXRlLCBjcnRjKTsKPiA+ICAJ ZWxzZQo+ID4gIAkJaTl4eF91cGRhdGVfcGxhbmVzX29uX2NydGMoc3RhdGUsIGNydGMpOwo+ID4g IAo+ID4gLQlpbnRlbF9maW5pc2hfY3J0Y19jb21taXQoc3RhdGUsIGNydGMpOwo+ID4gKwlpbnRl bF9waXBlX3VwZGF0ZV9lbmQobmV3X2NydGNfc3RhdGUpOwo+ID4gKwo+ID4gKwlpZiAobmV3X2Ny dGNfc3RhdGUtPnVwZGF0ZV9waXBlICYmICFtb2Rlc2V0ICYmCj4gPiArCSAgICBvbGRfY3J0Y19z dGF0ZS0+aHcubW9kZS5wcml2YXRlX2ZsYWdzICYgSTkxNV9NT0RFX0ZMQUdfSU5IRVJJVEVEKQo+ ID4gKwkJaW50ZWxfY3J0Y19hcm1fZmlmb191bmRlcnJ1bihjcnRjLCBuZXdfY3J0Y19zdGF0ZSk7 Cj4gCj4gSXQgbWlnaHQgYmUgd29ydGggYWRkaW5nIGEgY29tbWVudCB0byB0aGlzIGJsb2NrLiAg SSBhbHdheXMgaGF2ZSB0byBnbwo+IGRpZyBiYWNrIHRocm91Z2ggZ2l0IGhpc3RvcnkgdG8gcmVt aW5kIG15c2VsZiB3ZSB0aGlzIGlzIG5lZWRlZC4gIE1heWJlCj4gc29tZXRoaW5nIGxpa2U6Cj4g Cj4gICAgICAgICAvKgo+ICAgICAgICAgICogV2UgdXN1YWxseSBlbmFibGUgRklGTyB1bmRlcnJ1 biBpbnRlcnJ1cHRzIGFzIHBhcnQgb2YgdGhlCj4gICAgICAgICAgKiBDUlRDIGVuYWJsZSBzZXF1 ZW5jZSBkdXJpbmcgbW9kZXNldHMuICBCdXQgd2hlbiB3ZSBpbmhlcml0IGEKPiAgICAgICAgICAq IHZhbGlkIHBpcGUgY29uZmlndXJhdGlvbiBmcm9tIHRoZSBCSU9TIHdlIG5lZWQgdG8gdGFrZSBj YXJlCj4gICAgICAgICAgKiBvZiBlbmFibGluZyB0aGVtIG9uIHRoZSBDUlRDJ3MgZmlyc3QgZmFz dHNldC4KPiAgICAgICAgICAqLwo+IAo+IAo+IE1hdHQKPiAKPiA+ICB9Cj4gPiAgCj4gPiAgc3Rh dGljIHZvaWQgaW50ZWxfb2xkX2NydGNfc3RhdGVfZGlzYWJsZXMoc3RydWN0IGludGVsX2F0b21p Y19zdGF0ZSAqc3RhdGUsCj4gPiBAQCAtMTQ1NzMsNzIgKzE0NjE0LDYgQEAgc2tsX21heF9zY2Fs ZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiA+ICAJcmV0dXJu IG1heF9zY2FsZTsKPiA+ICB9Cj4gPiAgCj4gPiAtc3RhdGljIHZvaWQgaW50ZWxfYmVnaW5fY3J0 Y19jb21taXQoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUsCj4gPiAtCQkJCSAgICBz dHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKPiA+IC17Cj4gPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwo+ID4gLQlzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUgPQo+ID4gLQkJaW50ZWxfYXRvbWljX2dldF9v bGRfY3J0Y19zdGF0ZShzdGF0ZSwgY3J0Yyk7Cj4gPiAtCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpuZXdfY3J0Y19zdGF0ZSA9Cj4gPiAtCQlpbnRlbF9hdG9taWNfZ2V0X25ld19jcnRjX3N0YXRl KHN0YXRlLCBjcnRjKTsKPiA+IC0JYm9vbCBtb2Rlc2V0ID0gbmVlZHNfbW9kZXNldChuZXdfY3J0 Y19zdGF0ZSk7Cj4gPiAtCj4gPiAtCS8qIFBlcmZvcm0gdmJsYW5rIGV2YXNpb24gYXJvdW5kIGNv bW1pdCBvcGVyYXRpb24gKi8KPiA+IC0JaW50ZWxfcGlwZV91cGRhdGVfc3RhcnQobmV3X2NydGNf c3RhdGUpOwo+ID4gLQo+ID4gLQlpZiAobW9kZXNldCkKPiA+IC0JCWdvdG8gb3V0Owo+ID4gLQo+ ID4gLQlpZiAobmV3X2NydGNfc3RhdGUtPnVhcGkuY29sb3JfbWdtdF9jaGFuZ2VkIHx8Cj4gPiAt CSAgICBuZXdfY3J0Y19zdGF0ZS0+dXBkYXRlX3BpcGUpCj4gPiAtCQlpbnRlbF9jb2xvcl9jb21t aXQobmV3X2NydGNfc3RhdGUpOwo+ID4gLQo+ID4gLQlpZiAobmV3X2NydGNfc3RhdGUtPnVwZGF0 ZV9waXBlKQo+ID4gLQkJaW50ZWxfdXBkYXRlX3BpcGVfY29uZmlnKG9sZF9jcnRjX3N0YXRlLCBu ZXdfY3J0Y19zdGF0ZSk7Cj4gPiAtCWVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkK PiA+IC0JCXNrbF9kZXRhY2hfc2NhbGVycyhuZXdfY3J0Y19zdGF0ZSk7Cj4gPiAtCj4gPiAtCWlm IChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkgfHwgSVNfQlJPQURXRUxMKGRldl9wcml2KSkKPiA+ IC0JCWJkd19zZXRfcGlwZW1pc2MobmV3X2NydGNfc3RhdGUpOwo+ID4gLQo+ID4gLW91dDoKPiA+ IC0JaWYgKGRldl9wcml2LT5kaXNwbGF5LmF0b21pY191cGRhdGVfd2F0ZXJtYXJrcykKPiA+IC0J CWRldl9wcml2LT5kaXNwbGF5LmF0b21pY191cGRhdGVfd2F0ZXJtYXJrcyhzdGF0ZSwKPiA+IC0J CQkJCQkJICAgbmV3X2NydGNfc3RhdGUpOwo+ID4gLX0KPiA+IC0KPiA+IC12b2lkIGludGVsX2Ny dGNfYXJtX2ZpZm9fdW5kZXJydW4oc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gPiAtCQkJCSAg c3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCj4gPiAtewo+ID4gLQlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsKPiA+ IC0KPiA+IC0JaWYgKCFJU19HRU4oZGV2X3ByaXYsIDIpKQo+ID4gLQkJaW50ZWxfc2V0X2NwdV9m aWZvX3VuZGVycnVuX3JlcG9ydGluZyhkZXZfcHJpdiwgY3J0Yy0+cGlwZSwgdHJ1ZSk7Cj4gPiAt Cj4gPiAtCWlmIChjcnRjX3N0YXRlLT5oYXNfcGNoX2VuY29kZXIpIHsKPiA+IC0JCWVudW0gcGlw ZSBwY2hfdHJhbnNjb2RlciA9Cj4gPiAtCQkJaW50ZWxfY3J0Y19wY2hfdHJhbnNjb2RlcihjcnRj KTsKPiA+IC0KPiA+IC0JCWludGVsX3NldF9wY2hfZmlmb191bmRlcnJ1bl9yZXBvcnRpbmcoZGV2 X3ByaXYsIHBjaF90cmFuc2NvZGVyLCB0cnVlKTsKPiA+IC0JfQo+ID4gLX0KPiA+IC0KPiA+IC1z dGF0aWMgdm9pZCBpbnRlbF9maW5pc2hfY3J0Y19jb21taXQoc3RydWN0IGludGVsX2F0b21pY19z dGF0ZSAqc3RhdGUsCj4gPiAtCQkJCSAgICAgc3RydWN0IGludGVsX2NydGMgKmNydGMpCj4gPiAt ewo+ID4gLQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUgPQo+ID4gLQkJ aW50ZWxfYXRvbWljX2dldF9vbGRfY3J0Y19zdGF0ZShzdGF0ZSwgY3J0Yyk7Cj4gPiAtCXN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpuZXdfY3J0Y19zdGF0ZSA9Cj4gPiAtCQlpbnRlbF9hdG9taWNf Z2V0X25ld19jcnRjX3N0YXRlKHN0YXRlLCBjcnRjKTsKPiA+IC0KPiA+IC0JaW50ZWxfcGlwZV91 cGRhdGVfZW5kKG5ld19jcnRjX3N0YXRlKTsKPiA+IC0KPiA+IC0JaWYgKG5ld19jcnRjX3N0YXRl LT51cGRhdGVfcGlwZSAmJgo+ID4gLQkgICAgIW5lZWRzX21vZGVzZXQobmV3X2NydGNfc3RhdGUp ICYmCj4gPiAtCSAgICBvbGRfY3J0Y19zdGF0ZS0+aHcubW9kZS5wcml2YXRlX2ZsYWdzICYgSTkx NV9NT0RFX0ZMQUdfSU5IRVJJVEVEKQo+ID4gLQkJaW50ZWxfY3J0Y19hcm1fZmlmb191bmRlcnJ1 bihjcnRjLCBuZXdfY3J0Y19zdGF0ZSk7Cj4gPiAtfQo+ID4gLQo+ID4gIC8qKgo+ID4gICAqIGlu dGVsX3BsYW5lX2Rlc3Ryb3kgLSBkZXN0cm95IGEgcGxhbmUKPiA+ICAgKiBAcGxhbmU6IHBsYW5l IHRvIGRlc3Ryb3kKPiA+IC0tIAo+ID4gMi4yMC4xCj4gPiAKPiA+IF9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0 Cj4gPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gPiBodHRwczovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo+IAo+IC0tIAo+IE1hdHQg Um9wZXIKPiBHcmFwaGljcyBTb2Z0d2FyZSBFbmdpbmVlcgo+IFZUVC1PU0dDIFBsYXRmb3JtIEVu YWJsZW1lbnQKPiBJbnRlbCBDb3Jwb3JhdGlvbgo+ICg5MTYpIDM1Ni0yNzk1Cj4gX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBJbnRlbC1nZnggbWFpbGlu ZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4CgotLSAKVmlsbGUgU3ly asOkbMOkCkludGVsCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdm eA==