From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Jindal, Sonika" Subject: Re: [PATCH 2/2] drm/i915/skl: Support for 90/270 rotation Date: Mon, 13 Apr 2015 09:32:20 +0530 Message-ID: <552B3FCC.3050401@intel.com> References: <1428656849-5004-1-git-send-email-sonika.jindal@intel.com> <1428656849-5004-2-git-send-email-sonika.jindal@intel.com> <20150410141717.GL6092@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTP id DD6F46E01A for ; Sun, 12 Apr 2015 21:02:44 -0700 (PDT) In-Reply-To: <20150410141717.GL6092@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Daniel Vetter Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org CgpPbiA0LzEwLzIwMTUgNzo0NyBQTSwgRGFuaWVsIFZldHRlciB3cm90ZToKPiBPbiBGcmksIEFw ciAxMCwgMjAxNSBhdCAwMjozNzoyOVBNICswNTMwLCBTb25pa2EgSmluZGFsIHdyb3RlOgo+PiB2 MjogTW92aW5nIGNyZWF0aW9uIG9mIHByb3BlcnR5IGluIGEgZnVuY3Rpb24sIGNoZWNraW5nIGZv ciA5MC8yNzAKPj4gcm90YXRpb24gc2ltdWx0YW5lb3VzbHkgKENocmlzKQo+PiBMZXR0aW5nIHBy aW1hcnkgcGxhbmUgdG8gYmUgcG9zaXRpb25lZAo+PiB2MzogQWRkaW5nIGlmL2Vsc2UgZm9yIDkw LzI3MCBhbmQgcmVzdCBwYXJhbXMgcHJvZ3JhbW1pbmcsIGFkZGluZyBjaGVjayBmb3IKPj4gcGl4 ZWxfZm9ybWF0LCBzb21lIGNsZWFudXAgKHJldmlldyBjb21tZW50cykKPj4gdjQ6IEFkZGluZyBy aWdodCBwaXhlbF9mb3JtYXRzLCB1c2luZyBzcmNfKiBwYXJhbXMgaW5zdGVhZCBvZiBjcnRjXyog Zm9yIG9mZnNldAo+PiBhbmQgc2l6ZSBwcm9ncmFtbWluZyAoVmlsbGUpCj4+IHY1OiBSZWJhc2Vk IG9uIC1uaWdodGx5IGFuZCBUdnJ0a28ncyBzZXJpZXMgZm9yIGd0dCByZW1hcHBpbmcuCj4+IHY2 OiBSZWJhc2VkIG9uIC1uaWdodGx5IChUdnJ0a28ncyBzZXJpZXMgbWVyZ2VkKQo+PiB2NzogTW92 aW5nIHBpeGVsX2Zvcm1hdCBjaGVjayB0byBpbnRlbF9hdG9taWNfcGxhbmVfY2hlY2sgKE1hdHQp Cj4+Cj4+IFNpZ25lZC1vZmYtYnk6IFNvbmlrYSBKaW5kYWwgPHNvbmlrYS5qaW5kYWxAaW50ZWwu Y29tPgo+PiBSZXZpZXdlZC1ieTogTWF0dCBSb3BlciA8bWF0dGhldy5kLnJvcGVyQGludGVsLmNv bT4KPgo+IFBhdGNoZXMgYXJlIG1pc3NpbmcgdGhlIFRlc3RjYXNlOiB0YWcsIHBsZWFzZSBhZGQg dGhhdC4gQWxzbywgYXJlIGFsbCB0aGUKPiBpZ3QgY29tbWl0dGVkIG9yIG5vdCB5ZXQ/IFB1bGxl ZCB0aGVzZSB0d28gaW4gbWVhbndoaWxlLgo+IC1EYW5pZWwKVGhlIGttc19yb3RhdGlvbl9jcmMg aXMgdXBkYXRlZCBmb3IgOTAvMjcwIHRlc3RzIGFuZCBpcyBwb3N0ZWQgb24gdGhlIAptYWlsaW5n IGxpc3QuIE5vdCBzdXJlIGlmIGFuIHItYiBpcyBhIG11c3QgZm9yIHRlc3RzIHRvbz8KLVNvbmlr YQo+Cj4+IC0tLQo+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmggICAgICAgICAg IHwgICAgMiArCj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljX3BsYW5lLmMg fCAgIDI0ICsrKysrKysrCj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5j ICAgICAgfCAgIDg4ICsrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tCj4+ICAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgICAgICAgfCAgICA2ICsrCj4+ICAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMgICAgICAgfCAgIDUyICsrKysrKysrKysrKy0tLS0t Cj4+ICAgNSBmaWxlcyBjaGFuZ2VkLCAxMzEgaW5zZXJ0aW9ucygrKSwgNDEgZGVsZXRpb25zKC0p Cj4+Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+PiBpbmRleCBiNTIyZWI2Li41NjRiYmQ1IDEw MDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPj4gQEAgLTQ4NTQsNyArNDg1NCw5IEBAIGVu dW0gc2tsX2Rpc3BfcG93ZXJfd2VsbHMgewo+PiAgICNkZWZpbmUgICBQTEFORV9DVExfQUxQSEFf SFdfUFJFTVVMVElQTFkJKCAgMyA8PCA0KQo+PiAgICNkZWZpbmUgICBQTEFORV9DVExfUk9UQVRF X01BU0sJCQkweDMKPj4gICAjZGVmaW5lICAgUExBTkVfQ1RMX1JPVEFURV8wCQkJMHgwCj4+ICsj ZGVmaW5lICAgUExBTkVfQ1RMX1JPVEFURV85MAkJCTB4MQo+PiAgICNkZWZpbmUgICBQTEFORV9D VExfUk9UQVRFXzE4MAkJCTB4Mgo+PiArI2RlZmluZSAgIFBMQU5FX0NUTF9ST1RBVEVfMjcwCQkJ MHgzCj4+ICAgI2RlZmluZSBfUExBTkVfU1RSSURFXzFfQQkJCTB4NzAxODgKPj4gICAjZGVmaW5l IF9QTEFORV9TVFJJREVfMl9BCQkJMHg3MDI4OAo+PiAgICNkZWZpbmUgX1BMQU5FX1NUUklERV8z X0EJCQkweDcwMzg4Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9h dG9taWNfcGxhbmUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pY19wbGFuZS5j Cj4+IGluZGV4IDk3NmI4OTEuLmEyN2VlOGMgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2F0b21pY19wbGFuZS5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2F0b21pY19wbGFuZS5jCj4+IEBAIC0xNjIsNiArMTYyLDMwIEBAIHN0YXRpYyBpbnQg aW50ZWxfcGxhbmVfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+PiAgIAkJ CSgxIDw8IGRybV9wbGFuZV9pbmRleChwbGFuZSkpOwo+PiAgIAl9Cj4+Cj4+ICsJaWYgKHN0YXRl LT5mYiAmJiBpbnRlbF9yb3RhdGlvbl85MF9vcl8yNzAoc3RhdGUtPnJvdGF0aW9uKSkgewo+PiAr CQlpZiAoIShzdGF0ZS0+ZmItPm1vZGlmaWVyWzBdID09IEk5MTVfRk9STUFUX01PRF9ZX1RJTEVE IHx8Cj4+ICsJCQlzdGF0ZS0+ZmItPm1vZGlmaWVyWzBdID09IEk5MTVfRk9STUFUX01PRF9ZZl9U SUxFRCkpIHsKPj4gKwkJCURSTV9ERUJVR19LTVMoIlkvWWYgdGlsaW5nIHJlcXVpcmVkIGZvciA5 MC8yNzAhXG4iKTsKPj4gKwkJCXJldHVybiAtRUlOVkFMOwo+PiArCQl9Cj4+ICsKPj4gKwkJLyoK Pj4gKwkJICogOTAvMjcwIGlzIG5vdCBhbGxvd2VkIHdpdGggUkdCNjQgMTY6MTY6MTY6MTYsCj4+ ICsJCSAqIFJHQiAxNi1iaXQgNTo2OjUsIGFuZCBJbmRleGVkIDgtYml0Lgo+PiArCQkgKiBUQkQ6 IEFkZCBSR0I2NCBjYXNlIG9uY2UgaXRzIGFkZGVkIGluIHN1cHBvcnRlZCBmb3JtYXQgbGlzdC4K Pj4gKwkJICovCj4+ICsJCXN3aXRjaCAoc3RhdGUtPmZiLT5waXhlbF9mb3JtYXQpIHsKPj4gKwkJ Y2FzZSBEUk1fRk9STUFUX0M4Ogo+PiArCQljYXNlIERSTV9GT1JNQVRfUkdCNTY1Ogo+PiArCQkJ RFJNX0RFQlVHX0tNUygiVW5zdXBwb3J0ZWQgcGl4ZWwgZm9ybWF0ICVzIGZvciA5MC8yNzAhXG4i LAo+PiArCQkJCQlkcm1fZ2V0X2Zvcm1hdF9uYW1lKHN0YXRlLT5mYi0+cGl4ZWxfZm9ybWF0KSk7 Cj4+ICsJCQlyZXR1cm4gLUVJTlZBTDsKPj4gKwo+PiArCQlkZWZhdWx0Ogo+PiArCQkJYnJlYWs7 Cj4+ICsJCX0KPj4gKwl9Cj4+ICsKPj4gICAJcmV0dXJuIGludGVsX3BsYW5lLT5jaGVja19wbGFu ZShwbGFuZSwgaW50ZWxfc3RhdGUpOwo+PiAgIH0KPj4KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rpc3BsYXkuYwo+PiBpbmRleCBmMGJiYzIyLi40ZGU1NDRjIDEwMDY0NAo+PiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZGlzcGxheS5jCj4+IEBAIC0yMzExLDEzICsyMzExLDYgQEAgaW50ZWxfZmls bF9mYl9nZ3R0X3ZpZXcoc3RydWN0IGk5MTVfZ2d0dF92aWV3ICp2aWV3LCBzdHJ1Y3QgZHJtX2Zy YW1lYnVmZmVyICpmYiwKPj4gICAJaW5mby0+cGl0Y2ggPSBmYi0+cGl0Y2hlc1swXTsKPj4gICAJ aW5mby0+ZmJfbW9kaWZpZXIgPSBmYi0+bW9kaWZpZXJbMF07Cj4+Cj4+IC0JaWYgKCEoaW5mby0+ ZmJfbW9kaWZpZXIgPT0gSTkxNV9GT1JNQVRfTU9EX1lfVElMRUQgfHwKPj4gLQkgICAgICBpbmZv LT5mYl9tb2RpZmllciA9PSBJOTE1X0ZPUk1BVF9NT0RfWWZfVElMRUQpKSB7Cj4+IC0JCURSTV9E RUJVR19LTVMoCj4+IC0JCQkgICAgICAiWSBvciBZZiB0aWxpbmcgaXMgbmVlZGVkIGZvciA5MC8y NzAgcm90YXRpb24hXG4iKTsKPj4gLQkJcmV0dXJuIC1FSU5WQUw7Cj4+IC0JfQo+PiAtCj4+ICAg CXJldHVybiAwOwo+PiAgIH0KPj4KPj4gQEAgLTI5MTksOCArMjkxMiwxMiBAQCBzdGF0aWMgdm9p ZCBza3lsYWtlX3VwZGF0ZV9wcmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPj4g ICAJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+ PiAgIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOwo+PiAgIAlpbnQgcGlwZSA9IGlu dGVsX2NydGMtPnBpcGU7Cj4+IC0JdTMyIHBsYW5lX2N0bCwgc3RyaWRlX2RpdjsKPj4gKwl1MzIg cGxhbmVfY3RsLCBzdHJpZGVfZGl2LCBzdHJpZGU7Cj4+ICsJdTMyIHRpbGVfaGVpZ2h0LCBwbGFu ZV9vZmZzZXQsIHBsYW5lX3NpemU7Cj4+ICsJdW5zaWduZWQgaW50IHJvdGF0aW9uOwo+PiArCWlu dCB4X29mZnNldCwgeV9vZmZzZXQ7Cj4+ICAgCXVuc2lnbmVkIGxvbmcgc3VyZl9hZGRyOwo+PiAr CXN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lOwo+Pgo+PiAgIAlpZiAoIWludGVsX2NydGMtPnByaW1h cnlfZW5hYmxlZCkgewo+PiAgIAkJSTkxNV9XUklURShQTEFORV9DVEwocGlwZSwgMCksIDApOwo+ PiBAQCAtMjk4MSwyMSArMjk3OCw1MSBAQCBzdGF0aWMgdm9pZCBza3lsYWtlX3VwZGF0ZV9wcmlt YXJ5X3BsYW5lKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPj4gICAJfQo+Pgo+PiAgIAlwbGFuZV9j dGwgfD0gUExBTkVfQ1RMX1BMQU5FX0dBTU1BX0RJU0FCTEU7Cj4+IC0JaWYgKGNydGMtPnByaW1h cnktPnN0YXRlLT5yb3RhdGlvbiA9PSBCSVQoRFJNX1JPVEFURV8xODApKQo+PiArCj4+ICsJcGxh bmUgPSBjcnRjLT5wcmltYXJ5Owo+PiArCXJvdGF0aW9uID0gcGxhbmUtPnN0YXRlLT5yb3RhdGlv bjsKPj4gKwlzd2l0Y2ggKHJvdGF0aW9uKSB7Cj4+ICsJY2FzZSBCSVQoRFJNX1JPVEFURV85MCk6 Cj4+ICsJCXBsYW5lX2N0bCB8PSBQTEFORV9DVExfUk9UQVRFXzkwOwo+PiArCQlicmVhazsKPj4g Kwo+PiArCWNhc2UgQklUKERSTV9ST1RBVEVfMTgwKToKPj4gICAJCXBsYW5lX2N0bCB8PSBQTEFO RV9DVExfUk9UQVRFXzE4MDsKPj4gKwkJYnJlYWs7Cj4+ICsKPj4gKwljYXNlIEJJVChEUk1fUk9U QVRFXzI3MCk6Cj4+ICsJCXBsYW5lX2N0bCB8PSBQTEFORV9DVExfUk9UQVRFXzI3MDsKPj4gKwkJ YnJlYWs7Cj4+ICsJfQo+Pgo+PiAgIAlvYmogPSBpbnRlbF9mYl9vYmooZmIpOwo+PiAgIAlzdHJp ZGVfZGl2ID0gaW50ZWxfZmJfc3RyaWRlX2FsaWdubWVudChkZXYsIGZiLT5tb2RpZmllclswXSwK Pj4gICAJCQkJCSAgICAgICBmYi0+cGl4ZWxfZm9ybWF0KTsKPj4gLQlzdXJmX2FkZHIgPSBpbnRl bF9wbGFuZV9vYmpfb2Zmc2V0KHRvX2ludGVsX3BsYW5lKGNydGMtPnByaW1hcnkpLCBvYmopOwo+ PiArCXN1cmZfYWRkciA9IGludGVsX3BsYW5lX29ial9vZmZzZXQodG9faW50ZWxfcGxhbmUocGxh bmUpLCBvYmopOwo+PiArCj4+ICsJaWYgKGludGVsX3JvdGF0aW9uXzkwX29yXzI3MChyb3RhdGlv bikpIHsKPj4gKwkJLyogc3RyaWRlID0gU3VyZmFjZSBoZWlnaHQgaW4gdGlsZXMgKi8KPj4gKwkJ dGlsZV9oZWlnaHQgPSBpbnRlbF90aWxlX2hlaWdodChkZXYsIGZiLT5iaXRzX3Blcl9waXhlbCwK Pj4gKwkJCQkJCWZiLT5tb2RpZmllclswXSk7Cj4+ICsJCXN0cmlkZSA9IERJVl9ST1VORF9VUChm Yi0+aGVpZ2h0LCB0aWxlX2hlaWdodCk7Cj4+ICsJCXhfb2Zmc2V0ID0gc3RyaWRlICogdGlsZV9o ZWlnaHQgLSB5IC0gKHBsYW5lLT5zdGF0ZS0+c3JjX2ggPj4gMTYpOwo+PiArCQl5X29mZnNldCA9 IHg7Cj4+ICsJCXBsYW5lX3NpemUgPSAoKHBsYW5lLT5zdGF0ZS0+c3JjX3cgPj4gMTYpIC0gMSkg PDwgMTYgfAo+PiArCQkJCQkoKHBsYW5lLT5zdGF0ZS0+c3JjX2ggPj4gMTYpIC0gMSk7Cj4+ICsJ fSBlbHNlIHsKPj4gKwkJc3RyaWRlID0gZmItPnBpdGNoZXNbMF0gLyBzdHJpZGVfZGl2Owo+PiAr CQl4X29mZnNldCA9IHg7Cj4+ICsJCXlfb2Zmc2V0ID0geTsKPj4gKwkJcGxhbmVfc2l6ZSA9ICgo cGxhbmUtPnN0YXRlLT5zcmNfaCA+PiAxNikgLSAxKSA8PCAxNiB8Cj4+ICsJCQkoKHBsYW5lLT5z dGF0ZS0+c3JjX3cgPj4gMTYpIC0gMSk7Cj4+ICsJfQo+PiArCXBsYW5lX29mZnNldCA9IHlfb2Zm c2V0IDw8IDE2IHwgeF9vZmZzZXQ7Cj4+Cj4+ICAgCUk5MTVfV1JJVEUoUExBTkVfQ1RMKHBpcGUs IDApLCBwbGFuZV9jdGwpOwo+PiAgIAlJOTE1X1dSSVRFKFBMQU5FX1BPUyhwaXBlLCAwKSwgMCk7 Cj4+IC0JSTkxNV9XUklURShQTEFORV9PRkZTRVQocGlwZSwgMCksICh5IDw8IDE2KSB8IHgpOwo+ PiAtCUk5MTVfV1JJVEUoUExBTkVfU0laRShwaXBlLCAwKSwKPj4gLQkJICAgKGludGVsX2NydGMt PmNvbmZpZy0+cGlwZV9zcmNfaCAtIDEpIDw8IDE2IHwKPj4gLQkJICAgKGludGVsX2NydGMtPmNv bmZpZy0+cGlwZV9zcmNfdyAtIDEpKTsKPj4gLQlJOTE1X1dSSVRFKFBMQU5FX1NUUklERShwaXBl LCAwKSwgZmItPnBpdGNoZXNbMF0gLyBzdHJpZGVfZGl2KTsKPj4gKwlJOTE1X1dSSVRFKFBMQU5F X09GRlNFVChwaXBlLCAwKSwgcGxhbmVfb2Zmc2V0KTsKPj4gKwlJOTE1X1dSSVRFKFBMQU5FX1NJ WkUocGlwZSwgMCksIHBsYW5lX3NpemUpOwo+PiArCUk5MTVfV1JJVEUoUExBTkVfU1RSSURFKHBp cGUsIDApLCBzdHJpZGUpOwo+PiAgIAlJOTE1X1dSSVRFKFBMQU5FX1NVUkYocGlwZSwgMCksIHN1 cmZfYWRkcik7Cj4+Cj4+ICAgCVBPU1RJTkdfUkVBRChQTEFORV9TVVJGKHBpcGUsIDApKTsKPj4g QEAgLTEyNDA2LDIzICsxMjQzMywzMiBAQCBzdGF0aWMgc3RydWN0IGRybV9wbGFuZSAqaW50ZWxf cHJpbWFyeV9wbGFuZV9jcmVhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPj4gICAJCQkJIGlu dGVsX3ByaW1hcnlfZm9ybWF0cywgbnVtX2Zvcm1hdHMsCj4+ICAgCQkJCSBEUk1fUExBTkVfVFlQ RV9QUklNQVJZKTsKPj4KPj4gLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNCkgewo+PiAt CQlpZiAoIWRldi0+bW9kZV9jb25maWcucm90YXRpb25fcHJvcGVydHkpCj4+IC0JCQlkZXYtPm1v ZGVfY29uZmlnLnJvdGF0aW9uX3Byb3BlcnR5ID0KPj4gLQkJCQlkcm1fbW9kZV9jcmVhdGVfcm90 YXRpb25fcHJvcGVydHkoZGV2LAo+PiAtCQkJCQkJCUJJVChEUk1fUk9UQVRFXzApIHwKPj4gLQkJ CQkJCQlCSVQoRFJNX1JPVEFURV8xODApKTsKPj4gLQkJaWYgKGRldi0+bW9kZV9jb25maWcucm90 YXRpb25fcHJvcGVydHkpCj4+IC0JCQlkcm1fb2JqZWN0X2F0dGFjaF9wcm9wZXJ0eSgmcHJpbWFy eS0+YmFzZS5iYXNlLAo+PiAtCQkJCWRldi0+bW9kZV9jb25maWcucm90YXRpb25fcHJvcGVydHks Cj4+IC0JCQkJc3RhdGUtPmJhc2Uucm90YXRpb24pOwo+PiAtCX0KPj4gKwlpZiAoSU5URUxfSU5G TyhkZXYpLT5nZW4gPj0gNCkKPj4gKwkJaW50ZWxfY3JlYXRlX3JvdGF0aW9uX3Byb3BlcnR5KGRl diwgcHJpbWFyeSk7Cj4+Cj4+ICAgCWRybV9wbGFuZV9oZWxwZXJfYWRkKCZwcmltYXJ5LT5iYXNl LCAmaW50ZWxfcGxhbmVfaGVscGVyX2Z1bmNzKTsKPj4KPj4gICAJcmV0dXJuICZwcmltYXJ5LT5i YXNlOwo+PiAgIH0KPj4KPj4gK3ZvaWQgaW50ZWxfY3JlYXRlX3JvdGF0aW9uX3Byb3BlcnR5KHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUpCj4+ICt7Cj4+ ICsJaWYgKCFkZXYtPm1vZGVfY29uZmlnLnJvdGF0aW9uX3Byb3BlcnR5KSB7Cj4+ICsJCXVuc2ln bmVkIGxvbmcgZmxhZ3MgPSBCSVQoRFJNX1JPVEFURV8wKSB8Cj4+ICsJCQlCSVQoRFJNX1JPVEFU RV8xODApOwo+PiArCj4+ICsJCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA5KQo+PiArCQkJ ZmxhZ3MgfD0gQklUKERSTV9ST1RBVEVfOTApIHwgQklUKERSTV9ST1RBVEVfMjcwKTsKPj4gKwo+ PiArCQlkZXYtPm1vZGVfY29uZmlnLnJvdGF0aW9uX3Byb3BlcnR5ID0KPj4gKwkJCWRybV9tb2Rl X2NyZWF0ZV9yb3RhdGlvbl9wcm9wZXJ0eShkZXYsIGZsYWdzKTsKPj4gKwl9Cj4+ICsJaWYgKGRl di0+bW9kZV9jb25maWcucm90YXRpb25fcHJvcGVydHkpCj4+ICsJCWRybV9vYmplY3RfYXR0YWNo X3Byb3BlcnR5KCZwbGFuZS0+YmFzZS5iYXNlLAo+PiArCQkJCWRldi0+bW9kZV9jb25maWcucm90 YXRpb25fcHJvcGVydHksCj4+ICsJCQkJcGxhbmUtPmJhc2Uuc3RhdGUtPnJvdGF0aW9uKTsKPj4g K30KPj4gKwo+PiAgIHN0YXRpYyBpbnQKPj4gICBpbnRlbF9jaGVja19jdXJzb3JfcGxhbmUoc3Ry dWN0IGRybV9wbGFuZSAqcGxhbmUsCj4+ICAgCQkJIHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAq c3RhdGUpCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4+IGluZGV4IDgxMWExZGIuLmQzMjAy NWEgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4+IEBAIC05OTUsNiArOTk1LDEy IEBAIGludGVsX3JvdGF0aW9uXzkwX29yXzI3MCh1bnNpZ25lZCBpbnQgcm90YXRpb24pCj4+ICAg CXJldHVybiByb3RhdGlvbiAmIChCSVQoRFJNX1JPVEFURV85MCkgfCBCSVQoRFJNX1JPVEFURV8y NzApKTsKPj4gICB9Cj4+Cj4+ICt1bnNpZ25lZCBpbnQKPj4gK2ludGVsX3RpbGVfaGVpZ2h0KHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVpbnQzMl90IGJpdHNfcGVyX3BpeGVsLAo+PiArCQkgIHVp bnQ2NF90IGZiX21vZGlmaWVyKTsKPj4gK3ZvaWQgaW50ZWxfY3JlYXRlX3JvdGF0aW9uX3Byb3Bl cnR5KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4+ICsJCQkJCXN0cnVjdCBpbnRlbF9wbGFuZSAq cGxhbmUpOwo+PiArCj4+ICAgYm9vbCBpbnRlbF93bV9uZWVkX3VwZGF0ZShzdHJ1Y3QgZHJtX3Bs YW5lICpwbGFuZSwKPj4gICAJCQkgIHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnN0YXRlKTsKPj4K Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMKPj4gaW5kZXggZjQxZTg3Mi4uODNhZGM5 YiAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMKPj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMKPj4gQEAgLTE5MCwxMCAr MTkwLDEzIEBAIHNrbF91cGRhdGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqZHJtX3BsYW5lLCBz dHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4+ICAgCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpv YmogPSBpbnRlbF9mYl9vYmooZmIpOwo+PiAgIAljb25zdCBpbnQgcGlwZSA9IGludGVsX3BsYW5l LT5waXBlOwo+PiAgIAljb25zdCBpbnQgcGxhbmUgPSBpbnRlbF9wbGFuZS0+cGxhbmUgKyAxOwo+ PiAtCXUzMiBwbGFuZV9jdGwsIHN0cmlkZV9kaXY7Cj4+ICsJdTMyIHBsYW5lX2N0bCwgc3RyaWRl X2Rpdiwgc3RyaWRlOwo+PiAgIAlpbnQgcGl4ZWxfc2l6ZSA9IGRybV9mb3JtYXRfcGxhbmVfY3Bw KGZiLT5waXhlbF9mb3JtYXQsIDApOwo+PiAgIAljb25zdCBzdHJ1Y3QgZHJtX2ludGVsX3Nwcml0 ZV9jb2xvcmtleSAqa2V5ID0gJmludGVsX3BsYW5lLT5ja2V5Owo+PiAgIAl1bnNpZ25lZCBsb25n IHN1cmZfYWRkcjsKPj4gKwl1MzIgdGlsZV9oZWlnaHQsIHBsYW5lX29mZnNldCwgcGxhbmVfc2l6 ZTsKPj4gKwl1bnNpZ25lZCBpbnQgcm90YXRpb247Cj4+ICsJaW50IHhfb2Zmc2V0LCB5X29mZnNl dDsKPj4KPj4gICAJcGxhbmVfY3RsID0gUExBTkVfQ1RMX0VOQUJMRSB8Cj4+ICAgCQlQTEFORV9D VExfUElQRV9DU0NfRU5BQkxFOwo+PiBAQCAtMjU0LDggKzI1NywyMCBAQCBza2xfdXBkYXRlX3Bs YW5lKHN0cnVjdCBkcm1fcGxhbmUgKmRybV9wbGFuZSwgc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ PiAgIAkJTUlTU0lOR19DQVNFKGZiLT5tb2RpZmllclswXSk7Cj4+ICAgCX0KPj4KPj4gLQlpZiAo ZHJtX3BsYW5lLT5zdGF0ZS0+cm90YXRpb24gPT0gQklUKERSTV9ST1RBVEVfMTgwKSkKPj4gKwly b3RhdGlvbiA9IGRybV9wbGFuZS0+c3RhdGUtPnJvdGF0aW9uOwo+PiArCXN3aXRjaCAocm90YXRp b24pIHsKPj4gKwljYXNlIEJJVChEUk1fUk9UQVRFXzkwKToKPj4gKwkJcGxhbmVfY3RsIHw9IFBM QU5FX0NUTF9ST1RBVEVfOTA7Cj4+ICsJCWJyZWFrOwo+PiArCj4+ICsJY2FzZSBCSVQoRFJNX1JP VEFURV8xODApOgo+PiAgIAkJcGxhbmVfY3RsIHw9IFBMQU5FX0NUTF9ST1RBVEVfMTgwOwo+PiAr CQlicmVhazsKPj4gKwo+PiArCWNhc2UgQklUKERSTV9ST1RBVEVfMjcwKToKPj4gKwkJcGxhbmVf Y3RsIHw9IFBMQU5FX0NUTF9ST1RBVEVfMjcwOwo+PiArCQlicmVhazsKPj4gKwl9Cj4+Cj4+ICAg CWludGVsX3VwZGF0ZV9zcHJpdGVfd2F0ZXJtYXJrcyhkcm1fcGxhbmUsIGNydGMsIHNyY193LCBz cmNfaCwKPj4gICAJCQkJICAgICAgIHBpeGVsX3NpemUsIHRydWUsCj4+IEBAIC0yODMsMTAgKzI5 OCwyNiBAQCBza2xfdXBkYXRlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKmRybV9wbGFuZSwgc3Ry dWN0IGRybV9jcnRjICpjcnRjLAo+Pgo+PiAgIAlzdXJmX2FkZHIgPSBpbnRlbF9wbGFuZV9vYmpf b2Zmc2V0KGludGVsX3BsYW5lLCBvYmopOwo+Pgo+PiAtCUk5MTVfV1JJVEUoUExBTkVfT0ZGU0VU KHBpcGUsIHBsYW5lKSwgKHkgPDwgMTYpIHwgeCk7Cj4+IC0JSTkxNV9XUklURShQTEFORV9TVFJJ REUocGlwZSwgcGxhbmUpLCBmYi0+cGl0Y2hlc1swXSAvIHN0cmlkZV9kaXYpOwo+PiArCWlmIChp bnRlbF9yb3RhdGlvbl85MF9vcl8yNzAocm90YXRpb24pKSB7Cj4+ICsJCS8qIHN0cmlkZTogU3Vy ZmFjZSBoZWlnaHQgaW4gdGlsZXMgKi8KPj4gKwkJdGlsZV9oZWlnaHQgPSBpbnRlbF90aWxlX2hl aWdodChkZXYsIGZiLT5iaXRzX3Blcl9waXhlbCwKPj4gKwkJCQkJCQlmYi0+bW9kaWZpZXJbMF0p Owo+PiArCQlzdHJpZGUgPSBESVZfUk9VTkRfVVAoZmItPmhlaWdodCwgdGlsZV9oZWlnaHQpOwo+ PiArCQlwbGFuZV9zaXplID0gKHNyY193IDw8IDE2KSB8IHNyY19oOwo+PiArCQl4X29mZnNldCA9 IHN0cmlkZSAqIHRpbGVfaGVpZ2h0IC0geSAtIChzcmNfaCArIDEpOwo+PiArCQl5X29mZnNldCA9 IHg7Cj4+ICsJfSBlbHNlIHsKPj4gKwkJc3RyaWRlID0gZmItPnBpdGNoZXNbMF0gLyBzdHJpZGVf ZGl2Owo+PiArCQlwbGFuZV9zaXplID0gKHNyY19oIDw8IDE2KSB8IHNyY193Owo+PiArCQl4X29m ZnNldCA9IHg7Cj4+ICsJCXlfb2Zmc2V0ID0geTsKPj4gKwl9Cj4+ICsJcGxhbmVfb2Zmc2V0ID0g eV9vZmZzZXQgPDwgMTYgfCB4X29mZnNldDsKPj4gKwo+PiArCUk5MTVfV1JJVEUoUExBTkVfT0ZG U0VUKHBpcGUsIHBsYW5lKSwgcGxhbmVfb2Zmc2V0KTsKPj4gKwlJOTE1X1dSSVRFKFBMQU5FX1NU UklERShwaXBlLCBwbGFuZSksIHN0cmlkZSk7Cj4+ICAgCUk5MTVfV1JJVEUoUExBTkVfUE9TKHBp cGUsIHBsYW5lKSwgKGNydGNfeSA8PCAxNikgfCBjcnRjX3gpOwo+PiAtCUk5MTVfV1JJVEUoUExB TkVfU0laRShwaXBlLCBwbGFuZSksIChjcnRjX2ggPDwgMTYpIHwgY3J0Y193KTsKPj4gKwlJOTE1 X1dSSVRFKFBMQU5FX1NJWkUocGlwZSwgcGxhbmUpLCBwbGFuZV9zaXplKTsKPj4gICAJSTkxNV9X UklURShQTEFORV9DVEwocGlwZSwgcGxhbmUpLCBwbGFuZV9jdGwpOwo+PiAgIAlJOTE1X1dSSVRF KFBMQU5FX1NVUkYocGlwZSwgcGxhbmUpLCBzdXJmX2FkZHIpOwo+PiAgIAlQT1NUSU5HX1JFQUQo UExBTkVfU1VSRihwaXBlLCBwbGFuZSkpOwo+PiBAQCAtMTMxMCwxNiArMTM0MSw3IEBAIGludGVs X3BsYW5lX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgZW51bSBwaXBlIHBpcGUsIGludCBw bGFuZSkKPj4gICAJCWdvdG8gb3V0Owo+PiAgIAl9Cj4+Cj4+IC0JaWYgKCFkZXYtPm1vZGVfY29u ZmlnLnJvdGF0aW9uX3Byb3BlcnR5KQo+PiAtCQlkZXYtPm1vZGVfY29uZmlnLnJvdGF0aW9uX3By b3BlcnR5ID0KPj4gLQkJCWRybV9tb2RlX2NyZWF0ZV9yb3RhdGlvbl9wcm9wZXJ0eShkZXYsCj4+ IC0JCQkJCQkJICBCSVQoRFJNX1JPVEFURV8wKSB8Cj4+IC0JCQkJCQkJICBCSVQoRFJNX1JPVEFU RV8xODApKTsKPj4gLQo+PiAtCWlmIChkZXYtPm1vZGVfY29uZmlnLnJvdGF0aW9uX3Byb3BlcnR5 KQo+PiAtCQlkcm1fb2JqZWN0X2F0dGFjaF9wcm9wZXJ0eSgmaW50ZWxfcGxhbmUtPmJhc2UuYmFz ZSwKPj4gLQkJCQkJICAgZGV2LT5tb2RlX2NvbmZpZy5yb3RhdGlvbl9wcm9wZXJ0eSwKPj4gLQkJ CQkJICAgc3RhdGUtPmJhc2Uucm90YXRpb24pOwo+PiArCWludGVsX2NyZWF0ZV9yb3RhdGlvbl9w cm9wZXJ0eShkZXYsIGludGVsX3BsYW5lKTsKPj4KPj4gICAJZHJtX3BsYW5lX2hlbHBlcl9hZGQo JmludGVsX3BsYW5lLT5iYXNlLCAmaW50ZWxfcGxhbmVfaGVscGVyX2Z1bmNzKTsKPj4KPj4gLS0K Pj4gMS43LjEwLjQKPj4KPj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KPj4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+PiBJbnRlbC1nZnhAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCj4+IGh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9pbnRlbC1nZngKPgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVs LWdmeAo=