From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mahesh Kumar Subject: [PATCH 8/9] drm/i915/skl+: Optimize WM calculation Date: Tue, 13 Jun 2017 18:42:01 +0530 Message-ID: <20170613131202.4492-9-mahesh1.kumar@intel.com> References: <20170613131202.4492-1-mahesh1.kumar@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id E11E66E2F1 for ; Tue, 13 Jun 2017 13:08:31 +0000 (UTC) In-Reply-To: <20170613131202.4492-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 UGxhbmUgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIGRvZXNuJ3QgY2hhbmdlIGZvciBlYWNoIFdN LWxldmVsCmNhbGN1bGF0aW9uLiBDdXJyZW50bHkgd2UgY29tcHV0ZSBzYW1lIHBhcmFtZXRlcnMg OCB0aW1lcyBmb3IgZWFjaAp3bS1sZXZlbC4KVGhpcyBwYXRjaCBvcHRpbWl6ZXMgaXQgYnkgY2Fs Y3VsYXRpbmcgdGhlc2UgcGFyYW1ldGVycyBpbiBiZWdpbm5pbmcKJiByZXVzZSBkdXJpbmcgZWFj aCBsZXZlbC13bSBjYWxjdWxhdGlvbi4KClNpZ25lZC1vZmYtYnk6IE1haGVzaCBLdW1hciA8bWFo ZXNoMS5rdW1hckBpbnRlbC5jb20+CkFja2VkLWJ5OiBNYWFydGVuIExhbmtob3JzdCA8bWFhcnRl bi5sYW5raG9yc3RAbGludXguaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmggfCAgMTMgKysrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyB8IDE2 OSArKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tCiAyIGZpbGVzIGNoYW5n ZWQsIDEwNyBpbnNlcnRpb25zKCspLCA3NSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuaAppbmRleCA3Yjk1ZGVjOTUyOWIuLjJlYzZiMTdlNTRjNSAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2Rydi5oCkBAIC0xNzc2LDYgKzE3NzYsMTkgQEAgc3RydWN0IHNrbF93bV9sZXZlbCB7CiAJdWlu dDhfdCBwbGFuZV9yZXNfbDsKIH07CiAKKy8qIFN0b3JlcyBwbGFuZSBzcGVjaWZpYyBXTSBwYXJh bWV0ZXJzICovCitzdHJ1Y3Qgc2tsX3dtX3BhcmFtc3sKKwlib29sIHhfdGlsZWQsIHlfdGlsZWQ7 CisJdWludDMyX3Qgd2lkdGg7CisJdWludDhfdCBjcHA7CisJdWludDMyX3QgcGxhbmVfcGl4ZWxf cmF0ZTsKKwl1aW50MzJfdCB5X21pbl9zY2FubGluZXM7CisJdWludDMyX3QgcGxhbmVfYnl0ZXNf cGVyX2xpbmU7CisJdWludF9maXhlZF8xNl8xNl90IHBsYW5lX2Jsb2Nrc19wZXJfbGluZTsKKwl1 aW50X2ZpeGVkXzE2XzE2X3QgeV90aWxlX21pbmltdW07CisJdWludDMyX3QgbGluZXRpbWVfdXM7 Cit9OworCiAvKgogICogVGhpcyBzdHJ1Y3QgaGVscHMgdHJhY2tpbmcgdGhlIHN0YXRlIG5lZWRl ZCBmb3IgcnVudGltZSBQTSwgd2hpY2ggcHV0cyB0aGUKICAqIGRldmljZSBpbiBQQ0kgRDMgc3Rh dGUuIE5vdGljZSB0aGF0IHdoZW4gdGhpcyBoYXBwZW5zLCBub3RoaW5nIG9uIHRoZQpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3BtLmMKaW5kZXggMzYxNmQwN2E1NTAwLi41NWY5ZTFhZTBhOTQgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfcG0uYwpAQCAtNDQzNiwxMjEgKzQ0MzYsMTI5IEBAIHNrbF9hZGp1c3RlZF9w bGFuZV9waXhlbF9yYXRlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCiAJ CQkJCSAgICBkb3duc2NhbGVfYW1vdW50KTsKIH0KIAotc3RhdGljIGludCBza2xfY29tcHV0ZV9w bGFuZV93bShjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCi0JCQkJc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSwKLQkJCQljb25zdCBzdHJ1Y3QgaW50ZWxfcGxh bmVfc3RhdGUgKmludGVsX3BzdGF0ZSwKLQkJCQlpbnQgbGV2ZWwsCi0JCQkJdWludDE2X3QgKm91 dF9ibG9ja3MsIC8qIG91dCAqLwotCQkJCXVpbnQ4X3QgKm91dF9saW5lcyAvKiBvdXQgKi8pCitz dGF0aWMgaW50Citza2xfY29tcHV0ZV9wbGFuZV93bV9wYXJhbXMoY29uc3Qgc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAorCQkJICAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj c3RhdGUsCisJCQkgICAgY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICppbnRlbF9wc3Rh dGUsCisJCQkgICAgc3RydWN0IHNrbF93bV9wYXJhbXMgKndwKQogewogCXN0cnVjdCBpbnRlbF9w bGFuZSAqcGxhbmUgPSB0b19pbnRlbF9wbGFuZShpbnRlbF9wc3RhdGUtPmJhc2UucGxhbmUpOwog CWNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnBzdGF0ZSA9ICZpbnRlbF9wc3RhdGUtPmJh c2U7CiAJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwc3RhdGUtPmZiOwotCXVp bnQzMl90IGxhdGVuY3kgPSBkZXZfcHJpdi0+d20uc2tsX2xhdGVuY3lbbGV2ZWxdOwotCXVpbnRf Zml4ZWRfMTZfMTZfdCBtZXRob2QxLCBtZXRob2QyOwotCXVpbnRfZml4ZWRfMTZfMTZfdCBwbGFu ZV9ibG9ja3NfcGVyX2xpbmU7Ci0JdWludF9maXhlZF8xNl8xNl90IHNlbGVjdGVkX3Jlc3VsdDsK IAl1aW50MzJfdCBpbnRlcm1fcGJwbDsKLQl1aW50MzJfdCBwbGFuZV9ieXRlc19wZXJfbGluZTsK LQl1aW50MzJfdCByZXNfYmxvY2tzLCByZXNfbGluZXM7Ci0JdWludDhfdCBjcHA7Ci0JdWludDMy X3Qgd2lkdGggPSAwOwotCXVpbnQzMl90IHBsYW5lX3BpeGVsX3JhdGU7Ci0JdWludF9maXhlZF8x Nl8xNl90IHlfdGlsZV9taW5pbXVtOwotCXVpbnQzMl90IHlfbWluX3NjYW5saW5lczsKIAlzdHJ1 Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSA9CiAJCXRvX2ludGVsX2F0b21pY19zdGF0ZShj c3RhdGUtPmJhc2Uuc3RhdGUpOwogCWJvb2wgYXBwbHlfbWVtb3J5X2J3X3dhID0gc2tsX25lZWRz X21lbW9yeV9id193YShzdGF0ZSk7Ci0JYm9vbCB5X3RpbGVkLCB4X3RpbGVkOwogCi0JaWYgKGxh dGVuY3kgPT0gMCB8fAotCSAgICAhaW50ZWxfd21fcGxhbmVfdmlzaWJsZShjc3RhdGUsIGludGVs X3BzdGF0ZSkpCisJaWYgKCFpbnRlbF93bV9wbGFuZV92aXNpYmxlKGNzdGF0ZSwgaW50ZWxfcHN0 YXRlKSkKIAkJcmV0dXJuIDA7CiAKLQl5X3RpbGVkID0gZmItPm1vZGlmaWVyID09IEk5MTVfRk9S TUFUX01PRF9ZX1RJTEVEIHx8Ci0JCSAgZmItPm1vZGlmaWVyID09IEk5MTVfRk9STUFUX01PRF9Z Zl9USUxFRDsKLQl4X3RpbGVkID0gZmItPm1vZGlmaWVyID09IEk5MTVfRk9STUFUX01PRF9YX1RJ TEVEOwotCi0JLyogRGlzcGxheSBXQSAjMTE0MToga2JsLGNmbCAqLwotCWlmICgoSVNfS0FCWUxB S0UoZGV2X3ByaXYpIHx8IElTX0NPRkZFRUxBS0UoZGV2X3ByaXYpKSAmJgotCSAgICBkZXZfcHJp di0+aXBjX2VuYWJsZWQpCi0JCWxhdGVuY3kgKz0gNDsKLQotCWlmIChhcHBseV9tZW1vcnlfYndf d2EgJiYgeF90aWxlZCkKLQkJbGF0ZW5jeSArPSAxNTsKKwl3cC0+eV90aWxlZCA9IGZiLT5tb2Rp ZmllciA9PSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRCB8fAorCQkgICAgICBmYi0+bW9kaWZpZXIg PT0gSTkxNV9GT1JNQVRfTU9EX1lmX1RJTEVEOworCXdwLT54X3RpbGVkID0gZmItPm1vZGlmaWVy ID09IEk5MTVfRk9STUFUX01PRF9YX1RJTEVEOwogCiAJaWYgKHBsYW5lLT5pZCA9PSBQTEFORV9D VVJTT1IpIHsKLQkJd2lkdGggPSBpbnRlbF9wc3RhdGUtPmJhc2UuY3J0Y193OworCQl3cC0+d2lk dGggPSBpbnRlbF9wc3RhdGUtPmJhc2UuY3J0Y193OwogCX0gZWxzZSB7CiAJCS8qCiAJCSAqIFNy YyBjb29yZGluYXRlcyBhcmUgYWxyZWFkeSByb3RhdGVkIGJ5IDI3MCBkZWdyZWVzIGZvcgogCQkg KiB0aGUgOTAvMjcwIGRlZ3JlZSBwbGFuZSByb3RhdGlvbiBjYXNlcyAodG8gbWF0Y2ggdGhlCiAJ CSAqIEdUVCBtYXBwaW5nKSwgaGVuY2Ugbm8gbmVlZCB0byBhY2NvdW50IGZvciByb3RhdGlvbiBo ZXJlLgogCQkgKi8KLQkJd2lkdGggPSBkcm1fcmVjdF93aWR0aCgmaW50ZWxfcHN0YXRlLT5iYXNl LnNyYykgPj4gMTY7CisJCXdwLT53aWR0aCA9IGRybV9yZWN0X3dpZHRoKCZpbnRlbF9wc3RhdGUt PmJhc2Uuc3JjKSA+PiAxNjsKIAl9CiAKLQljcHAgPSAoZmItPmZvcm1hdC0+Zm9ybWF0ID09IERS TV9GT1JNQVRfTlYxMikgPyBmYi0+Zm9ybWF0LT5jcHBbMV0gOgotCQkJCQkJCWZiLT5mb3JtYXQt PmNwcFswXTsKLQlwbGFuZV9waXhlbF9yYXRlID0gc2tsX2FkanVzdGVkX3BsYW5lX3BpeGVsX3Jh dGUoY3N0YXRlLCBpbnRlbF9wc3RhdGUpOworCXdwLT5jcHAgPSAoZmItPmZvcm1hdC0+Zm9ybWF0 ID09IERSTV9GT1JNQVRfTlYxMikgPyBmYi0+Zm9ybWF0LT5jcHBbMV0gOgorCQkJCQkJCSAgICBm Yi0+Zm9ybWF0LT5jcHBbMF07CisJd3AtPnBsYW5lX3BpeGVsX3JhdGUgPSBza2xfYWRqdXN0ZWRf cGxhbmVfcGl4ZWxfcmF0ZShjc3RhdGUsCisJCQkJCQkJICAgICBpbnRlbF9wc3RhdGUpOwogCiAJ aWYgKGRybV9yb3RhdGlvbl85MF9vcl8yNzAocHN0YXRlLT5yb3RhdGlvbikpIHsKIAotCQlzd2l0 Y2ggKGNwcCkgeworCQlzd2l0Y2ggKHdwLT5jcHApIHsKIAkJY2FzZSAxOgotCQkJeV9taW5fc2Nh bmxpbmVzID0gMTY7CisJCQl3cC0+eV9taW5fc2NhbmxpbmVzID0gMTY7CiAJCQlicmVhazsKIAkJ Y2FzZSAyOgotCQkJeV9taW5fc2NhbmxpbmVzID0gODsKKwkJCXdwLT55X21pbl9zY2FubGluZXMg PSA4OwogCQkJYnJlYWs7CiAJCWNhc2UgNDoKLQkJCXlfbWluX3NjYW5saW5lcyA9IDQ7CisJCQl3 cC0+eV9taW5fc2NhbmxpbmVzID0gNDsKIAkJCWJyZWFrOwogCQlkZWZhdWx0OgotCQkJTUlTU0lO R19DQVNFKGNwcCk7CisJCQlNSVNTSU5HX0NBU0Uod3AtPmNwcCk7CiAJCQlyZXR1cm4gLUVJTlZB TDsKIAkJfQogCX0gZWxzZSB7Ci0JCXlfbWluX3NjYW5saW5lcyA9IDQ7CisJCXdwLT55X21pbl9z Y2FubGluZXMgPSA0OwogCX0KIAogCWlmIChhcHBseV9tZW1vcnlfYndfd2EpCi0JCXlfbWluX3Nj YW5saW5lcyAqPSAyOwotCi0JcGxhbmVfYnl0ZXNfcGVyX2xpbmUgPSB3aWR0aCAqIGNwcDsKLQlp ZiAoeV90aWxlZCkgewotCQlpbnRlcm1fcGJwbCA9IERJVl9ST1VORF9VUChwbGFuZV9ieXRlc19w ZXJfbGluZSAqCi0JCQkJCSAgIHlfbWluX3NjYW5saW5lcywgNTEyKTsKLQkJcGxhbmVfYmxvY2tz X3Blcl9saW5lID0gZGl2X2ZpeGVkMTYoaW50ZXJtX3BicGwsCi0JCQkJCQkJeV9taW5fc2Nhbmxp bmVzKTsKLQl9IGVsc2UgaWYgKHhfdGlsZWQpIHsKLQkJaW50ZXJtX3BicGwgPSBESVZfUk9VTkRf VVAocGxhbmVfYnl0ZXNfcGVyX2xpbmUsIDUxMik7Ci0JCXBsYW5lX2Jsb2Nrc19wZXJfbGluZSA9 IHUzMl90b19maXhlZDE2KGludGVybV9wYnBsKTsKKwkJd3AtPnlfbWluX3NjYW5saW5lcyAqPSAy OworCisJd3AtPnBsYW5lX2J5dGVzX3Blcl9saW5lID0gd3AtPndpZHRoICogd3AtPmNwcDsKKwlp ZiAod3AtPnlfdGlsZWQpIHsKKwkJaW50ZXJtX3BicGwgPSBESVZfUk9VTkRfVVAod3AtPnBsYW5l X2J5dGVzX3Blcl9saW5lICoKKwkJCQkJICAgd3AtPnlfbWluX3NjYW5saW5lcywgNTEyKTsKKwkJ d3AtPnBsYW5lX2Jsb2Nrc19wZXJfbGluZSA9IGRpdl9maXhlZDE2KGludGVybV9wYnBsLAorCQkJ CQkJCXdwLT55X21pbl9zY2FubGluZXMpOworCX0gZWxzZSBpZiAod3AtPnhfdGlsZWQpIHsKKwkJ aW50ZXJtX3BicGwgPSBESVZfUk9VTkRfVVAod3AtPnBsYW5lX2J5dGVzX3Blcl9saW5lLCA1MTIp OworCQl3cC0+cGxhbmVfYmxvY2tzX3Blcl9saW5lID0gdTMyX3RvX2ZpeGVkMTYoaW50ZXJtX3Bi cGwpOwogCX0gZWxzZSB7Ci0JCWludGVybV9wYnBsID0gRElWX1JPVU5EX1VQKHBsYW5lX2J5dGVz X3Blcl9saW5lLCA1MTIpICsgMTsKLQkJcGxhbmVfYmxvY2tzX3Blcl9saW5lID0gdTMyX3RvX2Zp eGVkMTYoaW50ZXJtX3BicGwpOworCQlpbnRlcm1fcGJwbCA9IERJVl9ST1VORF9VUCh3cC0+cGxh bmVfYnl0ZXNfcGVyX2xpbmUsIDUxMikgKyAxOworCQl3cC0+cGxhbmVfYmxvY2tzX3Blcl9saW5l ID0gdTMyX3RvX2ZpeGVkMTYoaW50ZXJtX3BicGwpOwogCX0KIAotCW1ldGhvZDEgPSBza2xfd21f bWV0aG9kMShwbGFuZV9waXhlbF9yYXRlLCBjcHAsIGxhdGVuY3kpOwotCW1ldGhvZDIgPSBza2xf d21fbWV0aG9kMihwbGFuZV9waXhlbF9yYXRlLAorCXdwLT55X3RpbGVfbWluaW11bSA9IG11bF91 MzJfZml4ZWQxNih3cC0+eV9taW5fc2NhbmxpbmVzLAorCQkJCQkgICAgIHdwLT5wbGFuZV9ibG9j a3NfcGVyX2xpbmUpOworCXdwLT5saW5ldGltZV91cyA9IGZpeGVkMTZfdG9fdTMyX3JvdW5kX3Vw KAorCQkJCQlpbnRlbF9nZXRfbGluZXRpbWVfdXMoY3N0YXRlKSk7CisJcmV0dXJuIDA7Cit9CisK K3N0YXRpYyBpbnQgc2tsX2NvbXB1dGVfcGxhbmVfd20oY29uc3Qgc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LAorCQkJCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCisJ CQkJY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICppbnRlbF9wc3RhdGUsCisJCQkJaW50 IGxldmVsLAorCQkJCWNvbnN0IHN0cnVjdCBza2xfd21fcGFyYW1zICp3cCwKKwkJCQl1aW50MTZf dCAqb3V0X2Jsb2NrcywgLyogb3V0ICovCisJCQkJdWludDhfdCAqb3V0X2xpbmVzIC8qIG91dCAq LykKK3sKKwljb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpwc3RhdGUgPSAmaW50ZWxfcHN0 YXRlLT5iYXNlOworCXVpbnQzMl90IGxhdGVuY3kgPSBkZXZfcHJpdi0+d20uc2tsX2xhdGVuY3lb bGV2ZWxdOworCXVpbnRfZml4ZWRfMTZfMTZfdCBtZXRob2QxLCBtZXRob2QyOworCXVpbnRfZml4 ZWRfMTZfMTZfdCBzZWxlY3RlZF9yZXN1bHQ7CisJdWludDMyX3QgcmVzX2Jsb2NrcywgcmVzX2xp bmVzOworCXN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKnN0YXRlID0KKwkJdG9faW50ZWxfYXRv bWljX3N0YXRlKGNzdGF0ZS0+YmFzZS5zdGF0ZSk7CisJYm9vbCBhcHBseV9tZW1vcnlfYndfd2Eg PSBza2xfbmVlZHNfbWVtb3J5X2J3X3dhKHN0YXRlKTsKKworCWlmIChsYXRlbmN5ID09IDAgfHwK KwkgICAgIWludGVsX3dtX3BsYW5lX3Zpc2libGUoY3N0YXRlLCBpbnRlbF9wc3RhdGUpKQorCQly ZXR1cm4gMDsKKworCS8qIERpc3BsYXkgV0EgIzExNDE6IGtibCxjZmwgKi8KKwlpZiAoKElTX0tB QllMQUtFKGRldl9wcml2KSB8fCBJU19DT0ZGRUVMQUtFKGRldl9wcml2KSkgJiYKKwkgICAgZGV2 X3ByaXYtPmlwY19lbmFibGVkKQorCQlsYXRlbmN5ICs9IDQ7CisKKwlpZiAoYXBwbHlfbWVtb3J5 X2J3X3dhICYmIHdwLT54X3RpbGVkKQorCQlsYXRlbmN5ICs9IDE1OworCisJbWV0aG9kMSA9IHNr bF93bV9tZXRob2QxKHdwLT5wbGFuZV9waXhlbF9yYXRlLCB3cC0+Y3BwLCBsYXRlbmN5KTsKKwlt ZXRob2QyID0gc2tsX3dtX21ldGhvZDIod3AtPnBsYW5lX3BpeGVsX3JhdGUsCiAJCQkJIGNzdGF0 ZS0+YmFzZS5hZGp1c3RlZF9tb2RlLmNydGNfaHRvdGFsLAogCQkJCSBsYXRlbmN5LAotCQkJCSBw bGFuZV9ibG9ja3NfcGVyX2xpbmUpOworCQkJCSB3cC0+cGxhbmVfYmxvY2tzX3Blcl9saW5lKTsK IAotCXlfdGlsZV9taW5pbXVtID0gbXVsX3UzMl9maXhlZDE2KHlfbWluX3NjYW5saW5lcywKLQkJ CQkJIHBsYW5lX2Jsb2Nrc19wZXJfbGluZSk7Ci0KLQlpZiAoeV90aWxlZCkgewotCQlzZWxlY3Rl ZF9yZXN1bHQgPSBtYXhfZml4ZWQxNihtZXRob2QyLCB5X3RpbGVfbWluaW11bSk7CisJaWYgKHdw LT55X3RpbGVkKSB7CisJCXNlbGVjdGVkX3Jlc3VsdCA9IG1heF9maXhlZDE2KG1ldGhvZDIsIHdw LT55X3RpbGVfbWluaW11bSk7CiAJfSBlbHNlIHsKLQkJdWludDMyX3QgbGluZXRpbWVfdXM7Ci0K LQkJbGluZXRpbWVfdXMgPSBmaXhlZDE2X3RvX3UzMl9yb3VuZF91cCgKLQkJCQlpbnRlbF9nZXRf bGluZXRpbWVfdXMoY3N0YXRlKSk7Ci0JCWlmICgoY3BwICogY3N0YXRlLT5iYXNlLmFkanVzdGVk X21vZGUuY3J0Y19odG90YWwgLyA1MTIgPCAxKSAmJgotCQkgICAgKHBsYW5lX2J5dGVzX3Blcl9s aW5lIC8gNTEyIDwgMSkpCisJCWlmICgod3AtPmNwcCAqIGNzdGF0ZS0+YmFzZS5hZGp1c3RlZF9t b2RlLmNydGNfaHRvdGFsIC8gNTEyIDwgMSkKKwkJICAgICAmJiAod3AtPnBsYW5lX2J5dGVzX3Bl cl9saW5lIC8gNTEyIDwgMSkpCiAJCQlzZWxlY3RlZF9yZXN1bHQgPSBtZXRob2QyOwotCQllbHNl IGlmIChsYXRlbmN5ID49IGxpbmV0aW1lX3VzKQorCQllbHNlIGlmIChsYXRlbmN5ID49IHdwLT5s aW5ldGltZV91cykKIAkJCXNlbGVjdGVkX3Jlc3VsdCA9IG1pbl9maXhlZDE2KG1ldGhvZDEsIG1l dGhvZDIpOwogCQllbHNlCiAJCQlzZWxlY3RlZF9yZXN1bHQgPSBtZXRob2QxOwpAQCAtNDU1OCwx MiArNDU2NiwxMyBAQCBzdGF0aWMgaW50IHNrbF9jb21wdXRlX3BsYW5lX3dtKGNvbnN0IHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAogCXJlc19ibG9ja3MgPSBmaXhlZDE2X3Rv X3UzMl9yb3VuZF91cChzZWxlY3RlZF9yZXN1bHQpICsgMTsKIAlyZXNfbGluZXMgPSBkaXZfcm91 bmRfdXBfZml4ZWQxNihzZWxlY3RlZF9yZXN1bHQsCi0JCQkJCSBwbGFuZV9ibG9ja3NfcGVyX2xp bmUpOworCQkJCQkgd3AtPnBsYW5lX2Jsb2Nrc19wZXJfbGluZSk7CiAKIAlpZiAobGV2ZWwgPj0g MSAmJiBsZXZlbCA8PSA3KSB7Ci0JCWlmICh5X3RpbGVkKSB7Ci0JCQlyZXNfYmxvY2tzICs9IGZp eGVkMTZfdG9fdTMyX3JvdW5kX3VwKHlfdGlsZV9taW5pbXVtKTsKLQkJCXJlc19saW5lcyArPSB5 X21pbl9zY2FubGluZXM7CisJCWlmICh3cC0+eV90aWxlZCkgeworCQkJcmVzX2Jsb2NrcyArPSBm aXhlZDE2X3RvX3UzMl9yb3VuZF91cCgKKwkJCQkJCQl3cC0+eV90aWxlX21pbmltdW0pOworCQkJ cmVzX2xpbmVzICs9IHdwLT55X21pbl9zY2FubGluZXM7CiAJCX0gZWxzZSB7CiAJCQlyZXNfYmxv Y2tzKys7CiAJCX0KQEAgLTQ1ODgsNiArNDU5Nyw3IEBAIHN0YXRpYyBpbnQKIHNrbF9jb21wdXRl X3dtX2xldmVscyhjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCSAg ICAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCiAJCSAgICAgIGNvbnN0IHN0cnVj dCBpbnRlbF9wbGFuZV9zdGF0ZSAqaW50ZWxfcHN0YXRlLAorCQkgICAgICBjb25zdCBzdHJ1Y3Qg c2tsX3dtX3BhcmFtcyAqd21fcGFyYW1zLAogCQkgICAgICBzdHJ1Y3Qgc2tsX3BsYW5lX3dtICp3 bSkKIHsKIAlpbnQgbGV2ZWwsIG1heF9sZXZlbCA9IGlsa193bV9tYXhfbGV2ZWwoZGV2X3ByaXYp OwpAQCAtNDYwMyw2ICs0NjEzLDcgQEAgc2tsX2NvbXB1dGVfd21fbGV2ZWxzKGNvbnN0IHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJCQkJICAgY3N0YXRlLAogCQkJCQkgICBp bnRlbF9wc3RhdGUsCiAJCQkJCSAgIGxldmVsLAorCQkJCQkgICB3bV9wYXJhbXMsCiAJCQkJCSAg ICZyZXN1bHQtPnBsYW5lX3Jlc19iLAogCQkJCQkgICAmcmVzdWx0LT5wbGFuZV9yZXNfbCk7CiAJ CWlmIChyZXQpCkBAIC00NjYwLDEwICs0NjcxLDE4IEBAIHN0YXRpYyBpbnQgc2tsX2J1aWxkX3Bp cGVfd20oc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSwKIAkJY29uc3Qgc3RydWN0IGlu dGVsX3BsYW5lX3N0YXRlICppbnRlbF9wc3RhdGUgPQogCQkJCQkJdG9faW50ZWxfcGxhbmVfc3Rh dGUocHN0YXRlKTsKIAkJZW51bSBwbGFuZV9pZCBwbGFuZV9pZCA9IHRvX2ludGVsX3BsYW5lKHBs YW5lKS0+aWQ7CisJCXN0cnVjdCBza2xfd21fcGFyYW1zIHdtX3BhcmFtczsKIAogCQl3bSA9ICZw aXBlX3dtLT5wbGFuZXNbcGxhbmVfaWRdOworCQltZW1zZXQoJndtX3BhcmFtcywgMCwgc2l6ZW9m KHN0cnVjdCBza2xfd21fcGFyYW1zKSk7CisKKwkJcmV0ID0gc2tsX2NvbXB1dGVfcGxhbmVfd21f cGFyYW1zKGRldl9wcml2LCBjc3RhdGUsCisJCQkJCQkgIGludGVsX3BzdGF0ZSwgJndtX3BhcmFt cyk7CisJCWlmIChyZXQpCisJCQlyZXR1cm4gcmV0OwogCi0JCXJldCA9IHNrbF9jb21wdXRlX3dt X2xldmVscyhkZXZfcHJpdiwgY3N0YXRlLCBpbnRlbF9wc3RhdGUsIHdtKTsKKwkJcmV0ID0gc2ts X2NvbXB1dGVfd21fbGV2ZWxzKGRldl9wcml2LCBjc3RhdGUsIGludGVsX3BzdGF0ZSwKKwkJCQkJ ICAgICZ3bV9wYXJhbXMsIHdtKTsKIAkJaWYgKHJldCkKIAkJCXJldHVybiByZXQ7CiAJCXNrbF9j b21wdXRlX3RyYW5zaXRpb25fd20oY3N0YXRlLCAmd20tPnRyYW5zX3dtKTsKLS0gCjIuMTMuMAoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4 IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==