From mboxrd@z Thu Jan 1 00:00:00 1970 From: sonika.jindal@intel.com Subject: [PATCH] drm/i915: Add 180 degree primary plane rotation support Date: Mon, 7 Jul 2014 11:01:57 +0530 Message-ID: <1404711117-8845-1-git-send-email-sonika.jindal@intel.com> References: <20140704145836.GG7634@strange.ger.corp.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20140704145836.GG7634@strange.ger.corp.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org Cc: Sagar Kamble , dri-devel@lists.freedesktop.org, Daniel Vetter List-Id: dri-devel@lists.freedesktop.org RnJvbTogU29uaWthIEppbmRhbCA8c29uaWthLmppbmRhbEBpbnRlbC5jb20+CgpQcmltYXJ5IHBs YW5lcyBzdXBwb3J0IDE4MCBkZWdyZWUgcm90YXRpb24uIEV4cG9zZSB0aGUgZmVhdHVyZQp0aHJv dWdoIHJvdGF0aW9uIGRybSBwcm9wZXJ0eS4KCnYyOiBDYWxjdWxhdGluZyBsaW5lYXIvdGlsZWQg b2Zmc2V0cyBiYXNlZCBvbiBwaXBlIHNvdXJjZSB3aWR0aCBhbmQKaGVpZ2h0LiBBZGRlZCAxODAg ZGVncmVlIHJvdGF0aW9uIHN1cHBvcnQgaW4gaXJvbmxha2VfdXBkYXRlX3BsYW5lLgoKdjM6IENo ZWNraW5nIGlmIENSVEMgaXMgYWN0aXZlIGJlZm9yZSBpc3N1ZWluZyB1cGRhdGVfcGxhbmUuIEFk ZGVkCndhaXQgZm9yIHZibGFuayB0byBtYWtlIHN1cmUgd2UgZG9udCBvdmVydGFrZSBwYWdlIGZs aXBzLiBEaXNhYmxpbmcKRkJDIHNpbmNlIGl0IGRvZXMgbm90IHdvcmsgd2l0aCByb3RhdGVkIHBs YW5lcy4KCnY0OiBVcGRhdGVkIHJvdGF0aW9uIGNoZWNrcyBmb3IgcGVuZGluZyBmbGlwcywgZmJj IGRpc2FibGUuIENyZWF0aW5nCnJvdGF0aW9uIHByb3BlcnR5IG9ubHkgZm9yIEdlbjQgb253YXJk cy4gUHJvcGVydHkgcmVzZXR0aW5nIGFzIHBhcnQKb2YgbGFzdGNsb3NlLgoKdjU6IFJlc2V0dGlu ZyBwcm9wZXJ0eSBpbiBpOTE1X2RyaXZlcl9sYXN0Y2xvc2UgcHJvcGVybHkgZm9yIHBsYW5lcwph bmQgY3J0Y3MuIEZpeGVkIGxpbmVhciBvZmZzZXQgY2FsY3VsYXRpb24gdGhhdCB3YXMgb2ZmIGJ5 IDEgdy5yLnQKd2lkdGggaW4gaTl4eF91cGRhdGVfcGxhbmUgYW5kIGlyb25sYWtlX3VwZGF0ZV9w bGFuZS4gUmVtb3ZlZCB0YWIKYmFzZWQgaW5kZW50YXRpb24gYW5kIHVubmVjZXNzYXJ5IGJyYWNl cyBpbiBpbnRlbF9jcnRjX3NldF9wcm9wZXJ0eQphbmQgaW50ZWxfdXBkYXRlX2ZiYy4gRkJDIGFu ZCBmbGlwIHJlbGF0ZWQgY2hlY2tzIHNob3VsZCBiZSBkb25lIG9ubHkKZm9yIHZhbGlkIGNydGNz LgoKdjY6IE1pbm9yIG5pdHMgaW4gRkJDIGRpc2FibGUgY2hlY2tzIGZvciBjb21tZW50cyBpbiBp bnRlbF9jcnRjX3NldF9wcm9wZXJ0eQphbmQgcG9zaXRpb25pbmcgdGhlIGRpc2FibGUgY29kZSBp biBpbnRlbF91cGRhdGVfZmJjLgoKdjc6IEluIGNhc2Ugcm90YXRpb24gcHJvcGVydHkgb24gaW5h Y3RpdmUgY3J0YyBpcyB1cGRhdGVkLCB3ZSByZXR1cm4Kc3VjY2Vzc2Z1bGx5IHByaW50aW5nIGRl YnVnIGxvZyBhcyBjcnRjIGlzIGluYWN0aXZlIGFuZCBvbmx5IHByb3BlcnR5IGNoYW5nZQppcyBw cmVzZXJ2ZWQuCgp2ODogdXBkYXRlX3BsYW5lIGlzIGNoYW5nZWQgdG8gdXBkYXRlX3ByaW1hcnlf cGxhbmUsIGNydGMtPmZiIGlzIGNoYW5nZWQgdG8KY3J0Yy0+cHJpbWFyeS0+ZmIgIGFuZCByZXR1 cm4gdmFsdWUgb2YgdXBkYXRlX3ByaW1hcnlfcGxhbmUgaXMgaWdub3JlZC4KCnY5OiBhZGRlZCBy b3RhdGlvbiBwcm9wZXJ0eSB0byBwcmltYXJ5IHBsYW5lIGluc3RlYWQgb2YgY3J0Yy4gUmVtb3Zp bmcgcmVzZXQKb2Ygcm90YXRpb24gcHJvcGVydHkgZnJvbSBsYXN0Y2xvc2UuIHJvdGF0aW9uX3By b3BlcnR5IGlzIG1vdmVkIHRvIGRybV9wbGFuZSxzbwpkcm0gbGF5ZXIgd2lsbCB0YWtlIGNhcmUg b2YgcmVzZXR0aW5nLgoKdjEwOiBhZGRpbmcgdXBkYXRpb24gb2YgZmJjIHdoZW4gcm90YXRpb24g aXMgc2V0IHRvIDAuCgp2MTE6IGFkZGluZyBtdXRleCBsb2NrcyBmb3IgdXBkYXRlX2ZiYy4gQWxs b3dpbmcgcm90YXRpb24gb25seSBpZiB2YWx1ZSBpcwpkaWZmZXJlbnQgdGhhbiBvbGQgb25lLiBP dGhlciBtaW5vciBjbGVhbnVwcy4KClRlc3RjYXNlOiBpZ3Qva21zX3JvdGF0aW9uX2NyYwoKQ2M6 IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAZmZ3bGwuY2g+CkNjOiBkcmktZGV2ZWxAbGlz dHMuZnJlZWRlc2t0b3Aub3JnClNpZ25lZC1vZmYtYnk6IFVtYSBTaGFua2FyIDx1bWEuc2hhbmth ckBpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IFNhZ2FyIEthbWJsZSA8c2FnYXIuYS5rYW1ibGVA aW50ZWwuY29tPgpSZXZpZXdlZC1ieTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxp bnV4LmludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oICAgICAg fCAgICAxICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyB8ICAxMDkgKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKystLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfcG0uYyAgICAgIHwgICAgNyArKysKIDMgZmlsZXMgY2hhbmdlZCwgMTEyIGluc2VydGlvbnMo KyksIDUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9yZWcuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKaW5kZXggYzcwYzgwNC4u YzYwMGQzYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAorKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCkBAIC00MDg3LDYgKzQwODcsNyBAQCBl bnVtIHB1bml0X3Bvd2VyX3dlbGwgewogI2RlZmluZSAgIERJU1BQTEFORV9OT19MSU5FX0RPVUJM RQkJMAogI2RlZmluZSAgIERJU1BQTEFORV9TVEVSRU9fUE9MQVJJVFlfRklSU1QJMAogI2RlZmlu ZSAgIERJU1BQTEFORV9TVEVSRU9fUE9MQVJJVFlfU0VDT05ECSgxPDwxOCkKKyNkZWZpbmUgICBE SVNQUExBTkVfUk9UQVRFXzE4MCAgICAgICAgICgxPDwxNSkKICNkZWZpbmUgICBESVNQUExBTkVf VFJJQ0tMRV9GRUVEX0RJU0FCTEUJKDE8PDE0KSAvKiBJcm9ubGFrZSAqLwogI2RlZmluZSAgIERJ U1BQTEFORV9USUxFRAkJCSgxPDwxMCkKICNkZWZpbmUgX0RTUEFBRERSCQkJCTB4NzAxODQKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwppbmRleCA1ZThlNzExLi40N2VmMWM4IDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCkBAIC0yNDE0LDcgKzI0MTQsOSBAQCBzdGF0 aWMgdm9pZCBpOXh4X3VwZGF0ZV9wcmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywK IAl1bnNpZ25lZCBsb25nIGxpbmVhcl9vZmZzZXQ7CiAJdTMyIGRzcGNudHI7CiAJdTMyIHJlZzsK KwlpbnQgcGl4ZWxfc2l6ZTsKIAorCXBpeGVsX3NpemUgPSBkcm1fZm9ybWF0X3BsYW5lX2NwcChm Yi0+cGl4ZWxfZm9ybWF0LCAwKTsKIAlpbnRlbF9mYiA9IHRvX2ludGVsX2ZyYW1lYnVmZmVyKGZi KTsKIAlvYmogPSBpbnRlbF9mYi0+b2JqOwogCkBAIC0yNDIyLDYgKzI0MjQsOCBAQCBzdGF0aWMg dm9pZCBpOXh4X3VwZGF0ZV9wcmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAlk c3BjbnRyID0gSTkxNV9SRUFEKHJlZyk7CiAJLyogTWFzayBvdXQgcGl4ZWwgZm9ybWF0IGJpdHMg aW4gY2FzZSB3ZSBjaGFuZ2UgaXQgKi8KIAlkc3BjbnRyICY9IH5ESVNQUExBTkVfUElYRk9STUFU X01BU0s7CisJZHNwY250ciAmPSB+RElTUFBMQU5FX1JPVEFURV8xODA7CisKIAlzd2l0Y2ggKGZi LT5waXhlbF9mb3JtYXQpIHsKIAljYXNlIERSTV9GT1JNQVRfQzg6CiAJCWRzcGNudHIgfD0gRElT UFBMQU5FXzhCUFA7CkBAIC0yNDYzLDggKzI0NjcsNiBAQCBzdGF0aWMgdm9pZCBpOXh4X3VwZGF0 ZV9wcmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAlpZiAoSVNfRzRYKGRldikp CiAJCWRzcGNudHIgfD0gRElTUFBMQU5FX1RSSUNLTEVfRkVFRF9ESVNBQkxFOwogCi0JSTkxNV9X UklURShyZWcsIGRzcGNudHIpOwotCiAJbGluZWFyX29mZnNldCA9IHkgKiBmYi0+cGl0Y2hlc1sw XSArIHggKiAoZmItPmJpdHNfcGVyX3BpeGVsIC8gOCk7CiAKIAlpZiAoSU5URUxfSU5GTyhkZXYp LT5nZW4gPj0gNCkgewpAQCAtMjQ3Nyw2ICsyNDc5LDE4IEBAIHN0YXRpYyB2b2lkIGk5eHhfdXBk YXRlX3ByaW1hcnlfcGxhbmUoc3RydWN0IGRybV9jcnRjICpjcnRjLAogCQlpbnRlbF9jcnRjLT5k c3BhZGRyX29mZnNldCA9IGxpbmVhcl9vZmZzZXQ7CiAJfQogCisJaWYgKHRvX2ludGVsX3BsYW5l KGNydGMtPnByaW1hcnkpLT5yb3RhdGlvbiA9PSBCSVQoRFJNX1JPVEFURV8xODApKSB7CisJCWRz cGNudHIgfD0gRElTUFBMQU5FX1JPVEFURV8xODA7CisKKwkJeCArPSAoaW50ZWxfY3J0Yy0+Y29u ZmlnLnBpcGVfc3JjX3cgLSAxKTsKKwkJeSArPSAoaW50ZWxfY3J0Yy0+Y29uZmlnLnBpcGVfc3Jj X2ggLSAxKTsKKwkJbGluZWFyX29mZnNldCArPSAoaW50ZWxfY3J0Yy0+Y29uZmlnLnBpcGVfc3Jj X2ggLSAxKSAqCisJCQlmYi0+cGl0Y2hlc1swXSArCisJCQkoaW50ZWxfY3J0Yy0+Y29uZmlnLnBp cGVfc3JjX3cgLSAxKSAqIHBpeGVsX3NpemU7CisJfQorCisJSTkxNV9XUklURShyZWcsIGRzcGNu dHIpOworCiAJRFJNX0RFQlVHX0tNUygiV3JpdGluZyBiYXNlICUwOGxYICUwOGxYICVkICVkICVk XG4iLAogCQkgICAgICBpOTE1X2dlbV9vYmpfZ2d0dF9vZmZzZXQob2JqKSwgbGluZWFyX29mZnNl dCwgeCwgeSwKIAkJICAgICAgZmItPnBpdGNoZXNbMF0pOwpAQCAtMjQ4Nyw3ICsyNTAxLDggQEAg c3RhdGljIHZvaWQgaTl4eF91cGRhdGVfcHJpbWFyeV9wbGFuZShzdHJ1Y3QgZHJtX2NydGMgKmNy dGMsCiAJCUk5MTVfV1JJVEUoRFNQVElMRU9GRihwbGFuZSksICh5IDw8IDE2KSB8IHgpOwogCQlJ OTE1X1dSSVRFKERTUExJTk9GRihwbGFuZSksIGxpbmVhcl9vZmZzZXQpOwogCX0gZWxzZQotCQlJ OTE1X1dSSVRFKERTUEFERFIocGxhbmUpLCBpOTE1X2dlbV9vYmpfZ2d0dF9vZmZzZXQob2JqKSAr IGxpbmVhcl9vZmZzZXQpOworCQlJOTE1X1dSSVRFKERTUEFERFIocGxhbmUpLCBpOTE1X2dlbV9v YmpfZ2d0dF9vZmZzZXQob2JqKSArCisJCQkJbGluZWFyX29mZnNldCk7CiAJUE9TVElOR19SRUFE KHJlZyk7CiB9CiAKQEAgLTI1MDQsNyArMjUxOSw5IEBAIHN0YXRpYyB2b2lkIGlyb25sYWtlX3Vw ZGF0ZV9wcmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAl1bnNpZ25lZCBsb25n IGxpbmVhcl9vZmZzZXQ7CiAJdTMyIGRzcGNudHI7CiAJdTMyIHJlZzsKKwlpbnQgcGl4ZWxfc2l6 ZTsKIAorCXBpeGVsX3NpemUgPSBkcm1fZm9ybWF0X3BsYW5lX2NwcChmYi0+cGl4ZWxfZm9ybWF0 LCAwKTsKIAlpbnRlbF9mYiA9IHRvX2ludGVsX2ZyYW1lYnVmZmVyKGZiKTsKIAlvYmogPSBpbnRl bF9mYi0+b2JqOwogCkBAIC0yNTEyLDYgKzI1MjksOCBAQCBzdGF0aWMgdm9pZCBpcm9ubGFrZV91 cGRhdGVfcHJpbWFyeV9wbGFuZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJZHNwY250ciA9IEk5 MTVfUkVBRChyZWcpOwogCS8qIE1hc2sgb3V0IHBpeGVsIGZvcm1hdCBiaXRzIGluIGNhc2Ugd2Ug Y2hhbmdlIGl0ICovCiAJZHNwY250ciAmPSB+RElTUFBMQU5FX1BJWEZPUk1BVF9NQVNLOworCWRz cGNudHIgJj0gfkRJU1BQTEFORV9ST1RBVEVfMTgwOworCiAJc3dpdGNoIChmYi0+cGl4ZWxfZm9y bWF0KSB7CiAJY2FzZSBEUk1fRk9STUFUX0M4OgogCQlkc3BjbnRyIHw9IERJU1BQTEFORV84QlBQ OwpAQCAtMjU0OSw4ICsyNTY4LDYgQEAgc3RhdGljIHZvaWQgaXJvbmxha2VfdXBkYXRlX3ByaW1h cnlfcGxhbmUoc3RydWN0IGRybV9jcnRjICpjcnRjLAogCWVsc2UKIAkJZHNwY250ciB8PSBESVNQ UExBTkVfVFJJQ0tMRV9GRUVEX0RJU0FCTEU7CiAKLQlJOTE1X1dSSVRFKHJlZywgZHNwY250cik7 Ci0KIAlsaW5lYXJfb2Zmc2V0ID0geSAqIGZiLT5waXRjaGVzWzBdICsgeCAqIChmYi0+Yml0c19w ZXJfcGl4ZWwgLyA4KTsKIAlpbnRlbF9jcnRjLT5kc3BhZGRyX29mZnNldCA9CiAJCWludGVsX2dl bjRfY29tcHV0ZV9wYWdlX29mZnNldCgmeCwgJnksIG9iai0+dGlsaW5nX21vZGUsCkBAIC0yNTU4 LDYgKzI1NzUsMjEgQEAgc3RhdGljIHZvaWQgaXJvbmxha2VfdXBkYXRlX3ByaW1hcnlfcGxhbmUo c3RydWN0IGRybV9jcnRjICpjcnRjLAogCQkJCQkgICAgICAgZmItPnBpdGNoZXNbMF0pOwogCWxp bmVhcl9vZmZzZXQgLT0gaW50ZWxfY3J0Yy0+ZHNwYWRkcl9vZmZzZXQ7CiAKKwlpZiAodG9faW50 ZWxfcGxhbmUoY3J0Yy0+cHJpbWFyeSktPnJvdGF0aW9uID09IEJJVChEUk1fUk9UQVRFXzE4MCkp IHsKKwkJZHNwY250ciB8PSBESVNQUExBTkVfUk9UQVRFXzE4MDsKKworCQlpZiAoIUlTX0hBU1dF TEwoZGV2KSAmJiAhSVNfQlJPQURXRUxMKGRldikpIHsKKwkJCXggKz0gKGludGVsX2NydGMtPmNv bmZpZy5waXBlX3NyY193IC0gMSk7CisJCQl5ICs9IChpbnRlbF9jcnRjLT5jb25maWcucGlwZV9z cmNfaCAtIDEpOworCQkJbGluZWFyX29mZnNldCArPQorCQkJKGludGVsX2NydGMtPmNvbmZpZy5w aXBlX3NyY19oIC0gMSkgKgorCQkJZmItPnBpdGNoZXNbMF0gKyAoaW50ZWxfY3J0Yy0+Y29uZmln LnBpcGVfc3JjX3cgLSAxKSAqCisJCQlwaXhlbF9zaXplOworCQl9CisJfQorCisJSTkxNV9XUklU RShyZWcsIGRzcGNudHIpOworCiAJRFJNX0RFQlVHX0tNUygiV3JpdGluZyBiYXNlICUwOGxYICUw OGxYICVkICVkICVkXG4iLAogCQkgICAgICBpOTE1X2dlbV9vYmpfZ2d0dF9vZmZzZXQob2JqKSwg bGluZWFyX29mZnNldCwgeCwgeSwKIAkJICAgICAgZmItPnBpdGNoZXNbMF0pOwpAQCAtMTEzMjQs MTAgKzExMzU2LDY0IEBAIHN0YXRpYyB2b2lkIGludGVsX3BsYW5lX2Rlc3Ryb3koc3RydWN0IGRy bV9wbGFuZSAqcGxhbmUpCiAJa2ZyZWUoaW50ZWxfcGxhbmUpOwogfQogCitzdGF0aWMgaW50IGlu dGVsX3ByaW1hcnlfcGxhbmVfc2V0X3Byb3BlcnR5KHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAor CQkJCSAgICBzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpwcm9wLAorCQkJCSAgICB1aW50NjRfdCB2YWwp Cit7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHBsYW5lLT5kZXY7CisJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwlzdHJ1Y3QgaW50ZWxf cGxhbmUgKmludGVsX3BsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmUpOworCXN0cnVjdCBkcm1f Y3J0YyAqY3J0YyA9IHBsYW5lLT5jcnRjOworCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRj OworCXVpbnQ2NF90IG9sZF92YWw7CisKKwlpZiAocHJvcCA9PSBwbGFuZS0+cm90YXRpb25fcHJv cGVydHkpIHsKKwkJLyogZXhhY3RseSBvbmUgcm90YXRpb24gYW5nbGUgcGxlYXNlICovCisJCWlm IChod2VpZ2h0MzIodmFsICYgMHhmKSAhPSAxKQorCQkJcmV0dXJuIC1FSU5WQUw7CisKKwkJb2xk X3ZhbCA9IGludGVsX3BsYW5lLT5yb3RhdGlvbjsKKwkJaW50ZWxfcGxhbmUtPnJvdGF0aW9uID0g dmFsOworCisJCWlmIChvbGRfdmFsID09IGludGVsX3BsYW5lLT5yb3RhdGlvbikKKwkJCXJldHVy biAwOworCisJCWludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKHBsYW5lLT5jcnRjKTsKKworCQlp ZiAoaW50ZWxfY3J0YyAmJiBpbnRlbF9jcnRjLT5hY3RpdmUgJiYgaW50ZWxfY3J0Yy0+cHJpbWFy eV9lbmFibGVkKSB7CisJCQlpbnRlbF9jcnRjX3dhaXRfZm9yX3BlbmRpbmdfZmxpcHMoY3J0Yyk7 CisKKwkJLyogRkJDIGRvZXMgbm90IHdvcmsgb24gc29tZSBwbGF0Zm9ybXMgZm9yIHJvdGF0ZWQg cGxhbmVzICovCisJCQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPD0gNCAmJiAhSVNfRzRYKGRl dikpIHsKKwkJCQlpZiAoZGV2X3ByaXYtPmZiYy5wbGFuZSA9PSBpbnRlbF9jcnRjLT5wbGFuZSAm JgorCQkJCQlpbnRlbF9wbGFuZS0+cm90YXRpb24gIT0gQklUKERSTV9ST1RBVEVfMCkpCisJCQkJ CWludGVsX2Rpc2FibGVfZmJjKGRldik7CisJCQkJLyogSWYgcm90YXRpb24gd2FzIHNldCBlYXJs aWVyIGFuZCBuZXcgcm90YXRpb24gaXMgMCwgd2UgbWlnaHQKKwkJCQkgKiBoYXZlIGRpc2FibGVk IGZiYyBlYXJsaWVyLiBTbyB1cGRhdGUgaXQgbm93ICovCisJCQkJZWxzZSBpZiAoaW50ZWxfcGxh bmUtPnJvdGF0aW9uID09IEJJVChEUk1fUk9UQVRFXzApICYmCisJCQkJCW9sZF92YWwgIT0gQklU KERSTV9ST1RBVEVfMCkpIHsKKwkJCQkJbXV0ZXhfbG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwor CQkJCQlpbnRlbF91cGRhdGVfZmJjKGRldik7CisJCQkJCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1 Y3RfbXV0ZXgpOworCQkJCX0KKwkJCX0KKworCQkJZGV2X3ByaXYtPmRpc3BsYXkudXBkYXRlX3By aW1hcnlfcGxhbmUoY3J0YywKKwkJCQljcnRjLT5wcmltYXJ5LT5mYiwgMCwgMCk7CisKKwkJfSBl bHNlIHsKKwkJCURSTV9ERUJVR19LTVMoIltDUlRDOiVkXSBpcyBub3QgYWN0aXZlLiBPbmx5IHJv dGF0aW9uIgorCQkJCSJwcm9wZXJ0eSBpcyB1cGRhdGVkXG4iLCBjcnRjLT5iYXNlLmlkKTsKKwkJ fQorCX0KKwlyZXR1cm4gMDsKK30KKwogc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfZnVu Y3MgaW50ZWxfcHJpbWFyeV9wbGFuZV9mdW5jcyA9IHsKIAkudXBkYXRlX3BsYW5lID0gaW50ZWxf cHJpbWFyeV9wbGFuZV9zZXRwbGFuZSwKIAkuZGlzYWJsZV9wbGFuZSA9IGludGVsX3ByaW1hcnlf cGxhbmVfZGlzYWJsZSwKIAkuZGVzdHJveSA9IGludGVsX3BsYW5lX2Rlc3Ryb3ksCisJLnNldF9w cm9wZXJ0eSA9IGludGVsX3ByaW1hcnlfcGxhbmVfc2V0X3Byb3BlcnR5CiB9OwogCiBzdGF0aWMg c3RydWN0IGRybV9wbGFuZSAqaW50ZWxfcHJpbWFyeV9wbGFuZV9jcmVhdGUoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwKQEAgLTExMzQ1LDYgKzExNDMxLDcgQEAgc3RhdGljIHN0cnVjdCBkcm1fcGxh bmUgKmludGVsX3ByaW1hcnlfcGxhbmVfY3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJ cHJpbWFyeS0+bWF4X2Rvd25zY2FsZSA9IDE7CiAJcHJpbWFyeS0+cGlwZSA9IHBpcGU7CiAJcHJp bWFyeS0+cGxhbmUgPSBwaXBlOworCXByaW1hcnktPnJvdGF0aW9uID0gQklUKERSTV9ST1RBVEVf MCk7CiAJaWYgKEhBU19GQkMoZGV2KSAmJiBJTlRFTF9JTkZPKGRldiktPmdlbiA8IDQpCiAJCXBy aW1hcnktPnBsYW5lID0gIXBpcGU7CiAKQEAgLTExMzYwLDYgKzExNDQ3LDE4IEBAIHN0YXRpYyBz dHJ1Y3QgZHJtX3BsYW5lICppbnRlbF9wcmltYXJ5X3BsYW5lX2NyZWF0ZShzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LAogCQkJCSAmaW50ZWxfcHJpbWFyeV9wbGFuZV9mdW5jcywKIAkJCQkgaW50ZWxf cHJpbWFyeV9mb3JtYXRzLCBudW1fZm9ybWF0cywKIAkJCQkgRFJNX1BMQU5FX1RZUEVfUFJJTUFS WSk7CisJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDQpIHsKKwkJaWYgKCFwcmltYXJ5LT5i YXNlLnJvdGF0aW9uX3Byb3BlcnR5KQorCQkJcHJpbWFyeS0+YmFzZS5yb3RhdGlvbl9wcm9wZXJ0 eSA9CisJCQkJZHJtX21vZGVfY3JlYXRlX3JvdGF0aW9uX3Byb3BlcnR5KGRldiwKKwkJCQkJCQlC SVQoRFJNX1JPVEFURV8wKSB8CisJCQkJCQkJQklUKERSTV9ST1RBVEVfMTgwKSk7CisJCWlmIChw cmltYXJ5LT5iYXNlLnJvdGF0aW9uX3Byb3BlcnR5KQorCQkJZHJtX29iamVjdF9hdHRhY2hfcHJv cGVydHkoJnByaW1hcnktPmJhc2UuYmFzZSwKKwkJCQkJCXByaW1hcnktPmJhc2Uucm90YXRpb25f cHJvcGVydHksCisJCQkJCQlwcmltYXJ5LT5yb3RhdGlvbik7CisJfQorCiAJcmV0dXJuICZwcmlt YXJ5LT5iYXNlOwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9w bS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwppbmRleCAyMDQzYzRiLi5iZDZh ZjkxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKQEAgLTU2Miw2ICs1NjIsMTMgQEAgdm9pZCBp bnRlbF91cGRhdGVfZmJjKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJCWdvdG8gb3V0X2Rpc2Fi bGU7CiAJfQogCisJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuIDw9IDQgJiYgIUlTX0c0WChkZXYp ICYmCisJICAgIHRvX2ludGVsX3BsYW5lKGNydGMtPnByaW1hcnkpLT5yb3RhdGlvbiAhPSBCSVQo RFJNX1JPVEFURV8wKSkgeworCQlpZiAoc2V0X25vX2ZiY19yZWFzb24oZGV2X3ByaXYsIEZCQ19V TlNVUFBPUlRFRF9NT0RFKSkKKwkJCURSTV9ERUJVR19LTVMoIlJvdGF0aW9uIHVuc3VwcG9ydGVk LCBkaXNhYmxpbmdcbiIpOworCQlnb3RvIG91dF9kaXNhYmxlOworCX0KKwogCS8qIElmIHRoZSBr ZXJuZWwgZGVidWdnZXIgaXMgYWN0aXZlLCBhbHdheXMgZGlzYWJsZSBjb21wcmVzc2lvbiAqLwog CWlmIChpbl9kYmdfbWFzdGVyKCkpCiAJCWdvdG8gb3V0X2Rpc2FibGU7Ci0tIAoxLjcuMTAuNAoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4 IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK