From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 2/2] drm/i915/skl: Support for 90/270 rotation Date: Fri, 10 Apr 2015 16:17:17 +0200 Message-ID: <20150410141717.GL6092@phenom.ffwll.local> References: <1428656849-5004-1-git-send-email-sonika.jindal@intel.com> <1428656849-5004-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 mail-wg0-f53.google.com (mail-wg0-f53.google.com [74.125.82.53]) by gabe.freedesktop.org (Postfix) with ESMTP id 65D116E975 for ; Fri, 10 Apr 2015 07:15:19 -0700 (PDT) Received: by wgyo15 with SMTP id o15so19226851wgy.2 for ; Fri, 10 Apr 2015 07:15:18 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1428656849-5004-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 T24gRnJpLCBBcHIgMTAsIDIwMTUgYXQgMDI6Mzc6MjlQTSArMDUzMCwgU29uaWthIEppbmRhbCB3 cm90ZToKPiB2MjogTW92aW5nIGNyZWF0aW9uIG9mIHByb3BlcnR5IGluIGEgZnVuY3Rpb24sIGNo ZWNraW5nIGZvciA5MC8yNzAKPiByb3RhdGlvbiBzaW11bHRhbmVvdXNseSAoQ2hyaXMpCj4gTGV0 dGluZyBwcmltYXJ5IHBsYW5lIHRvIGJlIHBvc2l0aW9uZWQKPiB2MzogQWRkaW5nIGlmL2Vsc2Ug Zm9yIDkwLzI3MCBhbmQgcmVzdCBwYXJhbXMgcHJvZ3JhbW1pbmcsIGFkZGluZyBjaGVjayBmb3IK PiBwaXhlbF9mb3JtYXQsIHNvbWUgY2xlYW51cCAocmV2aWV3IGNvbW1lbnRzKQo+IHY0OiBBZGRp bmcgcmlnaHQgcGl4ZWxfZm9ybWF0cywgdXNpbmcgc3JjXyogcGFyYW1zIGluc3RlYWQgb2YgY3J0 Y18qIGZvciBvZmZzZXQKPiBhbmQgc2l6ZSBwcm9ncmFtbWluZyAoVmlsbGUpCj4gdjU6IFJlYmFz ZWQgb24gLW5pZ2h0bHkgYW5kIFR2cnRrbydzIHNlcmllcyBmb3IgZ3R0IHJlbWFwcGluZy4KPiB2 NjogUmViYXNlZCBvbiAtbmlnaHRseSAoVHZydGtvJ3Mgc2VyaWVzIG1lcmdlZCkKPiB2NzogTW92 aW5nIHBpeGVsX2Zvcm1hdCBjaGVjayB0byBpbnRlbF9hdG9taWNfcGxhbmVfY2hlY2sgKE1hdHQp Cj4gCj4gU2lnbmVkLW9mZi1ieTogU29uaWthIEppbmRhbCA8c29uaWthLmppbmRhbEBpbnRlbC5j b20+Cj4gUmV2aWV3ZWQtYnk6IE1hdHQgUm9wZXIgPG1hdHRoZXcuZC5yb3BlckBpbnRlbC5jb20+ CgpQYXRjaGVzIGFyZSBtaXNzaW5nIHRoZSBUZXN0Y2FzZTogdGFnLCBwbGVhc2UgYWRkIHRoYXQu IEFsc28sIGFyZSBhbGwgdGhlCmlndCBjb21taXR0ZWQgb3Igbm90IHlldD8gUHVsbGVkIHRoZXNl IHR3byBpbiBtZWFud2hpbGUuCi1EYW5pZWwKCj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfcmVnLmggICAgICAgICAgIHwgICAgMiArCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2F0b21pY19wbGFuZS5jIHwgICAyNCArKysrKysrKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kaXNwbGF5LmMgICAgICB8ICAgODggKysrKysrKysrKysrKysrKysrKystLS0tLS0t LS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgICAgICAgfCAgICA2ICsr Cj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jICAgICAgIHwgICA1MiArKysr KysrKysrKystLS0tLQo+ICA1IGZpbGVzIGNoYW5nZWQsIDEzMSBpbnNlcnRpb25zKCspLCA0MSBk ZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9y ZWcuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiBpbmRleCBiNTIyZWI2Li41 NjRiYmQ1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gQEAgLTQ4NTQsNyArNDg1NCw5 IEBAIGVudW0gc2tsX2Rpc3BfcG93ZXJfd2VsbHMgewo+ICAjZGVmaW5lICAgUExBTkVfQ1RMX0FM UEhBX0hXX1BSRU1VTFRJUExZCSggIDMgPDwgNCkKPiAgI2RlZmluZSAgIFBMQU5FX0NUTF9ST1RB VEVfTUFTSwkJCTB4Mwo+ICAjZGVmaW5lICAgUExBTkVfQ1RMX1JPVEFURV8wCQkJMHgwCj4gKyNk ZWZpbmUgICBQTEFORV9DVExfUk9UQVRFXzkwCQkJMHgxCj4gICNkZWZpbmUgICBQTEFORV9DVExf Uk9UQVRFXzE4MAkJCTB4Mgo+ICsjZGVmaW5lICAgUExBTkVfQ1RMX1JPVEFURV8yNzAJCQkweDMK PiAgI2RlZmluZSBfUExBTkVfU1RSSURFXzFfQQkJCTB4NzAxODgKPiAgI2RlZmluZSBfUExBTkVf U1RSSURFXzJfQQkJCTB4NzAyODgKPiAgI2RlZmluZSBfUExBTkVfU1RSSURFXzNfQQkJCTB4NzAz ODgKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljX3BsYW5l LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9taWNfcGxhbmUuYwo+IGluZGV4IDk3 NmI4OTEuLmEyN2VlOGMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf YXRvbWljX3BsYW5lLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdG9taWNf cGxhbmUuYwo+IEBAIC0xNjIsNiArMTYyLDMwIEBAIHN0YXRpYyBpbnQgaW50ZWxfcGxhbmVfYXRv bWljX2NoZWNrKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ICAJCQkoMSA8PCBkcm1fcGxhbmVf aW5kZXgocGxhbmUpKTsKPiAgCX0KPiAgCj4gKwlpZiAoc3RhdGUtPmZiICYmIGludGVsX3JvdGF0 aW9uXzkwX29yXzI3MChzdGF0ZS0+cm90YXRpb24pKSB7Cj4gKwkJaWYgKCEoc3RhdGUtPmZiLT5t b2RpZmllclswXSA9PSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRCB8fAo+ICsJCQlzdGF0ZS0+ZmIt Pm1vZGlmaWVyWzBdID09IEk5MTVfRk9STUFUX01PRF9ZZl9USUxFRCkpIHsKPiArCQkJRFJNX0RF QlVHX0tNUygiWS9ZZiB0aWxpbmcgcmVxdWlyZWQgZm9yIDkwLzI3MCFcbiIpOwo+ICsJCQlyZXR1 cm4gLUVJTlZBTDsKPiArCQl9Cj4gKwo+ICsJCS8qCj4gKwkJICogOTAvMjcwIGlzIG5vdCBhbGxv d2VkIHdpdGggUkdCNjQgMTY6MTY6MTY6MTYsCj4gKwkJICogUkdCIDE2LWJpdCA1OjY6NSwgYW5k IEluZGV4ZWQgOC1iaXQuCj4gKwkJICogVEJEOiBBZGQgUkdCNjQgY2FzZSBvbmNlIGl0cyBhZGRl ZCBpbiBzdXBwb3J0ZWQgZm9ybWF0IGxpc3QuCj4gKwkJICovCj4gKwkJc3dpdGNoIChzdGF0ZS0+ ZmItPnBpeGVsX2Zvcm1hdCkgewo+ICsJCWNhc2UgRFJNX0ZPUk1BVF9DODoKPiArCQljYXNlIERS TV9GT1JNQVRfUkdCNTY1Ogo+ICsJCQlEUk1fREVCVUdfS01TKCJVbnN1cHBvcnRlZCBwaXhlbCBm b3JtYXQgJXMgZm9yIDkwLzI3MCFcbiIsCj4gKwkJCQkJZHJtX2dldF9mb3JtYXRfbmFtZShzdGF0 ZS0+ZmItPnBpeGVsX2Zvcm1hdCkpOwo+ICsJCQlyZXR1cm4gLUVJTlZBTDsKPiArCj4gKwkJZGVm YXVsdDoKPiArCQkJYnJlYWs7Cj4gKwkJfQo+ICsJfQo+ICsKPiAgCXJldHVybiBpbnRlbF9wbGFu ZS0+Y2hlY2tfcGxhbmUocGxhbmUsIGludGVsX3N0YXRlKTsKPiAgfQo+ICAKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gaW5kZXggZjBiYmMyMi4uNGRlNTQ0YyAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBAQCAtMjMxMSwxMyArMjMxMSw2IEBAIGlu dGVsX2ZpbGxfZmJfZ2d0dF92aWV3KHN0cnVjdCBpOTE1X2dndHRfdmlldyAqdmlldywgc3RydWN0 IGRybV9mcmFtZWJ1ZmZlciAqZmIsCj4gIAlpbmZvLT5waXRjaCA9IGZiLT5waXRjaGVzWzBdOwo+ ICAJaW5mby0+ZmJfbW9kaWZpZXIgPSBmYi0+bW9kaWZpZXJbMF07Cj4gIAo+IC0JaWYgKCEoaW5m by0+ZmJfbW9kaWZpZXIgPT0gSTkxNV9GT1JNQVRfTU9EX1lfVElMRUQgfHwKPiAtCSAgICAgIGlu Zm8tPmZiX21vZGlmaWVyID09IEk5MTVfRk9STUFUX01PRF9ZZl9USUxFRCkpIHsKPiAtCQlEUk1f REVCVUdfS01TKAo+IC0JCQkgICAgICAiWSBvciBZZiB0aWxpbmcgaXMgbmVlZGVkIGZvciA5MC8y NzAgcm90YXRpb24hXG4iKTsKPiAtCQlyZXR1cm4gLUVJTlZBTDsKPiAtCX0KPiAtCj4gIAlyZXR1 cm4gMDsKPiAgfQo+ICAKPiBAQCAtMjkxOSw4ICsyOTEyLDEyIEBAIHN0YXRpYyB2b2lkIHNreWxh a2VfdXBkYXRlX3ByaW1hcnlfcGxhbmUoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAJc3RydWN0 IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+ICAJc3RydWN0 IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKPiAgCWludCBwaXBlID0gaW50ZWxfY3J0Yy0+cGlw ZTsKPiAtCXUzMiBwbGFuZV9jdGwsIHN0cmlkZV9kaXY7Cj4gKwl1MzIgcGxhbmVfY3RsLCBzdHJp ZGVfZGl2LCBzdHJpZGU7Cj4gKwl1MzIgdGlsZV9oZWlnaHQsIHBsYW5lX29mZnNldCwgcGxhbmVf c2l6ZTsKPiArCXVuc2lnbmVkIGludCByb3RhdGlvbjsKPiArCWludCB4X29mZnNldCwgeV9vZmZz ZXQ7Cj4gIAl1bnNpZ25lZCBsb25nIHN1cmZfYWRkcjsKPiArCXN0cnVjdCBkcm1fcGxhbmUgKnBs YW5lOwo+ICAKPiAgCWlmICghaW50ZWxfY3J0Yy0+cHJpbWFyeV9lbmFibGVkKSB7Cj4gIAkJSTkx NV9XUklURShQTEFORV9DVEwocGlwZSwgMCksIDApOwo+IEBAIC0yOTgxLDIxICsyOTc4LDUxIEBA IHN0YXRpYyB2b2lkIHNreWxha2VfdXBkYXRlX3ByaW1hcnlfcGxhbmUoc3RydWN0IGRybV9jcnRj ICpjcnRjLAo+ICAJfQo+ICAKPiAgCXBsYW5lX2N0bCB8PSBQTEFORV9DVExfUExBTkVfR0FNTUFf RElTQUJMRTsKPiAtCWlmIChjcnRjLT5wcmltYXJ5LT5zdGF0ZS0+cm90YXRpb24gPT0gQklUKERS TV9ST1RBVEVfMTgwKSkKPiArCj4gKwlwbGFuZSA9IGNydGMtPnByaW1hcnk7Cj4gKwlyb3RhdGlv biA9IHBsYW5lLT5zdGF0ZS0+cm90YXRpb247Cj4gKwlzd2l0Y2ggKHJvdGF0aW9uKSB7Cj4gKwlj YXNlIEJJVChEUk1fUk9UQVRFXzkwKToKPiArCQlwbGFuZV9jdGwgfD0gUExBTkVfQ1RMX1JPVEFU RV85MDsKPiArCQlicmVhazsKPiArCj4gKwljYXNlIEJJVChEUk1fUk9UQVRFXzE4MCk6Cj4gIAkJ cGxhbmVfY3RsIHw9IFBMQU5FX0NUTF9ST1RBVEVfMTgwOwo+ICsJCWJyZWFrOwo+ICsKPiArCWNh c2UgQklUKERSTV9ST1RBVEVfMjcwKToKPiArCQlwbGFuZV9jdGwgfD0gUExBTkVfQ1RMX1JPVEFU RV8yNzA7Cj4gKwkJYnJlYWs7Cj4gKwl9Cj4gIAo+ICAJb2JqID0gaW50ZWxfZmJfb2JqKGZiKTsK PiAgCXN0cmlkZV9kaXYgPSBpbnRlbF9mYl9zdHJpZGVfYWxpZ25tZW50KGRldiwgZmItPm1vZGlm aWVyWzBdLAo+ICAJCQkJCSAgICAgICBmYi0+cGl4ZWxfZm9ybWF0KTsKPiAtCXN1cmZfYWRkciA9 IGludGVsX3BsYW5lX29ial9vZmZzZXQodG9faW50ZWxfcGxhbmUoY3J0Yy0+cHJpbWFyeSksIG9i aik7Cj4gKwlzdXJmX2FkZHIgPSBpbnRlbF9wbGFuZV9vYmpfb2Zmc2V0KHRvX2ludGVsX3BsYW5l KHBsYW5lKSwgb2JqKTsKPiArCj4gKwlpZiAoaW50ZWxfcm90YXRpb25fOTBfb3JfMjcwKHJvdGF0 aW9uKSkgewo+ICsJCS8qIHN0cmlkZSA9IFN1cmZhY2UgaGVpZ2h0IGluIHRpbGVzICovCj4gKwkJ dGlsZV9oZWlnaHQgPSBpbnRlbF90aWxlX2hlaWdodChkZXYsIGZiLT5iaXRzX3Blcl9waXhlbCwK PiArCQkJCQkJZmItPm1vZGlmaWVyWzBdKTsKPiArCQlzdHJpZGUgPSBESVZfUk9VTkRfVVAoZmIt PmhlaWdodCwgdGlsZV9oZWlnaHQpOwo+ICsJCXhfb2Zmc2V0ID0gc3RyaWRlICogdGlsZV9oZWln aHQgLSB5IC0gKHBsYW5lLT5zdGF0ZS0+c3JjX2ggPj4gMTYpOwo+ICsJCXlfb2Zmc2V0ID0geDsK PiArCQlwbGFuZV9zaXplID0gKChwbGFuZS0+c3RhdGUtPnNyY193ID4+IDE2KSAtIDEpIDw8IDE2 IHwKPiArCQkJCQkoKHBsYW5lLT5zdGF0ZS0+c3JjX2ggPj4gMTYpIC0gMSk7Cj4gKwl9IGVsc2Ug ewo+ICsJCXN0cmlkZSA9IGZiLT5waXRjaGVzWzBdIC8gc3RyaWRlX2RpdjsKPiArCQl4X29mZnNl dCA9IHg7Cj4gKwkJeV9vZmZzZXQgPSB5Owo+ICsJCXBsYW5lX3NpemUgPSAoKHBsYW5lLT5zdGF0 ZS0+c3JjX2ggPj4gMTYpIC0gMSkgPDwgMTYgfAo+ICsJCQkoKHBsYW5lLT5zdGF0ZS0+c3JjX3cg Pj4gMTYpIC0gMSk7Cj4gKwl9Cj4gKwlwbGFuZV9vZmZzZXQgPSB5X29mZnNldCA8PCAxNiB8IHhf b2Zmc2V0Owo+ICAKPiAgCUk5MTVfV1JJVEUoUExBTkVfQ1RMKHBpcGUsIDApLCBwbGFuZV9jdGwp Owo+ICAJSTkxNV9XUklURShQTEFORV9QT1MocGlwZSwgMCksIDApOwo+IC0JSTkxNV9XUklURShQ TEFORV9PRkZTRVQocGlwZSwgMCksICh5IDw8IDE2KSB8IHgpOwo+IC0JSTkxNV9XUklURShQTEFO RV9TSVpFKHBpcGUsIDApLAo+IC0JCSAgIChpbnRlbF9jcnRjLT5jb25maWctPnBpcGVfc3JjX2gg LSAxKSA8PCAxNiB8Cj4gLQkJICAgKGludGVsX2NydGMtPmNvbmZpZy0+cGlwZV9zcmNfdyAtIDEp KTsKPiAtCUk5MTVfV1JJVEUoUExBTkVfU1RSSURFKHBpcGUsIDApLCBmYi0+cGl0Y2hlc1swXSAv IHN0cmlkZV9kaXYpOwo+ICsJSTkxNV9XUklURShQTEFORV9PRkZTRVQocGlwZSwgMCksIHBsYW5l X29mZnNldCk7Cj4gKwlJOTE1X1dSSVRFKFBMQU5FX1NJWkUocGlwZSwgMCksIHBsYW5lX3NpemUp Owo+ICsJSTkxNV9XUklURShQTEFORV9TVFJJREUocGlwZSwgMCksIHN0cmlkZSk7Cj4gIAlJOTE1 X1dSSVRFKFBMQU5FX1NVUkYocGlwZSwgMCksIHN1cmZfYWRkcik7Cj4gIAo+ICAJUE9TVElOR19S RUFEKFBMQU5FX1NVUkYocGlwZSwgMCkpOwo+IEBAIC0xMjQwNiwyMyArMTI0MzMsMzIgQEAgc3Rh dGljIHN0cnVjdCBkcm1fcGxhbmUgKmludGVsX3ByaW1hcnlfcGxhbmVfY3JlYXRlKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsCj4gIAkJCQkgaW50ZWxfcHJpbWFyeV9mb3JtYXRzLCBudW1fZm9ybWF0 cywKPiAgCQkJCSBEUk1fUExBTkVfVFlQRV9QUklNQVJZKTsKPiAgCj4gLQlpZiAoSU5URUxfSU5G TyhkZXYpLT5nZW4gPj0gNCkgewo+IC0JCWlmICghZGV2LT5tb2RlX2NvbmZpZy5yb3RhdGlvbl9w cm9wZXJ0eSkKPiAtCQkJZGV2LT5tb2RlX2NvbmZpZy5yb3RhdGlvbl9wcm9wZXJ0eSA9Cj4gLQkJ CQlkcm1fbW9kZV9jcmVhdGVfcm90YXRpb25fcHJvcGVydHkoZGV2LAo+IC0JCQkJCQkJQklUKERS TV9ST1RBVEVfMCkgfAo+IC0JCQkJCQkJQklUKERSTV9ST1RBVEVfMTgwKSk7Cj4gLQkJaWYgKGRl di0+bW9kZV9jb25maWcucm90YXRpb25fcHJvcGVydHkpCj4gLQkJCWRybV9vYmplY3RfYXR0YWNo X3Byb3BlcnR5KCZwcmltYXJ5LT5iYXNlLmJhc2UsCj4gLQkJCQlkZXYtPm1vZGVfY29uZmlnLnJv dGF0aW9uX3Byb3BlcnR5LAo+IC0JCQkJc3RhdGUtPmJhc2Uucm90YXRpb24pOwo+IC0JfQo+ICsJ aWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDQpCj4gKwkJaW50ZWxfY3JlYXRlX3JvdGF0aW9u X3Byb3BlcnR5KGRldiwgcHJpbWFyeSk7Cj4gIAo+ICAJZHJtX3BsYW5lX2hlbHBlcl9hZGQoJnBy aW1hcnktPmJhc2UsICZpbnRlbF9wbGFuZV9oZWxwZXJfZnVuY3MpOwo+ICAKPiAgCXJldHVybiAm cHJpbWFyeS0+YmFzZTsKPiAgfQo+ICAKPiArdm9pZCBpbnRlbF9jcmVhdGVfcm90YXRpb25fcHJv cGVydHkoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSkK PiArewo+ICsJaWYgKCFkZXYtPm1vZGVfY29uZmlnLnJvdGF0aW9uX3Byb3BlcnR5KSB7Cj4gKwkJ dW5zaWduZWQgbG9uZyBmbGFncyA9IEJJVChEUk1fUk9UQVRFXzApIHwKPiArCQkJQklUKERSTV9S T1RBVEVfMTgwKTsKPiArCj4gKwkJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDkpCj4gKwkJ CWZsYWdzIHw9IEJJVChEUk1fUk9UQVRFXzkwKSB8IEJJVChEUk1fUk9UQVRFXzI3MCk7Cj4gKwo+ ICsJCWRldi0+bW9kZV9jb25maWcucm90YXRpb25fcHJvcGVydHkgPQo+ICsJCQlkcm1fbW9kZV9j cmVhdGVfcm90YXRpb25fcHJvcGVydHkoZGV2LCBmbGFncyk7Cj4gKwl9Cj4gKwlpZiAoZGV2LT5t b2RlX2NvbmZpZy5yb3RhdGlvbl9wcm9wZXJ0eSkKPiArCQlkcm1fb2JqZWN0X2F0dGFjaF9wcm9w ZXJ0eSgmcGxhbmUtPmJhc2UuYmFzZSwKPiArCQkJCWRldi0+bW9kZV9jb25maWcucm90YXRpb25f cHJvcGVydHksCj4gKwkJCQlwbGFuZS0+YmFzZS5zdGF0ZS0+cm90YXRpb24pOwo+ICt9Cj4gKwo+ ICBzdGF0aWMgaW50Cj4gIGludGVsX2NoZWNrX2N1cnNvcl9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5l ICpwbGFuZSwKPiAgCQkJIHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqc3RhdGUpCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHJ2LmgKPiBpbmRleCA4MTFhMWRiLi5kMzIwMjVhIDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHJ2LmgKPiBAQCAtOTk1LDYgKzk5NSwxMiBAQCBpbnRlbF9yb3RhdGlvbl85 MF9vcl8yNzAodW5zaWduZWQgaW50IHJvdGF0aW9uKQo+ICAJcmV0dXJuIHJvdGF0aW9uICYgKEJJ VChEUk1fUk9UQVRFXzkwKSB8IEJJVChEUk1fUk9UQVRFXzI3MCkpOwo+ICB9Cj4gIAo+ICt1bnNp Z25lZCBpbnQKPiAraW50ZWxfdGlsZV9oZWlnaHQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdWlu dDMyX3QgYml0c19wZXJfcGl4ZWwsCj4gKwkJICB1aW50NjRfdCBmYl9tb2RpZmllcik7Cj4gK3Zv aWQgaW50ZWxfY3JlYXRlX3JvdGF0aW9uX3Byb3BlcnR5KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs Cj4gKwkJCQkJc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSk7Cj4gKwo+ICBib29sIGludGVsX3dt X25lZWRfdXBkYXRlKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ICAJCQkgIHN0cnVjdCBkcm1f cGxhbmVfc3RhdGUgKnN0YXRlKTsKPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3Nwcml0ZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMK PiBpbmRleCBmNDFlODcyLi44M2FkYzliIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3Nwcml0ZS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3By aXRlLmMKPiBAQCAtMTkwLDEwICsxOTAsMTMgQEAgc2tsX3VwZGF0ZV9wbGFuZShzdHJ1Y3QgZHJt X3BsYW5lICpkcm1fcGxhbmUsIHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgCXN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmogPSBpbnRlbF9mYl9vYmooZmIpOwo+ICAJY29uc3QgaW50IHBp cGUgPSBpbnRlbF9wbGFuZS0+cGlwZTsKPiAgCWNvbnN0IGludCBwbGFuZSA9IGludGVsX3BsYW5l LT5wbGFuZSArIDE7Cj4gLQl1MzIgcGxhbmVfY3RsLCBzdHJpZGVfZGl2Owo+ICsJdTMyIHBsYW5l X2N0bCwgc3RyaWRlX2Rpdiwgc3RyaWRlOwo+ICAJaW50IHBpeGVsX3NpemUgPSBkcm1fZm9ybWF0 X3BsYW5lX2NwcChmYi0+cGl4ZWxfZm9ybWF0LCAwKTsKPiAgCWNvbnN0IHN0cnVjdCBkcm1faW50 ZWxfc3ByaXRlX2NvbG9ya2V5ICprZXkgPSAmaW50ZWxfcGxhbmUtPmNrZXk7Cj4gIAl1bnNpZ25l ZCBsb25nIHN1cmZfYWRkcjsKPiArCXUzMiB0aWxlX2hlaWdodCwgcGxhbmVfb2Zmc2V0LCBwbGFu ZV9zaXplOwo+ICsJdW5zaWduZWQgaW50IHJvdGF0aW9uOwo+ICsJaW50IHhfb2Zmc2V0LCB5X29m ZnNldDsKPiAgCj4gIAlwbGFuZV9jdGwgPSBQTEFORV9DVExfRU5BQkxFIHwKPiAgCQlQTEFORV9D VExfUElQRV9DU0NfRU5BQkxFOwo+IEBAIC0yNTQsOCArMjU3LDIwIEBAIHNrbF91cGRhdGVfcGxh bmUoc3RydWN0IGRybV9wbGFuZSAqZHJtX3BsYW5lLCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4g IAkJTUlTU0lOR19DQVNFKGZiLT5tb2RpZmllclswXSk7Cj4gIAl9Cj4gIAo+IC0JaWYgKGRybV9w bGFuZS0+c3RhdGUtPnJvdGF0aW9uID09IEJJVChEUk1fUk9UQVRFXzE4MCkpCj4gKwlyb3RhdGlv biA9IGRybV9wbGFuZS0+c3RhdGUtPnJvdGF0aW9uOwo+ICsJc3dpdGNoIChyb3RhdGlvbikgewo+ ICsJY2FzZSBCSVQoRFJNX1JPVEFURV85MCk6Cj4gKwkJcGxhbmVfY3RsIHw9IFBMQU5FX0NUTF9S T1RBVEVfOTA7Cj4gKwkJYnJlYWs7Cj4gKwo+ICsJY2FzZSBCSVQoRFJNX1JPVEFURV8xODApOgo+ ICAJCXBsYW5lX2N0bCB8PSBQTEFORV9DVExfUk9UQVRFXzE4MDsKPiArCQlicmVhazsKPiArCj4g KwljYXNlIEJJVChEUk1fUk9UQVRFXzI3MCk6Cj4gKwkJcGxhbmVfY3RsIHw9IFBMQU5FX0NUTF9S T1RBVEVfMjcwOwo+ICsJCWJyZWFrOwo+ICsJfQo+ICAKPiAgCWludGVsX3VwZGF0ZV9zcHJpdGVf d2F0ZXJtYXJrcyhkcm1fcGxhbmUsIGNydGMsIHNyY193LCBzcmNfaCwKPiAgCQkJCSAgICAgICBw aXhlbF9zaXplLCB0cnVlLAo+IEBAIC0yODMsMTAgKzI5OCwyNiBAQCBza2xfdXBkYXRlX3BsYW5l KHN0cnVjdCBkcm1fcGxhbmUgKmRybV9wbGFuZSwgc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAK PiAgCXN1cmZfYWRkciA9IGludGVsX3BsYW5lX29ial9vZmZzZXQoaW50ZWxfcGxhbmUsIG9iaik7 Cj4gIAo+IC0JSTkxNV9XUklURShQTEFORV9PRkZTRVQocGlwZSwgcGxhbmUpLCAoeSA8PCAxNikg fCB4KTsKPiAtCUk5MTVfV1JJVEUoUExBTkVfU1RSSURFKHBpcGUsIHBsYW5lKSwgZmItPnBpdGNo ZXNbMF0gLyBzdHJpZGVfZGl2KTsKPiArCWlmIChpbnRlbF9yb3RhdGlvbl85MF9vcl8yNzAocm90 YXRpb24pKSB7Cj4gKwkJLyogc3RyaWRlOiBTdXJmYWNlIGhlaWdodCBpbiB0aWxlcyAqLwo+ICsJ CXRpbGVfaGVpZ2h0ID0gaW50ZWxfdGlsZV9oZWlnaHQoZGV2LCBmYi0+Yml0c19wZXJfcGl4ZWws Cj4gKwkJCQkJCQlmYi0+bW9kaWZpZXJbMF0pOwo+ICsJCXN0cmlkZSA9IERJVl9ST1VORF9VUChm Yi0+aGVpZ2h0LCB0aWxlX2hlaWdodCk7Cj4gKwkJcGxhbmVfc2l6ZSA9IChzcmNfdyA8PCAxNikg fCBzcmNfaDsKPiArCQl4X29mZnNldCA9IHN0cmlkZSAqIHRpbGVfaGVpZ2h0IC0geSAtIChzcmNf aCArIDEpOwo+ICsJCXlfb2Zmc2V0ID0geDsKPiArCX0gZWxzZSB7Cj4gKwkJc3RyaWRlID0gZmIt PnBpdGNoZXNbMF0gLyBzdHJpZGVfZGl2Owo+ICsJCXBsYW5lX3NpemUgPSAoc3JjX2ggPDwgMTYp IHwgc3JjX3c7Cj4gKwkJeF9vZmZzZXQgPSB4Owo+ICsJCXlfb2Zmc2V0ID0geTsKPiArCX0KPiAr CXBsYW5lX29mZnNldCA9IHlfb2Zmc2V0IDw8IDE2IHwgeF9vZmZzZXQ7Cj4gKwo+ICsJSTkxNV9X UklURShQTEFORV9PRkZTRVQocGlwZSwgcGxhbmUpLCBwbGFuZV9vZmZzZXQpOwo+ICsJSTkxNV9X UklURShQTEFORV9TVFJJREUocGlwZSwgcGxhbmUpLCBzdHJpZGUpOwo+ICAJSTkxNV9XUklURShQ TEFORV9QT1MocGlwZSwgcGxhbmUpLCAoY3J0Y195IDw8IDE2KSB8IGNydGNfeCk7Cj4gLQlJOTE1 X1dSSVRFKFBMQU5FX1NJWkUocGlwZSwgcGxhbmUpLCAoY3J0Y19oIDw8IDE2KSB8IGNydGNfdyk7 Cj4gKwlJOTE1X1dSSVRFKFBMQU5FX1NJWkUocGlwZSwgcGxhbmUpLCBwbGFuZV9zaXplKTsKPiAg CUk5MTVfV1JJVEUoUExBTkVfQ1RMKHBpcGUsIHBsYW5lKSwgcGxhbmVfY3RsKTsKPiAgCUk5MTVf V1JJVEUoUExBTkVfU1VSRihwaXBlLCBwbGFuZSksIHN1cmZfYWRkcik7Cj4gIAlQT1NUSU5HX1JF QUQoUExBTkVfU1VSRihwaXBlLCBwbGFuZSkpOwo+IEBAIC0xMzEwLDE2ICsxMzQxLDcgQEAgaW50 ZWxfcGxhbmVfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBlbnVtIHBpcGUgcGlwZSwgaW50 IHBsYW5lKQo+ICAJCWdvdG8gb3V0Owo+ICAJfQo+ICAKPiAtCWlmICghZGV2LT5tb2RlX2NvbmZp Zy5yb3RhdGlvbl9wcm9wZXJ0eSkKPiAtCQlkZXYtPm1vZGVfY29uZmlnLnJvdGF0aW9uX3Byb3Bl cnR5ID0KPiAtCQkJZHJtX21vZGVfY3JlYXRlX3JvdGF0aW9uX3Byb3BlcnR5KGRldiwKPiAtCQkJ CQkJCSAgQklUKERSTV9ST1RBVEVfMCkgfAo+IC0JCQkJCQkJICBCSVQoRFJNX1JPVEFURV8xODAp KTsKPiAtCj4gLQlpZiAoZGV2LT5tb2RlX2NvbmZpZy5yb3RhdGlvbl9wcm9wZXJ0eSkKPiAtCQlk cm1fb2JqZWN0X2F0dGFjaF9wcm9wZXJ0eSgmaW50ZWxfcGxhbmUtPmJhc2UuYmFzZSwKPiAtCQkJ CQkgICBkZXYtPm1vZGVfY29uZmlnLnJvdGF0aW9uX3Byb3BlcnR5LAo+IC0JCQkJCSAgIHN0YXRl LT5iYXNlLnJvdGF0aW9uKTsKPiArCWludGVsX2NyZWF0ZV9yb3RhdGlvbl9wcm9wZXJ0eShkZXYs IGludGVsX3BsYW5lKTsKPiAgCj4gIAlkcm1fcGxhbmVfaGVscGVyX2FkZCgmaW50ZWxfcGxhbmUt PmJhc2UsICZpbnRlbF9wbGFuZV9oZWxwZXJfZnVuY3MpOwo+ICAKPiAtLSAKPiAxLjcuMTAuNAo+ IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gSW50 ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBo dHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cgot LSAKRGFuaWVsIFZldHRlcgpTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KaHR0 cDovL2Jsb2cuZmZ3bGwuY2gKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRl bC1nZngK