From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [igt-dev] [PATCH] drm/i915: Add plane alpha blending support based on RFC Date: Mon, 4 Jun 2018 19:47:29 +0300 Message-ID: <20180604164729.GE23723@intel.com> References: <1527856871-3007-2-git-send-email-lowry.li@arm.com> <20180604135013.14234-1-maarten.lankhorst@linux.intel.com> <20180604142956.GD23723@intel.com> <164ce4fb-f203-4ada-a9ae-a578436dc5c5@linux.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: <164ce4fb-f203-4ada-a9ae-a578436dc5c5@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Maarten Lankhorst Cc: igt-dev@lists.freedesktop.org, Lowry Li , dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gTW9uLCBKdW4gMDQsIDIwMTggYXQgMDY6Mjc6MjBQTSArMDIwMCwgTWFhcnRlbiBMYW5raG9y c3Qgd3JvdGU6Cj4gT3AgMDQtMDYtMTggb20gMTY6Mjkgc2NocmVlZiBWaWxsZSBTeXJqw6Rsw6Q6 Cj4gPiBPbiBNb24sIEp1biAwNCwgMjAxOCBhdCAwMzo1MDoxM1BNICswMjAwLCBNYWFydGVuIExh bmtob3JzdCB3cm90ZToKPiA+PiBTaWduZWQtb2ZmLWJ5OiBNYWFydGVuIExhbmtob3JzdCA8bWFh cnRlbi5sYW5raG9yc3RAbGludXguaW50ZWwuY29tPgo+ID4+IC0tLQo+ID4+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3JlZy5oICAgICAgfCAgMiArCj4gPj4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rpc3BsYXkuYyB8IDY3ICsrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0KPiA+ PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgIHwgIDIgKwo+ID4+ICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmMuYyAgICAgfCAgNCArKwo+ID4+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYyAgfCAyNCArKysrKysrKystCj4gPj4gIDUgZmlsZXMg Y2hhbmdlZCwgNzkgaW5zZXJ0aW9ucygrKSwgMjAgZGVsZXRpb25zKC0pCj4gPj4KPiA+PiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfcmVnLmgKPiA+PiBpbmRleCAzMjc4MjljYzYxZjguLjIzZjBjYjBmYWQwZSAx MDA2NDQKPiA+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gPj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+ID4+IEBAIC02NDI1LDggKzY0MjUs MTAgQEAgZW51bSB7Cj4gPj4gICNkZWZpbmUgX1BMQU5FX0tFWVZBTF8yX0EJCQkweDcwMjk0Cj4g Pj4gICNkZWZpbmUgX1BMQU5FX0tFWU1TS18xX0EJCQkweDcwMTk4Cj4gPj4gICNkZWZpbmUgX1BM QU5FX0tFWU1TS18yX0EJCQkweDcwMjk4Cj4gPj4gKyNkZWZpbmUgIFBMQU5FX0tFWU1TS19BTFBI QV9FTkFCTEUJCSgxIDw8IDMxKQo+ID4+ICAjZGVmaW5lIF9QTEFORV9LRVlNQVhfMV9BCQkJMHg3 MDFhMAo+ID4+ICAjZGVmaW5lIF9QTEFORV9LRVlNQVhfMl9BCQkJMHg3MDJhMAo+ID4+ICsjZGVm aW5lICBQTEFORV9LRVlNQVhfQUxQSEFfU0hJRlQJCTI0Cj4gPiBQTEFORV9LRVlNQVhfQUxQSEEo eCkKPiA+Cj4gPj4gICNkZWZpbmUgX1BMQU5FX0FVWF9ESVNUXzFfQQkJCTB4NzAxYzAKPiA+PiAg I2RlZmluZSBfUExBTkVfQVVYX0RJU1RfMl9BCQkJMHg3MDJjMAo+ID4+ICAjZGVmaW5lIF9QTEFO RV9BVVhfT0ZGU0VUXzFfQQkJCTB4NzAxYzQKPiA+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlz cGxheS5jCj4gPj4gaW5kZXggZDQ4MjU2Zjg5YTUwLi44ZGRmZjA5YzMxMTAgMTAwNjQ0Cj4gPj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gPj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gPj4gQEAgLTMxNzAsNiArMzE3MCwy MSBAQCBpbnQgc2tsX2NoZWNrX3BsYW5lX3N1cmZhY2UoY29uc3Qgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNydGNfc3RhdGUsCj4gPj4gIAkJcmV0dXJuIC1FSU5WQUw7Cj4gPj4gIAl9Cj4gPj4g IAo+ID4+ICsJLyogSFcgb25seSBoYXMgOCBiaXRzIHBpeGVsIHByZWNpc2lvbiwgZGlzYWJsZSBw bGFuZSBpZiBpbnZpc2libGUgKi8KPiA+PiArCWlmICghKHBsYW5lX3N0YXRlLT5iYXNlLmFscGhh ID4+IDgpKSB7Cj4gPj4gKwkJcGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSA9IGZhbHNlOwo+ID4+ ICsJCXJldHVybiAwOwo+ID4+ICsJfQo+ID4+ICsKPiA+PiArCWlmIChwbGFuZV9zdGF0ZS0+YmFz ZS5hbHBoYSA8IDB4ZmYwMCkgewo+ID4+ICsJCXBsYW5lX3N0YXRlLT5mbGFncyB8PSBQTEFORV9B TFBIQV9FTkFCTEVEOwo+ID4+ICsKPiA+PiArCQkvKiBGQkMgY2Fubm90IGJlIGVuYWJsZWQgd2l0 aCBwZXIgcGl4ZWwgYWxwaGEgKi8KPiA+PiArCQlpZiAocGxhbmVfc3RhdGUtPmJhc2UucGl4ZWxf YmxlbmRfbW9kZSAhPSBEUk1fTU9ERV9CTEVORF9QSVhFTF9OT05FICYmCj4gPj4gKwkJICAgIGZi LT5mb3JtYXQtPmhhc19hbHBoYSkKPiA+PiArCQkJcGxhbmVfc3RhdGUtPmZsYWdzIHw9IFBMQU5F X0FMUEhBX05PX0ZCQzsKPiA+IFdoeSBpcyB0aGlzIGZiYyBwZXItcGl4ZWwgYWxwaGEgY2hlY2sg aW5zaWRlIHRoZSBjb25zdGFudCBhbHBoYSBpZiBibG9jaz8KPiA+Cj4gPiBBbHNvIEknbSBub3Qg Y29udmluY2VkIGJ5IHRoZXNlIHBsYW5lIHN0YXRlIGZsYWdzLiBUaGV5J3JlIG5vdAo+ID4gY29u c2lzdGVudCB3aXRoIGhvdyB3ZSBkbyBldmVyeXRoaW5nIGVsc2UsIHNvIEkgd291bGQgZHJvcCB0 aGVtLgo+IAo+IFRoZSBvbmx5IHJlYXNvbiBJJ20gdXNpbmcgaXQgaXMgYmVjYXVzZSB3ZSBhbHJl YWR5IGhhdmUgUExBTkVfSEFTX0ZFTkNFIHRoZXJlLiBCZWNhdXNlIHRoZSBGQkMKPiBjb2RlIGFs cmVhZHkgY29waWVzIGZsYWdzLCBpdCBtYWtlcyBzZW5zZSB0byByZS11c2UgaXQgcmF0aGVyIHRo YW4gYWRkaW5nIGFub3RoZXIgZmllbGQuCgpUaGUgb25seSByZWFzb24gZm9yIHRoZSBoYXNfZmVu Y2UgaXMgYmVjYXVzZSB3ZSBkb24ndCBoYXZlIHRoYXQKaW5mb3JtYXRpb24gZWxzZXdoZXJlLiBJ J2QgcmF0aGVyIG5vdCBkdXBsaWNhdGUgdGhpbmdzIHRoYXQgYXJlIGVhc2lseQphdmFpbGFibGUg aW4gdGhlIHN0YXRlIGFscmVhZHkuCgpBbHNvLCB0aGUgZmJjIHRoaW5nIG5lZWRzIHRvIGJlIHJl d3JpdHRlbiBhbnl3YXkuIFRoZXJlIGlzIG5vIHJlYXNvbgp0byBjb3B5IG92ZXIgYWxsIHRoZXNl IHRoaW5ncyBpbnRvIHRoZSBjYWNoZSwgYW5kIGluc3RlYWQgd2Ugc2hvdWxkCmp1c3QgbG9vayBh dCB0aGUgcGxhbmUgc3RhdGUgZHVyaW5nIHRoZSBwbGFuZSBhdG9taWMgY2hlY2sgYW5kIGRlY2lk ZQppZiBmYmMgY2FuIG9yIGNhbid0IGJlIHVzZWQgYmFzZWQgb24gdGhlIG5ldyBzdGF0ZS4KCj4g Cj4gPj4gKwl9Cj4gPj4gKwo+ID4+ICAJaWYgKCFwbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlKQo+ ID4+ICAJCXJldHVybiAwOwo+ID4+ICAKPiA+PiBAQCAtMzQ5NiwzMCArMzUxMSwzOSBAQCBzdGF0 aWMgdTMyIHNrbF9wbGFuZV9jdGxfZm9ybWF0KHVpbnQzMl90IHBpeGVsX2Zvcm1hdCkKPiA+PiAg CXJldHVybiAwOwo+ID4+ICB9Cj4gPj4gIAo+ID4+IC0vKgo+ID4+IC0gKiBYWFg6IEZvciBBUkJH L0FCR1IgZm9ybWF0cyB3ZSBkZWZhdWx0IHRvIGV4cGVjdGluZyBzY2Fub3V0IGJ1ZmZlcnMKPiA+ PiAtICogdG8gYmUgYWxyZWFkeSBwcmUtbXVsdGlwbGllZC4gV2UgbmVlZCB0byBhZGQgYSBrbm9i IChvciBhIGRpZmZlcmVudAo+ID4+IC0gKiBEUk1fRk9STUFUKSBmb3IgdXNlci1zcGFjZSB0byBj b25maWd1cmUgdGhhdC4KPiA+PiAtICovCj4gPj4gLXN0YXRpYyB1MzIgc2tsX3BsYW5lX2N0bF9h bHBoYSh1aW50MzJfdCBwaXhlbF9mb3JtYXQpCj4gPj4gK3N0YXRpYyB1MzIgc2tsX3BsYW5lX2N0 bF9hbHBoYShjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ID4+ ICB7Cj4gPj4gLQlzd2l0Y2ggKHBpeGVsX2Zvcm1hdCkgewo+ID4+IC0JY2FzZSBEUk1fRk9STUFU X0FCR1I4ODg4Ogo+ID4+IC0JY2FzZSBEUk1fRk9STUFUX0FSR0I4ODg4Ogo+ID4+ICsJaWYgKCFw bGFuZV9zdGF0ZS0+YmFzZS5mYi0+Zm9ybWF0LT5oYXNfYWxwaGEpCj4gPj4gKwkJcmV0dXJuIFBM QU5FX0NUTF9BTFBIQV9ESVNBQkxFOwo+ID4+ICsKPiA+PiArCXN3aXRjaCAocGxhbmVfc3RhdGUt PmJhc2UucGl4ZWxfYmxlbmRfbW9kZSkgewo+ID4+ICsJY2FzZSBEUk1fTU9ERV9CTEVORF9QSVhF TF9OT05FOgo+ID4+ICsJCXJldHVybiBQTEFORV9DVExfQUxQSEFfRElTQUJMRTsKPiA+PiArCWNh c2UgRFJNX01PREVfQkxFTkRfUFJFTVVMVEk6Cj4gPj4gIAkJcmV0dXJuIFBMQU5FX0NUTF9BTFBI QV9TV19QUkVNVUxUSVBMWTsKPiA+PiArCWNhc2UgRFJNX01PREVfQkxFTkRfQ09WRVJBR0U6Cj4g Pj4gKwkJcmV0dXJuIFBMQU5FX0NUTF9BTFBIQV9IV19QUkVNVUxUSVBMWTsKPiA+PiAgCWRlZmF1 bHQ6Cj4gPj4gLQkJcmV0dXJuIFBMQU5FX0NUTF9BTFBIQV9ESVNBQkxFOwo+ID4+ICsJCU1JU1NJ TkdfQ0FTRShwbGFuZV9zdGF0ZS0+YmFzZS5waXhlbF9ibGVuZF9tb2RlKTsKPiA+PiArCQlyZXR1 cm4gMDsKPiA+PiAgCX0KPiA+PiAgfQo+ID4+ICAKPiA+PiAtc3RhdGljIHUzMiBnbGtfcGxhbmVf Y29sb3JfY3RsX2FscGhhKHVpbnQzMl90IHBpeGVsX2Zvcm1hdCkKPiA+PiArc3RhdGljIHUzMiBn bGtfcGxhbmVfY29sb3JfY3RsX2FscGhhKGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAq cGxhbmVfc3RhdGUpCj4gPj4gIHsKPiA+PiAtCXN3aXRjaCAocGl4ZWxfZm9ybWF0KSB7Cj4gPj4g LQljYXNlIERSTV9GT1JNQVRfQUJHUjg4ODg6Cj4gPj4gLQljYXNlIERSTV9GT1JNQVRfQVJHQjg4 ODg6Cj4gPj4gKwlpZiAoIXBsYW5lX3N0YXRlLT5iYXNlLmZiLT5mb3JtYXQtPmhhc19hbHBoYSkK PiA+PiArCQlyZXR1cm4gUExBTkVfQ09MT1JfQUxQSEFfRElTQUJMRTsKPiA+PiArCj4gPj4gKwlz d2l0Y2ggKHBsYW5lX3N0YXRlLT5iYXNlLnBpeGVsX2JsZW5kX21vZGUpIHsKPiA+PiArCWNhc2Ug RFJNX01PREVfQkxFTkRfUElYRUxfTk9ORToKPiA+PiArCQlyZXR1cm4gUExBTkVfQ09MT1JfQUxQ SEFfRElTQUJMRTsKPiA+PiArCWNhc2UgRFJNX01PREVfQkxFTkRfUFJFTVVMVEk6Cj4gPj4gIAkJ cmV0dXJuIFBMQU5FX0NPTE9SX0FMUEhBX1NXX1BSRU1VTFRJUExZOwo+ID4+ICsJY2FzZSBEUk1f TU9ERV9CTEVORF9DT1ZFUkFHRToKPiA+PiArCQlyZXR1cm4gUExBTkVfQ09MT1JfQUxQSEFfSFdf UFJFTVVMVElQTFk7Cj4gPj4gIAlkZWZhdWx0Ogo+ID4+IC0JCXJldHVybiBQTEFORV9DT0xPUl9B TFBIQV9ESVNBQkxFOwo+ID4+ICsJCU1JU1NJTkdfQ0FTRShwbGFuZV9zdGF0ZS0+YmFzZS5waXhl bF9ibGVuZF9tb2RlKTsKPiA+PiArCQlyZXR1cm4gMDsKPiA+PiAgCX0KPiA+PiAgfQo+ID4+ICAK PiA+PiBAQCAtMzU5NSw3ICszNjE5LDcgQEAgdTMyIHNrbF9wbGFuZV9jdGwoY29uc3Qgc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gPj4gIAlwbGFuZV9jdGwgPSBQTEFORV9D VExfRU5BQkxFOwo+ID4+ICAKPiA+PiAgCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgMTAgJiYg IUlTX0dFTUlOSUxBS0UoZGV2X3ByaXYpKSB7Cj4gPj4gLQkJcGxhbmVfY3RsIHw9IHNrbF9wbGFu ZV9jdGxfYWxwaGEoZmItPmZvcm1hdC0+Zm9ybWF0KTsKPiA+PiArCQlwbGFuZV9jdGwgfD0gc2ts X3BsYW5lX2N0bF9hbHBoYShwbGFuZV9zdGF0ZSk7Cj4gPj4gIAkJcGxhbmVfY3RsIHw9Cj4gPj4g IAkJCVBMQU5FX0NUTF9QSVBFX0dBTU1BX0VOQUJMRSB8Cj4gPj4gIAkJCVBMQU5FX0NUTF9QSVBF X0NTQ19FTkFCTEUgfAo+ID4+IEBAIC0zNjM3LDcgKzM2NjEsNyBAQCB1MzIgZ2xrX3BsYW5lX2Nv bG9yX2N0bChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiA+PiAg CQlwbGFuZV9jb2xvcl9jdGwgfD0gUExBTkVfQ09MT1JfUElQRV9DU0NfRU5BQkxFOwo+ID4+ICAJ fQo+ID4+ICAJcGxhbmVfY29sb3JfY3RsIHw9IFBMQU5FX0NPTE9SX1BMQU5FX0dBTU1BX0RJU0FC TEU7Cj4gPj4gLQlwbGFuZV9jb2xvcl9jdGwgfD0gZ2xrX3BsYW5lX2NvbG9yX2N0bF9hbHBoYShm Yi0+Zm9ybWF0LT5mb3JtYXQpOwo+ID4+ICsJcGxhbmVfY29sb3JfY3RsIHw9IGdsa19wbGFuZV9j b2xvcl9jdGxfYWxwaGEocGxhbmVfc3RhdGUpOwo+ID4+ICAKPiA+PiAgCWlmIChpbnRlbF9mb3Jt YXRfaXNfeXV2KGZiLT5mb3JtYXQtPmZvcm1hdCkpIHsKPiA+PiAgCQlpZiAoZmItPmZvcm1hdC0+ Zm9ybWF0ID09IERSTV9GT1JNQVRfTlYxMikgewo+ID4+IEBAIC0xMzYyMyw3ICsxMzY0Nyw3IEBA IGludGVsX3ByaW1hcnlfcGxhbmVfY3JlYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwgZW51bSBwaXBlIHBpcGUpCj4gPj4gIAkJCQkJCSAgIERSTV9NT0RFX1JPVEFURV8wLAo+ ID4+ICAJCQkJCQkgICBzdXBwb3J0ZWRfcm90YXRpb25zKTsKPiA+PiAgCj4gPj4gLQlpZiAoSU5U RUxfR0VOKGRldl9wcml2KSA+PSA5KQo+ID4+ICsJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0g OSkgewo+ID4+ICAJCWRybV9wbGFuZV9jcmVhdGVfY29sb3JfcHJvcGVydGllcygmcHJpbWFyeS0+ YmFzZSwKPiA+PiAgCQkJCQkJICBCSVQoRFJNX0NPTE9SX1lDQkNSX0JUNjAxKSB8Cj4gPj4gIAkJ CQkJCSAgQklUKERSTV9DT0xPUl9ZQ0JDUl9CVDcwOSksCj4gPj4gQEAgLTEzNjMyLDYgKzEzNjU2 LDEzIEBAIGludGVsX3ByaW1hcnlfcGxhbmVfY3JlYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwgZW51bSBwaXBlIHBpcGUpCj4gPj4gIAkJCQkJCSAgRFJNX0NPTE9SX1lDQkNS X0JUNzA5LAo+ID4+ICAJCQkJCQkgIERSTV9DT0xPUl9ZQ0JDUl9MSU1JVEVEX1JBTkdFKTsKPiA+ PiAgCj4gPj4gKwkJZHJtX3BsYW5lX2NyZWF0ZV9hbHBoYV9wcm9wZXJ0eSgmcHJpbWFyeS0+YmFz ZSk7Cj4gPj4gKwkJZHJtX3BsYW5lX2NyZWF0ZV9ibGVuZF9tb2RlX3Byb3BlcnR5KCZwcmltYXJ5 LT5iYXNlLAo+ID4+ICsJCQkJCQkgICAgIEJJVChEUk1fTU9ERV9CTEVORF9QSVhFTF9OT05FKSB8 Cj4gPj4gKwkJCQkJCSAgICAgQklUKERSTV9NT0RFX0JMRU5EX1BSRU1VTFRJKSB8Cj4gPj4gKwkJ CQkJCSAgICAgQklUKERSTV9NT0RFX0JMRU5EX0NPVkVSQUdFKSk7Cj4gPj4gKwl9Cj4gPj4gKwo+ ID4+ICAJZHJtX3BsYW5lX2hlbHBlcl9hZGQoJnByaW1hcnktPmJhc2UsICZpbnRlbF9wbGFuZV9o ZWxwZXJfZnVuY3MpOwo+ID4+ICAKPiA+PiAgCXJldHVybiBwcmltYXJ5Owo+ID4+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rydi5oCj4gPj4gaW5kZXggMmRjMDFiZTBjN2NjLi42NzVkYmU5MjdhMDYgMTAw NjQ0Cj4gPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiA+PiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ID4+IEBAIC01MDAsNiArNTAwLDgg QEAgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlIHsKPiA+PiAgCXN0cnVjdCBpOTE1X3ZtYSAqdm1h Owo+ID4+ICAJdW5zaWduZWQgbG9uZyBmbGFnczsKPiA+PiAgI2RlZmluZSBQTEFORV9IQVNfRkVO Q0UgQklUKDApCj4gPj4gKyNkZWZpbmUgUExBTkVfQUxQSEFfRU5BQkxFRCBCSVQoMSkKPiA+PiAr I2RlZmluZSBQTEFORV9BTFBIQV9OT19GQkMgQklUKDIpCj4gPj4gIAo+ID4+ICAJc3RydWN0IHsK PiA+PiAgCQl1MzIgb2Zmc2V0Owo+ID4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9mYmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiYy5jCj4gPj4gaW5k ZXggMWYyZjQxZTY3ZGNkLi4yMGEyZGJhNzhjYWQgMTAwNjQ0Cj4gPj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZmJjLmMKPiA+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9mYmMuYwo+ID4+IEBAIC03MzIsNiArNzMyLDEwIEBAIHN0YXRpYyBib29sIGludGVsX2Zi Y19jYW5fYWN0aXZhdGUoc3RydWN0IGludGVsX2NydGMgKmNydGMpCj4gPj4gIAkJZmJjLT5ub19m YmNfcmVhc29uID0gImZyYW1lYnVmZmVyIG5vdCB0aWxlZCBvciBmZW5jZWQiOwo+ID4+ICAJCXJl dHVybiBmYWxzZTsKPiA+PiAgCX0KPiA+PiArCWlmIChjYWNoZS0+ZmxhZ3MgJiBQTEFORV9BTFBI QV9OT19GQkMpIHsKPiA+PiArCQlmYmMtPm5vX2ZiY19yZWFzb24gPSAicGVyIHBpeGVsIGFscGhh IGJsZW5kaW5nIGVuYWJsZWQiOwo+ID4+ICsJCXJldHVybiBmYWxzZTsKPiA+PiArCX0KPiA+PiAg CWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDw9IDQgJiYgIUlTX0c0WChkZXZfcHJpdikgJiYKPiA+ PiAgCSAgICBjYWNoZS0+cGxhbmUucm90YXRpb24gIT0gRFJNX01PREVfUk9UQVRFXzApIHsKPiA+ PiAgCQlmYmMtPm5vX2ZiY19yZWFzb24gPSAicm90YXRpb24gdW5zdXBwb3J0ZWQiOwo+ID4+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCj4gPj4gaW5kZXggMGIxYmQ1ZGU1MTkyLi40ZmNj N2NlMDlhOWMgMTAwNjQ0Cj4gPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3By aXRlLmMKPiA+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYwo+ID4+ IEBAIC0yNTQsNiArMjU0LDcgQEAgc2tsX3VwZGF0ZV9wbGFuZShzdHJ1Y3QgaW50ZWxfcGxhbmUg KnBsYW5lLAo+ID4+ICAJdWludDMyX3QgeSA9IHBsYW5lX3N0YXRlLT5tYWluLnk7Cj4gPj4gIAl1 aW50MzJfdCBzcmNfdyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+YmFzZS5zcmMpID4+ IDE2Owo+ID4+ICAJdWludDMyX3Qgc3JjX2ggPSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRl LT5iYXNlLnNyYykgPj4gMTY7Cj4gPj4gKwl1MzIga2V5bXNrID0gMCwga2V5bWF4ID0gMDsKPiA+ PiAgCj4gPj4gIAkvKiBTaXplcyBhcmUgMCBiYXNlZCAqLwo+ID4+ICAJc3JjX3ctLTsKPiA+PiBA QCAtMjY3LDEwICsyNjgsMjAgQEAgc2tsX3VwZGF0ZV9wbGFuZShzdHJ1Y3QgaW50ZWxfcGxhbmUg KnBsYW5lLAo+ID4+ICAKPiA+PiAgCWlmIChrZXktPmZsYWdzKSB7Cj4gPj4gIAkJSTkxNV9XUklU RV9GVyhQTEFORV9LRVlWQUwocGlwZSwgcGxhbmVfaWQpLCBrZXktPm1pbl92YWx1ZSk7Cj4gPj4g LQkJSTkxNV9XUklURV9GVyhQTEFORV9LRVlNQVgocGlwZSwgcGxhbmVfaWQpLCBrZXktPm1heF92 YWx1ZSk7Cj4gPj4gLQkJSTkxNV9XUklURV9GVyhQTEFORV9LRVlNU0socGlwZSwgcGxhbmVfaWQp LCBrZXktPmNoYW5uZWxfbWFzayk7Cj4gPj4gKwo+ID4+ICsJCWtleW1heCA9IGtleS0+bWF4X3Zh bHVlICYgMHhmZmZmZmY7Cj4gPj4gKwkJa2V5bXNrIHw9IGtleS0+Y2hhbm5lbF9tYXNrICYgMHgz ZmZmZmZmOwo+ID4gV2hhdCdzIHVwIHdpdGggfD0gdnMuID0gaGVyZT8KPiBXZWxsIEkgZ3Vlc3Mg aXQgY2FuIGJlIGp1c3QgfD0gZm9yIGJvdGguCj4gPgo+ID4+ICAJfQo+ID4+ICAKPiA+PiArCWtl eW1heCB8PSAocGxhbmVfc3RhdGUtPmJhc2UuYWxwaGEgPj4gOCkgPDwgUExBTkVfS0VZTUFYX0FM UEhBX1NISUZUOwo+ID4+ICsKPiA+PiArCWlmIChwbGFuZV9zdGF0ZS0+ZmxhZ3MgJiBQTEFORV9B TFBIQV9FTkFCTEVEIHx8Cj4gPj4gKwkgICAgcGxhbmVfc3RhdGUtPmJhc2UuZmItPmZvcm1hdC0+ aGFzX2FscGhhKQo+ID4+ICsJCWtleW1zayB8PSBQTEFORV9LRVlNU0tfQUxQSEFfRU5BQkxFOwo+ ID4gV2h5IGFyZSB3ZSBjaGVja2luZyB0aGUgZm9ybWF0IGhhc19hbHBoYSBoZXJlPyBJc24ndCB0 aGlzIGFib3V0IHRoZQo+ID4gY29uc3RhbnQgYWxwaGE/Cj4gSG0gbG9va3Mgd3JvbmcsIG11c3Qg YmUganVzdCB0aGUgaW5pdGlhbCBjaGVjay4KPiA+Cj4gPj4gKwo+ID4+ICsJSTkxNV9XUklURV9G VyhQTEFORV9LRVlNQVgocGlwZSwgcGxhbmVfaWQpLCBrZXltYXgpOwo+ID4+ICsJSTkxNV9XUklU RV9GVyhQTEFORV9LRVlNU0socGlwZSwgcGxhbmVfaWQpLCBrZXltc2spOwo+ID4+ICsKPiA+PiAg CUk5MTVfV1JJVEVfRlcoUExBTkVfT0ZGU0VUKHBpcGUsIHBsYW5lX2lkKSwgKHkgPDwgMTYpIHwg eCk7Cj4gPj4gIAlJOTE1X1dSSVRFX0ZXKFBMQU5FX1NUUklERShwaXBlLCBwbGFuZV9pZCksIHN0 cmlkZSk7Cj4gPj4gIAlJOTE1X1dSSVRFX0ZXKFBMQU5FX1NJWkUocGlwZSwgcGxhbmVfaWQpLCAo c3JjX2ggPDwgMTYpIHwgc3JjX3cpOwo+ID4+IEBAIC0xNTI1LDYgKzE1MzYsMTUgQEAgaW50ZWxf c3ByaXRlX3BsYW5lX2NyZWF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4g Pj4gIAkJCQkJICBEUk1fQ09MT1JfWUNCQ1JfQlQ3MDksCj4gPj4gIAkJCQkJICBEUk1fQ09MT1Jf WUNCQ1JfTElNSVRFRF9SQU5HRSk7Cj4gPj4gIAo+ID4+ICsJaWYgKElOVEVMX0dFTihkZXZfcHJp dikgPj0gOSkgewo+ID4+ICsJCWRybV9wbGFuZV9jcmVhdGVfYWxwaGFfcHJvcGVydHkoJmludGVs X3BsYW5lLT5iYXNlKTsKPiA+PiArCj4gPj4gKwkJZHJtX3BsYW5lX2NyZWF0ZV9ibGVuZF9tb2Rl X3Byb3BlcnR5KCZpbnRlbF9wbGFuZS0+YmFzZSwKPiA+PiArCQkJCQkJICAgICBCSVQoRFJNX01P REVfQkxFTkRfUElYRUxfTk9ORSkgfAo+ID4+ICsJCQkJCQkgICAgIEJJVChEUk1fTU9ERV9CTEVO RF9QUkVNVUxUSSkgfAo+ID4+ICsJCQkJCQkgICAgIEJJVChEUk1fTU9ERV9CTEVORF9DT1ZFUkFH RSkpOwo+ID4+ICsJfQo+ID4+ICsKPiA+PiAgCWRybV9wbGFuZV9oZWxwZXJfYWRkKCZpbnRlbF9w bGFuZS0+YmFzZSwgJmludGVsX3BsYW5lX2hlbHBlcl9mdW5jcyk7Cj4gPj4gIAo+ID4+ICAJcmV0 dXJuIGludGVsX3BsYW5lOwo+ID4+IC0tIAo+ID4+IDIuMTcuMQo+ID4+Cj4gPj4gX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiA+PiBpZ3QtZGV2IG1haWxp bmcgbGlzdAo+ID4+IGlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gPj4gaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2Cj4gCgotLSAKVmls bGUgU3lyasOkbMOkCkludGVsCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNr dG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2Ry aS1kZXZlbAo=