From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: Re: [PATCH 4/4] drm/i915: Remove begin/finish_crtc_commit, v2. Date: Thu, 26 Sep 2019 10:46:02 +0200 Message-ID: <5b5e6851-1cb0-7566-d224-08616d1f883c@linux.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 mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id 4D7DE6EDF2 for ; Thu, 26 Sep 2019 08:46:05 +0000 (UTC) In-Reply-To: <20190925214212.GT1869@mdroper-desk1.amr.corp.intel.com> Content-Language: en-US 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 T3AgMjUtMDktMjAxOSBvbSAyMzo0MiBzY2hyZWVmIE1hdHQgUm9wZXI6Cj4gT24gV2VkLCBTZXAg MjUsIDIwMTkgYXQgMDQ6NTk6MDFQTSArMDIwMCwgTWFhcnRlbiBMYW5raG9yc3Qgd3JvdGU6Cj4+ IFRoaXMgY2FuIGFsbCBiZSBkb25lIGZyb20gdGhlIGludGVsX3VwZGF0ZV9jcnRjIGZ1bmN0aW9u LiBTcGxpdCBvdXQgdGhlCj4+IHBpcGUgdXBkYXRlIGludG8gYSBzZXBhcmF0ZSBmdW5jdGlvbiwg anVzdCBsaWtlIGlzIGRvbmUgZm9yIHRoZSBwbGFuZXMuCj4+IFB1bGwgaW4gYWxsIHRoZSBjaGFu Z2VzIGRvbmUgZHVyaW5nIGZhc3RzZXQgYXMgd2VsbC4gSXQgbWFrZXMgbm8gc2Vuc2UKPj4gZm9y IGl0IHRvIHN0aWxsIGV4aXN0IGFzIGEgc2VwYXJhdGUgZnVuY3Rpb24uCj4+Cj4+IENoYW5nZXMg c2luY2UgdjE6Cj4+IC0gSW5saW5lIGludGVsX3VwZGF0ZV9waXBlX2NvbmZpZygpCj4+Cj4+IFNp Z25lZC1vZmYtYnk6IE1hYXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5p bnRlbC5jb20+Cj4+IC0tLQo+PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9k aXNwbGF5LmMgfCAxOTcgKysrKysrKystLS0tLS0tLS0tLQo+PiAgMSBmaWxlIGNoYW5nZWQsIDg2 IGluc2VydGlvbnMoKyksIDExMSBkZWxldGlvbnMoLSkKPj4KPj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmMKPj4gaW5kZXggYjc3NTc0Y2RhNjQ4Li41YTlk MDZhZjlmMjkgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50 ZWxfZGlzcGxheS5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxf ZGlzcGxheS5jCj4+IEBAIC0xMzYsOCArMTM2LDYgQEAgc3RhdGljIHZvaWQgdmx2X3ByZXBhcmVf cGxsKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+PiAgCQkJICAgIGNvbnN0IHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZyk7Cj4+ICBzdGF0aWMgdm9pZCBjaHZfcHJlcGFyZV9w bGwoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4+ICAJCQkgICAgY29uc3Qgc3RydWN0IGludGVs X2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKTsKPj4gLXN0YXRpYyB2b2lkIGludGVsX2JlZ2luX2Ny dGNfY29tbWl0KHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKiwgc3RydWN0IGludGVsX2NydGMg Kik7Cj4+IC1zdGF0aWMgdm9pZCBpbnRlbF9maW5pc2hfY3J0Y19jb21taXQoc3RydWN0IGludGVs X2F0b21pY19zdGF0ZSAqLCBzdHJ1Y3QgaW50ZWxfY3J0YyAqKTsKPj4gIHN0YXRpYyB2b2lkIGlu dGVsX2NydGNfaW5pdF9zY2FsZXJzKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+PiAgCQkJCSAg ICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSk7Cj4+ICBzdGF0aWMgdm9pZCBz a3lsYWtlX3BmaXRfZW5hYmxlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0 YXRlKTsKPj4gQEAgLTQ0MDksNDUgKzQ0MDcsNiBAQCBzdGF0aWMgdm9pZCBpY2xfc2V0X3BpcGVf Y2hpY2tlbihzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKPj4gIAlJOTE1X1dSSVRFKFBJUEVfQ0hJ Q0tFTihwaXBlKSwgdG1wKTsKPj4gIH0KPj4gIAo+PiAtc3RhdGljIHZvaWQgaW50ZWxfdXBkYXRl X3BpcGVfY29uZmlnKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0 ZSwKPj4gLQkJCQkgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpuZXdfY3J0Y19z dGF0ZSkKPj4gLXsKPj4gLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMo bmV3X2NydGNfc3RhdGUtPnVhcGkuY3J0Yyk7Cj4+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5iYXNlLmRldik7Cj4+IC0KPj4gLQkvKiBkcm1fYXRv bWljX2hlbHBlcl91cGRhdGVfbGVnYWN5X21vZGVzZXRfc3RhdGUgbWlnaHQgbm90IGJlIGNhbGxl ZC4gKi8KPj4gLQljcnRjLT5iYXNlLm1vZGUgPSBuZXdfY3J0Y19zdGF0ZS0+dWFwaS5tb2RlOwo+ PiAtCj4+IC0JLyoKPj4gLQkgKiBVcGRhdGUgcGlwZSBzaXplIGFuZCBhZGp1c3QgZml0dGVyIGlm IG5lZWRlZDogdGhlIHJlYXNvbiBmb3IgdGhpcyBpcwo+PiAtCSAqIHRoYXQgaW4gY29tcHV0ZV9t b2RlX2NoYW5nZXMgd2UgY2hlY2sgdGhlIG5hdGl2ZSBtb2RlIChub3QgdGhlIHBmaXQKPj4gLQkg KiBtb2RlKSB0byBzZWUgaWYgd2UgY2FuIGZsaXAgcmF0aGVyIHRoYW4gZG8gYSBmdWxsIG1vZGUg c2V0LiBJbiB0aGUKPj4gLQkgKiBmYXN0Ym9vdCBjYXNlLCB3ZSdsbCBmbGlwLCBidXQgaWYgd2Ug ZG9uJ3QgdXBkYXRlIHRoZSBwaXBlc3JjIGFuZAo+PiAtCSAqIHBmaXQgc3RhdGUsIHdlJ2xsIGVu ZCB1cCB3aXRoIGEgYmlnIGZiIHNjYW5uZWQgb3V0IGludG8gdGhlIHdyb25nCj4+IC0JICogc2l6 ZWQgc3VyZmFjZS4KPj4gLQkgKi8KPj4gLQo+PiAtCUk5MTVfV1JJVEUoUElQRVNSQyhjcnRjLT5w aXBlKSwKPj4gLQkJICAgKChuZXdfY3J0Y19zdGF0ZS0+cGlwZV9zcmNfdyAtIDEpIDw8IDE2KSB8 Cj4+IC0JCSAgIChuZXdfY3J0Y19zdGF0ZS0+cGlwZV9zcmNfaCAtIDEpKTsKPj4gLQo+PiAtCS8q IG9uIHNreWxha2UgdGhpcyBpcyBkb25lIGJ5IGRldGFjaGluZyBzY2FsZXJzICovCj4+IC0JaWYg KElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkgewo+PiAtCQlza2xfZGV0YWNoX3NjYWxlcnMobmV3 X2NydGNfc3RhdGUpOwo+PiAtCj4+IC0JCWlmIChuZXdfY3J0Y19zdGF0ZS0+cGNoX3BmaXQuZW5h YmxlZCkKPj4gLQkJCXNreWxha2VfcGZpdF9lbmFibGUobmV3X2NydGNfc3RhdGUpOwo+PiAtCX0g ZWxzZSBpZiAoSEFTX1BDSF9TUExJVChkZXZfcHJpdikpIHsKPj4gLQkJaWYgKG5ld19jcnRjX3N0 YXRlLT5wY2hfcGZpdC5lbmFibGVkKQo+PiAtCQkJaXJvbmxha2VfcGZpdF9lbmFibGUobmV3X2Ny dGNfc3RhdGUpOwo+PiAtCQllbHNlIGlmIChvbGRfY3J0Y19zdGF0ZS0+cGNoX3BmaXQuZW5hYmxl ZCkKPj4gLQkJCWlyb25sYWtlX3BmaXRfZGlzYWJsZShvbGRfY3J0Y19zdGF0ZSk7Cj4+IC0JfQo+ PiAtCj4+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTEpCj4+IC0JCWljbF9zZXRfcGlw ZV9jaGlja2VuKGNydGMpOwo+PiAtfQo+PiAtCj4+ICBzdGF0aWMgdm9pZCBpbnRlbF9mZGlfbm9y bWFsX3RyYWluKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQo+PiAgewo+PiAgCXN0cnVjdCBkcm1f ZGV2aWNlICpkZXYgPSBjcnRjLT5iYXNlLmRldjsKPj4gQEAgLTEzNzM5LDEzICsxMzY5OCw4OCBA QCB1MzIgaW50ZWxfY3J0Y19nZXRfdmJsYW5rX2NvdW50ZXIoc3RydWN0IGludGVsX2NydGMgKmNy dGMpCj4+ICAJcmV0dXJuIGNydGMtPmJhc2UuZnVuY3MtPmdldF92YmxhbmtfY291bnRlcigmY3J0 Yy0+YmFzZSk7Cj4+ICB9Cj4+ICAKPj4gK3ZvaWQgaW50ZWxfY3J0Y19hcm1fZmlmb191bmRlcnJ1 bihzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPj4gKwkJCQkgIHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlKQo+PiArewo+PiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwo+PiArCj4+ICsJaWYgKCFJU19HRU4oZGV2 X3ByaXYsIDIpKQo+PiArCQlpbnRlbF9zZXRfY3B1X2ZpZm9fdW5kZXJydW5fcmVwb3J0aW5nKGRl dl9wcml2LCBjcnRjLT5waXBlLCB0cnVlKTsKPj4gKwo+PiArCWlmIChjcnRjX3N0YXRlLT5oYXNf cGNoX2VuY29kZXIpIHsKPj4gKwkJZW51bSBwaXBlIHBjaF90cmFuc2NvZGVyID0KPj4gKwkJCWlu dGVsX2NydGNfcGNoX3RyYW5zY29kZXIoY3J0Yyk7Cj4+ICsKPj4gKwkJaW50ZWxfc2V0X3BjaF9m aWZvX3VuZGVycnVuX3JlcG9ydGluZyhkZXZfcHJpdiwgcGNoX3RyYW5zY29kZXIsIHRydWUpOwo+ PiArCX0KPj4gK30KPj4gKwo+PiArc3RhdGljIHZvaWQgY29tbWl0X3BpcGVfY29uZmlnKHN0cnVj dCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlLAo+PiArCQkJICAgICAgIHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZSwKPj4gKwkJCSAgICAgICBzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqbmV3X2NydGNfc3RhdGUpCj4+ICt7Cj4+ICsJc3RydWN0IGludGVsX2NydGMgKmNy dGMgPSB0b19pbnRlbF9jcnRjKG5ld19jcnRjX3N0YXRlLT51YXBpLmNydGMpOwo+PiArCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoc3RhdGUtPmJhc2UuZGV2KTsK Pj4gKwlib29sIG1vZGVzZXQgPSBuZWVkc19tb2Rlc2V0KG5ld19jcnRjX3N0YXRlKTsKPj4gKwo+ PiArCWlmICghbW9kZXNldCkgewo+PiArCQlpZiAobmV3X2NydGNfc3RhdGUtPnVhcGkuY29sb3Jf bWdtdF9jaGFuZ2VkIHx8Cj4+ICsJCSAgICBuZXdfY3J0Y19zdGF0ZS0+dXBkYXRlX3BpcGUpCj4+ ICsJCQlpbnRlbF9jb2xvcl9jb21taXQobmV3X2NydGNfc3RhdGUpOwo+PiArCj4+ICsJCWlmIChJ TlRFTF9HRU4oZGV2X3ByaXYpID49IDkpCj4+ICsJCQlza2xfZGV0YWNoX3NjYWxlcnMobmV3X2Ny dGNfc3RhdGUpOwo+PiArCj4+ICsJCWlmIChuZXdfY3J0Y19zdGF0ZS0+dXBkYXRlX3BpcGUpIHsK Pj4gKwkJCS8qIGRybV9hdG9taWNfaGVscGVyX3VwZGF0ZV9sZWdhY3lfbW9kZXNldF9zdGF0ZSBt aWdodCBub3QgYmUgY2FsbGVkLiAqLwo+PiArCQkJY3J0Yy0+YmFzZS5tb2RlID0gbmV3X2NydGNf c3RhdGUtPnVhcGkubW9kZTsKPj4gKwo+PiArCQkJLyoKPj4gKwkJCSAqIFVwZGF0ZSBwaXBlIHNp emUgYW5kIGFkanVzdCBmaXR0ZXIgaWYgbmVlZGVkOiB0aGUgcmVhc29uIGZvciB0aGlzIGlzCj4+ ICsJCQkgKiB0aGF0IGluIGNvbXB1dGVfbW9kZV9jaGFuZ2VzIHdlIGNoZWNrIHRoZSBuYXRpdmUg bW9kZSAobm90IHRoZSBwZml0Cj4+ICsJCQkgKiBtb2RlKSB0byBzZWUgaWYgd2UgY2FuIGZsaXAg cmF0aGVyIHRoYW4gZG8gYSBmdWxsIG1vZGUgc2V0LiBJbiB0aGUKPj4gKwkJCSAqIGZhc3Rib290 IGNhc2UsIHdlJ2xsIGZsaXAsIGJ1dCBpZiB3ZSBkb24ndCB1cGRhdGUgdGhlIHBpcGVzcmMgYW5k Cj4+ICsJCQkgKiBwZml0IHN0YXRlLCB3ZSdsbCBlbmQgdXAgd2l0aCBhIGJpZyBmYiBzY2FubmVk IG91dCBpbnRvIHRoZSB3cm9uZwo+PiArCQkJICogc2l6ZWQgc3VyZmFjZS4KPj4gKwkJCSAqLwo+ PiArCj4+ICsJCQlJOTE1X1dSSVRFKFBJUEVTUkMoY3J0Yy0+cGlwZSksCj4+ICsJCQkJICAoKG5l d19jcnRjX3N0YXRlLT5waXBlX3NyY193IC0gMSkgPDwgMTYpIHwKPj4gKwkJCQkgIChuZXdfY3J0 Y19zdGF0ZS0+cGlwZV9zcmNfaCAtIDEpKTsKPiBpbnRlbF9zZXRfcGlwZV9zcmNfc2l6ZShuZXdf Y3J0Y19zdGF0ZSk7Cj4KPiB0byBiZSBtb3JlIGZ1dHVyZS1wcm9vZiBpbiBjYXNlIHRoZSByZWdp c3RlciBjaGFuZ2VzIGluIHRoZSBmdXR1cmUuCj4KPj4gKwo+PiArCQkJaWYgKElOVEVMX0dFTihk ZXZfcHJpdikgPj0gOSkgewo+PiArCQkJCS8qCj4+ICsJCQkJICogZW5hYmxlIHBpcGUgc2NhbGVy IGhlcmUgaWYgbmVlZGVkLCBpZgo+PiArCQkJCSAqIGl0J3MgZGlzYWJsZWQsIHRoYXQncyBkb25l IGJ5Cj4+ICsJCQkJICogc2tsX2RldGFjaF9zY2FsZXJzKCkgYWJvdmUuCj4+ICsJCQkJICovCj4+ ICsJCQkJc2t5bGFrZV9wZml0X2VuYWJsZShuZXdfY3J0Y19zdGF0ZSk7Cj4+ICsJCQl9IGVsc2Ug aWYgKEhBU19QQ0hfU1BMSVQoZGV2X3ByaXYpKSB7Cj4+ICsJCQkJaWYgKCFuZXdfY3J0Y19zdGF0 ZS0+cGNoX3BmaXQuZW5hYmxlZCkKPj4gKwkJCQkJaXJvbmxha2VfcGZpdF9kaXNhYmxlKG9sZF9j cnRjX3N0YXRlKTsKPj4gKwkJCQllbHNlCj4+ICsJCQkJCWlyb25sYWtlX3BmaXRfZW5hYmxlKG5l d19jcnRjX3N0YXRlKTsKPj4gKwkJCX0KPj4gKwo+PiArCQkJaWYgKElOVEVMX0dFTihkZXZfcHJp dikgPj0gMTEpCj4+ICsJCQkJaWNsX3NldF9waXBlX2NoaWNrZW4oY3J0Yyk7Cj4+ICsJCX0KPj4g Kwo+PiArCQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5IHx8IElTX0JST0FEV0VMTChkZXZf cHJpdikpCj4+ICsJCQliZHdfc2V0X3BpcGVtaXNjKG5ld19jcnRjX3N0YXRlKTsKPj4gKwl9Cj4+ ICsKPj4gKwlpZiAoZGV2X3ByaXYtPmRpc3BsYXkuYXRvbWljX3VwZGF0ZV93YXRlcm1hcmtzKQo+ PiArCQlkZXZfcHJpdi0+ZGlzcGxheS5hdG9taWNfdXBkYXRlX3dhdGVybWFya3Moc3RhdGUsCj4+ ICsJCQkJCQkJICAgbmV3X2NydGNfc3RhdGUpOwo+IEl0IG1pZ2h0IG1ha2Ugc2Vuc2UgdG8gbW92 ZSB0aGUgd2F0ZXJtYXJrIHVwZGF0ZSBvdXQgdG8gdGhlIGNhbGxlci4gIFRoZQo+IHdhdGVybWFy ayByZWdpc3RlcnMgdGhlbXNlbHZlcyBhcmUgcGxhbmUtYmFzZWQsIHNvIGRlYWxpbmcgd2l0aCB0 aGVtIGluCj4gdGhlIGNvbW1pdF9waXBlX2NvbmZpZyBmdW5jdGlvbiBpcyBhbHJlYWR5IHNsaWdo dGx5IG5vbi1pbnR1aXRpdmUuICBQbHVzCj4gdGhhdCB3aWxsIGxldCB1cyBqdXN0IGRvIGEKCmF0 b21pY191cGRhdGVfd2F0ZXJtYXJrcyBqdXN0IHNldHMgbGluZXRpbWUgb24gc2tsKy4gOikKClBl ciBwbGFuZSB3YXRlcm1hcmtzIGFyZSBkb25lIGluIHNrbF93cml0ZV9wbGFuZV93bSwgY2FsbGVk IGZyb20gc2tsX3Byb2dyYW1fcGxhbmUuCgo+Cj4gICAgICAgICAvKgo+ICAgICAgICAgICogRHVy aW5nIG1vZGVzZXRzIHBpcGUgY29uZmlndXJhdGlvbiB3YXMgcHJvZ3JhbW1lZCBhcyB0aGUKPiAg ICAgICAgICAqIENSVEMgd2FzIGVuYWJsZWQuCj4gICAgICAgICAgKi8KPiAgICAgICAgIGlmICgh bW9kZXNldCkKPiAgICAgICAgICAgICAgICAgcmV0dXJuOwo+Cj4gYW5kIGRyb3AgYSBsZXZlbCBv ZiBuZXN0aW5nIGZvciB0aGUgcmVzdCBvZiB0aGlzIGZ1bmN0aW9uLgpZZWFoIGNhbiBkcm9wIGV2 ZW4gbW9yZSB3aXRoIGEgY2hlY2sgZm9yIHVwZGF0ZV9waXBlLgo+Cj4+ICt9Cj4+ICsKPj4gIHN0 YXRpYyB2b2lkIGludGVsX3VwZGF0ZV9jcnRjKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+PiAg CQkJICAgICAgc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUsCj4+ICAJCQkgICAgICBz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUsCj4+ICAJCQkgICAgICBzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqbmV3X2NydGNfc3RhdGUpCj4+ICB7Cj4+IC0Jc3RydWN0IGRy bV9kZXZpY2UgKmRldiA9IHN0YXRlLT5iYXNlLmRldjsKPj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gdG9faTkxNShzdGF0ZS0+YmFzZS5kZXYpOwo+PiAgCWJvb2wgbW9kZXNl dCA9IG5lZWRzX21vZGVzZXQobmV3X2NydGNfc3RhdGUpOwo+PiAgCXN0cnVjdCBpbnRlbF9wbGFu ZV9zdGF0ZSAqbmV3X3BsYW5lX3N0YXRlID0KPj4gIAkJaW50ZWxfYXRvbWljX2dldF9uZXdfcGxh bmVfc3RhdGUoc3RhdGUsCj4+IEBAIC0xMzc2OSwxNCArMTM4MDMsMjEgQEAgc3RhdGljIHZvaWQg aW50ZWxfdXBkYXRlX2NydGMoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4+ICAJZWxzZSBpZiAo bmV3X3BsYW5lX3N0YXRlKQo+PiAgCQlpbnRlbF9mYmNfZW5hYmxlKGNydGMsIG5ld19jcnRjX3N0 YXRlLCBuZXdfcGxhbmVfc3RhdGUpOwo+PiAgCj4+IC0JaW50ZWxfYmVnaW5fY3J0Y19jb21taXQo c3RhdGUsIGNydGMpOwo+PiArCS8qIFBlcmZvcm0gdmJsYW5rIGV2YXNpb24gYXJvdW5kIGNvbW1p dCBvcGVyYXRpb24gKi8KPj4gKwlpbnRlbF9waXBlX3VwZGF0ZV9zdGFydChuZXdfY3J0Y19zdGF0 ZSk7Cj4+ICsKPj4gKwljb21taXRfcGlwZV9jb25maWcoc3RhdGUsIG9sZF9jcnRjX3N0YXRlLCBu ZXdfY3J0Y19zdGF0ZSk7Cj4+ICAKPj4gIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KQo+ PiAgCQlza2xfdXBkYXRlX3BsYW5lc19vbl9jcnRjKHN0YXRlLCBjcnRjKTsKPj4gIAllbHNlCj4+ ICAJCWk5eHhfdXBkYXRlX3BsYW5lc19vbl9jcnRjKHN0YXRlLCBjcnRjKTsKPj4gIAo+PiAtCWlu dGVsX2ZpbmlzaF9jcnRjX2NvbW1pdChzdGF0ZSwgY3J0Yyk7Cj4+ICsJaW50ZWxfcGlwZV91cGRh dGVfZW5kKG5ld19jcnRjX3N0YXRlKTsKPj4gKwo+PiArCWlmIChuZXdfY3J0Y19zdGF0ZS0+dXBk YXRlX3BpcGUgJiYgIW1vZGVzZXQgJiYKPj4gKwkgICAgb2xkX2NydGNfc3RhdGUtPmh3Lm1vZGUu cHJpdmF0ZV9mbGFncyAmIEk5MTVfTU9ERV9GTEFHX0lOSEVSSVRFRCkKPj4gKwkJaW50ZWxfY3J0 Y19hcm1fZmlmb191bmRlcnJ1bihjcnRjLCBuZXdfY3J0Y19zdGF0ZSk7Cj4gSXQgbWlnaHQgYmUg d29ydGggYWRkaW5nIGEgY29tbWVudCB0byB0aGlzIGJsb2NrLiAgSSBhbHdheXMgaGF2ZSB0byBn bwo+IGRpZyBiYWNrIHRocm91Z2ggZ2l0IGhpc3RvcnkgdG8gcmVtaW5kIG15c2VsZiB3ZSB0aGlz IGlzIG5lZWRlZC4gIE1heWJlCj4gc29tZXRoaW5nIGxpa2U6Cj4KPiAgICAgICAgIC8qCj4gICAg ICAgICAgKiBXZSB1c3VhbGx5IGVuYWJsZSBGSUZPIHVuZGVycnVuIGludGVycnVwdHMgYXMgcGFy dCBvZiB0aGUKPiAgICAgICAgICAqIENSVEMgZW5hYmxlIHNlcXVlbmNlIGR1cmluZyBtb2Rlc2V0 cy4gIEJ1dCB3aGVuIHdlIGluaGVyaXQgYQo+ICAgICAgICAgICogdmFsaWQgcGlwZSBjb25maWd1 cmF0aW9uIGZyb20gdGhlIEJJT1Mgd2UgbmVlZCB0byB0YWtlIGNhcmUKPiAgICAgICAgICAqIG9m IGVuYWJsaW5nIHRoZW0gb24gdGhlIENSVEMncyBmaXJzdCBmYXN0c2V0Lgo+ICAgICAgICAgICov Cj4KPgo+IE1hdHQKPgo+PiAgfQo+PiAgCj4+ICBzdGF0aWMgdm9pZCBpbnRlbF9vbGRfY3J0Y19z dGF0ZV9kaXNhYmxlcyhzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwKPj4gQEAgLTE0 NTczLDcyICsxNDYxNCw2IEBAIHNrbF9tYXhfc2NhbGUoY29uc3Qgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNydGNfc3RhdGUsCj4+ICAJcmV0dXJuIG1heF9zY2FsZTsKPj4gIH0KPj4gIAo+PiAt c3RhdGljIHZvaWQgaW50ZWxfYmVnaW5fY3J0Y19jb21taXQoc3RydWN0IGludGVsX2F0b21pY19z dGF0ZSAqc3RhdGUsCj4+IC0JCQkJICAgIHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQo+PiAtewo+ PiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFz ZS5kZXYpOwo+PiAtCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZSA9Cj4+ IC0JCWludGVsX2F0b21pY19nZXRfb2xkX2NydGNfc3RhdGUoc3RhdGUsIGNydGMpOwo+PiAtCXN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpuZXdfY3J0Y19zdGF0ZSA9Cj4+IC0JCWludGVsX2F0b21p Y19nZXRfbmV3X2NydGNfc3RhdGUoc3RhdGUsIGNydGMpOwo+PiAtCWJvb2wgbW9kZXNldCA9IG5l ZWRzX21vZGVzZXQobmV3X2NydGNfc3RhdGUpOwo+PiAtCj4+IC0JLyogUGVyZm9ybSB2Ymxhbmsg ZXZhc2lvbiBhcm91bmQgY29tbWl0IG9wZXJhdGlvbiAqLwo+PiAtCWludGVsX3BpcGVfdXBkYXRl X3N0YXJ0KG5ld19jcnRjX3N0YXRlKTsKPj4gLQo+PiAtCWlmIChtb2Rlc2V0KQo+PiAtCQlnb3Rv IG91dDsKPj4gLQo+PiAtCWlmIChuZXdfY3J0Y19zdGF0ZS0+dWFwaS5jb2xvcl9tZ210X2NoYW5n ZWQgfHwKPj4gLQkgICAgbmV3X2NydGNfc3RhdGUtPnVwZGF0ZV9waXBlKQo+PiAtCQlpbnRlbF9j b2xvcl9jb21taXQobmV3X2NydGNfc3RhdGUpOwo+PiAtCj4+IC0JaWYgKG5ld19jcnRjX3N0YXRl LT51cGRhdGVfcGlwZSkKPj4gLQkJaW50ZWxfdXBkYXRlX3BpcGVfY29uZmlnKG9sZF9jcnRjX3N0 YXRlLCBuZXdfY3J0Y19zdGF0ZSk7Cj4+IC0JZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+ PSA5KQo+PiAtCQlza2xfZGV0YWNoX3NjYWxlcnMobmV3X2NydGNfc3RhdGUpOwo+PiAtCj4+IC0J aWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSB8fCBJU19CUk9BRFdFTEwoZGV2X3ByaXYpKQo+ PiAtCQliZHdfc2V0X3BpcGVtaXNjKG5ld19jcnRjX3N0YXRlKTsKPj4gLQo+PiAtb3V0Ogo+PiAt CWlmIChkZXZfcHJpdi0+ZGlzcGxheS5hdG9taWNfdXBkYXRlX3dhdGVybWFya3MpCj4+IC0JCWRl dl9wcml2LT5kaXNwbGF5LmF0b21pY191cGRhdGVfd2F0ZXJtYXJrcyhzdGF0ZSwKPj4gLQkJCQkJ CQkgICBuZXdfY3J0Y19zdGF0ZSk7Cj4+IC19Cj4+IC0KPj4gLXZvaWQgaW50ZWxfY3J0Y19hcm1f Zmlmb191bmRlcnJ1bihzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPj4gLQkJCQkgIHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+PiAtewo+PiAtCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwo+PiAtCj4+IC0JaWYg KCFJU19HRU4oZGV2X3ByaXYsIDIpKQo+PiAtCQlpbnRlbF9zZXRfY3B1X2ZpZm9fdW5kZXJydW5f cmVwb3J0aW5nKGRldl9wcml2LCBjcnRjLT5waXBlLCB0cnVlKTsKPj4gLQo+PiAtCWlmIChjcnRj X3N0YXRlLT5oYXNfcGNoX2VuY29kZXIpIHsKPj4gLQkJZW51bSBwaXBlIHBjaF90cmFuc2NvZGVy ID0KPj4gLQkJCWludGVsX2NydGNfcGNoX3RyYW5zY29kZXIoY3J0Yyk7Cj4+IC0KPj4gLQkJaW50 ZWxfc2V0X3BjaF9maWZvX3VuZGVycnVuX3JlcG9ydGluZyhkZXZfcHJpdiwgcGNoX3RyYW5zY29k ZXIsIHRydWUpOwo+PiAtCX0KPj4gLX0KPj4gLQo+PiAtc3RhdGljIHZvaWQgaW50ZWxfZmluaXNo X2NydGNfY29tbWl0KHN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlLAo+PiAtCQkJCSAg ICAgc3RydWN0IGludGVsX2NydGMgKmNydGMpCj4+IC17Cj4+IC0Jc3RydWN0IGludGVsX2NydGNf c3RhdGUgKm9sZF9jcnRjX3N0YXRlID0KPj4gLQkJaW50ZWxfYXRvbWljX2dldF9vbGRfY3J0Y19z dGF0ZShzdGF0ZSwgY3J0Yyk7Cj4+IC0Jc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm5ld19jcnRj X3N0YXRlID0KPj4gLQkJaW50ZWxfYXRvbWljX2dldF9uZXdfY3J0Y19zdGF0ZShzdGF0ZSwgY3J0 Yyk7Cj4+IC0KPj4gLQlpbnRlbF9waXBlX3VwZGF0ZV9lbmQobmV3X2NydGNfc3RhdGUpOwo+PiAt Cj4+IC0JaWYgKG5ld19jcnRjX3N0YXRlLT51cGRhdGVfcGlwZSAmJgo+PiAtCSAgICAhbmVlZHNf bW9kZXNldChuZXdfY3J0Y19zdGF0ZSkgJiYKPj4gLQkgICAgb2xkX2NydGNfc3RhdGUtPmh3Lm1v ZGUucHJpdmF0ZV9mbGFncyAmIEk5MTVfTU9ERV9GTEFHX0lOSEVSSVRFRCkKPj4gLQkJaW50ZWxf Y3J0Y19hcm1fZmlmb191bmRlcnJ1bihjcnRjLCBuZXdfY3J0Y19zdGF0ZSk7Cj4+IC19Cj4+IC0K Pj4gIC8qKgo+PiAgICogaW50ZWxfcGxhbmVfZGVzdHJveSAtIGRlc3Ryb3kgYSBwbGFuZQo+PiAg ICogQHBsYW5lOiBwbGFuZSB0byBkZXN0cm95Cj4+IC0tIAo+PiAyLjIwLjEKPj4KPj4gX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPj4gSW50ZWwtZ2Z4IG1h aWxpbmcgbGlzdAo+PiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4+IGh0dHBzOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4CgoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxp bmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4