From mboxrd@z Thu Jan 1 00:00:00 1970 From: ville.syrjala@linux.intel.com Subject: [PATCH 07/25] drm/i915: Reorganize intel_update_fbc() Date: Wed, 18 Jun 2014 20:58:40 +0300 Message-ID: <1403114338-30513-8-git-send-email-ville.syrjala@linux.intel.com> References: <1403114338-30513-1-git-send-email-ville.syrjala@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id B2EB06E749 for ; Wed, 18 Jun 2014 10:59:23 -0700 (PDT) In-Reply-To: <1403114338-30513-1-git-send-email-ville.syrjala@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 RnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KCkZC QzEgYW5kIEZCQzIgYmVoYXZlIGEgYml0IGRpZmZlcmVudGx5IHdoZW4gaXQgY29tZXMgdG8gbXVs dGlwbGUgcGlwZXMuCkZCQzEgc3VwcG9zZWRseSBtdXN0IGJlIGRpc2FibGVkIHdoZW4gbXVsdGlw bGUgcGlwZXMgYXJlIGVuYWJsZWQsIGJ1dCBGQkMyCmNhbiBiZSBlbmFibGVkLiBUbyBtYWtlIHRo aXMgbW9yZSBlYXNpZXIgdG8gcmVhZCBzaW1wbHkgc3BsaXQgdGhlIGNvZGUKYWxvbmcgdGhlIEZC QzEgdnMuIEZCQzIgbGluZXMuCgpPbiBGQkMyIHdlIGdldCB0byBwaWNrIG9uZSBvZiB0aGUgcHJp bWFyeSBwbGFuZXMgZm9yIGNvbXByZXNzaW9uIGlmCm11bHRpcGxlIGFyZSBlbmFibGVkLiBGb3Ig bm93IGp1c3QgcGljayB0aGUgb25lIHdpdGggaGlnaGVzdCBwaXhlbCByYXRlLgoKU2luY2UgdGhp cyBhbHNvIG1lYW5zIHRoYXQgbWFueSBvZiBub19mYmNfcmVhc29uIHZhbHVlcyBubyBsb25nZXIg bWFrZXMKc2Vuc2Ugc2luY2Ugd2UgdHJhY2sgdGhhdCBvbiBhIHBlci1kZXZpY2UgYmFzaWMsIGJ1 dCB0aGUgcmVhc29ucyBhcmUKYWN0dWFsbHkgcGVyLUNSVEMuIFNpbXBseSByZXBsYWNlIGFsbCB0 aGUgcGVyLUNSVEMgbm9fZmJjX3JlYXNvbiB2YWx1ZXMKd2l0aCBhIHNpbmdsZSBuZXcgRkJDX1VO U1VQUE9SVEVEX0NPTkZJRyByZWFzb24uIEluIGNhc2Ugc29tZW9uZSBzdGlsbAp3YW50cyBtb3Jl IGRlYnVnIGluZm9ybWF0aW9uLCBhbGwgdGhlIHBlci1DUlRDIHJlYXNvbnMgZm9yIGRpc2FibGlu ZwpGQkMgd2lsbCBub3cgcHJpbnQgYSBEUk1fREVCVUcoKSBtZXNzYWdlLgoKU2lnbmVkLW9mZi1i eTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KLS0tCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyB8ICAxNiArLS0KIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgIHwgICA2ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9wbS5jICAgICB8IDI2NSArKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0K IDMgZmlsZXMgY2hhbmdlZCwgMTg5IGluc2VydGlvbnMoKyksIDk4IGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKaW5kZXggNzZjMjU3Mi4uOTFjNjRmOSAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKQEAgLTE0NjgsMjQgKzE0NjgsMTIgQEAgc3RhdGlj IGludCBpOTE1X2ZiY19zdGF0dXMoc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCiAJ CWNhc2UgRkJDX1VOU1VQUE9SVEVEOgogCQkJc2VxX3B1dHMobSwgInVuc3VwcG9ydGVkIGJ5IHRo aXMgY2hpcHNldCIpOwogCQkJYnJlYWs7Ci0JCWNhc2UgRkJDX05PX09VVFBVVDoKLQkJCXNlcV9w dXRzKG0sICJubyBvdXRwdXRzIik7CisJCWNhc2UgRkJDX1VOU1VQUE9SVEVEX0NPTkZJRzoKKwkJ CXNlcV9wdXRzKG0sICJ1bnN1cHBvcnRlZCBwaXBlL3BsYW5lIGNvbmZpZyIpOwogCQkJYnJlYWs7 CiAJCWNhc2UgRkJDX1NUT0xFTl9UT09fU01BTEw6CiAJCQlzZXFfcHV0cyhtLCAibm90IGVub3Vn aCBzdG9sZW4gbWVtb3J5Iik7CiAJCQlicmVhazsKLQkJY2FzZSBGQkNfVU5TVVBQT1JURURfTU9E RToKLQkJCXNlcV9wdXRzKG0sICJtb2RlIG5vdCBzdXBwb3J0ZWQiKTsKLQkJCWJyZWFrOwotCQlj YXNlIEZCQ19NT0RFX1RPT19MQVJHRToKLQkJCXNlcV9wdXRzKG0sICJtb2RlIHRvbyBsYXJnZSIp OwotCQkJYnJlYWs7Ci0JCWNhc2UgRkJDX0JBRF9QTEFORToKLQkJCXNlcV9wdXRzKG0sICJGQkMg dW5zdXBwb3J0ZWQgb24gcGxhbmUiKTsKLQkJCWJyZWFrOwotCQljYXNlIEZCQ19OT1RfVElMRUQ6 Ci0JCQlzZXFfcHV0cyhtLCAic2Nhbm91dCBidWZmZXIgbm90IHRpbGVkIik7Ci0JCQlicmVhazsK IAkJY2FzZSBGQkNfTVVMVElQTEVfUElQRVM6CiAJCQlzZXFfcHV0cyhtLCAibXVsdGlwbGUgcGlw ZXMgYXJlIGVuYWJsZWQiKTsKIAkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXgg NGZkOGJlOS4uYmM2ZDJjYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCkBAIC02MTcsMTIgKzYx Nyw4IEBAIHN0cnVjdCBpOTE1X2ZiYyB7CiAJZW51bSBub19mYmNfcmVhc29uIHsKIAkJRkJDX09L LCAvKiBGQkMgaXMgZW5hYmxlZCAqLwogCQlGQkNfVU5TVVBQT1JURUQsIC8qIEZCQyBpcyBub3Qg c3VwcG9ydGVkIGJ5IHRoaXMgY2hpcHNldCAqLwotCQlGQkNfTk9fT1VUUFVULCAvKiBubyBvdXRw dXRzIGVuYWJsZWQgdG8gY29tcHJlc3MgKi8KKwkJRkJDX1VOU1VQUE9SVEVEX0NPTkZJRywgLyog cGlwZS9wbGFuZSBjb25maWcgbm90IHN1aXRhYmxlIGZvciBGQkMgKi8KIAkJRkJDX1NUT0xFTl9U T09fU01BTEwsIC8qIG5vdCBlbm91Z2ggc3BhY2UgZm9yIGJ1ZmZlcnMgKi8KLQkJRkJDX1VOU1VQ UE9SVEVEX01PREUsIC8qIGludGVybGFjZSBvciBkb3VibGVzY2FubmVkIG1vZGUgKi8KLQkJRkJD X01PREVfVE9PX0xBUkdFLCAvKiBtb2RlIHRvbyBsYXJnZSBmb3IgY29tcHJlc3Npb24gKi8KLQkJ RkJDX0JBRF9QTEFORSwgLyogZmJjIG5vdCBzdXBwb3J0ZWQgb24gcGxhbmUgKi8KLQkJRkJDX05P VF9USUxFRCwgLyogYnVmZmVyIG5vdCB0aWxlZCAqLwogCQlGQkNfTVVMVElQTEVfUElQRVMsIC8q IG1vcmUgdGhhbiBvbmUgcGlwZSBhY3RpdmUgKi8KIAkJRkJDX01PRFVMRV9QQVJBTSwKIAkJRkJD X0NISVBfREVGQVVMVCwgLyogZGlzYWJsZWQgYnkgZGVmYXVsdCBvbiB0aGlzIGNoaXAgKi8KZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9wbS5jCmluZGV4IDQ3MzJjOGQuLjA3ZmExNDkgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcG0uYwpAQCAtNDY4LDYgKzQ2OCwxNzkgQEAgc3RhdGljIHVpbnQzMl90IGlsa19waXBl X3BpeGVsX3JhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAlyZXR1cm4gcGl4ZWxfcmF0ZTsK IH0KIAorc3RhdGljIGJvb2wgaW50ZWxfZmJjMV9wb3NzaWJsZShzdHJ1Y3QgaW50ZWxfY3J0YyAq Y3J0YykKK3sKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+YmFzZS5kZXY7CisJc3Ry dWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBjcnRjLT5iYXNlLnByaW1hcnktPmZiOworCXN0cnVj dCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7CisKKwlpZiAoIUlTX0dFTjQoZGV2KSAmJiBjcnRj LT5wbGFuZSAhPSBQTEFORV9BKSB7CisJCURSTV9ERUJVRygiRkJDIHBpcGUgJWMsIHBsYW5lICVj OiBubyBGQkMgb24gdGhpcyBwbGFuZVxuIiwKKwkJCSAgcGlwZV9uYW1lKGNydGMtPnBpcGUpLCBw bGFuZV9uYW1lKGNydGMtPnBsYW5lKSk7CisJCXJldHVybiBmYWxzZTsKKwl9CisKKwlpZiAoIWlu dGVsX2NydGNfYWN0aXZlKCZjcnRjLT5iYXNlKSkgeworCQlEUk1fREVCVUcoIkZCQyBwaXBlICVj LCBwbGFuZSAlYzogcGlwZSBkaXNhYmxlZFxuIiwKKwkJCSAgcGlwZV9uYW1lKGNydGMtPnBpcGUp LCBwbGFuZV9uYW1lKGNydGMtPnBsYW5lKSk7CisJCXJldHVybiBmYWxzZTsKKwl9CisKKwlpZiAo Y3J0Yy0+Y29uZmlnLnBpcGVfc3JjX3cgPiAyMDQ4IHx8CisJICAgIGNydGMtPmNvbmZpZy5waXBl X3NyY19oID4gMTUzNikgeworCQlEUk1fREVCVUcoIkZCQyBwaXBlICVjLCBwbGFuZSAlYzogbW9k ZSAoJWR4JWQpIHRvbyBsYXJnZVxuIiwKKwkJCSAgcGlwZV9uYW1lKGNydGMtPnBpcGUpLCBwbGFu ZV9uYW1lKGNydGMtPnBsYW5lKSwKKwkJCSAgY3J0Yy0+Y29uZmlnLnBpcGVfc3JjX3csIGNydGMt PmNvbmZpZy5waXBlX3NyY19oKTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKworCWlmIChjcnRjLT5j b25maWcuYWRqdXN0ZWRfbW9kZS5mbGFncyAmIChEUk1fTU9ERV9GTEFHX0lOVEVSTEFDRSB8CisJ CQkJCQlEUk1fTU9ERV9GTEFHX0RCTFNDQU4pIHx8CisJICAgIGNydGMtPmNvbmZpZy5kb3VibGVf d2lkZSkgeworCQlEUk1fREVCVUcoIkZCQyBwaXBlICVjLCBwbGFuZSAlYzogbW9kZSBpbmNvbXBh dGlibGVcbiIsCisJCQkgIHBpcGVfbmFtZShjcnRjLT5waXBlKSwgcGxhbmVfbmFtZShjcnRjLT5w bGFuZSkpOworCQlyZXR1cm4gZmFsc2U7CisJfQorCisJaWYgKCFjcnRjLT5wcmltYXJ5X2VuYWJs ZWQpIHsKKwkJRFJNX0RFQlVHKCJGQkMgcGlwZSAlYywgcGxhbmUgJWM6IHByaW1hcnkgcGxhbmUg ZGlzYWJsZWRcbiIsCisJCQkgIHBpcGVfbmFtZShjcnRjLT5waXBlKSwgcGxhbmVfbmFtZShjcnRj LT5wbGFuZSkpOworCQlyZXR1cm4gZmFsc2U7CisJfQorCisJb2JqID0gdG9faW50ZWxfZnJhbWVi dWZmZXIoZmIpLT5vYmo7CisKKwlpZiAob2JqLT50aWxpbmdfbW9kZSAhPSBJOTE1X1RJTElOR19Y IHx8CisJICAgIG9iai0+ZmVuY2VfcmVnID09IEk5MTVfRkVOQ0VfUkVHX05PTkUpIHsKKwkJRFJN X0RFQlVHKCJGQkMgcGlwZSAlYywgcGxhbmUgJWM6IGZyYW1lYnVmZmVyIG5vdCB0aWxlZCBvciBm ZW5jZWRcbiIsCisJCQkgIHBpcGVfbmFtZShjcnRjLT5waXBlKSwgcGxhbmVfbmFtZShjcnRjLT5w bGFuZSkpOworCQlyZXR1cm4gZmFsc2U7CisJfQorCisJcmV0dXJuIHRydWU7Cit9CisKK3N0YXRp YyBib29sIGludGVsX2ZiYzJfcG9zc2libGUoc3RydWN0IGludGVsX2NydGMgKmNydGMpCit7CisJ c3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmJhc2UuZGV2OworCXN0cnVjdCBkcm1fZnJh bWVidWZmZXIgKmZiID0gY3J0Yy0+YmFzZS5wcmltYXJ5LT5mYjsKKwlzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCAqb2JqOworCWludCBtYXhfd2lkdGgsIG1heF9oZWlnaHQ7CisKKwlpZiAoKElT X0hBU1dFTEwoZGV2KSB8fCBJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA4KSAmJgorCSAgICBjcnRj LT5wbGFuZSAhPSBQTEFORV9BKSB7CisJCURSTV9ERUJVRygiRkJDIHBpcGUgJWMsIHBsYW5lICVj OiBubyBGQkMgb24gdGhpcyBwbGFuZVxuIiwKKwkJCSAgcGlwZV9uYW1lKGNydGMtPnBpcGUpLCBw bGFuZV9uYW1lKGNydGMtPnBsYW5lKSk7CisJCXJldHVybiBmYWxzZTsKKwl9CisKKwlpZiAoIWlu dGVsX2NydGNfYWN0aXZlKCZjcnRjLT5iYXNlKSkgeworCQlEUk1fREVCVUcoIkZCQyBwaXBlICVj LCBwbGFuZSAlYzogcGlwZSBkaXNhYmxlZFxuIiwKKwkJCSAgcGlwZV9uYW1lKGNydGMtPnBpcGUp LCBwbGFuZV9uYW1lKGNydGMtPnBsYW5lKSk7CisJCXJldHVybiBmYWxzZTsKKwl9CisKKwlpZiAo SVNfSEFTV0VMTChkZXYpIHx8IElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDgpIHsKKwkJbWF4X3dp ZHRoID0gNDA5NjsKKwkJbWF4X2hlaWdodCA9IDQwOTY7CisJfSBlbHNlIHsKKwkJbWF4X3dpZHRo ID0gNDA5NjsKKwkJbWF4X2hlaWdodCA9IDIwNDg7CisJfQorCisJaWYgKGNydGMtPmNvbmZpZy5w aXBlX3NyY193ID4gbWF4X3dpZHRoIHx8CisJICAgIGNydGMtPmNvbmZpZy5waXBlX3NyY19oID4g bWF4X2hlaWdodCkgeworCQlEUk1fREVCVUcoIkZCQyBwaXBlICVjLCBwbGFuZSAlYzogbW9kZSAo JWR4JWQpIHRvbyBsYXJnZVxuIiwKKwkJCSAgcGlwZV9uYW1lKGNydGMtPnBpcGUpLCBwbGFuZV9u YW1lKGNydGMtPnBsYW5lKSwKKwkJCSAgY3J0Yy0+Y29uZmlnLnBpcGVfc3JjX3csIGNydGMtPmNv bmZpZy5waXBlX3NyY19oKTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKworCWlmICghY3J0Yy0+cHJp bWFyeV9lbmFibGVkKSB7CisJCURSTV9ERUJVRygiRkJDIHBpcGUgJWMsIHBsYW5lICVjOiBwcmlt YXJ5IHBsYW5lIGRpc2FibGVkXG4iLAorCQkJICBwaXBlX25hbWUoY3J0Yy0+cGlwZSksIHBsYW5l X25hbWUoY3J0Yy0+cGxhbmUpKTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKworCW9iaiA9IHRvX2lu dGVsX2ZyYW1lYnVmZmVyKGZiKS0+b2JqOworCisJaWYgKG9iai0+dGlsaW5nX21vZGUgIT0gSTkx NV9USUxJTkdfWCB8fAorCSAgICBvYmotPmZlbmNlX3JlZyA9PSBJOTE1X0ZFTkNFX1JFR19OT05F KSB7CisJCURSTV9ERUJVRygiRkJDIHBpcGUgJWMsIHBsYW5lICVjOiBmcmFtZWJ1ZmZlciBub3Qg dGlsZWQgb3IgZmVuY2VkXG4iLAorCQkJICBwaXBlX25hbWUoY3J0Yy0+cGlwZSksIHBsYW5lX25h bWUoY3J0Yy0+cGxhbmUpKTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKworCXJldHVybiB0cnVlOwor fQorCitzdGF0aWMgc3RydWN0IGludGVsX2NydGMgKmludGVsX2ZiYzFfcGlja19jcnRjKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqdG1wX2NydGMsICpjcnRj ID0gTlVMTDsKKworCWxpc3RfZm9yX2VhY2hfZW50cnkodG1wX2NydGMsICZkZXYtPm1vZGVfY29u ZmlnLmNydGNfbGlzdCwgYmFzZS5oZWFkKSB7CisJCWlmICghdG1wX2NydGMtPmFjdGl2ZSkKKwkJ CWNvbnRpbnVlOworCisJCWlmIChjcnRjKSB7CisJCQlpZiAoc2V0X25vX2ZiY19yZWFzb24oZGV2 X3ByaXYsIEZCQ19NVUxUSVBMRV9QSVBFUykpCisJCQkJRFJNX0RFQlVHX0tNUygibW9yZSB0aGFu IG9uZSBwaXBlIGFjdGl2ZSwgZGlzYWJsaW5nIEZCQ1xuIik7CisJCQlyZXR1cm4gTlVMTDsKKwkJ fQorCisJCWNydGMgPSB0bXBfY3J0YzsKKwl9CisKKwlpZiAoIWNydGMgfHwgIWludGVsX2ZiYzFf cG9zc2libGUoY3J0YykpIHsKKwkJaWYgKHNldF9ub19mYmNfcmVhc29uKGRldl9wcml2LCBGQkNf VU5TVVBQT1JURURfQ09ORklHKSkKKwkJCURSTV9ERUJVR19LTVMoIm5vIHN1aXRhYmxlIHBsYW5l LCBkaXNhYmxpbmcgRkJDXG4iKTsKKwkJcmV0dXJuIE5VTEw7CisJfQorCisJcmV0dXJuIGNydGM7 Cit9CisKK3N0YXRpYyBzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfZmJjMl9waWNrX2NydGMoc3Ry dWN0IGRybV9kZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSBkZXYtPmRldl9wcml2YXRlOworCXN0cnVjdCBpbnRlbF9jcnRjICp0bXBfY3J0YywgKmNy dGMgPSBOVUxMOworCXVuc2lnbmVkIGludCBwaXhlbF9yYXRlID0gMDsKKworCWxpc3RfZm9yX2Vh Y2hfZW50cnkodG1wX2NydGMsICZkZXYtPm1vZGVfY29uZmlnLmNydGNfbGlzdCwgYmFzZS5oZWFk KSB7CisJCXVuc2lnbmVkIGludCB0bXBfcGl4ZWxfcmF0ZTsKKworCQlpZiAoIWludGVsX2ZiYzJf cG9zc2libGUodG1wX2NydGMpKQorCQkJY29udGludWU7CisKKwkJLyoKKwkJICogSWYgd2UgaGF2 ZSBtdWx0aXBsZSBwb3NzaWJpbGl0aWVzLCBwcmVmZXIKKwkJICogdGhlIHBpcGUgd2l0aCB0aGUg aGlnaGVzdCBwaXhlbCByYXRlLgorCQkgKgorCQkgKiBGSVhNRTogaXMgdGhpcyBhIGdvb2QgaGV1 cmlzdGljPworCQkgKgorCQkgKiBGSVhNRTogV2Ugc2hvdWxkIGhhdmUgc29tZXRoaW5nIGxpa2Ug aWxrX3BpcGVfcGl4ZWxfcmF0ZSgpCisJCSAqIGZvciBHTUNIIHBsYXRmb3JtcyB0b28sIGJ1dCBo ZXJlIGl0IGRvZXNuJ3QgbWF0dGVyIHNpbmNlCisJCSAqIHdlIGFueXdheSBkaXNhbGxvdyBGQkMg d2l0aCBwYW5lbCBmaXR0aW5nIG9uIGc0eC4KKwkJICovCisJCWlmIChIQVNfUENIX1NQTElUKGRl dikpCisJCQl0bXBfcGl4ZWxfcmF0ZSA9IGlsa19waXBlX3BpeGVsX3JhdGUoZGV2LCAmdG1wX2Ny dGMtPmJhc2UpOworCQllbHNlCisJCQl0bXBfcGl4ZWxfcmF0ZSA9IHRtcF9jcnRjLT5jb25maWcu YWRqdXN0ZWRfbW9kZS5jcnRjX2Nsb2NrOworCisJCWlmIChwaXhlbF9yYXRlIDwgdG1wX3BpeGVs X3JhdGUpIHsKKwkJCWNydGMgPSB0bXBfY3J0YzsKKwkJCXBpeGVsX3JhdGUgPSB0bXBfcGl4ZWxf cmF0ZTsKKwkJfQorCX0KKworCWlmICghY3J0YykKKwkJaWYgKHNldF9ub19mYmNfcmVhc29uKGRl dl9wcml2LCBGQkNfVU5TVVBQT1JURURfQ09ORklHKSkKKwkJCURSTV9ERUJVR19LTVMoIm5vIHN1 aXRhYmxlIHBsYW5lLCBkaXNhYmxpbmcgRkJDXG4iKTsKKworCXJldHVybiBjcnRjOworfQorCiAv KioKICAqIGludGVsX3VwZGF0ZV9mYmMgLSBlbmFibGUvZGlzYWJsZSBGQkMgYXMgbmVlZGVkCiAg KiBAZGV2OiB0aGUgZHJtX2RldmljZQpAQCAtNDkwLDEzICs2NjMsOSBAQCBzdGF0aWMgdWludDMy X3QgaWxrX3BpcGVfcGl4ZWxfcmF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogdm9pZCBpbnRl bF91cGRhdGVfZmJjKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiB7CiAJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKLQlzdHJ1Y3QgZHJtX2NydGMg KmNydGMgPSBOVUxMLCAqdG1wX2NydGM7Ci0Jc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGM7 CisJc3RydWN0IGludGVsX2NydGMgKmNydGM7CiAJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmI7 Ci0Jc3RydWN0IGludGVsX2ZyYW1lYnVmZmVyICppbnRlbF9mYjsKIAlzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCAqb2JqOwotCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3Rl ZF9tb2RlOwotCXVuc2lnbmVkIGludCBtYXhfd2lkdGgsIG1heF9oZWlnaHQ7CiAKIAlpZiAoIUhB U19GQkMoZGV2KSkgewogCQlzZXRfbm9fZmJjX3JlYXNvbihkZXZfcHJpdiwgRkJDX1VOU1VQUE9S VEVEKTsKQEAgLTUwOSwzOSArNjc4LDYgQEAgdm9pZCBpbnRlbF91cGRhdGVfZmJjKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpCiAJCXJldHVybjsKIAl9CiAKLQkvKgotCSAqIElmIEZCQyBpcyBhbHJl YWR5IG9uLCB3ZSBqdXN0IGhhdmUgdG8gdmVyaWZ5IHRoYXQgd2UgY2FuCi0JICoga2VlcCBpdCB0 aGF0IHdheS4uLgotCSAqIE5lZWQgdG8gZGlzYWJsZSBpZjoKLQkgKiAgIC0gbW9yZSB0aGFuIG9u ZSBwaXBlIGlzIGFjdGl2ZQotCSAqICAgLSBjaGFuZ2luZyBGQkMgcGFyYW1zIChzdHJpZGUsIGZl bmNlLCBtb2RlKQotCSAqICAgLSBuZXcgZmIgaXMgdG9vIGxhcmdlIHRvIGZpdCBpbiBjb21wcmVz c2VkIGJ1ZmZlcgotCSAqICAgLSBnb2luZyB0byBhbiB1bnN1cHBvcnRlZCBjb25maWcgKGludGVy bGFjZSwgcGl4ZWwgbXVsdGlwbHksIGV0Yy4pCi0JICovCi0JZm9yX2VhY2hfY3J0YyhkZXYsIHRt cF9jcnRjKSB7Ci0JCWlmIChpbnRlbF9jcnRjX2FjdGl2ZSh0bXBfY3J0YykgJiYKLQkJICAgIHRv X2ludGVsX2NydGModG1wX2NydGMpLT5wcmltYXJ5X2VuYWJsZWQpIHsKLQkJCWlmIChjcnRjKSB7 Ci0JCQkJaWYgKHNldF9ub19mYmNfcmVhc29uKGRldl9wcml2LCBGQkNfTVVMVElQTEVfUElQRVMp KQotCQkJCQlEUk1fREVCVUdfS01TKCJtb3JlIHRoYW4gb25lIHBpcGUgYWN0aXZlLCBkaXNhYmxp bmcgY29tcHJlc3Npb25cbiIpOwotCQkJCWdvdG8gb3V0X2Rpc2FibGU7Ci0JCQl9Ci0JCQljcnRj ID0gdG1wX2NydGM7Ci0JCX0KLQl9Ci0KLQlpZiAoIWNydGMgfHwgY3J0Yy0+cHJpbWFyeS0+ZmIg PT0gTlVMTCkgewotCQlpZiAoc2V0X25vX2ZiY19yZWFzb24oZGV2X3ByaXYsIEZCQ19OT19PVVRQ VVQpKQotCQkJRFJNX0RFQlVHX0tNUygibm8gb3V0cHV0LCBkaXNhYmxpbmdcbiIpOwotCQlnb3Rv IG91dF9kaXNhYmxlOwotCX0KLQotCWludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwot CWZiID0gY3J0Yy0+cHJpbWFyeS0+ZmI7Ci0JaW50ZWxfZmIgPSB0b19pbnRlbF9mcmFtZWJ1ZmZl cihmYik7Ci0Jb2JqID0gaW50ZWxfZmItPm9iajsKLQlhZGp1c3RlZF9tb2RlID0gJmludGVsX2Ny dGMtPmNvbmZpZy5hZGp1c3RlZF9tb2RlOwotCiAJaWYgKGk5MTUuZW5hYmxlX2ZiYyA8IDApIHsK IAkJaWYgKHNldF9ub19mYmNfcmVhc29uKGRldl9wcml2LCBGQkNfQ0hJUF9ERUZBVUxUKSkKIAkJ CURSTV9ERUJVR19LTVMoImRpc2FibGVkIHBlciBjaGlwIGRlZmF1bHRcbiIpOwpAQCAtNTUyLDUy ICs2ODgsMjMgQEAgdm9pZCBpbnRlbF91cGRhdGVfZmJjKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp CiAJCQlEUk1fREVCVUdfS01TKCJmYmMgZGlzYWJsZWQgcGVyIG1vZHVsZSBwYXJhbVxuIik7CiAJ CWdvdG8gb3V0X2Rpc2FibGU7CiAJfQotCWlmICgoYWRqdXN0ZWRfbW9kZS0+ZmxhZ3MgJiBEUk1f TU9ERV9GTEFHX0lOVEVSTEFDRSkgfHwKLQkgICAgKGFkanVzdGVkX21vZGUtPmZsYWdzICYgRFJN X01PREVfRkxBR19EQkxTQ0FOKSkgewotCQlpZiAoc2V0X25vX2ZiY19yZWFzb24oZGV2X3ByaXYs IEZCQ19VTlNVUFBPUlRFRF9NT0RFKSkKLQkJCURSTV9ERUJVR19LTVMoIm1vZGUgaW5jb21wYXRp YmxlIHdpdGggY29tcHJlc3Npb24sICIKLQkJCQkgICAgICAiZGlzYWJsaW5nXG4iKTsKLQkJZ290 byBvdXRfZGlzYWJsZTsKLQl9CiAKLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOCB8fCBJ U19IQVNXRUxMKGRldikpIHsKLQkJbWF4X3dpZHRoID0gNDA5NjsKLQkJbWF4X2hlaWdodCA9IDQw OTY7Ci0JfSBlbHNlIGlmIChJU19HNFgoZGV2KSB8fCBJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA1 KSB7Ci0JCW1heF93aWR0aCA9IDQwOTY7Ci0JCW1heF9oZWlnaHQgPSAyMDQ4OwotCX0gZWxzZSB7 Ci0JCW1heF93aWR0aCA9IDIwNDg7Ci0JCW1heF9oZWlnaHQgPSAxNTM2OwotCX0KLQlpZiAoaW50 ZWxfY3J0Yy0+Y29uZmlnLnBpcGVfc3JjX3cgPiBtYXhfd2lkdGggfHwKLQkgICAgaW50ZWxfY3J0 Yy0+Y29uZmlnLnBpcGVfc3JjX2ggPiBtYXhfaGVpZ2h0KSB7Ci0JCWlmIChzZXRfbm9fZmJjX3Jl YXNvbihkZXZfcHJpdiwgRkJDX01PREVfVE9PX0xBUkdFKSkKLQkJCURSTV9ERUJVR19LTVMoIm1v ZGUgdG9vIGxhcmdlIGZvciBjb21wcmVzc2lvbiwgZGlzYWJsaW5nXG4iKTsKLQkJZ290byBvdXRf ZGlzYWJsZTsKLQl9Ci0JaWYgKChJTlRFTF9JTkZPKGRldiktPmdlbiA8IDQgfHwgSEFTX0RESShk ZXYpKSAmJgotCSAgICBpbnRlbF9jcnRjLT5wbGFuZSAhPSBQTEFORV9BKSB7Ci0JCWlmIChzZXRf bm9fZmJjX3JlYXNvbihkZXZfcHJpdiwgRkJDX0JBRF9QTEFORSkpCi0JCQlEUk1fREVCVUdfS01T KCJwbGFuZSBub3QgQSwgZGlzYWJsaW5nIGNvbXByZXNzaW9uXG4iKTsKLQkJZ290byBvdXRfZGlz YWJsZTsKLQl9CisJaWYgKElTX0c0WChkZXYpIHx8IElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDUp CisJCWNydGMgPSBpbnRlbF9mYmMyX3BpY2tfY3J0YyhkZXYpOworCWVsc2UKKwkJY3J0YyA9IGlu dGVsX2ZiYzFfcGlja19jcnRjKGRldik7CiAKLQkvKiBUaGUgdXNlIG9mIGEgQ1BVIGZlbmNlIGlz IG1hbmRhdG9yeSBpbiBvcmRlciB0byBkZXRlY3Qgd3JpdGVzCi0JICogYnkgdGhlIENQVSB0byB0 aGUgc2Nhbm91dCBhbmQgdHJpZ2dlciB1cGRhdGVzIHRvIHRoZSBGQkMuCi0JICovCi0JaWYgKG9i ai0+dGlsaW5nX21vZGUgIT0gSTkxNV9USUxJTkdfWCB8fAotCSAgICBvYmotPmZlbmNlX3JlZyA9 PSBJOTE1X0ZFTkNFX1JFR19OT05FKSB7Ci0JCWlmIChzZXRfbm9fZmJjX3JlYXNvbihkZXZfcHJp diwgRkJDX05PVF9USUxFRCkpCi0JCQlEUk1fREVCVUdfS01TKCJmcmFtZWJ1ZmZlciBub3QgdGls ZWQgb3IgZmVuY2VkLCBkaXNhYmxpbmcgY29tcHJlc3Npb25cbiIpOworCWlmICghY3J0YykKIAkJ Z290byBvdXRfZGlzYWJsZTsKLQl9CisKKwlmYiA9IGNydGMtPmJhc2UucHJpbWFyeS0+ZmI7CisJ b2JqID0gdG9faW50ZWxfZnJhbWVidWZmZXIoZmIpLT5vYmo7CiAKIAkvKiBJZiB0aGUga2VybmVs IGRlYnVnZ2VyIGlzIGFjdGl2ZSwgYWx3YXlzIGRpc2FibGUgY29tcHJlc3Npb24gKi8KIAlpZiAo aW5fZGJnX21hc3RlcigpKQogCQlnb3RvIG91dF9kaXNhYmxlOwogCi0JaWYgKGk5MTVfZ2VtX3N0 b2xlbl9zZXR1cF9jb21wcmVzc2lvbihkZXYsIGludGVsX2ZiLT5vYmotPmJhc2Uuc2l6ZSkpIHsK KwlpZiAoaTkxNV9nZW1fc3RvbGVuX3NldHVwX2NvbXByZXNzaW9uKGRldiwgb2JqLT5iYXNlLnNp emUpKSB7CiAJCWlmIChzZXRfbm9fZmJjX3JlYXNvbihkZXZfcHJpdiwgRkJDX1NUT0xFTl9UT09f U01BTEwpKQogCQkJRFJNX0RFQlVHX0tNUygiZnJhbWVidWZmZXIgdG9vIGxhcmdlLCBkaXNhYmxp bmcgY29tcHJlc3Npb25cbiIpOwogCQlnb3RvIG91dF9kaXNhYmxlOwpAQCAtNjA4LDkgKzcxNSw5 IEBAIHZvaWQgaW50ZWxfdXBkYXRlX2ZiYyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCSAqIGNh bm5vdCBiZSB1bnBpbm5lZCAoYW5kIGhhdmUgaXRzIEdUVCBvZmZzZXQgYW5kIGZlbmNlIHJldm9r ZWQpCiAJICogd2l0aG91dCBmaXJzdCBiZWluZyBkZWNvdXBsZWQgZnJvbSB0aGUgc2Nhbm91dCBh bmQgRkJDIGRpc2FibGVkLgogCSAqLwotCWlmIChkZXZfcHJpdi0+ZmJjLnBsYW5lID09IGludGVs X2NydGMtPnBsYW5lICYmCisJaWYgKGRldl9wcml2LT5mYmMucGxhbmUgPT0gY3J0Yy0+cGxhbmUg JiYKIAkgICAgZGV2X3ByaXYtPmZiYy5mYl9pZCA9PSBmYi0+YmFzZS5pZCAmJgotCSAgICBkZXZf cHJpdi0+ZmJjLnkgPT0gY3J0Yy0+eSkKKwkgICAgZGV2X3ByaXYtPmZiYy55ID09IGNydGMtPmJh c2UueSkKIAkJcmV0dXJuOwogCiAJaWYgKGludGVsX2ZiY19lbmFibGVkKGRldikpIHsKQEAgLTY0 MSw3ICs3NDgsNyBAQCB2b2lkIGludGVsX3VwZGF0ZV9mYmMoc3RydWN0IGRybV9kZXZpY2UgKmRl dikKIAkJaW50ZWxfZGlzYWJsZV9mYmMoZGV2KTsKIAl9CiAKLQlpbnRlbF9lbmFibGVfZmJjKGNy dGMpOworCWludGVsX2VuYWJsZV9mYmMoJmNydGMtPmJhc2UpOwogCWRldl9wcml2LT5mYmMubm9f ZmJjX3JlYXNvbiA9IEZCQ19PSzsKIAlyZXR1cm47CiAKLS0gCjEuOC41LjUKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxp c3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==