From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: Re: [PATCH] drm/i915: Add plane alpha blending support, v2. Date: Thu, 23 Aug 2018 08:16:42 +0200 Message-ID: References: <1534314933-23182-1-git-send-email-lowry.li@arm.com> <20180815103405.22679-1-maarten.lankhorst@linux.intel.com> <20180822225724.GG4582@mdroper-desk.amr.corp.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180822225724.GG4582@mdroper-desk.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, Lowry Li , dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T3AgMjMtMDgtMTggb20gMDA6NTcgc2NocmVlZiBNYXR0IFJvcGVyOgo+IE9uIFdlZCwgQXVnIDE1 LCAyMDE4IGF0IDEyOjM0OjA1UE0gKzAyMDAsIE1hYXJ0ZW4gTGFua2hvcnN0IHdyb3RlOgo+PiBB ZGQgcGxhbmUgYWxwaGEgYmxlbmRpbmcgc3VwcG9ydCB3aXRoIHRoZSBkaWZmZXJlbnQgYmxlbmQg bW9kZXMuCj4+IFRoaXMgaGFzIGJlZW4gdGVzdGVkIG9uIGEgaWNsIHRvIHNob3cgdGhlIGNvcnJl Y3QgcmVzdWx0cywKPj4gb24gZWFybGllciBwbGF0Zm9ybXMgc21hbGwgcm91bmRpbmcgZXJyb3Jz IGNhdXNlIGlzc3Vlcy4gQnV0IHRoaXMKPj4gYWxyZWFkeSBoYXBwZW5zIGNhc2Ugd2l0aCBmdWxs eSB0cmFuc3BhcmFudCBvciBmdWxseSBvcGFxdWUgUkdCODg4OAo+PiBmYidzLgo+Pgo+PiBUaGUg cmVjb21tZW5kZWQgSFcgd29ya2Fyb3VuZCBpcyB0byBkaXNhYmxlIGFscGhhIGJsZW5kaW5nIHdo ZW4gdGhlCj4+IHBsYW5lIGFscGhhIGlzIDAgKHRyYW5zcGFyYW50LCBoaWRlIHBsYW5lKSBvciAw eGZmIChvcGFxdWUsIGRpc2FibGUgYmxlbmRpbmcpLgo+PiBUaGlzIGlzIGVhc3kgdG8gaW1wbGVt ZW50IG9uIGFueSBwbGF0Zm9ybSwgc28ganVzdCBkbyB0aGF0Lgo+Pgo+PiBUaGUgdGVzdHMgZm9y IHVzZXJzcGFjZSBhcmUgYWxzbyBhdmFpbGFibGUsIGFuZCBwYXNzIG9uIGdlbjExLgo+Pgo+PiBD aGFuZ2VzIHNpbmNlIHYxOgo+PiAtIENoYW5nZSBtaXN0YWtlbiA8IDB4ZmYwIHRvIDB4ZmYwMC4K Pj4gLSBPbmx5IHNldCBQTEFORV9LRVlNU0tfQUxQSEFfRU5BQkxFIHdoZW4gcGxhbmUgYWxwaGEg PCAweGZmMDAsIGlnbm9yZSBibGVuZCBtb2RlLgo+PiAtIFJld29yayBkaXNhYmxpbmcgRkJDIHdo ZW4gcGVyIHBpeGVsIGFscGhhIGlzIHVzZWQuCj4+Cj4+IFNpZ25lZC1vZmYtYnk6IE1hYXJ0ZW4g TGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+Cj4gT25lIHF1ZXN0 aW9uIGFuZCBvbmUgbWlub3Igc3VnZ2VzdGlvbiBpbmxpbmUgYmVsb3csIGJ1dCBvdGhlcndpc2Us Cj4KPiBSZXZpZXdlZC1ieTogTWF0dCBSb3BlciA8bWF0dGhldy5kLnJvcGVyQGludGVsLmNvbT4K Pgo+PiAtLS0KPj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICB8ICAyICsK Pj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmggICAgICB8ICAyICsKPj4gIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyB8IDU4ICsrKysrKysrKysrKysrKysrKyst LS0tLS0tLS0KPj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiYy5jICAgICB8ICA4ICsr KysKPj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jICB8IDIzICsrKysrKysr KystCj4+ICA1IGZpbGVzIGNoYW5nZWQsIDczIGluc2VydGlvbnMoKyksIDIwIGRlbGV0aW9ucygt KQo+Pgo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPj4gaW5kZXggM2ZhNTZiOTYwZWYyLi4yOWY3 NWRhNWZhOGMgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgK Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+PiBAQCAtNTQ1LDYgKzU0 NSw4IEBAIHN0cnVjdCBpbnRlbF9mYmMgewo+PiAgCQkJaW50IGFkanVzdGVkX3k7Cj4+ICAKPj4g IAkJCWludCB5Owo+PiArCj4+ICsJCQl1aW50MTZfdCBwaXhlbF9ibGVuZF9tb2RlOwo+PiAgCQl9 IHBsYW5lOwo+PiAgCj4+ICAJCXN0cnVjdCB7Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3JlZy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+PiBp bmRleCAwYzlmMDNkZGE1NjkuLjkzYTFkODdjZGViMiAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3JlZy5oCj4+IEBAIC02NTYxLDggKzY1NjEsMTAgQEAgZW51bSB7Cj4+ICAjZGVmaW5lIF9QTEFO RV9LRVlWQUxfMl9BCQkJMHg3MDI5NAo+PiAgI2RlZmluZSBfUExBTkVfS0VZTVNLXzFfQQkJCTB4 NzAxOTgKPj4gICNkZWZpbmUgX1BMQU5FX0tFWU1TS18yX0EJCQkweDcwMjk4Cj4+ICsjZGVmaW5l ICBQTEFORV9LRVlNU0tfQUxQSEFfRU5BQkxFCQkoMSA8PCAzMSkKPj4gICNkZWZpbmUgX1BMQU5F X0tFWU1BWF8xX0EJCQkweDcwMWEwCj4+ICAjZGVmaW5lIF9QTEFORV9LRVlNQVhfMl9BCQkJMHg3 MDJhMAo+PiArI2RlZmluZSAgUExBTkVfS0VZTUFYX0FMUEhBX1NISUZUCQkyNAo+PiAgI2RlZmlu ZSBfUExBTkVfQVVYX0RJU1RfMV9BCQkJMHg3MDFjMAo+PiAgI2RlZmluZSBfUExBTkVfQVVYX0RJ U1RfMl9BCQkJMHg3MDJjMAo+PiAgI2RlZmluZSBfUExBTkVfQVVYX09GRlNFVF8xX0EJCQkweDcw MWM0Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPj4gaW5kZXggYTAzNDVlN2Qz YzJiLi5hZWRhZDM2NzRiMGQgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rpc3BsYXkuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5 LmMKPj4gQEAgLTMxNjcsNiArMzE2NywxMiBAQCBpbnQgc2tsX2NoZWNrX3BsYW5lX3N1cmZhY2Uo Y29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4+ICAJCXJldHVybiAt RUlOVkFMOwo+PiAgCX0KPj4gIAo+PiArCS8qIEhXIG9ubHkgaGFzIDggYml0cyBwaXhlbCBwcmVj aXNpb24sIGRpc2FibGUgcGxhbmUgaWYgaW52aXNpYmxlICovCj4+ICsJaWYgKCEocGxhbmVfc3Rh dGUtPmJhc2UuYWxwaGEgPj4gOCkpIHsKPj4gKwkJcGxhbmVfc3RhdGUtPmJhc2UudmlzaWJsZSA9 IGZhbHNlOwo+PiArCQlyZXR1cm4gMDsKPj4gKwl9Cj4+ICsKPj4gIAlpZiAoIXBsYW5lX3N0YXRl LT5iYXNlLnZpc2libGUpCj4+ICAJCXJldHVybiAwOwo+PiAgCj4+IEBAIC0zNTEyLDMwICszNTE4 LDM5IEBAIHN0YXRpYyB1MzIgc2tsX3BsYW5lX2N0bF9mb3JtYXQodWludDMyX3QgcGl4ZWxfZm9y bWF0KQo+PiAgCXJldHVybiAwOwo+PiAgfQo+PiAgCj4+IC0vKgo+PiAtICogWFhYOiBGb3IgQVJC Ry9BQkdSIGZvcm1hdHMgd2UgZGVmYXVsdCB0byBleHBlY3Rpbmcgc2Nhbm91dCBidWZmZXJzCj4+ IC0gKiB0byBiZSBhbHJlYWR5IHByZS1tdWx0aXBsaWVkLiBXZSBuZWVkIHRvIGFkZCBhIGtub2Ig KG9yIGEgZGlmZmVyZW50Cj4+IC0gKiBEUk1fRk9STUFUKSBmb3IgdXNlci1zcGFjZSB0byBjb25m aWd1cmUgdGhhdC4KPj4gLSAqLwo+PiAtc3RhdGljIHUzMiBza2xfcGxhbmVfY3RsX2FscGhhKHVp bnQzMl90IHBpeGVsX2Zvcm1hdCkKPj4gK3N0YXRpYyB1MzIgc2tsX3BsYW5lX2N0bF9hbHBoYShj b25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+PiAgewo+PiAtCXN3 aXRjaCAocGl4ZWxfZm9ybWF0KSB7Cj4+IC0JY2FzZSBEUk1fRk9STUFUX0FCR1I4ODg4Ogo+PiAt CWNhc2UgRFJNX0ZPUk1BVF9BUkdCODg4ODoKPj4gKwlpZiAoIXBsYW5lX3N0YXRlLT5iYXNlLmZi LT5mb3JtYXQtPmhhc19hbHBoYSkKPj4gKwkJcmV0dXJuIFBMQU5FX0NUTF9BTFBIQV9ESVNBQkxF Owo+PiArCj4+ICsJc3dpdGNoIChwbGFuZV9zdGF0ZS0+YmFzZS5waXhlbF9ibGVuZF9tb2RlKSB7 Cj4+ICsJY2FzZSBEUk1fTU9ERV9CTEVORF9QSVhFTF9OT05FOgo+PiArCQlyZXR1cm4gUExBTkVf Q1RMX0FMUEhBX0RJU0FCTEU7Cj4+ICsJY2FzZSBEUk1fTU9ERV9CTEVORF9QUkVNVUxUSToKPj4g IAkJcmV0dXJuIFBMQU5FX0NUTF9BTFBIQV9TV19QUkVNVUxUSVBMWTsKPj4gKwljYXNlIERSTV9N T0RFX0JMRU5EX0NPVkVSQUdFOgo+PiArCQlyZXR1cm4gUExBTkVfQ1RMX0FMUEhBX0hXX1BSRU1V TFRJUExZOwo+PiAgCWRlZmF1bHQ6Cj4+IC0JCXJldHVybiBQTEFORV9DVExfQUxQSEFfRElTQUJM RTsKPj4gKwkJTUlTU0lOR19DQVNFKHBsYW5lX3N0YXRlLT5iYXNlLnBpeGVsX2JsZW5kX21vZGUp Owo+PiArCQlyZXR1cm4gMDsKPiBNYXliZSBqdXN0IGFkZCB0aGUgTUlTU0lOR19DQVNFIGxpbmUg YmVmb3JlIHRoZSBjdXJyZW50IHJldHVybj8gIFRoZQo+IG1hY3JvIHN0aWxsIGV4cGFuZHMgdG8g MCwgc28gbGVhdmluZyB0aGF0IG1ha2VzIGl0IHNsaWdodGx5IG1vcmUgY2xlYXIKPiB3aGF0IHRo ZSBkZWZhdWx0IGZhbGxiYWNrIGlzLiAgU2FtZSBmb3IgdGhlIGdsa18gZnVuY3Rpb24gYmVsb3cu Ck1ha2VzIHNlbnNlLCB3aWxsIGNoYW5nZSB0aGF0IGluIHYzLiA6KQo+PiAgCX0KPj4gIH0KPj4g IAo+PiAtc3RhdGljIHUzMiBnbGtfcGxhbmVfY29sb3JfY3RsX2FscGhhKHVpbnQzMl90IHBpeGVs X2Zvcm1hdCkKPj4gK3N0YXRpYyB1MzIgZ2xrX3BsYW5lX2NvbG9yX2N0bF9hbHBoYShjb25zdCBz dHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+PiAgewo+PiAtCXN3aXRjaCAo cGl4ZWxfZm9ybWF0KSB7Cj4+IC0JY2FzZSBEUk1fRk9STUFUX0FCR1I4ODg4Ogo+PiAtCWNhc2Ug RFJNX0ZPUk1BVF9BUkdCODg4ODoKPj4gKwlpZiAoIXBsYW5lX3N0YXRlLT5iYXNlLmZiLT5mb3Jt YXQtPmhhc19hbHBoYSkKPj4gKwkJcmV0dXJuIFBMQU5FX0NPTE9SX0FMUEhBX0RJU0FCTEU7Cj4+ ICsKPj4gKwlzd2l0Y2ggKHBsYW5lX3N0YXRlLT5iYXNlLnBpeGVsX2JsZW5kX21vZGUpIHsKPj4g KwljYXNlIERSTV9NT0RFX0JMRU5EX1BJWEVMX05PTkU6Cj4+ICsJCXJldHVybiBQTEFORV9DT0xP Ul9BTFBIQV9ESVNBQkxFOwo+PiArCWNhc2UgRFJNX01PREVfQkxFTkRfUFJFTVVMVEk6Cj4+ICAJ CXJldHVybiBQTEFORV9DT0xPUl9BTFBIQV9TV19QUkVNVUxUSVBMWTsKPj4gKwljYXNlIERSTV9N T0RFX0JMRU5EX0NPVkVSQUdFOgo+PiArCQlyZXR1cm4gUExBTkVfQ09MT1JfQUxQSEFfSFdfUFJF TVVMVElQTFk7Cj4+ICAJZGVmYXVsdDoKPj4gLQkJcmV0dXJuIFBMQU5FX0NPTE9SX0FMUEhBX0RJ U0FCTEU7Cj4+ICsJCU1JU1NJTkdfQ0FTRShwbGFuZV9zdGF0ZS0+YmFzZS5waXhlbF9ibGVuZF9t b2RlKTsKPj4gKwkJcmV0dXJuIDA7Cj4+ICAJfQo+PiAgfQo+PiAgCj4+IEBAIC0zNjExLDcgKzM2 MjYsNyBAQCB1MzIgc2tsX3BsYW5lX2N0bChjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZSwKPj4gIAlwbGFuZV9jdGwgPSBQTEFORV9DVExfRU5BQkxFOwo+PiAgCj4+ICAJ aWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCAxMCAmJiAhSVNfR0VNSU5JTEFLRShkZXZfcHJpdikp IHsKPj4gLQkJcGxhbmVfY3RsIHw9IHNrbF9wbGFuZV9jdGxfYWxwaGEoZmItPmZvcm1hdC0+Zm9y bWF0KTsKPj4gKwkJcGxhbmVfY3RsIHw9IHNrbF9wbGFuZV9jdGxfYWxwaGEocGxhbmVfc3RhdGUp Owo+PiAgCQlwbGFuZV9jdGwgfD0KPj4gIAkJCVBMQU5FX0NUTF9QSVBFX0dBTU1BX0VOQUJMRSB8 Cj4+ICAJCQlQTEFORV9DVExfUElQRV9DU0NfRU5BQkxFIHwKPj4gQEAgLTM2NTMsNyArMzY2OCw3 IEBAIHUzMiBnbGtfcGxhbmVfY29sb3JfY3RsKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpjcnRjX3N0YXRlLAo+PiAgCQlwbGFuZV9jb2xvcl9jdGwgfD0gUExBTkVfQ09MT1JfUElQRV9D U0NfRU5BQkxFOwo+PiAgCX0KPj4gIAlwbGFuZV9jb2xvcl9jdGwgfD0gUExBTkVfQ09MT1JfUExB TkVfR0FNTUFfRElTQUJMRTsKPj4gLQlwbGFuZV9jb2xvcl9jdGwgfD0gZ2xrX3BsYW5lX2NvbG9y X2N0bF9hbHBoYShmYi0+Zm9ybWF0LT5mb3JtYXQpOwo+PiArCXBsYW5lX2NvbG9yX2N0bCB8PSBn bGtfcGxhbmVfY29sb3JfY3RsX2FscGhhKHBsYW5lX3N0YXRlKTsKPj4gIAo+PiAgCWlmIChmYi0+ Zm9ybWF0LT5pc195dXYpIHsKPj4gIAkJaWYgKHBsYW5lX3N0YXRlLT5iYXNlLmNvbG9yX2VuY29k aW5nID09IERSTV9DT0xPUl9ZQ0JDUl9CVDcwOSkKPj4gQEAgLTEzNzkyLDcgKzEzODA3LDcgQEAg aW50ZWxfcHJpbWFyeV9wbGFuZV9jcmVhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LCBlbnVtIHBpcGUgcGlwZSkKPj4gIAkJCQkJCSAgIERSTV9NT0RFX1JPVEFURV8wLAo+PiAg CQkJCQkJICAgc3VwcG9ydGVkX3JvdGF0aW9ucyk7Cj4+ICAKPj4gLQlpZiAoSU5URUxfR0VOKGRl dl9wcml2KSA+PSA5KQo+PiArCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpIHsKPj4gIAkJ ZHJtX3BsYW5lX2NyZWF0ZV9jb2xvcl9wcm9wZXJ0aWVzKCZwcmltYXJ5LT5iYXNlLAo+PiAgCQkJ CQkJICBCSVQoRFJNX0NPTE9SX1lDQkNSX0JUNjAxKSB8Cj4+ICAJCQkJCQkgIEJJVChEUk1fQ09M T1JfWUNCQ1JfQlQ3MDkpLAo+PiBAQCAtMTM4MDEsNiArMTM4MTYsMTMgQEAgaW50ZWxfcHJpbWFy eV9wbGFuZV9jcmVhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBlbnVtIHBp cGUgcGlwZSkKPj4gIAkJCQkJCSAgRFJNX0NPTE9SX1lDQkNSX0JUNzA5LAo+PiAgCQkJCQkJICBE Uk1fQ09MT1JfWUNCQ1JfTElNSVRFRF9SQU5HRSk7Cj4+ICAKPj4gKwkJZHJtX3BsYW5lX2NyZWF0 ZV9hbHBoYV9wcm9wZXJ0eSgmcHJpbWFyeS0+YmFzZSk7Cj4+ICsJCWRybV9wbGFuZV9jcmVhdGVf YmxlbmRfbW9kZV9wcm9wZXJ0eSgmcHJpbWFyeS0+YmFzZSwKPj4gKwkJCQkJCSAgICAgQklUKERS TV9NT0RFX0JMRU5EX1BJWEVMX05PTkUpIHwKPj4gKwkJCQkJCSAgICAgQklUKERSTV9NT0RFX0JM RU5EX1BSRU1VTFRJKSB8Cj4+ICsJCQkJCQkgICAgIEJJVChEUk1fTU9ERV9CTEVORF9DT1ZFUkFH RSkpOwo+PiArCX0KPj4gKwo+PiAgCWRybV9wbGFuZV9oZWxwZXJfYWRkKCZwcmltYXJ5LT5iYXNl LCAmaW50ZWxfcGxhbmVfaGVscGVyX2Z1bmNzKTsKPj4gIAo+PiAgCXJldHVybiBwcmltYXJ5Owo+ PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJjLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9mYmMuYwo+PiBpbmRleCA3NWE2YmJmM2FkYTEuLjQyYTQ5ZmUz NGJhMyAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJjLmMKPj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJjLmMKPj4gQEAgLTY3NCw2ICs2NzQs OCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9mYmNfdXBkYXRlX3N0YXRlX2NhY2hlKHN0cnVjdCBpbnRl bF9jcnRjICpjcnRjLAo+PiAgCWNhY2hlLT5wbGFuZS5hZGp1c3RlZF95ID0gcGxhbmVfc3RhdGUt Pm1haW4ueTsKPj4gIAljYWNoZS0+cGxhbmUueSA9IHBsYW5lX3N0YXRlLT5iYXNlLnNyYy55MSA+ PiAxNjsKPj4gIAo+PiArCWNhY2hlLT5wbGFuZS5waXhlbF9ibGVuZF9tb2RlID0gcGxhbmVfc3Rh dGUtPmJhc2UucGl4ZWxfYmxlbmRfbW9kZTsKPj4gKwo+PiAgCWlmICghY2FjaGUtPnBsYW5lLnZp c2libGUpCj4+ICAJCXJldHVybjsKPj4gIAo+PiBAQCAtNzQ4LDYgKzc1MCwxMiBAQCBzdGF0aWMg Ym9vbCBpbnRlbF9mYmNfY2FuX2FjdGl2YXRlKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQo+PiAg CQlyZXR1cm4gZmFsc2U7Cj4+ICAJfQo+PiAgCj4+ICsJaWYgKGNhY2hlLT5wbGFuZS5waXhlbF9i bGVuZF9tb2RlICE9IERSTV9NT0RFX0JMRU5EX1BJWEVMX05PTkUgJiYKPj4gKwkgICAgY2FjaGUt PmZiLmZvcm1hdC0+aGFzX2FscGhhKSB7Cj4+ICsJCWZiYy0+bm9fZmJjX3JlYXNvbiA9ICJwZXIt cGl4ZWwgYWxwaGEgYmxlbmRpbmcgaXMgaW5jb21wYXRpYmxlIHdpdGggRkJDIjsKPj4gKwkJcmV0 dXJuIGZhbHNlOwo+PiArCX0KPiBUaGlzIHNvdW5kcyByZWFzb25hYmxlLCBidXQgaXMgdGhlcmUg c29tZXdoZXJlIGluIHRoZSBiLXNwZWMgdGhhdAo+IGV4cGxhaW5zIHRoaXMgZXhwbGljaXRseT8g IFRoZSBGQkNfQ1RMIGRlc2NyaXB0aW9uIGxpc3RzIHBpeGVsIGZvcm1hdAo+IHJlc3RyaWN0aW9u cyAoMTYgb3IgMzIgYml0IDg4OCBSR0IpLCBidXQgbm90aGluZyBleHBsaWNpdGx5IGFib3V0Cj4g YmxlbmRpbmcgb3IgYWxwaGEuClBMQU5FX0NPTE9SX0NUTCBhbHBoYSBtb2RlLCBhbmQgUExBTkVf Q1RMJ3MgYWxwaGEgbW9kZSBib3RoIG1lbnRpb24KaW4gYnNwZWMgdGhhdCBwZXIgcGl4ZWwgYWxw aGEgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBGQkMuIDopCgp+TWFhcnRlbgo+Cj4gTWF0dAo+Cj4+ ICsKPj4gIAkvKiBXYUZiY0V4Y2VlZENkQ2xvY2tUaHJlc2hvbGQ6aHN3LGJkdyAqLwo+PiAgCWlm ICgoSVNfSEFTV0VMTChkZXZfcHJpdikgfHwgSVNfQlJPQURXRUxMKGRldl9wcml2KSkgJiYKPj4g IAkgICAgY2FjaGUtPmNydGMuaHN3X2Jkd19waXhlbF9yYXRlID49IGRldl9wcml2LT5jZGNsay5o dy5jZGNsayAqIDk1IC8gMTAwKSB7Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9zcHJpdGUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCj4+ IGluZGV4IGY3MDI2ZTg4N2ZhOS4uNDYzOWVmOWJkZTk0IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9zcHJpdGUuYwo+PiBAQCAtMjUyLDYgKzI1Miw3IEBAIHNrbF91cGRhdGVfcGxhbmUo c3RydWN0IGludGVsX3BsYW5lICpwbGFuZSwKPj4gIAl1aW50MzJfdCBzcmNfdyA9IGRybV9yZWN0 X3dpZHRoKCZwbGFuZV9zdGF0ZS0+YmFzZS5zcmMpID4+IDE2Owo+PiAgCXVpbnQzMl90IHNyY19o ID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFuZV9zdGF0ZS0+YmFzZS5zcmMpID4+IDE2Owo+PiAgCXVu c2lnbmVkIGxvbmcgaXJxZmxhZ3M7Cj4+ICsJdTMyIGtleW1zayA9IDAsIGtleW1heCA9IDA7Cj4+ ICAKPj4gIAkvKiBTaXplcyBhcmUgMCBiYXNlZCAqLwo+PiAgCXNyY193LS07Cj4+IEBAIC0yNjcs MTAgKzI2OCwxOSBAQCBza2xfdXBkYXRlX3BsYW5lKHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUs Cj4+ICAKPj4gIAlpZiAoa2V5LT5mbGFncykgewo+PiAgCQlJOTE1X1dSSVRFX0ZXKFBMQU5FX0tF WVZBTChwaXBlLCBwbGFuZV9pZCksIGtleS0+bWluX3ZhbHVlKTsKPj4gLQkJSTkxNV9XUklURV9G VyhQTEFORV9LRVlNQVgocGlwZSwgcGxhbmVfaWQpLCBrZXktPm1heF92YWx1ZSk7Cj4+IC0JCUk5 MTVfV1JJVEVfRlcoUExBTkVfS0VZTVNLKHBpcGUsIHBsYW5lX2lkKSwga2V5LT5jaGFubmVsX21h c2spOwo+PiArCj4+ICsJCWtleW1heCB8PSBrZXktPm1heF92YWx1ZSAmIDB4ZmZmZmZmOwo+PiAr CQlrZXltc2sgfD0ga2V5LT5jaGFubmVsX21hc2sgJiAweDNmZmZmZmY7Cj4+ICAJfQo+PiAgCj4+ ICsJa2V5bWF4IHw9IChwbGFuZV9zdGF0ZS0+YmFzZS5hbHBoYSA+PiA4KSA8PCBQTEFORV9LRVlN QVhfQUxQSEFfU0hJRlQ7Cj4+ICsKPj4gKwlpZiAocGxhbmVfc3RhdGUtPmJhc2UuYWxwaGEgPCAw eGZmMDApCj4+ICsJCWtleW1zayB8PSBQTEFORV9LRVlNU0tfQUxQSEFfRU5BQkxFOwo+PiArCj4+ ICsJSTkxNV9XUklURV9GVyhQTEFORV9LRVlNQVgocGlwZSwgcGxhbmVfaWQpLCBrZXltYXgpOwo+ PiArCUk5MTVfV1JJVEVfRlcoUExBTkVfS0VZTVNLKHBpcGUsIHBsYW5lX2lkKSwga2V5bXNrKTsK Pj4gKwo+PiAgCUk5MTVfV1JJVEVfRlcoUExBTkVfT0ZGU0VUKHBpcGUsIHBsYW5lX2lkKSwgKHkg PDwgMTYpIHwgeCk7Cj4+ICAJSTkxNV9XUklURV9GVyhQTEFORV9TVFJJREUocGlwZSwgcGxhbmVf aWQpLCBzdHJpZGUpOwo+PiAgCUk5MTVfV1JJVEVfRlcoUExBTkVfU0laRShwaXBlLCBwbGFuZV9p ZCksIChzcmNfaCA8PCAxNikgfCBzcmNfdyk7Cj4+IEBAIC0xNjUwLDYgKzE2NjAsMTUgQEAgaW50 ZWxfc3ByaXRlX3BsYW5lX2NyZWF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs Cj4+ICAJCQkJCSAgRFJNX0NPTE9SX1lDQkNSX0JUNzA5LAo+PiAgCQkJCQkgIERSTV9DT0xPUl9Z Q0JDUl9MSU1JVEVEX1JBTkdFKTsKPj4gIAo+PiArCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49 IDkpIHsKPj4gKwkJZHJtX3BsYW5lX2NyZWF0ZV9hbHBoYV9wcm9wZXJ0eSgmaW50ZWxfcGxhbmUt PmJhc2UpOwo+PiArCj4+ICsJCWRybV9wbGFuZV9jcmVhdGVfYmxlbmRfbW9kZV9wcm9wZXJ0eSgm aW50ZWxfcGxhbmUtPmJhc2UsCj4+ICsJCQkJCQkgICAgIEJJVChEUk1fTU9ERV9CTEVORF9QSVhF TF9OT05FKSB8Cj4+ICsJCQkJCQkgICAgIEJJVChEUk1fTU9ERV9CTEVORF9QUkVNVUxUSSkgfAo+ PiArCQkJCQkJICAgICBCSVQoRFJNX01PREVfQkxFTkRfQ09WRVJBR0UpKTsKPj4gKwl9Cj4+ICsK Pj4gIAlkcm1fcGxhbmVfaGVscGVyX2FkZCgmaW50ZWxfcGxhbmUtPmJhc2UsICZpbnRlbF9wbGFu ZV9oZWxwZXJfZnVuY3MpOwo+PiAgCj4+ICAJcmV0dXJuIGludGVsX3BsYW5lOwo+PiAtLSAKPj4g Mi4xOC4wCj4+Cj4+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCj4+IGRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKPj4gZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNr dG9wLm9yZwo+PiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2RyaS1kZXZlbAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdm eAo=