From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matt Roper Subject: [PATCH 14/14] drm/i915: Add two-stage ILK-style watermark programming (v4) Date: Mon, 14 Sep 2015 19:19:30 -0700 Message-ID: <1442283570-26824-15-git-send-email-matthew.d.roper@intel.com> References: <1442283570-26824-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 mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id EAFB56E985 for ; Mon, 14 Sep 2015 19:20:07 -0700 (PDT) In-Reply-To: <1442283570-26824-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 SW4gYWRkaXRpb24gdG8gY2FsY3VsYXRpbmcgZmluYWwgd2F0ZXJtYXJrcywgbGV0J3MgYWxzbyBw cmUtY2FsY3VsYXRlIGEKc2V0IG9mIGludGVybWVkaWF0ZSB3YXRlcm1hcmsgdmFsdWVzIGF0IGF0 b21pYyBjaGVjayB0aW1lLiAgVGhlc2UKaW50ZXJtZWRpYXRlIHdhdGVybWFya3MgYXJlIGEgY29t YmluYXRpb24gb2YgdGhlIHdhdGVybWFya3MgZm9yIHRoZSBvbGQKc3RhdGUgYW5kIHRoZSBuZXcg c3RhdGU7IHRoZXkgc2hvdWxkIHNhdGlzZnkgdGhlIHJlcXVpcmVtZW50cyBvZiBib3RoCnN0YXRl cyB3aGljaCBtZWFucyB0aGV5IGNhbiBiZSBwcm9ncmFtbWVkIGltbWVkaWF0ZWx5IHdoZW4gd2Ug Y29tbWl0IHRoZQphdG9taWMgc3RhdGUgKHdpdGhvdXQgd2FpdGluZyBmb3IgYSB2YmxhbmspLiAg T25jZSB0aGUgdmJsYW5rIGRvZXMKaGFwcGVuLCB3ZSBjYW4gdGhlbiByZS1wcm9ncmFtIHdhdGVy bWFya3MgdG8gdGhlIG1vcmUgb3B0aW1hbCBmaW5hbAp2YWx1ZS4KCnYyOiBTaWduaWZpY2FudCBy ZWJhc2luZy9yZXdyaXRpbmcuCgp2MzoKIC0gTW92ZSAnbmVlZF9wb3N0dmJsX3VwZGF0ZScgZmxh ZyB0byBDUlRDIHN0YXRlIChEYW5pZWwpCiAtIERvbid0IGZvcmdldCB0byBjaGVjayBpbnRlcm1l ZGlhdGUgd2F0ZXJtYXJrIHZhbHVlcyBmb3IgdmFsaWRpdHkKICAgKE1hYXJ0ZW4pCiAtIERvbid0 IGR1ZSBhc3luYyB3YXRlcm1hcmsgb3B0aW1pemF0aW9uOyBqdXN0IGRvIGl0IGF0IHRoZSBlbmQg b2YgdGhlCiAgIGF0b21pYyB0cmFuc2FjdGlvbiwgYWZ0ZXIgd2FpdGluZyBmb3IgdmJsYW5rcy4g IFdlIGRvIHdhbnQgaXQgdG8gYmUKICAgYXN5bmMgZXZlbnR1YWxseSwgYnV0IGFkZGluZyB0aGF0 IG5vdyB3aWxsIGNhdXNlIG1vcmUgdHJvdWJsZSBmb3IKICAgTWFhcnRlbidzIGluLXByb2dyZXNz IHdvcmsuICAoTWFhcnRlbikKIC0gRG9uJ3QgYWxsb2NhdGUgc3BhY2UgaW4gY3J0Y19zdGF0ZSBm b3IgaW50ZXJtZWRpYXRlIHdhdGVybWFya3Mgb24KICAgcGxhdGZvcm1zIHRoYXQgZG9uJ3QgbmVl ZCBpdCAoZ2VuOSspLgogLSBNb3ZlIFdhQ3hTUkRpc2FibGVkRm9yU3ByaXRlU2NhbGluZzppdmIg aW50byBpbnRlbF9iZWdpbl9jcnRjX2NvbW1pdAogICBub3cgdGhhdCBpbGtfdXBkYXRlX3dtIGlz IGdvbmUuCgp2NDoKIC0gQWRkIGEgd21fbXV0ZXggdG8gY292ZXIgdXBkYXRlcyB0byBpbnRlbF9j cnRjLT5hY3RpdmUgYW5kIHRoZQogICBuZWVkX3Bvc3R2YmxfdXBkYXRlIGZsYWcuICBTaW5jZSB3 ZSBkb24ndCBoYXZlIGFzeW5jIHlldCBpdCBpc24ndAogICB0ZXJyaWJseSBpbXBvcnRhbnQgeWV0 LCBidXQgbWlnaHQgYXMgd2VsbCBhZGQgaXQgbm93LgogLSBDaGFuZ2UgaW50ZXJmYWNlIHRvIHBy b2dyYW0gd2F0ZXJtYXJrcy4gIFBsYXRmb3JtcyB3aWxsIG5vdyBleHBvc2UKICAgLmluaXRpYWxf d2F0ZXJtYXJrcygpIGFuZCAub3B0aW1pemVfd2F0ZXJtYXJrcygpIGZ1bmN0aW9ucyB0byBkbwog ICB3YXRlcm1hcmsgcHJvZ3JhbW1pbmcuICBUaGVzZSBzaG91bGQgbG9jayB3bV9tdXRleCwgY29w eSB0aGUKICAgYXBwcm9wcmlhdGUgc3RhdGUgdmFsdWVzIGludG8gaW50ZWxfY3J0Yy0+YWN0aXZl LCBhbmQgdGhlbiBjYWxsCiAgIHRoZSBpbnRlcm5hbCBwcm9ncmFtIHdhdGVybWFya3MgZnVuY3Rp b24uCgpTaWduZWQtb2ZmLWJ5OiBNYXR0IFJvcGVyIDxtYXR0aGV3LmQucm9wZXJAaW50ZWwuY29t PgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICB8ICAgNSArKwogZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljLmMgIHwgICAxICsKIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rpc3BsYXkuYyB8ICA3NyArKysrKysrKysrKysrKysrKy0KIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICAgICB8ICAyNSArKysrKy0KIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3BtLmMgICAgICB8IDE1NCArKysrKysrKysrKysrKysrKysrKysrKysrLS0t LS0tLS0tLQogNSBmaWxlcyBjaGFuZ2VkLCAyMTMgaW5zZXJ0aW9ucygrKSwgNDkgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXggZThlZjMyOC4uNmQwOGQ0NyAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2Rydi5oCkBAIC02MjksNiArNjI5LDExIEBAIHN0cnVjdCBkcm1faTkxNV9k aXNwbGF5X2Z1bmNzIHsKIAkJCSAgc3RydWN0IGRwbGwgKmJlc3RfY2xvY2spOwogCWludCAoKmNv bXB1dGVfcGlwZV93bSkoc3RydWN0IGludGVsX2NydGMgKmNydGMsCiAJCQkgICAgICAgc3RydWN0 IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKTsKKwlpbnQgKCpjb21wdXRlX2ludGVybWVkaWF0ZV93 bSkoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKKwkJCQkgICAgICAgc3RydWN0IGludGVsX2NydGMg KmludGVsX2NydGMsCisJCQkJICAgICAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpuZXdzdGF0 ZSk7CisJdm9pZCAoKmluaXRpYWxfd2F0ZXJtYXJrcykoc3RydWN0IGludGVsX2NydGNfc3RhdGUg KmNzdGF0ZSk7CisJdm9pZCAoKm9wdGltaXplX3dhdGVybWFya3MpKHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpjc3RhdGUpOwogCXZvaWQgKCp1cGRhdGVfd20pKHN0cnVjdCBkcm1fY3J0YyAqY3J0 Yyk7CiAJaW50ICgqbW9kZXNldF9jYWxjX2NkY2xrKShzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAq c3RhdGUpOwogCXZvaWQgKCptb2Rlc2V0X2NvbW1pdF9jZGNsaykoc3RydWN0IGRybV9hdG9taWNf c3RhdGUgKnN0YXRlKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F0 b21pYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljLmMKaW5kZXggMDViMTIw My4uMjg2MzBmOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWlj LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYXRvbWljLmMKQEAgLTk1LDYgKzk1 LDcgQEAgaW50ZWxfY3J0Y19kdXBsaWNhdGVfc3RhdGUoc3RydWN0IGRybV9jcnRjICpjcnRjKQog CiAJY3J0Y19zdGF0ZS0+dXBkYXRlX3BpcGUgPSBmYWxzZTsKIAljcnRjX3N0YXRlLT5kaXNhYmxl X2xwX3dtID0gZmFsc2U7CisJY3J0Y19zdGF0ZS0+d20ubmVlZF9wb3N0dmJsX3VwZGF0ZSA9IGZh bHNlOwogCiAJcmV0dXJuICZjcnRjX3N0YXRlLT5iYXNlOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZGlzcGxheS5jCmluZGV4IDNkNDExYzIuLjA5MDk0ODUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kaXNwbGF5LmMKQEAgLTExNjEzLDYgKzExNjEzLDEyIEBAIGludCBpbnRlbF9wbGFuZV9h dG9taWNfY2FsY19jaGFuZ2VzKHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAkJ aW50ZWxfY3J0Yy0+YXRvbWljLnVwZGF0ZV93bV9wcmUgPSB0cnVlOwogCX0KIAorCS8qIFByZS1n ZW45IHBsYXRmb3JtcyBuZWVkIHR3by1zdGVwIHdhdGVybWFyayB1cGRhdGVzICovCisJaWYgKChp bnRlbF9jcnRjLT5hdG9taWMudXBkYXRlX3dtX3ByZSB8fCBpbnRlbF9jcnRjLT5hdG9taWMudXBk YXRlX3dtX3Bvc3QpICYmCisJICAgIElOVEVMX0lORk8oZGV2KS0+Z2VuIDwgOSAmJgorCSAgICBk ZXZfcHJpdi0+ZGlzcGxheS5vcHRpbWl6ZV93YXRlcm1hcmtzKQorCQl0b19pbnRlbF9jcnRjX3N0 YXRlKGNydGNfc3RhdGUpLT53bS5uZWVkX3Bvc3R2YmxfdXBkYXRlID0gdHJ1ZTsKKwogCWlmICh2 aXNpYmxlIHx8IHdhc192aXNpYmxlKQogCQlpbnRlbF9jcnRjLT5hdG9taWMuZmJfYml0cyB8PQog CQkJdG9faW50ZWxfcGxhbmUocGxhbmUpLT5mcm9udGJ1ZmZlcl9iaXQ7CkBAIC0xMTc3MCw4ICsx MTc3NiwyOCBAQCBzdGF0aWMgaW50IGludGVsX2NydGNfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1f Y3J0YyAqY3J0YywKIAlyZXQgPSAwOwogCWlmIChkZXZfcHJpdi0+ZGlzcGxheS5jb21wdXRlX3Bp cGVfd20pIHsKIAkJcmV0ID0gZGV2X3ByaXYtPmRpc3BsYXkuY29tcHV0ZV9waXBlX3dtKGludGVs X2NydGMsIHN0YXRlKTsKLQkJaWYgKHJldCkKKwkJaWYgKHJldCkgeworCQkJRFJNX0RFQlVHX0tN UygiVGFyZ2V0IHBpcGUgd2F0ZXJtYXJrcyBhcmUgaW52YWxpZFxuIik7CisJCQlyZXR1cm4gcmV0 OworCQl9CisJfQorCisJaWYgKGRldl9wcml2LT5kaXNwbGF5LmNvbXB1dGVfaW50ZXJtZWRpYXRl X3dtKSB7CisJCWlmIChXQVJOX09OKCFkZXZfcHJpdi0+ZGlzcGxheS5jb21wdXRlX3BpcGVfd20p KQorCQkJcmV0dXJuIDA7CisKKwkJLyoKKwkJICogQ2FsY3VsYXRlICdpbnRlcm1lZGlhdGUnIHdh dGVybWFya3MgdGhhdCBzYXRpc2Z5IGJvdGggdGhlCisJCSAqIG9sZCBzdGF0ZSBhbmQgdGhlIG5l dyBzdGF0ZS4gIFdlIGNhbiBwcm9ncmFtIHRoZXNlCisJCSAqIGltbWVkaWF0ZWx5LgorCQkgKi8K KwkJcmV0ID0gZGV2X3ByaXYtPmRpc3BsYXkuY29tcHV0ZV9pbnRlcm1lZGlhdGVfd20oY3J0Yy0+ ZGV2LAorCQkJCQkJCQlpbnRlbF9jcnRjLAorCQkJCQkJCQlwaXBlX2NvbmZpZyk7CisJCWlmIChy ZXQpIHsKKwkJCURSTV9ERUJVR19LTVMoIk5vIHZhbGlkIGludGVybWVkaWF0ZSBwaXBlIHdhdGVy bWFya3MgYXJlIHBvc3NpYmxlXG4iKTsKIAkJCXJldHVybiByZXQ7CisJCX0KIAl9CiAKIAlpZiAo SU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOSkgewpAQCAtMTMxMjQsNiArMTMxNTAsNyBAQCBzdGF0 aWMgaW50IGludGVsX2F0b21pY19jb21taXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwogCXN0cnVj dCBkcm1fY3J0YyAqY3J0YzsKIAlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGU7CisJ c3RydWN0IGludGVsX2NydGNfc3RhdGUgKmludGVsX2NzdGF0ZTsKIAlpbnQgcmV0ID0gMDsKIAlp bnQgaTsKIAlib29sIGFueV9tcyA9IGZhbHNlOwpAQCAtMTMyMDIsNiArMTMyMjksMjAgQEAgc3Rh dGljIGludCBpbnRlbF9hdG9taWNfY29tbWl0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJLyog RklYTUU6IGFkZCBzdWJwaXhlbCBvcmRlciAqLwogCiAJZHJtX2F0b21pY19oZWxwZXJfd2FpdF9m b3JfdmJsYW5rcyhkZXYsIHN0YXRlKTsKKworCS8qCisJICogTm93IHRoYXQgdGhlIHZibGFuayBo YXMgcGFzc2VkLCB3ZSBjYW4gZ28gYWhlYWQgYW5kIHByb2dyYW0gdGhlCisJICogb3B0aW1hbCB3 YXRlcm1hcmtzIG9uIHBsYXRmb3JtcyB0aGF0IG5lZWQgdHdvLXN0ZXAgd2F0ZXJtYXJrCisJICog cHJvZ3JhbW1pbmcuCisJICoKKwkgKiBUT0RPOiBNb3ZlIHRoaXMgKGFuZCBvdGhlciBjbGVhbnVw KSB0byBhbiBhc3luYyB3b3JrZXIgZXZlbnR1YWxseS4KKwkgKi8KKwlmb3JfZWFjaF9jcnRjX2lu X3N0YXRlKHN0YXRlLCBjcnRjLCBjcnRjX3N0YXRlLCBpKSB7CisJCWludGVsX2NzdGF0ZSA9IHRv X2ludGVsX2NydGNfc3RhdGUoY3J0Yy0+c3RhdGUpOworCisJCWRldl9wcml2LT5kaXNwbGF5Lm9w dGltaXplX3dhdGVybWFya3MoaW50ZWxfY3N0YXRlKTsKKwl9CisKIAlkcm1fYXRvbWljX2hlbHBl cl9jbGVhbnVwX3BsYW5lcyhkZXYsIHN0YXRlKTsKIAogCWlmIChhbnlfbXMpCkBAIC0xMzUzMCwx MyArMTM1NzEsNDQgQEAgc3RhdGljIHZvaWQgaW50ZWxfYmVnaW5fY3J0Y19jb21taXQoc3RydWN0 IGRybV9jcnRjICpjcnRjLAogCQkJCSAgICBzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKm9sZF9jcnRj X3N0YXRlKQogewogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7CisJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwogCXN0cnVjdCBpbnRl bF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKKwlzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqY3N0YXRlID0gdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjLT5zdGF0ZSk7CiAJ c3RydWN0IGludGVsX2NydGNfc3RhdGUgKm9sZF9pbnRlbF9zdGF0ZSA9CiAJCXRvX2ludGVsX2Ny dGNfc3RhdGUob2xkX2NydGNfc3RhdGUpOwogCWJvb2wgbW9kZXNldCA9IG5lZWRzX21vZGVzZXQo Y3J0Yy0+c3RhdGUpOwogCi0JaWYgKGludGVsX2NydGMtPmF0b21pYy51cGRhdGVfd21fcHJlKQor CS8qCisJICogSVZCIHdvcmthcm91bmQ6IG11c3QgZGlzYWJsZSBsb3cgcG93ZXIgd2F0ZXJtYXJr cyBmb3IgYXQgbGVhc3QKKwkgKiBvbmUgZnJhbWUgYmVmb3JlIGVuYWJsaW5nIHNjYWxpbmcuICBM UCB3YXRlcm1hcmtzIGNhbiBiZSByZS1lbmFibGVkCisJICogd2hlbiBzY2FsaW5nIGlzIGRpc2Fi bGVkLgorCSAqCisJICogV2FDeFNSRGlzYWJsZWRGb3JTcHJpdGVTY2FsaW5nOml2YgorCSAqLwor CWlmIChjc3RhdGUtPmRpc2FibGVfbHBfd20pIHsKKwkJaWxrX2Rpc2FibGVfbHBfd20oY3J0Yy0+ ZGV2KTsKKwkJaW50ZWxfd2FpdF9mb3JfdmJsYW5rKGNydGMtPmRldiwgaW50ZWxfY3J0Yy0+cGlw ZSk7CisJfQorCisJLyoKKwkgKiBGb3IgcGxhdGZvcm1zIHRoYXQgc3VwcG9ydCBhdG9taWMgd2F0 ZXJtYXJrcywgcHJvZ3JhbSB0aGUKKwkgKiAnaW50ZXJtZWRpYXRlJyB3YXRlcm1hcmtzIGltbWVk aWF0ZWx5LiAgT24gcHJlLWdlbjkgcGxhdGZvcm1zLCB0aGVzZQorCSAqIHdpbGwgYmUgdGhlIGlu dGVybWVkaWF0ZSB2YWx1ZXMgdGhhdCBhcmUgc2FmZSBmb3IgYm90aCBwcmUtIGFuZAorCSAqIHBv c3QtIHZibGFuazsgd2hlbiB2YmxhbmsgaGFwcGVucywgdGhlICdhY3RpdmUnIHZhbHVlcyB3aWxs IGJlIHNldAorCSAqIHRvIHRoZSBmaW5hbCAndGFyZ2V0JyB2YWx1ZXMgYW5kIHdlJ2xsIGRvIHRo aXMgYWdhaW4gdG8gZ2V0IHRoZQorCSAqIG9wdGltYWwgd2F0ZXJtYXJrcy4gIEZvciBnZW45KyBw bGF0Zm9ybXMsIHRoZSB2YWx1ZXMgd2UgcHJvZ3JhbSBoZXJlCisJICogd2lsbCBiZSB0aGUgZmlu YWwgdGFyZ2V0IHZhbHVlcyB3aGljaCB3aWxsIGdldCBhdXRvbWF0aWNhbGx5IGxhdGNoZWQKKwkg KiBhdCB2YmxhbmsgdGltZTsgbm8gZnVydGhlciBwcm9ncmFtbWluZyB3aWxsIGJlIG5lY2Vzc2Fy eS4KKwkgKgorCSAqIElmIGEgcGxhdGZvcm0gaGFzbid0IGJlZW4gdHJhbnNpdGlvbmVkIHRvIGF0 b21pYyB3YXRlcm1hcmtzIHlldCwKKwkgKiB3ZSdsbCBjb250aW51ZSB0byB1cGRhdGUgd2F0ZXJt YXJrcyB0aGUgb2xkIHdheSwgaWYgZmxhZ3MgdGVsbAorCSAqIHVzIHRvLgorCSAqLworCWlmIChk ZXZfcHJpdi0+ZGlzcGxheS5pbml0aWFsX3dhdGVybWFya3MgIT0gTlVMTCkgeworCQlkZXZfcHJp di0+ZGlzcGxheS5pbml0aWFsX3dhdGVybWFya3MoY3N0YXRlKTsKKwl9IGVsc2UgaWYgKGludGVs X2NydGMtPmF0b21pYy51cGRhdGVfd21fcHJlKSB7CiAJCWludGVsX3VwZGF0ZV93YXRlcm1hcmtz KGNydGMpOworCX0KIAogCS8qIFBlcmZvcm0gdmJsYW5rIGV2YXNpb24gYXJvdW5kIGNvbW1pdCBv cGVyYXRpb24gKi8KIAlpZiAoY3J0Yy0+c3RhdGUtPmFjdGl2ZSkKQEAgLTEzODc4LDYgKzEzOTUw LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfY3J0Y19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IGludCBwaXBlKQogCWludGVsX2NydGMtPmN1cnNvcl9zaXplID0gfjA7CiAKIAlpbnRlbF9jcnRj LT53bS5jeHNyX2FsbG93ZWQgPSB0cnVlOworCW11dGV4X2luaXQoJmludGVsX2NydGMtPndtLndt X211dGV4KTsKIAogCUJVR19PTihwaXBlID49IEFSUkFZX1NJWkUoZGV2X3ByaXYtPnBsYW5lX3Rv X2NydGNfbWFwcGluZykgfHwKIAkgICAgICAgZGV2X3ByaXYtPnBsYW5lX3RvX2NydGNfbWFwcGlu Z1tpbnRlbF9jcnRjLT5wbGFuZV0gIT0gTlVMTCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCmlu ZGV4IGM0MGIwNzkuLjA2NzEwMGQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCkBAIC00ODAs MTMgKzQ4MCwyOSBAQCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSB7CiAKIAlzdHJ1Y3QgewogCQkv KgotCQkgKiBvcHRpbWFsIHdhdGVybWFya3MsIHByb2dyYW1tZWQgcG9zdC12Ymxhbmsgd2hlbiB0 aGlzIHN0YXRlCi0JCSAqIGlzIGNvbW1pdHRlZAorCQkgKiBPcHRpbWFsIHdhdGVybWFya3MsIHBy b2dyYW1tZWQgcG9zdC12Ymxhbmsgd2hlbiB0aGlzIHN0YXRlCisJCSAqIGlzIGNvbW1pdHRlZC4K IAkJICovCiAJCXVuaW9uIHsKIAkJCXN0cnVjdCBpbnRlbF9waXBlX3dtIGlsazsKIAkJCXN0cnVj dCBza2xfcGlwZV93bSBza2w7CiAJCX0gb3B0aW1hbDsKKworCQkvKgorCQkgKiBJbnRlcm1lZGlh dGUgd2F0ZXJtYXJrczsgdGhlc2UgY2FuIGJlIHByb2dyYW1tZWQgaW1tZWRpYXRlbHkKKwkJICog c2luY2UgdGhleSBzYXRpc2Z5IGJvdGggdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiB3ZSdyZQor CQkgKiBzd2l0Y2hpbmcgYXdheSBmcm9tIGFuZCB0aGUgbmV3IGNvbmZpZ3VyYXRpb24gd2UncmUg c3dpdGNoaW5nCisJCSAqIHRvLgorCQkgKi8KKwkJc3RydWN0IGludGVsX3BpcGVfd20gaW50ZXJt ZWRpYXRlOworCisJCS8qCisJCSAqIFBsYXRmb3JtcyB3aXRoIHR3by1zdGVwIHdhdGVybWFyayBw cm9ncmFtbWluZyB3aWxsIG5lZWQgdG8KKwkJICogdXBkYXRlIHdhdGVybWFyayBwcm9ncmFtbWlu ZyBwb3N0LXZibGFuayB0byBzd2l0Y2ggZnJvbSB0aGUKKwkJICogc2FmZSBpbnRlcm1lZGlhdGUg d2F0ZXJtYXJrcyB0byB0aGUgb3B0aW1hbCBmaW5hbAorCQkgKiB3YXRlcm1hcmtzLgorCQkgKi8K KwkJYm9vbCBuZWVkX3Bvc3R2YmxfdXBkYXRlOwogCX0gd207CiB9OwogCkBAIC01NzUsOCArNTkx LDEyIEBAIHN0cnVjdCBpbnRlbF9jcnRjIHsKIAkJCXN0cnVjdCBpbnRlbF9waXBlX3dtIGlsazsK IAkJCXN0cnVjdCBza2xfcGlwZV93bSBza2w7CiAJCX0gYWN0aXZlOworCiAJCS8qIGFsbG93IEN4 U1Igb24gdGhpcyBwaXBlICovCiAJCWJvb2wgY3hzcl9hbGxvd2VkOworCisJCS8qIFByb3RlY3Rz IGFjdGl2ZSBhbmQgbmVlZF9wb3N0dmJsX3VwZGF0ZSAqLworCQlzdHJ1Y3QgbXV0ZXggd21fbXV0 ZXg7CiAJfSB3bTsKIAogCWludCBzY2FubGluZV9vZmZzZXQ7CkBAIC0xNDE4LDYgKzE0MzgsNyBA QCB2b2lkIHNrbF93bV9nZXRfaHdfc3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CiB2b2lk IHNrbF9kZGJfZ2V0X2h3X3N0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwK IAkJCSAgc3RydWN0IHNrbF9kZGJfYWxsb2NhdGlvbiAqZGRiIC8qIG91dCAqLyk7CiB1aW50MzJf dCBpbGtfcGlwZV9waXhlbF9yYXRlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBl X2NvbmZpZyk7Citib29sIGlsa19kaXNhYmxlX2xwX3dtKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp OwogCiAvKiBpbnRlbF9zZHZvLmMgKi8KIGJvb2wgaW50ZWxfc2R2b19pbml0KHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsIHVpbnQzMl90IHNkdm9fcmVnLCBib29sIGlzX3Nkdm9iKTsKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9wbS5jCmluZGV4IGVhZDAzNTkuLjQxYTRkYmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3BtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf cG0uYwpAQCAtMjMyMyw2ICsyMzIzLDI5IEBAIHN0YXRpYyB2b2lkIHNrbF9zZXR1cF93bV9sYXRl bmN5KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJaW50ZWxfcHJpbnRfd21fbGF0ZW5jeShkZXYs ICJHZW45IFBsYW5lIiwgZGV2X3ByaXYtPndtLnNrbF9sYXRlbmN5KTsKIH0KIAorc3RhdGljIGJv b2wgaWxrX3ZhbGlkYXRlX3BpcGVfd20oc3RydWN0IGRybV9kZXZpY2UgKmRldiwKKwkJCQkgc3Ry dWN0IGludGVsX3BpcGVfd20gKnBpcGVfd20pCit7CisJLyogTFAwIHdhdGVybWFyayBtYXhpbXVt cyBkZXBlbmQgb24gdGhpcyBwaXBlIGFsb25lICovCisJY29uc3Qgc3RydWN0IGludGVsX3dtX2Nv bmZpZyBjb25maWcgPSB7CisJCS5udW1fcGlwZXNfYWN0aXZlID0gMSwKKwkJLnNwcml0ZXNfZW5h YmxlZCA9IHBpcGVfd20tPnNwcml0ZXNfZW5hYmxlZCwKKwkJLnNwcml0ZXNfc2NhbGVkID0gcGlw ZV93bS0+c3ByaXRlc19zY2FsZWQsCisJfTsKKwlzdHJ1Y3QgaWxrX3dtX21heGltdW1zIG1heDsK KworCS8qIExQMCB3YXRlcm1hcmtzIGFsd2F5cyB1c2UgMS8yIEREQiBwYXJ0aXRpb25pbmcgKi8K KwlpbGtfY29tcHV0ZV93bV9tYXhpbXVtcyhkZXYsIDAsICZjb25maWcsIElOVEVMX0REQl9QQVJU XzFfMiwgJm1heCk7CisKKwkvKiBBdCBsZWFzdCBMUDAgbXVzdCBiZSB2YWxpZCAqLworCWlmICgh aWxrX3ZhbGlkYXRlX3dtX2xldmVsKDAsICZtYXgsICZwaXBlX3dtLT53bVswXSkpIHsKKwkJRFJN X0RFQlVHX0tNUygiTFAwIHdhdGVybWFyayBpbnZhbGlkXG4iKTsKKwkJcmV0dXJuIGZhbHNlOwor CX0KKworCXJldHVybiB0cnVlOworfQorCiAvKiBDb21wdXRlIG5ldyB3YXRlcm1hcmtzIGZvciB0 aGUgcGlwZSAqLwogc3RhdGljIGludCBpbGtfY29tcHV0ZV9waXBlX3dtKHN0cnVjdCBpbnRlbF9j cnRjICppbnRlbF9jcnRjLAogCQkJICAgICAgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0 ZSkKQEAgLTIzMzcsMTAgKzIzNjAsNiBAQCBzdGF0aWMgaW50IGlsa19jb21wdXRlX3BpcGVfd20o c3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMsCiAJc3RydWN0IGludGVsX3BsYW5lX3N0YXRl ICpzcHJzdGF0ZSA9IE5VTEw7CiAJc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpjdXJzdGF0ZSA9 IE5VTEw7CiAJaW50IGxldmVsLCBtYXhfbGV2ZWwgPSBpbGtfd21fbWF4X2xldmVsKGRldik7Ci0J LyogTFAwIHdhdGVybWFyayBtYXhpbXVtcyBkZXBlbmQgb24gdGhpcyBwaXBlIGFsb25lICovCi0J c3RydWN0IGludGVsX3dtX2NvbmZpZyBjb25maWcgPSB7Ci0JCS5udW1fcGlwZXNfYWN0aXZlID0g MSwKLQl9OwogCXN0cnVjdCBpbGtfd21fbWF4aW11bXMgbWF4OwogCiAJY3N0YXRlID0gaW50ZWxf YXRvbWljX2dldF9jcnRjX3N0YXRlKHN0YXRlLCBpbnRlbF9jcnRjKTsKQEAgLTIzNjMsMjEgKzIz ODIsMTggQEAgc3RhdGljIGludCBpbGtfY29tcHV0ZV9waXBlX3dtKHN0cnVjdCBpbnRlbF9jcnRj ICppbnRlbF9jcnRjLAogCQkJY3Vyc3RhdGUgPSB0b19pbnRlbF9wbGFuZV9zdGF0ZShwcyk7CiAJ fQogCi0JY29uZmlnLnNwcml0ZXNfZW5hYmxlZCA9IHNwcnN0YXRlLT52aXNpYmxlOwotCWNvbmZp Zy5zcHJpdGVzX3NjYWxlZCA9IHNwcnN0YXRlLT52aXNpYmxlICYmCisJcGlwZV93bS0+cGlwZV9l bmFibGVkID0gY3N0YXRlLT5iYXNlLmFjdGl2ZTsKKwlwaXBlX3dtLT5zcHJpdGVzX2VuYWJsZWQg PSBzcHJzdGF0ZS0+dmlzaWJsZTsKKwlwaXBlX3dtLT5zcHJpdGVzX3NjYWxlZCA9IHNwcnN0YXRl LT52aXNpYmxlICYmCiAJCShkcm1fcmVjdF93aWR0aCgmc3Byc3RhdGUtPmRzdCkgIT0gZHJtX3Jl Y3Rfd2lkdGgoJnNwcnN0YXRlLT5zcmMpID4+IDE2IHx8CiAJCWRybV9yZWN0X2hlaWdodCgmc3By c3RhdGUtPmRzdCkgIT0gZHJtX3JlY3RfaGVpZ2h0KCZzcHJzdGF0ZS0+c3JjKSA+PiAxNik7CiAK LQlwaXBlX3dtLT5waXBlX2VuYWJsZWQgPSBjc3RhdGUtPmJhc2UuYWN0aXZlOwotCXBpcGVfd20t PnNwcml0ZXNfZW5hYmxlZCA9IGNvbmZpZy5zcHJpdGVzX2VuYWJsZWQ7Ci0JcGlwZV93bS0+c3By aXRlc19zY2FsZWQgPSBjb25maWcuc3ByaXRlc19zY2FsZWQ7Ci0KIAkvKiBJTEsvU05COiBMUDIr IHdhdGVybWFya3Mgb25seSB3L28gc3ByaXRlcyAqLwogCWlmIChJTlRFTF9JTkZPKGRldiktPmdl biA8PSA2ICYmIHNwcnN0YXRlLT52aXNpYmxlKQogCQltYXhfbGV2ZWwgPSAxOwogCiAJLyogSUxL L1NOQi9JVkI6IExQMSsgd2F0ZXJtYXJrcyBvbmx5IHcvbyBzY2FsaW5nICovCi0JaWYgKGNvbmZp Zy5zcHJpdGVzX3NjYWxlZCkKKwlpZiAocGlwZV93bS0+c3ByaXRlc19zY2FsZWQpCiAJCW1heF9s ZXZlbCA9IDA7CiAKIAlpbGtfY29tcHV0ZV93bV9sZXZlbChkZXZfcHJpdiwgaW50ZWxfY3J0Yywg MCwgY3N0YXRlLApAQCAtMjM4NywxMiArMjQwMyw4IEBAIHN0YXRpYyBpbnQgaWxrX2NvbXB1dGVf cGlwZV93bShzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YywKIAkJcGlwZV93bS0+bGluZXRp bWUgPSBoc3dfY29tcHV0ZV9saW5ldGltZV93bShkZXYsCiAJCQkJCQkJICAgICZpbnRlbF9jcnRj LT5iYXNlKTsKIAotCS8qIExQMCB3YXRlcm1hcmtzIGFsd2F5cyB1c2UgMS8yIEREQiBwYXJ0aXRp b25pbmcgKi8KLQlpbGtfY29tcHV0ZV93bV9tYXhpbXVtcyhkZXYsIDAsICZjb25maWcsIElOVEVM X0REQl9QQVJUXzFfMiwgJm1heCk7Ci0KLQkvKiBBdCBsZWFzdCBMUDAgbXVzdCBiZSB2YWxpZCAq LwotCWlmICghaWxrX3ZhbGlkYXRlX3dtX2xldmVsKDAsICZtYXgsICZwaXBlX3dtLT53bVswXSkp Ci0JCXJldHVybiAtRUlOVkFMOworCWlmICghaWxrX3ZhbGlkYXRlX3BpcGVfd20oZGV2LCBwaXBl X3dtKSkKKwkJcmV0dXJuIGZhbHNlOwogCiAJaWxrX2NvbXB1dGVfd21fcmVnX21heGltdW1zKGRl diwgMSwgJm1heCk7CiAKQEAgLTI0MTcsNiArMjQyOSw1OSBAQCBzdGF0aWMgaW50IGlsa19jb21w dXRlX3BpcGVfd20oc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMsCiB9CiAKIC8qCisgKiBC dWlsZCBhIHNldCBvZiAnaW50ZXJtZWRpYXRlJyB3YXRlcm1hcmsgdmFsdWVzIHRoYXQgc2F0aXNm eSBib3RoIHRoZSBvbGQKKyAqIHN0YXRlIGFuZCB0aGUgbmV3IHN0YXRlLiAgVGhlc2UgY2FuIGJl IHByb2dyYW1tZWQgdG8gdGhlIGhhcmR3YXJlCisgKiBpbW1lZGlhdGVseS4KKyAqLworc3RhdGlj IGludCBpbGtfY29tcHV0ZV9pbnRlcm1lZGlhdGVfd20oc3RydWN0IGRybV9kZXZpY2UgKmRldiwK KwkJCQkgICAgICAgc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMsCisJCQkJICAgICAgIHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpuZXdzdGF0ZSkKK3sKKwlzdHJ1Y3QgaW50ZWxfcGlwZV93 bSAqYSA9ICZuZXdzdGF0ZS0+d20uaW50ZXJtZWRpYXRlOworCXN0cnVjdCBpbnRlbF9waXBlX3dt ICpiID0gJmludGVsX2NydGMtPndtLmFjdGl2ZS5pbGs7CisJaW50IGxldmVsLCBtYXhfbGV2ZWwg PSBpbGtfd21fbWF4X2xldmVsKGRldik7CisKKwkvKgorCSAqIFN0YXJ0IHdpdGggdGhlIGZpbmFs LCB0YXJnZXQgd2F0ZXJtYXJrcywgdGhlbiBjb21iaW5lIHdpdGggdGhlCisJICogY3VycmVudGx5 IGFjdGl2ZSB3YXRlcm1hcmtzIHRvIGdldCB2YWx1ZXMgdGhhdCBhcmUgc2FmZSBib3RoIGJlZm9y ZQorCSAqIGFuZCBhZnRlciB0aGUgdmJsYW5rLgorCSAqLworCSphID0gbmV3c3RhdGUtPndtLm9w dGltYWwuaWxrOworCWEtPnBpcGVfZW5hYmxlZCB8PSBiLT5waXBlX2VuYWJsZWQ7CisJYS0+c3By aXRlc19lbmFibGVkIHw9IGItPnNwcml0ZXNfZW5hYmxlZDsKKwlhLT5zcHJpdGVzX3NjYWxlZCB8 PSBiLT5zcHJpdGVzX3NjYWxlZDsKKworCWZvciAobGV2ZWwgPSAwOyBsZXZlbCA8PSBtYXhfbGV2 ZWw7IGxldmVsKyspIHsKKwkJc3RydWN0IGludGVsX3dtX2xldmVsICphX3dtID0gJmEtPndtW2xl dmVsXTsKKwkJY29uc3Qgc3RydWN0IGludGVsX3dtX2xldmVsICpiX3dtID0gJmItPndtW2xldmVs XTsKKworCQlhX3dtLT5lbmFibGUgJj0gYl93bS0+ZW5hYmxlOworCQlhX3dtLT5wcmlfdmFsID0g bWF4KGFfd20tPnByaV92YWwsIGJfd20tPnByaV92YWwpOworCQlhX3dtLT5zcHJfdmFsID0gbWF4 KGFfd20tPnNwcl92YWwsIGJfd20tPnNwcl92YWwpOworCQlhX3dtLT5jdXJfdmFsID0gbWF4KGFf d20tPmN1cl92YWwsIGJfd20tPmN1cl92YWwpOworCQlhX3dtLT5mYmNfdmFsID0gbWF4KGFfd20t PmZiY192YWwsIGJfd20tPmZiY192YWwpOworCX0KKworCS8qCisJICogV2UgbmVlZCB0byBtYWtl IHN1cmUgdGhhdCB0aGVzZSBtZXJnZWQgd2F0ZXJtYXJrIHZhbHVlcyBhcmUKKwkgKiBhY3R1YWxs eSBhIHZhbGlkIGNvbmZpZ3VyYXRpb24gdGhlbXNlbHZlcy4gIElmIHRoZXkncmUgbm90LAorCSAq IHRoZXJlJ3Mgbm8gc2FmZSB3YXkgdG8gdHJhbnNpdGlvbiBmcm9tIHRoZSBvbGQgc3RhdGUgdG8K KwkgKiB0aGUgbmV3IHN0YXRlLCBzbyB3ZSBuZWVkIHRvIGZhaWwgdGhlIGF0b21pYyB0cmFuc2Fj dGlvbi4KKwkgKi8KKwlpZiAoIWlsa192YWxpZGF0ZV9waXBlX3dtKGRldiwgYSkpCisJCXJldHVy biAtRUlOVkFMOworCisJLyoKKwkgKiBJZiBvdXIgaW50ZXJtZWRpYXRlIFdNIGFyZSBpZGVudGlj YWwgdG8gdGhlIGZpbmFsIFdNLCB0aGVuIHdlIGNhbgorCSAqIG9taXQgdGhlIHBvc3QtdmJsYW5r IHByb2dyYW1taW5nOyBvbmx5IHVwZGF0ZSBpZiBpdCdzIGRpZmZlcmVudC4KKwkgKi8KKwlpZiAo bWVtY21wKGEsICZuZXdzdGF0ZS0+d20ub3B0aW1hbC5pbGssIHNpemVvZiAqYSkgIT0gMCkKKwkJ bmV3c3RhdGUtPndtLm5lZWRfcG9zdHZibF91cGRhdGUgPSBmYWxzZTsKKworCXJldHVybiAwOwor fQorCisvKgogICogTWVyZ2UgdGhlIHdhdGVybWFya3MgZnJvbSBhbGwgYWN0aXZlIHBpcGVzIGZv ciBhIHNwZWNpZmljIGxldmVsLgogICovCiBzdGF0aWMgdm9pZCBpbGtfbWVyZ2Vfd21fbGV2ZWwo c3RydWN0IGRybV9kZXZpY2UgKmRldiwKQEAgLTI0MjgsOSArMjQ5Myw3IEBAIHN0YXRpYyB2b2lk IGlsa19tZXJnZV93bV9sZXZlbChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCXJldF93bS0+ZW5h YmxlID0gdHJ1ZTsKIAogCWZvcl9lYWNoX2ludGVsX2NydGMoZGV2LCBpbnRlbF9jcnRjKSB7Ci0J CWNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUgPQotCQkJdG9faW50ZWxfY3J0 Y19zdGF0ZShpbnRlbF9jcnRjLT5iYXNlLnN0YXRlKTsKLQkJY29uc3Qgc3RydWN0IGludGVsX3Bp cGVfd20gKmFjdGl2ZSA9ICZjc3RhdGUtPndtLm9wdGltYWwuaWxrOworCQljb25zdCBzdHJ1Y3Qg aW50ZWxfcGlwZV93bSAqYWN0aXZlID0gJmludGVsX2NydGMtPndtLmFjdGl2ZS5pbGs7CiAJCWNv bnN0IHN0cnVjdCBpbnRlbF93bV9sZXZlbCAqd20gPSAmYWN0aXZlLT53bVtsZXZlbF07CiAKIAkJ aWYgKCFhY3RpdmUtPnBpcGVfZW5hYmxlZCkKQEAgLTI1NzgsMTUgKzI2NDEsMTMgQEAgc3RhdGlj IHZvaWQgaWxrX2NvbXB1dGVfd21fcmVzdWx0cyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCiAJ LyogTFAwIHJlZ2lzdGVyIHZhbHVlcyAqLwogCWZvcl9lYWNoX2ludGVsX2NydGMoZGV2LCBpbnRl bF9jcnRjKSB7Ci0JCWNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUgPQotCQkJ dG9faW50ZWxfY3J0Y19zdGF0ZShpbnRlbF9jcnRjLT5iYXNlLnN0YXRlKTsKIAkJZW51bSBwaXBl IHBpcGUgPSBpbnRlbF9jcnRjLT5waXBlOwotCQljb25zdCBzdHJ1Y3QgaW50ZWxfd21fbGV2ZWwg KnIgPSAmY3N0YXRlLT53bS5vcHRpbWFsLmlsay53bVswXTsKKwkJY29uc3Qgc3RydWN0IGludGVs X3dtX2xldmVsICpyID0gJmludGVsX2NydGMtPndtLmFjdGl2ZS5pbGsud21bMF07CiAKIAkJaWYg KFdBUk5fT04oIXItPmVuYWJsZSkpCiAJCQljb250aW51ZTsKIAotCQlyZXN1bHRzLT53bV9saW5l dGltZVtwaXBlXSA9IGNzdGF0ZS0+d20ub3B0aW1hbC5pbGsubGluZXRpbWU7CisJCXJlc3VsdHMt PndtX2xpbmV0aW1lW3BpcGVdID0gaW50ZWxfY3J0Yy0+d20uYWN0aXZlLmlsay5saW5ldGltZTsK IAogCQlyZXN1bHRzLT53bV9waXBlW3BpcGVdID0KIAkJCShyLT5wcmlfdmFsIDw8IFdNMF9QSVBF X1BMQU5FX1NISUZUKSB8CkBAIC0yNzkzLDcgKzI4NTQsNyBAQCBzdGF0aWMgdm9pZCBpbGtfd3Jp dGVfd21fdmFsdWVzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAlkZXZfcHJp di0+d20uaHcgPSAqcmVzdWx0czsKIH0KIAotc3RhdGljIGJvb2wgaWxrX2Rpc2FibGVfbHBfd20o c3RydWN0IGRybV9kZXZpY2UgKmRldikKK2Jvb2wgaWxrX2Rpc2FibGVfbHBfd20oc3RydWN0IGRy bV9kZXZpY2UgKmRldikKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBk ZXYtPmRldl9wcml2YXRlOwogCkBAIC0zNjcxLDI5ICszNzMyLDI5IEBAIHN0YXRpYyB2b2lkIGls a19wcm9ncmFtX3dhdGVybWFya3Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQog CWlsa193cml0ZV93bV92YWx1ZXMoZGV2X3ByaXYsICZyZXN1bHRzKTsKIH0KIAotc3RhdGljIHZv aWQgaWxrX3VwZGF0ZV93bShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCitzdGF0aWMgdm9pZCBpbGtf aW5pdGlhbF93YXRlcm1hcmtzKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUpCiB7Ci0J c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5kZXYpOwot CXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKLQlz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlID0gdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRj LT5zdGF0ZSk7Ci0KLQlXQVJOX09OKGNzdGF0ZS0+YmFzZS5hY3RpdmUgIT0gaW50ZWxfY3J0Yy0+ YWN0aXZlKTsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNz dGF0ZS0+YmFzZS5jcnRjLT5kZXYpOworCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0g dG9faW50ZWxfY3J0Yyhjc3RhdGUtPmJhc2UuY3J0Yyk7CiAKLQkvKgotCSAqIElWQiB3b3JrYXJv dW5kOiBtdXN0IGRpc2FibGUgbG93IHBvd2VyIHdhdGVybWFya3MgZm9yIGF0IGxlYXN0Ci0JICog b25lIGZyYW1lIGJlZm9yZSBlbmFibGluZyBzY2FsaW5nLiAgTFAgd2F0ZXJtYXJrcyBjYW4gYmUg cmUtZW5hYmxlZAotCSAqIHdoZW4gc2NhbGluZyBpcyBkaXNhYmxlZC4KLQkgKgotCSAqIFdhQ3hT UkRpc2FibGVkRm9yU3ByaXRlU2NhbGluZzppdmIKLQkgKi8KLQlpZiAoY3N0YXRlLT5kaXNhYmxl X2xwX3dtKSB7Ci0JCWlsa19kaXNhYmxlX2xwX3dtKGNydGMtPmRldik7Ci0JCWludGVsX3dhaXRf Zm9yX3ZibGFuayhjcnRjLT5kZXYsIGludGVsX2NydGMtPnBpcGUpOwotCX0KKwltdXRleF9sb2Nr KCZpbnRlbF9jcnRjLT53bS53bV9tdXRleCk7CisJaW50ZWxfY3J0Yy0+d20uYWN0aXZlLmlsayA9 IGNzdGF0ZS0+d20uaW50ZXJtZWRpYXRlOworCWlsa19wcm9ncmFtX3dhdGVybWFya3MoZGV2X3By aXYpOworCW11dGV4X3VubG9jaygmaW50ZWxfY3J0Yy0+d20ud21fbXV0ZXgpOworfQogCi0JaW50 ZWxfY3J0Yy0+d20uYWN0aXZlLmlsayA9IGNzdGF0ZS0+d20ub3B0aW1hbC5pbGs7CitzdGF0aWMg dm9pZCBpbGtfb3B0aW1pemVfd2F0ZXJtYXJrcyhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0 YXRlKQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3N0 YXRlLT5iYXNlLmNydGMtPmRldik7CisJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0 b19pbnRlbF9jcnRjKGNzdGF0ZS0+YmFzZS5jcnRjKTsKIAotCWlsa19wcm9ncmFtX3dhdGVybWFy a3MoZGV2X3ByaXYpOworCW11dGV4X2xvY2soJmludGVsX2NydGMtPndtLndtX211dGV4KTsKKwlp ZiAoY3N0YXRlLT53bS5uZWVkX3Bvc3R2YmxfdXBkYXRlKSB7CisJCWludGVsX2NydGMtPndtLmFj dGl2ZS5pbGsgPSBjc3RhdGUtPndtLm9wdGltYWwuaWxrOworCQlpbGtfcHJvZ3JhbV93YXRlcm1h cmtzKGRldl9wcml2KTsKKwkJY3N0YXRlLT53bS5uZWVkX3Bvc3R2YmxfdXBkYXRlID0gZmFsc2U7 CisJfQorCW11dGV4X3VubG9jaygmaW50ZWxfY3J0Yy0+d20ud21fbXV0ZXgpOwogfQogCiBzdGF0 aWMgdm9pZCBza2xfcGlwZV93bV9hY3RpdmVfc3RhdGUodWludDMyX3QgdmFsLApAQCAtNjk5NSw4 ICs3MDU2LDExIEBAIHZvaWQgaW50ZWxfaW5pdF9wbShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQog CQkgICAgIGRldl9wcml2LT53bS5zcHJfbGF0ZW5jeVsxXSAmJiBkZXZfcHJpdi0+d20uY3VyX2xh dGVuY3lbMV0pIHx8CiAJCSAgICAoIUlTX0dFTjUoZGV2KSAmJiBkZXZfcHJpdi0+d20ucHJpX2xh dGVuY3lbMF0gJiYKIAkJICAgICBkZXZfcHJpdi0+d20uc3ByX2xhdGVuY3lbMF0gJiYgZGV2X3By aXYtPndtLmN1cl9sYXRlbmN5WzBdKSkgewotCQkJZGV2X3ByaXYtPmRpc3BsYXkudXBkYXRlX3dt ID0gaWxrX3VwZGF0ZV93bTsKIAkJCWRldl9wcml2LT5kaXNwbGF5LmNvbXB1dGVfcGlwZV93bSA9 IGlsa19jb21wdXRlX3BpcGVfd207CisJCQlkZXZfcHJpdi0+ZGlzcGxheS5jb21wdXRlX2ludGVy bWVkaWF0ZV93bSA9CisJCQkJaWxrX2NvbXB1dGVfaW50ZXJtZWRpYXRlX3dtOworCQkJZGV2X3By aXYtPmRpc3BsYXkuaW5pdGlhbF93YXRlcm1hcmtzID0gaWxrX2luaXRpYWxfd2F0ZXJtYXJrczsK KwkJCWRldl9wcml2LT5kaXNwbGF5Lm9wdGltaXplX3dhdGVybWFya3MgPSBpbGtfb3B0aW1pemVf d2F0ZXJtYXJrczsKIAkJfSBlbHNlIHsKIAkJCURSTV9ERUJVR19LTVMoIkZhaWxlZCB0byByZWFk IGRpc3BsYXkgcGxhbmUgbGF0ZW5jeS4gIgogCQkJCSAgICAgICJEaXNhYmxlIEN4U1JcbiIpOwot LSAKMi4xLjQKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==