From mboxrd@z Thu Jan 1 00:00:00 1970 From: sonika.jindal@intel.com Subject: [v2 10/11] drm/i915: Add 180 degree primary plane rotation support Date: Fri, 4 Jul 2014 15:14:02 +0530 Message-ID: <1404467043-5072-11-git-send-email-sonika.jindal@intel.com> References: <1404467043-5072-1-git-send-email-sonika.jindal@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1404467043-5072-1-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: intel-gfx@lists.freedesktop.org Cc: Sagar Kamble , dri-devel@lists.freedesktop.org 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 aXMgc2V0IHRvIDAuCgpUZXN0Y2FzZTogaWd0L2ttc19yb3RhdGlvbl9jcmMKCkNjOiBkcmktZGV2 ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnClNpZ25lZC1vZmYtYnk6IFVtYSBTaGFua2FyIDx1bWEu c2hhbmthckBpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IFNhZ2FyIEthbWJsZSA8c2FnYXIuYS5r YW1ibGVAaW50ZWwuY29tPgpSZXZpZXdlZC1ieTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJq YWxhQGxpbnV4LmludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5o ICAgICAgfCAgICAxICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyB8ICAx MDIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLQogZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcG0uYyAgICAgIHwgICAgNyArKysKIDMgZmlsZXMgY2hhbmdlZCwgMTA1IGluc2Vy dGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9yZWcuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKaW5kZXggYzcw YzgwNC4uYzYwMGQzYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcu aAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCkBAIC00MDg3LDYgKzQwODcs NyBAQCBlbnVtIHB1bml0X3Bvd2VyX3dlbGwgewogI2RlZmluZSAgIERJU1BQTEFORV9OT19MSU5F X0RPVUJMRQkJMAogI2RlZmluZSAgIERJU1BQTEFORV9TVEVSRU9fUE9MQVJJVFlfRklSU1QJMAog I2RlZmluZSAgIERJU1BQTEFORV9TVEVSRU9fUE9MQVJJVFlfU0VDT05ECSgxPDwxOCkKKyNkZWZp bmUgICBESVNQUExBTkVfUk9UQVRFXzE4MCAgICAgICAgICgxPDwxNSkKICNkZWZpbmUgICBESVNQ UExBTkVfVFJJQ0tMRV9GRUVEX0RJU0FCTEUJKDE8PDE0KSAvKiBJcm9ubGFrZSAqLwogI2RlZmlu ZSAgIERJU1BQTEFORV9USUxFRAkJCSgxPDwxMCkKICNkZWZpbmUgX0RTUEFBRERSCQkJCTB4NzAx ODQKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwppbmRleCA1ZThlNzExLi43ZjE2ZDZm IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCkBAIC0yNDE0LDcgKzI0MTQsOSBA QCBzdGF0aWMgdm9pZCBpOXh4X3VwZGF0ZV9wcmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1fY3J0YyAq Y3J0YywKIAl1bnNpZ25lZCBsb25nIGxpbmVhcl9vZmZzZXQ7CiAJdTMyIGRzcGNudHI7CiAJdTMy IHJlZzsKKwlpbnQgcGl4ZWxfc2l6ZTsKIAorCXBpeGVsX3NpemUgPSBkcm1fZm9ybWF0X3BsYW5l X2NwcChmYi0+cGl4ZWxfZm9ybWF0LCAwKTsKIAlpbnRlbF9mYiA9IHRvX2ludGVsX2ZyYW1lYnVm ZmVyKGZiKTsKIAlvYmogPSBpbnRlbF9mYi0+b2JqOwogCkBAIC0yNDIyLDYgKzI0MjQsOCBAQCBz dGF0aWMgdm9pZCBpOXh4X3VwZGF0ZV9wcmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1fY3J0YyAqY3J0 YywKIAlkc3BjbnRyID0gSTkxNV9SRUFEKHJlZyk7CiAJLyogTWFzayBvdXQgcGl4ZWwgZm9ybWF0 IGJpdHMgaW4gY2FzZSB3ZSBjaGFuZ2UgaXQgKi8KIAlkc3BjbnRyICY9IH5ESVNQUExBTkVfUElY Rk9STUFUX01BU0s7CisJZHNwY250ciAmPSB+RElTUFBMQU5FX1JPVEFURV8xODA7CisKIAlzd2l0 Y2ggKGZiLT5waXhlbF9mb3JtYXQpIHsKIAljYXNlIERSTV9GT1JNQVRfQzg6CiAJCWRzcGNudHIg fD0gRElTUFBMQU5FXzhCUFA7CkBAIC0yNDYzLDggKzI0NjcsNiBAQCBzdGF0aWMgdm9pZCBpOXh4 X3VwZGF0ZV9wcmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAlpZiAoSVNfRzRY KGRldikpCiAJCWRzcGNudHIgfD0gRElTUFBMQU5FX1RSSUNLTEVfRkVFRF9ESVNBQkxFOwogCi0J STkxNV9XUklURShyZWcsIGRzcGNudHIpOwotCiAJbGluZWFyX29mZnNldCA9IHkgKiBmYi0+cGl0 Y2hlc1swXSArIHggKiAoZmItPmJpdHNfcGVyX3BpeGVsIC8gOCk7CiAKIAlpZiAoSU5URUxfSU5G TyhkZXYpLT5nZW4gPj0gNCkgewpAQCAtMjQ3Nyw2ICsyNDc5LDE4IEBAIHN0YXRpYyB2b2lkIGk5 eHhfdXBkYXRlX3ByaW1hcnlfcGxhbmUoc3RydWN0IGRybV9jcnRjICpjcnRjLAogCQlpbnRlbF9j cnRjLT5kc3BhZGRyX29mZnNldCA9IGxpbmVhcl9vZmZzZXQ7CiAJfQogCisJaWYgKHRvX2ludGVs X3BsYW5lKGNydGMtPnByaW1hcnkpLT5yb3RhdGlvbiA9PSBCSVQoRFJNX1JPVEFURV8xODApKSB7 CisJCWRzcGNudHIgfD0gRElTUFBMQU5FX1JPVEFURV8xODA7CisKKwkJeCArPSAoaW50ZWxfY3J0 Yy0+Y29uZmlnLnBpcGVfc3JjX3cgLSAxKTsKKwkJeSArPSAoaW50ZWxfY3J0Yy0+Y29uZmlnLnBp cGVfc3JjX2ggLSAxKTsKKwkJbGluZWFyX29mZnNldCArPSAoaW50ZWxfY3J0Yy0+Y29uZmlnLnBp cGVfc3JjX2ggLSAxKSAqCisJCQlmYi0+cGl0Y2hlc1swXSArCisJCQkoaW50ZWxfY3J0Yy0+Y29u ZmlnLnBpcGVfc3JjX3cgLSAxKSAqIHBpeGVsX3NpemU7CisJfQorCisJSTkxNV9XUklURShyZWcs IGRzcGNudHIpOworCiAJRFJNX0RFQlVHX0tNUygiV3JpdGluZyBiYXNlICUwOGxYICUwOGxYICVk ICVkICVkXG4iLAogCQkgICAgICBpOTE1X2dlbV9vYmpfZ2d0dF9vZmZzZXQob2JqKSwgbGluZWFy X29mZnNldCwgeCwgeSwKIAkJICAgICAgZmItPnBpdGNoZXNbMF0pOwpAQCAtMjQ4Nyw3ICsyNTAx LDggQEAgc3RhdGljIHZvaWQgaTl4eF91cGRhdGVfcHJpbWFyeV9wbGFuZShzdHJ1Y3QgZHJtX2Ny dGMgKmNydGMsCiAJCUk5MTVfV1JJVEUoRFNQVElMRU9GRihwbGFuZSksICh5IDw8IDE2KSB8IHgp OwogCQlJOTE1X1dSSVRFKERTUExJTk9GRihwbGFuZSksIGxpbmVhcl9vZmZzZXQpOwogCX0gZWxz ZQotCQlJOTE1X1dSSVRFKERTUEFERFIocGxhbmUpLCBpOTE1X2dlbV9vYmpfZ2d0dF9vZmZzZXQo b2JqKSArIGxpbmVhcl9vZmZzZXQpOworCQlJOTE1X1dSSVRFKERTUEFERFIocGxhbmUpLCBpOTE1 X2dlbV9vYmpfZ2d0dF9vZmZzZXQob2JqKSArCisJCQkJbGluZWFyX29mZnNldCk7CiAJUE9TVElO R19SRUFEKHJlZyk7CiB9CiAKQEAgLTI1MDQsNyArMjUxOSw5IEBAIHN0YXRpYyB2b2lkIGlyb25s YWtlX3VwZGF0ZV9wcmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAl1bnNpZ25l ZCBsb25nIGxpbmVhcl9vZmZzZXQ7CiAJdTMyIGRzcGNudHI7CiAJdTMyIHJlZzsKKwlpbnQgcGl4 ZWxfc2l6ZTsKIAorCXBpeGVsX3NpemUgPSBkcm1fZm9ybWF0X3BsYW5lX2NwcChmYi0+cGl4ZWxf Zm9ybWF0LCAwKTsKIAlpbnRlbF9mYiA9IHRvX2ludGVsX2ZyYW1lYnVmZmVyKGZiKTsKIAlvYmog PSBpbnRlbF9mYi0+b2JqOwogCkBAIC0yNTEyLDYgKzI1MjksOCBAQCBzdGF0aWMgdm9pZCBpcm9u bGFrZV91cGRhdGVfcHJpbWFyeV9wbGFuZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJZHNwY250 ciA9IEk5MTVfUkVBRChyZWcpOwogCS8qIE1hc2sgb3V0IHBpeGVsIGZvcm1hdCBiaXRzIGluIGNh c2Ugd2UgY2hhbmdlIGl0ICovCiAJZHNwY250ciAmPSB+RElTUFBMQU5FX1BJWEZPUk1BVF9NQVNL OworCWRzcGNudHIgJj0gfkRJU1BQTEFORV9ST1RBVEVfMTgwOworCiAJc3dpdGNoIChmYi0+cGl4 ZWxfZm9ybWF0KSB7CiAJY2FzZSBEUk1fRk9STUFUX0M4OgogCQlkc3BjbnRyIHw9IERJU1BQTEFO RV84QlBQOwpAQCAtMjU0OSw4ICsyNTY4LDYgQEAgc3RhdGljIHZvaWQgaXJvbmxha2VfdXBkYXRl X3ByaW1hcnlfcGxhbmUoc3RydWN0IGRybV9jcnRjICpjcnRjLAogCWVsc2UKIAkJZHNwY250ciB8 PSBESVNQUExBTkVfVFJJQ0tMRV9GRUVEX0RJU0FCTEU7CiAKLQlJOTE1X1dSSVRFKHJlZywgZHNw Y250cik7Ci0KIAlsaW5lYXJfb2Zmc2V0ID0geSAqIGZiLT5waXRjaGVzWzBdICsgeCAqIChmYi0+ Yml0c19wZXJfcGl4ZWwgLyA4KTsKIAlpbnRlbF9jcnRjLT5kc3BhZGRyX29mZnNldCA9CiAJCWlu dGVsX2dlbjRfY29tcHV0ZV9wYWdlX29mZnNldCgmeCwgJnksIG9iai0+dGlsaW5nX21vZGUsCkBA IC0yNTU4LDYgKzI1NzUsMjEgQEAgc3RhdGljIHZvaWQgaXJvbmxha2VfdXBkYXRlX3ByaW1hcnlf cGxhbmUoc3RydWN0IGRybV9jcnRjICpjcnRjLAogCQkJCQkgICAgICAgZmItPnBpdGNoZXNbMF0p OwogCWxpbmVhcl9vZmZzZXQgLT0gaW50ZWxfY3J0Yy0+ZHNwYWRkcl9vZmZzZXQ7CiAKKwlpZiAo dG9faW50ZWxfcGxhbmUoY3J0Yy0+cHJpbWFyeSktPnJvdGF0aW9uID09IEJJVChEUk1fUk9UQVRF XzE4MCkpIHsKKwkJZHNwY250ciB8PSBESVNQUExBTkVfUk9UQVRFXzE4MDsKKworCQlpZiAoIUlT X0hBU1dFTEwoZGV2KSAmJiAhSVNfQlJPQURXRUxMKGRldikpIHsKKwkJCXggKz0gKGludGVsX2Ny dGMtPmNvbmZpZy5waXBlX3NyY193IC0gMSk7CisJCQl5ICs9IChpbnRlbF9jcnRjLT5jb25maWcu cGlwZV9zcmNfaCAtIDEpOworCQkJbGluZWFyX29mZnNldCArPQorCQkJKGludGVsX2NydGMtPmNv bmZpZy5waXBlX3NyY19oIC0gMSkgKgorCQkJZmItPnBpdGNoZXNbMF0gKyAoaW50ZWxfY3J0Yy0+ Y29uZmlnLnBpcGVfc3JjX3cgLSAxKSAqCisJCQlwaXhlbF9zaXplOworCQl9CisJfQorCisJSTkx NV9XUklURShyZWcsIGRzcGNudHIpOworCiAJRFJNX0RFQlVHX0tNUygiV3JpdGluZyBiYXNlICUw OGxYICUwOGxYICVkICVkICVkXG4iLAogCQkgICAgICBpOTE1X2dlbV9vYmpfZ2d0dF9vZmZzZXQo b2JqKSwgbGluZWFyX29mZnNldCwgeCwgeSwKIAkJICAgICAgZmItPnBpdGNoZXNbMF0pOwpAQCAt MTEzMjQsMTAgKzExMzU2LDU3IEBAIHN0YXRpYyB2b2lkIGludGVsX3BsYW5lX2Rlc3Ryb3koc3Ry dWN0IGRybV9wbGFuZSAqcGxhbmUpCiAJa2ZyZWUoaW50ZWxfcGxhbmUpOwogfQogCitzdGF0aWMg aW50IGludGVsX3ByaW1hcnlfcGxhbmVfc2V0X3Byb3BlcnR5KHN0cnVjdCBkcm1fcGxhbmUgKnBs YW5lLAorCQkJCSAgICBzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpwcm9wLAorCQkJCSAgICB1aW50NjRf dCB2YWwpCit7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHBsYW5lLT5kZXY7CisJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwlzdHJ1Y3Qg aW50ZWxfcGxhbmUgKmludGVsX3BsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmUpOworCXN0cnVj dCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhwbGFuZS0+Y3J0Yyk7CisJ c3RydWN0IGRybV9jcnRjICpjcnRjID0gJmludGVsX2NydGMtPmJhc2U7CisJdWludDY0X3Qgb2xk X3ZhbDsKKworCWlmIChwcm9wID09IHBsYW5lLT5yb3RhdGlvbl9wcm9wZXJ0eSkgeworCQkvKiBl eGFjdGx5IG9uZSByb3RhdGlvbiBhbmdsZSBwbGVhc2UgKi8KKwkJaWYgKGh3ZWlnaHQzMih2YWwg JiAweGYpICE9IDEpCisJCQlyZXR1cm4gLUVJTlZBTDsKKworCQlvbGRfdmFsID0gaW50ZWxfcGxh bmUtPnJvdGF0aW9uOworCQlpbnRlbF9wbGFuZS0+cm90YXRpb24gPSB2YWw7CisKKwkJaWYgKGlu dGVsX2NydGMtPmFjdGl2ZSAmJiBpbnRlbF9jcnRjLT5wcmltYXJ5X2VuYWJsZWQpIHsKKwkJCWlu dGVsX2NydGNfd2FpdF9mb3JfcGVuZGluZ19mbGlwcyhjcnRjKTsKKworCQkvKiBGQkMgZG9lcyBu b3Qgd29yayBvbiBzb21lIHBsYXRmb3JtcyBmb3Igcm90YXRlZCBwbGFuZXMgKi8KKwkJCWlmIChJ TlRFTF9JTkZPKGRldiktPmdlbiA8PSA0ICYmICFJU19HNFgoZGV2KSkgeworCQkJCWlmIChkZXZf cHJpdi0+ZmJjLnBsYW5lID09IGludGVsX2NydGMtPnBsYW5lICYmCisJCQkJCWludGVsX3BsYW5l LT5yb3RhdGlvbiAhPSBCSVQoRFJNX1JPVEFURV8wKSkKKwkJCQkJaW50ZWxfZGlzYWJsZV9mYmMo ZGV2KTsKKwkJCQkvKiBJZiByb3RhdGlvbiB3YXMgc2V0IGVhcmxpZXIgYW5kIG5ldyByb3RhdGlv biBpcyAwLCB3ZSBtaWdodAorCQkJCSAqIGhhdmUgZGlzYWJsZWQgZmJjIGVhcmxpZXIuIFNvIHVw ZGF0ZSBpdCBub3cgKi8KKwkJCQllbHNlIGlmIChpbnRlbF9wbGFuZS0+cm90YXRpb24gPT0gQklU KERSTV9ST1RBVEVfMCkgJiYKKwkJCQkJb2xkX3ZhbCAhPSBCSVQoRFJNX1JPVEFURV8wKSkKKwkJ CQkJaW50ZWxfdXBkYXRlX2ZiYyhkZXYpOworCQkJfQorCisJCQlkZXZfcHJpdi0+ZGlzcGxheS51 cGRhdGVfcHJpbWFyeV9wbGFuZShjcnRjLAorCQkJCWNydGMtPnByaW1hcnktPmZiLCAwLCAwKTsK KworCQl9IGVsc2UgeworCQkJRFJNX0RFQlVHX0tNUygiW0NSVEM6JWRdIGlzIG5vdCBhY3RpdmUu IE9ubHkgcm90YXRpb24iCisJCQkJInByb3BlcnR5IGlzIHVwZGF0ZWRcbiIsIGNydGMtPmJhc2Uu aWQpOworCQl9CisJfQorCisJcmV0dXJuIDA7Cit9CisKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJt X3BsYW5lX2Z1bmNzIGludGVsX3ByaW1hcnlfcGxhbmVfZnVuY3MgPSB7CiAJLnVwZGF0ZV9wbGFu ZSA9IGludGVsX3ByaW1hcnlfcGxhbmVfc2V0cGxhbmUsCiAJLmRpc2FibGVfcGxhbmUgPSBpbnRl bF9wcmltYXJ5X3BsYW5lX2Rpc2FibGUsCiAJLmRlc3Ryb3kgPSBpbnRlbF9wbGFuZV9kZXN0cm95 LAorCS5zZXRfcHJvcGVydHkgPSBpbnRlbF9wcmltYXJ5X3BsYW5lX3NldF9wcm9wZXJ0eQogfTsK IAogc3RhdGljIHN0cnVjdCBkcm1fcGxhbmUgKmludGVsX3ByaW1hcnlfcGxhbmVfY3JlYXRlKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsCkBAIC0xMTM0NSw2ICsxMTQyNCw3IEBAIHN0YXRpYyBzdHJ1 Y3QgZHJtX3BsYW5lICppbnRlbF9wcmltYXJ5X3BsYW5lX2NyZWF0ZShzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LAogCXByaW1hcnktPm1heF9kb3duc2NhbGUgPSAxOwogCXByaW1hcnktPnBpcGUgPSBw aXBlOwogCXByaW1hcnktPnBsYW5lID0gcGlwZTsKKwlwcmltYXJ5LT5yb3RhdGlvbiA9IEJJVChE Uk1fUk9UQVRFXzApOwogCWlmIChIQVNfRkJDKGRldikgJiYgSU5URUxfSU5GTyhkZXYpLT5nZW4g PCA0KQogCQlwcmltYXJ5LT5wbGFuZSA9ICFwaXBlOwogCkBAIC0xMTM2MCw2ICsxMTQ0MCwxOCBA QCBzdGF0aWMgc3RydWN0IGRybV9wbGFuZSAqaW50ZWxfcHJpbWFyeV9wbGFuZV9jcmVhdGUoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwKIAkJCQkgJmludGVsX3ByaW1hcnlfcGxhbmVfZnVuY3MsCiAJ CQkJIGludGVsX3ByaW1hcnlfZm9ybWF0cywgbnVtX2Zvcm1hdHMsCiAJCQkJIERSTV9QTEFORV9U WVBFX1BSSU1BUlkpOworCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA0KSB7CisJCWlmICgh cHJpbWFyeS0+YmFzZS5yb3RhdGlvbl9wcm9wZXJ0eSkKKwkJCXByaW1hcnktPmJhc2Uucm90YXRp b25fcHJvcGVydHkgPQorCQkJCWRybV9tb2RlX2NyZWF0ZV9yb3RhdGlvbl9wcm9wZXJ0eShkZXYs CisJCQkJCQkJQklUKERSTV9ST1RBVEVfMCkgfAorCQkJCQkJCUJJVChEUk1fUk9UQVRFXzE4MCkp OworCQlpZiAocHJpbWFyeS0+YmFzZS5yb3RhdGlvbl9wcm9wZXJ0eSkKKwkJCWRybV9vYmplY3Rf YXR0YWNoX3Byb3BlcnR5KCZwcmltYXJ5LT5iYXNlLmJhc2UsCisJCQkJCQlwcmltYXJ5LT5iYXNl LnJvdGF0aW9uX3Byb3BlcnR5LAorCQkJCQkJcHJpbWFyeS0+cm90YXRpb24pOworCX0KKwogCXJl dHVybiAmcHJpbWFyeS0+YmFzZTsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKaW5kZXggMjA0 M2M0Yi4uYmQ2YWY5MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0u YworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCkBAIC01NjIsNiArNTYyLDEz IEBAIHZvaWQgaW50ZWxfdXBkYXRlX2ZiYyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCQlnb3Rv IG91dF9kaXNhYmxlOwogCX0KIAorCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA8PSA0ICYmICFJ U19HNFgoZGV2KSAmJgorCSAgICB0b19pbnRlbF9wbGFuZShjcnRjLT5wcmltYXJ5KS0+cm90YXRp b24gIT0gQklUKERSTV9ST1RBVEVfMCkpIHsKKwkJaWYgKHNldF9ub19mYmNfcmVhc29uKGRldl9w cml2LCBGQkNfVU5TVVBQT1JURURfTU9ERSkpCisJCQlEUk1fREVCVUdfS01TKCJSb3RhdGlvbiB1 bnN1cHBvcnRlZCwgZGlzYWJsaW5nXG4iKTsKKwkJZ290byBvdXRfZGlzYWJsZTsKKwl9CisKIAkv KiBJZiB0aGUga2VybmVsIGRlYnVnZ2VyIGlzIGFjdGl2ZSwgYWx3YXlzIGRpc2FibGUgY29tcHJl c3Npb24gKi8KIAlpZiAoaW5fZGJnX21hc3RlcigpKQogCQlnb3RvIG91dF9kaXNhYmxlOwotLSAK MS43LjEwLjQKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==