From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mahesh Kumar Subject: [PATCH v7 8/8] drm/i915/gen9: WM memory bandwidth related workaround Date: Thu, 1 Dec 2016 21:19:40 +0530 Message-ID: <20161201154940.24446-9-mahesh1.kumar@intel.com> References: <20161201154940.24446-1-mahesh1.kumar@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id CE7786E828 for ; Thu, 1 Dec 2016 15:48:35 +0000 (UTC) In-Reply-To: <20161201154940.24446-1-mahesh1.kumar@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 Cc: paulo.r.zanoni@intel.com, maarten.lankhorst@intel.com List-Id: intel-gfx@lists.freedesktop.org VGhpcyBwYXRjaCBpbXBsZW1uZXRzIFdvcmthcml1bmRzIHJlbGF0ZWQgdG8gZGlzcGxheSBhcmJp dHJhdGVkIG1lbW9yeQpiYW5kd2lkdGguIFRoZXNlIFdBIGFyZSBhcHBsaWNhYmUgZm9yIGFsbCBn ZW4tOSBiYXNlZCBwbGF0Zm9ybXMuCgpDaGFuZ2VzIHNpbmNlIHYxOgogLSBSZWJhc2Ugb24gdG9w IG9mIFBhdWxvJ3MgcGF0Y2ggc2VyaWVzCkNoYW5nZXMgc2luY2UgdjI6CiAtIEFkZHJlc3MgcmV2 aWV3IGNvbW1lbnRzCiAtIFJlYmFzZS9yZXdvcmsgYXMgcGVyIG90aGVyIHBhdGNoIGNoYW5nZXMg aW4gc2VyaWVzCkNoYW5nZXMgc2luY2UgdjM6CiAtIFJld29yayBiYXNlZCBvbiBNYWFydGVuJ3Mg Y29tbWVudHMKClNpZ25lZC1vZmYtYnk6IE1haGVzaCBLdW1hciA8bWFoZXNoMS5rdW1hckBpbnRl bC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgIHwgIDExICsr KwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHwgIDI0ICsrKysrKwogZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyAgICAgIHwgMTU1ICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKy0tCiAzIGZpbGVzIGNoYW5nZWQsIDE4MSBpbnNlcnRpb25zKCspLCA5 IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCmluZGV4IDY5MjEzYTQuLjMxMjYy NTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAtMTIxNiw2ICsxMjE2LDEzIEBAIGVudW0g aW50ZWxfc2JpX2Rlc3RpbmF0aW9uIHsKIAlTQklfTVBIWSwKIH07CiAKKy8qIFNLTCsgV2F0ZXJt YXJrIGFyYml0cmF0ZWQgZGlzcGxheSBiYW5kd2lkdGggV29ya2Fyb3VuZHMgKi8KK2VudW0gd2F0 ZXJtYXJrX21lbW9yeV93YSB7CisJV0FURVJNQVJLX1dBX05PTkUsCisJV0FURVJNQVJLX1dBX1hf VElMRUQsCisJV0FURVJNQVJLX1dBX1lfVElMRUQsCit9OworCiAjZGVmaW5lIFFVSVJLX1BJUEVB X0ZPUkNFICgxPDwwKQogI2RlZmluZSBRVUlSS19MVkRTX1NTQ19ESVNBQkxFICgxPDwxKQogI2Rl ZmluZSBRVUlSS19JTlZFUlRfQlJJR0hUTkVTUyAoMTw8MikKQEAgLTE3ODgsNiArMTc5NSwxMCBA QCBzdHJ1Y3Qgc2tsX2RkYl9hbGxvY2F0aW9uIHsKIAogc3RydWN0IHNrbF93bV92YWx1ZXMgewog CXVuc2lnbmVkIGRpcnR5X3BpcGVzOworCS8qIGFueSBXYXRlck1hcmsgbWVtb3J5IHdvcmthcm91 bmQgUmVxdWlyZWQgKi8KKwllbnVtIHdhdGVybWFya19tZW1vcnlfd2EgbWVtX3dhOworCXVpbnQz Ml90IHBpcGVfYndfa2Jwc1tJOTE1X01BWF9QSVBFU107CisJYm9vbCBwaXBlX3l0aWxlZFtJOTE1 X01BWF9QSVBFU107CiAJc3RydWN0IHNrbF9kZGJfYWxsb2NhdGlvbiBkZGI7CiB9OwogCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKaW5kZXggNWQxMTAwMi4uZjhkYTQ4OCAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwpAQCAtMTQ1NzQsNiArMTQ1NzQsMjggQEAgc3Rh dGljIHZvaWQgaW50ZWxfYXRvbWljX3RyYWNrX2ZicyhzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAq c3RhdGUpCiAJCQkJICB0b19pbnRlbF9wbGFuZShwbGFuZSktPmZyb250YnVmZmVyX2JpdCk7CiB9 CiAKK3N0YXRpYyB2b2lkCitpbnRlbF91cGRhdGVfd21fYndfd2Eoc3RydWN0IGRybV9hdG9taWNf c3RhdGUgKnN0YXRlKQoreworCXN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKmludGVsX3N0YXRl ID0gdG9faW50ZWxfYXRvbWljX3N0YXRlKHN0YXRlKTsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHN0YXRlLT5kZXYpOworCWNvbnN0IHN0cnVjdCBkcm1fY3J0 YyAqY3J0YzsKKwljb25zdCBzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNzdGF0ZTsKKwlzdHJ1Y3Qg c2tsX3dtX3ZhbHVlcyAqcmVzdWx0cyA9ICZpbnRlbF9zdGF0ZS0+d21fcmVzdWx0czsKKwlzdHJ1 Y3Qgc2tsX3dtX3ZhbHVlcyAqaHdfdmFscyA9ICZkZXZfcHJpdi0+d20uc2tsX2h3OworCWludCBp OworCisJaWYgKCFJU19HRU45KGRldl9wcml2KSkKKwkJcmV0dXJuOworCisJZm9yX2VhY2hfY3J0 Y19pbl9zdGF0ZShzdGF0ZSwgY3J0YywgY3N0YXRlLCBpKSB7CisJCWh3X3ZhbHMtPnBpcGVfYndf a2Jwc1tpXSA9IHJlc3VsdHMtPnBpcGVfYndfa2Jwc1tpXTsKKwkJaHdfdmFscy0+cGlwZV95dGls ZWRbaV0gPSByZXN1bHRzLT5waXBlX3l0aWxlZFtpXTsKKwl9CisKKwlod192YWxzLT5tZW1fd2Eg PSByZXN1bHRzLT5tZW1fd2E7Cit9CisKIC8qKgogICogaW50ZWxfYXRvbWljX2NvbW1pdCAtIGNv bW1pdCB2YWxpZGF0ZWQgc3RhdGUgb2JqZWN0CiAgKiBAZGV2OiBEUk0gZGV2aWNlCkBAIC0xNDYx NCw2ICsxNDYzNiw4IEBAIHN0YXRpYyBpbnQgaW50ZWxfYXRvbWljX2NvbW1pdChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LAogCWludGVsX3NoYXJlZF9kcGxsX2NvbW1pdChzdGF0ZSk7CiAJaW50ZWxf YXRvbWljX3RyYWNrX2ZicyhzdGF0ZSk7CiAKKwlpbnRlbF91cGRhdGVfd21fYndfd2Eoc3RhdGUp OworCiAJaWYgKGludGVsX3N0YXRlLT5tb2Rlc2V0KSB7CiAJCW1lbWNweShkZXZfcHJpdi0+bWlu X3BpeGNsaywgaW50ZWxfc3RhdGUtPm1pbl9waXhjbGssCiAJCSAgICAgICBzaXplb2YoaW50ZWxf c3RhdGUtPm1pbl9waXhjbGspKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCmluZGV4IGNjOGZjODQu LmZkYTZlMWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwpAQCAtMjg3OCwxMSArMjg3OCw3IEBA IGJvb2wgaWxrX2Rpc2FibGVfbHBfd20oc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAogI2RlZmlu ZSBTS0xfU0FHVl9CTE9DS19USU1FCTMwIC8qIMK1cyAqLwogCi0vKgotICogRklYTUU6IFdlIHN0 aWxsIGRvbid0IGhhdmUgdGhlIHByb3BlciBjb2RlIGRldGVjdCBpZiB3ZSBuZWVkIHRvIGFwcGx5 IHRoZSBXQSwKLSAqIHNvIGFzc3VtZSB3ZSdsbCBhbHdheXMgbmVlZCBpdCBpbiBvcmRlciB0byBh dm9pZCB1bmRlcnJ1bnMuCi0gKi8KLXN0YXRpYyBib29sIHNrbF9uZWVkc19tZW1vcnlfYndfd2Eo c3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUpCitzdGF0aWMgYm9vbCBpbnRlbF9uZWVk c19tZW1vcnlfYndfd2Eoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3RhdGUpCiB7CiAJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShzdGF0ZS0+YmFzZS5kZXYp OwogCkBAIC0zMDU2LDcgKzMwNTIsNyBAQCBib29sIGludGVsX2Nhbl9lbmFibGVfc2FndihzdHJ1 Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCiAKIAkJbGF0ZW5jeSA9IGRldl9wcml2LT53bS5z a2xfbGF0ZW5jeVtsZXZlbF07CiAKLQkJaWYgKHNrbF9uZWVkc19tZW1vcnlfYndfd2EoaW50ZWxf c3RhdGUpICYmCisJCWlmIChpbnRlbF9uZWVkc19tZW1vcnlfYndfd2EoaW50ZWxfc3RhdGUpICYm CiAJCSAgICBwbGFuZS0+YmFzZS5zdGF0ZS0+ZmItPm1vZGlmaWVyID09CiAJCSAgICBJOTE1X0ZP Uk1BVF9NT0RfWF9USUxFRCkKIAkJCWxhdGVuY3kgKz0gMTU7CkBAIC0zNTg0LDcgKzM1ODAsNyBA QCBzdGF0aWMgaW50IHNrbF9jb21wdXRlX3BsYW5lX3dtKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKIAl1aW50MzJfdCB5X21pbl9zY2FubGluZXM7CiAJc3RydWN0IGlu dGVsX2F0b21pY19zdGF0ZSAqc3RhdGUgPQogCQl0b19pbnRlbF9hdG9taWNfc3RhdGUoY3N0YXRl LT5iYXNlLnN0YXRlKTsKLQlib29sIGFwcGx5X21lbW9yeV9id193YSA9IHNrbF9uZWVkc19tZW1v cnlfYndfd2Eoc3RhdGUpOworCWVudW0gd2F0ZXJtYXJrX21lbW9yeV93YSBtZW1fd2E7CiAJYm9v bCB5X3RpbGVkLCB4X3RpbGVkOwogCiAJaWYgKGxhdGVuY3kgPT0gMCB8fCAhY3N0YXRlLT5iYXNl LmFjdGl2ZSB8fCAhaW50ZWxfcHN0YXRlLT5iYXNlLnZpc2libGUpIHsKQEAgLTM2MDAsNyArMzU5 Niw4IEBAIHN0YXRpYyBpbnQgc2tsX2NvbXB1dGVfcGxhbmVfd20oY29uc3Qgc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAogCWlmIChJU19LQUJZTEFLRShkZXZfcHJpdikgJiYgZGV2 X3ByaXYtPmlwY19lbmFibGVkKQogCQlsYXRlbmN5ICs9IDQ7CiAKLQlpZiAoYXBwbHlfbWVtb3J5 X2J3X3dhICYmIHhfdGlsZWQpCisJbWVtX3dhID0gc3RhdGUtPndtX3Jlc3VsdHMubWVtX3dhOwor CWlmIChtZW1fd2EgIT0gV0FURVJNQVJLX1dBX05PTkUgJiYgeF90aWxlZCkKIAkJbGF0ZW5jeSAr PSAxNTsKIAogCXdpZHRoID0gZHJtX3JlY3Rfd2lkdGgoJmludGVsX3BzdGF0ZS0+YmFzZS5zcmMp ID4+IDE2OwpAQCAtMzYzNSw3ICszNjMyLDcgQEAgc3RhdGljIGludCBza2xfY29tcHV0ZV9wbGFu ZV93bShjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCXlfbWluX3Nj YW5saW5lcyA9IDQ7CiAJfQogCi0JaWYgKGFwcGx5X21lbW9yeV9id193YSkKKwlpZiAobWVtX3dh ID09IFdBVEVSTUFSS19XQV9ZX1RJTEVEKQogCQl5X21pbl9zY2FubGluZXMgKj0gMjsKIAogCXBs YW5lX2J5dGVzX3Blcl9saW5lID0gd2lkdGggKiBjcHA7CkBAIC00MDYzLDYgKzQwNjAsMTUgQEAg c2tsX2NvbXB1dGVfZGRiKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKIAl9CiAKIAkv KgorCSAqIElmIFdhdGVybWFyayB3b3JrYXJvdW5kIGlzIGNoYW5nZWQgd2UgbmVlZCB0byByZWNh bGN1bGF0ZQorCSAqIHdhdGVybWFyayB2YWx1ZXMgZm9yIGFsbCBhY3RpdmUgcGlwZXMKKwkgKi8K KwlpZiAoaW50ZWxfc3RhdGUtPndtX3Jlc3VsdHMubWVtX3dhICE9IGRldl9wcml2LT53bS5za2xf aHcubWVtX3dhKSB7CisJCXJlYWxsb2NfcGlwZXMgPSB+MDsKKwkJaW50ZWxfc3RhdGUtPndtX3Jl c3VsdHMuZGlydHlfcGlwZXMgPSB+MDsKKwl9CisKKwkvKgogCSAqIFdlJ3JlIG5vdCByZWNvbXB1 dGluZyBmb3IgdGhlIHBpcGVzIG5vdCBpbmNsdWRlZCBpbiB0aGUgY29tbWl0LCBzbwogCSAqIG1h a2Ugc3VyZSB3ZSBzdGFydCB3aXRoIHRoZSBjdXJyZW50IHN0YXRlLgogCSAqLwpAQCAtNDA4Nyw2 ICs0MDkzLDEzMyBAQCBza2xfY29tcHV0ZV9kZGIoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0 YXRlKQogCXJldHVybiAwOwogfQogCitzdGF0aWMgaW50Citza2xfY29tcHV0ZV9tZW1vcnlfYmFu ZHdpZHRoX3dtX3dhKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKK3sKKwlzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2ID0gc3RhdGUtPmRldjsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSB0b19pOTE1KGRldik7CisJc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqaW50 ZWxfc3RhdGUgPSB0b19pbnRlbF9hdG9taWNfc3RhdGUoc3RhdGUpOworCXN0cnVjdCBtZW1kZXZf aW5mbyAqbWVtZGV2X2luZm8gPSAmZGV2X3ByaXYtPm1lbWRldl9pbmZvOworCXN0cnVjdCBza2xf d21fdmFsdWVzICpyZXN1bHRzID0gJmludGVsX3N0YXRlLT53bV9yZXN1bHRzOworCXN0cnVjdCBk cm1fY3J0YyAqY3J0YzsKKwlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNzdGF0ZTsKKwlpbnQgYWN0 aXZlX3BpcGVzID0gMDsKKwl1aW50MzJfdCBtYXhfcGlwZV9id19rYnBzID0gMCwgdG90YWxfcGlw ZV9id19rYnBzOworCWludCBkaXNwbGF5X2J3X3BlcmNlbnRhZ2U7CisJYm9vbCB5X3RpbGVfZW5h YmxlZCA9IGZhbHNlOworCWludCByZXQsIGk7CisKKwlpZiAoIWludGVsX25lZWRzX21lbW9yeV9i d193YShpbnRlbF9zdGF0ZSkpIHsKKwkJcmVzdWx0cy0+bWVtX3dhID0gV0FURVJNQVJLX1dBX05P TkU7CisJCXJldHVybiAwOworCX0KKworCWlmICghbWVtZGV2X2luZm8tPnZhbGlkKQorCQlnb3Rv IGV4aXQ7CisKKwlyZXQgPSBkcm1fbW9kZXNldF9sb2NrKCZkZXYtPm1vZGVfY29uZmlnLmNvbm5l Y3Rpb25fbXV0ZXgsCisJCQlzdGF0ZS0+YWNxdWlyZV9jdHgpOworCWlmIChyZXQpCisJCXJldHVy biByZXQ7CisKKwltZW1jcHkocmVzdWx0cy0+cGlwZV9id19rYnBzLCBkZXZfcHJpdi0+d20uc2ts X2h3LnBpcGVfYndfa2JwcywKKwkJCXNpemVvZihyZXN1bHRzLT5waXBlX2J3X2ticHMpKTsKKwlt ZW1jcHkocmVzdWx0cy0+cGlwZV95dGlsZWQsIGRldl9wcml2LT53bS5za2xfaHcucGlwZV95dGls ZWQsCisJCQlzaXplb2YocmVzdWx0cy0+cGlwZV95dGlsZWQpKTsKKworCWZvcl9lYWNoX2NydGNf aW5fc3RhdGUoc3RhdGUsIGNydGMsIGNzdGF0ZSwgaSkgeworCQlzdHJ1Y3QgZHJtX3BsYW5lICpw bGFuZTsKKwkJY29uc3Qgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqcHN0YXRlOworCQlpbnQgYWN0 aXZlX3BsYW5lcyA9IDA7CisJCXVpbnQzMl90IG1heF9wbGFuZV9id19rYnBzID0gMDsKKworCQly ZXN1bHRzLT5waXBlX3l0aWxlZFtpXSA9IGZhbHNlOworCisJCWlmICghY3N0YXRlLT5hY3RpdmUp IHsKKwkJCXJlc3VsdHMtPnBpcGVfYndfa2Jwc1tpXSA9IDA7CisJCQljb250aW51ZTsKKwkJfQor CisJCWRybV9hdG9taWNfY3J0Y19zdGF0ZV9mb3JfZWFjaF9wbGFuZV9zdGF0ZShwbGFuZSwgcHN0 YXRlLAorCQkJCQkJCQljc3RhdGUpIHsKKwkJCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiOwor CQkJdWludDMyX3QgcGxhbmVfYndfa2JwczsKKwkJCWVudW0gcGxhbmVfaWQgaWQgPSB0b19pbnRl bF9wbGFuZShwbGFuZSktPmlkOworCisJCQlpZiAoIXBzdGF0ZS0+dmlzaWJsZSkKKwkJCQljb250 aW51ZTsKKworCQkJaWYgKFdBUk5fT04oIXBzdGF0ZS0+ZmIpKQorCQkJCWNvbnRpbnVlOworCisJ CQlpZiAoaWQgPT0gUExBTkVfQ1VSU09SKQorCQkJCWNvbnRpbnVlOworCisJCQlmYiA9IHBzdGF0 ZS0+ZmI7CisJCQlpZiAoKGZiLT5tb2RpZmllciA9PSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRCB8 fAorCQkJCWZiLT5tb2RpZmllciA9PSBJOTE1X0ZPUk1BVF9NT0RfWWZfVElMRUQpKQorCQkJCXJl c3VsdHMtPnBpcGVfeXRpbGVkW2ldID0gdHJ1ZTsKKworCQkJcGxhbmVfYndfa2JwcyA9IHNrbF9h ZGp1c3RlZF9wbGFuZV9waXhlbF9yYXRlKAorCQkJCQkJdG9faW50ZWxfY3J0Y19zdGF0ZShjc3Rh dGUpLAorCQkJCQkJdG9faW50ZWxfcGxhbmVfc3RhdGUocHN0YXRlKSk7CisJCQltYXhfcGxhbmVf Yndfa2JwcyA9IG1heChwbGFuZV9id19rYnBzLAorCQkJCQkJCW1heF9wbGFuZV9id19rYnBzKTsK KwkJCWFjdGl2ZV9wbGFuZXMrKzsKKwkJfQorCQlyZXN1bHRzLT5waXBlX2J3X2ticHNbaV0gPSBt YXhfcGxhbmVfYndfa2JwcyAqIGFjdGl2ZV9wbGFuZXM7CisJfQorCisJZm9yX2VhY2hfcGlwZShk ZXZfcHJpdiwgaSkgeworCQlpZiAocmVzdWx0cy0+cGlwZV9id19rYnBzW2ldKSB7CisJCQltYXhf cGlwZV9id19rYnBzID0gbWF4KG1heF9waXBlX2J3X2ticHMsCisJCQkJCXJlc3VsdHMtPnBpcGVf Yndfa2Jwc1tpXSk7CisJCQlhY3RpdmVfcGlwZXMrKzsKKwkJfQorCQlpZiAocmVzdWx0cy0+cGlw ZV95dGlsZWRbaV0pCisJCQl5X3RpbGVfZW5hYmxlZCA9IHRydWU7CisJfQorCisJdG90YWxfcGlw ZV9id19rYnBzID0gbWF4X3BpcGVfYndfa2JwcyAqIGFjdGl2ZV9waXBlczsKKwlkaXNwbGF5X2J3 X3BlcmNlbnRhZ2UgPSBESVZfUk9VTkRfVVBfVUxMKHRvdGFsX3BpcGVfYndfa2JwcyAqIDEwMCwK KwkJCQkJCW1lbWRldl9pbmZvLT5iYW5kd2lkdGhfa2Jwcyk7CisKKwkvKgorCSAqIElmIHRoZXJl IGlzIGFueSBZdGlsZSBwbGFuZSBlbmFibGVkIGFuZCBhcmJpdHJhdGVkIGRpc3BsYXkKKwkgKiBi YW5kd2lkdGggPiAyMCUgb2YgcmF3IHN5c3RlbSBtZW1vcnkgYmFuZHdpZHRoCisJICogRW5hbGUg WS10aWxlIHJlbGF0ZWQgV0EKKwkgKgorCSAqIElmIG1lbW9yeSBpcyBkdWFsIGNoYW5uZWwgc2lu Z2xlIHJhbmssIFh0aWxlIGxpbWl0ID0gMzUlLCBlbHNlIFh0aWxlCisJICogbGltaXQgPSA2MCUK KwkgKiBJZiB0aGVyZSBpcyBubyBZdGlsZSBwbGFuZSBlbmFibGVkIGFuZAorCSAqIGFyYml0cmF0 ZWQgZGlzcGxheSBiYW5kd2lkdGggPiBYdGlsZSBsaW1pdAorCSAqIEVuYWJsZSBYLXRpbGUgcmVh bGF0ZWQgV0EKKwkgKi8KKwlpZiAoeV90aWxlX2VuYWJsZWQgJiYgKGRpc3BsYXlfYndfcGVyY2Vu dGFnZSA+IDIwKSkKKwkJcmVzdWx0cy0+bWVtX3dhID0gV0FURVJNQVJLX1dBX1lfVElMRUQ7CisJ ZWxzZSB7CisJCWludCB4X3RpbGVfcGVyY2VudGFnZSA9IDYwOworCQllbnVtIHJhbmsgcmFuayA9 IERSQU1fUkFOS19TSU5HTEU7CisKKwkJaWYgKG1lbWRldl9pbmZvLT5yYW5rICE9IERSQU1fUkFO S19JTlZBTElEKQorCQkJcmFuayA9IG1lbWRldl9pbmZvLT5yYW5rOworCisJCWlmICgocmFuayA9 PSBEUkFNX1JBTktfU0lOR0xFKSAmJgorCQkJCQkobWVtZGV2X2luZm8tPm51bV9jaGFubmVscyA9 PSAyKSkKKwkJCXhfdGlsZV9wZXJjZW50YWdlID0gMzU7CisKKwkJaWYgKGRpc3BsYXlfYndfcGVy Y2VudGFnZSA+IHhfdGlsZV9wZXJjZW50YWdlKQorCQkJcmVzdWx0cy0+bWVtX3dhID0gV0FURVJN QVJLX1dBX1hfVElMRUQ7CisJfQorCisJcmV0dXJuIDA7CisKK2V4aXQ6CisJcmVzdWx0cy0+bWVt X3dhID0gV0FURVJNQVJLX1dBX1lfVElMRUQ7CisJcmV0dXJuIDA7Cit9CisKKwogc3RhdGljIHZv aWQKIHNrbF9jb3B5X3dtX2Zvcl9waXBlKHN0cnVjdCBza2xfd21fdmFsdWVzICpkc3QsCiAJCSAg ICAgc3RydWN0IHNrbF93bV92YWx1ZXMgKnNyYywKQEAgLTQxNjIsNiArNDI5NSwxMCBAQCBza2xf Y29tcHV0ZV93bShzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCiAJLyogQ2xlYXIgYWxs IGRpcnR5IGZsYWdzICovCiAJcmVzdWx0cy0+ZGlydHlfcGlwZXMgPSAwOwogCisJcmV0ID0gc2ts X2NvbXB1dGVfbWVtb3J5X2JhbmR3aWR0aF93bV93YShzdGF0ZSk7CisJaWYgKHJldCkKKwkJcmV0 dXJuIHJldDsKKwogCXJldCA9IHNrbF9jb21wdXRlX2RkYihzdGF0ZSk7CiAJaWYgKHJldCkKIAkJ cmV0dXJuIHJldDsKLS0gCjIuMTAuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vaW50ZWwtZ2Z4Cg==