From mboxrd@z Thu Jan 1 00:00:00 1970 From: Imre Deak Subject: Re: [PATCH 05/12] drm/i915: Kill off intel_crtc->atomic.wait_vblank, v2. Date: Wed, 25 Nov 2015 14:38:35 +0200 Message-ID: <1448455115.32235.55.camel@intel.com> References: <1447945645-32005-1-git-send-email-maarten.lankhorst@linux.intel.com> <1447945645-32005-6-git-send-email-maarten.lankhorst@linux.intel.com> <1448454063.2907.18.camel@gmail.com> Reply-To: imre.deak@intel.com Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id 5D1DD6E3E0 for ; Wed, 25 Nov 2015 04:38:39 -0800 (PST) In-Reply-To: <1448454063.2907.18.camel@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Ander Conselvan De Oliveira , Maarten Lankhorst , intel-gfx@lists.freedesktop.org, "Jakobsson, Patrik" List-Id: intel-gfx@lists.freedesktop.org T24ga2UsIDIwMTUtMTEtMjUgYXQgMTQ6MjEgKzAyMDAsIEFuZGVyIENvbnNlbHZhbiBEZSBPbGl2 ZWlyYSB3cm90ZToKPiBPbiBUaHUsIDIwMTUtMTEtMTkgYXQgMTY6MDcgKzAxMDAsIE1hYXJ0ZW4g TGFua2hvcnN0IHdyb3RlOgo+ID4gQ3VycmVudGx5IHdlIHBlcmZvcm0gb3VyIG93biB3YWl0IGlu IHBvc3RfcGxhbmVfdXBkYXRlLAo+ID4gYnV0IHRoZSBhdG9taWMgY29yZSBwZXJmb3JtcyBhbm90 aGVyIG9uZSBpbiB3YWl0X2Zvcl92YmxhbmtzLgo+ID4gVGhpcyBtZWFucyB0aGF0IDIgdmJsYW5r cyBhcmUgZG9uZSB3aGVuIGEgZmIgaXMgY2hhbmdlZCwKPiA+IHdoaWNoIGlzIGEgYml0IG92ZXJr aWxsLgo+ID4gCj4gPiBNZXJnZSB0aGVtIGJ5IGNyZWF0aW5nIGEgaGVscGVyIGZ1bmN0aW9uIHRo YXQgdGFrZXMgYSBjcnRjIG1hc2sKPiA+IGZvciB0aGUgcGxhbmVzIHRvIHdhaXQgb24uCj4gPiAK PiA+IFRoZSBicm9hZHdlbGwgdmJsYW5rIHdvcmthcm91bmQgbWF5IGxvb2sgZ29uZSBlbnRpcmVs eSBidXQgdGhpcyBpcwo+ID4gbm90IHRoZSBjYXNlLiBwaXBlX2NvbmZpZy0+d21fY2hhbmdlZCBp cyBzZXQgdG8gdHJ1ZQo+ID4gd2hlbiBhbnkgcGxhbmUgaXMgdHVybmVkIG9uLCB3aGljaCBmb3Jj ZXMgYSB2Ymxhbmsgd2FpdC4KPiA+IAo+ID4gQ2hhbmdlcyBzaW5jZSB2MToKPiA+IC0gUmVtb3Zp bmcgdGhlIGRvdWJsZSB2Ymxhbmsgd2FpdCBvbiBicm9hZHdlbGwgbW92ZWQgdG8gaXRzIG93biBj b21taXQuCj4gPiAKPiA+IFNpZ25lZC1vZmYtYnk6IE1hYXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVu Lmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+Cj4gPiAtLS0KPiA+IMKgZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfYXRvbWljLmPCoMKgfMKgwqAxICsKPiA+IMKgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZGlzcGxheS5jIHwgODggKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0t LS0KPiA+IC0KPiA+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmjCoMKgwqDCoMKg fMKgwqAyICstCj4gPiDCoDMgZmlsZXMgY2hhbmdlZCwgNjUgaW5zZXJ0aW9ucygrKSwgMjYgZGVs ZXRpb25zKC0pCj4gPiAKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9hdG9taWMuYwo+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9taWMuYwo+ID4g aW5kZXggNDYyNWY4YTliYTEyLi44ZTU3OWE4NTA1YWMgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9taWMuYwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfYXRvbWljLmMKPiA+IEBAIC05Nyw2ICs5Nyw3IEBAIGludGVsX2NydGNfZHVwbGlj YXRlX3N0YXRlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiA+IMKgCWNydGNfc3RhdGUtPmRpc2Fi bGVfbHBfd20gPSBmYWxzZTsKPiA+IMKgCWNydGNfc3RhdGUtPmRpc2FibGVfY3hzciA9IGZhbHNl Owo+ID4gwqAJY3J0Y19zdGF0ZS0+d21fY2hhbmdlZCA9IGZhbHNlOwo+ID4gKwljcnRjX3N0YXRl LT5mYl9jaGFuZ2VkID0gZmFsc2U7Cj4gPiDCoAo+ID4gwqAJcmV0dXJuICZjcnRjX3N0YXRlLT5i YXNlOwo+ID4gwqB9Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZGlzcGxheS5jCj4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ID4g aW5kZXggNjBmMTdiYzVmMGNlLi4yOTllZGJmNmY5OWUgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rpc3BsYXkuYwo+ID4gQEAgLTQ3MzgsOSArNDczOCw2IEBAIHN0YXRpYyB2b2lk IGludGVsX3Bvc3RfcGxhbmVfdXBkYXRlKHN0cnVjdCBpbnRlbF9jcnRjCj4gPiAqY3J0YykKPiA+ IMKgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5iYXNlLmRldjsKPiA+IMKgCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gPiDCoAo+ ID4gLQlpZiAoYXRvbWljLT53YWl0X3ZibGFuaykKPiA+IC0JCWludGVsX3dhaXRfZm9yX3ZibGFu ayhkZXYsIGNydGMtPnBpcGUpOwo+ID4gLQo+ID4gwqAJaW50ZWxfZnJvbnRidWZmZXJfZmxpcChk ZXYsIGF0b21pYy0+ZmJfYml0cyk7Cj4gPiDCoAo+ID4gwqAJY3J0Yy0+d20uY3hzcl9hbGxvd2Vk ID0gdHJ1ZTsKPiA+IEBAIC00NzU0LDYgKzQ3NTEsOSBAQCBzdGF0aWMgdm9pZCBpbnRlbF9wb3N0 X3BsYW5lX3VwZGF0ZShzdHJ1Y3QgaW50ZWxfY3J0Ywo+ID4gKmNydGMpCj4gPiDCoAlpZiAoYXRv bWljLT5wb3N0X2VuYWJsZV9wcmltYXJ5KQo+ID4gwqAJCWludGVsX3Bvc3RfZW5hYmxlX3ByaW1h cnkoJmNydGMtPmJhc2UpOwo+ID4gwqAKPiA+ICsJaWYgKG5lZWRzX21vZGVzZXQoJnBpcGVfY29u ZmlnLT5iYXNlKSkKPiA+ICsJCWludGVsX2Rpc3BsYXlfcG93ZXJfcHV0KGRldl9wcml2LCBQT1dF Ul9ET01BSU5fTU9ERVNFVCk7Cj4gPiArCj4gPiDCoAltZW1zZXQoYXRvbWljLCAwLCBzaXplb2Yo KmF0b21pYykpOwo+ID4gwqB9Cj4gPiDCoAo+ID4gQEAgLTExNjkzLDYgKzExNjkzLDkgQEAgaW50 IGludGVsX3BsYW5lX2F0b21pY19jYWxjX2NoYW5nZXMoc3RydWN0Cj4gPiBkcm1fY3J0Y19zdGF0 ZSAqY3J0Y19zdGF0ZSwKPiA+IMKgCWlmICghd2FzX3Zpc2libGUgJiYgIXZpc2libGUpCj4gPiDC oAkJcmV0dXJuIDA7Cj4gPiDCoAo+ID4gKwlpZiAoZmIgIT0gb2xkX3BsYW5lX3N0YXRlLT5iYXNl LmZiKQo+ID4gKwkJcGlwZV9jb25maWctPmZiX2NoYW5nZWQgPSB0cnVlOwo+ID4gKwo+ID4gwqAJ dHVybl9vZmYgPSB3YXNfdmlzaWJsZSAmJiAoIXZpc2libGUgfHwgbW9kZV9jaGFuZ2VkKTsKPiA+ IMKgCXR1cm5fb24gPSB2aXNpYmxlICYmICghd2FzX3Zpc2libGUgfHwgbW9kZV9jaGFuZ2VkKTsK PiA+IMKgCj4gPiBAQCAtMTE3MDgsOCArMTE3MTEsNiBAQCBpbnQgaW50ZWxfcGxhbmVfYXRvbWlj X2NhbGNfY2hhbmdlcyhzdHJ1Y3QKPiA+IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ID4g wqAKPiA+IMKgCQkvKiBtdXN0IGRpc2FibGUgY3hzciBhcm91bmQgcGxhbmUgZW5hYmxlL2Rpc2Fi bGUgKi8KPiA+IMKgCQlpZiAocGxhbmUtPnR5cGUgIT0gRFJNX1BMQU5FX1RZUEVfQ1VSU09SKSB7 Cj4gPiAtCQkJaWYgKGlzX2NydGNfZW5hYmxlZCkKPiA+IC0JCQkJaW50ZWxfY3J0Yy0+YXRvbWlj LndhaXRfdmJsYW5rID0gdHJ1ZTsKPiA+IMKgCQkJcGlwZV9jb25maWctPmRpc2FibGVfY3hzciA9 IHRydWU7Cj4gPiDCoAkJfQo+ID4gwqAJfSBlbHNlIGlmICgod2FzX3Zpc2libGUgfHwgdmlzaWJs ZSkgJiYKPiA+IEBAIC0xMTc1NywxNCArMTE3NTgsNiBAQCBpbnQgaW50ZWxfcGxhbmVfYXRvbWlj X2NhbGNfY2hhbmdlcyhzdHJ1Y3QKPiA+IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ID4g wqAJCcKgwqDCoMKgcGxhbmVfc3RhdGUtPnJvdGF0aW9uICE9IEJJVChEUk1fUk9UQVRFXzApKQo+ ID4gwqAJCQlpbnRlbF9jcnRjLT5hdG9taWMuZGlzYWJsZV9mYmMgPSB0cnVlOwo+ID4gwqAKPiA+ IC0JCS8qCj4gPiAtCQnCoCogQkRXIHNpZ25hbHMgZmxpcCBkb25lIGltbWVkaWF0ZWx5IGlmIHRo ZSBwbGFuZQo+ID4gLQkJwqAqIGlzIGRpc2FibGVkLCBldmVuIGlmIHRoZSBwbGFuZSBlbmFibGUg aXMgYWxyZWFkeQo+ID4gLQkJwqAqIGFybWVkIHRvIG9jY3VyIGF0IHRoZSBuZXh0IHZibGFuayA6 KAo+ID4gLQkJwqAqLwo+ID4gLQkJaWYgKHR1cm5fb24gJiYgSVNfQlJPQURXRUxMKGRldikpCj4g PiAtCQkJaW50ZWxfY3J0Yy0+YXRvbWljLndhaXRfdmJsYW5rID0gdHJ1ZTsKPiA+IC0KPiA+IMKg CQlpbnRlbF9jcnRjLT5hdG9taWMudXBkYXRlX2ZiYyB8PSB2aXNpYmxlIHx8IG1vZGVfY2hhbmdl ZDsKPiA+IMKgCQlicmVhazsKPiA+IMKgCWNhc2UgRFJNX1BMQU5FX1RZUEVfQ1VSU09SOgo+ID4g QEAgLTExNzc5LDEyICsxMTc3MiwxMCBAQCBpbnQgaW50ZWxfcGxhbmVfYXRvbWljX2NhbGNfY2hh bmdlcyhzdHJ1Y3QKPiA+IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ID4gwqAJCWlmIChJ U19JVllCUklER0UoZGV2KSAmJgo+ID4gwqAJCcKgwqDCoMKgbmVlZHNfc2NhbGluZyh0b19pbnRl bF9wbGFuZV9zdGF0ZShwbGFuZV9zdGF0ZSkpICYmCj4gPiDCoAkJwqDCoMKgwqAhbmVlZHNfc2Nh bGluZyhvbGRfcGxhbmVfc3RhdGUpKSB7Cj4gPiAtCQkJdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRj X3N0YXRlKS0+ZGlzYWJsZV9scF93bSA9Cj4gPiB0cnVlOwo+ID4gLQkJfSBlbHNlIGlmICh0dXJu X29mZiAmJiAhbW9kZV9jaGFuZ2VkKSB7Cj4gPiAtCQkJaW50ZWxfY3J0Yy0+YXRvbWljLndhaXRf dmJsYW5rID0gdHJ1ZTsKPiA+ICsJCQlwaXBlX2NvbmZpZy0+ZGlzYWJsZV9scF93bSA9IHRydWU7 Cj4gPiArCQl9IGVsc2UgaWYgKHR1cm5fb2ZmICYmICFtb2RlX2NoYW5nZWQpCj4gPiDCoAkJCWlu dGVsX2NydGMtPmF0b21pYy51cGRhdGVfc3ByaXRlX3dhdGVybWFya3MgfD0KPiA+IMKgCQkJCTEg PDwgaTsKPiA+IC0JCX0KPiA+IMKgCj4gPiDCoAkJYnJlYWs7Cj4gPiDCoAl9Cj4gPiBAQCAtMTMy OTksNiArMTMyOTAsNDggQEAgc3RhdGljIGludCBpbnRlbF9hdG9taWNfcHJlcGFyZV9jb21taXQo c3RydWN0Cj4gPiBkcm1fZGV2aWNlICpkZXYsCj4gPiDCoAlyZXR1cm4gcmV0Owo+ID4gwqB9Cj4g PiDCoAo+ID4gK3N0YXRpYyB2b2lkIGludGVsX2F0b21pY193YWl0X2Zvcl92YmxhbmtzKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsCj4gPiArCQkJCQnCoMKgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LAo+ID4gKwkJCQkJwqDCoHVuc2lnbmVkIGNydGNfbWFzaykKPiA+ICt7Cj4gPiAr CXVuc2lnbmVkIGxhc3RfdmJsYW5rX2NvdW50W0k5MTVfTUFYX1BJUEVTXTsKPiA+ICsJZW51bSBw aXBlIHBpcGU7Cj4gPiArCWludCByZXQ7Cj4gPiArCj4gPiArCWlmICghY3J0Y19tYXNrKQo+ID4g KwkJcmV0dXJuOwo+ID4gKwo+ID4gKwlmb3JfZWFjaF9waXBlKGRldl9wcml2LCBwaXBlKSB7Cj4g PiArCQlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBkZXZfcHJpdi0+cGlwZV90b19jcnRjX21hcHBp bmdbcGlwZV07Cj4gPiArCj4gPiArCQlpZiAoISgoMSA8PCBwaXBlKSAmIGNydGNfbWFzaykpCj4g PiArCQkJY29udGludWU7Cj4gPiArCj4gPiArCQlyZXQgPSBkcm1fY3J0Y192YmxhbmtfZ2V0KGNy dGMpOwo+ID4gKwkJaWYgKHJldCAhPSAwKSB7Cj4gPiArCQkJY3J0Y19tYXNrICY9IH4oMSA8PCBw aXBlKTsKPiA+ICsJCQljb250aW51ZTsKPiA+ICsJCX0KPiA+ICsKPiA+ICsJCWxhc3RfdmJsYW5r X2NvdW50W3BpcGVdID0gZHJtX2NydGNfdmJsYW5rX2NvdW50KGNydGMpOwo+ID4gKwl9Cj4gPiAr Cj4gPiArCWZvcl9lYWNoX3BpcGUoZGV2X3ByaXYsIHBpcGUpIHsKPiA+ICsJCXN0cnVjdCBkcm1f Y3J0YyAqY3J0YyA9IGRldl9wcml2LT5waXBlX3RvX2NydGNfbWFwcGluZ1twaXBlXTsKPiA+ICsK PiA+ICsJCWlmICghKCgxIDw8IHBpcGUpICYgY3J0Y19tYXNrKSkKPiA+ICsJCQljb250aW51ZTsK PiA+ICsKPiA+ICsJCXdhaXRfZXZlbnRfdGltZW91dChkZXYtPnZibGFua1twaXBlXS5xdWV1ZSwK PiA+ICsJCQkJbGFzdF92YmxhbmtfY291bnRbcGlwZV0gIT0KPiA+ICsJCQkJCWRybV9jcnRjX3Zi bGFua19jb3VudChjcnRjKSwKPiA+ICsJCQkJbXNlY3NfdG9famlmZmllcyg1MCkpOwo+ID4gKwo+ ID4gKwkJZHJtX2NydGNfdmJsYW5rX3B1dChjcnRjKTsKPiA+ICsJfQo+ID4gK30KPiA+ICsKPiA+ ICsKPiA+IMKgLyoqCj4gPiDCoCAqIGludGVsX2F0b21pY19jb21taXQgLSBjb21taXQgdmFsaWRh dGVkIHN0YXRlIG9iamVjdAo+ID4gwqAgKiBAZGV2OiBEUk0gZGV2aWNlCj4gPiBAQCAtMTMzMjUs NiArMTMzNTgsNyBAQCBzdGF0aWMgaW50IGludGVsX2F0b21pY19jb21taXQoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwKPiA+IMKgCXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKPiA+IMKgCWludCByZXQg PSAwLCBpOwo+ID4gwqAJYm9vbCBod19jaGVjayA9IGludGVsX3N0YXRlLT5tb2Rlc2V0Owo+ID4g Kwl1bnNpZ25lZCBjcnRjX3ZibGFua19tYXNrID0gMDsKPiA+IMKgCj4gPiDCoAlyZXQgPSBpbnRl bF9hdG9taWNfcHJlcGFyZV9jb21taXQoZGV2LCBzdGF0ZSwgYXN5bmMpOwo+ID4gwqAJaWYgKHJl dCkgewo+ID4gQEAgLTEzMzc1LDggKzEzNDA5LDkgQEAgc3RhdGljIGludCBpbnRlbF9hdG9taWNf Y29tbWl0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gPiDCoAlmb3JfZWFjaF9jcnRjX2luX3N0 YXRlKHN0YXRlLCBjcnRjLCBjcnRjX3N0YXRlLCBpKSB7Cj4gPiDCoAkJc3RydWN0IGludGVsX2Ny dGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+ID4gwqAJCWJvb2wgbW9kZXNl dCA9IG5lZWRzX21vZGVzZXQoY3J0Yy0+c3RhdGUpOwo+ID4gLQkJYm9vbCB1cGRhdGVfcGlwZSA9 ICFtb2Rlc2V0ICYmCj4gPiAtCQkJdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjLT5zdGF0ZSktPnVw ZGF0ZV9waXBlOwo+ID4gKwkJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnID0K PiA+ICsJCQl0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMtPnN0YXRlKTsKPiA+ICsJCWJvb2wgdXBk YXRlX3BpcGUgPSAhbW9kZXNldCAmJiBwaXBlX2NvbmZpZy0+dXBkYXRlX3BpcGU7Cj4gPiDCoAkJ dW5zaWduZWQgbG9uZyBwdXRfZG9tYWlucyA9IDA7Cj4gPiDCoAo+ID4gwqAJCWlmIChtb2Rlc2V0 KQo+ID4gQEAgLTEzNDAxLDE4ICsxMzQzNiwyMSBAQCBzdGF0aWMgaW50IGludGVsX2F0b21pY19j b21taXQoc3RydWN0IGRybV9kZXZpY2UKPiA+ICpkZXYsCj4gPiDCoAkJwqDCoMKgwqAoY3J0Yy0+ c3RhdGUtPnBsYW5lc19jaGFuZ2VkIHx8IHVwZGF0ZV9waXBlKSkKPiA+IMKgCQkJZHJtX2F0b21p Y19oZWxwZXJfY29tbWl0X3BsYW5lc19vbl9jcnRjKGNydGNfc3RhdGUpOwo+ID4gwqAKPiA+ICsJ CWlmIChwaXBlX2NvbmZpZy0+YmFzZS5hY3RpdmUgJiYKPiA+ICsJCcKgwqDCoMKgKHBpcGVfY29u ZmlnLT53bV9jaGFuZ2VkIHx8IHBpcGVfY29uZmlnLT5kaXNhYmxlX2N4c3IgfHwKPiA+ICsJCcKg wqDCoMKgwqBwaXBlX2NvbmZpZy0+ZmJfY2hhbmdlZCkpCj4gPiArCQkJY3J0Y192YmxhbmtfbWFz ayB8PSAxIDw8IGk7Cj4gPiArCj4gPiDCoAkJaWYgKHB1dF9kb21haW5zKQo+ID4gwqAJCQltb2Rl c2V0X3B1dF9wb3dlcl9kb21haW5zKGRldl9wcml2LCBwdXRfZG9tYWlucyk7Cj4gPiAtCj4gPiAt CQlpbnRlbF9wb3N0X3BsYW5lX3VwZGF0ZShpbnRlbF9jcnRjKTsKPiA+IC0KPiA+IC0JCWlmICht b2Rlc2V0KQo+ID4gLQkJCWludGVsX2Rpc3BsYXlfcG93ZXJfcHV0KGRldl9wcml2LCBQT1dFUl9E T01BSU5fTU9ERVNFVCk7Cj4gCj4gV291bGQgaXQgYmUgdG9vIGV2aWwgdG8gbW92ZSB0aGUgcG93 ZXIgZG9tYWluIGdldC9wdXQgb3V0IG9mIHRoZSBsb29wPyBJZiBJCj4gdW5kZXJzdGFuZCBjb3Jy ZWN0bHksIGludGVsX3N0YXRlLT5tb2Rlc2V0IGFscmVhZHkgdGVsbHMgdXMgaWYgdGhlcmUgaXMg YW55IGNydGMKPiB0aGF0IG5lZWRzIGEgbW9kZXNldCwgc28gd2UgY291bGQganVzdCBwcm90ZWN0 IHRoZSBjYWxscyB3aXRoIHRoYXQuIEknbSBub3Qgc3VyZQo+IHdoYXQgaXMgdGhlIGltcGFjdCwg YnV0IGF0IGxlYXN0IHdlIGNvdWxkIGF2b2lkIGhhdmluZyB0aGUgZ2V0IGluCj4gaW50ZWxfYXRv bWljX2NvbW1pdCgpIGFuZCB0aGUgcHV0IGluIGludGVsX3Bvc3RfcGxhbmVfZW5hYmxlKCkuCgpZ ZXMsIHRoYXQncyBjbGVhbmVyLCBhbmQgcG9zc2libHkgYXZvaWRzIHNvbWUgdW5uZWNlc3Nhcnkg b24vb2ZmIHRvZ2dsaW5nIG9mCnBvd2VyIHdlbGxzLiBXZSBjb3VsZCd2ZSBkb25lIHRoaXMgYWxy ZWFkeSBlYXJsaWVyIHVzaW5nIHRoZSBleGlzdGluZyBhbnlfbXMgZmxhZy4uCgpCdHcsIG5vdCB0 aGUgcHJvYmxlbSBpbiB0aGlzIHBhdGNoLCBidXQgSSBqdXN0IG5vdGljZWQgd2Ugc2hvdWxkIHRh a2UgdGhlIG1vZGVzZXQKcG93ZXIgZG9tYWluIGFscmVhZHkgZWFybGllci4gV2UgYXJlIGRpc2Fi bGluZyBhdCBsZWFzdCBDUlRDcy9QTExzIGFscmVhZHkgZWFybGllcgp3aGljaCBpcyBpbiB0aGUg c2V0IG9mIG9wZXJhdGlvbnMgd2UgbmVlZCB0byBwcm90ZWN0IHdpdGggdGhpcyBwb3dlciBkb21h aW4uIFRoYXQKY291bGQgYmUgZml4ZWQgYXMgYSBmb2xsb3ctdXAuCgotLUltcmUKCj4gCj4gQW5k ZXIKPiAKPiA+IMKgCX0KPiA+IMKgCj4gPiDCoAkvKiBGSVhNRTogYWRkIHN1YnBpeGVsIG9yZGVy ICovCj4gPiDCoAo+ID4gLQlkcm1fYXRvbWljX2hlbHBlcl93YWl0X2Zvcl92YmxhbmtzKGRldiwg c3RhdGUpOwo+ID4gKwlpbnRlbF9hdG9taWNfd2FpdF9mb3JfdmJsYW5rcyhkZXYsIGRldl9wcml2 LCBjcnRjX3ZibGFua19tYXNrKTsKPiA+ICsKPiA+ICsJZm9yX2VhY2hfY3J0Y19pbl9zdGF0ZShz dGF0ZSwgY3J0YywgY3J0Y19zdGF0ZSwgaSkKPiA+ICsJCWludGVsX3Bvc3RfcGxhbmVfdXBkYXRl KHRvX2ludGVsX2NydGMoY3J0YykpOwo+ID4gwqAKPiA+IMKgCW11dGV4X2xvY2soJmRldi0+c3Ry dWN0X211dGV4KTsKPiA+IMKgCWRybV9hdG9taWNfaGVscGVyX2NsZWFudXBfcGxhbmVzKGRldiwg c3RhdGUpOwo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5o Cj4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gPiBpbmRleCBkYjYxYzM3 ZGJmMDkuLjY2ZjY2NzQwY2NhYSAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rydi5oCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ ID4gQEAgLTM3Myw2ICszNzMsNyBAQCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSB7Cj4gPiDCoAli b29sIHVwZGF0ZV9waXBlOyAvKiBjYW4gYSBmYXN0IG1vZGVzZXQgYmUgcGVyZm9ybWVkPyAqLwo+ ID4gwqAJYm9vbCBkaXNhYmxlX2N4c3I7Cj4gPiDCoAlib29sIHdtX2NoYW5nZWQ7IC8qIHdhdGVy bWFya3MgYXJlIHVwZGF0ZWQgKi8KPiA+ICsJYm9vbCBmYl9jaGFuZ2VkOyAvKiBmYiBvbiBhbnkg b2YgdGhlIHBsYW5lcyBpcyBjaGFuZ2VkICovCj4gPiDCoAo+ID4gwqAJLyogUGlwZSBzb3VyY2Ug c2l6ZSAoaWUuIHBhbmVsIGZpdHRlciBpbnB1dCBzaXplKQo+ID4gwqAJwqAqIEFsbCBwbGFuZXMg d2lsbCBiZSBwb3NpdGlvbmVkIGluc2lkZSB0aGlzIHNwYWNlLAo+ID4gQEAgLTUzOSw3ICs1NDAs NiBAQCBzdHJ1Y3QgaW50ZWxfY3J0Y19hdG9taWNfY29tbWl0IHsKPiA+IMKgCj4gPiDCoAkvKiBT bGVlcGFibGUgb3BlcmF0aW9ucyB0byBwZXJmb3JtIGFmdGVyIGNvbW1pdCAqLwo+ID4gwqAJdW5z aWduZWQgZmJfYml0czsKPiA+IC0JYm9vbCB3YWl0X3ZibGFuazsKPiA+IMKgCWJvb2wgdXBkYXRl X2ZiYzsKPiA+IMKgCWJvb2wgcG9zdF9lbmFibGVfcHJpbWFyeTsKPiA+IMKgCXVuc2lnbmVkIHVw ZGF0ZV9zcHJpdGVfd2F0ZXJtYXJrczsKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9pbnRlbC1nZngK