From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matt Roper Subject: Re: [PATCH 2/2] drm/i915/skl: Support for 90/270 rotation Date: Wed, 1 Apr 2015 11:22:08 -0700 Message-ID: <20150401182207.GI28205@intel.com> References: <1427704497-28344-1-git-send-email-sonika.jindal@intel.com> <1427704497-28344-2-git-send-email-sonika.jindal@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id A3A906E8F8 for ; Wed, 1 Apr 2015 11:22:08 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1427704497-28344-2-git-send-email-sonika.jindal@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Sonika Jindal Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCBNYXIgMzAsIDIwMTUgYXQgMDI6MDQ6NTdQTSArMDUzMCwgU29uaWthIEppbmRhbCB3 cm90ZToKPiB2MjogTW92aW5nIGNyZWF0aW9uIG9mIHByb3BlcnR5IGluIGEgZnVuY3Rpb24sIGNo ZWNraW5nIGZvciA5MC8yNzAKPiByb3RhdGlvbiBzaW11bHRhbmVvdXNseSAoQ2hyaXMpCj4gTGV0 dGluZyBwcmltYXJ5IHBsYW5lIHRvIGJlIHBvc2l0aW9uZWQKPiB2MzogQWRkaW5nIGlmL2Vsc2Ug Zm9yIDkwLzI3MCBhbmQgcmVzdCBwYXJhbXMgcHJvZ3JhbW1pbmcsIGFkZGluZyBjaGVjayBmb3IK PiBwaXhlbF9mb3JtYXQsIHNvbWUgY2xlYW51cCAocmV2aWV3IGNvbW1lbnRzKQo+IHY0OiBBZGRp bmcgcmlnaHQgcGl4ZWxfZm9ybWF0cywgdXNpbmcgc3JjXyogcGFyYW1zIGluc3RlYWQgb2YgY3J0 Y18qIGZvciBvZmZzZXQKPiBhbmQgc2l6ZSBwcm9ncmFtbWluZyAoVmlsbGUpCj4gdjU6IFJlYmFz ZWQgb24gLW5pZ2h0bHkgYW5kIFR2cnRrbydzIHNlcmllcyBmb3IgZ3R0IHJlbWFwcGluZy4KPiB2 NjogUmViYXNlZCBvbiAtbmlnaHRseSAoVHZydGtvJ3Mgc2VyaWVzIG1lcmdlZCkKPiAKPiBTaWdu ZWQtb2ZmLWJ5OiBTb25pa2EgSmluZGFsIDxzb25pa2EuamluZGFsQGludGVsLmNvbT4KPiAtLS0K PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCAgICAgIHwgICAgMiArCj4gIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyB8ICAxMDMgKysrKysrKysrKysrKysrKysr KysrKysrKysrLS0tLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgICAg fCAgICA2ICsrCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jICB8ICAgNTIg KysrKysrKysrKysrLS0tLS0KPiAgNCBmaWxlcyBjaGFuZ2VkLCAxMjkgaW5zZXJ0aW9ucygrKSwg MzQgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfcmVnLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gaW5kZXggYjUyMmVi Ni4uNTY0YmJkNSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5o Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+IEBAIC00ODU0LDcgKzQ4 NTQsOSBAQCBlbnVtIHNrbF9kaXNwX3Bvd2VyX3dlbGxzIHsKPiAgI2RlZmluZSAgIFBMQU5FX0NU TF9BTFBIQV9IV19QUkVNVUxUSVBMWQkoICAzIDw8IDQpCj4gICNkZWZpbmUgICBQTEFORV9DVExf Uk9UQVRFX01BU0sJCQkweDMKPiAgI2RlZmluZSAgIFBMQU5FX0NUTF9ST1RBVEVfMAkJCTB4MAo+ ICsjZGVmaW5lICAgUExBTkVfQ1RMX1JPVEFURV85MAkJCTB4MQo+ICAjZGVmaW5lICAgUExBTkVf Q1RMX1JPVEFURV8xODAJCQkweDIKPiArI2RlZmluZSAgIFBMQU5FX0NUTF9ST1RBVEVfMjcwCQkJ MHgzCj4gICNkZWZpbmUgX1BMQU5FX1NUUklERV8xX0EJCQkweDcwMTg4Cj4gICNkZWZpbmUgX1BM QU5FX1NUUklERV8yX0EJCQkweDcwMjg4Cj4gICNkZWZpbmUgX1BMQU5FX1NUUklERV8zX0EJCQkw eDcwMzg4Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXku YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IGluZGV4IGYwYmJjMjIu Ljg2ZWUwZjAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxh eS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gQEAgLTIz MTgsNiArMjMxOCwyOCBAQCBpbnRlbF9maWxsX2ZiX2dndHRfdmlldyhzdHJ1Y3QgaTkxNV9nZ3R0 X3ZpZXcgKnZpZXcsIHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLAo+ICAJCXJldHVybiAtRUlO VkFMOwo+ICAJfQo+ICAKPiArCXN3aXRjaCAoZmItPnBpeGVsX2Zvcm1hdCkgewo+ICsJY2FzZSBE Uk1fRk9STUFUX1hSR0I4ODg4Ogo+ICsJY2FzZSBEUk1fRk9STUFUX0FSR0I4ODg4Ogo+ICsJY2Fz ZSBEUk1fRk9STUFUX1hCR1I4ODg4Ogo+ICsJY2FzZSBEUk1fRk9STUFUX0FCR1I4ODg4Ogo+ICsJ Y2FzZSBEUk1fRk9STUFUX1hSR0IyMTAxMDEwOgo+ICsJY2FzZSBEUk1fRk9STUFUX0FSR0IyMTAx MDEwOgo+ICsJY2FzZSBEUk1fRk9STUFUX1hCR1IyMTAxMDEwOgo+ICsJY2FzZSBEUk1fRk9STUFU X0FCR1IyMTAxMDEwOgo+ICsJY2FzZSBEUk1fRk9STUFUX1lVWVY6Cj4gKwljYXNlIERSTV9GT1JN QVRfWVZZVToKPiArCWNhc2UgRFJNX0ZPUk1BVF9VWVZZOgo+ICsJY2FzZSBEUk1fRk9STUFUX1ZZ VVk6Cj4gKwljYXNlIERSTV9GT1JNQVRfTlYxMjoKPiArCQlicmVhazsKPiArCj4gKwlkZWZhdWx0 Ogo+ICsJCURSTV9ERUJVR19LTVMoIlVuc3VwcG9ydGVkIHBpeGVsIGZvcm1hdDolZCBmb3IgOTAv MjcwIHJvdGF0aW9uIVxuIiwKPiArCQkgICAgICBmYi0+cGl4ZWxfZm9ybWF0KTsKPiArCQlyZXR1 cm4gLUVJTlZBTDsKPiArCX0KClNob3VsZG4ndCB3ZSBiZSBtYXRjaGluZyBhZ2FpbnN0IHRoZSBs aXN0IG9mIGZvcm1hdHMgdGhlIHBsYW5lIHN1cHBvcnRzCih3aGljaCBtYXkgdmFyeSBieSBwbGF0 Zm9ybSwgb3IgYnkgc3BlY2lmaWMgcGxhbmUpIHJhdGhlciB0aGFuIHRoaXMKZ2VuZXJpYyBsaXN0 PyAgV2UgYWxyZWFkeSBzcGVjaWZpZWQgd2hhdCBmb3JtYXRzIHRoZSBwbGFuZSBjYW4gaGFuZGxl IGF0CnBsYW5lIGluaXQgdGltZSwgc28gaXQgc2VlbXMgbGlrZSB3aGF0IHlvdSdkIHJlYWxseSB3 YW50IGlzIGp1c3QgYSBjYWxsCnRvCgogICAgZHJtX3BsYW5lX2NoZWNrX3BpeGVsX2Zvcm1hdChw bGFuZV9zdGF0ZS0+cGxhbmUsIGZiLT5waXhlbF9mb3JtYXQpCgp0aGVuIGZvbGxvdyB0aGF0IHVw IHdpdGggZXhwbGljaXQgY2hlY2tzIHRvIGV4Y2x1ZGUgYW55IGZvcm1hdHMgdGhhdCB3ZQpjYW4g aGFuZGxlIGluIDAvMTgwLCBidXQgbm90IGluIDkwLzI3MC4KCkknZCBhbHNvIG1vdmUgdGhpcyBj aGVjayB0byBpbnRlbF9wbGFuZV9hdG9taWNfY2hlY2soKSwgc2luY2UgdGhlCidjaGVjaycgY29k ZSBwYXRoIGlzIHdoZXJlIEknZCB1c3VhbGx5IGdvIGxvb2tpbmcgZm9yIHRoZXNlIHR5cGVzIG9m CmNoZWNrczsgdGhlIGZ1bmN0aW9uIHlvdSd2ZSBnb3QgaXQgaW4gYXQgdGhlIG1vbWVudCBnZXRz IGNhbGxlZCBmcm9tIHRoZQoncHJlcGFyZScgc3RlcCB3aGljaCB3b3JrcyBhcyB3ZWxsLCBidXQg c2VlbXMgYSBiaXQgbGVzcyBvYnZpb3VzLgoKPiArCj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAKPiBA QCAtMjkxOSw4ICsyOTQxLDEyIEBAIHN0YXRpYyB2b2lkIHNreWxha2VfdXBkYXRlX3ByaW1hcnlf cGxhbmUoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAJc3RydWN0IGludGVsX2NydGMgKmludGVs X2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+ICAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QgKm9iajsKPiAgCWludCBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKPiAtCXUzMiBwbGFuZV9j dGwsIHN0cmlkZV9kaXY7Cj4gKwl1MzIgcGxhbmVfY3RsLCBzdHJpZGVfZGl2LCBzdHJpZGU7Cj4g Kwl1MzIgdGlsZV9oZWlnaHQsIHBsYW5lX29mZnNldCwgcGxhbmVfc2l6ZTsKPiArCXVuc2lnbmVk IGludCByb3RhdGlvbjsKPiArCWludCB4X29mZnNldCwgeV9vZmZzZXQ7Cj4gIAl1bnNpZ25lZCBs b25nIHN1cmZfYWRkcjsKPiArCXN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lOwo+ICAKPiAgCWlmICgh aW50ZWxfY3J0Yy0+cHJpbWFyeV9lbmFibGVkKSB7Cj4gIAkJSTkxNV9XUklURShQTEFORV9DVEwo cGlwZSwgMCksIDApOwo+IEBAIC0yOTgxLDIxICszMDA3LDUxIEBAIHN0YXRpYyB2b2lkIHNreWxh a2VfdXBkYXRlX3ByaW1hcnlfcGxhbmUoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAJfQo+ICAK PiAgCXBsYW5lX2N0bCB8PSBQTEFORV9DVExfUExBTkVfR0FNTUFfRElTQUJMRTsKPiAtCWlmIChj cnRjLT5wcmltYXJ5LT5zdGF0ZS0+cm90YXRpb24gPT0gQklUKERSTV9ST1RBVEVfMTgwKSkKPiAr Cj4gKwlwbGFuZSA9IGNydGMtPnByaW1hcnk7Cj4gKwlyb3RhdGlvbiA9IHBsYW5lLT5zdGF0ZS0+ cm90YXRpb247Cj4gKwlzd2l0Y2ggKHJvdGF0aW9uKSB7Cj4gKwljYXNlIEJJVChEUk1fUk9UQVRF XzkwKToKPiArCQlwbGFuZV9jdGwgfD0gUExBTkVfQ1RMX1JPVEFURV85MDsKPiArCQlicmVhazsK PiArCj4gKwljYXNlIEJJVChEUk1fUk9UQVRFXzE4MCk6Cj4gIAkJcGxhbmVfY3RsIHw9IFBMQU5F X0NUTF9ST1RBVEVfMTgwOwo+ICsJCWJyZWFrOwo+ICsKPiArCWNhc2UgQklUKERSTV9ST1RBVEVf MjcwKToKPiArCQlwbGFuZV9jdGwgfD0gUExBTkVfQ1RMX1JPVEFURV8yNzA7Cj4gKwkJYnJlYWs7 Cj4gKwl9Cj4gIAo+ICAJb2JqID0gaW50ZWxfZmJfb2JqKGZiKTsKPiAgCXN0cmlkZV9kaXYgPSBp bnRlbF9mYl9zdHJpZGVfYWxpZ25tZW50KGRldiwgZmItPm1vZGlmaWVyWzBdLAo+ICAJCQkJCSAg ICAgICBmYi0+cGl4ZWxfZm9ybWF0KTsKCk1pbm9yIG5pdDsgY2FuIHdlIG1vdmUgdGhpcyBkb3du IGluc2lkZSB0aGUgJ2Vsc2UnIGJyYW5jaCB0byBtYWtlIGl0CmFwcGFyZW50IGhvdyB0aGlzIHNl cnZlcyBhIHBhcmFsbGVsIHJvbGUgdG8gJ3RpbGVfaGVpZ2h0JyBmcm9tIHRoZSAnaWYnCmJyYW5j aC4KCgo+IC0Jc3VyZl9hZGRyID0gaW50ZWxfcGxhbmVfb2JqX29mZnNldCh0b19pbnRlbF9wbGFu ZShjcnRjLT5wcmltYXJ5KSwgb2JqKTsKPiArCXN1cmZfYWRkciA9IGludGVsX3BsYW5lX29ial9v ZmZzZXQodG9faW50ZWxfcGxhbmUocGxhbmUpLCBvYmopOwo+ICsKPiArCWlmIChyb3RhdGlvbiAm IChCSVQoRFJNX1JPVEFURV85MCkgfCBCSVQoRFJNX1JPVEFURV8yNzApKSkgewoKTWlnaHQgYXMg d2VsbCB1c2UgdGhlIGludGVsX3JvdGF0aW9uXzkwX29yXzI3MCgpIGZ1bmN0aW9uIHNpbmNlIHdl IGhhdmUKaXQuICBTYW1lIGNvbW1lbnQgZm9yIHRoZSBzcHJpdGUgcGF0aCBmYXJ0aGVyIGRvd24u Cgo+ICsJCS8qIHN0cmlkZSA9IFN1cmZhY2UgaGVpZ2h0IGluIHRpbGVzICovCj4gKwkJdGlsZV9o ZWlnaHQgPSBpbnRlbF90aWxlX2hlaWdodChkZXYsIGZiLT5iaXRzX3Blcl9waXhlbCwKPiArCQkJ CQkJZmItPm1vZGlmaWVyWzBdKTsKPiArCQlzdHJpZGUgPSBESVZfUk9VTkRfVVAoZmItPmhlaWdo dCwgdGlsZV9oZWlnaHQpOwo+ICsJCXhfb2Zmc2V0ID0gc3RyaWRlICogdGlsZV9oZWlnaHQgLSB5 IC0gKHBsYW5lLT5zdGF0ZS0+c3JjX2ggPj4gMTYpOwo+ICsJCXlfb2Zmc2V0ID0geDsKPiArCQlw bGFuZV9zaXplID0gKChwbGFuZS0+c3RhdGUtPnNyY193ID4+IDE2KSAtIDEpIDw8IDE2IHwKPiAr CQkJCQkoKHBsYW5lLT5zdGF0ZS0+c3JjX2ggPj4gMTYpIC0gMSk7Cj4gKwl9IGVsc2Ugewo+ICsJ CXN0cmlkZSA9IGZiLT5waXRjaGVzWzBdIC8gc3RyaWRlX2RpdjsKPiArCQl4X29mZnNldCA9IHg7 Cj4gKwkJeV9vZmZzZXQgPSB5Owo+ICsJCXBsYW5lX3NpemUgPSAoKHBsYW5lLT5zdGF0ZS0+c3Jj X2ggPj4gMTYpIC0gMSkgPDwgMTYgfAo+ICsJCQkoKHBsYW5lLT5zdGF0ZS0+c3JjX3cgPj4gMTYp IC0gMSk7Cj4gKwl9Cj4gKwlwbGFuZV9vZmZzZXQgPSB5X29mZnNldCA8PCAxNiB8IHhfb2Zmc2V0 Owo+ICAKPiAgCUk5MTVfV1JJVEUoUExBTkVfQ1RMKHBpcGUsIDApLCBwbGFuZV9jdGwpOwo+ICAJ STkxNV9XUklURShQTEFORV9QT1MocGlwZSwgMCksIDApOwo+IC0JSTkxNV9XUklURShQTEFORV9P RkZTRVQocGlwZSwgMCksICh5IDw8IDE2KSB8IHgpOwo+IC0JSTkxNV9XUklURShQTEFORV9TSVpF KHBpcGUsIDApLAo+IC0JCSAgIChpbnRlbF9jcnRjLT5jb25maWctPnBpcGVfc3JjX2ggLSAxKSA8 PCAxNiB8Cj4gLQkJICAgKGludGVsX2NydGMtPmNvbmZpZy0+cGlwZV9zcmNfdyAtIDEpKTsKPiAt CUk5MTVfV1JJVEUoUExBTkVfU1RSSURFKHBpcGUsIDApLCBmYi0+cGl0Y2hlc1swXSAvIHN0cmlk ZV9kaXYpOwo+ICsJSTkxNV9XUklURShQTEFORV9PRkZTRVQocGlwZSwgMCksIHBsYW5lX29mZnNl dCk7Cj4gKwlJOTE1X1dSSVRFKFBMQU5FX1NJWkUocGlwZSwgMCksIHBsYW5lX3NpemUpOwo+ICsJ STkxNV9XUklURShQTEFORV9TVFJJREUocGlwZSwgMCksIHN0cmlkZSk7Cj4gIAlJOTE1X1dSSVRF KFBMQU5FX1NVUkYocGlwZSwgMCksIHN1cmZfYWRkcik7Cj4gIAo+ICAJUE9TVElOR19SRUFEKFBM QU5FX1NVUkYocGlwZSwgMCkpOwo+IEBAIC0xMjQwNiwyMyArMTI0NjIsMzIgQEAgc3RhdGljIHN0 cnVjdCBkcm1fcGxhbmUgKmludGVsX3ByaW1hcnlfcGxhbmVfY3JlYXRlKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsCj4gIAkJCQkgaW50ZWxfcHJpbWFyeV9mb3JtYXRzLCBudW1fZm9ybWF0cywKPiAg CQkJCSBEUk1fUExBTkVfVFlQRV9QUklNQVJZKTsKPiAgCj4gLQlpZiAoSU5URUxfSU5GTyhkZXYp LT5nZW4gPj0gNCkgewo+IC0JCWlmICghZGV2LT5tb2RlX2NvbmZpZy5yb3RhdGlvbl9wcm9wZXJ0 eSkKPiAtCQkJZGV2LT5tb2RlX2NvbmZpZy5yb3RhdGlvbl9wcm9wZXJ0eSA9Cj4gLQkJCQlkcm1f bW9kZV9jcmVhdGVfcm90YXRpb25fcHJvcGVydHkoZGV2LAo+IC0JCQkJCQkJQklUKERSTV9ST1RB VEVfMCkgfAo+IC0JCQkJCQkJQklUKERSTV9ST1RBVEVfMTgwKSk7Cj4gLQkJaWYgKGRldi0+bW9k ZV9jb25maWcucm90YXRpb25fcHJvcGVydHkpCj4gLQkJCWRybV9vYmplY3RfYXR0YWNoX3Byb3Bl cnR5KCZwcmltYXJ5LT5iYXNlLmJhc2UsCj4gLQkJCQlkZXYtPm1vZGVfY29uZmlnLnJvdGF0aW9u X3Byb3BlcnR5LAo+IC0JCQkJc3RhdGUtPmJhc2Uucm90YXRpb24pOwo+IC0JfQo+ICsJaWYgKElO VEVMX0lORk8oZGV2KS0+Z2VuID49IDQpCj4gKwkJaW50ZWxfY3JlYXRlX3JvdGF0aW9uX3Byb3Bl cnR5KGRldiwgcHJpbWFyeSk7Cj4gIAo+ICAJZHJtX3BsYW5lX2hlbHBlcl9hZGQoJnByaW1hcnkt PmJhc2UsICZpbnRlbF9wbGFuZV9oZWxwZXJfZnVuY3MpOwo+ICAKPiAgCXJldHVybiAmcHJpbWFy eS0+YmFzZTsKPiAgfQo+ICAKPiArdm9pZCBpbnRlbF9jcmVhdGVfcm90YXRpb25fcHJvcGVydHko c3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSkKPiArewo+ ICsJaWYgKCFkZXYtPm1vZGVfY29uZmlnLnJvdGF0aW9uX3Byb3BlcnR5KSB7Cj4gKwkJdW5zaWdu ZWQgbG9uZyBmbGFncyA9IEJJVChEUk1fUk9UQVRFXzApIHwKPiArCQkJQklUKERSTV9ST1RBVEVf MTgwKTsKPiArCj4gKwkJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDkpCj4gKwkJCWZsYWdz IHw9IEJJVChEUk1fUk9UQVRFXzkwKSB8IEJJVChEUk1fUk9UQVRFXzI3MCk7Cj4gKwo+ICsJCWRl di0+bW9kZV9jb25maWcucm90YXRpb25fcHJvcGVydHkgPQo+ICsJCQlkcm1fbW9kZV9jcmVhdGVf cm90YXRpb25fcHJvcGVydHkoZGV2LCBmbGFncyk7Cj4gKwl9Cj4gKwlpZiAoZGV2LT5tb2RlX2Nv bmZpZy5yb3RhdGlvbl9wcm9wZXJ0eSkKPiArCQlkcm1fb2JqZWN0X2F0dGFjaF9wcm9wZXJ0eSgm cGxhbmUtPmJhc2UuYmFzZSwKPiArCQkJCWRldi0+bW9kZV9jb25maWcucm90YXRpb25fcHJvcGVy dHksCj4gKwkJCQlwbGFuZS0+YmFzZS5zdGF0ZS0+cm90YXRpb24pOwo+ICt9Cj4gKwo+ICBzdGF0 aWMgaW50Cj4gIGludGVsX2NoZWNrX2N1cnNvcl9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFu ZSwKPiAgCQkJIHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqc3RhdGUpCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHJ2LmgKPiBpbmRleCA4MTFhMWRiLi5kMzIwMjVhIDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHJ2LmgKPiBAQCAtOTk1LDYgKzk5NSwxMiBAQCBpbnRlbF9yb3RhdGlvbl85MF9vcl8y NzAodW5zaWduZWQgaW50IHJvdGF0aW9uKQo+ICAJcmV0dXJuIHJvdGF0aW9uICYgKEJJVChEUk1f Uk9UQVRFXzkwKSB8IEJJVChEUk1fUk9UQVRFXzI3MCkpOwo+ICB9Cj4gIAo+ICt1bnNpZ25lZCBp bnQKPiAraW50ZWxfdGlsZV9oZWlnaHQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdWludDMyX3Qg Yml0c19wZXJfcGl4ZWwsCj4gKwkJICB1aW50NjRfdCBmYl9tb2RpZmllcik7Cj4gK3ZvaWQgaW50 ZWxfY3JlYXRlX3JvdGF0aW9uX3Byb3BlcnR5KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gKwkJ CQkJc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSk7Cj4gKwo+ICBib29sIGludGVsX3dtX25lZWRf dXBkYXRlKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ICAJCQkgIHN0cnVjdCBkcm1fcGxhbmVf c3RhdGUgKnN0YXRlKTsKPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3Nwcml0ZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMKPiBpbmRl eCBmNDFlODcyLi42NWViMTQ3IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3Nwcml0ZS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMK PiBAQCAtMTkwLDEwICsxOTAsMTMgQEAgc2tsX3VwZGF0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5l ICpkcm1fcGxhbmUsIHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgCXN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0ICpvYmogPSBpbnRlbF9mYl9vYmooZmIpOwo+ICAJY29uc3QgaW50IHBpcGUgPSBp bnRlbF9wbGFuZS0+cGlwZTsKPiAgCWNvbnN0IGludCBwbGFuZSA9IGludGVsX3BsYW5lLT5wbGFu ZSArIDE7Cj4gLQl1MzIgcGxhbmVfY3RsLCBzdHJpZGVfZGl2Owo+ICsJdTMyIHBsYW5lX2N0bCwg c3RyaWRlX2Rpdiwgc3RyaWRlOwo+ICAJaW50IHBpeGVsX3NpemUgPSBkcm1fZm9ybWF0X3BsYW5l X2NwcChmYi0+cGl4ZWxfZm9ybWF0LCAwKTsKPiAgCWNvbnN0IHN0cnVjdCBkcm1faW50ZWxfc3By aXRlX2NvbG9ya2V5ICprZXkgPSAmaW50ZWxfcGxhbmUtPmNrZXk7Cj4gIAl1bnNpZ25lZCBsb25n IHN1cmZfYWRkcjsKPiArCXUzMiB0aWxlX2hlaWdodCwgcGxhbmVfb2Zmc2V0LCBwbGFuZV9zaXpl Owo+ICsJdW5zaWduZWQgaW50IHJvdGF0aW9uOwo+ICsJaW50IHhfb2Zmc2V0LCB5X29mZnNldDsK PiAgCj4gIAlwbGFuZV9jdGwgPSBQTEFORV9DVExfRU5BQkxFIHwKPiAgCQlQTEFORV9DVExfUElQ RV9DU0NfRU5BQkxFOwo+IEBAIC0yNTQsOCArMjU3LDIwIEBAIHNrbF91cGRhdGVfcGxhbmUoc3Ry dWN0IGRybV9wbGFuZSAqZHJtX3BsYW5lLCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gIAkJTUlT U0lOR19DQVNFKGZiLT5tb2RpZmllclswXSk7Cj4gIAl9Cj4gIAo+IC0JaWYgKGRybV9wbGFuZS0+ c3RhdGUtPnJvdGF0aW9uID09IEJJVChEUk1fUk9UQVRFXzE4MCkpCj4gKwlyb3RhdGlvbiA9IGRy bV9wbGFuZS0+c3RhdGUtPnJvdGF0aW9uOwo+ICsJc3dpdGNoIChyb3RhdGlvbikgewo+ICsJY2Fz ZSBCSVQoRFJNX1JPVEFURV85MCk6Cj4gKwkJcGxhbmVfY3RsIHw9IFBMQU5FX0NUTF9ST1RBVEVf OTA7Cj4gKwkJYnJlYWs7Cj4gKwo+ICsJY2FzZSBCSVQoRFJNX1JPVEFURV8xODApOgo+ICAJCXBs YW5lX2N0bCB8PSBQTEFORV9DVExfUk9UQVRFXzE4MDsKPiArCQlicmVhazsKPiArCj4gKwljYXNl IEJJVChEUk1fUk9UQVRFXzI3MCk6Cj4gKwkJcGxhbmVfY3RsIHw9IFBMQU5FX0NUTF9ST1RBVEVf MjcwOwo+ICsJCWJyZWFrOwo+ICsJfQo+ICAKPiAgCWludGVsX3VwZGF0ZV9zcHJpdGVfd2F0ZXJt YXJrcyhkcm1fcGxhbmUsIGNydGMsIHNyY193LCBzcmNfaCwKPiAgCQkJCSAgICAgICBwaXhlbF9z aXplLCB0cnVlLAo+IEBAIC0yODMsMTAgKzI5OCwyNiBAQCBza2xfdXBkYXRlX3BsYW5lKHN0cnVj dCBkcm1fcGxhbmUgKmRybV9wbGFuZSwgc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAKPiAgCXN1 cmZfYWRkciA9IGludGVsX3BsYW5lX29ial9vZmZzZXQoaW50ZWxfcGxhbmUsIG9iaik7Cj4gIAo+ IC0JSTkxNV9XUklURShQTEFORV9PRkZTRVQocGlwZSwgcGxhbmUpLCAoeSA8PCAxNikgfCB4KTsK PiAtCUk5MTVfV1JJVEUoUExBTkVfU1RSSURFKHBpcGUsIHBsYW5lKSwgZmItPnBpdGNoZXNbMF0g LyBzdHJpZGVfZGl2KTsKPiArCWlmIChyb3RhdGlvbiAmIChCSVQoRFJNX1JPVEFURV85MCkgfCBC SVQoRFJNX1JPVEFURV8yNzApKSkgewo+ICsJCS8qIHN0cmlkZTogU3VyZmFjZSBoZWlnaHQgaW4g dGlsZXMgKi8KPiArCQl0aWxlX2hlaWdodCA9IGludGVsX3RpbGVfaGVpZ2h0KGRldiwgZmItPmJp dHNfcGVyX3BpeGVsLAo+ICsJCQkJCQkJZmItPm1vZGlmaWVyWzBdKTsKPiArCQlzdHJpZGUgPSBE SVZfUk9VTkRfVVAoZmItPmhlaWdodCwgdGlsZV9oZWlnaHQpOwo+ICsJCXBsYW5lX3NpemUgPSAo c3JjX3cgPDwgMTYpIHwgc3JjX2g7Cj4gKwkJeF9vZmZzZXQgPSBzdHJpZGUgKiB0aWxlX2hlaWdo dCAtIHkgLSAoc3JjX2ggKyAxKTsKPiArCQl5X29mZnNldCA9IHg7Cj4gKwl9IGVsc2Ugewo+ICsJ CXN0cmlkZSA9IGZiLT5waXRjaGVzWzBdIC8gc3RyaWRlX2RpdjsKPiArCQlwbGFuZV9zaXplID0g KHNyY19oIDw8IDE2KSB8IHNyY193Owo+ICsJCXhfb2Zmc2V0ID0geDsKPiArCQl5X29mZnNldCA9 IHk7Cj4gKwl9Cj4gKwlwbGFuZV9vZmZzZXQgPSB5X29mZnNldCA8PCAxNiB8IHhfb2Zmc2V0Owo+ ICsKPiArCUk5MTVfV1JJVEUoUExBTkVfT0ZGU0VUKHBpcGUsIHBsYW5lKSwgcGxhbmVfb2Zmc2V0 KTsKPiArCUk5MTVfV1JJVEUoUExBTkVfU1RSSURFKHBpcGUsIHBsYW5lKSwgc3RyaWRlKTsKPiAg CUk5MTVfV1JJVEUoUExBTkVfUE9TKHBpcGUsIHBsYW5lKSwgKGNydGNfeSA8PCAxNikgfCBjcnRj X3gpOwo+IC0JSTkxNV9XUklURShQTEFORV9TSVpFKHBpcGUsIHBsYW5lKSwgKGNydGNfaCA8PCAx NikgfCBjcnRjX3cpOwo+ICsJSTkxNV9XUklURShQTEFORV9TSVpFKHBpcGUsIHBsYW5lKSwgcGxh bmVfc2l6ZSk7Cj4gIAlJOTE1X1dSSVRFKFBMQU5FX0NUTChwaXBlLCBwbGFuZSksIHBsYW5lX2N0 bCk7Cj4gIAlJOTE1X1dSSVRFKFBMQU5FX1NVUkYocGlwZSwgcGxhbmUpLCBzdXJmX2FkZHIpOwo+ ICAJUE9TVElOR19SRUFEKFBMQU5FX1NVUkYocGlwZSwgcGxhbmUpKTsKPiBAQCAtMTMxMCwxNiAr MTM0MSw3IEBAIGludGVsX3BsYW5lX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgZW51bSBw aXBlIHBpcGUsIGludCBwbGFuZSkKPiAgCQlnb3RvIG91dDsKPiAgCX0KPiAgCj4gLQlpZiAoIWRl di0+bW9kZV9jb25maWcucm90YXRpb25fcHJvcGVydHkpCj4gLQkJZGV2LT5tb2RlX2NvbmZpZy5y b3RhdGlvbl9wcm9wZXJ0eSA9Cj4gLQkJCWRybV9tb2RlX2NyZWF0ZV9yb3RhdGlvbl9wcm9wZXJ0 eShkZXYsCj4gLQkJCQkJCQkgIEJJVChEUk1fUk9UQVRFXzApIHwKPiAtCQkJCQkJCSAgQklUKERS TV9ST1RBVEVfMTgwKSk7Cj4gLQo+IC0JaWYgKGRldi0+bW9kZV9jb25maWcucm90YXRpb25fcHJv cGVydHkpCj4gLQkJZHJtX29iamVjdF9hdHRhY2hfcHJvcGVydHkoJmludGVsX3BsYW5lLT5iYXNl LmJhc2UsCj4gLQkJCQkJICAgZGV2LT5tb2RlX2NvbmZpZy5yb3RhdGlvbl9wcm9wZXJ0eSwKPiAt CQkJCQkgICBzdGF0ZS0+YmFzZS5yb3RhdGlvbik7Cj4gKwlpbnRlbF9jcmVhdGVfcm90YXRpb25f cHJvcGVydHkoZGV2LCBpbnRlbF9wbGFuZSk7Cj4gIAo+ICAJZHJtX3BsYW5lX2hlbHBlcl9hZGQo JmludGVsX3BsYW5lLT5iYXNlLCAmaW50ZWxfcGxhbmVfaGVscGVyX2Z1bmNzKTsKPiAgCj4gLS0g Cj4gMS43LjEwLjQKPiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwo+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCj4gaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2ludGVsLWdmeAoKLS0gCk1hdHQgUm9wZXIKR3JhcGhpY3MgU29mdHdhcmUgRW5naW5lZXIKSW9U RyBQbGF0Zm9ybSBFbmFibGluZyAmIERldmVsb3BtZW50CkludGVsIENvcnBvcmF0aW9uCig5MTYp IDM1Ni0yNzk1Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==