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 17:29:56 +0300 Message-ID: <20180604142956.GD23723@intel.com> References: <1527856871-3007-2-git-send-email-lowry.li@arm.com> <20180604135013.14234-1-maarten.lankhorst@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: <20180604135013.14234-1-maarten.lankhorst@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 T24gTW9uLCBKdW4gMDQsIDIwMTggYXQgMDM6NTA6MTNQTSArMDIwMCwgTWFhcnRlbiBMYW5raG9y c3Qgd3JvdGU6Cj4gU2lnbmVkLW9mZi1ieTogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFu a2hvcnN0QGxpbnV4LmludGVsLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9yZWcuaCAgICAgIHwgIDIgKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5 LmMgfCA2NyArKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rydi5oICAgICB8ICAyICsKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZmJjLmMgICAgIHwgIDQgKysKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMg IHwgMjQgKysrKysrKysrLQo+ICA1IGZpbGVzIGNoYW5nZWQsIDc5IGluc2VydGlvbnMoKyksIDIw IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3JlZy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+IGluZGV4IDMyNzgyOWNj NjFmOC4uMjNmMGNiMGZhZDBlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfcmVnLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gQEAgLTY0 MjUsOCArNjQyNSwxMCBAQCBlbnVtIHsKPiAgI2RlZmluZSBfUExBTkVfS0VZVkFMXzJfQQkJCTB4 NzAyOTQKPiAgI2RlZmluZSBfUExBTkVfS0VZTVNLXzFfQQkJCTB4NzAxOTgKPiAgI2RlZmluZSBf UExBTkVfS0VZTVNLXzJfQQkJCTB4NzAyOTgKPiArI2RlZmluZSAgUExBTkVfS0VZTVNLX0FMUEhB X0VOQUJMRQkJKDEgPDwgMzEpCj4gICNkZWZpbmUgX1BMQU5FX0tFWU1BWF8xX0EJCQkweDcwMWEw Cj4gICNkZWZpbmUgX1BMQU5FX0tFWU1BWF8yX0EJCQkweDcwMmEwCj4gKyNkZWZpbmUgIFBMQU5F X0tFWU1BWF9BTFBIQV9TSElGVAkJMjQKClBMQU5FX0tFWU1BWF9BTFBIQSh4KQoKPiAgI2RlZmlu ZSBfUExBTkVfQVVYX0RJU1RfMV9BCQkJMHg3MDFjMAo+ICAjZGVmaW5lIF9QTEFORV9BVVhfRElT VF8yX0EJCQkweDcwMmMwCj4gICNkZWZpbmUgX1BMQU5FX0FVWF9PRkZTRVRfMV9BCQkJMHg3MDFj NAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBpbmRleCBkNDgyNTZmODlhNTAu LjhkZGZmMDljMzExMCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k aXNwbGF5LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBA QCAtMzE3MCw2ICszMTcwLDIxIEBAIGludCBza2xfY2hlY2tfcGxhbmVfc3VyZmFjZShjb25zdCBz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCQlyZXR1cm4gLUVJTlZBTDsK PiAgCX0KPiAgCj4gKwkvKiBIVyBvbmx5IGhhcyA4IGJpdHMgcGl4ZWwgcHJlY2lzaW9uLCBkaXNh YmxlIHBsYW5lIGlmIGludmlzaWJsZSAqLwo+ICsJaWYgKCEocGxhbmVfc3RhdGUtPmJhc2UuYWxw aGEgPj4gOCkpIHsKPiArCQlwbGFuZV9zdGF0ZS0+YmFzZS52aXNpYmxlID0gZmFsc2U7Cj4gKwkJ cmV0dXJuIDA7Cj4gKwl9Cj4gKwo+ICsJaWYgKHBsYW5lX3N0YXRlLT5iYXNlLmFscGhhIDwgMHhm ZjAwKSB7Cj4gKwkJcGxhbmVfc3RhdGUtPmZsYWdzIHw9IFBMQU5FX0FMUEhBX0VOQUJMRUQ7Cj4g Kwo+ICsJCS8qIEZCQyBjYW5ub3QgYmUgZW5hYmxlZCB3aXRoIHBlciBwaXhlbCBhbHBoYSAqLwo+ ICsJCWlmIChwbGFuZV9zdGF0ZS0+YmFzZS5waXhlbF9ibGVuZF9tb2RlICE9IERSTV9NT0RFX0JM RU5EX1BJWEVMX05PTkUgJiYKPiArCQkgICAgZmItPmZvcm1hdC0+aGFzX2FscGhhKQo+ICsJCQlw bGFuZV9zdGF0ZS0+ZmxhZ3MgfD0gUExBTkVfQUxQSEFfTk9fRkJDOwoKV2h5IGlzIHRoaXMgZmJj IHBlci1waXhlbCBhbHBoYSBjaGVjayBpbnNpZGUgdGhlIGNvbnN0YW50IGFscGhhIGlmIGJsb2Nr PwoKQWxzbyBJJ20gbm90IGNvbnZpbmNlZCBieSB0aGVzZSBwbGFuZSBzdGF0ZSBmbGFncy4gVGhl eSdyZSBub3QKY29uc2lzdGVudCB3aXRoIGhvdyB3ZSBkbyBldmVyeXRoaW5nIGVsc2UsIHNvIEkg d291bGQgZHJvcCB0aGVtLgoKCj4gKwl9Cj4gKwo+ICAJaWYgKCFwbGFuZV9zdGF0ZS0+YmFzZS52 aXNpYmxlKQo+ICAJCXJldHVybiAwOwo+ICAKPiBAQCAtMzQ5NiwzMCArMzUxMSwzOSBAQCBzdGF0 aWMgdTMyIHNrbF9wbGFuZV9jdGxfZm9ybWF0KHVpbnQzMl90IHBpeGVsX2Zvcm1hdCkKPiAgCXJl dHVybiAwOwo+ICB9Cj4gIAo+IC0vKgo+IC0gKiBYWFg6IEZvciBBUkJHL0FCR1IgZm9ybWF0cyB3 ZSBkZWZhdWx0IHRvIGV4cGVjdGluZyBzY2Fub3V0IGJ1ZmZlcnMKPiAtICogdG8gYmUgYWxyZWFk eSBwcmUtbXVsdGlwbGllZC4gV2UgbmVlZCB0byBhZGQgYSBrbm9iIChvciBhIGRpZmZlcmVudAo+ IC0gKiBEUk1fRk9STUFUKSBmb3IgdXNlci1zcGFjZSB0byBjb25maWd1cmUgdGhhdC4KPiAtICov Cj4gLXN0YXRpYyB1MzIgc2tsX3BsYW5lX2N0bF9hbHBoYSh1aW50MzJfdCBwaXhlbF9mb3JtYXQp Cj4gK3N0YXRpYyB1MzIgc2tsX3BsYW5lX2N0bF9hbHBoYShjb25zdCBzdHJ1Y3QgaW50ZWxfcGxh bmVfc3RhdGUgKnBsYW5lX3N0YXRlKQo+ICB7Cj4gLQlzd2l0Y2ggKHBpeGVsX2Zvcm1hdCkgewo+ IC0JY2FzZSBEUk1fRk9STUFUX0FCR1I4ODg4Ogo+IC0JY2FzZSBEUk1fRk9STUFUX0FSR0I4ODg4 Ogo+ICsJaWYgKCFwbGFuZV9zdGF0ZS0+YmFzZS5mYi0+Zm9ybWF0LT5oYXNfYWxwaGEpCj4gKwkJ cmV0dXJuIFBMQU5FX0NUTF9BTFBIQV9ESVNBQkxFOwo+ICsKPiArCXN3aXRjaCAocGxhbmVfc3Rh dGUtPmJhc2UucGl4ZWxfYmxlbmRfbW9kZSkgewo+ICsJY2FzZSBEUk1fTU9ERV9CTEVORF9QSVhF TF9OT05FOgo+ICsJCXJldHVybiBQTEFORV9DVExfQUxQSEFfRElTQUJMRTsKPiArCWNhc2UgRFJN X01PREVfQkxFTkRfUFJFTVVMVEk6Cj4gIAkJcmV0dXJuIFBMQU5FX0NUTF9BTFBIQV9TV19QUkVN VUxUSVBMWTsKPiArCWNhc2UgRFJNX01PREVfQkxFTkRfQ09WRVJBR0U6Cj4gKwkJcmV0dXJuIFBM QU5FX0NUTF9BTFBIQV9IV19QUkVNVUxUSVBMWTsKPiAgCWRlZmF1bHQ6Cj4gLQkJcmV0dXJuIFBM QU5FX0NUTF9BTFBIQV9ESVNBQkxFOwo+ICsJCU1JU1NJTkdfQ0FTRShwbGFuZV9zdGF0ZS0+YmFz ZS5waXhlbF9ibGVuZF9tb2RlKTsKPiArCQlyZXR1cm4gMDsKPiAgCX0KPiAgfQo+ICAKPiAtc3Rh dGljIHUzMiBnbGtfcGxhbmVfY29sb3JfY3RsX2FscGhhKHVpbnQzMl90IHBpeGVsX2Zvcm1hdCkK PiArc3RhdGljIHUzMiBnbGtfcGxhbmVfY29sb3JfY3RsX2FscGhhKGNvbnN0IHN0cnVjdCBpbnRl bF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIHsKPiAtCXN3aXRjaCAocGl4ZWxfZm9ybWF0 KSB7Cj4gLQljYXNlIERSTV9GT1JNQVRfQUJHUjg4ODg6Cj4gLQljYXNlIERSTV9GT1JNQVRfQVJH Qjg4ODg6Cj4gKwlpZiAoIXBsYW5lX3N0YXRlLT5iYXNlLmZiLT5mb3JtYXQtPmhhc19hbHBoYSkK PiArCQlyZXR1cm4gUExBTkVfQ09MT1JfQUxQSEFfRElTQUJMRTsKPiArCj4gKwlzd2l0Y2ggKHBs YW5lX3N0YXRlLT5iYXNlLnBpeGVsX2JsZW5kX21vZGUpIHsKPiArCWNhc2UgRFJNX01PREVfQkxF TkRfUElYRUxfTk9ORToKPiArCQlyZXR1cm4gUExBTkVfQ09MT1JfQUxQSEFfRElTQUJMRTsKPiAr CWNhc2UgRFJNX01PREVfQkxFTkRfUFJFTVVMVEk6Cj4gIAkJcmV0dXJuIFBMQU5FX0NPTE9SX0FM UEhBX1NXX1BSRU1VTFRJUExZOwo+ICsJY2FzZSBEUk1fTU9ERV9CTEVORF9DT1ZFUkFHRToKPiAr CQlyZXR1cm4gUExBTkVfQ09MT1JfQUxQSEFfSFdfUFJFTVVMVElQTFk7Cj4gIAlkZWZhdWx0Ogo+ IC0JCXJldHVybiBQTEFORV9DT0xPUl9BTFBIQV9ESVNBQkxFOwo+ICsJCU1JU1NJTkdfQ0FTRShw bGFuZV9zdGF0ZS0+YmFzZS5waXhlbF9ibGVuZF9tb2RlKTsKPiArCQlyZXR1cm4gMDsKPiAgCX0K PiAgfQo+ICAKPiBAQCAtMzU5NSw3ICszNjE5LDcgQEAgdTMyIHNrbF9wbGFuZV9jdGwoY29uc3Qg c3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gIAlwbGFuZV9jdGwgPSBQTEFO RV9DVExfRU5BQkxFOwo+ICAKPiAgCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgMTAgJiYgIUlT X0dFTUlOSUxBS0UoZGV2X3ByaXYpKSB7Cj4gLQkJcGxhbmVfY3RsIHw9IHNrbF9wbGFuZV9jdGxf YWxwaGEoZmItPmZvcm1hdC0+Zm9ybWF0KTsKPiArCQlwbGFuZV9jdGwgfD0gc2tsX3BsYW5lX2N0 bF9hbHBoYShwbGFuZV9zdGF0ZSk7Cj4gIAkJcGxhbmVfY3RsIHw9Cj4gIAkJCVBMQU5FX0NUTF9Q SVBFX0dBTU1BX0VOQUJMRSB8Cj4gIAkJCVBMQU5FX0NUTF9QSVBFX0NTQ19FTkFCTEUgfAo+IEBA IC0zNjM3LDcgKzM2NjEsNyBAQCB1MzIgZ2xrX3BsYW5lX2NvbG9yX2N0bChjb25zdCBzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCQlwbGFuZV9jb2xvcl9jdGwgfD0gUExB TkVfQ09MT1JfUElQRV9DU0NfRU5BQkxFOwo+ICAJfQo+ICAJcGxhbmVfY29sb3JfY3RsIHw9IFBM QU5FX0NPTE9SX1BMQU5FX0dBTU1BX0RJU0FCTEU7Cj4gLQlwbGFuZV9jb2xvcl9jdGwgfD0gZ2xr X3BsYW5lX2NvbG9yX2N0bF9hbHBoYShmYi0+Zm9ybWF0LT5mb3JtYXQpOwo+ICsJcGxhbmVfY29s b3JfY3RsIHw9IGdsa19wbGFuZV9jb2xvcl9jdGxfYWxwaGEocGxhbmVfc3RhdGUpOwo+ICAKPiAg CWlmIChpbnRlbF9mb3JtYXRfaXNfeXV2KGZiLT5mb3JtYXQtPmZvcm1hdCkpIHsKPiAgCQlpZiAo ZmItPmZvcm1hdC0+Zm9ybWF0ID09IERSTV9GT1JNQVRfTlYxMikgewo+IEBAIC0xMzYyMyw3ICsx MzY0Nyw3IEBAIGludGVsX3ByaW1hcnlfcGxhbmVfY3JlYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwgZW51bSBwaXBlIHBpcGUpCj4gIAkJCQkJCSAgIERSTV9NT0RFX1JPVEFU RV8wLAo+ICAJCQkJCQkgICBzdXBwb3J0ZWRfcm90YXRpb25zKTsKPiAgCj4gLQlpZiAoSU5URUxf R0VOKGRldl9wcml2KSA+PSA5KQo+ICsJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkgewo+ ICAJCWRybV9wbGFuZV9jcmVhdGVfY29sb3JfcHJvcGVydGllcygmcHJpbWFyeS0+YmFzZSwKPiAg CQkJCQkJICBCSVQoRFJNX0NPTE9SX1lDQkNSX0JUNjAxKSB8Cj4gIAkJCQkJCSAgQklUKERSTV9D T0xPUl9ZQ0JDUl9CVDcwOSksCj4gQEAgLTEzNjMyLDYgKzEzNjU2LDEzIEBAIGludGVsX3ByaW1h cnlfcGxhbmVfY3JlYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgZW51bSBw aXBlIHBpcGUpCj4gIAkJCQkJCSAgRFJNX0NPTE9SX1lDQkNSX0JUNzA5LAo+ICAJCQkJCQkgIERS TV9DT0xPUl9ZQ0JDUl9MSU1JVEVEX1JBTkdFKTsKPiAgCj4gKwkJZHJtX3BsYW5lX2NyZWF0ZV9h bHBoYV9wcm9wZXJ0eSgmcHJpbWFyeS0+YmFzZSk7Cj4gKwkJZHJtX3BsYW5lX2NyZWF0ZV9ibGVu ZF9tb2RlX3Byb3BlcnR5KCZwcmltYXJ5LT5iYXNlLAo+ICsJCQkJCQkgICAgIEJJVChEUk1fTU9E RV9CTEVORF9QSVhFTF9OT05FKSB8Cj4gKwkJCQkJCSAgICAgQklUKERSTV9NT0RFX0JMRU5EX1BS RU1VTFRJKSB8Cj4gKwkJCQkJCSAgICAgQklUKERSTV9NT0RFX0JMRU5EX0NPVkVSQUdFKSk7Cj4g Kwl9Cj4gKwo+ICAJZHJtX3BsYW5lX2hlbHBlcl9hZGQoJnByaW1hcnktPmJhc2UsICZpbnRlbF9w bGFuZV9oZWxwZXJfZnVuY3MpOwo+ICAKPiAgCXJldHVybiBwcmltYXJ5Owo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rydi5oCj4gaW5kZXggMmRjMDFiZTBjN2NjLi42NzVkYmU5MjdhMDYgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IEBAIC01MDAsNiArNTAwLDggQEAgc3RydWN0IGludGVs X3BsYW5lX3N0YXRlIHsKPiAgCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwo+ICAJdW5zaWduZWQgbG9u ZyBmbGFnczsKPiAgI2RlZmluZSBQTEFORV9IQVNfRkVOQ0UgQklUKDApCj4gKyNkZWZpbmUgUExB TkVfQUxQSEFfRU5BQkxFRCBCSVQoMSkKPiArI2RlZmluZSBQTEFORV9BTFBIQV9OT19GQkMgQklU KDIpCj4gIAo+ICAJc3RydWN0IHsKPiAgCQl1MzIgb2Zmc2V0Owo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9mYmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2ZiYy5jCj4gaW5kZXggMWYyZjQxZTY3ZGNkLi4yMGEyZGJhNzhjYWQgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZmJjLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9mYmMuYwo+IEBAIC03MzIsNiArNzMyLDEwIEBAIHN0YXRpYyBib29sIGludGVs X2ZiY19jYW5fYWN0aXZhdGUoc3RydWN0IGludGVsX2NydGMgKmNydGMpCj4gIAkJZmJjLT5ub19m YmNfcmVhc29uID0gImZyYW1lYnVmZmVyIG5vdCB0aWxlZCBvciBmZW5jZWQiOwo+ICAJCXJldHVy biBmYWxzZTsKPiAgCX0KPiArCWlmIChjYWNoZS0+ZmxhZ3MgJiBQTEFORV9BTFBIQV9OT19GQkMp IHsKPiArCQlmYmMtPm5vX2ZiY19yZWFzb24gPSAicGVyIHBpeGVsIGFscGhhIGJsZW5kaW5nIGVu YWJsZWQiOwo+ICsJCXJldHVybiBmYWxzZTsKPiArCX0KPiAgCWlmIChJTlRFTF9HRU4oZGV2X3By aXYpIDw9IDQgJiYgIUlTX0c0WChkZXZfcHJpdikgJiYKPiAgCSAgICBjYWNoZS0+cGxhbmUucm90 YXRpb24gIT0gRFJNX01PREVfUk9UQVRFXzApIHsKPiAgCQlmYmMtPm5vX2ZiY19yZWFzb24gPSAi cm90YXRpb24gdW5zdXBwb3J0ZWQiOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9zcHJpdGUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCj4g aW5kZXggMGIxYmQ1ZGU1MTkyLi40ZmNjN2NlMDlhOWMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9zcHJpdGUuYwo+IEBAIC0yNTQsNiArMjU0LDcgQEAgc2tsX3VwZGF0ZV9wbGFuZShzdHJ1 Y3QgaW50ZWxfcGxhbmUgKnBsYW5lLAo+ICAJdWludDMyX3QgeSA9IHBsYW5lX3N0YXRlLT5tYWlu Lnk7Cj4gIAl1aW50MzJfdCBzcmNfdyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+YmFz ZS5zcmMpID4+IDE2Owo+ICAJdWludDMyX3Qgc3JjX2ggPSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5l X3N0YXRlLT5iYXNlLnNyYykgPj4gMTY7Cj4gKwl1MzIga2V5bXNrID0gMCwga2V5bWF4ID0gMDsK PiAgCj4gIAkvKiBTaXplcyBhcmUgMCBiYXNlZCAqLwo+ICAJc3JjX3ctLTsKPiBAQCAtMjY3LDEw ICsyNjgsMjAgQEAgc2tsX3VwZGF0ZV9wbGFuZShzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lLAo+ ICAKPiAgCWlmIChrZXktPmZsYWdzKSB7Cj4gIAkJSTkxNV9XUklURV9GVyhQTEFORV9LRVlWQUwo cGlwZSwgcGxhbmVfaWQpLCBrZXktPm1pbl92YWx1ZSk7Cj4gLQkJSTkxNV9XUklURV9GVyhQTEFO RV9LRVlNQVgocGlwZSwgcGxhbmVfaWQpLCBrZXktPm1heF92YWx1ZSk7Cj4gLQkJSTkxNV9XUklU RV9GVyhQTEFORV9LRVlNU0socGlwZSwgcGxhbmVfaWQpLCBrZXktPmNoYW5uZWxfbWFzayk7Cj4g Kwo+ICsJCWtleW1heCA9IGtleS0+bWF4X3ZhbHVlICYgMHhmZmZmZmY7Cj4gKwkJa2V5bXNrIHw9 IGtleS0+Y2hhbm5lbF9tYXNrICYgMHgzZmZmZmZmOwoKV2hhdCdzIHVwIHdpdGggfD0gdnMuID0g aGVyZT8KCj4gIAl9Cj4gIAo+ICsJa2V5bWF4IHw9IChwbGFuZV9zdGF0ZS0+YmFzZS5hbHBoYSA+ PiA4KSA8PCBQTEFORV9LRVlNQVhfQUxQSEFfU0hJRlQ7Cj4gKwo+ICsJaWYgKHBsYW5lX3N0YXRl LT5mbGFncyAmIFBMQU5FX0FMUEhBX0VOQUJMRUQgfHwKPiArCSAgICBwbGFuZV9zdGF0ZS0+YmFz ZS5mYi0+Zm9ybWF0LT5oYXNfYWxwaGEpCj4gKwkJa2V5bXNrIHw9IFBMQU5FX0tFWU1TS19BTFBI QV9FTkFCTEU7CgpXaHkgYXJlIHdlIGNoZWNraW5nIHRoZSBmb3JtYXQgaGFzX2FscGhhIGhlcmU/ IElzbid0IHRoaXMgYWJvdXQgdGhlCmNvbnN0YW50IGFscGhhPwoKPiArCj4gKwlJOTE1X1dSSVRF X0ZXKFBMQU5FX0tFWU1BWChwaXBlLCBwbGFuZV9pZCksIGtleW1heCk7Cj4gKwlJOTE1X1dSSVRF X0ZXKFBMQU5FX0tFWU1TSyhwaXBlLCBwbGFuZV9pZCksIGtleW1zayk7Cj4gKwo+ICAJSTkxNV9X UklURV9GVyhQTEFORV9PRkZTRVQocGlwZSwgcGxhbmVfaWQpLCAoeSA8PCAxNikgfCB4KTsKPiAg CUk5MTVfV1JJVEVfRlcoUExBTkVfU1RSSURFKHBpcGUsIHBsYW5lX2lkKSwgc3RyaWRlKTsKPiAg CUk5MTVfV1JJVEVfRlcoUExBTkVfU0laRShwaXBlLCBwbGFuZV9pZCksIChzcmNfaCA8PCAxNikg fCBzcmNfdyk7Cj4gQEAgLTE1MjUsNiArMTUzNiwxNSBAQCBpbnRlbF9zcHJpdGVfcGxhbmVfY3Jl YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCQkJCQkgIERSTV9DT0xP Ul9ZQ0JDUl9CVDcwOSwKPiAgCQkJCQkgIERSTV9DT0xPUl9ZQ0JDUl9MSU1JVEVEX1JBTkdFKTsK PiAgCj4gKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KSB7Cj4gKwkJZHJtX3BsYW5lX2Ny ZWF0ZV9hbHBoYV9wcm9wZXJ0eSgmaW50ZWxfcGxhbmUtPmJhc2UpOwo+ICsKPiArCQlkcm1fcGxh bmVfY3JlYXRlX2JsZW5kX21vZGVfcHJvcGVydHkoJmludGVsX3BsYW5lLT5iYXNlLAo+ICsJCQkJ CQkgICAgIEJJVChEUk1fTU9ERV9CTEVORF9QSVhFTF9OT05FKSB8Cj4gKwkJCQkJCSAgICAgQklU KERSTV9NT0RFX0JMRU5EX1BSRU1VTFRJKSB8Cj4gKwkJCQkJCSAgICAgQklUKERSTV9NT0RFX0JM RU5EX0NPVkVSQUdFKSk7Cj4gKwl9Cj4gKwo+ICAJZHJtX3BsYW5lX2hlbHBlcl9hZGQoJmludGVs X3BsYW5lLT5iYXNlLCAmaW50ZWxfcGxhbmVfaGVscGVyX2Z1bmNzKTsKPiAgCj4gIAlyZXR1cm4g aW50ZWxfcGxhbmU7Cj4gLS0gCj4gMi4xNy4xCj4gCj4gX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KPiBpZ3QtZGV2IG1haWxpbmcgbGlzdAo+IGlndC1kZXZA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9pZ3QtZGV2CgotLSAKVmlsbGUgU3lyasOkbMOkCkludGVsCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5n IGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=