From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matt Roper Subject: [PATCH 06/15] drm/i915/skl: Eliminate usage of pipe_wm_parameters from SKL-style WM (v3) Date: Thu, 24 Sep 2015 15:53:11 -0700 Message-ID: <1443135200-9870-7-git-send-email-matthew.d.roper@intel.com> References: <1443135200-9870-1-git-send-email-matthew.d.roper@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id BAAEB6E10F for ; Thu, 24 Sep 2015 15:53:53 -0700 (PDT) In-Reply-To: <1443135200-9870-1-git-send-email-matthew.d.roper@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 SnVzdCBwdWxsIHRoZSBpbmZvIG91dCBvZiB0aGUgc3RhdGUgc3RydWN0dXJlcyByYXRoZXIgdGhh biBzdGFnaW5nCml0IGluIGFuIGFkZGl0aW9uYWwgc2V0IG9mIHN0cnVjdHVyZXMuICBUbyBtYWtl IHRoaXMgbW9yZQpzdHJhaWdodGZvcndhcmQsIHdlIGNoYW5nZSB0aGUgc2lnbmF0dXJlIG9mIHNl dmVyYWwgaW50ZXJuYWwgV00KZnVuY3Rpb25zIHRvIHRha2UgdGhlIGNydGMgc3RhdGUgYXMgYSBw YXJhbWV0ZXIuCgp2MjoKIC0gRG9uJ3QgZm9yZ2V0IHRvIHNraXAgY3Vyc29yIHBsYW5lcyBvbiBh IGxvb3AgaW4gdGhlIEREQiBhbGxvY2F0aW9uCiAgIGZ1bmN0aW9uIHRvIG1hdGNoIG9yaWdpbmFs IGJlaGF2aW9yLiAgKEFuZGVyKQogLSBDaGFuZ2UgYSB1c2Ugb2YgaW50ZWxfY3J0Yy0+YWN0aXZl IHRvIGNzdGF0ZS0+YWN0aXZlLiAgVGhleSBzaG91bGQKICAgYmUgaWRlbnRpY2FsLCBidXQgaXQn cyBiZXR0ZXIgdG8gYmUgY29uc2lzdGVudC4gIChBbmRlcikKIC0gUmV3b3JrIG1vcmUgZnVuY3Rp b24gc2lnbmF0dXJlcyB0byBwYXNzIHN0YXRlcyByYXRoZXIgdGhhbiBjcnRjIGZvcgogICBjb25z aXN0ZW5jeS4gKEFuZGVyKQoKdjM6CiAgLSBBZGQgbWlzc2luZyAiKyAxIiB0byBza2xfd21fcGxh bmVfaWQoKSdzICdvdmVybGF5JyBjYXNlLiAoTWFhcnRlbikKICAtIFBhY2tlZCBmb3JtYXRzIHNo b3VsZCBwYXNzICcwJyB0byBkcm1fZm9ybWF0X3BsYW5lX2NwcCgpLCBub3QgMS4KICAgIChNYWFy dGVuKQogIC0gRHJvcCB1bndhbnRlZCBXQVJOX09OKCkgZm9yIGRpc2FibGVkIHBsYW5lcyB3aGVu IGNhbGN1bGF0aW5nIGRhdGEKICAgIHJhdGUgZm9yIFNLTC4gIChNYWFydGVuKQoKU2lnbmVkLW9m Zi1ieTogTWF0dCBSb3BlciA8bWF0dGhldy5kLnJvcGVyQGludGVsLmNvbT4KUmV2aWV3ZWQtYnk6 IE1hYXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+Ci0t LQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyB8IDMyNiArKysrKysrKysrKysrKysr KysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMTUxIGluc2VydGlvbnMo KyksIDE3NSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9wbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwppbmRleCA4ODI5MDQ3 Li43YmZjYzk4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKQEAgLTE3ODcsMTMgKzE3ODcsNiBA QCBzdGF0aWMgdWludDMyX3QgaWxrX3dtX2ZiYyh1aW50MzJfdCBwcmlfdmFsLCB1aW50MzJfdCBo b3Jpel9waXhlbHMsCiAJcmV0dXJuIERJVl9ST1VORF9VUChwcmlfdmFsICogNjQsIGhvcml6X3Bp eGVscyAqIGJ5dGVzX3Blcl9waXhlbCkgKyAyOwogfQogCi1zdHJ1Y3Qgc2tsX3BpcGVfd21fcGFy YW1ldGVycyB7Ci0JYm9vbCBhY3RpdmU7Ci0JdWludDMyX3QgcGlwZV9odG90YWw7Ci0JdWludDMy X3QgcGl4ZWxfcmF0ZTsgLyogaW4gS0h6ICovCi0Jc3RydWN0IGludGVsX3BsYW5lX3dtX3BhcmFt ZXRlcnMgcGxhbmVbSTkxNV9NQVhfUExBTkVTXTsKLX07Ci0KIHN0cnVjdCBpbGtfd21fbWF4aW11 bXMgewogCXVpbnQxNl90IHByaTsKIAl1aW50MTZfdCBzcHI7CkBAIC0yODM0LDE4ICsyODI3LDQw IEBAIHN0YXRpYyBib29sIGlsa19kaXNhYmxlX2xwX3dtKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp CiAjZGVmaW5lIFNLTF9EREJfU0laRQkJODk2CS8qIGluIGJsb2NrcyAqLwogI2RlZmluZSBCWFRf RERCX1NJWkUJCTUxMgogCisvKgorICogUmV0dXJuIHRoZSBpbmRleCBvZiBhIHBsYW5lIGluIHRo ZSBTS0wgRERCIGFuZCB3bSByZXN1bHQgYXJyYXlzLiAgUHJpbWFyeQorICogcGxhbmUgaXMgYWx3 YXlzIGluIHNsb3QgMCwgY3Vyc29yIGlzIGFsd2F5cyBpbiBzbG90IEk5MTVfTUFYX1BMQU5FUy0x LCBhbmQKKyAqIG90aGVyIHVuaXZlcnNhbCBwbGFuZXMgYXJlIGluIGluZGljZXMgMS4ubi4gIE5v dGUgdGhhdCB0aGlzIG1heSBsZWF2ZSB1bnVzZWQKKyAqIGluZGljZXMgYmV0d2VlbiB0aGUgdG9w ICJzcHJpdGUiIHBsYW5lIGFuZCB0aGUgY3Vyc29yLgorICovCitzdGF0aWMgaW50Citza2xfd21f cGxhbmVfaWQoY29uc3Qgc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSkKK3sKKwlzd2l0Y2ggKHBs YW5lLT5iYXNlLnR5cGUpIHsKKwljYXNlIERSTV9QTEFORV9UWVBFX1BSSU1BUlk6CisJCXJldHVy biAwOworCWNhc2UgRFJNX1BMQU5FX1RZUEVfQ1VSU09SOgorCQlyZXR1cm4gUExBTkVfQ1VSU09S OworCWNhc2UgRFJNX1BMQU5FX1RZUEVfT1ZFUkxBWToKKwkJcmV0dXJuIHBsYW5lLT5wbGFuZSAr IDE7CisJZGVmYXVsdDoKKwkJTUlTU0lOR19DQVNFKHBsYW5lLT5iYXNlLnR5cGUpOworCQlyZXR1 cm4gcGxhbmUtPnBsYW5lOworCX0KK30KKwogc3RhdGljIHZvaWQKIHNrbF9kZGJfZ2V0X3BpcGVf YWxsb2NhdGlvbl9saW1pdHMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKLQkJCQkgICBzdHJ1Y3Qg ZHJtX2NydGMgKmZvcl9jcnRjLAorCQkJCSAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpjc3RhdGUsCiAJCQkJICAgY29uc3Qgc3RydWN0IGludGVsX3dtX2NvbmZpZyAqY29uZmlnLAot CQkJCSAgIGNvbnN0IHN0cnVjdCBza2xfcGlwZV93bV9wYXJhbWV0ZXJzICpwYXJhbXMsCiAJCQkJ ICAgc3RydWN0IHNrbF9kZGJfZW50cnkgKmFsbG9jIC8qIG91dCAqLykKIHsKKwlzdHJ1Y3QgZHJt X2NydGMgKmZvcl9jcnRjID0gY3N0YXRlLT5iYXNlLmNydGM7CiAJc3RydWN0IGRybV9jcnRjICpj cnRjOwogCXVuc2lnbmVkIGludCBwaXBlX3NpemUsIGRkYl9zaXplOwogCWludCBudGhfYWN0aXZl X3BpcGU7CiAKLQlpZiAoIXBhcmFtcy0+YWN0aXZlKSB7CisJaWYgKCFjc3RhdGUtPmJhc2UuYWN0 aXZlKSB7CiAJCWFsbG9jLT5zdGFydCA9IDA7CiAJCWFsbG9jLT5lbmQgPSAwOwogCQlyZXR1cm47 CkBAIC0yOTExLDE5ICsyOTI2LDI5IEBAIHZvaWQgc2tsX2RkYl9nZXRfaHdfc3RhdGUoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogfQogCiBzdGF0aWMgdW5zaWduZWQgaW50Ci1z a2xfcGxhbmVfcmVsYXRpdmVfZGF0YV9yYXRlKGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV93bV9w YXJhbWV0ZXJzICpwLCBpbnQgeSkKK3NrbF9wbGFuZV9yZWxhdGl2ZV9kYXRhX3JhdGUoY29uc3Qg c3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSwKKwkJCSAgICAgY29uc3Qgc3RydWN0IGRy bV9wbGFuZV9zdGF0ZSAqcHN0YXRlLAorCQkJICAgICBpbnQgeSkKIHsKKwlzdHJ1Y3QgaW50ZWxf Y3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3N0YXRlLT5iYXNlLmNydGMpOworCXN0 cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcHN0YXRlLT5mYjsKIAogCS8qIGZvciBwbGFuYXIg Zm9ybWF0ICovCi0JaWYgKHAtPnlfYnl0ZXNfcGVyX3BpeGVsKSB7CisJaWYgKGZiLT5waXhlbF9m b3JtYXQgPT0gRFJNX0ZPUk1BVF9OVjEyKSB7CiAJCWlmICh5KSAgLyogeS1wbGFuZSBkYXRhIHJh dGUgKi8KLQkJCXJldHVybiBwLT5ob3Jpel9waXhlbHMgKiBwLT52ZXJ0X3BpeGVscyAqIHAtPnlf Ynl0ZXNfcGVyX3BpeGVsOworCQkJcmV0dXJuIGludGVsX2NydGMtPmNvbmZpZy0+cGlwZV9zcmNf dyAqCisJCQkJaW50ZWxfY3J0Yy0+Y29uZmlnLT5waXBlX3NyY19oICoKKwkJCQlkcm1fZm9ybWF0 X3BsYW5lX2NwcChmYi0+cGl4ZWxfZm9ybWF0LCAwKTsKIAkJZWxzZSAgICAvKiB1di1wbGFuZSBk YXRhIHJhdGUgKi8KLQkJCXJldHVybiAocC0+aG9yaXpfcGl4ZWxzLzIpICogKHAtPnZlcnRfcGl4 ZWxzLzIpICogcC0+Ynl0ZXNfcGVyX3BpeGVsOworCQkJcmV0dXJuIChpbnRlbF9jcnRjLT5jb25m aWctPnBpcGVfc3JjX3cvMikgKgorCQkJCShpbnRlbF9jcnRjLT5jb25maWctPnBpcGVfc3JjX2gv MikgKgorCQkJCWRybV9mb3JtYXRfcGxhbmVfY3BwKGZiLT5waXhlbF9mb3JtYXQsIDEpOwogCX0K IAogCS8qIGZvciBwYWNrZWQgZm9ybWF0cyAqLwotCXJldHVybiBwLT5ob3Jpel9waXhlbHMgKiBw LT52ZXJ0X3BpeGVscyAqIHAtPmJ5dGVzX3Blcl9waXhlbDsKKwlyZXR1cm4gaW50ZWxfY3J0Yy0+ Y29uZmlnLT5waXBlX3NyY193ICoKKwkJaW50ZWxfY3J0Yy0+Y29uZmlnLT5waXBlX3NyY19oICoK KwkJZHJtX2Zvcm1hdF9wbGFuZV9jcHAoZmItPnBpeGVsX2Zvcm1hdCwgMCk7CiB9CiAKIC8qCkBA IC0yOTMyLDQ2ICsyOTU3LDUxIEBAIHNrbF9wbGFuZV9yZWxhdGl2ZV9kYXRhX3JhdGUoY29uc3Qg c3RydWN0IGludGVsX3BsYW5lX3dtX3BhcmFtZXRlcnMgKnAsIGludCB5KQogICogICAzICogNDA5 NiAqIDgxOTIgICogNCA8IDJeMzIKICAqLwogc3RhdGljIHVuc2lnbmVkIGludAotc2tsX2dldF90 b3RhbF9yZWxhdGl2ZV9kYXRhX3JhdGUoc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMsCi0J CQkJIGNvbnN0IHN0cnVjdCBza2xfcGlwZV93bV9wYXJhbWV0ZXJzICpwYXJhbXMpCitza2xfZ2V0 X3RvdGFsX3JlbGF0aXZlX2RhdGFfcmF0ZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq Y3N0YXRlKQogeworCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0 Yyhjc3RhdGUtPmJhc2UuY3J0Yyk7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGludGVsX2Ny dGMtPmJhc2UuZGV2OworCWNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZSAqaW50ZWxfcGxhbmU7CiAJ dW5zaWduZWQgaW50IHRvdGFsX2RhdGFfcmF0ZSA9IDA7Ci0JaW50IHBsYW5lOwogCi0JZm9yIChw bGFuZSA9IDA7IHBsYW5lIDwgaW50ZWxfbnVtX3BsYW5lcyhpbnRlbF9jcnRjKTsgcGxhbmUrKykg ewotCQljb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfd21fcGFyYW1ldGVycyAqcDsKKwlmb3JfZWFj aF9pbnRlbF9wbGFuZV9vbl9jcnRjKGRldiwgaW50ZWxfY3J0YywgaW50ZWxfcGxhbmUpIHsKKwkJ Y29uc3Qgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqcHN0YXRlID0gaW50ZWxfcGxhbmUtPmJhc2Uu c3RhdGU7CiAKLQkJcCA9ICZwYXJhbXMtPnBsYW5lW3BsYW5lXTsKLQkJaWYgKCFwLT5lbmFibGVk KQorCQlpZiAocHN0YXRlLT5mYiA9PSBOVUxMKQogCQkJY29udGludWU7CiAKLQkJdG90YWxfZGF0 YV9yYXRlICs9IHNrbF9wbGFuZV9yZWxhdGl2ZV9kYXRhX3JhdGUocCwgMCk7IC8qIHBhY2tlZC91 diAqLwotCQlpZiAocC0+eV9ieXRlc19wZXJfcGl4ZWwpIHsKLQkJCXRvdGFsX2RhdGFfcmF0ZSAr PSBza2xfcGxhbmVfcmVsYXRpdmVfZGF0YV9yYXRlKHAsIDEpOyAvKiB5LXBsYW5lICovCi0JCX0K KwkJLyogcGFja2VkL3V2ICovCisJCXRvdGFsX2RhdGFfcmF0ZSArPSBza2xfcGxhbmVfcmVsYXRp dmVfZGF0YV9yYXRlKGNzdGF0ZSwKKwkJCQkJCQkJcHN0YXRlLAorCQkJCQkJCQkwKTsKKworCQlp ZiAocHN0YXRlLT5mYi0+cGl4ZWxfZm9ybWF0ID09IERSTV9GT1JNQVRfTlYxMikKKwkJCS8qIHkt cGxhbmUgKi8KKwkJCXRvdGFsX2RhdGFfcmF0ZSArPSBza2xfcGxhbmVfcmVsYXRpdmVfZGF0YV9y YXRlKGNzdGF0ZSwKKwkJCQkJCQkJCXBzdGF0ZSwKKwkJCQkJCQkJCTEpOwogCX0KIAogCXJldHVy biB0b3RhbF9kYXRhX3JhdGU7CiB9CiAKIHN0YXRpYyB2b2lkCi1za2xfYWxsb2NhdGVfcGlwZV9k ZGIoc3RydWN0IGRybV9jcnRjICpjcnRjLAorc2tsX2FsbG9jYXRlX3BpcGVfZGRiKHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCiAJCSAgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF93bV9j b25maWcgKmNvbmZpZywKLQkJICAgICAgY29uc3Qgc3RydWN0IHNrbF9waXBlX3dtX3BhcmFtZXRl cnMgKnBhcmFtcywKIAkJICAgICAgc3RydWN0IHNrbF9kZGJfYWxsb2NhdGlvbiAqZGRiIC8qIG91 dCAqLykKIHsKKwlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBjc3RhdGUtPmJhc2UuY3J0YzsKIAlz dHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2OwotCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CiAJc3RydWN0IGludGVsX2NydGMgKmlu dGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOworCXN0cnVjdCBpbnRlbF9wbGFuZSAqaW50 ZWxfcGxhbmU7CiAJZW51bSBwaXBlIHBpcGUgPSBpbnRlbF9jcnRjLT5waXBlOwogCXN0cnVjdCBz a2xfZGRiX2VudHJ5ICphbGxvYyA9ICZkZGItPnBpcGVbcGlwZV07CiAJdWludDE2X3QgYWxsb2Nf c2l6ZSwgc3RhcnQsIGN1cnNvcl9ibG9ja3M7CiAJdWludDE2X3QgbWluaW11bVtJOTE1X01BWF9Q TEFORVNdOwogCXVpbnQxNl90IHlfbWluaW11bVtJOTE1X01BWF9QTEFORVNdOwogCXVuc2lnbmVk IGludCB0b3RhbF9kYXRhX3JhdGU7Ci0JaW50IHBsYW5lOwogCi0Jc2tsX2RkYl9nZXRfcGlwZV9h bGxvY2F0aW9uX2xpbWl0cyhkZXYsIGNydGMsIGNvbmZpZywgcGFyYW1zLCBhbGxvYyk7CisJc2ts X2RkYl9nZXRfcGlwZV9hbGxvY2F0aW9uX2xpbWl0cyhkZXYsIGNzdGF0ZSwgY29uZmlnLCBhbGxv Yyk7CiAJYWxsb2Nfc2l6ZSA9IHNrbF9kZGJfZW50cnlfc2l6ZShhbGxvYyk7CiAJaWYgKGFsbG9j X3NpemUgPT0gMCkgewogCQltZW1zZXQoZGRiLT5wbGFuZVtwaXBlXSwgMCwgc2l6ZW9mKGRkYi0+ cGxhbmVbcGlwZV0pKTsKQEAgLTI5ODgsMTcgKzMwMTgsMjAgQEAgc2tsX2FsbG9jYXRlX3BpcGVf ZGRiKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAlhbGxvYy0+ZW5kIC09IGN1cnNvcl9ibG9ja3M7 CiAKIAkvKiAxLiBBbGxvY2F0ZSB0aGUgbWluaW51bSByZXF1aXJlZCBibG9ja3MgZm9yIGVhY2gg YWN0aXZlIHBsYW5lICovCi0JZm9yX2VhY2hfcGxhbmUoZGV2X3ByaXYsIHBpcGUsIHBsYW5lKSB7 Ci0JCWNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV93bV9wYXJhbWV0ZXJzICpwOworCWZvcl9lYWNo X2ludGVsX3BsYW5lX29uX2NydGMoZGV2LCBpbnRlbF9jcnRjLCBpbnRlbF9wbGFuZSkgeworCQlz dHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSA9ICZpbnRlbF9wbGFuZS0+YmFzZTsKKwkJc3RydWN0IGRy bV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZS0+ZmI7CisJCWludCBpZCA9IHNrbF93bV9wbGFuZV9p ZChpbnRlbF9wbGFuZSk7CiAKLQkJcCA9ICZwYXJhbXMtPnBsYW5lW3BsYW5lXTsKLQkJaWYgKCFw LT5lbmFibGVkKQorCQlpZiAoZmIgPT0gTlVMTCkKKwkJCWNvbnRpbnVlOworCQlpZiAocGxhbmUt PnR5cGUgPT0gRFJNX1BMQU5FX1RZUEVfQ1VSU09SKQogCQkJY29udGludWU7CiAKLQkJbWluaW11 bVtwbGFuZV0gPSA4OwotCQlhbGxvY19zaXplIC09IG1pbmltdW1bcGxhbmVdOwotCQl5X21pbmlt dW1bcGxhbmVdID0gcC0+eV9ieXRlc19wZXJfcGl4ZWwgPyA4IDogMDsKLQkJYWxsb2Nfc2l6ZSAt PSB5X21pbmltdW1bcGxhbmVdOworCQltaW5pbXVtW2lkXSA9IDg7CisJCWFsbG9jX3NpemUgLT0g bWluaW11bVtpZF07CisJCXlfbWluaW11bVtpZF0gPSAoZmItPnBpeGVsX2Zvcm1hdCA9PSBEUk1f Rk9STUFUX05WMTIpID8gOCA6IDA7CisJCWFsbG9jX3NpemUgLT0geV9taW5pbXVtW2lkXTsKIAl9 CiAKIAkvKgpAQCAtMzAwNyw0NSArMzA0MCw1MCBAQCBza2xfYWxsb2NhdGVfcGlwZV9kZGIoc3Ry dWN0IGRybV9jcnRjICpjcnRjLAogCSAqCiAJICogRklYTUU6IHdlIG1heSBub3QgYWxsb2NhdGUg ZXZlcnkgc2luZ2xlIGJsb2NrIGhlcmUuCiAJICovCi0JdG90YWxfZGF0YV9yYXRlID0gc2tsX2dl dF90b3RhbF9yZWxhdGl2ZV9kYXRhX3JhdGUoaW50ZWxfY3J0YywgcGFyYW1zKTsKKwl0b3RhbF9k YXRhX3JhdGUgPSBza2xfZ2V0X3RvdGFsX3JlbGF0aXZlX2RhdGFfcmF0ZShjc3RhdGUpOwogCiAJ c3RhcnQgPSBhbGxvYy0+c3RhcnQ7Ci0JZm9yIChwbGFuZSA9IDA7IHBsYW5lIDwgaW50ZWxfbnVt X3BsYW5lcyhpbnRlbF9jcnRjKTsgcGxhbmUrKykgewotCQljb25zdCBzdHJ1Y3QgaW50ZWxfcGxh bmVfd21fcGFyYW1ldGVycyAqcDsKKwlmb3JfZWFjaF9pbnRlbF9wbGFuZV9vbl9jcnRjKGRldiwg aW50ZWxfY3J0YywgaW50ZWxfcGxhbmUpIHsKKwkJc3RydWN0IGRybV9wbGFuZSAqcGxhbmUgPSAm aW50ZWxfcGxhbmUtPmJhc2U7CisJCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnBzdGF0ZSA9IGlu dGVsX3BsYW5lLT5iYXNlLnN0YXRlOwogCQl1bnNpZ25lZCBpbnQgZGF0YV9yYXRlLCB5X2RhdGFf cmF0ZTsKIAkJdWludDE2X3QgcGxhbmVfYmxvY2tzLCB5X3BsYW5lX2Jsb2NrcyA9IDA7CisJCWlu dCBpZCA9IHNrbF93bV9wbGFuZV9pZChpbnRlbF9wbGFuZSk7CiAKLQkJcCA9ICZwYXJhbXMtPnBs YW5lW3BsYW5lXTsKLQkJaWYgKCFwLT5lbmFibGVkKQorCQlpZiAocHN0YXRlLT5mYiA9PSBOVUxM KQorCQkJY29udGludWU7CisJCWlmIChwbGFuZS0+dHlwZSA9PSBEUk1fUExBTkVfVFlQRV9DVVJT T1IpCiAJCQljb250aW51ZTsKIAotCQlkYXRhX3JhdGUgPSBza2xfcGxhbmVfcmVsYXRpdmVfZGF0 YV9yYXRlKHAsIDApOworCQlkYXRhX3JhdGUgPSBza2xfcGxhbmVfcmVsYXRpdmVfZGF0YV9yYXRl KGNzdGF0ZSwgcHN0YXRlLCAwKTsKIAogCQkvKgogCQkgKiBhbGxvY2F0aW9uIGZvciAocGFja2Vk IGZvcm1hdHMpIG9yICh1di1wbGFuZSBwYXJ0IG9mIHBsYW5hciBmb3JtYXQpOgogCQkgKiBwcm9t b3RlIHRoZSBleHByZXNzaW9uIHRvIDY0IGJpdHMgdG8gYXZvaWQgb3ZlcmZsb3dpbmcsIHRoZQog CQkgKiByZXN1bHQgaXMgPCBhdmFpbGFibGUgYXMgZGF0YV9yYXRlIC8gdG90YWxfZGF0YV9yYXRl IDwgMQogCQkgKi8KLQkJcGxhbmVfYmxvY2tzID0gbWluaW11bVtwbGFuZV07CisJCXBsYW5lX2Js b2NrcyA9IG1pbmltdW1baWRdOwogCQlwbGFuZV9ibG9ja3MgKz0gZGl2X3U2NCgodWludDY0X3Qp YWxsb2Nfc2l6ZSAqIGRhdGFfcmF0ZSwKIAkJCQkJdG90YWxfZGF0YV9yYXRlKTsKIAotCQlkZGIt PnBsYW5lW3BpcGVdW3BsYW5lXS5zdGFydCA9IHN0YXJ0OwotCQlkZGItPnBsYW5lW3BpcGVdW3Bs YW5lXS5lbmQgPSBzdGFydCArIHBsYW5lX2Jsb2NrczsKKwkJZGRiLT5wbGFuZVtwaXBlXVtpZF0u c3RhcnQgPSBzdGFydDsKKwkJZGRiLT5wbGFuZVtwaXBlXVtpZF0uZW5kID0gc3RhcnQgKyBwbGFu ZV9ibG9ja3M7CiAKIAkJc3RhcnQgKz0gcGxhbmVfYmxvY2tzOwogCiAJCS8qCiAJCSAqIGFsbG9j YXRpb24gZm9yIHlfcGxhbmUgcGFydCBvZiBwbGFuYXIgZm9ybWF0OgogCQkgKi8KLQkJaWYgKHAt PnlfYnl0ZXNfcGVyX3BpeGVsKSB7Ci0JCQl5X2RhdGFfcmF0ZSA9IHNrbF9wbGFuZV9yZWxhdGl2 ZV9kYXRhX3JhdGUocCwgMSk7Ci0JCQl5X3BsYW5lX2Jsb2NrcyA9IHlfbWluaW11bVtwbGFuZV07 CisJCWlmIChwc3RhdGUtPmZiLT5waXhlbF9mb3JtYXQgPT0gRFJNX0ZPUk1BVF9OVjEyKSB7CisJ CQl5X2RhdGFfcmF0ZSA9IHNrbF9wbGFuZV9yZWxhdGl2ZV9kYXRhX3JhdGUoY3N0YXRlLAorCQkJ CQkJCQkgICBwc3RhdGUsCisJCQkJCQkJCSAgIDEpOworCQkJeV9wbGFuZV9ibG9ja3MgPSB5X21p bmltdW1baWRdOwogCQkJeV9wbGFuZV9ibG9ja3MgKz0gZGl2X3U2NCgodWludDY0X3QpYWxsb2Nf c2l6ZSAqIHlfZGF0YV9yYXRlLAogCQkJCQkJdG90YWxfZGF0YV9yYXRlKTsKIAotCQkJZGRiLT55 X3BsYW5lW3BpcGVdW3BsYW5lXS5zdGFydCA9IHN0YXJ0OwotCQkJZGRiLT55X3BsYW5lW3BpcGVd W3BsYW5lXS5lbmQgPSBzdGFydCArIHlfcGxhbmVfYmxvY2tzOworCQkJZGRiLT55X3BsYW5lW3Bp cGVdW2lkXS5zdGFydCA9IHN0YXJ0OworCQkJZGRiLT55X3BsYW5lW3BpcGVdW2lkXS5lbmQgPSBz dGFydCArIHlfcGxhbmVfYmxvY2tzOwogCiAJCQlzdGFydCArPSB5X3BsYW5lX2Jsb2NrczsKIAkJ fQpAQCAtMzE0Niw3MyArMzE4NCwxNiBAQCBzdGF0aWMgdm9pZCBza2xfY29tcHV0ZV93bV9nbG9i YWxfcGFyYW1ldGVycyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCX0KIH0KIAotc3RhdGljIHZv aWQgc2tsX2NvbXB1dGVfd21fcGlwZV9wYXJhbWV0ZXJzKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywK LQkJCQkJICAgc3RydWN0IHNrbF9waXBlX3dtX3BhcmFtZXRlcnMgKnApCi17Ci0Jc3RydWN0IGRy bV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0 YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Ci0JZW51bSBwaXBlIHBpcGUgPSBpbnRlbF9jcnRjLT5w aXBlOwotCXN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lOwotCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIg KmZiOwotCWludCBpID0gMTsgLyogSW5kZXggZm9yIHNwcml0ZSBwbGFuZXMgc3RhcnQgKi8KLQot CXAtPmFjdGl2ZSA9IGludGVsX2NydGMtPmFjdGl2ZTsKLQlpZiAocC0+YWN0aXZlKSB7Ci0JCXAt PnBpcGVfaHRvdGFsID0gaW50ZWxfY3J0Yy0+Y29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUuY3J0 Y19odG90YWw7Ci0JCXAtPnBpeGVsX3JhdGUgPSBza2xfcGlwZV9waXhlbF9yYXRlKGludGVsX2Ny dGMtPmNvbmZpZyk7Ci0KLQkJZmIgPSBjcnRjLT5wcmltYXJ5LT5zdGF0ZS0+ZmI7Ci0JCS8qIEZv ciBwbGFuYXI6IEJwcCBpcyBmb3IgdXYgcGxhbmUsIHlfQnBwIGlzIGZvciB5IHBsYW5lICovCi0J CWlmIChmYikgewotCQkJcC0+cGxhbmVbMF0uZW5hYmxlZCA9IHRydWU7Ci0JCQlwLT5wbGFuZVsw XS5ieXRlc19wZXJfcGl4ZWwgPSBmYi0+cGl4ZWxfZm9ybWF0ID09IERSTV9GT1JNQVRfTlYxMiA/ Ci0JCQkJZHJtX2Zvcm1hdF9wbGFuZV9jcHAoZmItPnBpeGVsX2Zvcm1hdCwgMSkgOgotCQkJCWRy bV9mb3JtYXRfcGxhbmVfY3BwKGZiLT5waXhlbF9mb3JtYXQsIDApOwotCQkJcC0+cGxhbmVbMF0u eV9ieXRlc19wZXJfcGl4ZWwgPSBmYi0+cGl4ZWxfZm9ybWF0ID09IERSTV9GT1JNQVRfTlYxMiA/ Ci0JCQkJZHJtX2Zvcm1hdF9wbGFuZV9jcHAoZmItPnBpeGVsX2Zvcm1hdCwgMCkgOiAwOwotCQkJ cC0+cGxhbmVbMF0udGlsaW5nID0gZmItPm1vZGlmaWVyWzBdOwotCQl9IGVsc2UgewotCQkJcC0+ cGxhbmVbMF0uZW5hYmxlZCA9IGZhbHNlOwotCQkJcC0+cGxhbmVbMF0uYnl0ZXNfcGVyX3BpeGVs ID0gMDsKLQkJCXAtPnBsYW5lWzBdLnlfYnl0ZXNfcGVyX3BpeGVsID0gMDsKLQkJCXAtPnBsYW5l WzBdLnRpbGluZyA9IERSTV9GT1JNQVRfTU9EX05PTkU7Ci0JCX0KLQkJcC0+cGxhbmVbMF0uaG9y aXpfcGl4ZWxzID0gaW50ZWxfY3J0Yy0+Y29uZmlnLT5waXBlX3NyY193OwotCQlwLT5wbGFuZVsw XS52ZXJ0X3BpeGVscyA9IGludGVsX2NydGMtPmNvbmZpZy0+cGlwZV9zcmNfaDsKLQkJcC0+cGxh bmVbMF0ucm90YXRpb24gPSBjcnRjLT5wcmltYXJ5LT5zdGF0ZS0+cm90YXRpb247Ci0KLQkJZmIg PSBjcnRjLT5jdXJzb3ItPnN0YXRlLT5mYjsKLQkJcC0+cGxhbmVbUExBTkVfQ1VSU09SXS55X2J5 dGVzX3Blcl9waXhlbCA9IDA7Ci0JCWlmIChmYikgewotCQkJcC0+cGxhbmVbUExBTkVfQ1VSU09S XS5lbmFibGVkID0gdHJ1ZTsKLQkJCXAtPnBsYW5lW1BMQU5FX0NVUlNPUl0uYnl0ZXNfcGVyX3Bp eGVsID0gZmItPmJpdHNfcGVyX3BpeGVsIC8gODsKLQkJCXAtPnBsYW5lW1BMQU5FX0NVUlNPUl0u aG9yaXpfcGl4ZWxzID0gY3J0Yy0+Y3Vyc29yLT5zdGF0ZS0+Y3J0Y193OwotCQkJcC0+cGxhbmVb UExBTkVfQ1VSU09SXS52ZXJ0X3BpeGVscyA9IGNydGMtPmN1cnNvci0+c3RhdGUtPmNydGNfaDsK LQkJfSBlbHNlIHsKLQkJCXAtPnBsYW5lW1BMQU5FX0NVUlNPUl0uZW5hYmxlZCA9IGZhbHNlOwot CQkJcC0+cGxhbmVbUExBTkVfQ1VSU09SXS5ieXRlc19wZXJfcGl4ZWwgPSAwOwotCQkJcC0+cGxh bmVbUExBTkVfQ1VSU09SXS5ob3Jpel9waXhlbHMgPSA2NDsKLQkJCXAtPnBsYW5lW1BMQU5FX0NV UlNPUl0udmVydF9waXhlbHMgPSA2NDsKLQkJfQotCX0KLQotCWxpc3RfZm9yX2VhY2hfZW50cnko cGxhbmUsICZkZXYtPm1vZGVfY29uZmlnLnBsYW5lX2xpc3QsIGhlYWQpIHsKLQkJc3RydWN0IGlu dGVsX3BsYW5lICppbnRlbF9wbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lKTsKLQotCQlpZiAo aW50ZWxfcGxhbmUtPnBpcGUgPT0gcGlwZSAmJgotCQkJcGxhbmUtPnR5cGUgPT0gRFJNX1BMQU5F X1RZUEVfT1ZFUkxBWSkKLQkJCXAtPnBsYW5lW2krK10gPSBpbnRlbF9wbGFuZS0+d207Ci0JfQot fQotCiBzdGF0aWMgYm9vbCBza2xfY29tcHV0ZV9wbGFuZV93bShjb25zdCBzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCi0JCQkJIHN0cnVjdCBza2xfcGlwZV93bV9wYXJhbWV0ZXJz ICpwLAotCQkJCSBzdHJ1Y3QgaW50ZWxfcGxhbmVfd21fcGFyYW1ldGVycyAqcF9wYXJhbXMsCisJ CQkJIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCisJCQkJIHN0cnVjdCBpbnRlbF9w bGFuZSAqaW50ZWxfcGxhbmUsCiAJCQkJIHVpbnQxNl90IGRkYl9hbGxvY2F0aW9uLAogCQkJCSBp bnQgbGV2ZWwsCiAJCQkJIHVpbnQxNl90ICpvdXRfYmxvY2tzLCAvKiBvdXQgKi8KIAkJCQkgdWlu dDhfdCAqb3V0X2xpbmVzIC8qIG91dCAqLykKIHsKKwlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSA9 ICZpbnRlbF9wbGFuZS0+YmFzZTsKKwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5l LT5zdGF0ZS0+ZmI7CiAJdWludDMyX3QgbGF0ZW5jeSA9IGRldl9wcml2LT53bS5za2xfbGF0ZW5j eVtsZXZlbF07CiAJdWludDMyX3QgbWV0aG9kMSwgbWV0aG9kMjsKIAl1aW50MzJfdCBwbGFuZV9i eXRlc19wZXJfbGluZSwgcGxhbmVfYmxvY2tzX3Blcl9saW5lOwpAQCAtMzIyMCwzMSArMzIwMSwz NSBAQCBzdGF0aWMgYm9vbCBza2xfY29tcHV0ZV9wbGFuZV93bShjb25zdCBzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJdWludDMyX3Qgc2VsZWN0ZWRfcmVzdWx0OwogCXVpbnQ4 X3QgYnl0ZXNfcGVyX3BpeGVsOwogCi0JaWYgKGxhdGVuY3kgPT0gMCB8fCAhcC0+YWN0aXZlIHx8 ICFwX3BhcmFtcy0+ZW5hYmxlZCkKKwlpZiAobGF0ZW5jeSA9PSAwIHx8ICFjc3RhdGUtPmJhc2Uu YWN0aXZlIHx8ICFmYikKIAkJcmV0dXJuIGZhbHNlOwogCi0JYnl0ZXNfcGVyX3BpeGVsID0gcF9w YXJhbXMtPnlfYnl0ZXNfcGVyX3BpeGVsID8KLQkJcF9wYXJhbXMtPnlfYnl0ZXNfcGVyX3BpeGVs IDoKLQkJcF9wYXJhbXMtPmJ5dGVzX3Blcl9waXhlbDsKLQltZXRob2QxID0gc2tsX3dtX21ldGhv ZDEocC0+cGl4ZWxfcmF0ZSwKKwlieXRlc19wZXJfcGl4ZWwgPSAoZmItPnBpeGVsX2Zvcm1hdCA9 PSBEUk1fRk9STUFUX05WMTIpID8KKwkJZHJtX2Zvcm1hdF9wbGFuZV9jcHAoRFJNX0ZPUk1BVF9O VjEyLCAwKSA6CisJCWRybV9mb3JtYXRfcGxhbmVfY3BwKERSTV9GT1JNQVRfTlYxMiwgMSk7CisJ bWV0aG9kMSA9IHNrbF93bV9tZXRob2QxKHNrbF9waXBlX3BpeGVsX3JhdGUoY3N0YXRlKSwKIAkJ CQkgYnl0ZXNfcGVyX3BpeGVsLAogCQkJCSBsYXRlbmN5KTsKLQltZXRob2QyID0gc2tsX3dtX21l dGhvZDIocC0+cGl4ZWxfcmF0ZSwKLQkJCQkgcC0+cGlwZV9odG90YWwsCi0JCQkJIHBfcGFyYW1z LT5ob3Jpel9waXhlbHMsCisJbWV0aG9kMiA9IHNrbF93bV9tZXRob2QyKHNrbF9waXBlX3BpeGVs X3JhdGUoY3N0YXRlKSwKKwkJCQkgY3N0YXRlLT5iYXNlLmFkanVzdGVkX21vZGUuY3J0Y19odG90 YWwsCisJCQkJIGNzdGF0ZS0+cGlwZV9zcmNfdywKIAkJCQkgYnl0ZXNfcGVyX3BpeGVsLAotCQkJ CSBwX3BhcmFtcy0+dGlsaW5nLAorCQkJCSBmYi0+bW9kaWZpZXJbMF0sCiAJCQkJIGxhdGVuY3kp OwogCi0JcGxhbmVfYnl0ZXNfcGVyX2xpbmUgPSBwX3BhcmFtcy0+aG9yaXpfcGl4ZWxzICogYnl0 ZXNfcGVyX3BpeGVsOworCXBsYW5lX2J5dGVzX3Blcl9saW5lID0gY3N0YXRlLT5waXBlX3NyY193 ICogYnl0ZXNfcGVyX3BpeGVsOwogCXBsYW5lX2Jsb2Nrc19wZXJfbGluZSA9IERJVl9ST1VORF9V UChwbGFuZV9ieXRlc19wZXJfbGluZSwgNTEyKTsKIAotCWlmIChwX3BhcmFtcy0+dGlsaW5nID09 IEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEIHx8Ci0JICAgIHBfcGFyYW1zLT50aWxpbmcgPT0gSTkx NV9GT1JNQVRfTU9EX1lmX1RJTEVEKSB7CisJaWYgKGZiLT5tb2RpZmllclswXSA9PSBJOTE1X0ZP Uk1BVF9NT0RfWV9USUxFRCB8fAorCSAgICBmYi0+bW9kaWZpZXJbMF0gPT0gSTkxNV9GT1JNQVRf TU9EX1lmX1RJTEVEKSB7CiAJCXVpbnQzMl90IG1pbl9zY2FubGluZXMgPSA0OwogCQl1aW50MzJf dCB5X3RpbGVfbWluaW11bTsKLQkJaWYgKGludGVsX3JvdGF0aW9uXzkwX29yXzI3MChwX3BhcmFt cy0+cm90YXRpb24pKSB7Ci0JCQlzd2l0Y2ggKHBfcGFyYW1zLT5ieXRlc19wZXJfcGl4ZWwpIHsK KwkJaWYgKGludGVsX3JvdGF0aW9uXzkwX29yXzI3MChwbGFuZS0+c3RhdGUtPnJvdGF0aW9uKSkg eworCQkJaW50IGJwcCA9IChmYi0+cGl4ZWxfZm9ybWF0ID09IERSTV9GT1JNQVRfTlYxMikgPwor CQkJCWRybV9mb3JtYXRfcGxhbmVfY3BwKGZiLT5waXhlbF9mb3JtYXQsIDEpIDoKKwkJCQlkcm1f Zm9ybWF0X3BsYW5lX2NwcChmYi0+cGl4ZWxfZm9ybWF0LCAwKTsKKworCQkJc3dpdGNoIChicHAp IHsKIAkJCWNhc2UgMToKIAkJCQltaW5fc2NhbmxpbmVzID0gMTY7CiAJCQkJYnJlYWs7CkBAIC0z MjY4LDggKzMyNTMsOCBAQCBzdGF0aWMgYm9vbCBza2xfY29tcHV0ZV9wbGFuZV93bShjb25zdCBz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJcmVzX2xpbmVzID0gRElWX1JPVU5E X1VQKHNlbGVjdGVkX3Jlc3VsdCwgcGxhbmVfYmxvY2tzX3Blcl9saW5lKTsKIAogCWlmIChsZXZl bCA+PSAxICYmIGxldmVsIDw9IDcpIHsKLQkJaWYgKHBfcGFyYW1zLT50aWxpbmcgPT0gSTkxNV9G T1JNQVRfTU9EX1lfVElMRUQgfHwKLQkJICAgIHBfcGFyYW1zLT50aWxpbmcgPT0gSTkxNV9GT1JN QVRfTU9EX1lmX1RJTEVEKQorCQlpZiAoZmItPm1vZGlmaWVyWzBdID09IEk5MTVfRk9STUFUX01P RF9ZX1RJTEVEIHx8CisJCSAgICBmYi0+bW9kaWZpZXJbMF0gPT0gSTkxNV9GT1JNQVRfTU9EX1lm X1RJTEVEKQogCQkJcmVzX2xpbmVzICs9IDQ7CiAJCWVsc2UKIAkJCXJlc19ibG9ja3MrKzsKQEAg LTMyODYsODQgKzMyNzEsODAgQEAgc3RhdGljIGJvb2wgc2tsX2NvbXB1dGVfcGxhbmVfd20oY29u c3Qgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCiBzdGF0aWMgdm9pZCBza2xf Y29tcHV0ZV93bV9sZXZlbChjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs CiAJCQkJIHN0cnVjdCBza2xfZGRiX2FsbG9jYXRpb24gKmRkYiwKLQkJCQkgc3RydWN0IHNrbF9w aXBlX3dtX3BhcmFtZXRlcnMgKnAsCi0JCQkJIGVudW0gcGlwZSBwaXBlLAorCQkJCSBzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlLAogCQkJCSBpbnQgbGV2ZWwsCi0JCQkJIGludCBudW1f cGxhbmVzLAogCQkJCSBzdHJ1Y3Qgc2tsX3dtX2xldmVsICpyZXN1bHQpCiB7CisJc3RydWN0IGRy bV9kZXZpY2UgKmRldiA9IGRldl9wcml2LT5kZXY7CisJc3RydWN0IGludGVsX2NydGMgKmludGVs X2NydGMgPSB0b19pbnRlbF9jcnRjKGNzdGF0ZS0+YmFzZS5jcnRjKTsKKwlzdHJ1Y3QgaW50ZWxf cGxhbmUgKmludGVsX3BsYW5lOwogCXVpbnQxNl90IGRkYl9ibG9ja3M7Ci0JaW50IGk7CisJZW51 bSBwaXBlIHBpcGUgPSBpbnRlbF9jcnRjLT5waXBlOworCisJZm9yX2VhY2hfaW50ZWxfcGxhbmVf b25fY3J0YyhkZXYsIGludGVsX2NydGMsIGludGVsX3BsYW5lKSB7CisJCWludCBpID0gc2tsX3dt X3BsYW5lX2lkKGludGVsX3BsYW5lKTsKIAotCWZvciAoaSA9IDA7IGkgPCBudW1fcGxhbmVzOyBp KyspIHsKIAkJZGRiX2Jsb2NrcyA9IHNrbF9kZGJfZW50cnlfc2l6ZSgmZGRiLT5wbGFuZVtwaXBl XVtpXSk7CiAKIAkJcmVzdWx0LT5wbGFuZV9lbltpXSA9IHNrbF9jb21wdXRlX3BsYW5lX3dtKGRl dl9wcml2LAotCQkJCQkJcCwgJnAtPnBsYW5lW2ldLAorCQkJCQkJY3N0YXRlLAorCQkJCQkJaW50 ZWxfcGxhbmUsCiAJCQkJCQlkZGJfYmxvY2tzLAogCQkJCQkJbGV2ZWwsCiAJCQkJCQkmcmVzdWx0 LT5wbGFuZV9yZXNfYltpXSwKIAkJCQkJCSZyZXN1bHQtPnBsYW5lX3Jlc19sW2ldKTsKIAl9Ci0K LQlkZGJfYmxvY2tzID0gc2tsX2RkYl9lbnRyeV9zaXplKCZkZGItPnBsYW5lW3BpcGVdW1BMQU5F X0NVUlNPUl0pOwotCXJlc3VsdC0+cGxhbmVfZW5bUExBTkVfQ1VSU09SXSA9IHNrbF9jb21wdXRl X3BsYW5lX3dtKGRldl9wcml2LCBwLAotCQkJCQkJICZwLT5wbGFuZVtQTEFORV9DVVJTT1JdLAot CQkJCQkJIGRkYl9ibG9ja3MsIGxldmVsLAotCQkJCQkJICZyZXN1bHQtPnBsYW5lX3Jlc19iW1BM QU5FX0NVUlNPUl0sCi0JCQkJCQkgJnJlc3VsdC0+cGxhbmVfcmVzX2xbUExBTkVfQ1VSU09SXSk7 CiB9CiAKIHN0YXRpYyB1aW50MzJfdAotc2tsX2NvbXB1dGVfbGluZXRpbWVfd20oc3RydWN0IGRy bV9jcnRjICpjcnRjLCBzdHJ1Y3Qgc2tsX3BpcGVfd21fcGFyYW1ldGVycyAqcCkKK3NrbF9jb21w dXRlX2xpbmV0aW1lX3dtKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUpCiB7Ci0JaWYg KCF0b19pbnRlbF9jcnRjKGNydGMpLT5hY3RpdmUpCisJaWYgKCFjc3RhdGUtPmJhc2UuYWN0aXZl KQogCQlyZXR1cm4gMDsKIAotCWlmIChXQVJOX09OKHAtPnBpeGVsX3JhdGUgPT0gMCkpCisJaWYg KFdBUk5fT04oc2tsX3BpcGVfcGl4ZWxfcmF0ZShjc3RhdGUpID09IDApKQogCQlyZXR1cm4gMDsK IAotCXJldHVybiBESVZfUk9VTkRfVVAoOCAqIHAtPnBpcGVfaHRvdGFsICogMTAwMCwgcC0+cGl4 ZWxfcmF0ZSk7CisJcmV0dXJuIERJVl9ST1VORF9VUCg4ICogY3N0YXRlLT5iYXNlLmFkanVzdGVk X21vZGUuY3J0Y19odG90YWwgKiAxMDAwLAorCQkJICAgIHNrbF9waXBlX3BpeGVsX3JhdGUoY3N0 YXRlKSk7CiB9CiAKLXN0YXRpYyB2b2lkIHNrbF9jb21wdXRlX3RyYW5zaXRpb25fd20oc3RydWN0 IGRybV9jcnRjICpjcnRjLAotCQkJCSAgICAgIHN0cnVjdCBza2xfcGlwZV93bV9wYXJhbWV0ZXJz ICpwYXJhbXMsCitzdGF0aWMgdm9pZCBza2xfY29tcHV0ZV90cmFuc2l0aW9uX3dtKHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCiAJCQkJICAgICAgc3RydWN0IHNrbF93bV9sZXZlbCAq dHJhbnNfd20gLyogb3V0ICovKQogeworCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9IGNzdGF0ZS0+ YmFzZS5jcnRjOwogCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0 YyhjcnRjKTsKLQlpbnQgaTsKKwlzdHJ1Y3QgaW50ZWxfcGxhbmUgKmludGVsX3BsYW5lOwogCi0J aWYgKCFwYXJhbXMtPmFjdGl2ZSkKKwlpZiAoIWNzdGF0ZS0+YmFzZS5hY3RpdmUpCiAJCXJldHVy bjsKIAogCS8qIFVudGlsIHdlIGtub3cgbW9yZSwganVzdCBkaXNhYmxlIHRyYW5zaXRpb24gV01z ICovCi0JZm9yIChpID0gMDsgaSA8IGludGVsX251bV9wbGFuZXMoaW50ZWxfY3J0Yyk7IGkrKykK Kwlmb3JfZWFjaF9pbnRlbF9wbGFuZV9vbl9jcnRjKGNydGMtPmRldiwgaW50ZWxfY3J0YywgaW50 ZWxfcGxhbmUpIHsKKwkJaW50IGkgPSBza2xfd21fcGxhbmVfaWQoaW50ZWxfcGxhbmUpOworCiAJ CXRyYW5zX3dtLT5wbGFuZV9lbltpXSA9IGZhbHNlOwotCXRyYW5zX3dtLT5wbGFuZV9lbltQTEFO RV9DVVJTT1JdID0gZmFsc2U7CisJfQogfQogCi1zdGF0aWMgdm9pZCBza2xfY29tcHV0ZV9waXBl X3dtKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKK3N0YXRpYyB2b2lkIHNrbF9jb21wdXRlX3BpcGVf d20oc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSwKIAkJCQlzdHJ1Y3Qgc2tsX2RkYl9h bGxvY2F0aW9uICpkZGIsCi0JCQkJc3RydWN0IHNrbF9waXBlX3dtX3BhcmFtZXRlcnMgKnBhcmFt cywKIAkJCQlzdHJ1Y3Qgc2tsX3BpcGVfd20gKnBpcGVfd20pCiB7Ci0Jc3RydWN0IGRybV9kZXZp Y2UgKmRldiA9IGNydGMtPmRldjsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3N0YXRlLT5i YXNlLmNydGMtPmRldjsKIAljb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSBkZXYtPmRldl9wcml2YXRlOwotCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9f aW50ZWxfY3J0YyhjcnRjKTsKIAlpbnQgbGV2ZWwsIG1heF9sZXZlbCA9IGlsa193bV9tYXhfbGV2 ZWwoZGV2KTsKIAogCWZvciAobGV2ZWwgPSAwOyBsZXZlbCA8PSBtYXhfbGV2ZWw7IGxldmVsKysp IHsKLQkJc2tsX2NvbXB1dGVfd21fbGV2ZWwoZGV2X3ByaXYsIGRkYiwgcGFyYW1zLCBpbnRlbF9j cnRjLT5waXBlLAotCQkJCSAgICAgbGV2ZWwsIGludGVsX251bV9wbGFuZXMoaW50ZWxfY3J0Yyks Ci0JCQkJICAgICAmcGlwZV93bS0+d21bbGV2ZWxdKTsKKwkJc2tsX2NvbXB1dGVfd21fbGV2ZWwo ZGV2X3ByaXYsIGRkYiwgY3N0YXRlLAorCQkJCSAgICAgbGV2ZWwsICZwaXBlX3dtLT53bVtsZXZl bF0pOwogCX0KLQlwaXBlX3dtLT5saW5ldGltZSA9IHNrbF9jb21wdXRlX2xpbmV0aW1lX3dtKGNy dGMsIHBhcmFtcyk7CisJcGlwZV93bS0+bGluZXRpbWUgPSBza2xfY29tcHV0ZV9saW5ldGltZV93 bShjc3RhdGUpOwogCi0Jc2tsX2NvbXB1dGVfdHJhbnNpdGlvbl93bShjcnRjLCBwYXJhbXMsICZw aXBlX3dtLT50cmFuc193bSk7CisJc2tsX2NvbXB1dGVfdHJhbnNpdGlvbl93bShjc3RhdGUsICZw aXBlX3dtLT50cmFuc193bSk7CiB9CiAKIHN0YXRpYyB2b2lkIHNrbF9jb21wdXRlX3dtX3Jlc3Vs dHMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKLQkJCQkgICBzdHJ1Y3Qgc2tsX3BpcGVfd21fcGFy YW1ldGVycyAqcCwKIAkJCQkgICBzdHJ1Y3Qgc2tsX3BpcGVfd20gKnBfd20sCiAJCQkJICAgc3Ry dWN0IHNrbF93bV92YWx1ZXMgKnIsCiAJCQkJICAgc3RydWN0IGludGVsX2NydGMgKmludGVsX2Ny dGMpCkBAIC0zNjA3LDE2ICszNTg4LDE1IEBAIHN0YXRpYyB2b2lkIHNrbF9mbHVzaF93bV92YWx1 ZXMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogfQogCiBzdGF0aWMgYm9vbCBz a2xfdXBkYXRlX3BpcGVfd20oc3RydWN0IGRybV9jcnRjICpjcnRjLAotCQkJICAgICAgIHN0cnVj dCBza2xfcGlwZV93bV9wYXJhbWV0ZXJzICpwYXJhbXMsCiAJCQkgICAgICAgc3RydWN0IGludGVs X3dtX2NvbmZpZyAqY29uZmlnLAogCQkJICAgICAgIHN0cnVjdCBza2xfZGRiX2FsbG9jYXRpb24g KmRkYiwgLyogb3V0ICovCiAJCQkgICAgICAgc3RydWN0IHNrbF9waXBlX3dtICpwaXBlX3dtIC8q IG91dCAqLykKIHsKIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2Ny dGMoY3J0Yyk7CisJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSA9IHRvX2ludGVsX2Ny dGNfc3RhdGUoY3J0Yy0+c3RhdGUpOwogCi0Jc2tsX2NvbXB1dGVfd21fcGlwZV9wYXJhbWV0ZXJz KGNydGMsIHBhcmFtcyk7Ci0Jc2tsX2FsbG9jYXRlX3BpcGVfZGRiKGNydGMsIGNvbmZpZywgcGFy YW1zLCBkZGIpOwotCXNrbF9jb21wdXRlX3BpcGVfd20oY3J0YywgZGRiLCBwYXJhbXMsIHBpcGVf d20pOworCXNrbF9hbGxvY2F0ZV9waXBlX2RkYihjc3RhdGUsIGNvbmZpZywgZGRiKTsKKwlza2xf Y29tcHV0ZV9waXBlX3dtKGNzdGF0ZSwgZGRiLCBwaXBlX3dtKTsKIAogCWlmICghbWVtY21wKCZp bnRlbF9jcnRjLT53bS5za2xfYWN0aXZlLCBwaXBlX3dtLCBzaXplb2YoKnBpcGVfd20pKSkKIAkJ cmV0dXJuIGZhbHNlOwpAQCAtMzY0OSw3ICszNjI5LDYgQEAgc3RhdGljIHZvaWQgc2tsX3VwZGF0 ZV9vdGhlcl9waXBlX3dtKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJICovCiAJbGlzdF9mb3Jf ZWFjaF9lbnRyeShpbnRlbF9jcnRjLCAmZGV2LT5tb2RlX2NvbmZpZy5jcnRjX2xpc3QsCiAJCQkJ YmFzZS5oZWFkKSB7Ci0JCXN0cnVjdCBza2xfcGlwZV93bV9wYXJhbWV0ZXJzIHBhcmFtcyA9IHt9 OwogCQlzdHJ1Y3Qgc2tsX3BpcGVfd20gcGlwZV93bSA9IHt9OwogCQlib29sIHdtX2NoYW5nZWQ7 CiAKQEAgLTM2NTksOCArMzYzOCw3IEBAIHN0YXRpYyB2b2lkIHNrbF91cGRhdGVfb3RoZXJfcGlw ZV93bShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQlpZiAoIWludGVsX2NydGMtPmFjdGl2ZSkK IAkJCWNvbnRpbnVlOwogCi0JCXdtX2NoYW5nZWQgPSBza2xfdXBkYXRlX3BpcGVfd20oJmludGVs X2NydGMtPmJhc2UsCi0JCQkJCQkmcGFyYW1zLCBjb25maWcsCisJCXdtX2NoYW5nZWQgPSBza2xf dXBkYXRlX3BpcGVfd20oJmludGVsX2NydGMtPmJhc2UsIGNvbmZpZywKIAkJCQkJCSZyLT5kZGIs ICZwaXBlX3dtKTsKIAogCQkvKgpAQCAtMzY3MCw3ICszNjQ4LDcgQEAgc3RhdGljIHZvaWQgc2ts X3VwZGF0ZV9vdGhlcl9waXBlX3dtKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCSAqLwogCQlX QVJOX09OKCF3bV9jaGFuZ2VkKTsKIAotCQlza2xfY29tcHV0ZV93bV9yZXN1bHRzKGRldiwgJnBh cmFtcywgJnBpcGVfd20sIHIsIGludGVsX2NydGMpOworCQlza2xfY29tcHV0ZV93bV9yZXN1bHRz KGRldiwgJnBpcGVfd20sIHIsIGludGVsX2NydGMpOwogCQlyLT5kaXJ0eVtpbnRlbF9jcnRjLT5w aXBlXSA9IHRydWU7CiAJfQogfQpAQCAtMzcwMCw3ICszNjc4LDYgQEAgc3RhdGljIHZvaWQgc2ts X3VwZGF0ZV93bShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiAJc3RydWN0IGludGVsX2NydGMgKmlu dGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYg PSBjcnRjLT5kZXY7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5k ZXZfcHJpdmF0ZTsKLQlzdHJ1Y3Qgc2tsX3BpcGVfd21fcGFyYW1ldGVycyBwYXJhbXMgPSB7fTsK IAlzdHJ1Y3Qgc2tsX3dtX3ZhbHVlcyAqcmVzdWx0cyA9ICZkZXZfcHJpdi0+d20uc2tsX3Jlc3Vs dHM7CiAJc3RydWN0IHNrbF9waXBlX3dtIHBpcGVfd20gPSB7fTsKIAlzdHJ1Y3QgaW50ZWxfd21f Y29uZmlnIGNvbmZpZyA9IHt9OwpAQCAtMzcxMywxMSArMzY5MCwxMCBAQCBzdGF0aWMgdm9pZCBz a2xfdXBkYXRlX3dtKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIAogCXNrbF9jb21wdXRlX3dtX2ds b2JhbF9wYXJhbWV0ZXJzKGRldiwgJmNvbmZpZyk7CiAKLQlpZiAoIXNrbF91cGRhdGVfcGlwZV93 bShjcnRjLCAmcGFyYW1zLCAmY29uZmlnLAotCQkJCSZyZXN1bHRzLT5kZGIsICZwaXBlX3dtKSkK KwlpZiAoIXNrbF91cGRhdGVfcGlwZV93bShjcnRjLCAmY29uZmlnLCAmcmVzdWx0cy0+ZGRiLCAm cGlwZV93bSkpCiAJCXJldHVybjsKIAotCXNrbF9jb21wdXRlX3dtX3Jlc3VsdHMoZGV2LCAmcGFy YW1zLCAmcGlwZV93bSwgcmVzdWx0cywgaW50ZWxfY3J0Yyk7CisJc2tsX2NvbXB1dGVfd21fcmVz dWx0cyhkZXYsICZwaXBlX3dtLCByZXN1bHRzLCBpbnRlbF9jcnRjKTsKIAlyZXN1bHRzLT5kaXJ0 eVtpbnRlbF9jcnRjLT5waXBlXSA9IHRydWU7CiAKIAlza2xfdXBkYXRlX290aGVyX3BpcGVfd20o ZGV2LCBjcnRjLCAmY29uZmlnLCByZXN1bHRzKTsKLS0gCjIuMS40CgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0Cklu dGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=