From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 2/2] drm/i915/skl: Support for 90/270 rotation Date: Fri, 10 Apr 2015 17:44:19 +0300 Message-ID: <20150410144419.GA28877@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" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTP id 5B7516E00E for ; Fri, 10 Apr 2015 07:44:24 -0700 (PDT) Content-Disposition: inline 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 T24gRnJpLCBBcHIgMTAsIDIwMTUgYXQgMDQ6MTc6MTdQTSArMDIwMCwgRGFuaWVsIFZldHRlciB3 cm90ZToKPiBPbiBGcmksIEFwciAxMCwgMjAxNSBhdCAwMjozNzoyOVBNICswNTMwLCBTb25pa2Eg SmluZGFsIHdyb3RlOgo+ID4gdjI6IE1vdmluZyBjcmVhdGlvbiBvZiBwcm9wZXJ0eSBpbiBhIGZ1 bmN0aW9uLCBjaGVja2luZyBmb3IgOTAvMjcwCj4gPiByb3RhdGlvbiBzaW11bHRhbmVvdXNseSAo Q2hyaXMpCj4gPiBMZXR0aW5nIHByaW1hcnkgcGxhbmUgdG8gYmUgcG9zaXRpb25lZAo+ID4gdjM6 IEFkZGluZyBpZi9lbHNlIGZvciA5MC8yNzAgYW5kIHJlc3QgcGFyYW1zIHByb2dyYW1taW5nLCBh ZGRpbmcgY2hlY2sgZm9yCj4gPiBwaXhlbF9mb3JtYXQsIHNvbWUgY2xlYW51cCAocmV2aWV3IGNv bW1lbnRzKQo+ID4gdjQ6IEFkZGluZyByaWdodCBwaXhlbF9mb3JtYXRzLCB1c2luZyBzcmNfKiBw YXJhbXMgaW5zdGVhZCBvZiBjcnRjXyogZm9yIG9mZnNldAo+ID4gYW5kIHNpemUgcHJvZ3JhbW1p bmcgKFZpbGxlKQo+ID4gdjU6IFJlYmFzZWQgb24gLW5pZ2h0bHkgYW5kIFR2cnRrbydzIHNlcmll cyBmb3IgZ3R0IHJlbWFwcGluZy4KPiA+IHY2OiBSZWJhc2VkIG9uIC1uaWdodGx5IChUdnJ0a28n cyBzZXJpZXMgbWVyZ2VkKQo+ID4gdjc6IE1vdmluZyBwaXhlbF9mb3JtYXQgY2hlY2sgdG8gaW50 ZWxfYXRvbWljX3BsYW5lX2NoZWNrIChNYXR0KQo+ID4gCj4gPiBTaWduZWQtb2ZmLWJ5OiBTb25p a2EgSmluZGFsIDxzb25pa2EuamluZGFsQGludGVsLmNvbT4KPiA+IFJldmlld2VkLWJ5OiBNYXR0 IFJvcGVyIDxtYXR0aGV3LmQucm9wZXJAaW50ZWwuY29tPgo+IAo+IFBhdGNoZXMgYXJlIG1pc3Np bmcgdGhlIFRlc3RjYXNlOiB0YWcsIHBsZWFzZSBhZGQgdGhhdC4gQWxzbywgYXJlIGFsbCB0aGUK PiBpZ3QgY29tbWl0dGVkIG9yIG5vdCB5ZXQ/IFB1bGxlZCB0aGVzZSB0d28gaW4gbWVhbndoaWxl LgoKVGhpbmdzIGFyZSBnb2luZyBzb21ld2hhdCBicm9rZW4gYmVjYXVzZSB5b3UgZGlkbid0IGFw cGx5IG15IHBsYW5lCnN0YXRlIHN0dWZmLiBIbW0uIEFjdHVhbGx5IGl0IHNvcnQgb2YgbG9va3Mg dGhhdCBpdCBtaWdodCB3b3JrIGJ5IGx1Y2sKYXMgbG9uZyBhcyB0aGUgcHJpbWFyeSBwbGFuZSBk b2Vzbid0IGdldCBjbGlwcGVkIHNpbmNlIHRoaXMgaXMgYmFzaGluZwp0aGUgdXNlciBzdGF0ZSBk aXJlY3RseSBpbnRvIHRoZSBoYXJkd2FyZSByZWdpc3RlcnMgYW5kIG5vdCB0aGUgZGVyaXZlZApz dGF0ZSAoaWUuIGNsaXBwZWQgY29vcmRpbmF0ZXMpLgoKQWxzbyBJIHNlZSBteSByZXZpZXcgY29t bWVudCBhYm91dCB0aGUgOTAgdnMuIDI3MCByb3RhdGlvbiBtaXh1cCB3YXMKaWdub3JlZCBhdCBs ZWFzdC4KCj4gLURhbmllbAo+IAo+ID4gLS0tCj4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9yZWcuaCAgICAgICAgICAgfCAgICAyICsKPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9hdG9taWNfcGxhbmUuYyB8ICAgMjQgKysrKysrKysKPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kaXNwbGF5LmMgICAgICB8ICAgODggKysrKysrKysrKysrKysrKysrKystLS0tLS0t LS0KPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgICAgICAgICB8ICAgIDYg KysKPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYyAgICAgICB8ICAgNTIg KysrKysrKysrKysrLS0tLS0KPiA+ICA1IGZpbGVzIGNoYW5nZWQsIDEzMSBpbnNlcnRpb25zKCsp LCA0MSBkZWxldGlvbnMoLSkKPiA+IAo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfcmVnLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gPiBpbmRl eCBiNTIyZWI2Li41NjRiYmQ1IDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9yZWcuaAo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+ID4g QEAgLTQ4NTQsNyArNDg1NCw5IEBAIGVudW0gc2tsX2Rpc3BfcG93ZXJfd2VsbHMgewo+ID4gICNk ZWZpbmUgICBQTEFORV9DVExfQUxQSEFfSFdfUFJFTVVMVElQTFkJKCAgMyA8PCA0KQo+ID4gICNk ZWZpbmUgICBQTEFORV9DVExfUk9UQVRFX01BU0sJCQkweDMKPiA+ICAjZGVmaW5lICAgUExBTkVf Q1RMX1JPVEFURV8wCQkJMHgwCj4gPiArI2RlZmluZSAgIFBMQU5FX0NUTF9ST1RBVEVfOTAJCQkw eDEKPiA+ICAjZGVmaW5lICAgUExBTkVfQ1RMX1JPVEFURV8xODAJCQkweDIKPiA+ICsjZGVmaW5l ICAgUExBTkVfQ1RMX1JPVEFURV8yNzAJCQkweDMKPiA+ICAjZGVmaW5lIF9QTEFORV9TVFJJREVf MV9BCQkJMHg3MDE4OAo+ID4gICNkZWZpbmUgX1BMQU5FX1NUUklERV8yX0EJCQkweDcwMjg4Cj4g PiAgI2RlZmluZSBfUExBTkVfU1RSSURFXzNfQQkJCTB4NzAzODgKPiA+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9taWNfcGxhbmUuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2F0b21pY19wbGFuZS5jCj4gPiBpbmRleCA5NzZiODkxLi5hMjdlZThjIDEw MDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljX3BsYW5lLmMK PiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0b21pY19wbGFuZS5jCj4gPiBA QCAtMTYyLDYgKzE2MiwzMCBAQCBzdGF0aWMgaW50IGludGVsX3BsYW5lX2F0b21pY19jaGVjayhz dHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiA+ICAJCQkoMSA8PCBkcm1fcGxhbmVfaW5kZXgocGxh bmUpKTsKPiA+ICAJfQo+ID4gIAo+ID4gKwlpZiAoc3RhdGUtPmZiICYmIGludGVsX3JvdGF0aW9u XzkwX29yXzI3MChzdGF0ZS0+cm90YXRpb24pKSB7Cj4gPiArCQlpZiAoIShzdGF0ZS0+ZmItPm1v ZGlmaWVyWzBdID09IEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEIHx8Cj4gPiArCQkJc3RhdGUtPmZi LT5tb2RpZmllclswXSA9PSBJOTE1X0ZPUk1BVF9NT0RfWWZfVElMRUQpKSB7Cj4gPiArCQkJRFJN X0RFQlVHX0tNUygiWS9ZZiB0aWxpbmcgcmVxdWlyZWQgZm9yIDkwLzI3MCFcbiIpOwo+ID4gKwkJ CXJldHVybiAtRUlOVkFMOwo+ID4gKwkJfQo+ID4gKwo+ID4gKwkJLyoKPiA+ICsJCSAqIDkwLzI3 MCBpcyBub3QgYWxsb3dlZCB3aXRoIFJHQjY0IDE2OjE2OjE2OjE2LAo+ID4gKwkJICogUkdCIDE2 LWJpdCA1OjY6NSwgYW5kIEluZGV4ZWQgOC1iaXQuCj4gPiArCQkgKiBUQkQ6IEFkZCBSR0I2NCBj YXNlIG9uY2UgaXRzIGFkZGVkIGluIHN1cHBvcnRlZCBmb3JtYXQgbGlzdC4KPiA+ICsJCSAqLwo+ ID4gKwkJc3dpdGNoIChzdGF0ZS0+ZmItPnBpeGVsX2Zvcm1hdCkgewo+ID4gKwkJY2FzZSBEUk1f Rk9STUFUX0M4Ogo+ID4gKwkJY2FzZSBEUk1fRk9STUFUX1JHQjU2NToKPiA+ICsJCQlEUk1fREVC VUdfS01TKCJVbnN1cHBvcnRlZCBwaXhlbCBmb3JtYXQgJXMgZm9yIDkwLzI3MCFcbiIsCj4gPiAr CQkJCQlkcm1fZ2V0X2Zvcm1hdF9uYW1lKHN0YXRlLT5mYi0+cGl4ZWxfZm9ybWF0KSk7Cj4gPiAr CQkJcmV0dXJuIC1FSU5WQUw7Cj4gPiArCj4gPiArCQlkZWZhdWx0Ogo+ID4gKwkJCWJyZWFrOwo+ ID4gKwkJfQo+ID4gKwl9Cj4gPiArCj4gPiAgCXJldHVybiBpbnRlbF9wbGFuZS0+Y2hlY2tfcGxh bmUocGxhbmUsIGludGVsX3N0YXRlKTsKPiA+ICB9Cj4gPiAgCj4gPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZGlzcGxheS5jCj4gPiBpbmRleCBmMGJiYzIyLi40ZGU1NDRjIDEwMDY0NAo+ID4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiA+IEBAIC0yMzExLDEzICsyMzExLDYgQEAg aW50ZWxfZmlsbF9mYl9nZ3R0X3ZpZXcoc3RydWN0IGk5MTVfZ2d0dF92aWV3ICp2aWV3LCBzdHJ1 Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKPiA+ICAJaW5mby0+cGl0Y2ggPSBmYi0+cGl0Y2hlc1sw XTsKPiA+ICAJaW5mby0+ZmJfbW9kaWZpZXIgPSBmYi0+bW9kaWZpZXJbMF07Cj4gPiAgCj4gPiAt CWlmICghKGluZm8tPmZiX21vZGlmaWVyID09IEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEIHx8Cj4g PiAtCSAgICAgIGluZm8tPmZiX21vZGlmaWVyID09IEk5MTVfRk9STUFUX01PRF9ZZl9USUxFRCkp IHsKPiA+IC0JCURSTV9ERUJVR19LTVMoCj4gPiAtCQkJICAgICAgIlkgb3IgWWYgdGlsaW5nIGlz IG5lZWRlZCBmb3IgOTAvMjcwIHJvdGF0aW9uIVxuIik7Cj4gPiAtCQlyZXR1cm4gLUVJTlZBTDsK PiA+IC0JfQo+ID4gLQo+ID4gIAlyZXR1cm4gMDsKPiA+ICB9Cj4gPiAgCj4gPiBAQCAtMjkxOSw4 ICsyOTEyLDEyIEBAIHN0YXRpYyB2b2lkIHNreWxha2VfdXBkYXRlX3ByaW1hcnlfcGxhbmUoc3Ry dWN0IGRybV9jcnRjICpjcnRjLAo+ID4gIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9 IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4gPiAgCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpv Ymo7Cj4gPiAgCWludCBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKPiA+IC0JdTMyIHBsYW5lX2N0 bCwgc3RyaWRlX2RpdjsKPiA+ICsJdTMyIHBsYW5lX2N0bCwgc3RyaWRlX2Rpdiwgc3RyaWRlOwo+ ID4gKwl1MzIgdGlsZV9oZWlnaHQsIHBsYW5lX29mZnNldCwgcGxhbmVfc2l6ZTsKPiA+ICsJdW5z aWduZWQgaW50IHJvdGF0aW9uOwo+ID4gKwlpbnQgeF9vZmZzZXQsIHlfb2Zmc2V0Owo+ID4gIAl1 bnNpZ25lZCBsb25nIHN1cmZfYWRkcjsKPiA+ICsJc3RydWN0IGRybV9wbGFuZSAqcGxhbmU7Cj4g PiAgCj4gPiAgCWlmICghaW50ZWxfY3J0Yy0+cHJpbWFyeV9lbmFibGVkKSB7Cj4gPiAgCQlJOTE1 X1dSSVRFKFBMQU5FX0NUTChwaXBlLCAwKSwgMCk7Cj4gPiBAQCAtMjk4MSwyMSArMjk3OCw1MSBA QCBzdGF0aWMgdm9pZCBza3lsYWtlX3VwZGF0ZV9wcmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1fY3J0 YyAqY3J0YywKPiA+ICAJfQo+ID4gIAo+ID4gIAlwbGFuZV9jdGwgfD0gUExBTkVfQ1RMX1BMQU5F X0dBTU1BX0RJU0FCTEU7Cj4gPiAtCWlmIChjcnRjLT5wcmltYXJ5LT5zdGF0ZS0+cm90YXRpb24g PT0gQklUKERSTV9ST1RBVEVfMTgwKSkKPiA+ICsKPiA+ICsJcGxhbmUgPSBjcnRjLT5wcmltYXJ5 Owo+ID4gKwlyb3RhdGlvbiA9IHBsYW5lLT5zdGF0ZS0+cm90YXRpb247Cj4gPiArCXN3aXRjaCAo cm90YXRpb24pIHsKPiA+ICsJY2FzZSBCSVQoRFJNX1JPVEFURV85MCk6Cj4gPiArCQlwbGFuZV9j dGwgfD0gUExBTkVfQ1RMX1JPVEFURV85MDsKPiA+ICsJCWJyZWFrOwo+ID4gKwo+ID4gKwljYXNl IEJJVChEUk1fUk9UQVRFXzE4MCk6Cj4gPiAgCQlwbGFuZV9jdGwgfD0gUExBTkVfQ1RMX1JPVEFU RV8xODA7Cj4gPiArCQlicmVhazsKPiA+ICsKPiA+ICsJY2FzZSBCSVQoRFJNX1JPVEFURV8yNzAp Ogo+ID4gKwkJcGxhbmVfY3RsIHw9IFBMQU5FX0NUTF9ST1RBVEVfMjcwOwo+ID4gKwkJYnJlYWs7 Cj4gPiArCX0KPiA+ICAKPiA+ICAJb2JqID0gaW50ZWxfZmJfb2JqKGZiKTsKPiA+ICAJc3RyaWRl X2RpdiA9IGludGVsX2ZiX3N0cmlkZV9hbGlnbm1lbnQoZGV2LCBmYi0+bW9kaWZpZXJbMF0sCj4g PiAgCQkJCQkgICAgICAgZmItPnBpeGVsX2Zvcm1hdCk7Cj4gPiAtCXN1cmZfYWRkciA9IGludGVs X3BsYW5lX29ial9vZmZzZXQodG9faW50ZWxfcGxhbmUoY3J0Yy0+cHJpbWFyeSksIG9iaik7Cj4g PiArCXN1cmZfYWRkciA9IGludGVsX3BsYW5lX29ial9vZmZzZXQodG9faW50ZWxfcGxhbmUocGxh bmUpLCBvYmopOwo+ID4gKwo+ID4gKwlpZiAoaW50ZWxfcm90YXRpb25fOTBfb3JfMjcwKHJvdGF0 aW9uKSkgewo+ID4gKwkJLyogc3RyaWRlID0gU3VyZmFjZSBoZWlnaHQgaW4gdGlsZXMgKi8KPiA+ ICsJCXRpbGVfaGVpZ2h0ID0gaW50ZWxfdGlsZV9oZWlnaHQoZGV2LCBmYi0+Yml0c19wZXJfcGl4 ZWwsCj4gPiArCQkJCQkJZmItPm1vZGlmaWVyWzBdKTsKPiA+ICsJCXN0cmlkZSA9IERJVl9ST1VO RF9VUChmYi0+aGVpZ2h0LCB0aWxlX2hlaWdodCk7Cj4gPiArCQl4X29mZnNldCA9IHN0cmlkZSAq IHRpbGVfaGVpZ2h0IC0geSAtIChwbGFuZS0+c3RhdGUtPnNyY19oID4+IDE2KTsKPiA+ICsJCXlf b2Zmc2V0ID0geDsKPiA+ICsJCXBsYW5lX3NpemUgPSAoKHBsYW5lLT5zdGF0ZS0+c3JjX3cgPj4g MTYpIC0gMSkgPDwgMTYgfAo+ID4gKwkJCQkJKChwbGFuZS0+c3RhdGUtPnNyY19oID4+IDE2KSAt IDEpOwo+ID4gKwl9IGVsc2Ugewo+ID4gKwkJc3RyaWRlID0gZmItPnBpdGNoZXNbMF0gLyBzdHJp ZGVfZGl2Owo+ID4gKwkJeF9vZmZzZXQgPSB4Owo+ID4gKwkJeV9vZmZzZXQgPSB5Owo+ID4gKwkJ cGxhbmVfc2l6ZSA9ICgocGxhbmUtPnN0YXRlLT5zcmNfaCA+PiAxNikgLSAxKSA8PCAxNiB8Cj4g PiArCQkJKChwbGFuZS0+c3RhdGUtPnNyY193ID4+IDE2KSAtIDEpOwo+ID4gKwl9Cj4gPiArCXBs YW5lX29mZnNldCA9IHlfb2Zmc2V0IDw8IDE2IHwgeF9vZmZzZXQ7Cj4gPiAgCj4gPiAgCUk5MTVf V1JJVEUoUExBTkVfQ1RMKHBpcGUsIDApLCBwbGFuZV9jdGwpOwo+ID4gIAlJOTE1X1dSSVRFKFBM QU5FX1BPUyhwaXBlLCAwKSwgMCk7Cj4gPiAtCUk5MTVfV1JJVEUoUExBTkVfT0ZGU0VUKHBpcGUs IDApLCAoeSA8PCAxNikgfCB4KTsKPiA+IC0JSTkxNV9XUklURShQTEFORV9TSVpFKHBpcGUsIDAp LAo+ID4gLQkJICAgKGludGVsX2NydGMtPmNvbmZpZy0+cGlwZV9zcmNfaCAtIDEpIDw8IDE2IHwK PiA+IC0JCSAgIChpbnRlbF9jcnRjLT5jb25maWctPnBpcGVfc3JjX3cgLSAxKSk7Cj4gPiAtCUk5 MTVfV1JJVEUoUExBTkVfU1RSSURFKHBpcGUsIDApLCBmYi0+cGl0Y2hlc1swXSAvIHN0cmlkZV9k aXYpOwo+ID4gKwlJOTE1X1dSSVRFKFBMQU5FX09GRlNFVChwaXBlLCAwKSwgcGxhbmVfb2Zmc2V0 KTsKPiA+ICsJSTkxNV9XUklURShQTEFORV9TSVpFKHBpcGUsIDApLCBwbGFuZV9zaXplKTsKPiA+ ICsJSTkxNV9XUklURShQTEFORV9TVFJJREUocGlwZSwgMCksIHN0cmlkZSk7Cj4gPiAgCUk5MTVf V1JJVEUoUExBTkVfU1VSRihwaXBlLCAwKSwgc3VyZl9hZGRyKTsKPiA+ICAKPiA+ICAJUE9TVElO R19SRUFEKFBMQU5FX1NVUkYocGlwZSwgMCkpOwo+ID4gQEAgLTEyNDA2LDIzICsxMjQzMywzMiBA QCBzdGF0aWMgc3RydWN0IGRybV9wbGFuZSAqaW50ZWxfcHJpbWFyeV9wbGFuZV9jcmVhdGUoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwKPiA+ICAJCQkJIGludGVsX3ByaW1hcnlfZm9ybWF0cywgbnVt X2Zvcm1hdHMsCj4gPiAgCQkJCSBEUk1fUExBTkVfVFlQRV9QUklNQVJZKTsKPiA+ICAKPiA+IC0J aWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDQpIHsKPiA+IC0JCWlmICghZGV2LT5tb2RlX2Nv bmZpZy5yb3RhdGlvbl9wcm9wZXJ0eSkKPiA+IC0JCQlkZXYtPm1vZGVfY29uZmlnLnJvdGF0aW9u X3Byb3BlcnR5ID0KPiA+IC0JCQkJZHJtX21vZGVfY3JlYXRlX3JvdGF0aW9uX3Byb3BlcnR5KGRl diwKPiA+IC0JCQkJCQkJQklUKERSTV9ST1RBVEVfMCkgfAo+ID4gLQkJCQkJCQlCSVQoRFJNX1JP VEFURV8xODApKTsKPiA+IC0JCWlmIChkZXYtPm1vZGVfY29uZmlnLnJvdGF0aW9uX3Byb3BlcnR5 KQo+ID4gLQkJCWRybV9vYmplY3RfYXR0YWNoX3Byb3BlcnR5KCZwcmltYXJ5LT5iYXNlLmJhc2Us Cj4gPiAtCQkJCWRldi0+bW9kZV9jb25maWcucm90YXRpb25fcHJvcGVydHksCj4gPiAtCQkJCXN0 YXRlLT5iYXNlLnJvdGF0aW9uKTsKPiA+IC0JfQo+ID4gKwlpZiAoSU5URUxfSU5GTyhkZXYpLT5n ZW4gPj0gNCkKPiA+ICsJCWludGVsX2NyZWF0ZV9yb3RhdGlvbl9wcm9wZXJ0eShkZXYsIHByaW1h cnkpOwo+ID4gIAo+ID4gIAlkcm1fcGxhbmVfaGVscGVyX2FkZCgmcHJpbWFyeS0+YmFzZSwgJmlu dGVsX3BsYW5lX2hlbHBlcl9mdW5jcyk7Cj4gPiAgCj4gPiAgCXJldHVybiAmcHJpbWFyeS0+YmFz ZTsKPiA+ICB9Cj4gPiAgCj4gPiArdm9pZCBpbnRlbF9jcmVhdGVfcm90YXRpb25fcHJvcGVydHko c3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSkKPiA+ICt7 Cj4gPiArCWlmICghZGV2LT5tb2RlX2NvbmZpZy5yb3RhdGlvbl9wcm9wZXJ0eSkgewo+ID4gKwkJ dW5zaWduZWQgbG9uZyBmbGFncyA9IEJJVChEUk1fUk9UQVRFXzApIHwKPiA+ICsJCQlCSVQoRFJN X1JPVEFURV8xODApOwo+ID4gKwo+ID4gKwkJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDkp Cj4gPiArCQkJZmxhZ3MgfD0gQklUKERSTV9ST1RBVEVfOTApIHwgQklUKERSTV9ST1RBVEVfMjcw KTsKPiA+ICsKPiA+ICsJCWRldi0+bW9kZV9jb25maWcucm90YXRpb25fcHJvcGVydHkgPQo+ID4g KwkJCWRybV9tb2RlX2NyZWF0ZV9yb3RhdGlvbl9wcm9wZXJ0eShkZXYsIGZsYWdzKTsKPiA+ICsJ fQo+ID4gKwlpZiAoZGV2LT5tb2RlX2NvbmZpZy5yb3RhdGlvbl9wcm9wZXJ0eSkKPiA+ICsJCWRy bV9vYmplY3RfYXR0YWNoX3Byb3BlcnR5KCZwbGFuZS0+YmFzZS5iYXNlLAo+ID4gKwkJCQlkZXYt Pm1vZGVfY29uZmlnLnJvdGF0aW9uX3Byb3BlcnR5LAo+ID4gKwkJCQlwbGFuZS0+YmFzZS5zdGF0 ZS0+cm90YXRpb24pOwo+ID4gK30KPiA+ICsKPiA+ICBzdGF0aWMgaW50Cj4gPiAgaW50ZWxfY2hl Y2tfY3Vyc29yX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ID4gIAkJCSBzdHJ1Y3Qg aW50ZWxfcGxhbmVfc3RhdGUgKnN0YXRlKQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiA+ IGluZGV4IDgxMWExZGIuLmQzMjAyNWEgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kcnYuaAo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2 LmgKPiA+IEBAIC05OTUsNiArOTk1LDEyIEBAIGludGVsX3JvdGF0aW9uXzkwX29yXzI3MCh1bnNp Z25lZCBpbnQgcm90YXRpb24pCj4gPiAgCXJldHVybiByb3RhdGlvbiAmIChCSVQoRFJNX1JPVEFU RV85MCkgfCBCSVQoRFJNX1JPVEFURV8yNzApKTsKPiA+ICB9Cj4gPiAgCj4gPiArdW5zaWduZWQg aW50Cj4gPiAraW50ZWxfdGlsZV9oZWlnaHQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdWludDMy X3QgYml0c19wZXJfcGl4ZWwsCj4gPiArCQkgIHVpbnQ2NF90IGZiX21vZGlmaWVyKTsKPiA+ICt2 b2lkIGludGVsX2NyZWF0ZV9yb3RhdGlvbl9wcm9wZXJ0eShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LAo+ID4gKwkJCQkJc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSk7Cj4gPiArCj4gPiAgYm9vbCBp bnRlbF93bV9uZWVkX3VwZGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPiA+ICAJCQkgIHN0 cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnN0YXRlKTsKPiA+ICAKPiA+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3Nwcml0ZS5jCj4gPiBpbmRleCBmNDFlODcyLi44M2FkYzliIDEwMDY0NAo+ID4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCj4gPiBAQCAtMTkwLDEwICsxOTAsMTMgQEAgc2tsX3Vw ZGF0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpkcm1fcGxhbmUsIHN0cnVjdCBkcm1fY3J0YyAq Y3J0YywKPiA+ICAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9IGludGVsX2ZiX29i aihmYik7Cj4gPiAgCWNvbnN0IGludCBwaXBlID0gaW50ZWxfcGxhbmUtPnBpcGU7Cj4gPiAgCWNv bnN0IGludCBwbGFuZSA9IGludGVsX3BsYW5lLT5wbGFuZSArIDE7Cj4gPiAtCXUzMiBwbGFuZV9j dGwsIHN0cmlkZV9kaXY7Cj4gPiArCXUzMiBwbGFuZV9jdGwsIHN0cmlkZV9kaXYsIHN0cmlkZTsK PiA+ICAJaW50IHBpeGVsX3NpemUgPSBkcm1fZm9ybWF0X3BsYW5lX2NwcChmYi0+cGl4ZWxfZm9y bWF0LCAwKTsKPiA+ICAJY29uc3Qgc3RydWN0IGRybV9pbnRlbF9zcHJpdGVfY29sb3JrZXkgKmtl eSA9ICZpbnRlbF9wbGFuZS0+Y2tleTsKPiA+ICAJdW5zaWduZWQgbG9uZyBzdXJmX2FkZHI7Cj4g PiArCXUzMiB0aWxlX2hlaWdodCwgcGxhbmVfb2Zmc2V0LCBwbGFuZV9zaXplOwo+ID4gKwl1bnNp Z25lZCBpbnQgcm90YXRpb247Cj4gPiArCWludCB4X29mZnNldCwgeV9vZmZzZXQ7Cj4gPiAgCj4g PiAgCXBsYW5lX2N0bCA9IFBMQU5FX0NUTF9FTkFCTEUgfAo+ID4gIAkJUExBTkVfQ1RMX1BJUEVf Q1NDX0VOQUJMRTsKPiA+IEBAIC0yNTQsOCArMjU3LDIwIEBAIHNrbF91cGRhdGVfcGxhbmUoc3Ry dWN0IGRybV9wbGFuZSAqZHJtX3BsYW5lLCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gPiAgCQlN SVNTSU5HX0NBU0UoZmItPm1vZGlmaWVyWzBdKTsKPiA+ICAJfQo+ID4gIAo+ID4gLQlpZiAoZHJt X3BsYW5lLT5zdGF0ZS0+cm90YXRpb24gPT0gQklUKERSTV9ST1RBVEVfMTgwKSkKPiA+ICsJcm90 YXRpb24gPSBkcm1fcGxhbmUtPnN0YXRlLT5yb3RhdGlvbjsKPiA+ICsJc3dpdGNoIChyb3RhdGlv bikgewo+ID4gKwljYXNlIEJJVChEUk1fUk9UQVRFXzkwKToKPiA+ICsJCXBsYW5lX2N0bCB8PSBQ TEFORV9DVExfUk9UQVRFXzkwOwo+ID4gKwkJYnJlYWs7Cj4gPiArCj4gPiArCWNhc2UgQklUKERS TV9ST1RBVEVfMTgwKToKPiA+ICAJCXBsYW5lX2N0bCB8PSBQTEFORV9DVExfUk9UQVRFXzE4MDsK PiA+ICsJCWJyZWFrOwo+ID4gKwo+ID4gKwljYXNlIEJJVChEUk1fUk9UQVRFXzI3MCk6Cj4gPiAr CQlwbGFuZV9jdGwgfD0gUExBTkVfQ1RMX1JPVEFURV8yNzA7Cj4gPiArCQlicmVhazsKPiA+ICsJ fQo+ID4gIAo+ID4gIAlpbnRlbF91cGRhdGVfc3ByaXRlX3dhdGVybWFya3MoZHJtX3BsYW5lLCBj cnRjLCBzcmNfdywgc3JjX2gsCj4gPiAgCQkJCSAgICAgICBwaXhlbF9zaXplLCB0cnVlLAo+ID4g QEAgLTI4MywxMCArMjk4LDI2IEBAIHNrbF91cGRhdGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAq ZHJtX3BsYW5lLCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gPiAgCj4gPiAgCXN1cmZfYWRkciA9 IGludGVsX3BsYW5lX29ial9vZmZzZXQoaW50ZWxfcGxhbmUsIG9iaik7Cj4gPiAgCj4gPiAtCUk5 MTVfV1JJVEUoUExBTkVfT0ZGU0VUKHBpcGUsIHBsYW5lKSwgKHkgPDwgMTYpIHwgeCk7Cj4gPiAt CUk5MTVfV1JJVEUoUExBTkVfU1RSSURFKHBpcGUsIHBsYW5lKSwgZmItPnBpdGNoZXNbMF0gLyBz dHJpZGVfZGl2KTsKPiA+ICsJaWYgKGludGVsX3JvdGF0aW9uXzkwX29yXzI3MChyb3RhdGlvbikp IHsKPiA+ICsJCS8qIHN0cmlkZTogU3VyZmFjZSBoZWlnaHQgaW4gdGlsZXMgKi8KPiA+ICsJCXRp bGVfaGVpZ2h0ID0gaW50ZWxfdGlsZV9oZWlnaHQoZGV2LCBmYi0+Yml0c19wZXJfcGl4ZWwsCj4g PiArCQkJCQkJCWZiLT5tb2RpZmllclswXSk7Cj4gPiArCQlzdHJpZGUgPSBESVZfUk9VTkRfVVAo ZmItPmhlaWdodCwgdGlsZV9oZWlnaHQpOwo+ID4gKwkJcGxhbmVfc2l6ZSA9IChzcmNfdyA8PCAx NikgfCBzcmNfaDsKPiA+ICsJCXhfb2Zmc2V0ID0gc3RyaWRlICogdGlsZV9oZWlnaHQgLSB5IC0g KHNyY19oICsgMSk7Cj4gPiArCQl5X29mZnNldCA9IHg7Cj4gPiArCX0gZWxzZSB7Cj4gPiArCQlz dHJpZGUgPSBmYi0+cGl0Y2hlc1swXSAvIHN0cmlkZV9kaXY7Cj4gPiArCQlwbGFuZV9zaXplID0g KHNyY19oIDw8IDE2KSB8IHNyY193Owo+ID4gKwkJeF9vZmZzZXQgPSB4Owo+ID4gKwkJeV9vZmZz ZXQgPSB5Owo+ID4gKwl9Cj4gPiArCXBsYW5lX29mZnNldCA9IHlfb2Zmc2V0IDw8IDE2IHwgeF9v ZmZzZXQ7Cj4gPiArCj4gPiArCUk5MTVfV1JJVEUoUExBTkVfT0ZGU0VUKHBpcGUsIHBsYW5lKSwg cGxhbmVfb2Zmc2V0KTsKPiA+ICsJSTkxNV9XUklURShQTEFORV9TVFJJREUocGlwZSwgcGxhbmUp LCBzdHJpZGUpOwo+ID4gIAlJOTE1X1dSSVRFKFBMQU5FX1BPUyhwaXBlLCBwbGFuZSksIChjcnRj X3kgPDwgMTYpIHwgY3J0Y194KTsKPiA+IC0JSTkxNV9XUklURShQTEFORV9TSVpFKHBpcGUsIHBs YW5lKSwgKGNydGNfaCA8PCAxNikgfCBjcnRjX3cpOwo+ID4gKwlJOTE1X1dSSVRFKFBMQU5FX1NJ WkUocGlwZSwgcGxhbmUpLCBwbGFuZV9zaXplKTsKPiA+ICAJSTkxNV9XUklURShQTEFORV9DVEwo cGlwZSwgcGxhbmUpLCBwbGFuZV9jdGwpOwo+ID4gIAlJOTE1X1dSSVRFKFBMQU5FX1NVUkYocGlw ZSwgcGxhbmUpLCBzdXJmX2FkZHIpOwo+ID4gIAlQT1NUSU5HX1JFQUQoUExBTkVfU1VSRihwaXBl LCBwbGFuZSkpOwo+ID4gQEAgLTEzMTAsMTYgKzEzNDEsNyBAQCBpbnRlbF9wbGFuZV9pbml0KHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsIGVudW0gcGlwZSBwaXBlLCBpbnQgcGxhbmUpCj4gPiAgCQln b3RvIG91dDsKPiA+ICAJfQo+ID4gIAo+ID4gLQlpZiAoIWRldi0+bW9kZV9jb25maWcucm90YXRp b25fcHJvcGVydHkpCj4gPiAtCQlkZXYtPm1vZGVfY29uZmlnLnJvdGF0aW9uX3Byb3BlcnR5ID0K PiA+IC0JCQlkcm1fbW9kZV9jcmVhdGVfcm90YXRpb25fcHJvcGVydHkoZGV2LAo+ID4gLQkJCQkJ CQkgIEJJVChEUk1fUk9UQVRFXzApIHwKPiA+IC0JCQkJCQkJICBCSVQoRFJNX1JPVEFURV8xODAp KTsKPiA+IC0KPiA+IC0JaWYgKGRldi0+bW9kZV9jb25maWcucm90YXRpb25fcHJvcGVydHkpCj4g PiAtCQlkcm1fb2JqZWN0X2F0dGFjaF9wcm9wZXJ0eSgmaW50ZWxfcGxhbmUtPmJhc2UuYmFzZSwK PiA+IC0JCQkJCSAgIGRldi0+bW9kZV9jb25maWcucm90YXRpb25fcHJvcGVydHksCj4gPiAtCQkJ CQkgICBzdGF0ZS0+YmFzZS5yb3RhdGlvbik7Cj4gPiArCWludGVsX2NyZWF0ZV9yb3RhdGlvbl9w cm9wZXJ0eShkZXYsIGludGVsX3BsYW5lKTsKPiA+ICAKPiA+ICAJZHJtX3BsYW5lX2hlbHBlcl9h ZGQoJmludGVsX3BsYW5lLT5iYXNlLCAmaW50ZWxfcGxhbmVfaGVscGVyX2Z1bmNzKTsKPiA+ICAK PiA+IC0tIAo+ID4gMS43LjEwLjQKPiA+IAo+ID4gX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KPiA+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiA+IEludGVs LWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiA+IGh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKPiAKPiAtLSAKPiBEYW5pZWwgVmV0dGVyCj4g U29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCj4gaHR0cDovL2Jsb2cuZmZ3bGwu Y2gKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IElu dGVsLWdmeCBtYWlsaW5nIGxpc3QKPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4g aHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAoK LS0gClZpbGxlIFN5cmrDpGzDpApJbnRlbCBPVEMKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9pbnRlbC1nZngK