From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: [PATCH v2 2/6] drm/i915: Program gen3- watermarks atomically Date: Wed, 13 Sep 2017 10:40:20 +0200 Message-ID: <20170913084024.25501-3-maarten.lankhorst@linux.intel.com> References: <20170913084024.25501-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 B33A76E7AB for ; Wed, 13 Sep 2017 08:40:30 +0000 (UTC) In-Reply-To: <20170913084024.25501-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 V2l0aCB0aGUgYXRvbWljIHdhdGVybWFyayBjYWxjdWxhdGlvbnMgY2FsY3VsYXRlIGludGVybWVk aWFyeSB3YXRlcm1hcmsKdmFsdWVzIGFuZCB1cGRhdGUgdGhlIHdhdGVybWFya3MgYXRvbWljYWxs eS4KClNpZ25lZC1vZmYtYnk6IE1hYXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBs aW51eC5pbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgfCAg IDUgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggfCAgIDUgKy0KIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3BtLmMgIHwgMjQxICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrLS0tLS0tLS0tLQogMyBmaWxlcyBjaGFuZ2VkLCAxOTEgaW5zZXJ0aW9ucygrKSwgNjAgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXggMWNjMzFhNWIwNDlmLi5lNjdj NDZiNmViOTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAtMTgxMSw2ICsxODExLDEwIEBA IHN0cnVjdCBnNHhfd21fdmFsdWVzIHsKIAlib29sIGZiY19lbjsKIH07CiAKK3N0cnVjdCBpOXh4 X3dtX3ZhbHVlcyB7CisJYm9vbCBjeHNyOworfTsKKwogc3RydWN0IHNrbF9kZGJfZW50cnkgewog CXVpbnQxNl90IHN0YXJ0LCBlbmQ7CS8qIGluIG51bWJlciBvZiBibG9ja3MsICdlbmQnIGlzIGV4 Y2x1c2l2ZSAqLwogfTsKQEAgLTI0OTIsNiArMjQ5Niw3IEBAIHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlIHsKIAkJCXN0cnVjdCBza2xfd21fdmFsdWVzIHNrbF9odzsKIAkJCXN0cnVjdCB2bHZfd21f dmFsdWVzIHZsdjsKIAkJCXN0cnVjdCBnNHhfd21fdmFsdWVzIGc0eDsKKwkJCXN0cnVjdCBpOXh4 X3dtX3ZhbHVlcyBpOXh4OwogCQl9OwogCiAJCXVpbnQ4X3QgbWF4X2xldmVsOwpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcnYuaAppbmRleCA3ODU1NGYyM2UyNjQuLjgxOTM3MDQ4ZmY0MyAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHJ2LmgKQEAgLTU1NSw3ICs1NTUsOCBAQCBzdHJ1Y3QgaTl4eF93bV9zdGF0 ZSB7CiAKIAlzdHJ1Y3QgewogCQl1aW50MTZfdCBwbGFuZV93bTsKLQl9IHNyOworCQl1aW50MTZf dCBjdXJzb3Jfd207CisJfSBzciwgaHBsbDsKIH07CiAKIHN0cnVjdCBpbnRlbF9jcnRjX3dtX3N0 YXRlIHsKQEAgLTYwNCw3ICs2MDUsNyBAQCBzdHJ1Y3QgaW50ZWxfY3J0Y193bV9zdGF0ZSB7CiAJ CX0gZzR4OwogCiAJCXN0cnVjdCB7Ci0JCQlzdHJ1Y3QgaTl4eF93bV9zdGF0ZSBvcHRpbWFsOwor CQkJc3RydWN0IGk5eHhfd21fc3RhdGUgb3B0aW1hbCwgaW50ZXJtZWRpYXRlOwogCQl9IGk5eHg7 CiAJfTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKaW5kZXggNmY3YmUwYTJiZTA1Li5iNGY0Nzkw NzJjYmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwpAQCAtNDU5LDYgKzQ1OSw4IEBAIGJvb2wg aW50ZWxfc2V0X21lbW9yeV9jeHNyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwg Ym9vbCBlbmFibGUpCiAJCWRldl9wcml2LT53bS52bHYuY3hzciA9IGVuYWJsZTsKIAllbHNlIGlm IChJU19HNFgoZGV2X3ByaXYpKQogCQlkZXZfcHJpdi0+d20uZzR4LmN4c3IgPSBlbmFibGU7CisJ ZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8PSA0KQorCQlkZXZfcHJpdi0+d20uaTl4eC5j eHNyID0gZW5hYmxlOwogCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPndtLndtX211dGV4KTsKIAog CXJldHVybiByZXQ7CkBAIC04NDYsMTMgKzg0OCwxNyBAQCBzdGF0aWMgc3RydWN0IGludGVsX2Ny dGMgKnNpbmdsZV9lbmFibGVkX2NydGMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQogCXJldHVybiBlbmFibGVkOwogfQogCi1zdGF0aWMgdm9pZCBwaW5ldmlld191cGRhdGVfd20o c3RydWN0IGludGVsX2NydGMgKnVudXNlZF9jcnRjKQorc3RhdGljIGludCBwbnZfY29tcHV0ZV9w aXBlX3dtKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQogewotCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUodW51c2VkX2NydGMtPmJhc2UuZGV2 KTsKLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YzsKKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9 IHRvX2ludGVsX2NydGMoY3J0Y19zdGF0ZS0+YmFzZS5jcnRjKTsKKwlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsKKwlzdHJ1Y3QgaTl4 eF93bV9zdGF0ZSAqd21fc3RhdGUgPSAmY3J0Y19zdGF0ZS0+d20uaTl4eC5vcHRpbWFsOworCXN0 cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShjcnRjLT5iYXNlLnByaW1h cnkpOworCXN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlID0gdG9faW50ZWxfYXRvbWlj X3N0YXRlKGNydGNfc3RhdGUtPmJhc2Uuc3RhdGUpOworCWNvbnN0IHN0cnVjdCBkcm1fcGxhbmVf c3RhdGUgKnByaW1hcnlfcGxhbmVfc3RhdGUgPSBOVUxMOwogCWNvbnN0IHN0cnVjdCBjeHNyX2xh dGVuY3kgKmxhdGVuY3k7Ci0JdTMyIHJlZzsKLQl1bnNpZ25lZCBpbnQgd207CisKKwltZW1zZXQo d21fc3RhdGUsIDAsIHNpemVvZigqd21fc3RhdGUpKTsKIAogCWxhdGVuY3kgPSBpbnRlbF9nZXRf Y3hzcl9sYXRlbmN5KElTX1BJTkVWSUVXX0coZGV2X3ByaXYpLAogCQkJCQkgZGV2X3ByaXYtPmlz X2RkcjMsCkBAIC04NjAsNjAgKzg2Niw5NCBAQCBzdGF0aWMgdm9pZCBwaW5ldmlld191cGRhdGVf d20oc3RydWN0IGludGVsX2NydGMgKnVudXNlZF9jcnRjKQogCQkJCQkgZGV2X3ByaXYtPm1lbV9m cmVxKTsKIAlpZiAoIWxhdGVuY3kpIHsKIAkJRFJNX0RFQlVHX0tNUygiVW5rbm93biBGU0IvTUVN IGZvdW5kLCBkaXNhYmxlIEN4U1JcbiIpOwotCQlpbnRlbF9zZXRfbWVtb3J5X2N4c3IoZGV2X3By aXYsIGZhbHNlKTsKLQkJcmV0dXJuOworCisJCXJldHVybiAwOwogCX0KIAotCWNydGMgPSBzaW5n bGVfZW5hYmxlZF9jcnRjKGRldl9wcml2KTsKLQlpZiAoY3J0YykgewotCQljb25zdCBzdHJ1Y3Qg ZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9Ci0JCQkmY3J0Yy0+Y29uZmlnLT5iYXNl LmFkanVzdGVkX21vZGU7CisJaWYgKGNydGNfc3RhdGUtPmJhc2UucGxhbmVfbWFzayAmIEJJVChk cm1fcGxhbmVfaW5kZXgoJnBsYW5lLT5iYXNlKSkpCisJCXByaW1hcnlfcGxhbmVfc3RhdGUgPSBf X2RybV9hdG9taWNfZ2V0X2N1cnJlbnRfcGxhbmVfc3RhdGUoJnN0YXRlLT5iYXNlLCAmcGxhbmUt PmJhc2UpOworCisJaWYgKHByaW1hcnlfcGxhbmVfc3RhdGUpIHsKIAkJY29uc3Qgc3RydWN0IGRy bV9mcmFtZWJ1ZmZlciAqZmIgPQotCQkJY3J0Yy0+YmFzZS5wcmltYXJ5LT5zdGF0ZS0+ZmI7CisJ CQlwcmltYXJ5X3BsYW5lX3N0YXRlLT5mYjsKIAkJaW50IGNwcCA9IGZiLT5mb3JtYXQtPmNwcFsw XTsKLQkJaW50IGNsb2NrID0gYWRqdXN0ZWRfbW9kZS0+Y3J0Y19jbG9jazsKKwkJY29uc3Qgc3Ry dWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUgPQorCQkJJmNydGNfc3RhdGUtPmJh c2UuYWRqdXN0ZWRfbW9kZTsKKwkJdW5zaWduZWQgYWN0aXZlX2NydGNzOworCisJCWlmIChzdGF0 ZS0+bW9kZXNldCkKKwkJCWFjdGl2ZV9jcnRjcyA9IHN0YXRlLT5hY3RpdmVfY3J0Y3M7CisJCWVs c2UKKwkJCWFjdGl2ZV9jcnRjcyA9IGRldl9wcml2LT5hY3RpdmVfY3J0Y3M7CisKKwkJd21fc3Rh dGUtPmN4c3IgPSBhY3RpdmVfY3J0Y3MgPT0gZHJtX2NydGNfbWFzaygmY3J0Yy0+YmFzZSk7CisK KwkJd21fc3RhdGUtPnNyLnBsYW5lX3dtID0KKwkJCWludGVsX2NhbGN1bGF0ZV93bShhZGp1c3Rl ZF9tb2RlLT5jcnRjX2Nsb2NrLAorCQkJCQkgICAmcGluZXZpZXdfZGlzcGxheV93bSwKKwkJCQkJ ICAgcGluZXZpZXdfZGlzcGxheV93bS5maWZvX3NpemUsCisJCQkJCSAgIGNwcCwgbGF0ZW5jeS0+ ZGlzcGxheV9zcik7CisKKwkJd21fc3RhdGUtPnNyLmN1cnNvcl93bSA9CisJCQlpbnRlbF9jYWxj dWxhdGVfd20oYWRqdXN0ZWRfbW9kZS0+Y3J0Y19jbG9jaywKKwkJCQkJICAgJnBpbmV2aWV3X2N1 cnNvcl93bSwKKwkJCQkJICAgcGluZXZpZXdfZGlzcGxheV93bS5maWZvX3NpemUsCisJCQkJCSAg IDQsIGxhdGVuY3ktPmN1cnNvcl9zcik7CisKKwkJd21fc3RhdGUtPmhwbGwucGxhbmVfd20gPQor CQkJaW50ZWxfY2FsY3VsYXRlX3dtKGFkanVzdGVkX21vZGUtPmNydGNfY2xvY2ssCisJCQkJCSAg ICZwaW5ldmlld19kaXNwbGF5X2hwbGxvZmZfd20sCisJCQkJCSAgIHBpbmV2aWV3X2Rpc3BsYXlf aHBsbG9mZl93bS5maWZvX3NpemUsCisJCQkJCSAgIGNwcCwgbGF0ZW5jeS0+ZGlzcGxheV9ocGxs X2Rpc2FibGUpOworCisJCXdtX3N0YXRlLT5ocGxsLmN1cnNvcl93bSA9CisJCQlpbnRlbF9jYWxj dWxhdGVfd20oYWRqdXN0ZWRfbW9kZS0+Y3J0Y19jbG9jaywKKwkJCQkJICAgJnBpbmV2aWV3X2N1 cnNvcl9ocGxsb2ZmX3dtLAorCQkJCQkgICBwaW5ldmlld19kaXNwbGF5X2hwbGxvZmZfd20uZmlm b19zaXplLAorCQkJCQkgICA0LCBsYXRlbmN5LT5jdXJzb3JfaHBsbF9kaXNhYmxlKTsKKworCQlE Uk1fREVCVUdfS01TKCJGSUZPIHdhdGVybWFya3MgLSBjYW4gY3hzcjogJXMsIGRpc3BsYXkgcGxh bmUgJWQsIGN1cnNvciBTUiBzaXplOiAlZFxuIiwKKwkJCSAgICAgIHllc25vKHdtX3N0YXRlLT5j eHNyKSwgd21fc3RhdGUtPnNyLnBsYW5lX3dtLCB3bV9zdGF0ZS0+c3IuY3Vyc29yX3dtKTsKKwl9 IGVsc2UKKwkJd21fc3RhdGUtPmN4c3IgPSBmYWxzZTsKKworCXJldHVybiAwOworfQorCitzdGF0 aWMgdm9pZCBwbnZfcHJvZ3JhbV93YXRlcm1hcmtzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKK3sKKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YzsKKwlzdHJ1Y3QgaTl4eF93bV9z dGF0ZSAqd21fc3RhdGUgPSBOVUxMOworCisJY3J0YyA9IHNpbmdsZV9lbmFibGVkX2NydGMoZGV2 X3ByaXYpOworCWlmIChjcnRjKQorCQl3bV9zdGF0ZSA9ICZjcnRjLT53bS5hY3RpdmUuaTl4eDsK KworCWlmICh3bV9zdGF0ZSAmJiB3bV9zdGF0ZS0+Y3hzcikgeworCQl1MzIgcmVnOwogCiAJCS8q IERpc3BsYXkgU1IgKi8KLQkJd20gPSBpbnRlbF9jYWxjdWxhdGVfd20oY2xvY2ssICZwaW5ldmll d19kaXNwbGF5X3dtLAotCQkJCQlwaW5ldmlld19kaXNwbGF5X3dtLmZpZm9fc2l6ZSwKLQkJCQkJ Y3BwLCBsYXRlbmN5LT5kaXNwbGF5X3NyKTsKIAkJcmVnID0gSTkxNV9SRUFEKERTUEZXMSk7CiAJ CXJlZyAmPSB+RFNQRldfU1JfTUFTSzsKLQkJcmVnIHw9IEZXX1dNKHdtLCBTUik7CisJCXJlZyB8 PSBGV19XTSh3bV9zdGF0ZS0+c3IucGxhbmVfd20sIFNSKTsKIAkJSTkxNV9XUklURShEU1BGVzEs IHJlZyk7CiAJCURSTV9ERUJVR19LTVMoIkRTUEZXMSByZWdpc3RlciBpcyAleFxuIiwgcmVnKTsK IAogCQkvKiBjdXJzb3IgU1IgKi8KLQkJd20gPSBpbnRlbF9jYWxjdWxhdGVfd20oY2xvY2ssICZw aW5ldmlld19jdXJzb3Jfd20sCi0JCQkJCXBpbmV2aWV3X2Rpc3BsYXlfd20uZmlmb19zaXplLAot CQkJCQk0LCBsYXRlbmN5LT5jdXJzb3Jfc3IpOwogCQlyZWcgPSBJOTE1X1JFQUQoRFNQRlczKTsK LQkJcmVnICY9IH5EU1BGV19DVVJTT1JfU1JfTUFTSzsKLQkJcmVnIHw9IEZXX1dNKHdtLCBDVVJT T1JfU1IpOworCQlyZWcgJj0gfihEU1BGV19DVVJTT1JfU1JfTUFTSyB8IERTUEZXX0hQTExfU1Jf TUFTSyB8IERTUEZXX0hQTExfQ1VSU09SX01BU0spOworCQlyZWcgfD0gRldfV00od21fc3RhdGUt PnNyLmN1cnNvcl93bSwgQ1VSU09SX1NSKTsKKwkJcmVnIHw9IEZXX1dNKHdtX3N0YXRlLT5ocGxs LnBsYW5lX3dtLCBIUExMX1NSKTsKKwkJcmVnIHw9IEZXX1dNKHdtX3N0YXRlLT5ocGxsLmN1cnNv cl93bSwgSFBMTF9TUik7CiAJCUk5MTVfV1JJVEUoRFNQRlczLCByZWcpOwogCi0JCS8qIERpc3Bs YXkgSFBMTCBvZmYgU1IgKi8KLQkJd20gPSBpbnRlbF9jYWxjdWxhdGVfd20oY2xvY2ssICZwaW5l dmlld19kaXNwbGF5X2hwbGxvZmZfd20sCi0JCQkJCXBpbmV2aWV3X2Rpc3BsYXlfaHBsbG9mZl93 bS5maWZvX3NpemUsCi0JCQkJCWNwcCwgbGF0ZW5jeS0+ZGlzcGxheV9ocGxsX2Rpc2FibGUpOwot CQlyZWcgPSBJOTE1X1JFQUQoRFNQRlczKTsKLQkJcmVnICY9IH5EU1BGV19IUExMX1NSX01BU0s7 Ci0JCXJlZyB8PSBGV19XTSh3bSwgSFBMTF9TUik7Ci0JCUk5MTVfV1JJVEUoRFNQRlczLCByZWcp OwotCi0JCS8qIGN1cnNvciBIUExMIG9mZiBTUiAqLwotCQl3bSA9IGludGVsX2NhbGN1bGF0ZV93 bShjbG9jaywgJnBpbmV2aWV3X2N1cnNvcl9ocGxsb2ZmX3dtLAotCQkJCQlwaW5ldmlld19kaXNw bGF5X2hwbGxvZmZfd20uZmlmb19zaXplLAotCQkJCQk0LCBsYXRlbmN5LT5jdXJzb3JfaHBsbF9k aXNhYmxlKTsKLQkJcmVnID0gSTkxNV9SRUFEKERTUEZXMyk7Ci0JCXJlZyAmPSB+RFNQRldfSFBM TF9DVVJTT1JfTUFTSzsKLQkJcmVnIHw9IEZXX1dNKHdtLCBIUExMX0NVUlNPUik7Ci0JCUk5MTVf V1JJVEUoRFNQRlczLCByZWcpOwogCQlEUk1fREVCVUdfS01TKCJEU1BGVzMgcmVnaXN0ZXIgaXMg JXhcbiIsIHJlZyk7CiAKLQkJaW50ZWxfc2V0X21lbW9yeV9jeHNyKGRldl9wcml2LCB0cnVlKTsK KwkJX2ludGVsX3NldF9tZW1vcnlfY3hzcihkZXZfcHJpdiwgdHJ1ZSk7CisJCWRldl9wcml2LT53 bS5pOXh4LmN4c3IgPSB0cnVlOwogCX0gZWxzZSB7Ci0JCWludGVsX3NldF9tZW1vcnlfY3hzcihk ZXZfcHJpdiwgZmFsc2UpOworCQlfaW50ZWxfc2V0X21lbW9yeV9jeHNyKGRldl9wcml2LCBmYWxz ZSk7CisJCWRldl9wcml2LT53bS5pOXh4LmN4c3IgPSBmYWxzZTsKIAl9CiB9CiAKQEAgLTIzMzUs NiArMjM3NSw0NyBAQCBzdGF0aWMgaW50IGk5eHhfY29tcHV0ZV9waXBlX3dtKHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQogCXJldHVybiAwOwogfQogCitzdGF0aWMgaW50IGk5 eHhfY29tcHV0ZV9pbnRlcm1lZGlhdGVfd20oc3RydWN0IGRybV9kZXZpY2UgKmRldiwKKwkJCQkg ICAgICAgc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMsCisJCQkJICAgICAgIHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpuZXdzdGF0ZSkKK3sKKwlzdHJ1Y3QgaTl4eF93bV9zdGF0ZSAqaW50 ZXJtZWRpYXRlID0gJm5ld3N0YXRlLT53bS5pOXh4LmludGVybWVkaWF0ZTsKKwljb25zdCBzdHJ1 Y3QgZHJtX2NydGNfc3RhdGUgKm9sZF9kcm1fc3RhdGUgPQorCQlkcm1fYXRvbWljX2dldF9vbGRf Y3J0Y19zdGF0ZShuZXdzdGF0ZS0+YmFzZS5zdGF0ZSwgJmludGVsX2NydGMtPmJhc2UpOworCWNv bnN0IHN0cnVjdCBpOXh4X3dtX3N0YXRlICpvbGQgPSAmdG9faW50ZWxfY3J0Y19zdGF0ZShvbGRf ZHJtX3N0YXRlKS0+d20uaTl4eC5vcHRpbWFsOworCWNvbnN0IHN0cnVjdCBpOXh4X3dtX3N0YXRl ICpvcHRpbWFsID0gJm5ld3N0YXRlLT53bS5pOXh4Lm9wdGltYWw7CisKKwkvKgorCSAqIFN0YXJ0 IHdpdGggdGhlIGZpbmFsLCB0YXJnZXQgd2F0ZXJtYXJrcywgdGhlbiBjb21iaW5lIHdpdGggdGhl CisJICogY3VycmVudGx5IGFjdGl2ZSB3YXRlcm1hcmtzIHRvIGdldCB2YWx1ZXMgdGhhdCBhcmUg c2FmZSBib3RoIGJlZm9yZQorCSAqIGFuZCBhZnRlciB0aGUgdmJsYW5rLgorCSAqLworCSppbnRl cm1lZGlhdGUgPSAqb3B0aW1hbDsKKwlpZiAobmV3c3RhdGUtPmRpc2FibGVfY3hzcikKKwkJaW50 ZXJtZWRpYXRlLT5jeHNyID0gZmFsc2U7CisKKwlpZiAoIW5ld3N0YXRlLT5iYXNlLmFjdGl2ZSB8 fAorCSAgICBkcm1fYXRvbWljX2NydGNfbmVlZHNfbW9kZXNldCgmbmV3c3RhdGUtPmJhc2UpKQor CQlnb3RvIG91dDsKKworCWludGVybWVkaWF0ZS0+cGxhbmVfd20gPSBtaW4ob2xkLT5wbGFuZV93 bSwgb3B0aW1hbC0+cGxhbmVfd20pOworCWludGVybWVkaWF0ZS0+c3IucGxhbmVfd20gPSBtaW4o b2xkLT5zci5wbGFuZV93bSwgb3B0aW1hbC0+c3IucGxhbmVfd20pOworCWludGVybWVkaWF0ZS0+ c3IuY3Vyc29yX3dtID0gbWluKG9sZC0+c3IuY3Vyc29yX3dtLCBvcHRpbWFsLT5zci5jdXJzb3Jf d20pOworCWludGVybWVkaWF0ZS0+aHBsbC5wbGFuZV93bSA9IG1pbihvbGQtPmhwbGwucGxhbmVf d20sIG9wdGltYWwtPmhwbGwucGxhbmVfd20pOworCWludGVybWVkaWF0ZS0+aHBsbC5jdXJzb3Jf d20gPSBtaW4ob2xkLT5ocGxsLmN1cnNvcl93bSwgb3B0aW1hbC0+aHBsbC5jdXJzb3Jfd20pOwor CitvdXQ6CisJLyoKKwkgKiBJZiBvdXIgaW50ZXJtZWRpYXRlIFdNIGFyZSBpZGVudGljYWwgdG8g dGhlIGZpbmFsIFdNLCB0aGVuIHdlIGNhbgorCSAqIG9taXQgdGhlIHBvc3QtdmJsYW5rIHByb2dy YW1taW5nOyBvbmx5IHVwZGF0ZSBpZiBpdCdzIGRpZmZlcmVudC4KKwkgKi8KKwlpZiAobmV3c3Rh dGUtPmJhc2UuYWN0aXZlICYmCisJICAgIG1lbWNtcChpbnRlcm1lZGlhdGUsIG9wdGltYWwsIHNp emVvZigqaW50ZXJtZWRpYXRlKSkgIT0gMCkKKwkJbmV3c3RhdGUtPndtLm5lZWRfcG9zdHZibF91 cGRhdGUgPSB0cnVlOworCisJcmV0dXJuIDA7Cit9CisKIHZvaWQgaTl4eF93bV9nZXRfaHdfc3Rh dGUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSB0b19pOTE1KGRldik7CkBAIC0yMzYzLDE3ICsyNDQ0LDE1IEBAIHZvaWQgaTl4 eF93bV9nZXRfaHdfc3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAl9CiB9CiAKLXN0YXRp YyB2b2lkIGk5eHhfdXBkYXRlX3dtKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQorc3RhdGljIHZv aWQgaTl4eF9wcm9ncmFtX3dhdGVybWFya3Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQogewotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0 Yy0+YmFzZS5kZXYpOworCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjOwogCXVpbnQzMl90IGZ3YXRl cl9sbzsKIAl1aW50MzJfdCBmd2F0ZXJfaGk7CiAJaW50IGN3bSwgc3J3bSA9IC0xOwogCWludCBw bGFuZWFfd20sIHBsYW5lYl93bTsKIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqZW5hYmxlZCA9IE5VTEw7 CiAKLQljcnRjLT53bS5hY3RpdmUuaTl4eCA9IGNydGMtPmNvbmZpZy0+d20uaTl4eC5vcHRpbWFs OwotCiAJY3J0YyA9IGludGVsX2dldF9jcnRjX2Zvcl9wbGFuZShkZXZfcHJpdiwgMCk7CiAJcGxh bmVhX3dtID0gY3J0Yy0+d20uYWN0aXZlLmk5eHgucGxhbmVfd207CiAJaWYgKGludGVsX2NydGNf YWN0aXZlKGNydGMpKQpAQCAtMjM5OSw3ICsyNDc4LDcgQEAgc3RhdGljIHZvaWQgaTl4eF91cGRh dGVfd20oc3RydWN0IGludGVsX2NydGMgKmNydGMpCiAJY3dtID0gMjsKIAogCS8qIFBsYXkgc2Fm ZSBhbmQgZGlzYWJsZSBzZWxmLXJlZnJlc2ggYmVmb3JlIGFkanVzdGluZyB3YXRlcm1hcmtzLiAq LwotCWludGVsX3NldF9tZW1vcnlfY3hzcihkZXZfcHJpdiwgZmFsc2UpOworCV9pbnRlbF9zZXRf bWVtb3J5X2N4c3IoZGV2X3ByaXYsIGZhbHNlKTsKIAogCS8qIENhbGMgc3IgZW50cmllcyBmb3Ig b25lIHBsYW5lIGNvbmZpZ3MgKi8KIAlpZiAoZW5hYmxlZCAmJiBlbmFibGVkLT53bS5hY3RpdmUu aTl4eC5jeHNyKSB7CkBAIC0yNDI2LDE5ICsyNTA1LDE3IEBAIHN0YXRpYyB2b2lkIGk5eHhfdXBk YXRlX3dtKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQogCUk5MTVfV1JJVEUoRldfQkxDMiwgZndh dGVyX2hpKTsKIAogCWlmIChlbmFibGVkKQotCQlpbnRlbF9zZXRfbWVtb3J5X2N4c3IoZGV2X3By aXYsIHRydWUpOworCQlfaW50ZWxfc2V0X21lbW9yeV9jeHNyKGRldl9wcml2LCB0cnVlKTsKKwor CWRldl9wcml2LT53bS5pOXh4LmN4c3IgPSBlbmFibGVkOwogfQogCi1zdGF0aWMgdm9pZCBpODQ1 X3VwZGF0ZV93bShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKK3N0YXRpYyB2b2lkIGk4NDVfcHJv Z3JhbV93YXRlcm1hcmtzKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQogewogCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwogCXVpbnQz Ml90IGZ3YXRlcl9sbzsKIAlpbnQgcGxhbmVhX3dtOwogCi0JaWYgKCFpbnRlbF9jcnRjX2FjdGl2 ZShjcnRjKSkKLQkJcmV0dXJuOwotCi0JY3J0Yy0+d20uYWN0aXZlLmk5eHggPSBjcnRjLT5jb25m aWctPndtLmk5eHgub3B0aW1hbDsKIAlwbGFuZWFfd20gPSBjcnRjLT53bS5hY3RpdmUuaTl4eC5w bGFuZV93bTsKIAogCWZ3YXRlcl9sbyA9IEk5MTVfUkVBRChGV19CTEMpICYgfjB4ZmZmOwpAQCAt MjQ0OSw2ICsyNTI2LDQ1IEBAIHN0YXRpYyB2b2lkIGk4NDVfdXBkYXRlX3dtKHN0cnVjdCBpbnRl bF9jcnRjICpjcnRjKQogCUk5MTVfV1JJVEUoRldfQkxDLCBmd2F0ZXJfbG8pOwogfQogCisKK3N0 YXRpYyB2b2lkIGk5eHhfaW5pdGlhbF93YXRlcm1hcmtzKHN0cnVjdCBpbnRlbF9hdG9taWNfc3Rh dGUgKnN0YXRlLAorCQkJCSAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQor eworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Y19zdGF0 ZS0+YmFzZS5jcnRjLT5kZXYpOworCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxf Y3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNydGMpOworCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9j cnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNydGMpOworCisJbXV0ZXhfbG9j aygmZGV2X3ByaXYtPndtLndtX211dGV4KTsKKwljcnRjLT53bS5hY3RpdmUuaTl4eCA9IGNydGNf c3RhdGUtPndtLmk5eHguaW50ZXJtZWRpYXRlOworCWlmIChJU19QSU5FVklFVyhkZXZfcHJpdikp CisJCXBudl9wcm9ncmFtX3dhdGVybWFya3MoZGV2X3ByaXYpOworCWVsc2UgaWYgKElOVEVMX0lO Rk8oZGV2X3ByaXYpLT5udW1fcGlwZXMgPT0gMSkKKwkJaTg0NV9wcm9ncmFtX3dhdGVybWFya3Mo aW50ZWxfY3J0Yyk7CisJZWxzZQorCQlpOXh4X3Byb2dyYW1fd2F0ZXJtYXJrcyhkZXZfcHJpdik7 CisJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+d20ud21fbXV0ZXgpOworfQorCitzdGF0aWMgdm9p ZCBpOXh4X29wdGltaXplX3dhdGVybWFya3Moc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3Rh dGUsCisJCQkJICAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQoreworCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Y19zdGF0ZS0+YmFz ZS5jcnRjLT5kZXYpOworCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxf Y3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNydGMpOworCisJaWYgKCFjcnRjX3N0YXRlLT53bS5uZWVk X3Bvc3R2YmxfdXBkYXRlKQorCQlyZXR1cm47CisKKwltdXRleF9sb2NrKCZkZXZfcHJpdi0+d20u d21fbXV0ZXgpOworCWludGVsX2NydGMtPndtLmFjdGl2ZS5pOXh4ID0gY3J0Y19zdGF0ZS0+d20u aTl4eC5vcHRpbWFsOworCWlmIChJU19QSU5FVklFVyhkZXZfcHJpdikpCisJCXBudl9wcm9ncmFt X3dhdGVybWFya3MoZGV2X3ByaXYpOworCWVsc2UgaWYgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5u dW1fcGlwZXMgPT0gMSkKKwkJaTg0NV9wcm9ncmFtX3dhdGVybWFya3MoaW50ZWxfY3J0Yyk7CisJ ZWxzZQorCQlpOXh4X3Byb2dyYW1fd2F0ZXJtYXJrcyhkZXZfcHJpdik7CisJbXV0ZXhfdW5sb2Nr KCZkZXZfcHJpdi0+d20ud21fbXV0ZXgpOworfQorCiAvKiBsYXRlbmN5IG11c3QgYmUgaW4gMC4x dXMgdW5pdHMuICovCiBzdGF0aWMgdW5zaWduZWQgaW50IGlsa193bV9tZXRob2QxKHVuc2lnbmVk IGludCBwaXhlbF9yYXRlLAogCQkJCSAgIHVuc2lnbmVkIGludCBjcHAsCkBAIC05MDM0LDI0ICs5 MTUwLDMzIEBAIHZvaWQgaW50ZWxfaW5pdF9wbShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCiAJCQkJIGRldl9wcml2LT5mc2JfZnJlcSwgZGV2X3ByaXYtPm1lbV9mcmVxKTsKIAkJ CS8qIERpc2FibGUgQ3hTUiBhbmQgbmV2ZXIgdXBkYXRlIGl0cyB3YXRlcm1hcmsgYWdhaW4gKi8K IAkJCWludGVsX3NldF9tZW1vcnlfY3hzcihkZXZfcHJpdiwgZmFsc2UpOwotCQkJZGV2X3ByaXYt PmRpc3BsYXkudXBkYXRlX3dtID0gTlVMTDsKLQkJfSBlbHNlCi0JCQlkZXZfcHJpdi0+ZGlzcGxh eS51cGRhdGVfd20gPSBwaW5ldmlld191cGRhdGVfd207CisJCQlkZXZfcHJpdi0+ZGlzcGxheS5j b21wdXRlX3BpcGVfd20gPSBOVUxMOworCQkJZGV2X3ByaXYtPmRpc3BsYXkuaW5pdGlhbF93YXRl cm1hcmtzID0gTlVMTDsKKwkJCWRldl9wcml2LT5kaXNwbGF5Lm9wdGltaXplX3dhdGVybWFya3Mg PSBOVUxMOworCQl9IGVsc2UgeworCQkJZGV2X3ByaXYtPmRpc3BsYXkuY29tcHV0ZV9waXBlX3dt ID0gcG52X2NvbXB1dGVfcGlwZV93bTsKKwkJCWRldl9wcml2LT5kaXNwbGF5LmluaXRpYWxfd2F0 ZXJtYXJrcyA9IGk5eHhfaW5pdGlhbF93YXRlcm1hcmtzOworCQkJZGV2X3ByaXYtPmRpc3BsYXku b3B0aW1pemVfd2F0ZXJtYXJrcyA9IGk5eHhfb3B0aW1pemVfd2F0ZXJtYXJrczsKKwkJfQogCX0g ZWxzZSBpZiAoSVNfR0VONChkZXZfcHJpdikpIHsKIAkJZGV2X3ByaXYtPmRpc3BsYXkudXBkYXRl X3dtID0gaTk2NV91cGRhdGVfd207CiAJfSBlbHNlIGlmIChJU19HRU4zKGRldl9wcml2KSkgewog CQlkZXZfcHJpdi0+ZGlzcGxheS5jb21wdXRlX3BpcGVfd20gPSBpOXh4X2NvbXB1dGVfcGlwZV93 bTsKLQkJZGV2X3ByaXYtPmRpc3BsYXkudXBkYXRlX3dtID0gaTl4eF91cGRhdGVfd207CisJCWRl dl9wcml2LT5kaXNwbGF5LmNvbXB1dGVfaW50ZXJtZWRpYXRlX3dtID0gaTl4eF9jb21wdXRlX2lu dGVybWVkaWF0ZV93bTsKKworCQlkZXZfcHJpdi0+ZGlzcGxheS5pbml0aWFsX3dhdGVybWFya3Mg PSBpOXh4X2luaXRpYWxfd2F0ZXJtYXJrczsKKwkJZGV2X3ByaXYtPmRpc3BsYXkub3B0aW1pemVf d2F0ZXJtYXJrcyA9IGk5eHhfb3B0aW1pemVfd2F0ZXJtYXJrczsKIAogCQlkZXZfcHJpdi0+ZGlz cGxheS5nZXRfZmlmb19zaXplID0gaTl4eF9nZXRfZmlmb19zaXplOwogCX0gZWxzZSBpZiAoSVNf R0VOMihkZXZfcHJpdikpIHsKIAkJZGV2X3ByaXYtPmRpc3BsYXkuY29tcHV0ZV9waXBlX3dtID0g aTl4eF9jb21wdXRlX3BpcGVfd207CisJCWRldl9wcml2LT5kaXNwbGF5LmNvbXB1dGVfaW50ZXJt ZWRpYXRlX3dtID0gaTl4eF9jb21wdXRlX2ludGVybWVkaWF0ZV93bTsKKwkJZGV2X3ByaXYtPmRp c3BsYXkuaW5pdGlhbF93YXRlcm1hcmtzID0gaTl4eF9pbml0aWFsX3dhdGVybWFya3M7CisJCWRl dl9wcml2LT5kaXNwbGF5Lm9wdGltaXplX3dhdGVybWFya3MgPSBpOXh4X29wdGltaXplX3dhdGVy bWFya3M7CiAKIAkJaWYgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5udW1fcGlwZXMgPT0gMSkgewot CQkJZGV2X3ByaXYtPmRpc3BsYXkudXBkYXRlX3dtID0gaTg0NV91cGRhdGVfd207CiAJCQlkZXZf cHJpdi0+ZGlzcGxheS5nZXRfZmlmb19zaXplID0gaTg0NV9nZXRfZmlmb19zaXplOwogCQl9IGVs c2UgewotCQkJZGV2X3ByaXYtPmRpc3BsYXkudXBkYXRlX3dtID0gaTl4eF91cGRhdGVfd207CiAJ CQlkZXZfcHJpdi0+ZGlzcGxheS5nZXRfZmlmb19zaXplID0gaTgzMF9nZXRfZmlmb19zaXplOwog CQl9CiAJfSBlbHNlIHsKLS0gCjIuMTQuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vaW50ZWwtZ2Z4Cg==