From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: [PATCH 1/2] drm/i915: Make modeset state checker take crtc as argument. Date: Wed, 23 Mar 2016 14:58:06 +0100 Message-ID: <1458741487-23801-2-git-send-email-maarten.lankhorst@linux.intel.com> References: <1458741487-23801-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 [IPv6:2a02:2308::216:3eff:fe92:dfa3]) by gabe.freedesktop.org (Postfix) with ESMTPS id CE5E16E873 for ; Wed, 23 Mar 2016 13:58:10 +0000 (UTC) In-Reply-To: <1458741487-23801-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 VGhpcyB3aWxsIG1ha2UgaXQgZWFzaWVyIHRvIGtlZXAgdGhlIGNydGMgY2hlY2tlciB3aGVuIGF0 b21pYwpjb21taXQgaXMgcmV3b3JrZWQgdG8gdGFrZSBhIGludGVsX2ZsaXBfd29yay4KClNpZ25l ZC1vZmYtYnk6IE1hYXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRl bC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHwgMzE2ICsr KysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMTgzIGlu c2VydGlvbnMoKyksIDEzMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNw bGF5LmMKaW5kZXggNTFmOTEzZmIxOTlkLi40MTQ4YjI2MmYyYTcgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kaXNwbGF5LmMKQEAgLTEyNzQ3LDQ4ICsxMjc0Nyw0MyBAQCBzdGF0aWMgdm9pZCBp bnRlbF9waXBlX2NvbmZpZ19zYW5pdHlfY2hlY2soc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAogCX0KIH0KIAotc3RhdGljIHZvaWQgY2hlY2tfd21fc3RhdGUoc3RydWN0IGRybV9k ZXZpY2UgKmRldikKK3N0YXRpYyB2b2lkIGNoZWNrX3dtX3N0YXRlKHN0cnVjdCBkcm1fY3J0YyAq Y3J0YywKKwkJCSAgIHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqbmV3X3N0YXRlKQogeworCXN0cnVj dCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKIAlzdHJ1Y3Qgc2tsX2RkYl9hbGxvY2F0aW9u IGh3X2RkYiwgKnN3X2RkYjsKLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YzsKKwlzdHJ1 Y3Qgc2tsX2RkYl9lbnRyeSAqaHdfZW50cnksICpzd19lbnRyeTsKKwlzdHJ1Y3QgaW50ZWxfY3J0 YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7CisJY29uc3QgZW51bSBwaXBlIHBp cGUgPSBpbnRlbF9jcnRjLT5waXBlOwogCWludCBwbGFuZTsKIAotCWlmIChJTlRFTF9JTkZPKGRl diktPmdlbiA8IDkpCisJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuIDwgOSB8fCAhbmV3X3N0YXRl LT5hY3RpdmUpCiAJCXJldHVybjsKIAogCXNrbF9kZGJfZ2V0X2h3X3N0YXRlKGRldl9wcml2LCAm aHdfZGRiKTsKIAlzd19kZGIgPSAmZGV2X3ByaXYtPndtLnNrbF9ody5kZGI7CiAKLQlmb3JfZWFj aF9pbnRlbF9jcnRjKGRldiwgaW50ZWxfY3J0YykgewotCQlzdHJ1Y3Qgc2tsX2RkYl9lbnRyeSAq aHdfZW50cnksICpzd19lbnRyeTsKLQkJY29uc3QgZW51bSBwaXBlIHBpcGUgPSBpbnRlbF9jcnRj LT5waXBlOworCS8qIHBsYW5lcyAqLworCWZvcl9lYWNoX3BsYW5lKGRldl9wcml2LCBwaXBlLCBw bGFuZSkgeworCQlod19lbnRyeSA9ICZod19kZGIucGxhbmVbcGlwZV1bcGxhbmVdOworCQlzd19l bnRyeSA9ICZzd19kZGItPnBsYW5lW3BpcGVdW3BsYW5lXTsKIAotCQlpZiAoIWludGVsX2NydGMt PmFjdGl2ZSkKKwkJaWYgKHNrbF9kZGJfZW50cnlfZXF1YWwoaHdfZW50cnksIHN3X2VudHJ5KSkK IAkJCWNvbnRpbnVlOwogCi0JCS8qIHBsYW5lcyAqLwotCQlmb3JfZWFjaF9wbGFuZShkZXZfcHJp diwgcGlwZSwgcGxhbmUpIHsKLQkJCWh3X2VudHJ5ID0gJmh3X2RkYi5wbGFuZVtwaXBlXVtwbGFu ZV07Ci0JCQlzd19lbnRyeSA9ICZzd19kZGItPnBsYW5lW3BpcGVdW3BsYW5lXTsKLQotCQkJaWYg KHNrbF9kZGJfZW50cnlfZXF1YWwoaHdfZW50cnksIHN3X2VudHJ5KSkKLQkJCQljb250aW51ZTsK LQotCQkJRFJNX0VSUk9SKCJtaXNtYXRjaCBpbiBEREIgc3RhdGUgcGlwZSAlYyBwbGFuZSAlZCAi Ci0JCQkJICAiKGV4cGVjdGVkICgldSwldSksIGZvdW5kICgldSwldSkpXG4iLAotCQkJCSAgcGlw ZV9uYW1lKHBpcGUpLCBwbGFuZSArIDEsCi0JCQkJICBzd19lbnRyeS0+c3RhcnQsIHN3X2VudHJ5 LT5lbmQsCi0JCQkJICBod19lbnRyeS0+c3RhcnQsIGh3X2VudHJ5LT5lbmQpOwotCQl9Ci0KLQkJ LyogY3Vyc29yICovCi0JCWh3X2VudHJ5ID0gJmh3X2RkYi5wbGFuZVtwaXBlXVtQTEFORV9DVVJT T1JdOwotCQlzd19lbnRyeSA9ICZzd19kZGItPnBsYW5lW3BpcGVdW1BMQU5FX0NVUlNPUl07CisJ CURSTV9FUlJPUigibWlzbWF0Y2ggaW4gRERCIHN0YXRlIHBpcGUgJWMgcGxhbmUgJWQgIgorCQkJ ICAiKGV4cGVjdGVkICgldSwldSksIGZvdW5kICgldSwldSkpXG4iLAorCQkJICBwaXBlX25hbWUo cGlwZSksIHBsYW5lICsgMSwKKwkJCSAgc3dfZW50cnktPnN0YXJ0LCBzd19lbnRyeS0+ZW5kLAor CQkJICBod19lbnRyeS0+c3RhcnQsIGh3X2VudHJ5LT5lbmQpOworCX0KIAotCQlpZiAoc2tsX2Rk Yl9lbnRyeV9lcXVhbChod19lbnRyeSwgc3dfZW50cnkpKQotCQkJY29udGludWU7CisJLyogY3Vy c29yICovCisJaHdfZW50cnkgPSAmaHdfZGRiLnBsYW5lW3BpcGVdW1BMQU5FX0NVUlNPUl07CisJ c3dfZW50cnkgPSAmc3dfZGRiLT5wbGFuZVtwaXBlXVtQTEFORV9DVVJTT1JdOwogCisJaWYgKCFz a2xfZGRiX2VudHJ5X2VxdWFsKGh3X2VudHJ5LCBzd19lbnRyeSkpIHsKIAkJRFJNX0VSUk9SKCJt aXNtYXRjaCBpbiBEREIgc3RhdGUgcGlwZSAlYyBjdXJzb3IgIgogCQkJICAiKGV4cGVjdGVkICgl dSwldSksIGZvdW5kICgldSwldSkpXG4iLAogCQkJICBwaXBlX25hbWUocGlwZSksCkBAIC0xMjc5 OCwxOSArMTI3OTMsMTcgQEAgc3RhdGljIHZvaWQgY2hlY2tfd21fc3RhdGUoc3RydWN0IGRybV9k ZXZpY2UgKmRldikKIH0KIAogc3RhdGljIHZvaWQKLWNoZWNrX2Nvbm5lY3Rvcl9zdGF0ZShzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LAotCQkgICAgICBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqb2xk X3N0YXRlKQorY2hlY2tfY29ubmVjdG9yX3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0 cnVjdCBkcm1fY3J0YyAqY3J0YykKIHsKLQlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqb2xk X2Nvbm5fc3RhdGU7CiAJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcjsKLQlpbnQgaTsK IAotCWZvcl9lYWNoX2Nvbm5lY3Rvcl9pbl9zdGF0ZShvbGRfc3RhdGUsIGNvbm5lY3Rvciwgb2xk X2Nvbm5fc3RhdGUsIGkpIHsKKwlkcm1fZm9yX2VhY2hfY29ubmVjdG9yKGNvbm5lY3RvciwgZGV2 KSB7CiAJCXN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciA9IGNvbm5lY3Rvci0+ZW5jb2RlcjsK IAkJc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKnN0YXRlID0gY29ubmVjdG9yLT5zdGF0ZTsK IAotCQkvKiBUaGlzIGFsc28gY2hlY2tzIHRoZSBlbmNvZGVyL2Nvbm5lY3RvciBodyBzdGF0ZSB3 aXRoIHRoZQotCQkgKiAtPmdldF9od19zdGF0ZSBjYWxsYmFja3MuICovCisJCWlmIChzdGF0ZS0+ Y3J0YyAhPSBjcnRjKQorCQkJY29udGludWU7CisKIAkJaW50ZWxfY29ubmVjdG9yX2NoZWNrX3N0 YXRlKHRvX2ludGVsX2Nvbm5lY3Rvcihjb25uZWN0b3IpKTsKIAogCQlJOTE1X1NUQVRFX1dBUk4o c3RhdGUtPmJlc3RfZW5jb2RlciAhPSBlbmNvZGVyLApAQCAtMTI4NTksMTQ0ICsxMjg1MiwyMDEg QEAgY2hlY2tfZW5jb2Rlcl9zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogfQogCiBzdGF0 aWMgdm9pZAotY2hlY2tfY3J0Y19zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3Qg ZHJtX2F0b21pY19zdGF0ZSAqb2xkX3N0YXRlKQorY2hlY2tfY3J0Y19zdGF0ZShzdHJ1Y3QgZHJt X2NydGMgKmNydGMsCisJCSBzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlLAor CQkgc3RydWN0IGRybV9jcnRjX3N0YXRlICpuZXdfY3J0Y19zdGF0ZSkKIHsKKwlzdHJ1Y3QgZHJt X2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2OwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CiAJc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXI7 Ci0Jc3RydWN0IGRybV9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZTsKLQlzdHJ1Y3QgZHJtX2Ny dGMgKmNydGM7Ci0JaW50IGk7Ci0KLQlmb3JfZWFjaF9jcnRjX2luX3N0YXRlKG9sZF9zdGF0ZSwg Y3J0Yywgb2xkX2NydGNfc3RhdGUsIGkpIHsKLQkJc3RydWN0IGludGVsX2NydGMgKmludGVsX2Ny dGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwotCQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlw ZV9jb25maWcsICpzd19jb25maWc7Ci0JCWJvb2wgYWN0aXZlOwotCi0JCWlmICghbmVlZHNfbW9k ZXNldChjcnRjLT5zdGF0ZSkgJiYKLQkJICAgICF0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMtPnN0 YXRlKS0+dXBkYXRlX3BpcGUpCi0JCQljb250aW51ZTsKKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50 ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7CisJc3RydWN0IGludGVsX2NydGNfc3RhdGUg KnBpcGVfY29uZmlnLCAqc3dfY29uZmlnOworCXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpvbGRf c3RhdGU7CisJYm9vbCBhY3RpdmU7CiAKLQkJX19kcm1fYXRvbWljX2hlbHBlcl9jcnRjX2Rlc3Ry b3lfc3RhdGUoY3J0Yywgb2xkX2NydGNfc3RhdGUpOwotCQlwaXBlX2NvbmZpZyA9IHRvX2ludGVs X2NydGNfc3RhdGUob2xkX2NydGNfc3RhdGUpOwotCQltZW1zZXQocGlwZV9jb25maWcsIDAsIHNp emVvZigqcGlwZV9jb25maWcpKTsKLQkJcGlwZV9jb25maWctPmJhc2UuY3J0YyA9IGNydGM7Ci0J CXBpcGVfY29uZmlnLT5iYXNlLnN0YXRlID0gb2xkX3N0YXRlOworCW9sZF9zdGF0ZSA9IG9sZF9j cnRjX3N0YXRlLT5zdGF0ZTsKKwlfX2RybV9hdG9taWNfaGVscGVyX2NydGNfZGVzdHJveV9zdGF0 ZShjcnRjLCBvbGRfY3J0Y19zdGF0ZSk7CisJcGlwZV9jb25maWcgPSB0b19pbnRlbF9jcnRjX3N0 YXRlKG9sZF9jcnRjX3N0YXRlKTsKKwltZW1zZXQocGlwZV9jb25maWcsIDAsIHNpemVvZigqcGlw ZV9jb25maWcpKTsKKwlwaXBlX2NvbmZpZy0+YmFzZS5jcnRjID0gY3J0YzsKKwlwaXBlX2NvbmZp Zy0+YmFzZS5zdGF0ZSA9IG9sZF9zdGF0ZTsKIAotCQlEUk1fREVCVUdfS01TKCJbQ1JUQzolZF1c biIsCi0JCQkgICAgICBjcnRjLT5iYXNlLmlkKTsKKwlEUk1fREVCVUdfS01TKCJbQ1JUQzolZF1c biIsIGNydGMtPmJhc2UuaWQpOwogCi0JCWFjdGl2ZSA9IGRldl9wcml2LT5kaXNwbGF5LmdldF9w aXBlX2NvbmZpZyhpbnRlbF9jcnRjLAotCQkJCQkJCSAgIHBpcGVfY29uZmlnKTsKKwlhY3RpdmUg PSBkZXZfcHJpdi0+ZGlzcGxheS5nZXRfcGlwZV9jb25maWcoaW50ZWxfY3J0YywgcGlwZV9jb25m aWcpOwogCi0JCS8qIGh3IHN0YXRlIGlzIGluY29uc2lzdGVudCB3aXRoIHRoZSBwaXBlIHF1aXJr ICovCi0JCWlmICgoaW50ZWxfY3J0Yy0+cGlwZSA9PSBQSVBFX0EgJiYgZGV2X3ByaXYtPnF1aXJr cyAmIFFVSVJLX1BJUEVBX0ZPUkNFKSB8fAotCQkgICAgKGludGVsX2NydGMtPnBpcGUgPT0gUElQ RV9CICYmIGRldl9wcml2LT5xdWlya3MgJiBRVUlSS19QSVBFQl9GT1JDRSkpCi0JCQlhY3RpdmUg PSBjcnRjLT5zdGF0ZS0+YWN0aXZlOworCS8qIGh3IHN0YXRlIGlzIGluY29uc2lzdGVudCB3aXRo IHRoZSBwaXBlIHF1aXJrICovCisJaWYgKChpbnRlbF9jcnRjLT5waXBlID09IFBJUEVfQSAmJiBk ZXZfcHJpdi0+cXVpcmtzICYgUVVJUktfUElQRUFfRk9SQ0UpIHx8CisJICAgIChpbnRlbF9jcnRj LT5waXBlID09IFBJUEVfQiAmJiBkZXZfcHJpdi0+cXVpcmtzICYgUVVJUktfUElQRUJfRk9SQ0Up KQorCQlhY3RpdmUgPSBuZXdfY3J0Y19zdGF0ZS0+YWN0aXZlOwogCi0JCUk5MTVfU1RBVEVfV0FS TihjcnRjLT5zdGF0ZS0+YWN0aXZlICE9IGFjdGl2ZSwKLQkJICAgICAiY3J0YyBhY3RpdmUgc3Rh dGUgZG9lc24ndCBtYXRjaCB3aXRoIGh3IHN0YXRlICIKLQkJICAgICAiKGV4cGVjdGVkICVpLCBm b3VuZCAlaSlcbiIsIGNydGMtPnN0YXRlLT5hY3RpdmUsIGFjdGl2ZSk7CisJSTkxNV9TVEFURV9X QVJOKG5ld19jcnRjX3N0YXRlLT5hY3RpdmUgIT0gYWN0aXZlLAorCSAgICAgImNydGMgYWN0aXZl IHN0YXRlIGRvZXNuJ3QgbWF0Y2ggd2l0aCBodyBzdGF0ZSAiCisJICAgICAiKGV4cGVjdGVkICVp LCBmb3VuZCAlaSlcbiIsIG5ld19jcnRjX3N0YXRlLT5hY3RpdmUsIGFjdGl2ZSk7CiAKLQkJSTkx NV9TVEFURV9XQVJOKGludGVsX2NydGMtPmFjdGl2ZSAhPSBjcnRjLT5zdGF0ZS0+YWN0aXZlLAot CQkgICAgICJ0cmFuc2l0aW9uYWwgYWN0aXZlIHN0YXRlIGRvZXMgbm90IG1hdGNoIGF0b21pYyBo dyBzdGF0ZSAiCi0JCSAgICAgIihleHBlY3RlZCAlaSwgZm91bmQgJWkpXG4iLCBjcnRjLT5zdGF0 ZS0+YWN0aXZlLCBpbnRlbF9jcnRjLT5hY3RpdmUpOworCUk5MTVfU1RBVEVfV0FSTihpbnRlbF9j cnRjLT5hY3RpdmUgIT0gbmV3X2NydGNfc3RhdGUtPmFjdGl2ZSwKKwkgICAgICJ0cmFuc2l0aW9u YWwgYWN0aXZlIHN0YXRlIGRvZXMgbm90IG1hdGNoIGF0b21pYyBodyBzdGF0ZSAiCisJICAgICAi KGV4cGVjdGVkICVpLCBmb3VuZCAlaSlcbiIsIG5ld19jcnRjX3N0YXRlLT5hY3RpdmUsIGludGVs X2NydGMtPmFjdGl2ZSk7CiAKLQkJZm9yX2VhY2hfZW5jb2Rlcl9vbl9jcnRjKGRldiwgY3J0Yywg ZW5jb2RlcikgewotCQkJZW51bSBwaXBlIHBpcGU7CisJZm9yX2VhY2hfZW5jb2Rlcl9vbl9jcnRj KGRldiwgY3J0YywgZW5jb2RlcikgeworCQllbnVtIHBpcGUgcGlwZTsKIAotCQkJYWN0aXZlID0g ZW5jb2Rlci0+Z2V0X2h3X3N0YXRlKGVuY29kZXIsICZwaXBlKTsKLQkJCUk5MTVfU1RBVEVfV0FS TihhY3RpdmUgIT0gY3J0Yy0+c3RhdGUtPmFjdGl2ZSwKLQkJCQkiW0VOQ09ERVI6JWldIGFjdGl2 ZSAlaSB3aXRoIGNydGMgYWN0aXZlICVpXG4iLAotCQkJCWVuY29kZXItPmJhc2UuYmFzZS5pZCwg YWN0aXZlLCBjcnRjLT5zdGF0ZS0+YWN0aXZlKTsKKwkJYWN0aXZlID0gZW5jb2Rlci0+Z2V0X2h3 X3N0YXRlKGVuY29kZXIsICZwaXBlKTsKKwkJSTkxNV9TVEFURV9XQVJOKGFjdGl2ZSAhPSBuZXdf Y3J0Y19zdGF0ZS0+YWN0aXZlLAorCQkJIltFTkNPREVSOiVpXSBhY3RpdmUgJWkgd2l0aCBjcnRj IGFjdGl2ZSAlaVxuIiwKKwkJCWVuY29kZXItPmJhc2UuYmFzZS5pZCwgYWN0aXZlLCBuZXdfY3J0 Y19zdGF0ZS0+YWN0aXZlKTsKIAotCQkJSTkxNV9TVEFURV9XQVJOKGFjdGl2ZSAmJiBpbnRlbF9j cnRjLT5waXBlICE9IHBpcGUsCi0JCQkJCSJFbmNvZGVyIGNvbm5lY3RlZCB0byB3cm9uZyBwaXBl ICVjXG4iLAotCQkJCQlwaXBlX25hbWUocGlwZSkpOworCQlJOTE1X1NUQVRFX1dBUk4oYWN0aXZl ICYmIGludGVsX2NydGMtPnBpcGUgIT0gcGlwZSwKKwkJCQkiRW5jb2RlciBjb25uZWN0ZWQgdG8g d3JvbmcgcGlwZSAlY1xuIiwKKwkJCQlwaXBlX25hbWUocGlwZSkpOwogCi0JCQlpZiAoYWN0aXZl KQotCQkJCWVuY29kZXItPmdldF9jb25maWcoZW5jb2RlciwgcGlwZV9jb25maWcpOwotCQl9CisJ CWlmIChhY3RpdmUpCisJCQllbmNvZGVyLT5nZXRfY29uZmlnKGVuY29kZXIsIHBpcGVfY29uZmln KTsKKwl9CiAKLQkJaWYgKCFjcnRjLT5zdGF0ZS0+YWN0aXZlKQotCQkJY29udGludWU7CisJaWYg KCFuZXdfY3J0Y19zdGF0ZS0+YWN0aXZlKQorCQlyZXR1cm47CiAKLQkJaW50ZWxfcGlwZV9jb25m aWdfc2FuaXR5X2NoZWNrKGRldl9wcml2LCBwaXBlX2NvbmZpZyk7CisJaW50ZWxfcGlwZV9jb25m aWdfc2FuaXR5X2NoZWNrKGRldl9wcml2LCBwaXBlX2NvbmZpZyk7CiAKLQkJc3dfY29uZmlnID0g dG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjLT5zdGF0ZSk7Ci0JCWlmICghaW50ZWxfcGlwZV9jb25m aWdfY29tcGFyZShkZXYsIHN3X2NvbmZpZywKLQkJCQkJICAgICAgIHBpcGVfY29uZmlnLCBmYWxz ZSkpIHsKLQkJCUk5MTVfU1RBVEVfV0FSTigxLCAicGlwZSBzdGF0ZSBkb2Vzbid0IG1hdGNoIVxu Iik7Ci0JCQlpbnRlbF9kdW1wX3BpcGVfY29uZmlnKGludGVsX2NydGMsIHBpcGVfY29uZmlnLAot CQkJCQkgICAgICAgIltodyBzdGF0ZV0iKTsKLQkJCWludGVsX2R1bXBfcGlwZV9jb25maWcoaW50 ZWxfY3J0Yywgc3dfY29uZmlnLAotCQkJCQkgICAgICAgIltzdyBzdGF0ZV0iKTsKLQkJfQorCXN3 X2NvbmZpZyA9IHRvX2ludGVsX2NydGNfc3RhdGUoY3J0Yy0+c3RhdGUpOworCWlmICghaW50ZWxf cGlwZV9jb25maWdfY29tcGFyZShkZXYsIHN3X2NvbmZpZywKKwkJCQkgICAgICAgcGlwZV9jb25m aWcsIGZhbHNlKSkgeworCQlJOTE1X1NUQVRFX1dBUk4oMSwgInBpcGUgc3RhdGUgZG9lc24ndCBt YXRjaCFcbiIpOworCQlpbnRlbF9kdW1wX3BpcGVfY29uZmlnKGludGVsX2NydGMsIHBpcGVfY29u ZmlnLAorCQkJCSAgICAgICAiW2h3IHN0YXRlXSIpOworCQlpbnRlbF9kdW1wX3BpcGVfY29uZmln KGludGVsX2NydGMsIHN3X2NvbmZpZywKKwkJCQkgICAgICAgIltzdyBzdGF0ZV0iKTsKIAl9CiB9 CiAKIHN0YXRpYyB2b2lkCi1jaGVja19zaGFyZWRfZHBsbF9zdGF0ZShzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2KQorY2hlY2tfc2luZ2xlX2RwbGxfc3RhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LAorCQkJc3RydWN0IGludGVsX3NoYXJlZF9kcGxsICpwbGwsCisJCQlzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMsCisJCQlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKm5ld19zdGF0ZSkKIHsK LQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwot CXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjOwogCXN0cnVjdCBpbnRlbF9kcGxsX2h3X3N0YXRlIGRw bGxfaHdfc3RhdGU7Ci0JaW50IGk7CisJdW5zaWduZWQgY3J0Y19tYXNrOworCWJvb2wgYWN0aXZl OwogCi0JZm9yIChpID0gMDsgaSA8IGRldl9wcml2LT5udW1fc2hhcmVkX2RwbGw7IGkrKykgewot CQlzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKnBsbCA9Ci0JCQlpbnRlbF9nZXRfc2hhcmVkX2Rw bGxfYnlfaWQoZGV2X3ByaXYsIGkpOwotCQl1bnNpZ25lZCBlbmFibGVkX2NydGNzID0gMCwgYWN0 aXZlX2NydGNzID0gMDsKLQkJYm9vbCBhY3RpdmU7CisJbWVtc2V0KCZkcGxsX2h3X3N0YXRlLCAw LCBzaXplb2YoZHBsbF9od19zdGF0ZSkpOwogCi0JCW1lbXNldCgmZHBsbF9od19zdGF0ZSwgMCwg c2l6ZW9mKGRwbGxfaHdfc3RhdGUpKTsKKwlEUk1fREVCVUdfS01TKCIlc1xuIiwgcGxsLT5uYW1l KTsKIAotCQlEUk1fREVCVUdfS01TKCIlc1xuIiwgcGxsLT5uYW1lKTsKKwlhY3RpdmUgPSBwbGwt PmZ1bmNzLmdldF9od19zdGF0ZShkZXZfcHJpdiwgcGxsLCAmZHBsbF9od19zdGF0ZSk7CiAKLQkJ YWN0aXZlID0gcGxsLT5mdW5jcy5nZXRfaHdfc3RhdGUoZGV2X3ByaXYsIHBsbCwgJmRwbGxfaHdf c3RhdGUpOworCWlmICghKHBsbC0+ZmxhZ3MgJiBJTlRFTF9EUExMX0FMV0FZU19PTikpIHsKKwkJ STkxNV9TVEFURV9XQVJOKCFwbGwtPm9uICYmIHBsbC0+YWN0aXZlX21hc2ssCisJCSAgICAgInBs bCBpbiBhY3RpdmUgdXNlIGJ1dCBub3Qgb24gaW4gc3cgdHJhY2tpbmdcbiIpOworCQlJOTE1X1NU QVRFX1dBUk4ocGxsLT5vbiAmJiAhcGxsLT5hY3RpdmVfbWFzaywKKwkJICAgICAicGxsIGlzIG9u IGJ1dCBub3QgdXNlZCBieSBhbnkgYWN0aXZlIGNydGNcbiIpOworCQlJOTE1X1NUQVRFX1dBUk4o cGxsLT5vbiAhPSBhY3RpdmUsCisJCSAgICAgInBsbCBvbiBzdGF0ZSBtaXNtYXRjaCAoZXhwZWN0 ZWQgJWksIGZvdW5kICVpKVxuIiwKKwkJICAgICBwbGwtPm9uLCBhY3RpdmUpOworCX0KIAorCWlm ICghY3J0YykgewogCQlJOTE1X1NUQVRFX1dBUk4ocGxsLT5hY3RpdmVfbWFzayAmIH5wbGwtPmNv bmZpZy5jcnRjX21hc2ssCi0JCSAgICAgIm1vcmUgYWN0aXZlIHBsbCB1c2VycyB0aGFuIHJlZmVy ZW5jZXM6ICV4IHZzICV4XG4iLAotCQkgICAgIHBsbC0+YWN0aXZlX21hc2ssIHBsbC0+Y29uZmln LmNydGNfbWFzayk7CisJCQkJIm1vcmUgYWN0aXZlIHBsbCB1c2VycyB0aGFuIHJlZmVyZW5jZXM6 ICV4IHZzICV4XG4iLAorCQkJCXBsbC0+YWN0aXZlX21hc2ssIHBsbC0+Y29uZmlnLmNydGNfbWFz ayk7CiAKLQkJaWYgKCEocGxsLT5mbGFncyAmIElOVEVMX0RQTExfQUxXQVlTX09OKSkgewotCQkJ STkxNV9TVEFURV9XQVJOKCFwbGwtPm9uICYmIHBsbC0+YWN0aXZlX21hc2ssCi0JCQkgICAgICJw bGwgaW4gYWN0aXZlIHVzZSBidXQgbm90IG9uIGluIHN3IHRyYWNraW5nXG4iKTsKLQkJCUk5MTVf U1RBVEVfV0FSTihwbGwtPm9uICYmICFwbGwtPmFjdGl2ZV9tYXNrLAotCQkJICAgICAicGxsIGlz IG9uIGJ1dCBub3QgdXNlZCBieSBhbnkgYWN0aXZlIGNydGNcbiIpOwotCQkJSTkxNV9TVEFURV9X QVJOKHBsbC0+b24gIT0gYWN0aXZlLAotCQkJICAgICAicGxsIG9uIHN0YXRlIG1pc21hdGNoIChl eHBlY3RlZCAlaSwgZm91bmQgJWkpXG4iLAotCQkJICAgICBwbGwtPm9uLCBhY3RpdmUpOwotCQl9 CisJCXJldHVybjsKKwl9CiAKLQkJZm9yX2VhY2hfaW50ZWxfY3J0YyhkZXYsIGNydGMpIHsKLQkJ CWlmIChjcnRjLT5iYXNlLnN0YXRlLT5lbmFibGUgJiYgY3J0Yy0+Y29uZmlnLT5zaGFyZWRfZHBs bCA9PSBwbGwpCi0JCQkJZW5hYmxlZF9jcnRjcyB8PSAxIDw8IGRybV9jcnRjX2luZGV4KCZjcnRj LT5iYXNlKTsKLQkJCWlmIChjcnRjLT5iYXNlLnN0YXRlLT5hY3RpdmUgJiYgY3J0Yy0+Y29uZmln LT5zaGFyZWRfZHBsbCA9PSBwbGwpCi0JCQkJYWN0aXZlX2NydGNzIHw9IDEgPDwgZHJtX2NydGNf aW5kZXgoJmNydGMtPmJhc2UpOwotCQl9CisJY3J0Y19tYXNrID0gMSA8PCBkcm1fY3J0Y19pbmRl eChjcnRjKTsKKworCWlmIChuZXdfc3RhdGUtPmFjdGl2ZSkKKwkJSTkxNV9TVEFURV9XQVJOKCEo cGxsLT5hY3RpdmVfbWFzayAmIGNydGNfbWFzayksCisJCQkJInBsbCBhY3RpdmUgbWlzbWF0Y2gg KGV4cGVjdGVkIHBpcGUgJWMgaW4gYWN0aXZlIG1hc2sgMHglMDJ4KVxuIiwKKwkJCQlwaXBlX25h bWUoZHJtX2NydGNfaW5kZXgoY3J0YykpLCBwbGwtPmFjdGl2ZV9tYXNrKTsKKwllbHNlCisJCUk5 MTVfU1RBVEVfV0FSTihwbGwtPmFjdGl2ZV9tYXNrICYgY3J0Y19tYXNrLAorCQkJCSJwbGwgYWN0 aXZlIG1pc21hdGNoIChkaWRuJ3QgZXhwZWN0IHBpcGUgJWMgaW4gYWN0aXZlIG1hc2sgMHglMDJ4 KVxuIiwKKwkJCQlwaXBlX25hbWUoZHJtX2NydGNfaW5kZXgoY3J0YykpLCBwbGwtPmFjdGl2ZV9t YXNrKTsKKworCUk5MTVfU1RBVEVfV0FSTighKHBsbC0+Y29uZmlnLmNydGNfbWFzayAmIGNydGNf bWFzayksCisJCQkicGxsIGVuYWJsZWQgY3J0Y3MgbWlzbWF0Y2ggKGV4cGVjdGVkIDB4JXggaW4g MHglMDJ4KVxuIiwKKwkJCWNydGNfbWFzaywgcGxsLT5jb25maWcuY3J0Y19tYXNrKTsKIAotCQlJ OTE1X1NUQVRFX1dBUk4ocGxsLT5hY3RpdmVfbWFzayAhPSBhY3RpdmVfY3J0Y3MsCi0JCSAgICAg InBsbCBhY3RpdmUgY3J0Y3MgbWlzbWF0Y2ggKGV4cGVjdGVkICV4LCBmb3VuZCAleClcbiIsCi0J CSAgICAgcGxsLT5hY3RpdmVfbWFzaywgYWN0aXZlX2NydGNzKTsKLQkJSTkxNV9TVEFURV9XQVJO KHBsbC0+Y29uZmlnLmNydGNfbWFzayAhPSBlbmFibGVkX2NydGNzLAotCQkgICAgICJwbGwgZW5h YmxlZCBjcnRjcyBtaXNtYXRjaCAoZXhwZWN0ZWQgJXgsIGZvdW5kICV4KVxuIiwKLQkJICAgICBw bGwtPmNvbmZpZy5jcnRjX21hc2ssIGVuYWJsZWRfY3J0Y3MpOworCUk5MTVfU1RBVEVfV0FSTihw bGwtPm9uICYmIG1lbWNtcCgmcGxsLT5jb25maWcuaHdfc3RhdGUsCisJCQkJCSAgJmRwbGxfaHdf c3RhdGUsCisJCQkJCSAgc2l6ZW9mKGRwbGxfaHdfc3RhdGUpKSwKKwkJCSJwbGwgaHcgc3RhdGUg bWlzbWF0Y2hcbiIpOworfQogCi0JCUk5MTVfU1RBVEVfV0FSTihwbGwtPm9uICYmIG1lbWNtcCgm cGxsLT5jb25maWcuaHdfc3RhdGUsICZkcGxsX2h3X3N0YXRlLAotCQkJCSAgICAgICBzaXplb2Yo ZHBsbF9od19zdGF0ZSkpLAotCQkgICAgICJwbGwgaHcgc3RhdGUgbWlzbWF0Y2hcbiIpOworc3Rh dGljIHZvaWQKK2NoZWNrX3NoYXJlZF9kcGxsX3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKKwkJCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqb2xkX2Ny dGNfc3RhdGUsCisJCQlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKm5ld19jcnRjX3N0YXRlKQorewor CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CisJ c3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9zdGF0ZSA9IHRvX2ludGVsX2NydGNfc3RhdGUo b2xkX2NydGNfc3RhdGUpOworCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpuZXdfc3RhdGUgPSB0 b19pbnRlbF9jcnRjX3N0YXRlKG5ld19jcnRjX3N0YXRlKTsKKworCWlmIChuZXdfc3RhdGUtPnNo YXJlZF9kcGxsKQorCQljaGVja19zaW5nbGVfZHBsbF9zdGF0ZShkZXZfcHJpdiwgbmV3X3N0YXRl LT5zaGFyZWRfZHBsbCwgY3J0YywgbmV3X2NydGNfc3RhdGUpOworCisJaWYgKG9sZF9zdGF0ZS0+ c2hhcmVkX2RwbGwgJiYKKwkgICAgb2xkX3N0YXRlLT5zaGFyZWRfZHBsbCAhPSBuZXdfc3RhdGUt PnNoYXJlZF9kcGxsKSB7CisJCXVuc2lnbmVkIGNydGNfbWFzayA9IDEgPDwgZHJtX2NydGNfaW5k ZXgoY3J0Yyk7CisJCXN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbCAqcGxsID0gb2xkX3N0YXRlLT5z aGFyZWRfZHBsbDsKKworCQlJOTE1X1NUQVRFX1dBUk4ocGxsLT5hY3RpdmVfbWFzayAmIGNydGNf bWFzaywKKwkJCQkicGxsIGFjdGl2ZSBtaXNtYXRjaCAoZGlkbid0IGV4cGVjdCBwaXBlICVjIGlu IGFjdGl2ZSBtYXNrKVxuIiwKKwkJCQlwaXBlX25hbWUoZHJtX2NydGNfaW5kZXgoY3J0YykpKTsK KwkJSTkxNV9TVEFURV9XQVJOKHBsbC0+Y29uZmlnLmNydGNfbWFzayAmIGNydGNfbWFzaywKKwkJ CQkicGxsIGVuYWJsZWQgY3J0Y3MgbWlzbWF0Y2ggKGZvdW5kICV4IGluIGVuYWJsZWQgbWFzaylc biIsCisJCQkJcGlwZV9uYW1lKGRybV9jcnRjX2luZGV4KGNydGMpKSk7CiAJfQogfQogCiBzdGF0 aWMgdm9pZAoraW50ZWxfbW9kZXNldF9jaGVja19jcnRjKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywK KwkJCSBzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKm9sZF9zdGF0ZSwKKwkJCSBzdHJ1Y3QgZHJtX2Ny dGNfc3RhdGUgKm5ld19zdGF0ZSkKK3sKKwlpZiAoIW5lZWRzX21vZGVzZXQobmV3X3N0YXRlKSAm JgorCSAgICAhdG9faW50ZWxfY3J0Y19zdGF0ZShuZXdfc3RhdGUpLT51cGRhdGVfcGlwZSkKKwkJ cmV0dXJuOworCisJY2hlY2tfd21fc3RhdGUoY3J0YywgbmV3X3N0YXRlKTsKKwljaGVja19jb25u ZWN0b3Jfc3RhdGUoY3J0Yy0+ZGV2LCBjcnRjKTsKKwljaGVja19jcnRjX3N0YXRlKGNydGMsIG9s ZF9zdGF0ZSwgbmV3X3N0YXRlKTsKKwljaGVja19zaGFyZWRfZHBsbF9zdGF0ZShjcnRjLT5kZXYs IGNydGMsIG9sZF9zdGF0ZSwgbmV3X3N0YXRlKTsKK30KKworc3RhdGljIHZvaWQKK2NoZWNrX2Rp c2FibGVkX2RwbGxfc3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOworCWludCBpOworCisJ Zm9yIChpID0gMDsgaSA8IGRldl9wcml2LT5udW1fc2hhcmVkX2RwbGw7IGkrKykKKwkJY2hlY2tf c2luZ2xlX2RwbGxfc3RhdGUoZGV2X3ByaXYsICZkZXZfcHJpdi0+c2hhcmVkX2RwbGxzW2ldLCBO VUxMLCBOVUxMKTsKK30KKworc3RhdGljIHZvaWQKK2ludGVsX21vZGVzZXRfY2hlY2tfZGlzYWJs ZWQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKKwkJCSAgICAgc3RydWN0IGRybV9hdG9taWNfc3Rh dGUgKm9sZF9zdGF0ZSkKK3sKKwljaGVja19lbmNvZGVyX3N0YXRlKGRldik7CisJY2hlY2tfY29u bmVjdG9yX3N0YXRlKGRldiwgTlVMTCk7CisJY2hlY2tfZGlzYWJsZWRfZHBsbF9zdGF0ZShkZXYp OworfQorCitzdGF0aWMgdm9pZAogaW50ZWxfbW9kZXNldF9jaGVja19zdGF0ZShzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LAogCQkJICBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqb2xkX3N0YXRlKQog ewotCWNoZWNrX3dtX3N0YXRlKGRldik7Ci0JY2hlY2tfY29ubmVjdG9yX3N0YXRlKGRldiwgb2xk X3N0YXRlKTsKLQljaGVja19lbmNvZGVyX3N0YXRlKGRldik7Ci0JY2hlY2tfY3J0Y19zdGF0ZShk ZXYsIG9sZF9zdGF0ZSk7Ci0JY2hlY2tfc2hhcmVkX2RwbGxfc3RhdGUoZGV2KTsKKwlzdHJ1Y3Qg ZHJtX2NydGNfc3RhdGUgKm9sZF9jcnRjX3N0YXRlOworCXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsK KwlpbnQgaTsKKworCWZvcl9lYWNoX2NydGNfaW5fc3RhdGUob2xkX3N0YXRlLCBjcnRjLCBvbGRf Y3J0Y19zdGF0ZSwgaSkKKwkJaW50ZWxfbW9kZXNldF9jaGVja19jcnRjKGNydGMsIG9sZF9jcnRj X3N0YXRlLCBjcnRjLT5zdGF0ZSk7CisKKwlpbnRlbF9tb2Rlc2V0X2NoZWNrX2Rpc2FibGVkKGRl diwgb2xkX3N0YXRlKTsKIH0KIAogc3RhdGljIHZvaWQgdXBkYXRlX3NjYW5saW5lX29mZnNldChz dHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKLS0gCjIuMS4wCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdm eEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9pbnRlbC1nZngK