From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: [PATCH 6/7] drm/i915: Use plane state for primary plane updates. Date: Thu, 7 Jan 2016 11:54:11 +0100 Message-ID: <1452164052-21752-7-git-send-email-maarten.lankhorst@linux.intel.com> References: <1452164052-21752-1-git-send-email-maarten.lankhorst@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mblankhorst.nl (mblankhorst.nl [141.105.120.124]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8CD208A2BE for ; Thu, 7 Jan 2016 02:55:13 -0800 (PST) In-Reply-To: <1452164052-21752-1-git-send-email-maarten.lankhorst@linux.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 List-Id: intel-gfx@lists.freedesktop.org UGFzcyBpbiB0aGUgYXRvbWljIHN0YXRlcyB0byBhbGxvdyBmb3IgcHJvcGVyIHVwZGF0ZXMuClRo aXMgcmVtb3ZlcyB1c2VzIG9mIGludGVsX2NydGMtPmNvbmZpZyBhbmQgZGlyZWN0IGFjY2Vzcwp0 byBwbGFuZS0+c3RhdGUuCgpUaGlzIGJyZWFrcyB0aGUgbGFzdCBiaXQgb2Yga2dkYm9jLCBidXQg dGhhdCBhcHBlYXJzIHRvIGJlIGRlYWQgY29kZS4KClNpZ25lZC1vZmYtYnk6IE1hYXJ0ZW4gTGFu a2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+Ci0tLQogZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgIHwgICAzIC0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rpc3BsYXkuYyB8IDI0OCArKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0t LQogMiBmaWxlcyBjaGFuZ2VkLCAxMDMgaW5zZXJ0aW9ucygrKSwgMTQ4IGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oCmluZGV4IGJkZTljNzY0YjQxNS4uNzVkOGY4OTA4OGFhIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKQEAgLTY0OCw5ICs2NDgsNiBAQCBzdHJ1Y3QgZHJtX2k5 MTVfZGlzcGxheV9mdW5jcyB7CiAJCQkgIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmos CiAJCQkgIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAogCQkJICB1aW50MzJfdCBm bGFncyk7Ci0Jdm9pZCAoKnVwZGF0ZV9wcmltYXJ5X3BsYW5lKShzdHJ1Y3QgZHJtX2NydGMgKmNy dGMsCi0JCQkJICAgICBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKLQkJCQkgICAgIGludCB4 LCBpbnQgeSk7CiAJdm9pZCAoKmhwZF9pcnFfc2V0dXApKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp OwogCS8qIGNsb2NrIHVwZGF0ZXMgZm9yIG1vZGUgc2V0ICovCiAJLyogY3Vyc29yIHVwZGF0ZXMg Ki8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwppbmRleCBmN2MyOTM2MzhkZjQuLmYy NzZjYWY2NWE2OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxh eS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwpAQCAtMjY3OSwz NiArMjY3OSwyMyBAQCB2YWxpZF9mYjoKIAlvYmotPmZyb250YnVmZmVyX2JpdHMgfD0gdG9faW50 ZWxfcGxhbmUocHJpbWFyeSktPmZyb250YnVmZmVyX2JpdDsKIH0KIAotc3RhdGljIHZvaWQgaTl4 eF91cGRhdGVfcHJpbWFyeV9wbGFuZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCi0JCQkJICAgICAg c3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsCi0JCQkJICAgICAgaW50IHgsIGludCB5KQorc3Rh dGljIHZvaWQgaTl4eF91cGRhdGVfcHJpbWFyeV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwcmlt YXJ5LAorCQkJCSAgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRl LAorCQkJCSAgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUp CiB7Ci0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKKwlzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2ID0gcHJpbWFyeS0+ZGV2OwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Ci0Jc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMg PSB0b19pbnRlbF9jcnRjKGNydGMpOwotCXN0cnVjdCBkcm1fcGxhbmUgKnByaW1hcnkgPSBjcnRj LT5wcmltYXJ5OwotCWJvb2wgdmlzaWJsZSA9IHRvX2ludGVsX3BsYW5lX3N0YXRlKHByaW1hcnkt PnN0YXRlKS0+dmlzaWJsZTsKLQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOworCXN0 cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5i YXNlLmNydGMpOworCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmJh c2UuZmI7CisJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9IGludGVsX2ZiX29iaihm Yik7CiAJaW50IHBsYW5lID0gaW50ZWxfY3J0Yy0+cGxhbmU7CiAJdW5zaWduZWQgbG9uZyBsaW5l YXJfb2Zmc2V0OworCWludCB4ID0gcGxhbmVfc3RhdGUtPnNyYy54MSA+PiAxNjsKKwlpbnQgeSA9 IHBsYW5lX3N0YXRlLT5zcmMueTEgPj4gMTY7CiAJdTMyIGRzcGNudHI7CiAJaTkxNV9yZWdfdCBy ZWcgPSBEU1BDTlRSKHBsYW5lKTsKIAlpbnQgcGl4ZWxfc2l6ZTsKIAotCWlmICghdmlzaWJsZSB8 fCAhZmIpIHsKLQkJSTkxNV9XUklURShyZWcsIDApOwotCQlpZiAoSU5URUxfSU5GTyhkZXYpLT5n ZW4gPj0gNCkKLQkJCUk5MTVfV1JJVEUoRFNQU1VSRihwbGFuZSksIDApOwotCQllbHNlCi0JCQlJ OTE1X1dSSVRFKERTUEFERFIocGxhbmUpLCAwKTsKLQkJUE9TVElOR19SRUFEKHJlZyk7Ci0JCXJl dHVybjsKLQl9Ci0KLQlvYmogPSBpbnRlbF9mYl9vYmooZmIpOwotCWlmIChXQVJOX09OKG9iaiA9 PSBOVUxMKSkKLQkJcmV0dXJuOwotCiAJcGl4ZWxfc2l6ZSA9IGRybV9mb3JtYXRfcGxhbmVfY3Bw KGZiLT5waXhlbF9mb3JtYXQsIDApOwogCiAJZHNwY250ciA9IERJU1BQTEFORV9HQU1NQV9FTkFC TEU7CkBAIC0yNzIzLDEzICsyNzEwLDEzIEBAIHN0YXRpYyB2b2lkIGk5eHhfdXBkYXRlX3ByaW1h cnlfcGxhbmUoc3RydWN0IGRybV9jcnRjICpjcnRjLAogCQkgKiB3aGljaCBzaG91bGQgYWx3YXlz IGJlIHRoZSB1c2VyJ3MgcmVxdWVzdGVkIHNpemUuCiAJCSAqLwogCQlJOTE1X1dSSVRFKERTUFNJ WkUocGxhbmUpLAotCQkJICAgKChpbnRlbF9jcnRjLT5jb25maWctPnBpcGVfc3JjX2ggLSAxKSA8 PCAxNikgfAotCQkJICAgKGludGVsX2NydGMtPmNvbmZpZy0+cGlwZV9zcmNfdyAtIDEpKTsKKwkJ CSAgICgoY3J0Y19zdGF0ZS0+cGlwZV9zcmNfaCAtIDEpIDw8IDE2KSB8CisJCQkgICAoY3J0Y19z dGF0ZS0+cGlwZV9zcmNfdyAtIDEpKTsKIAkJSTkxNV9XUklURShEU1BQT1MocGxhbmUpLCAwKTsK IAl9IGVsc2UgaWYgKElTX0NIRVJSWVZJRVcoZGV2KSAmJiBwbGFuZSA9PSBQTEFORV9CKSB7CiAJ CUk5MTVfV1JJVEUoUFJJTVNJWkUocGxhbmUpLAotCQkJICAgKChpbnRlbF9jcnRjLT5jb25maWct PnBpcGVfc3JjX2ggLSAxKSA8PCAxNikgfAotCQkJICAgKGludGVsX2NydGMtPmNvbmZpZy0+cGlw ZV9zcmNfdyAtIDEpKTsKKwkJCSAgICgoY3J0Y19zdGF0ZS0+cGlwZV9zcmNfaCAtIDEpIDw8IDE2 KSB8CisJCQkgICAoY3J0Y19zdGF0ZS0+cGlwZV9zcmNfdyAtIDEpKTsKIAkJSTkxNV9XUklURShQ UklNUE9TKHBsYW5lKSwgMCk7CiAJCUk5MTVfV1JJVEUoUFJJTUNOU1RBTFBIQShwbGFuZSksIDAp OwogCX0KQEAgLTI3ODAsMTcgKzI3NjcsMTcgQEAgc3RhdGljIHZvaWQgaTl4eF91cGRhdGVfcHJp bWFyeV9wbGFuZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJCWludGVsX2NydGMtPmRzcGFkZHJf b2Zmc2V0ID0gbGluZWFyX29mZnNldDsKIAl9CiAKLQlpZiAoY3J0Yy0+cHJpbWFyeS0+c3RhdGUt PnJvdGF0aW9uID09IEJJVChEUk1fUk9UQVRFXzE4MCkpIHsKKwlpZiAocGxhbmVfc3RhdGUtPmJh c2Uucm90YXRpb24gPT0gQklUKERSTV9ST1RBVEVfMTgwKSkgewogCQlkc3BjbnRyIHw9IERJU1BQ TEFORV9ST1RBVEVfMTgwOwogCi0JCXggKz0gKGludGVsX2NydGMtPmNvbmZpZy0+cGlwZV9zcmNf dyAtIDEpOwotCQl5ICs9IChpbnRlbF9jcnRjLT5jb25maWctPnBpcGVfc3JjX2ggLSAxKTsKKwkJ eCArPSAoY3J0Y19zdGF0ZS0+cGlwZV9zcmNfdyAtIDEpOworCQl5ICs9IChjcnRjX3N0YXRlLT5w aXBlX3NyY19oIC0gMSk7CiAKIAkJLyogRmluZGluZyB0aGUgbGFzdCBwaXhlbCBvZiB0aGUgbGFz dCBsaW5lIG9mIHRoZSBkaXNwbGF5CiAJCWRhdGEgYW5kIGFkZGluZyB0byBsaW5lYXJfb2Zmc2V0 Ki8KIAkJbGluZWFyX29mZnNldCArPQotCQkJKGludGVsX2NydGMtPmNvbmZpZy0+cGlwZV9zcmNf aCAtIDEpICogZmItPnBpdGNoZXNbMF0gKwotCQkJKGludGVsX2NydGMtPmNvbmZpZy0+cGlwZV9z cmNfdyAtIDEpICogcGl4ZWxfc2l6ZTsKKwkJCShjcnRjX3N0YXRlLT5waXBlX3NyY19oIC0gMSkg KiBmYi0+cGl0Y2hlc1swXSArCisJCQkoY3J0Y19zdGF0ZS0+cGlwZV9zcmNfdyAtIDEpICogcGl4 ZWxfc2l6ZTsKIAl9CiAKIAlpbnRlbF9jcnRjLT5hZGp1c3RlZF94ID0geDsKQEAgLTI4MDksMzcg KzI3OTYsNDAgQEAgc3RhdGljIHZvaWQgaTl4eF91cGRhdGVfcHJpbWFyeV9wbGFuZShzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMsCiAJUE9TVElOR19SRUFEKHJlZyk7CiB9CiAKLXN0YXRpYyB2b2lkIGly b25sYWtlX3VwZGF0ZV9wcmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKLQkJCQkJ ICBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKLQkJCQkJICBpbnQgeCwgaW50IHkpCitzdGF0 aWMgdm9pZCBpOXh4X2Rpc2FibGVfcHJpbWFyeV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwcmlt YXJ5LAorCQkJCSAgICAgICBzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiB7CiAJc3RydWN0IGRybV9k ZXZpY2UgKmRldiA9IGNydGMtPmRldjsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSBkZXYtPmRldl9wcml2YXRlOwogCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0g dG9faW50ZWxfY3J0YyhjcnRjKTsKLQlzdHJ1Y3QgZHJtX3BsYW5lICpwcmltYXJ5ID0gY3J0Yy0+ cHJpbWFyeTsKLQlib29sIHZpc2libGUgPSB0b19pbnRlbF9wbGFuZV9zdGF0ZShwcmltYXJ5LT5z dGF0ZSktPnZpc2libGU7Ci0Jc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKIAlpbnQg cGxhbmUgPSBpbnRlbF9jcnRjLT5wbGFuZTsKLQl1bnNpZ25lZCBsb25nIGxpbmVhcl9vZmZzZXQ7 Ci0JdTMyIGRzcGNudHI7Ci0JaTkxNV9yZWdfdCByZWcgPSBEU1BDTlRSKHBsYW5lKTsKLQlpbnQg cGl4ZWxfc2l6ZTsKIAotCWlmICghdmlzaWJsZSB8fCAhZmIpIHsKLQkJSTkxNV9XUklURShyZWcs IDApOworCUk5MTVfV1JJVEUoRFNQQ05UUihwbGFuZSksIDApOworCWlmIChJTlRFTF9JTkZPKGRl dl9wcml2KS0+Z2VuID49IDQpCiAJCUk5MTVfV1JJVEUoRFNQU1VSRihwbGFuZSksIDApOwotCQlQ T1NUSU5HX1JFQUQocmVnKTsKLQkJcmV0dXJuOwotCX0KLQotCW9iaiA9IGludGVsX2ZiX29iaihm Yik7Ci0JaWYgKFdBUk5fT04ob2JqID09IE5VTEwpKQotCQlyZXR1cm47CisJZWxzZQorCQlJOTE1 X1dSSVRFKERTUEFERFIocGxhbmUpLCAwKTsKKwlQT1NUSU5HX1JFQUQoRFNQQ05UUihwbGFuZSkp OworfQogCi0JcGl4ZWxfc2l6ZSA9IGRybV9mb3JtYXRfcGxhbmVfY3BwKGZiLT5waXhlbF9mb3Jt YXQsIDApOworc3RhdGljIHZvaWQgaXJvbmxha2VfdXBkYXRlX3ByaW1hcnlfcGxhbmUoc3RydWN0 IGRybV9wbGFuZSAqcHJpbWFyeSwKKwkJCQkJICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqY3J0Y19zdGF0ZSwKKwkJCQkJICBjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBs YW5lX3N0YXRlKQoreworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBwcmltYXJ5LT5kZXY7CisJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwlz dHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+ YmFzZS5jcnRjKTsKKwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5i YXNlLmZiOworCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSBpbnRlbF9mYl9vYmoo ZmIpOworCWludCBwbGFuZSA9IGludGVsX2NydGMtPnBsYW5lOworCXVuc2lnbmVkIGxvbmcgbGlu ZWFyX29mZnNldDsKKwl1MzIgZHNwY250cjsKKwlpOTE1X3JlZ190IHJlZyA9IERTUENOVFIocGxh bmUpOworCWludCBwaXhlbF9zaXplID0gZHJtX2Zvcm1hdF9wbGFuZV9jcHAoZmItPnBpeGVsX2Zv cm1hdCwgMCk7CisJaW50IHggPSBwbGFuZV9zdGF0ZS0+c3JjLngxID4+IDE2OworCWludCB5ID0g cGxhbmVfc3RhdGUtPnNyYy55MSA+PiAxNjsKIAogCWRzcGNudHIgPSBESVNQUExBTkVfR0FNTUFf RU5BQkxFOwotCiAJZHNwY250ciB8PSBESVNQTEFZX1BMQU5FX0VOQUJMRTsKIAogCWlmIChJU19I QVNXRUxMKGRldikgfHwgSVNfQlJPQURXRUxMKGRldikpCkBAIC0yODgxLDE4ICsyODcxLDE4IEBA IHN0YXRpYyB2b2lkIGlyb25sYWtlX3VwZGF0ZV9wcmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1fY3J0 YyAqY3J0YywKIAkJCQkJICAgICAgIHBpeGVsX3NpemUsCiAJCQkJCSAgICAgICBmYi0+cGl0Y2hl c1swXSk7CiAJbGluZWFyX29mZnNldCAtPSBpbnRlbF9jcnRjLT5kc3BhZGRyX29mZnNldDsKLQlp ZiAoY3J0Yy0+cHJpbWFyeS0+c3RhdGUtPnJvdGF0aW9uID09IEJJVChEUk1fUk9UQVRFXzE4MCkp IHsKKwlpZiAocGxhbmVfc3RhdGUtPmJhc2Uucm90YXRpb24gPT0gQklUKERSTV9ST1RBVEVfMTgw KSkgewogCQlkc3BjbnRyIHw9IERJU1BQTEFORV9ST1RBVEVfMTgwOwogCiAJCWlmICghSVNfSEFT V0VMTChkZXYpICYmICFJU19CUk9BRFdFTEwoZGV2KSkgewotCQkJeCArPSAoaW50ZWxfY3J0Yy0+ Y29uZmlnLT5waXBlX3NyY193IC0gMSk7Ci0JCQl5ICs9IChpbnRlbF9jcnRjLT5jb25maWctPnBp cGVfc3JjX2ggLSAxKTsKKwkJCXggKz0gKGNydGNfc3RhdGUtPnBpcGVfc3JjX3cgLSAxKTsKKwkJ CXkgKz0gKGNydGNfc3RhdGUtPnBpcGVfc3JjX2ggLSAxKTsKIAogCQkJLyogRmluZGluZyB0aGUg bGFzdCBwaXhlbCBvZiB0aGUgbGFzdCBsaW5lIG9mIHRoZSBkaXNwbGF5CiAJCQlkYXRhIGFuZCBh ZGRpbmcgdG8gbGluZWFyX29mZnNldCovCiAJCQlsaW5lYXJfb2Zmc2V0ICs9Ci0JCQkJKGludGVs X2NydGMtPmNvbmZpZy0+cGlwZV9zcmNfaCAtIDEpICogZmItPnBpdGNoZXNbMF0gKwotCQkJCShp bnRlbF9jcnRjLT5jb25maWctPnBpcGVfc3JjX3cgLSAxKSAqIHBpeGVsX3NpemU7CisJCQkJKGNy dGNfc3RhdGUtPnBpcGVfc3JjX2ggLSAxKSAqIGZiLT5waXRjaGVzWzBdICsKKwkJCQkoY3J0Y19z dGF0ZS0+cGlwZV9zcmNfdyAtIDEpICogcGl4ZWxfc2l6ZTsKIAkJfQogCX0KIApAQCAtMzA4Mywz NiArMzA3MywzMCBAQCB1MzIgc2tsX3BsYW5lX2N0bF9yb3RhdGlvbih1bnNpZ25lZCBpbnQgcm90 YXRpb24pCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyB2b2lkIHNreWxha2VfdXBkYXRlX3ByaW1h cnlfcGxhbmUoc3RydWN0IGRybV9jcnRjICpjcnRjLAotCQkJCQkgc3RydWN0IGRybV9mcmFtZWJ1 ZmZlciAqZmIsCi0JCQkJCSBpbnQgeCwgaW50IHkpCitzdGF0aWMgdm9pZCBza3lsYWtlX3VwZGF0 ZV9wcmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAorCQkJCQkgY29uc3Qgc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCisJCQkJCSBjb25zdCBzdHJ1Y3QgaW50 ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlKQogewotCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYg PSBjcnRjLT5kZXY7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHBsYW5lLT5kZXY7CiAJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKLQlzdHJ1 Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Ci0Jc3RydWN0 IGRybV9wbGFuZSAqcGxhbmUgPSBjcnRjLT5wcmltYXJ5OwotCWJvb2wgdmlzaWJsZSA9IHRvX2lu dGVsX3BsYW5lX3N0YXRlKHBsYW5lLT5zdGF0ZSktPnZpc2libGU7Ci0Jc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QgKm9iajsKKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2lu dGVsX2NydGMoY3J0Y19zdGF0ZS0+YmFzZS5jcnRjKTsKKwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVy ICpmYiA9IHBsYW5lX3N0YXRlLT5iYXNlLmZiOworCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0 ICpvYmogPSBpbnRlbF9mYl9vYmooZmIpOwogCWludCBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsK IAl1MzIgcGxhbmVfY3RsLCBzdHJpZGVfZGl2LCBzdHJpZGU7CiAJdTMyIHRpbGVfaGVpZ2h0LCBw bGFuZV9vZmZzZXQsIHBsYW5lX3NpemU7Ci0JdW5zaWduZWQgaW50IHJvdGF0aW9uOworCXVuc2ln bmVkIGludCByb3RhdGlvbiA9IHBsYW5lX3N0YXRlLT5iYXNlLnJvdGF0aW9uOwogCWludCB4X29m ZnNldCwgeV9vZmZzZXQ7CiAJdTMyIHN1cmZfYWRkcjsKLQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqY3J0Y19zdGF0ZSA9IGludGVsX2NydGMtPmNvbmZpZzsKLQlzdHJ1Y3QgaW50ZWxfcGxhbmVf c3RhdGUgKnBsYW5lX3N0YXRlOwotCWludCBzcmNfeCA9IDAsIHNyY195ID0gMCwgc3JjX3cgPSAw LCBzcmNfaCA9IDA7Ci0JaW50IGRzdF94ID0gMCwgZHN0X3kgPSAwLCBkc3RfdyA9IDAsIGRzdF9o ID0gMDsKLQlpbnQgc2NhbGVyX2lkID0gLTE7Ci0KLQlwbGFuZV9zdGF0ZSA9IHRvX2ludGVsX3Bs YW5lX3N0YXRlKHBsYW5lLT5zdGF0ZSk7Ci0KLQlpZiAoIXZpc2libGUgfHwgIWZiKSB7Ci0JCUk5 MTVfV1JJVEUoUExBTkVfQ1RMKHBpcGUsIDApLCAwKTsKLQkJSTkxNV9XUklURShQTEFORV9TVVJG KHBpcGUsIDApLCAwKTsKLQkJUE9TVElOR19SRUFEKFBMQU5FX0NUTChwaXBlLCAwKSk7Ci0JCXJl dHVybjsKLQl9CisJaW50IHNjYWxlcl9pZCA9IHBsYW5lX3N0YXRlLT5zY2FsZXJfaWQ7CisJaW50 IHNyY194ID0gcGxhbmVfc3RhdGUtPnNyYy54MSA+PiAxNjsKKwlpbnQgc3JjX3kgPSBwbGFuZV9z dGF0ZS0+c3JjLnkxID4+IDE2OworCWludCBzcmNfdyA9IGRybV9yZWN0X3dpZHRoKCZwbGFuZV9z dGF0ZS0+c3JjKSA+PiAxNjsKKwlpbnQgc3JjX2ggPSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0 YXRlLT5zcmMpID4+IDE2OworCWludCBkc3RfeCA9IHBsYW5lX3N0YXRlLT5kc3QueDE7CisJaW50 IGRzdF95ID0gcGxhbmVfc3RhdGUtPmRzdC55MTsKKwlpbnQgZHN0X3cgPSBkcm1fcmVjdF93aWR0 aCgmcGxhbmVfc3RhdGUtPmRzdCk7CisJaW50IGRzdF9oID0gZHJtX3JlY3RfaGVpZ2h0KCZwbGFu ZV9zdGF0ZS0+ZHN0KTsKIAogCXBsYW5lX2N0bCA9IFBMQU5FX0NUTF9FTkFCTEUgfAogCQkgICAg UExBTkVfQ1RMX1BJUEVfR0FNTUFfRU5BQkxFIHwKQEAgLTMxMjEsNDEgKzMxMDUsMjYgQEAgc3Rh dGljIHZvaWQgc2t5bGFrZV91cGRhdGVfcHJpbWFyeV9wbGFuZShzdHJ1Y3QgZHJtX2NydGMgKmNy dGMsCiAJcGxhbmVfY3RsIHw9IHNrbF9wbGFuZV9jdGxfZm9ybWF0KGZiLT5waXhlbF9mb3JtYXQp OwogCXBsYW5lX2N0bCB8PSBza2xfcGxhbmVfY3RsX3RpbGluZyhmYi0+bW9kaWZpZXJbMF0pOwog CXBsYW5lX2N0bCB8PSBQTEFORV9DVExfUExBTkVfR0FNTUFfRElTQUJMRTsKLQotCXJvdGF0aW9u ID0gcGxhbmUtPnN0YXRlLT5yb3RhdGlvbjsKIAlwbGFuZV9jdGwgfD0gc2tsX3BsYW5lX2N0bF9y b3RhdGlvbihyb3RhdGlvbik7CiAKLQlvYmogPSBpbnRlbF9mYl9vYmooZmIpOwogCXN0cmlkZV9k aXYgPSBpbnRlbF9mYl9zdHJpZGVfYWxpZ25tZW50KGRldiwgZmItPm1vZGlmaWVyWzBdLAogCQkJ CQkgICAgICAgZmItPnBpeGVsX2Zvcm1hdCk7CiAJc3VyZl9hZGRyID0gaW50ZWxfcGxhbmVfb2Jq X29mZnNldCh0b19pbnRlbF9wbGFuZShwbGFuZSksIG9iaiwgMCk7CiAKIAlXQVJOX09OKGRybV9y ZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+c3JjKSA9PSAwKTsKIAotCXNjYWxlcl9pZCA9IHBsYW5l X3N0YXRlLT5zY2FsZXJfaWQ7Ci0Jc3JjX3ggPSBwbGFuZV9zdGF0ZS0+c3JjLngxID4+IDE2Owot CXNyY195ID0gcGxhbmVfc3RhdGUtPnNyYy55MSA+PiAxNjsKLQlzcmNfdyA9IGRybV9yZWN0X3dp ZHRoKCZwbGFuZV9zdGF0ZS0+c3JjKSA+PiAxNjsKLQlzcmNfaCA9IGRybV9yZWN0X2hlaWdodCgm cGxhbmVfc3RhdGUtPnNyYykgPj4gMTY7Ci0JZHN0X3ggPSBwbGFuZV9zdGF0ZS0+ZHN0LngxOwot CWRzdF95ID0gcGxhbmVfc3RhdGUtPmRzdC55MTsKLQlkc3RfdyA9IGRybV9yZWN0X3dpZHRoKCZw bGFuZV9zdGF0ZS0+ZHN0KTsKLQlkc3RfaCA9IGRybV9yZWN0X2hlaWdodCgmcGxhbmVfc3RhdGUt PmRzdCk7Ci0KLQlXQVJOX09OKHggIT0gc3JjX3ggfHwgeSAhPSBzcmNfeSk7Ci0KIAlpZiAoaW50 ZWxfcm90YXRpb25fOTBfb3JfMjcwKHJvdGF0aW9uKSkgewogCQkvKiBzdHJpZGUgPSBTdXJmYWNl IGhlaWdodCBpbiB0aWxlcyAqLwogCQl0aWxlX2hlaWdodCA9IGludGVsX3RpbGVfaGVpZ2h0KGRl diwgZmItPnBpeGVsX2Zvcm1hdCwKIAkJCQkJCWZiLT5tb2RpZmllclswXSwgMCk7CiAJCXN0cmlk ZSA9IERJVl9ST1VORF9VUChmYi0+aGVpZ2h0LCB0aWxlX2hlaWdodCk7Ci0JCXhfb2Zmc2V0ID0g c3RyaWRlICogdGlsZV9oZWlnaHQgLSB5IC0gc3JjX2g7Ci0JCXlfb2Zmc2V0ID0geDsKKwkJeF9v ZmZzZXQgPSBzdHJpZGUgKiB0aWxlX2hlaWdodCAtIHNyY195IC0gc3JjX2g7CisJCXlfb2Zmc2V0 ID0gc3JjX3g7CiAJCXBsYW5lX3NpemUgPSAoc3JjX3cgLSAxKSA8PCAxNiB8IChzcmNfaCAtIDEp OwogCX0gZWxzZSB7CiAJCXN0cmlkZSA9IGZiLT5waXRjaGVzWzBdIC8gc3RyaWRlX2RpdjsKLQkJ eF9vZmZzZXQgPSB4OwotCQl5X29mZnNldCA9IHk7CisJCXhfb2Zmc2V0ID0gc3JjX3g7CisJCXlf b2Zmc2V0ID0gc3JjX3k7CiAJCXBsYW5lX3NpemUgPSAoc3JjX2ggLSAxKSA8PCAxNiB8IChzcmNf dyAtIDEpOwogCX0KIAlwbGFuZV9vZmZzZXQgPSB5X29mZnNldCA8PCAxNiB8IHhfb2Zmc2V0OwpA QCAtMzE4OCwyMCArMzE1NywzMCBAQCBzdGF0aWMgdm9pZCBza3lsYWtlX3VwZGF0ZV9wcmltYXJ5 X3BsYW5lKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAlQT1NUSU5HX1JFQUQoUExBTkVfU1VSRihw aXBlLCAwKSk7CiB9CiAKLS8qIEFzc3VtZSBmYiBvYmplY3QgaXMgcGlubmVkICYgaWRsZSAmIGZl bmNlZCBhbmQganVzdCB1cGRhdGUgYmFzZSBwb2ludGVycyAqLwotc3RhdGljIGludAotaW50ZWxf cGlwZV9zZXRfYmFzZV9hdG9taWMoc3RydWN0IGRybV9jcnRjICpjcnRjLCBzdHJ1Y3QgZHJtX2Zy YW1lYnVmZmVyICpmYiwKLQkJCSAgIGludCB4LCBpbnQgeSwgZW51bSBtb2RlX3NldF9hdG9taWMg c3RhdGUpCitzdGF0aWMgdm9pZCBza3lsYWtlX2Rpc2FibGVfcHJpbWFyeV9wbGFuZShzdHJ1Y3Qg ZHJtX3BsYW5lICpwcmltYXJ5LAorCQkJCQkgIHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIHsKIAlz dHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2OwogCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CisJaW50IHBpcGUgPSB0b19pbnRlbF9j cnRjKGNydGMpLT5waXBlOwogCiAJaWYgKGRldl9wcml2LT5mYmMuZGVhY3RpdmF0ZSkKIAkJZGV2 X3ByaXYtPmZiYy5kZWFjdGl2YXRlKGRldl9wcml2KTsKIAotCWRldl9wcml2LT5kaXNwbGF5LnVw ZGF0ZV9wcmltYXJ5X3BsYW5lKGNydGMsIGZiLCB4LCB5KTsKKwlJOTE1X1dSSVRFKFBMQU5FX0NU TChwaXBlLCAwKSwgMCk7CisJSTkxNV9XUklURShQTEFORV9TVVJGKHBpcGUsIDApLCAwKTsKKwlQ T1NUSU5HX1JFQUQoUExBTkVfU1VSRihwaXBlLCAwKSk7Cit9CiAKLQlyZXR1cm4gMDsKKy8qIEFz c3VtZSBmYiBvYmplY3QgaXMgcGlubmVkICYgaWRsZSAmIGZlbmNlZCBhbmQganVzdCB1cGRhdGUg YmFzZSBwb2ludGVycyAqLworc3RhdGljIGludAoraW50ZWxfcGlwZV9zZXRfYmFzZV9hdG9taWMo c3RydWN0IGRybV9jcnRjICpjcnRjLCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKKwkJCSAg IGludCB4LCBpbnQgeSwgZW51bSBtb2RlX3NldF9hdG9taWMgc3RhdGUpCit7CisJLyogU3VwcG9y dCBmb3Iga2dkYm9jIGlzIGRpc2FibGVkLCB0aGlzIG5lZWRzIGEgbWFqb3IgcmV3b3JrLiAqLwor CURSTV9FUlJPUigibGVnYWN5IHBhbmljIGhhbmRsZXIgbm90IHN1cHBvcnRlZCBhbnkgbW9yZS5c biIpOworCisJcmV0dXJuIC1FTk9ERVY7CiB9CiAKIHN0YXRpYyB2b2lkIGludGVsX2NvbXBsZXRl X3BhZ2VfZmxpcHMoc3RydWN0IGRybV9kZXZpY2UgKmRldikKQEAgLTMyMjgsOCArMzIwNywxMCBA QCBzdGF0aWMgdm9pZCBpbnRlbF91cGRhdGVfcHJpbWFyeV9wbGFuZXMoc3RydWN0IGRybV9kZXZp Y2UgKmRldikKIAkJZHJtX21vZGVzZXRfbG9ja19jcnRjKGNydGMsICZwbGFuZS0+YmFzZSk7CiAJ CXBsYW5lX3N0YXRlID0gdG9faW50ZWxfcGxhbmVfc3RhdGUocGxhbmUtPmJhc2Uuc3RhdGUpOwog Ci0JCWlmIChjcnRjLT5zdGF0ZS0+YWN0aXZlICYmIHBsYW5lX3N0YXRlLT5iYXNlLmZiKQotCQkJ cGxhbmUtPmNvbW1pdF9wbGFuZSgmcGxhbmUtPmJhc2UsIHBsYW5lX3N0YXRlKTsKKwkJaWYgKHBs YW5lX3N0YXRlLT52aXNpYmxlKQorCQkJcGxhbmUtPnVwZGF0ZV9wbGFuZSgmcGxhbmUtPmJhc2Us CisJCQkJCSAgICB0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMtPnN0YXRlKSwKKwkJCQkJICAgIHBs YW5lX3N0YXRlKTsKIAogCQlkcm1fbW9kZXNldF91bmxvY2tfY3J0YyhjcnRjKTsKIAl9CkBAIC0x Mzk1OCwzMiArMTM5MzksNiBAQCBpbnRlbF9jaGVja19wcmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1f cGxhbmUgKnBsYW5lLAogCQkJCQkgICAgICZzdGF0ZS0+dmlzaWJsZSk7CiB9CiAKLXN0YXRpYyB2 b2lkCi1pbnRlbF9jb21taXRfcHJpbWFyeV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwK LQkJCSAgIHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqc3RhdGUpCi17Ci0Jc3RydWN0IGRybV9j cnRjICpjcnRjID0gc3RhdGUtPmJhc2UuY3J0YzsKLQlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpm YiA9IHN0YXRlLT5iYXNlLmZiOwotCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBwbGFuZS0+ZGV2 OwotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7 Ci0KLQljcnRjID0gY3J0YyA/IGNydGMgOiBwbGFuZS0+Y3J0YzsKLQotCWRldl9wcml2LT5kaXNw bGF5LnVwZGF0ZV9wcmltYXJ5X3BsYW5lKGNydGMsIGZiLAotCQkJCQkgICAgICAgc3RhdGUtPnNy Yy54MSA+PiAxNiwKLQkJCQkJICAgICAgIHN0YXRlLT5zcmMueTEgPj4gMTYpOwotfQotCi1zdGF0 aWMgdm9pZAotaW50ZWxfZGlzYWJsZV9wcmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBs YW5lLAotCQkJICAgIHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKLXsKLQlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2ID0gcGxhbmUtPmRldjsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSBkZXYtPmRldl9wcml2YXRlOwotCi0JZGV2X3ByaXYtPmRpc3BsYXkudXBkYXRlX3ByaW1hcnlf cGxhbmUoY3J0YywgTlVMTCwgMCwgMCk7Ci19Ci0KIHN0YXRpYyB2b2lkIGludGVsX2JlZ2luX2Ny dGNfY29tbWl0KHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAkJCQkgICAgc3RydWN0IGRybV9jcnRj X3N0YXRlICpvbGRfY3J0Y19zdGF0ZSkKIHsKQEAgLTE0MDY4LDIwICsxNDAyMywzMyBAQCBzdGF0 aWMgc3RydWN0IGRybV9wbGFuZSAqaW50ZWxfcHJpbWFyeV9wbGFuZV9jcmVhdGUoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwKIAlwcmltYXJ5LT5wbGFuZSA9IHBpcGU7CiAJcHJpbWFyeS0+ZnJvbnRi dWZmZXJfYml0ID0gSU5URUxfRlJPTlRCVUZGRVJfUFJJTUFSWShwaXBlKTsKIAlwcmltYXJ5LT5j aGVja19wbGFuZSA9IGludGVsX2NoZWNrX3ByaW1hcnlfcGxhbmU7Ci0JcHJpbWFyeS0+Y29tbWl0 X3BsYW5lID0gaW50ZWxfY29tbWl0X3ByaW1hcnlfcGxhbmU7Ci0JcHJpbWFyeS0+ZGlzYWJsZV9w bGFuZSA9IGludGVsX2Rpc2FibGVfcHJpbWFyeV9wbGFuZTsKIAlpZiAoSEFTX0ZCQyhkZXYpICYm IElOVEVMX0lORk8oZGV2KS0+Z2VuIDwgNCkKIAkJcHJpbWFyeS0+cGxhbmUgPSAhcGlwZTsKIAog CWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA5KSB7CiAJCWludGVsX3ByaW1hcnlfZm9ybWF0 cyA9IHNrbF9wcmltYXJ5X2Zvcm1hdHM7CiAJCW51bV9mb3JtYXRzID0gQVJSQVlfU0laRShza2xf cHJpbWFyeV9mb3JtYXRzKTsKKworCQlwcmltYXJ5LT51cGRhdGVfcGxhbmUgPSBza3lsYWtlX3Vw ZGF0ZV9wcmltYXJ5X3BsYW5lOworCQlwcmltYXJ5LT5kaXNhYmxlX3BsYW5lID0gc2t5bGFrZV9k aXNhYmxlX3ByaW1hcnlfcGxhbmU7CisJfSBlbHNlIGlmIChIQVNfUENIX1NQTElUKGRldikpIHsK KwkJaW50ZWxfcHJpbWFyeV9mb3JtYXRzID0gaTk2NV9wcmltYXJ5X2Zvcm1hdHM7CisJCW51bV9m b3JtYXRzID0gQVJSQVlfU0laRShpOTY1X3ByaW1hcnlfZm9ybWF0cyk7CisKKwkJcHJpbWFyeS0+ dXBkYXRlX3BsYW5lID0gaXJvbmxha2VfdXBkYXRlX3ByaW1hcnlfcGxhbmU7CisJCXByaW1hcnkt PmRpc2FibGVfcGxhbmUgPSBpOXh4X2Rpc2FibGVfcHJpbWFyeV9wbGFuZTsKIAl9IGVsc2UgaWYg KElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDQpIHsKIAkJaW50ZWxfcHJpbWFyeV9mb3JtYXRzID0g aTk2NV9wcmltYXJ5X2Zvcm1hdHM7CiAJCW51bV9mb3JtYXRzID0gQVJSQVlfU0laRShpOTY1X3By aW1hcnlfZm9ybWF0cyk7CisKKwkJcHJpbWFyeS0+dXBkYXRlX3BsYW5lID0gaTl4eF91cGRhdGVf cHJpbWFyeV9wbGFuZTsKKwkJcHJpbWFyeS0+ZGlzYWJsZV9wbGFuZSA9IGk5eHhfZGlzYWJsZV9w cmltYXJ5X3BsYW5lOwogCX0gZWxzZSB7CiAJCWludGVsX3ByaW1hcnlfZm9ybWF0cyA9IGk4eHhf cHJpbWFyeV9mb3JtYXRzOwogCQludW1fZm9ybWF0cyA9IEFSUkFZX1NJWkUoaTh4eF9wcmltYXJ5 X2Zvcm1hdHMpOworCisJCXByaW1hcnktPnVwZGF0ZV9wbGFuZSA9IGk5eHhfdXBkYXRlX3ByaW1h cnlfcGxhbmU7CisJCXByaW1hcnktPmRpc2FibGVfcGxhbmUgPSBpOXh4X2Rpc2FibGVfcHJpbWFy eV9wbGFuZTsKIAl9CiAKIAlkcm1fdW5pdmVyc2FsX3BsYW5lX2luaXQoZGV2LCAmcHJpbWFyeS0+ YmFzZSwgMCwKQEAgLTE0OTA5LDggKzE0ODc3LDYgQEAgc3RhdGljIHZvaWQgaW50ZWxfaW5pdF9k aXNwbGF5KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJCQloYXN3ZWxsX2NydGNfY29tcHV0ZV9j bG9jazsKIAkJZGV2X3ByaXYtPmRpc3BsYXkuY3J0Y19lbmFibGUgPSBoYXN3ZWxsX2NydGNfZW5h YmxlOwogCQlkZXZfcHJpdi0+ZGlzcGxheS5jcnRjX2Rpc2FibGUgPSBoYXN3ZWxsX2NydGNfZGlz YWJsZTsKLQkJZGV2X3ByaXYtPmRpc3BsYXkudXBkYXRlX3ByaW1hcnlfcGxhbmUgPQotCQkJc2t5 bGFrZV91cGRhdGVfcHJpbWFyeV9wbGFuZTsKIAl9IGVsc2UgaWYgKEhBU19EREkoZGV2KSkgewog CQlkZXZfcHJpdi0+ZGlzcGxheS5nZXRfcGlwZV9jb25maWcgPSBoYXN3ZWxsX2dldF9waXBlX2Nv bmZpZzsKIAkJZGV2X3ByaXYtPmRpc3BsYXkuZ2V0X2luaXRpYWxfcGxhbmVfY29uZmlnID0KQEAg LTE0OTE5LDggKzE0ODg1LDYgQEAgc3RhdGljIHZvaWQgaW50ZWxfaW5pdF9kaXNwbGF5KHN0cnVj dCBkcm1fZGV2aWNlICpkZXYpCiAJCQloYXN3ZWxsX2NydGNfY29tcHV0ZV9jbG9jazsKIAkJZGV2 X3ByaXYtPmRpc3BsYXkuY3J0Y19lbmFibGUgPSBoYXN3ZWxsX2NydGNfZW5hYmxlOwogCQlkZXZf cHJpdi0+ZGlzcGxheS5jcnRjX2Rpc2FibGUgPSBoYXN3ZWxsX2NydGNfZGlzYWJsZTsKLQkJZGV2 X3ByaXYtPmRpc3BsYXkudXBkYXRlX3ByaW1hcnlfcGxhbmUgPQotCQkJaXJvbmxha2VfdXBkYXRl X3ByaW1hcnlfcGxhbmU7CiAJfSBlbHNlIGlmIChIQVNfUENIX1NQTElUKGRldikpIHsKIAkJZGV2 X3ByaXYtPmRpc3BsYXkuZ2V0X3BpcGVfY29uZmlnID0gaXJvbmxha2VfZ2V0X3BpcGVfY29uZmln OwogCQlkZXZfcHJpdi0+ZGlzcGxheS5nZXRfaW5pdGlhbF9wbGFuZV9jb25maWcgPQpAQCAtMTQ5 MjksOCArMTQ4OTMsNiBAQCBzdGF0aWMgdm9pZCBpbnRlbF9pbml0X2Rpc3BsYXkoc3RydWN0IGRy bV9kZXZpY2UgKmRldikKIAkJCWlyb25sYWtlX2NydGNfY29tcHV0ZV9jbG9jazsKIAkJZGV2X3By aXYtPmRpc3BsYXkuY3J0Y19lbmFibGUgPSBpcm9ubGFrZV9jcnRjX2VuYWJsZTsKIAkJZGV2X3By aXYtPmRpc3BsYXkuY3J0Y19kaXNhYmxlID0gaXJvbmxha2VfY3J0Y19kaXNhYmxlOwotCQlkZXZf cHJpdi0+ZGlzcGxheS51cGRhdGVfcHJpbWFyeV9wbGFuZSA9Ci0JCQlpcm9ubGFrZV91cGRhdGVf cHJpbWFyeV9wbGFuZTsKIAl9IGVsc2UgaWYgKElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19DSEVS UllWSUVXKGRldikpIHsKIAkJZGV2X3ByaXYtPmRpc3BsYXkuZ2V0X3BpcGVfY29uZmlnID0gaTl4 eF9nZXRfcGlwZV9jb25maWc7CiAJCWRldl9wcml2LT5kaXNwbGF5LmdldF9pbml0aWFsX3BsYW5l X2NvbmZpZyA9CkBAIC0xNDkzOCw4ICsxNDkwMCw2IEBAIHN0YXRpYyB2b2lkIGludGVsX2luaXRf ZGlzcGxheShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCQlkZXZfcHJpdi0+ZGlzcGxheS5jcnRj X2NvbXB1dGVfY2xvY2sgPSBpOXh4X2NydGNfY29tcHV0ZV9jbG9jazsKIAkJZGV2X3ByaXYtPmRp c3BsYXkuY3J0Y19lbmFibGUgPSB2YWxsZXl2aWV3X2NydGNfZW5hYmxlOwogCQlkZXZfcHJpdi0+ ZGlzcGxheS5jcnRjX2Rpc2FibGUgPSBpOXh4X2NydGNfZGlzYWJsZTsKLQkJZGV2X3ByaXYtPmRp c3BsYXkudXBkYXRlX3ByaW1hcnlfcGxhbmUgPQotCQkJaTl4eF91cGRhdGVfcHJpbWFyeV9wbGFu ZTsKIAl9IGVsc2UgewogCQlkZXZfcHJpdi0+ZGlzcGxheS5nZXRfcGlwZV9jb25maWcgPSBpOXh4 X2dldF9waXBlX2NvbmZpZzsKIAkJZGV2X3ByaXYtPmRpc3BsYXkuZ2V0X2luaXRpYWxfcGxhbmVf Y29uZmlnID0KQEAgLTE0OTQ3LDggKzE0OTA3LDYgQEAgc3RhdGljIHZvaWQgaW50ZWxfaW5pdF9k aXNwbGF5KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJCWRldl9wcml2LT5kaXNwbGF5LmNydGNf Y29tcHV0ZV9jbG9jayA9IGk5eHhfY3J0Y19jb21wdXRlX2Nsb2NrOwogCQlkZXZfcHJpdi0+ZGlz cGxheS5jcnRjX2VuYWJsZSA9IGk5eHhfY3J0Y19lbmFibGU7CiAJCWRldl9wcml2LT5kaXNwbGF5 LmNydGNfZGlzYWJsZSA9IGk5eHhfY3J0Y19kaXNhYmxlOwotCQlkZXZfcHJpdi0+ZGlzcGxheS51 cGRhdGVfcHJpbWFyeV9wbGFuZSA9Ci0JCQlpOXh4X3VwZGF0ZV9wcmltYXJ5X3BsYW5lOwogCX0K IAogCS8qIFJldHVybnMgdGhlIGNvcmUgZGlzcGxheSBjbG9jayBzcGVlZCAqLwotLSAKMi4xLjAK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdm eCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==