From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: [PATCH 1/7] drm/i915: Calculate gen3- watermarks semi-atomically. Date: Mon, 7 Aug 2017 12:48:22 +0200 Message-ID: <20170807104828.21046-2-maarten.lankhorst@linux.intel.com> References: <20170807104828.21046-1-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 [141.105.120.124]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6B06E6E3EC for ; Mon, 7 Aug 2017 10:48:41 +0000 (UTC) In-Reply-To: <20170807104828.21046-1-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 VGhlIGdlbjMgd2F0ZXJtYXJrIGNhbGN1bGF0aW9ucyBhcmUgY29udmVydGVkIHRvIGF0b21pYywK YnV0IHRoZSB3bSB1cGRhdGUgY2FsbHMgYXJlIHN0aWxsIGRvbmUgdGhyb3VnaCB0aGUgbGVnYWN5 CmZ1bmN0aW9ucy4KClRoaXMgd2lsbCBtYWtlIGl0IGVhc2llciB0byBiaXNlY3QgdGhpbmdzIGlm IHRoZXkgZ28gd3JvbmcuCgpTaWduZWQtb2ZmLWJ5OiBNYWFydGVuIExhbmtob3JzdCA8bWFhcnRl bi5sYW5raG9yc3RAbGludXguaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rpc3BsYXkuYyB8ICAgMyArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2Lmgg ICAgIHwgIDE0ICsrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyAgICAgIHwgMjMx ICsrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tCiAzIGZpbGVzIGNoYW5nZWQsIDE1 MiBpbnNlcnRpb25zKCspLCA5NiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k aXNwbGF5LmMKaW5kZXggOTc0ZDRiNTc3MTg5Li4yMzRiOTRjYWZjN2QgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kaXNwbGF5LmMKQEAgLTE0NzA5LDcgKzE0NzA5LDggQEAgaW50ZWxfbW9kZXNl dF9zZXR1cF9od19zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQlza2xfd21fZ2V0X2h3 X3N0YXRlKGRldik7CiAJfSBlbHNlIGlmIChIQVNfUENIX1NQTElUKGRldl9wcml2KSkgewogCQlp bGtfd21fZ2V0X2h3X3N0YXRlKGRldik7Ci0JfQorCX0gZWxzZSBpZiAoSU5URUxfR0VOKGRldl9w cml2KSA8PSAzICYmICFJU19QSU5FVklFVyhkZXZfcHJpdikpCisJCWk5eHhfd21fZ2V0X2h3X3N0 YXRlKGRldik7CiAKIAlmb3JfZWFjaF9pbnRlbF9jcnRjKGRldiwgY3J0YykgewogCQl1NjQgcHV0 X2RvbWFpbnM7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCmluZGV4IGY5MWRlOWNiOTY5Ny4uZDUz ZDM0NzU2MDQ4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaApAQCAtNTQ3LDYgKzU0NywxNSBA QCBzdHJ1Y3QgZzR4X3dtX3N0YXRlIHsKIAlib29sIGZiY19lbjsKIH07CiAKK3N0cnVjdCBpOXh4 X3dtX3N0YXRlIHsKKwl1aW50MTZfdCBwbGFuZV93bTsKKwlib29sIGN4c3I7CisKKwlzdHJ1Y3Qg eworCQl1aW50MTZfdCBwbGFuZTsKKwl9IHNyOworfTsKKwogc3RydWN0IGludGVsX2NydGNfd21f c3RhdGUgewogCXVuaW9uIHsKIAkJc3RydWN0IHsKQEAgLTU5MSw2ICs2MDAsOSBAQCBzdHJ1Y3Qg aW50ZWxfY3J0Y193bV9zdGF0ZSB7CiAJCQkvKiBvcHRpbWFsIHdhdGVybWFya3MgKi8KIAkJCXN0 cnVjdCBnNHhfd21fc3RhdGUgb3B0aW1hbDsKIAkJfSBnNHg7CisJCXN0cnVjdCB7CisJCQlzdHJ1 Y3QgaTl4eF93bV9zdGF0ZSBvcHRpbWFsOworCQl9IGk5eHg7CiAJfTsKIAogCS8qCkBAIC04MjMs NiArODM1LDcgQEAgc3RydWN0IGludGVsX2NydGMgewogCQkJc3RydWN0IGludGVsX3BpcGVfd20g aWxrOwogCQkJc3RydWN0IHZsdl93bV9zdGF0ZSB2bHY7CiAJCQlzdHJ1Y3QgZzR4X3dtX3N0YXRl IGc0eDsKKwkJCXN0cnVjdCBpOXh4X3dtX3N0YXRlIGk5eHg7CiAJCX0gYWN0aXZlOwogCX0gd207 CiAKQEAgLTE4NDUsNiArMTg1OCw3IEBAIHZvaWQgZ2VuNl9ycHNfYm9vc3Qoc3RydWN0IGRybV9p OTE1X2dlbV9yZXF1ZXN0ICpycSwKIAkJICAgIHN0cnVjdCBpbnRlbF9ycHNfY2xpZW50ICpycHMp Owogdm9pZCBpbnRlbF9xdWV1ZV9ycHNfYm9vc3RfZm9yX3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1 X2dlbV9yZXF1ZXN0ICpyZXEpOwogdm9pZCBnNHhfd21fZ2V0X2h3X3N0YXRlKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYpOwordm9pZCBpOXh4X3dtX2dldF9od19zdGF0ZShzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2KTsKIHZvaWQgdmx2X3dtX2dldF9od19zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KTsKIHZvaWQgaWxrX3dtX2dldF9od19zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKIHZv aWQgc2tsX3dtX2dldF9od19zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9wbS5jCmluZGV4IDZlMzkzYjIxNzQ1MC4uODA3YzlhNzMwMDIwIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3BtLmMKQEAgLTIyMjQsODkgKzIyMjQsMTU0IEBAIHN0YXRpYyB2b2lkIGk5NjVf dXBkYXRlX3dtKHN0cnVjdCBpbnRlbF9jcnRjICp1bnVzZWRfY3J0YykKIAogI3VuZGVmIEZXX1dN CiAKLXN0YXRpYyB2b2lkIGk5eHhfdXBkYXRlX3dtKHN0cnVjdCBpbnRlbF9jcnRjICp1bnVzZWRf Y3J0YykKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZWxfd2F0ZXJtYXJrX3BhcmFtcyAqaTl4eF9n ZXRfd21faW5mbyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkJCQkJICAg ICBzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSB0b19pOTE1KHVudXNlZF9jcnRjLT5iYXNlLmRldik7Ci0JY29uc3Qgc3RydWN0 IGludGVsX3dhdGVybWFya19wYXJhbXMgKndtX2luZm87Ci0JdWludDMyX3QgZndhdGVyX2xvOwot CXVpbnQzMl90IGZ3YXRlcl9oaTsKLQlpbnQgY3dtLCBzcndtID0gMTsKLQlpbnQgZmlmb19zaXpl OwotCWludCBwbGFuZWFfd20sIHBsYW5lYl93bTsKLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0Yywg KmVuYWJsZWQgPSBOVUxMOworCXN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9w bGFuZShjcnRjLT5iYXNlLnByaW1hcnkpOwogCiAJaWYgKElTX0k5NDVHTShkZXZfcHJpdikpCi0J CXdtX2luZm8gPSAmaTk0NV93bV9pbmZvOworCQlyZXR1cm4gJmk5NDVfd21faW5mbzsKIAllbHNl IGlmICghSVNfR0VOMihkZXZfcHJpdikpCi0JCXdtX2luZm8gPSAmaTkxNV93bV9pbmZvOworCQly ZXR1cm4gJmk5MTVfd21faW5mbzsKKwllbHNlIGlmIChwbGFuZS0+cGxhbmUgPT0gUExBTkVfQSkK KwkJcmV0dXJuICZpODMwX2Ffd21faW5mbzsKIAllbHNlCi0JCXdtX2luZm8gPSAmaTgzMF9hX3dt X2luZm87CisJCXJldHVybiAmaTgzMF9iY193bV9pbmZvOworfQogCi0JZmlmb19zaXplID0gZGV2 X3ByaXYtPmRpc3BsYXkuZ2V0X2ZpZm9fc2l6ZShkZXZfcHJpdiwgMCk7Ci0JY3J0YyA9IGludGVs X2dldF9jcnRjX2Zvcl9wbGFuZShkZXZfcHJpdiwgMCk7Ci0JaWYgKGludGVsX2NydGNfYWN0aXZl KGNydGMpKSB7CitzdGF0aWMgaW50IGk5eHhfY29tcHV0ZV9waXBlX3dtKHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpjcnRjX3N0YXRlKQoreworCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9f aW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNydGMpOworCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOworCXN0cnVjdCBpbnRlbF9h dG9taWNfc3RhdGUgKnN0YXRlID0KKwkJdG9faW50ZWxfYXRvbWljX3N0YXRlKGNydGNfc3RhdGUt PmJhc2Uuc3RhdGUpOworCXN0cnVjdCBpOXh4X3dtX3N0YXRlICp3bV9zdGF0ZSA9ICZjcnRjX3N0 YXRlLT53bS5pOXh4Lm9wdGltYWw7CisJc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSA9IHRvX2lu dGVsX3BsYW5lKGNydGMtPmJhc2UucHJpbWFyeSk7CisJY29uc3Qgc3RydWN0IGRybV9wbGFuZV9z dGF0ZSAqcGxhbmVfc3RhdGUgPSBOVUxMOworCWludCBmaWZvX3NpemU7CisJY29uc3Qgc3RydWN0 IGludGVsX3dhdGVybWFya19wYXJhbXMgKndtX2luZm87CisKKwlmaWZvX3NpemUgPSBkZXZfcHJp di0+ZGlzcGxheS5nZXRfZmlmb19zaXplKGRldl9wcml2LCBwbGFuZS0+cGxhbmUpOworCisJd21f aW5mbyA9IGk5eHhfZ2V0X3dtX2luZm8oZGV2X3ByaXYsIGNydGMpOworCisJd21fc3RhdGUtPmN4 c3IgPSBmYWxzZTsKKwltZW1zZXQoJndtX3N0YXRlLT5zciwgMCwgc2l6ZW9mKHdtX3N0YXRlLT5z cikpOworCisJaWYgKGNydGNfc3RhdGUtPmJhc2UucGxhbmVfbWFzayAmIEJJVChkcm1fcGxhbmVf aW5kZXgoJnBsYW5lLT5iYXNlKSkpCisJCXBsYW5lX3N0YXRlID0gX19kcm1fYXRvbWljX2dldF9j dXJyZW50X3BsYW5lX3N0YXRlKCZzdGF0ZS0+YmFzZSwgJnBsYW5lLT5iYXNlKTsKKworCWlmICgh cGxhbmVfc3RhdGUgfHwgIWludGVsX3dtX3BsYW5lX3Zpc2libGUoY3J0Y19zdGF0ZSwgdG9faW50 ZWxfcGxhbmVfc3RhdGUocGxhbmVfc3RhdGUpKSkgeworCQl3bV9zdGF0ZS0+cGxhbmVfd20gPSBm aWZvX3NpemUgLSB3bV9pbmZvLT5ndWFyZF9zaXplOworCQlpZiAod21fc3RhdGUtPnBsYW5lX3dt ID4gKGxvbmcpd21faW5mby0+bWF4X3dtKQorCQkJd21fc3RhdGUtPnBsYW5lX3dtID0gd21faW5m by0+bWF4X3dtOworCX0gZWxzZSBpZiAoSEFTX0ZXX0JMQyhkZXZfcHJpdikpIHsKKwkJc3RydWN0 IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+ZmI7CisJCXVuc2lnbmVkIGNwcCA9 IElTX0dFTjIoZGV2X3ByaXYpID8gNCA6IGZiLT5mb3JtYXQtPmNwcFswXTsKIAkJY29uc3Qgc3Ry dWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUgPQotCQkJJmNydGMtPmNvbmZpZy0+ YmFzZS5hZGp1c3RlZF9tb2RlOwotCQljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9 Ci0JCQljcnRjLT5iYXNlLnByaW1hcnktPnN0YXRlLT5mYjsKLQkJaW50IGNwcDsKKwkJCSZjcnRj X3N0YXRlLT5iYXNlLmFkanVzdGVkX21vZGU7CisJCXVuc2lnbmVkIGFjdGl2ZV9jcnRjczsKKwkJ Ym9vbCBtYXlfY3hzcjsKIAotCQlpZiAoSVNfR0VOMihkZXZfcHJpdikpCi0JCQljcHAgPSA0Owor CQlpZiAoc3RhdGUtPm1vZGVzZXQpCisJCQlhY3RpdmVfY3J0Y3MgPSBzdGF0ZS0+YWN0aXZlX2Ny dGNzOwogCQllbHNlCi0JCQljcHAgPSBmYi0+Zm9ybWF0LT5jcHBbMF07CisJCQlhY3RpdmVfY3J0 Y3MgPSBkZXZfcHJpdi0+YWN0aXZlX2NydGNzOwogCi0JCXBsYW5lYV93bSA9IGludGVsX2NhbGN1 bGF0ZV93bShhZGp1c3RlZF9tb2RlLT5jcnRjX2Nsb2NrLAotCQkJCQkgICAgICAgd21faW5mbywg Zmlmb19zaXplLCBjcHAsCi0JCQkJCSAgICAgICBwZXNzaW1hbF9sYXRlbmN5X25zKTsKLQkJZW5h YmxlZCA9IGNydGM7Ci0JfSBlbHNlIHsKLQkJcGxhbmVhX3dtID0gZmlmb19zaXplIC0gd21faW5m by0+Z3VhcmRfc2l6ZTsKLQkJaWYgKHBsYW5lYV93bSA+IChsb25nKXdtX2luZm8tPm1heF93bSkK LQkJCXBsYW5lYV93bSA9IHdtX2luZm8tPm1heF93bTsKKwkJbWF5X2N4c3IgPSBhY3RpdmVfY3J0 Y3MgPT0gZHJtX2NydGNfbWFzaygmY3J0Yy0+YmFzZSk7CisKKwkJd21fc3RhdGUtPnBsYW5lX3dt ID0gaW50ZWxfY2FsY3VsYXRlX3dtKGFkanVzdGVkX21vZGUtPmNydGNfY2xvY2ssCisJCQkJCQkJ d21faW5mbywgZmlmb19zaXplLCBjcHAsCisJCQkJCQkJcGVzc2ltYWxfbGF0ZW5jeV9ucyk7CisK KwkJRFJNX0RFQlVHX0tNUygiRklGTyB3YXRlcm1hcmtzIC0gcGxhbmUgd2F0ZXJtYXJrczogJWRc biIsIHdtX3N0YXRlLT5wbGFuZV93bSk7CisKKwkJaWYgKElTX0k5MTVHTShkZXZfcHJpdikgJiYg aTkxNV9nZW1fb2JqZWN0X2lzX3RpbGVkKGludGVsX2ZiX29iaihmYikpKQorCQkJbWF5X2N4c3Ig PSBmYWxzZTsKKworCQlpZiAobWF5X2N4c3IpIHsKKwkJCXN0YXRpYyBjb25zdCBpbnQgc3JfbGF0 ZW5jeV9ucyA9IDYwMDA7CisJCQl1bnNpZ25lZCBsb25nIGVudHJpZXM7CisKKwkJCWVudHJpZXMg PSBpbnRlbF93bV9tZXRob2QyKGFkanVzdGVkX21vZGUtPmNydGNfY2xvY2ssCisJCQkJCQkgICBh ZGp1c3RlZF9tb2RlLT5jcnRjX2h0b3RhbCwKKwkJCQkJCSAgIGNydGNfc3RhdGUtPnBpcGVfc3Jj X3csIGNwcCwKKwkJCQkJCSAgIHNyX2xhdGVuY3lfbnMgLyAxMDApOworCQkJZW50cmllcyA9IERJ Vl9ST1VORF9VUChlbnRyaWVzLCB3bV9pbmZvLT5jYWNoZWxpbmVfc2l6ZSk7CisKKwkJCURSTV9E RUJVR19LTVMoInNlbGYtcmVmcmVzaCBlbnRyaWVzOiAlbGRcbiIsIGVudHJpZXMpOworCisJCQlp ZiAod21faW5mby0+Zmlmb19zaXplID49IGVudHJpZXMpIHsKKwkJCQl3bV9zdGF0ZS0+Y3hzciA9 IHRydWU7CisJCQkJd21fc3RhdGUtPnNyLnBsYW5lID0gd21faW5mby0+Zmlmb19zaXplIC0gZW50 cmllczsKKwkJCX0gZWxzZQorCQkJCW1heV9jeHNyID0gZmFsc2U7CisJCX0KKworCQlEUk1fREVC VUdfS01TKCJGSUZPIHdhdGVybWFya3MgLSBwbGFuZSB3YXRlcm1hcmtzOiAlZCwgY2FuIGN4c3I6 ICVzLCBTUiBzaXplOiAlZFxuIiwKKwkJCSAgICAgIHdtX3N0YXRlLT5wbGFuZV93bSwgeWVzbm8o d21fc3RhdGUtPmN4c3IpLCB3bV9zdGF0ZS0+c3IucGxhbmUpOwogCX0KIAotCWlmIChJU19HRU4y KGRldl9wcml2KSkKLQkJd21faW5mbyA9ICZpODMwX2JjX3dtX2luZm87CisJcmV0dXJuIDA7Cit9 CiAKLQlmaWZvX3NpemUgPSBkZXZfcHJpdi0+ZGlzcGxheS5nZXRfZmlmb19zaXplKGRldl9wcml2 LCAxKTsKLQljcnRjID0gaW50ZWxfZ2V0X2NydGNfZm9yX3BsYW5lKGRldl9wcml2LCAxKTsKLQlp ZiAoaW50ZWxfY3J0Y19hY3RpdmUoY3J0YykpIHsKLQkJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5 X21vZGUgKmFkanVzdGVkX21vZGUgPQotCQkJJmNydGMtPmNvbmZpZy0+YmFzZS5hZGp1c3RlZF9t b2RlOwotCQljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9Ci0JCQljcnRjLT5iYXNl LnByaW1hcnktPnN0YXRlLT5mYjsKLQkJaW50IGNwcDsKK3ZvaWQgaTl4eF93bV9nZXRfaHdfc3Rh dGUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSB0b19pOTE1KGRldik7CisJc3RydWN0IGludGVsX2NydGMgKmNydGM7CisJdWlu dDMyX3QgZndhdGVyX2xvLCBwbGFuZWFfd20sIHBsYW5lYl93bTsKKworCWZ3YXRlcl9sbyA9IEk5 MTVfUkVBRChGV19CTEMpOworCisJcGxhbmVhX3dtID0gZndhdGVyX2xvICYgMHgzZjsKKwlwbGFu ZWJfd20gPSAoZndhdGVyX2xvID4+IDE2KSAmIDB4M2Y7CisKKwlmb3JfZWFjaF9pbnRlbF9jcnRj KGRldiwgY3J0YykgeworCQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlID0gdG9faW50 ZWxfY3J0Y19zdGF0ZShjcnRjLT5iYXNlLnN0YXRlKTsKKwkJc3RydWN0IGk5eHhfd21fc3RhdGUg KndtX3N0YXRlID0gJmNzdGF0ZS0+d20uaTl4eC5vcHRpbWFsOworCQlzdHJ1Y3QgaW50ZWxfcGxh bmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUoY3J0Yy0+YmFzZS5wcmltYXJ5KTsKKworCQltZW1z ZXQoJndtX3N0YXRlLT5zciwgMCwgc2l6ZW9mKHdtX3N0YXRlLT5zcikpOworCQl3bV9zdGF0ZS0+ Y3hzciA9IGZhbHNlOwogCi0JCWlmIChJU19HRU4yKGRldl9wcml2KSkKLQkJCWNwcCA9IDQ7CisJ CWlmIChwbGFuZSA9PSBQTEFORV9BKQorCQkJd21fc3RhdGUtPnBsYW5lX3dtID0gcGxhbmVhX3dt OwogCQllbHNlCi0JCQljcHAgPSBmYi0+Zm9ybWF0LT5jcHBbMF07CisJCQl3bV9zdGF0ZS0+cGxh bmVfd20gPSBwbGFuZWJfd207CisKKwkJY3J0Yy0+d20uYWN0aXZlLmk5eHggPSAqd21fc3RhdGU7 CisJfQorfQogCi0JCXBsYW5lYl93bSA9IGludGVsX2NhbGN1bGF0ZV93bShhZGp1c3RlZF9tb2Rl LT5jcnRjX2Nsb2NrLAotCQkJCQkgICAgICAgd21faW5mbywgZmlmb19zaXplLCBjcHAsCi0JCQkJ CSAgICAgICBwZXNzaW1hbF9sYXRlbmN5X25zKTsKK3N0YXRpYyB2b2lkIGk5eHhfdXBkYXRlX3dt KHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOworCXVpbnQzMl90IGZ3YXRlcl9sbzsK Kwl1aW50MzJfdCBmd2F0ZXJfaGk7CisJaW50IGN3bSwgc3J3bSA9IC0xOworCWludCBwbGFuZWFf d20sIHBsYW5lYl93bTsKKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqZW5hYmxlZCA9IE5VTEw7CisKKwlj cnRjLT53bS5hY3RpdmUuaTl4eCA9IGNydGMtPmNvbmZpZy0+d20uaTl4eC5vcHRpbWFsOworCisJ Y3J0YyA9IGludGVsX2dldF9jcnRjX2Zvcl9wbGFuZShkZXZfcHJpdiwgMCk7CisJcGxhbmVhX3dt ID0gY3J0Yy0+d20uYWN0aXZlLmk5eHgucGxhbmVfd207CisJaWYgKGludGVsX2NydGNfYWN0aXZl KGNydGMpKQorCQllbmFibGVkID0gY3J0YzsKKworCWNydGMgPSBpbnRlbF9nZXRfY3J0Y19mb3Jf cGxhbmUoZGV2X3ByaXYsIDEpOworCWlmIChpbnRlbF9jcnRjX2FjdGl2ZShjcnRjKSkgewogCQlp ZiAoZW5hYmxlZCA9PSBOVUxMKQogCQkJZW5hYmxlZCA9IGNydGM7CiAJCWVsc2UKIAkJCWVuYWJs ZWQgPSBOVUxMOwotCX0gZWxzZSB7Ci0JCXBsYW5lYl93bSA9IGZpZm9fc2l6ZSAtIHdtX2luZm8t Pmd1YXJkX3NpemU7Ci0JCWlmIChwbGFuZWJfd20gPiAobG9uZyl3bV9pbmZvLT5tYXhfd20pCi0J CQlwbGFuZWJfd20gPSB3bV9pbmZvLT5tYXhfd207CiAJfQorCXBsYW5lYl93bSA9IGNydGMtPndt LmFjdGl2ZS5pOXh4LnBsYW5lX3dtOwogCiAJRFJNX0RFQlVHX0tNUygiRklGTyB3YXRlcm1hcmtz IC0gQTogJWQsIEI6ICVkXG4iLCBwbGFuZWFfd20sIHBsYW5lYl93bSk7CiAKLQlpZiAoSVNfSTkx NUdNKGRldl9wcml2KSAmJiBlbmFibGVkKSB7Ci0JCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0 ICpvYmo7Ci0KLQkJb2JqID0gaW50ZWxfZmJfb2JqKGVuYWJsZWQtPmJhc2UucHJpbWFyeS0+c3Rh dGUtPmZiKTsKLQotCQkvKiBzZWxmLXJlZnJlc2ggc2VlbXMgYnVzdGVkIHdpdGggdW50aWxlZCAq LwotCQlpZiAoIWk5MTVfZ2VtX29iamVjdF9pc190aWxlZChvYmopKQotCQkJZW5hYmxlZCA9IE5V TEw7Ci0JfQorCWlmICghZW5hYmxlZC0+d20uYWN0aXZlLmk5eHguY3hzcikKKwkJZW5hYmxlZCA9 IE5VTEw7CiAKIAkvKgogCSAqIE92ZXJsYXkgZ2V0cyBhbiBhZ2dyZXNzaXZlIGRlZmF1bHQgc2lu Y2UgdmlkZW8gaml0dGVyIGlzIGJhZC4KQEAgLTIzMTcsMzEgKzIzODIsOCBAQCBzdGF0aWMgdm9p ZCBpOXh4X3VwZGF0ZV93bShzdHJ1Y3QgaW50ZWxfY3J0YyAqdW51c2VkX2NydGMpCiAJaW50ZWxf c2V0X21lbW9yeV9jeHNyKGRldl9wcml2LCBmYWxzZSk7CiAKIAkvKiBDYWxjIHNyIGVudHJpZXMg Zm9yIG9uZSBwbGFuZSBjb25maWdzICovCi0JaWYgKEhBU19GV19CTEMoZGV2X3ByaXYpICYmIGVu YWJsZWQpIHsKLQkJLyogc2VsZi1yZWZyZXNoIGhhcyBtdWNoIGhpZ2hlciBsYXRlbmN5ICovCi0J CXN0YXRpYyBjb25zdCBpbnQgc3JfbGF0ZW5jeV9ucyA9IDYwMDA7Ci0JCWNvbnN0IHN0cnVjdCBk cm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlID0KLQkJCSZlbmFibGVkLT5jb25maWctPmJh c2UuYWRqdXN0ZWRfbW9kZTsKLQkJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPQot CQkJZW5hYmxlZC0+YmFzZS5wcmltYXJ5LT5zdGF0ZS0+ZmI7Ci0JCWludCBjbG9jayA9IGFkanVz dGVkX21vZGUtPmNydGNfY2xvY2s7Ci0JCWludCBodG90YWwgPSBhZGp1c3RlZF9tb2RlLT5jcnRj X2h0b3RhbDsKLQkJaW50IGhkaXNwbGF5ID0gZW5hYmxlZC0+Y29uZmlnLT5waXBlX3NyY193Owot CQlpbnQgY3BwOwotCQlpbnQgZW50cmllczsKLQotCQlpZiAoSVNfSTkxNUdNKGRldl9wcml2KSB8 fCBJU19JOTQ1R00oZGV2X3ByaXYpKQotCQkJY3BwID0gNDsKLQkJZWxzZQotCQkJY3BwID0gZmIt PmZvcm1hdC0+Y3BwWzBdOwotCi0JCWVudHJpZXMgPSBpbnRlbF93bV9tZXRob2QyKGNsb2NrLCBo dG90YWwsIGhkaXNwbGF5LCBjcHAsCi0JCQkJCSAgIHNyX2xhdGVuY3lfbnMgLyAxMDApOwotCQll bnRyaWVzID0gRElWX1JPVU5EX1VQKGVudHJpZXMsIHdtX2luZm8tPmNhY2hlbGluZV9zaXplKTsK LQkJRFJNX0RFQlVHX0tNUygic2VsZi1yZWZyZXNoIGVudHJpZXM6ICVkXG4iLCBlbnRyaWVzKTsK LQkJc3J3bSA9IHdtX2luZm8tPmZpZm9fc2l6ZSAtIGVudHJpZXM7Ci0JCWlmIChzcndtIDwgMCkK LQkJCXNyd20gPSAxOworCWlmIChlbmFibGVkKSB7CisJCXNyd20gPSBlbmFibGVkLT53bS5hY3Rp dmUuaTl4eC5zci5wbGFuZTsKIAogCQlpZiAoSVNfSTk0NUcoZGV2X3ByaXYpIHx8IElTX0k5NDVH TShkZXZfcHJpdikpCiAJCQlJOTE1X1dSSVRFKEZXX0JMQ19TRUxGLApAQCAtMjM2NywyMyArMjQw OSwxOCBAQCBzdGF0aWMgdm9pZCBpOXh4X3VwZGF0ZV93bShzdHJ1Y3QgaW50ZWxfY3J0YyAqdW51 c2VkX2NydGMpCiAJCWludGVsX3NldF9tZW1vcnlfY3hzcihkZXZfcHJpdiwgdHJ1ZSk7CiB9CiAK LXN0YXRpYyB2b2lkIGk4NDVfdXBkYXRlX3dtKHN0cnVjdCBpbnRlbF9jcnRjICp1bnVzZWRfY3J0 YykKK3N0YXRpYyB2b2lkIGk4NDVfdXBkYXRlX3dtKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQog ewotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUodW51c2VkX2Ny dGMtPmJhc2UuZGV2KTsKLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YzsKLQljb25zdCBzdHJ1Y3Qg ZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZTsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsKIAl1aW50MzJfdCBmd2F0ZXJf bG87CiAJaW50IHBsYW5lYV93bTsKIAotCWNydGMgPSBzaW5nbGVfZW5hYmxlZF9jcnRjKGRldl9w cml2KTsKLQlpZiAoY3J0YyA9PSBOVUxMKQorCWlmICghaW50ZWxfY3J0Y19hY3RpdmUoY3J0Yykp CiAJCXJldHVybjsKIAotCWFkanVzdGVkX21vZGUgPSAmY3J0Yy0+Y29uZmlnLT5iYXNlLmFkanVz dGVkX21vZGU7Ci0JcGxhbmVhX3dtID0gaW50ZWxfY2FsY3VsYXRlX3dtKGFkanVzdGVkX21vZGUt PmNydGNfY2xvY2ssCi0JCQkJICAgICAgICZpODQ1X3dtX2luZm8sCi0JCQkJICAgICAgIGRldl9w cml2LT5kaXNwbGF5LmdldF9maWZvX3NpemUoZGV2X3ByaXYsIDApLAotCQkJCSAgICAgICA0LCBw ZXNzaW1hbF9sYXRlbmN5X25zKTsKKwljcnRjLT53bS5hY3RpdmUuaTl4eCA9IGNydGMtPmNvbmZp Zy0+d20uaTl4eC5vcHRpbWFsOworCXBsYW5lYV93bSA9IGNydGMtPndtLmFjdGl2ZS5pOXh4LnBs YW5lX3dtOworCiAJZndhdGVyX2xvID0gSTkxNV9SRUFEKEZXX0JMQykgJiB+MHhmZmY7CiAJZndh dGVyX2xvIHw9ICgzPDw4KSB8IHBsYW5lYV93bTsKIApAQCAtODgxMyw5ICs4ODUwLDEzIEBAIHZv aWQgaW50ZWxfaW5pdF9wbShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJfSBl bHNlIGlmIChJU19HRU40KGRldl9wcml2KSkgewogCQlkZXZfcHJpdi0+ZGlzcGxheS51cGRhdGVf d20gPSBpOTY1X3VwZGF0ZV93bTsKIAl9IGVsc2UgaWYgKElTX0dFTjMoZGV2X3ByaXYpKSB7CisJ CWRldl9wcml2LT5kaXNwbGF5LmNvbXB1dGVfcGlwZV93bSA9IGk5eHhfY29tcHV0ZV9waXBlX3dt OwogCQlkZXZfcHJpdi0+ZGlzcGxheS51cGRhdGVfd20gPSBpOXh4X3VwZGF0ZV93bTsKKwogCQlk ZXZfcHJpdi0+ZGlzcGxheS5nZXRfZmlmb19zaXplID0gaTl4eF9nZXRfZmlmb19zaXplOwogCX0g ZWxzZSBpZiAoSVNfR0VOMihkZXZfcHJpdikpIHsKKwkJZGV2X3ByaXYtPmRpc3BsYXkuY29tcHV0 ZV9waXBlX3dtID0gaTl4eF9jb21wdXRlX3BpcGVfd207CisKIAkJaWYgKElOVEVMX0lORk8oZGV2 X3ByaXYpLT5udW1fcGlwZXMgPT0gMSkgewogCQkJZGV2X3ByaXYtPmRpc3BsYXkudXBkYXRlX3dt ID0gaTg0NV91cGRhdGVfd207CiAJCQlkZXZfcHJpdi0+ZGlzcGxheS5nZXRfZmlmb19zaXplID0g aTg0NV9nZXRfZmlmb19zaXplOwotLSAKMi4xMS4wCgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9pbnRlbC1nZngK