From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matt Roper Subject: [RFC 8/8] drm/i915: Add two-stage ILK-style watermark programming (v2) Date: Wed, 1 Jul 2015 19:26:01 -0700 Message-ID: <1435803961-30079-9-git-send-email-matthew.d.roper@intel.com> References: <1435803961-30079-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 mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTP id AD9A47213F for ; Wed, 1 Jul 2015 19:26:46 -0700 (PDT) In-Reply-To: <1435803961-30079-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 RnJvbTogTWF0dCBSb3BlciA8bWF0dEBtYXR0cm9wZS5jb20+CgpJbiBhZGRpdGlvbiB0byBjYWxj dWxhdGluZyBmaW5hbCB3YXRlcm1hcmtzLCBsZXQncyBhbHNvIHByZS1jYWxjdWxhdGUgYQpzZXQg b2YgaW50ZXJtZWRpYXRlIHdhdGVybWFyayB2YWx1ZXMgYXQgYXRvbWljIGNoZWNrIHRpbWUuICBU aGVzZQppbnRlcm1lZGlhdGUgd2F0ZXJtYXJrcyBhcmUgYSBjb21iaW5hdGlvbiBvZiB0aGUgd2F0 ZXJtYXJrcyBmb3IgdGhlIG9sZApzdGF0ZSBhbmQgdGhlIG5ldyBzdGF0ZTsgdGhleSBzaG91bGQg c2F0aXNmeSB0aGUgcmVxdWlyZW1lbnRzIG9mIGJvdGgKc3RhdGVzIHdoaWNoIG1lYW5zIHRoZXkg Y2FuIGJlIHByb2dyYW1tZWQgaW1tZWRpYXRlbHkgd2hlbiB3ZSBjb21taXQgdGhlCmF0b21pYyBz dGF0ZSAod2l0aG91dCB3YWl0aW5nIGZvciBhIHZibGFuaykuICBPbmNlIHRoZSB2YmxhbmsgZG9l cwpoYXBwZW4sIHdlIGNhbiB0aGVuIHJlLXByb2dyYW0gd2F0ZXJtYXJrcyB0byB0aGUgbW9yZSBv cHRpbWFsIGZpbmFsCnZhbHVlLgoKdjI6IFNpZ25pZmljYW50IHJlYmFzaW5nL3Jld3JpdGluZy4K ClNpZ25lZC1vZmYtYnk6IE1hdHQgUm9wZXIgPG1hdHRoZXcuZC5yb3BlckBpbnRlbC5jb20+Ci0t LQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgIHwgIDkgKysrKysKIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMgICAgICB8ICA3ICsrKysKIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rpc3BsYXkuYyB8IDM0ICsrKysrKysrKysrKysrKy0KIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rydi5oICAgICB8IDI2ICsrKysrKysrKy0tLS0KIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3BtLmMgICAgICB8IDc1ICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrKy0tLS0tLQogNSBmaWxlcyBjaGFuZ2VkLCAxMzAgaW5zZXJ0aW9ucygrKSwgMjEgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXggNWFkOTQyZS4uNDIzOTdlMiAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAorKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oCkBAIC02MjMsNiArNjIzLDkgQEAgc3RydWN0IGRybV9pOTE1 X2Rpc3BsYXlfZnVuY3MgewogCQkJICBzdHJ1Y3QgZHBsbCAqYmVzdF9jbG9jayk7CiAJaW50ICgq Y29tcHV0ZV9waXBlX3dtKShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJCQkgICAgICAgc3RydWN0 IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKTsKKwl2b2lkICgqY29tcHV0ZV9pbnRlcm1lZGlhdGVf d20pKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCisJCQkJCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpuZXdzdGF0ZSwKKwkJCQkJY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZHN0YXRl KTsKIAl2b2lkICgqdXBkYXRlX3dtKShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpOwogCXZvaWQgKCp1 cGRhdGVfc3ByaXRlX3dtKShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAkJCQkgc3RydWN0IGRy bV9jcnRjICpjcnRjLApAQCAtMjU3NCw2ICsyNTc3LDEyIEBAIHN0cnVjdCBkcm1faTkxNV9jbWRf dGFibGUgewogICovCiAjZGVmaW5lIEhBU19BVE9NSUNfV00oZGV2X3ByaXYpIChkZXZfcHJpdi0+ ZGlzcGxheS5wcm9ncmFtX3dhdGVybWFya3MgIT0gTlVMTCkKIAorLyoKKyAqIE5ld2VyIHBsYXRm b3JtcyBoYXZlIGRvdWJsZWJ1ZmZlcmVkIHdhdGVybWFyayByZWdpc3RlcnMgYW5kIGRvIG5vdCBu ZWVkCisgKiB0aGUgdHdvLXN0ZXAgd2F0ZXJtYXJrIHByb2dyYW1taW5nIHVzZWQgYnkgb2xkZXIg cGxhdGZvcm1zLgorICovCisjZGVmaW5lIEhBU19EQkxCVUZfV00oZGV2X3ByaXYpIChJTlRFTF9J TkZPKGRldl9wcml2KS0+Z2VuID49IDkpCisKICNkZWZpbmUgR1RfRlJFUVVFTkNZX01VTFRJUExJ RVIgNTAKICNkZWZpbmUgR0VOOV9GUkVRX1NDQUxFUiAzCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfaXJxLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5j CmluZGV4IDIwYzcyNjAuLjYyN2M1NmYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfaXJxLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYwpAQCAtMTQ1 NSw4ICsxNDU1LDE1IEBAIHN0YXRpYyBib29sIGludGVsX3BpcGVfaGFuZGxlX3ZibGFuayhzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LCBlbnVtIHBpcGUgcGlwZSkKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7CiAJc3RydWN0IGRybV9jcnRjICpjcnRjID0g ZGV2X3ByaXYtPnBpcGVfdG9fY3J0Y19tYXBwaW5nW3BpcGVdOwogCXN0cnVjdCBpbnRlbF9jcnRj ICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKKwlzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqY3N0YXRlID0gdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjLT5zdGF0ZSk7CiAKIAlpZiAo aW50ZWxfY3J0Yy0+bmVlZF92Ymxhbmtfd21fdXBkYXRlKSB7CisJCVdBUk5fT04oSEFTX0RCTEJV Rl9XTShkZXZfcHJpdikpOworCisJCS8qIExhdGNoIGZpbmFsIHdhdGVybWFya3Mgbm93IHRoYXQg dmJsYW5rIGlzIHBhc3QgKi8KKwkJY3N0YXRlLT53bS5hY3RpdmUgPSBjc3RhdGUtPndtLnRhcmdl dDsKKworCQkvKiBRdWV1ZSB3b3JrIHRvIGFjdHVhbGx5IHByb2dyYW0gdGhlbSBhc3luY2hyb25v dXNseSAqLwogCQlxdWV1ZV93b3JrKGRldl9wcml2LT53cSwgJmludGVsX2NydGMtPndtX3dvcmsp OwogCQlpbnRlbF9jcnRjLT5uZWVkX3ZibGFua193bV91cGRhdGUgPSBmYWxzZTsKIAl9CmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKaW5kZXggZmE0MzczZS4uMTYxNmQ3ZiAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwpAQCAtNDczNyw3ICs0NzM3LDcgQEAgc3RhdGlj IHZvaWQgaW50ZWxfcG9zdF9wbGFuZV91cGRhdGUoc3RydWN0IGludGVsX2NydGMgKmNydGMpCiAJ c3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmJhc2UuZGV2OwogCXN0cnVjdCBkcm1fcGxh bmUgKnBsYW5lOwogCi0JaWYgKEhBU19BVE9NSUNfV00odG9faTkxNShkZXYpKSkKKwlpZiAoSEFT X0FUT01JQ19XTSh0b19pOTE1KGRldikpICYmICFIQVNfREJMQlVGX1dNKHRvX2k5MTUoZGV2KSkp CiAJCS8qIHZibGFuayBoYW5kbGVyIHdpbGwga2ljayBvZmYgd29ya3F1ZXVlIHRhc2sgdG8gdXBk YXRlIHdtJ3MgKi8KIAkJY3J0Yy0+bmVlZF92Ymxhbmtfd21fdXBkYXRlID0gdHJ1ZTsKIApAQCAt MTE4MzMsNiArMTE4MzMsOCBAQCBzdGF0aWMgaW50IGludGVsX2NydGNfYXRvbWljX2NoZWNrKHN0 cnVjdCBkcm1fY3J0YyAqY3J0YywKIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRv X2ludGVsX2NydGMoY3J0Yyk7CiAJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmln ID0KIAkJdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjX3N0YXRlKTsKKwlzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqb2xkX3BpcGVfY29uZmlnID0KKwkJdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjLT5z dGF0ZSk7CiAJc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlID0gY3J0Y19zdGF0ZS0+c3Rh dGU7CiAJaW50IHJldCwgaWR4ID0gY3J0Yy0+YmFzZS5pZDsKIAlib29sIG1vZGVfY2hhbmdlZCA9 IG5lZWRzX21vZGVzZXQoY3J0Y19zdGF0ZSk7CkBAIC0xMTg2Myw5ICsxMTg2NSwyMCBAQCBzdGF0 aWMgaW50IGludGVsX2NydGNfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAl9 CiAKIAlpZiAoZGV2X3ByaXYtPmRpc3BsYXkuY29tcHV0ZV9waXBlX3dtKSB7CisJCWlmIChXQVJO X09OKCFkZXZfcHJpdi0+ZGlzcGxheS5jb21wdXRlX2ludGVybWVkaWF0ZV93bSkpCisJCQlyZXR1 cm4gMDsKKwogCQlyZXQgPSBkZXZfcHJpdi0+ZGlzcGxheS5jb21wdXRlX3BpcGVfd20oY3J0Yywg c3RhdGUpOwogCQlpZiAocmV0KQogCQkJcmV0dXJuIHJldDsKKworCQkvKgorCQkgKiBDYWxjdWxh dGUgJ2ludGVybWVkaWF0ZScgd2F0ZXJtYXJrcyB0aGF0IHNhdGlzZnkgYm90aCB0aGUgb2xkIHN0 YXRlCisJCSAqIGFuZCB0aGUgbmV3IHN0YXRlLiAgV2UgY2FuIHByb2dyYW0gdGhlc2UgaW1tZWRp YXRlbHkuCisJCSAqLworCQlkZXZfcHJpdi0+ZGlzcGxheS5jb21wdXRlX2ludGVybWVkaWF0ZV93 bShjcnRjLT5kZXYsCisJCQkJCQkJICBwaXBlX2NvbmZpZywKKwkJCQkJCQkgIG9sZF9waXBlX2Nv bmZpZyk7CiAJfQogCiAJcmV0dXJuIGludGVsX2F0b21pY19zZXR1cF9zY2FsZXJzKGRldiwgaW50 ZWxfY3J0YywgcGlwZV9jb25maWcpOwpAQCAtMTM3ODksOCArMTM4MDIsMjUgQEAgc3RhdGljIHZv aWQgaW50ZWxfYmVnaW5fY3J0Y19jb21taXQoc3RydWN0IGRybV9jcnRjICpjcnRjKQogCWlmICgh bmVlZHNfbW9kZXNldChjcnRjLT5zdGF0ZSkpCiAJCWludGVsX3ByZV9wbGFuZV91cGRhdGUoaW50 ZWxfY3J0Yyk7CiAKLQlpZiAoaW50ZWxfY3J0Yy0+YXRvbWljLnVwZGF0ZV93bV9wcmUpCisJLyoK KwkgKiBGb3IgcGxhdGZvcm1zIHRoYXQgc3VwcG9ydCBhdG9taWMgd2F0ZXJtYXJrcywgcHJvZ3Jh bSB0aGUgJ3BlbmRpbmcnCisJICogd2F0ZXJtYXJrcyBpbW1lZGlhdGVseS4gIE9uIHByZS1nZW45 IHBsYXRmb3JtcywgdGhlc2Ugd2lsbCBiZSB0aGUKKwkgKiBpbnRlcm1lZGlhdGUgdmFsdWVzIHRo YXQgYXJlIHNhZmUgZm9yIGJvdGggcHJlLSBhbmQgcG9zdC0gdmJsYW5rOworCSAqIHdoZW4gdmJs YW5rIGhhcHBlbnMsIHRoZSAncGVuZGluZycgdmFsdWVzIHdpbGwgYmUgc2V0IHRvIHRoZSBmaW5h bAorCSAqICd0YXJnZXQnIHZhbHVlcyBhbmQgd2UnbGwgZG8gdGhpcyBhZ2FpbiB0byBnZXQgdGhl IG9wdGltYWwKKwkgKiB3YXRlcm1hcmtzLiAgRm9yIGdlbjkrIHBsYXRmb3JtcywgdGhlIHZhbHVl cyB3ZSBwcm9ncmFtIGhlcmUgd2lsbCBiZQorCSAqIHRoZSBmaW5hbCB0YXJnZXQgdmFsdWVzIHdo aWNoIHdpbGwgZ2V0IGF1dG9tYXRpY2FsbHkgbGF0Y2hlZCBhdAorCSAqIHZibGFuayB0aW1lOyBu byBmdXJ0aGVyIHByb2dyYW1taW5nIHdpbGwgYmUgbmVjZXNzYXJ5LgorCSAqCisJICogSWYgYSBw bGF0Zm9ybSBoYXNuJ3QgYmVlbiB0cmFuc2l0aW9uZWQgdG8gYXRvbWljIHdhdGVybWFya3MgeWV0 LAorCSAqIHdlJ2xsIGNvbnRpbnVlIHRvIHVwZGF0ZSB3YXRlcm1hcmtzIHRoZSBvbGQgd2F5LCBp ZiBmbGFncyB0ZWxsCisJICogdXMgdG8uCisJICovCisJaWYgKEhBU19BVE9NSUNfV00oZGV2X3By aXYpKSB7CisJCWRldl9wcml2LT5kaXNwbGF5LnByb2dyYW1fd2F0ZXJtYXJrcyhkZXZfcHJpdik7 CisJfSBlbHNlIGlmIChpbnRlbF9jcnRjLT5hdG9taWMudXBkYXRlX3dtX3ByZSkgewogCQlpbnRl bF91cGRhdGVfd2F0ZXJtYXJrcyhjcnRjKTsKKwl9CiAKIAlpbnRlbF9ydW50aW1lX3BtX2dldChk ZXZfcHJpdik7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5o IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKaW5kZXggNzc1ZTNkMC4uN2JjNGU4 MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKQEAgLTM0Myw2ICszNDMsMTEgQEAgc3RydWN0 IHNrbF9waXBlX3dtIHsKIAl1aW50MzJfdCBsaW5ldGltZTsKIH07CiAKK3VuaW9uIHBpcGVfd20g eworCXN0cnVjdCBpbnRlbF9waXBlX3dtIGlsazsKKwlzdHJ1Y3Qgc2tsX3BpcGVfd20gc2tsOwor fTsKKwogc3RydWN0IGludGVsX2NydGNfc3RhdGUgewogCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSBi YXNlOwogCkBAIC00ODEsMTYgKzQ4NiwyMSBAQCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSB7CiAK IAlzdHJ1Y3QgewogCQkvKgotCQkgKiBmaW5hbCB3YXRlcm1hcmtzLCBwcm9ncmFtbWVkIHBvc3Qt dmJsYW5rIHdoZW4gdGhpcyBzdGF0ZQotCQkgKiBpcyBjb21taXR0ZWQKKwkJICogZmluYWwsIHRh cmdldCB3YXRlcm1hcmtzIGZvciBzdGF0ZTsgb24gcHJlLWdlbjkgcGxhdGZvcm1zLAorCQkgKiB0 aGlzIG1pZ2h0IG5vdCBoYXZlIGJlZW4gcHJvZ3JhbW1lZCB5ZXQgaWYgYSB2YmxhbmsgaGFzbid0 CisJCSAqIGhhcHBlbmVkIHNpbmNlIHRoaXMgc3RhdGUgd2FzIGNvbW1pdHRlZAorCQkgKi8KKwkJ dW5pb24gcGlwZV93bSB0YXJnZXQ7CisKKwkJLyoKKwkJICogY3VycmVudGx5IHByb2dyYW1tZWQg d2F0ZXJtYXJrOyBvbiBwcmUtZ2VuOSwgdGhpcyB3aWxsIGJlCisJCSAqIHRoZSBpbnRlcm1lZGlh dGUgdmFsdWVzIGJlZm9yZSB2YmxhbmsgdGhlbiBzd2l0Y2ggdG8gbWF0Y2gKKwkJICogJ3Rhcmdl dCcgYWZ0ZXIgdmJsYW5rIGZpcmVzKQogCQkgKi8KLQkJdW5pb24gewotCQkJc3RydWN0IGludGVs X3BpcGVfd20gaWxrOwotCQkJc3RydWN0IHNrbF9waXBlX3dtIHNrbDsKLQkJfSBhY3RpdmU7CisJ CXVuaW9uIHBpcGVfd20gYWN0aXZlOwogCi0JCS8qIGFsbG93IEN4U1Igb24gdGhpcyBwaXBlICov Ci0JCWJvb2wgY3hzcl9hbGxvd2VkOworICAgICAgICAgICAgICAgLyogYWxsb3cgQ3hTUiBvbiB0 aGlzIHBpcGUgKi8KKyAgICAgICAgICAgICAgIGJvb2wgY3hzcl9hbGxvd2VkOwogCX0gd207CiB9 OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwppbmRleCBjNmU3MzVmLi43OTQyYmIwIDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3BtLmMKQEAgLTIzMzgsNiArMjMzOCwyNCBAQCBzdGF0aWMgdm9pZCBpbGtf Y29tcHV0ZV93bV9jb25maWcoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAl9CiB9CiAKK3N0YXRp YyBib29sIGlsa192YWxpZGF0ZV9waXBlX3dtKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCisJCQkJ IHN0cnVjdCBpbnRlbF93bV9jb25maWcgKmNvbmZpZywKKwkJCQkgc3RydWN0IGludGVsX3BpcGVf d20gKnBpcGVfd20pCit7CisJc3RydWN0IGlsa193bV9tYXhpbXVtcyBtYXg7CisKKwkvKiBMUDAg d2F0ZXJtYXJrcyBhbHdheXMgdXNlIDEvMiBEREIgcGFydGl0aW9uaW5nICovCisJaWxrX2NvbXB1 dGVfd21fbWF4aW11bXMoZGV2LCAwLCBjb25maWcsIElOVEVMX0REQl9QQVJUXzFfMiwgJm1heCk7 CisKKwkvKiBBdCBsZWFzdCBMUDAgbXVzdCBiZSB2YWxpZCAqLworCWlmICghaWxrX3ZhbGlkYXRl X3dtX2xldmVsKDAsICZtYXgsICZwaXBlX3dtLT53bVswXSkpIHsKKwkJRFJNX0RFQlVHX0tNUygi TFAwIHdhdGVybWFyayBpbnZhbGlkXG4iKTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKworCXJldHVy biB0cnVlOworfQorCiAvKiBDb21wdXRlIG5ldyB3YXRlcm1hcmtzIGZvciB0aGUgcGlwZSAqLwog c3RhdGljIGludCBpbGtfY29tcHV0ZV9waXBlX3dtKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAkJ CSAgICAgICBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCkBAIC0yMzY2LDcgKzIzODQs NyBAQCBzdGF0aWMgaW50IGlsa19jb21wdXRlX3BpcGVfd20oc3RydWN0IGRybV9jcnRjICpjcnRj LAogCWVsc2UKIAkJY3N0YXRlID0gdG9faW50ZWxfY3J0Y19zdGF0ZShjcyk7CiAKLQlwaXBlX3dt ID0gJmNzdGF0ZS0+d20uYWN0aXZlLmlsazsKKwlwaXBlX3dtID0gJmNzdGF0ZS0+d20udGFyZ2V0 LmlsazsKIAogCWZvcl9lYWNoX2ludGVsX3BsYW5lX29uX2NydGMoZGV2LCBpbnRlbF9jcnRjLCBp bnRlbF9wbGFuZSkgewogCQlwcyA9IGRybV9hdG9taWNfZ2V0X3BsYW5lX3N0YXRlKHN0YXRlLApA QCAtMjQwNSwxMiArMjQyMyw4IEBAIHN0YXRpYyBpbnQgaWxrX2NvbXB1dGVfcGlwZV93bShzdHJ1 Y3QgZHJtX2NydGMgKmNydGMsCiAJaWYgKElTX0hBU1dFTEwoZGV2KSB8fCBJU19CUk9BRFdFTEwo ZGV2KSkKIAkJcGlwZV93bS0+bGluZXRpbWUgPSBoc3dfY29tcHV0ZV9saW5ldGltZV93bShkZXYs IGNydGMpOwogCi0JLyogTFAwIHdhdGVybWFya3MgYWx3YXlzIHVzZSAxLzIgRERCIHBhcnRpdGlv bmluZyAqLwotCWlsa19jb21wdXRlX3dtX21heGltdW1zKGRldiwgMCwgJmNvbmZpZywgSU5URUxf RERCX1BBUlRfMV8yLCAmbWF4KTsKLQotCS8qIEF0IGxlYXN0IExQMCBtdXN0IGJlIHZhbGlkICov Ci0JaWYgKCFpbGtfdmFsaWRhdGVfd21fbGV2ZWwoMCwgJm1heCwgJnBpcGVfd20tPndtWzBdKSkK LQkJcmV0dXJuIC1FSU5WQUw7CisJaWYgKCFpbGtfdmFsaWRhdGVfcGlwZV93bShkZXYsICZjb25m aWcsIHBpcGVfd20pKQorCQlyZXR1cm4gZmFsc2U7CiAKIAlpbGtfY29tcHV0ZV93bV9yZWdfbWF4 aW11bXMoZGV2LCAxLCAmbWF4KTsKIApAQCAtMjQzNSw2ICsyNDQ5LDQwIEBAIHN0YXRpYyBpbnQg aWxrX2NvbXB1dGVfcGlwZV93bShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiB9CiAKIC8qCisgKiBC dWlsZCBhIHNldCBvZiAnaW50ZXJtZWRpYXRlJyB3YXRlcm1hcmsgdmFsdWVzIHRoYXQgc2F0aXNm eSBib3RoIHRoZSBvbGQKKyAqIHN0YXRlIGFuZCB0aGUgbmV3IHN0YXRlLiAgVGhlc2UgY2FuIGJl IHByb2dyYW1tZWQgdG8gdGhlIGhhcmR3YXJlCisgKiBpbW1lZGlhdGVseS4KKyAqLwordm9pZCBp bGtfY29tcHV0ZV9pbnRlcm1lZGlhdGVfd20oc3RydWN0IGRybV9kZXZpY2UgKmRldiwKKwkJCQkg c3RydWN0IGludGVsX2NydGNfc3RhdGUgKm5ld3N0YXRlLAorCQkJCSBjb25zdCBzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqb2xkc3RhdGUpCit7CisJc3RydWN0IGludGVsX3BpcGVfd20gKmEgPSAm bmV3c3RhdGUtPndtLmFjdGl2ZS5pbGs7CisJY29uc3Qgc3RydWN0IGludGVsX3BpcGVfd20gKmIg PSAmb2xkc3RhdGUtPndtLmFjdGl2ZS5pbGs7CisJaW50IGxldmVsLCBtYXhfbGV2ZWwgPSBpbGtf d21fbWF4X2xldmVsKGRldik7CisKKwkvKgorCSAqIFN0YXJ0IHdpdGggdGhlIGZpbmFsLCB0YXJn ZXQgd2F0ZXJtYXJrcywgdGhlbiBjb21iaW5lIHdpdGggdGhlCisJICogY3VycmVudCBzdGF0ZSdz IHdhdGVybWFya3MuCisJICovCisJKmEgPSBuZXdzdGF0ZS0+d20udGFyZ2V0LmlsazsKKwlhLT5w aXBlX2VuYWJsZWQgfD0gYi0+cGlwZV9lbmFibGVkOworCWEtPnNwcml0ZXNfZW5hYmxlZCB8PSBi LT5zcHJpdGVzX2VuYWJsZWQ7CisJYS0+c3ByaXRlc19zY2FsZWQgfD0gYi0+c3ByaXRlc19zY2Fs ZWQ7CisKKwlmb3IgKGxldmVsID0gMDsgbGV2ZWwgPD0gbWF4X2xldmVsOyBsZXZlbCsrKSB7CisJ CXN0cnVjdCBpbnRlbF93bV9sZXZlbCAqYV93bSA9ICZhLT53bVtsZXZlbF07CisJCWNvbnN0IHN0 cnVjdCBpbnRlbF93bV9sZXZlbCAqYl93bSA9ICZiLT53bVtsZXZlbF07CisKKwkJYV93bS0+ZW5h YmxlICY9IGJfd20tPmVuYWJsZTsKKwkJYV93bS0+cHJpX3ZhbCA9IG1heChhX3dtLT5wcmlfdmFs LCBiX3dtLT5wcmlfdmFsKTsKKwkJYV93bS0+c3ByX3ZhbCA9IG1heChhX3dtLT5zcHJfdmFsLCBi X3dtLT5zcHJfdmFsKTsKKwkJYV93bS0+Y3VyX3ZhbCA9IG1heChhX3dtLT5jdXJfdmFsLCBiX3dt LT5jdXJfdmFsKTsKKwkJYV93bS0+ZmJjX3ZhbCA9IG1heChhX3dtLT5mYmNfdmFsLCBiX3dtLT5m YmNfdmFsKTsKKwl9Cit9CisKKy8qCiAgKiBNZXJnZSB0aGUgd2F0ZXJtYXJrcyBmcm9tIGFsbCBh Y3RpdmUgcGlwZXMgZm9yIGEgc3BlY2lmaWMgbGV2ZWwuCiAgKi8KIHN0YXRpYyB2b2lkIGlsa19t ZXJnZV93bV9sZXZlbChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LApAQCAtMzYwMSwxMCArMzY0OSwx MCBAQCBzdGF0aWMgYm9vbCBza2xfdXBkYXRlX3BpcGVfd20oc3RydWN0IGRybV9jcnRjICpjcnRj LAogCXNrbF9hbGxvY2F0ZV9waXBlX2RkYihjcnRjLCBjb25maWcsIHBhcmFtcywgZGRiKTsKIAlz a2xfY29tcHV0ZV9waXBlX3dtKGNydGMsIGRkYiwgcGFyYW1zLCBwaXBlX3dtKTsKIAotCWlmICgh bWVtY21wKCZjc3RhdGUtPndtLmFjdGl2ZS5za2wsIHBpcGVfd20sIHNpemVvZigqcGlwZV93bSkp KQorCWlmICghbWVtY21wKCZjc3RhdGUtPndtLnRhcmdldC5za2wsIHBpcGVfd20sIHNpemVvZigq cGlwZV93bSkpKQogCQlyZXR1cm4gZmFsc2U7CiAKLQljc3RhdGUtPndtLmFjdGl2ZS5za2wgPSAq cGlwZV93bTsKKwljc3RhdGUtPndtLnRhcmdldC5za2wgPSAqcGlwZV93bTsKIAogCXJldHVybiB0 cnVlOwogfQpAQCAtMzgyNSw3ICszODczLDcgQEAgc3RhdGljIHZvaWQgc2tsX3BpcGVfd21fZ2V0 X2h3X3N0YXRlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIAlzdHJ1Y3Qgc2tsX3dtX3ZhbHVlcyAq aHcgPSAmZGV2X3ByaXYtPndtLnNrbF9odzsKIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0 YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7CiAJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0 ZSA9IHRvX2ludGVsX2NydGNfc3RhdGUoY3J0Yy0+c3RhdGUpOwotCXN0cnVjdCBza2xfcGlwZV93 bSAqYWN0aXZlID0gJmNzdGF0ZS0+d20uYWN0aXZlLnNrbDsKKwlzdHJ1Y3Qgc2tsX3BpcGVfd20g KmFjdGl2ZSA9ICZjc3RhdGUtPndtLnRhcmdldC5za2w7CiAJZW51bSBwaXBlIHBpcGUgPSBpbnRl bF9jcnRjLT5waXBlOwogCWludCBsZXZlbCwgaSwgbWF4X2xldmVsOwogCXVpbnQzMl90IHRlbXA7 CkBAIC0zODg5LDcgKzM5MzcsNyBAQCBzdGF0aWMgdm9pZCBpbGtfcGlwZV93bV9nZXRfaHdfc3Rh dGUoc3RydWN0IGRybV9jcnRjICpjcnRjKQogCXN0cnVjdCBpbGtfd21fdmFsdWVzICpodyA9ICZk ZXZfcHJpdi0+d20uaHc7CiAJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRl bF9jcnRjKGNydGMpOwogCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUgPSB0b19pbnRl bF9jcnRjX3N0YXRlKGNydGMtPnN0YXRlKTsKLQlzdHJ1Y3QgaW50ZWxfcGlwZV93bSAqYWN0aXZl ID0gJmNzdGF0ZS0+d20uYWN0aXZlLmlsazsKKwlzdHJ1Y3QgaW50ZWxfcGlwZV93bSAqYWN0aXZl ID0gJmNzdGF0ZS0+d20udGFyZ2V0LmlsazsKIAllbnVtIHBpcGUgcGlwZSA9IGludGVsX2NydGMt PnBpcGU7CiAJc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCB3bTBfcGlwZV9yZWdbXSA9IHsKIAkJ W1BJUEVfQV0gPSBXTTBfUElQRUFfSUxLLApAQCAtMzkyOCw2ICszOTc2LDggQEAgc3RhdGljIHZv aWQgaWxrX3BpcGVfd21fZ2V0X2h3X3N0YXRlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIAkJZm9y IChsZXZlbCA9IDA7IGxldmVsIDw9IG1heF9sZXZlbDsgbGV2ZWwrKykKIAkJCWFjdGl2ZS0+d21b bGV2ZWxdLmVuYWJsZSA9IHRydWU7CiAJfQorCisJY3N0YXRlLT53bS5hY3RpdmUuaWxrID0gY3N0 YXRlLT53bS50YXJnZXQuaWxrID0gKmFjdGl2ZTsKIH0KIAogI2RlZmluZSBfRldfV00odmFsdWUs IHBsYW5lKSBcCkBAIC03MDQ4LDYgKzcwOTgsOSBAQCB2b2lkIGludGVsX2luaXRfcG0oc3RydWN0 IGRybV9kZXZpY2UgKmRldikKIAkJICAgICBkZXZfcHJpdi0+d20uc3ByX2xhdGVuY3lbMF0gJiYg ZGV2X3ByaXYtPndtLmN1cl9sYXRlbmN5WzBdKSkgewogCQkJZGV2X3ByaXYtPmRpc3BsYXkudXBk YXRlX3dtID0gaWxrX3VwZGF0ZV93bTsKIAkJCWRldl9wcml2LT5kaXNwbGF5LmNvbXB1dGVfcGlw ZV93bSA9IGlsa19jb21wdXRlX3BpcGVfd207CisJCQlkZXZfcHJpdi0+ZGlzcGxheS5jb21wdXRl X2ludGVybWVkaWF0ZV93bSA9CisJCQkJaWxrX2NvbXB1dGVfaW50ZXJtZWRpYXRlX3dtOworCQkJ ZGV2X3ByaXYtPmRpc3BsYXkucHJvZ3JhbV93YXRlcm1hcmtzID0gaWxrX3Byb2dyYW1fd2F0ZXJt YXJrczsKIAkJfSBlbHNlIHsKIAkJCURSTV9ERUJVR19LTVMoIkZhaWxlZCB0byByZWFkIGRpc3Bs YXkgcGxhbmUgbGF0ZW5jeS4gIgogCQkJCSAgICAgICJEaXNhYmxlIEN4U1JcbiIpOwotLSAKMi4x LjQKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVs LWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==