From mboxrd@z Thu Jan 1 00:00:00 1970 From: Vidya Srinivas Subject: [PATCH 02/15] drm/i915/skl+: refactor WM calculation for NV12 Date: Mon, 15 Jan 2018 03:18:12 +0000 (UTC) Message-ID: <1516484713-5837-3-git-send-email-vidya.srinivas@intel.com> References: <1516484713-5837-1-git-send-email-vidya.srinivas@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 65AC46E050 for ; Mon, 15 Jan 2018 03:20:02 +0000 (UTC) Date: Sun, 21 Jan 2018 03:15:00 +0530 In-Reply-To: <1516484713-5837-1-git-send-email-vidya.srinivas@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: Vidya Srinivas List-Id: intel-gfx@lists.freedesktop.org RnJvbTogTWFoZXNoIEt1bWFyIDxtYWhlc2gxLmt1bWFyQGludGVsLmNvbT4KCkN1cnJlbnQgY29k ZSBjYWxjdWxhdGVzIEREQiBmb3IgcGxhbmFyIGZvcm1hdHMgaW4gc3VjaCBhIHdheSB0aGF0IHdl CnN0b3JlIEREQiBvZiBwbGFuZS0wIGluIHBsYW5lIDEgJiB2aWNlLXZlcnNhLgpJbiBvcmRlciB0 byBtYWtlIHRoaXMgY2xlYW4gdGhpcyBwYXRjaCByZWZhY3RvcnMgV00vRERCIGNhbGN1bGF0aW9u IGZvcgpOVjEyIHBsYW5hciBmb3JtYXRzLgoKdjI6IEFkZHJlc3NlZCByZXZpZXcgY29tbWVudHMg YnkgTWFhcnRlbgoKUmV2aWV3ZWQtYnk6IE1hYXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxhbmto b3JzdEBsaW51eC5pbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IE1haGVzaCBLdW1hciA8bWFoZXNo MS5rdW1hckBpbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IFZpZHlhIFNyaW5pdmFzIDx2aWR5YS5z cmluaXZhc0BpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAg fCAgIDQgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIHwgICAxICsKIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgIHwgMTIxICsrKysrKysrKysrKysrKysrKysrLS0t LS0tLS0tLS0tLS0tLS0tLQogMyBmaWxlcyBjaGFuZ2VkLCA2NCBpbnNlcnRpb25zKCspLCA2MiBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5o IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAppbmRleCA4ZDlmZGU4Li41YjAxYzU0 IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKQEAgLTE0MzMsOCArMTQzMyw4IEBAIHN0YXRpYyBp bmxpbmUgYm9vbCBza2xfZGRiX2VudHJ5X2VxdWFsKGNvbnN0IHN0cnVjdCBza2xfZGRiX2VudHJ5 ICplMSwKIH0KIAogc3RydWN0IHNrbF9kZGJfYWxsb2NhdGlvbiB7Ci0Jc3RydWN0IHNrbF9kZGJf ZW50cnkgcGxhbmVbSTkxNV9NQVhfUElQRVNdW0k5MTVfTUFYX1BMQU5FU107IC8qIHBhY2tlZC91 diAqLwotCXN0cnVjdCBza2xfZGRiX2VudHJ5IHlfcGxhbmVbSTkxNV9NQVhfUElQRVNdW0k5MTVf TUFYX1BMQU5FU107CisJc3RydWN0IHNrbF9kZGJfZW50cnkgcGxhbmVbSTkxNV9NQVhfUElQRVNd W0k5MTVfTUFYX1BMQU5FU107IC8qIHBhY2tlZC95ICovCisJc3RydWN0IHNrbF9kZGJfZW50cnkg dXZfcGxhbmVbSTkxNV9NQVhfUElQRVNdW0k5MTVfTUFYX1BMQU5FU107CiB9OwogCiBzdHJ1Y3Qg c2tsX2RkYl92YWx1ZXMgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAppbmRleCAyNzVjNDg5Li5h MDU3YzY3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAorKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaApAQCAtNTkyLDYgKzU5Miw3IEBAIHN0 cnVjdCBpbnRlbF9waXBlX3dtIHsKIHN0cnVjdCBza2xfcGxhbmVfd20gewogCXN0cnVjdCBza2xf d21fbGV2ZWwgd21bOF07CiAJc3RydWN0IHNrbF93bV9sZXZlbCB0cmFuc193bTsKKwlib29sIGlz X252MTI7CiB9OwogCiBzdHJ1Y3Qgc2tsX3BpcGVfd20gewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfcG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMK aW5kZXggYjRjYjIxZC4uYjhhNzY5ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcG0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCkBAIC00MDA0 LDkgKzQwMDQsOSBAQCBpbnQgc2tsX2NoZWNrX3BpcGVfbWF4X3BpeGVsX3JhdGUoc3RydWN0IGlu dGVsX2NydGMgKmludGVsX2NydGMsCiBzdGF0aWMgdW5zaWduZWQgaW50CiBza2xfcGxhbmVfcmVs YXRpdmVfZGF0YV9yYXRlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCiAJ CQkgICAgIGNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnBzdGF0ZSwKLQkJCSAgICAgaW50 IHkpCisJCQkgICAgIGNvbnN0IGludCBwbGFuZSkKIHsKLQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBs YW5lID0gdG9faW50ZWxfcGxhbmUocHN0YXRlLT5wbGFuZSk7CisJc3RydWN0IGludGVsX3BsYW5l ICppbnRlbF9wbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBzdGF0ZS0+cGxhbmUpOwogCXN0cnVjdCBp bnRlbF9wbGFuZV9zdGF0ZSAqaW50ZWxfcHN0YXRlID0gdG9faW50ZWxfcGxhbmVfc3RhdGUocHN0 YXRlKTsKIAl1aW50MzJfdCBkYXRhX3JhdGU7CiAJdWludDMyX3Qgd2lkdGggPSAwLCBoZWlnaHQg PSAwOwpAQCAtNDAyMCw5ICs0MDIwLDkgQEAgc2tsX3BsYW5lX3JlbGF0aXZlX2RhdGFfcmF0ZShj b25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlLAogCWZiID0gcHN0YXRlLT5mYjsK IAlmb3JtYXQgPSBmYi0+Zm9ybWF0LT5mb3JtYXQ7CiAKLQlpZiAocGxhbmUtPmlkID09IFBMQU5F X0NVUlNPUikKKwlpZiAoaW50ZWxfcGxhbmUtPmlkID09IFBMQU5FX0NVUlNPUikKIAkJcmV0dXJu IDA7Ci0JaWYgKHkgJiYgZm9ybWF0ICE9IERSTV9GT1JNQVRfTlYxMikKKwlpZiAocGxhbmUgPT0g MSAmJiBmb3JtYXQgIT0gRFJNX0ZPUk1BVF9OVjEyKQogCQlyZXR1cm4gMDsKIAogCS8qCkBAIC00 MDMzLDE5ICs0MDMzLDE0IEBAIHNrbF9wbGFuZV9yZWxhdGl2ZV9kYXRhX3JhdGUoY29uc3Qgc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSwKIAl3aWR0aCA9IGRybV9yZWN0X3dpZHRoKCZp bnRlbF9wc3RhdGUtPmJhc2Uuc3JjKSA+PiAxNjsKIAloZWlnaHQgPSBkcm1fcmVjdF9oZWlnaHQo JmludGVsX3BzdGF0ZS0+YmFzZS5zcmMpID4+IDE2OwogCi0JLyogZm9yIHBsYW5hciBmb3JtYXQg Ki8KLQlpZiAoZm9ybWF0ID09IERSTV9GT1JNQVRfTlYxMikgewotCQlpZiAoeSkgIC8qIHktcGxh bmUgZGF0YSByYXRlICovCi0JCQlkYXRhX3JhdGUgPSB3aWR0aCAqIGhlaWdodCAqCi0JCQkJZmIt PmZvcm1hdC0+Y3BwWzBdOwotCQllbHNlICAgIC8qIHV2LXBsYW5lIGRhdGEgcmF0ZSAqLwotCQkJ ZGF0YV9yYXRlID0gKHdpZHRoIC8gMikgKiAoaGVpZ2h0IC8gMikgKgotCQkJCWZiLT5mb3JtYXQt PmNwcFsxXTsKLQl9IGVsc2UgewotCQkvKiBmb3IgcGFja2VkIGZvcm1hdHMgKi8KLQkJZGF0YV9y YXRlID0gd2lkdGggKiBoZWlnaHQgKiBmYi0+Zm9ybWF0LT5jcHBbMF07CisJLyogVVYgcGxhbmUg ZG9lcyAxLzIgcGl4ZWwgc3ViLXNhbXBsaW5nICovCisJaWYgKHBsYW5lID09IDEgJiYgZm9ybWF0 ID09IERSTV9GT1JNQVRfTlYxMikgeworCQl3aWR0aCAvPSAyOworCQloZWlnaHQgLz0gMjsKIAl9 CiAKKwlkYXRhX3JhdGUgPSB3aWR0aCAqIGhlaWdodCAqIGZiLT5mb3JtYXQtPmNwcFtwbGFuZV07 CisKIAlkb3duX3NjYWxlX2Ftb3VudCA9IHNrbF9wbGFuZV9kb3duc2NhbGVfYW1vdW50KGNzdGF0 ZSwgaW50ZWxfcHN0YXRlKTsKIAogCXJldHVybiBtdWxfcm91bmRfdXBfdTMyX2ZpeGVkMTYoZGF0 YV9yYXRlLCBkb3duX3NjYWxlX2Ftb3VudCk7CkBAIC00MDU4LDggKzQwNTMsOCBAQCBza2xfcGxh bmVfcmVsYXRpdmVfZGF0YV9yYXRlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3Rh dGUsCiAgKi8KIHN0YXRpYyB1bnNpZ25lZCBpbnQKIHNrbF9nZXRfdG90YWxfcmVsYXRpdmVfZGF0 YV9yYXRlKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICppbnRlbF9jc3RhdGUsCi0JCQkJIHVuc2ln bmVkICpwbGFuZV9kYXRhX3JhdGUsCi0JCQkJIHVuc2lnbmVkICpwbGFuZV95X2RhdGFfcmF0ZSkK KwkJCQkgdW5zaWduZWQgaW50ICpwbGFuZV9kYXRhX3JhdGUsCisJCQkJIHVuc2lnbmVkIGludCAq dXZfcGxhbmVfZGF0YV9yYXRlKQogewogCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3N0YXRlID0g JmludGVsX2NzdGF0ZS0+YmFzZTsKIAlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUgPSBj c3RhdGUtPnN0YXRlOwpAQCAtNDA3NSwxNyArNDA3MCwxNyBAQCBza2xfZ2V0X3RvdGFsX3JlbGF0 aXZlX2RhdGFfcmF0ZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqaW50ZWxfY3N0YXRlLAogCQll bnVtIHBsYW5lX2lkIHBsYW5lX2lkID0gdG9faW50ZWxfcGxhbmUocGxhbmUpLT5pZDsKIAkJdW5z aWduZWQgaW50IHJhdGU7CiAKLQkJLyogcGFja2VkL3V2ICovCisJCS8qIHBhY2tlZC95ICovCiAJ CXJhdGUgPSBza2xfcGxhbmVfcmVsYXRpdmVfZGF0YV9yYXRlKGludGVsX2NzdGF0ZSwKIAkJCQkJ CSAgICBwc3RhdGUsIDApOwogCQlwbGFuZV9kYXRhX3JhdGVbcGxhbmVfaWRdID0gcmF0ZTsKIAog CQl0b3RhbF9kYXRhX3JhdGUgKz0gcmF0ZTsKIAotCQkvKiB5LXBsYW5lICovCisJCS8qIHV2LXBs YW5lICovCiAJCXJhdGUgPSBza2xfcGxhbmVfcmVsYXRpdmVfZGF0YV9yYXRlKGludGVsX2NzdGF0 ZSwKIAkJCQkJCSAgICBwc3RhdGUsIDEpOwotCQlwbGFuZV95X2RhdGFfcmF0ZVtwbGFuZV9pZF0g PSByYXRlOworCQl1dl9wbGFuZV9kYXRhX3JhdGVbcGxhbmVfaWRdID0gcmF0ZTsKIAogCQl0b3Rh bF9kYXRhX3JhdGUgKz0gcmF0ZTsKIAl9CkBAIC00MDk0LDggKzQwODksNyBAQCBza2xfZ2V0X3Rv dGFsX3JlbGF0aXZlX2RhdGFfcmF0ZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqaW50ZWxfY3N0 YXRlLAogfQogCiBzdGF0aWMgdWludDE2X3QKLXNrbF9kZGJfbWluX2FsbG9jKGNvbnN0IHN0cnVj dCBkcm1fcGxhbmVfc3RhdGUgKnBzdGF0ZSwKLQkJICBjb25zdCBpbnQgeSkKK3NrbF9kZGJfbWlu X2FsbG9jKGNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnBzdGF0ZSwgY29uc3QgaW50IHBs YW5lKQogewogCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gcHN0YXRlLT5mYjsKIAlzdHJ1 Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKmludGVsX3BzdGF0ZSA9IHRvX2ludGVsX3BsYW5lX3N0YXRl KHBzdGF0ZSk7CkBAIC00MTA2LDggKzQxMDAsOCBAQCBza2xfZGRiX21pbl9hbGxvYyhjb25zdCBz dHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpwc3RhdGUsCiAJaWYgKFdBUk5fT04oIWZiKSkKIAkJcmV0 dXJuIDA7CiAKLQkvKiBGb3IgcGFja2VkIGZvcm1hdHMsIG5vIHktcGxhbmUsIHJldHVybiAwICov Ci0JaWYgKHkgJiYgZmItPmZvcm1hdC0+Zm9ybWF0ICE9IERSTV9GT1JNQVRfTlYxMikKKwkvKiBG b3IgcGFja2VkIGZvcm1hdHMsIGFuZCB1di1wbGFuZSwgcmV0dXJuIDAgKi8KKwlpZiAocGxhbmUg PT0gMSAmJiBmYi0+Zm9ybWF0LT5mb3JtYXQgIT0gRFJNX0ZPUk1BVF9OVjEyKQogCQlyZXR1cm4g MDsKIAogCS8qIEZvciBOb24gWS10aWxlIHJldHVybiA4LWJsb2NrcyAqLwpAQCAtNDEyNiwxNSAr NDEyMCwxMiBAQCBza2xfZGRiX21pbl9hbGxvYyhjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRl ICpwc3RhdGUsCiAJc3JjX2ggPSBkcm1fcmVjdF9oZWlnaHQoJmludGVsX3BzdGF0ZS0+YmFzZS5z cmMpID4+IDE2OwogCiAJLyogSGFsdmUgVVYgcGxhbmUgd2lkdGggYW5kIGhlaWdodCBmb3IgTlYx MiAqLwotCWlmIChmYi0+Zm9ybWF0LT5mb3JtYXQgPT0gRFJNX0ZPUk1BVF9OVjEyICYmICF5KSB7 CisJaWYgKHBsYW5lID09IDEpIHsKIAkJc3JjX3cgLz0gMjsKIAkJc3JjX2ggLz0gMjsKIAl9CiAK LQlpZiAoZmItPmZvcm1hdC0+Zm9ybWF0ID09IERSTV9GT1JNQVRfTlYxMiAmJiAheSkKLQkJcGxh bmVfYnBwID0gZmItPmZvcm1hdC0+Y3BwWzFdOwotCWVsc2UKLQkJcGxhbmVfYnBwID0gZmItPmZv cm1hdC0+Y3BwWzBdOworCXBsYW5lX2JwcCA9IGZiLT5mb3JtYXQtPmNwcFtwbGFuZV07CiAKIAlp ZiAoZHJtX3JvdGF0aW9uXzkwX29yXzI3MChwc3RhdGUtPnJvdGF0aW9uKSkgewogCQlzd2l0Y2gg KHBsYW5lX2JwcCkgewpAQCAtNDE2Miw3ICs0MTUzLDcgQEAgc2tsX2RkYl9taW5fYWxsb2MoY29u c3Qgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqcHN0YXRlLAogCiBzdGF0aWMgdm9pZAogc2tsX2Rk Yl9jYWxjX21pbihjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlLCBpbnQgbnVt X2FjdGl2ZSwKLQkJIHVpbnQxNl90ICptaW5pbXVtLCB1aW50MTZfdCAqeV9taW5pbXVtKQorCQkg dWludDE2X3QgKm1pbmltdW0sIHVpbnQxNl90ICp1dl9taW5pbXVtKQogewogCWNvbnN0IHN0cnVj dCBkcm1fcGxhbmVfc3RhdGUgKnBzdGF0ZTsKIAlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZTsKQEAg LTQxNzcsNyArNDE2OCw3IEBAIHNrbF9kZGJfY2FsY19taW4oY29uc3Qgc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKmNzdGF0ZSwgaW50IG51bV9hY3RpdmUsCiAJCQljb250aW51ZTsKIAogCQltaW5p bXVtW3BsYW5lX2lkXSA9IHNrbF9kZGJfbWluX2FsbG9jKHBzdGF0ZSwgMCk7Ci0JCXlfbWluaW11 bVtwbGFuZV9pZF0gPSBza2xfZGRiX21pbl9hbGxvYyhwc3RhdGUsIDEpOworCQl1dl9taW5pbXVt W3BsYW5lX2lkXSA9IHNrbF9kZGJfbWluX2FsbG9jKHBzdGF0ZSwgMSk7CiAJfQogCiAJbWluaW11 bVtQTEFORV9DVVJTT1JdID0gc2tsX2N1cnNvcl9hbGxvY2F0aW9uKG51bV9hY3RpdmUpOwpAQCAt NDE5NSwxNyArNDE4NiwxNyBAQCBza2xfYWxsb2NhdGVfcGlwZV9kZGIoc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKmNzdGF0ZSwKIAlzdHJ1Y3Qgc2tsX2RkYl9lbnRyeSAqYWxsb2MgPSAmY3N0YXRl LT53bS5za2wuZGRiOwogCXVpbnQxNl90IGFsbG9jX3NpemUsIHN0YXJ0OwogCXVpbnQxNl90IG1p bmltdW1bSTkxNV9NQVhfUExBTkVTXSA9IHt9OwotCXVpbnQxNl90IHlfbWluaW11bVtJOTE1X01B WF9QTEFORVNdID0ge307CisJdWludDE2X3QgdXZfbWluaW11bVtJOTE1X01BWF9QTEFORVNdID0g e307CiAJdW5zaWduZWQgaW50IHRvdGFsX2RhdGFfcmF0ZTsKIAllbnVtIHBsYW5lX2lkIHBsYW5l X2lkOwogCWludCBudW1fYWN0aXZlOwotCXVuc2lnbmVkIHBsYW5lX2RhdGFfcmF0ZVtJOTE1X01B WF9QTEFORVNdID0ge307Ci0JdW5zaWduZWQgcGxhbmVfeV9kYXRhX3JhdGVbSTkxNV9NQVhfUExB TkVTXSA9IHt9OworCXVuc2lnbmVkIGludCBwbGFuZV9kYXRhX3JhdGVbSTkxNV9NQVhfUExBTkVT XSA9IHt9OworCXVuc2lnbmVkIGludCB1dl9wbGFuZV9kYXRhX3JhdGVbSTkxNV9NQVhfUExBTkVT XSA9IHt9OwogCXVpbnQxNl90IHRvdGFsX21pbl9ibG9ja3MgPSAwOwogCiAJLyogQ2xlYXIgdGhl IHBhcnRpdGlvbmluZyBmb3IgZGlzYWJsZWQgcGxhbmVzLiAqLwogCW1lbXNldChkZGItPnBsYW5l W3BpcGVdLCAwLCBzaXplb2YoZGRiLT5wbGFuZVtwaXBlXSkpOwotCW1lbXNldChkZGItPnlfcGxh bmVbcGlwZV0sIDAsIHNpemVvZihkZGItPnlfcGxhbmVbcGlwZV0pKTsKKwltZW1zZXQoZGRiLT51 dl9wbGFuZVtwaXBlXSwgMCwgc2l6ZW9mKGRkYi0+dXZfcGxhbmVbcGlwZV0pKTsKIAogCWlmIChX QVJOX09OKCFzdGF0ZSkpCiAJCXJldHVybiAwOwpAQCAtNDIyMCw3ICs0MjExLDcgQEAgc2tsX2Fs bG9jYXRlX3BpcGVfZGRiKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCiAJaWYgKGFs bG9jX3NpemUgPT0gMCkKIAkJcmV0dXJuIDA7CiAKLQlza2xfZGRiX2NhbGNfbWluKGNzdGF0ZSwg bnVtX2FjdGl2ZSwgbWluaW11bSwgeV9taW5pbXVtKTsKKwlza2xfZGRiX2NhbGNfbWluKGNzdGF0 ZSwgbnVtX2FjdGl2ZSwgbWluaW11bSwgdXZfbWluaW11bSk7CiAKIAkvKgogCSAqIDEuIEFsbG9j YXRlIHRoZSBtaW5pbnVtIHJlcXVpcmVkIGJsb2NrcyBmb3IgZWFjaCBhY3RpdmUgcGxhbmUKQEAg LTQyMzAsNyArNDIyMSw3IEBAIHNrbF9hbGxvY2F0ZV9waXBlX2RkYihzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqY3N0YXRlLAogCiAJZm9yX2VhY2hfcGxhbmVfaWRfb25fY3J0YyhpbnRlbF9jcnRj LCBwbGFuZV9pZCkgewogCQl0b3RhbF9taW5fYmxvY2tzICs9IG1pbmltdW1bcGxhbmVfaWRdOwot CQl0b3RhbF9taW5fYmxvY2tzICs9IHlfbWluaW11bVtwbGFuZV9pZF07CisJCXRvdGFsX21pbl9i bG9ja3MgKz0gdXZfbWluaW11bVtwbGFuZV9pZF07CiAJfQogCiAJaWYgKHRvdGFsX21pbl9ibG9j a3MgPiBhbGxvY19zaXplKSB7CkBAIC00MjUyLDE0ICs0MjQzLDE0IEBAIHNrbF9hbGxvY2F0ZV9w aXBlX2RkYihzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlLAogCSAqLwogCXRvdGFsX2Rh dGFfcmF0ZSA9IHNrbF9nZXRfdG90YWxfcmVsYXRpdmVfZGF0YV9yYXRlKGNzdGF0ZSwKIAkJCQkJ CQkgICBwbGFuZV9kYXRhX3JhdGUsCi0JCQkJCQkJICAgcGxhbmVfeV9kYXRhX3JhdGUpOworCQkJ CQkJCSAgIHV2X3BsYW5lX2RhdGFfcmF0ZSk7CiAJaWYgKHRvdGFsX2RhdGFfcmF0ZSA9PSAwKQog CQlyZXR1cm4gMDsKIAogCXN0YXJ0ID0gYWxsb2MtPnN0YXJ0OwogCWZvcl9lYWNoX3BsYW5lX2lk X29uX2NydGMoaW50ZWxfY3J0YywgcGxhbmVfaWQpIHsKLQkJdW5zaWduZWQgaW50IGRhdGFfcmF0 ZSwgeV9kYXRhX3JhdGU7Ci0JCXVpbnQxNl90IHBsYW5lX2Jsb2NrcywgeV9wbGFuZV9ibG9ja3Mg PSAwOworCQl1bnNpZ25lZCBpbnQgZGF0YV9yYXRlLCB1dl9kYXRhX3JhdGU7CisJCXVpbnQxNl90 IHBsYW5lX2Jsb2NrcywgdXZfcGxhbmVfYmxvY2tzOwogCiAJCWlmIChwbGFuZV9pZCA9PSBQTEFO RV9DVVJTT1IpCiAJCQljb250aW51ZTsKQEAgLTQyODMsMjEgKzQyNzQsMjAgQEAgc2tsX2FsbG9j YXRlX3BpcGVfZGRiKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCiAKIAkJc3RhcnQg Kz0gcGxhbmVfYmxvY2tzOwogCi0JCS8qCi0JCSAqIGFsbG9jYXRpb24gZm9yIHlfcGxhbmUgcGFy dCBvZiBwbGFuYXIgZm9ybWF0OgotCQkgKi8KLQkJeV9kYXRhX3JhdGUgPSBwbGFuZV95X2RhdGFf cmF0ZVtwbGFuZV9pZF07CisJCS8qIEFsbG9jYXRlIEREQiBmb3IgVVYgcGxhbmUgZm9yIHBsYW5h ciBmb3JtYXQvTlYxMiAqLworCQl1dl9kYXRhX3JhdGUgPSB1dl9wbGFuZV9kYXRhX3JhdGVbcGxh bmVfaWRdOwogCi0JCXlfcGxhbmVfYmxvY2tzID0geV9taW5pbXVtW3BsYW5lX2lkXTsKLQkJeV9w bGFuZV9ibG9ja3MgKz0gZGl2X3U2NCgodWludDY0X3QpYWxsb2Nfc2l6ZSAqIHlfZGF0YV9yYXRl LAorCQl1dl9wbGFuZV9ibG9ja3MgPSB1dl9taW5pbXVtW3BsYW5lX2lkXTsKKwkJdXZfcGxhbmVf YmxvY2tzICs9IGRpdl91NjQoKHVpbnQ2NF90KWFsbG9jX3NpemUgKiB1dl9kYXRhX3JhdGUsCiAJ CQkJCXRvdGFsX2RhdGFfcmF0ZSk7CiAKLQkJaWYgKHlfZGF0YV9yYXRlKSB7Ci0JCQlkZGItPnlf cGxhbmVbcGlwZV1bcGxhbmVfaWRdLnN0YXJ0ID0gc3RhcnQ7Ci0JCQlkZGItPnlfcGxhbmVbcGlw ZV1bcGxhbmVfaWRdLmVuZCA9IHN0YXJ0ICsgeV9wbGFuZV9ibG9ja3M7CisJCWlmICh1dl9kYXRh X3JhdGUpIHsKKwkJCWRkYi0+dXZfcGxhbmVbcGlwZV1bcGxhbmVfaWRdLnN0YXJ0ID0gc3RhcnQ7 CisJCQlkZGItPnV2X3BsYW5lW3BpcGVdW3BsYW5lX2lkXS5lbmQgPSBzdGFydCArCisJCQkJCQkJ CXV2X3BsYW5lX2Jsb2NrczsKIAkJfQogCi0JCXN0YXJ0ICs9IHlfcGxhbmVfYmxvY2tzOworCQlz dGFydCArPSB1dl9wbGFuZV9ibG9ja3M7CiAJfQogCiAJcmV0dXJuIDA7CkBAIC00NDI1LDggKzQ0 MTUsNyBAQCBza2xfY29tcHV0ZV9wbGFuZV93bV9wYXJhbXMoY29uc3Qgc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LAogCQl3cC0+d2lkdGggPSBkcm1fcmVjdF93aWR0aCgmaW50ZWxf cHN0YXRlLT5iYXNlLnNyYykgPj4gMTY7CiAJfQogCi0Jd3AtPmNwcCA9IChmYi0+Zm9ybWF0LT5m b3JtYXQgPT0gRFJNX0ZPUk1BVF9OVjEyKSA/IGZiLT5mb3JtYXQtPmNwcFsxXSA6Ci0JCQkJCQkJ ICAgIGZiLT5mb3JtYXQtPmNwcFswXTsKKwl3cC0+Y3BwID0gZmItPmZvcm1hdC0+Y3BwWzBdOwog CXdwLT5wbGFuZV9waXhlbF9yYXRlID0gc2tsX2FkanVzdGVkX3BsYW5lX3BpeGVsX3JhdGUoY3N0 YXRlLAogCQkJCQkJCSAgICAgaW50ZWxfcHN0YXRlKTsKIApAQCAtNDYxOCw2ICs0NjA3LDkgQEAg c2tsX2NvbXB1dGVfd21fbGV2ZWxzKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwKIAkJCXJldHVybiByZXQ7CiAJfQogCisJaWYgKGludGVsX3BzdGF0ZS0+YmFzZS5mYi0+ Zm9ybWF0LT5mb3JtYXQgPT0gRFJNX0ZPUk1BVF9OVjEyKQorCQl3bS0+aXNfbnYxMiA9IHRydWU7 CisKIAlyZXR1cm4gMDsKIH0KIApAQCAtNDc4OCwxMCArNDc4MCwxOSBAQCBzdGF0aWMgdm9pZCBz a2xfd3JpdGVfcGxhbmVfd20oc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMsCiAJc2tsX3dy aXRlX3dtX2xldmVsKGRldl9wcml2LCBQTEFORV9XTV9UUkFOUyhwaXBlLCBwbGFuZV9pZCksCiAJ CQkgICAmd20tPnRyYW5zX3dtKTsKIAotCXNrbF9kZGJfZW50cnlfd3JpdGUoZGV2X3ByaXYsIFBM QU5FX0JVRl9DRkcocGlwZSwgcGxhbmVfaWQpLAotCQkJICAgICZkZGItPnBsYW5lW3BpcGVdW3Bs YW5lX2lkXSk7Ci0Jc2tsX2RkYl9lbnRyeV93cml0ZShkZXZfcHJpdiwgUExBTkVfTlYxMl9CVUZf Q0ZHKHBpcGUsIHBsYW5lX2lkKSwKLQkJCSAgICAmZGRiLT55X3BsYW5lW3BpcGVdW3BsYW5lX2lk XSk7CisJaWYgKHdtLT5pc19udjEyKSB7CisJCXNrbF9kZGJfZW50cnlfd3JpdGUoZGV2X3ByaXYs IFBMQU5FX0JVRl9DRkcocGlwZSwgcGxhbmVfaWQpLAorCQkJCQkmZGRiLT51dl9wbGFuZVtwaXBl XVtwbGFuZV9pZF0pOworCQlza2xfZGRiX2VudHJ5X3dyaXRlKGRldl9wcml2LAorCQkJCSAgICBQ TEFORV9OVjEyX0JVRl9DRkcocGlwZSwgcGxhbmVfaWQpLAorCQkJCSAgICAmZGRiLT5wbGFuZVtw aXBlXVtwbGFuZV9pZF0pOworCX0gZWxzZSB7CisJCXNrbF9kZGJfZW50cnlfd3JpdGUoZGV2X3By aXYsIFBMQU5FX0JVRl9DRkcocGlwZSwgcGxhbmVfaWQpLAorCQkJCQkmZGRiLT5wbGFuZVtwaXBl XVtwbGFuZV9pZF0pOworCQkvKiBObyBOVjEyIGJ1ZmZlciBhbGxvY2F0aW9uIGZvciBub24gTlYx MiBwaXhlbCBmb3JtYXRzICovCisJCXNrbF9kZGJfZW50cnlfd3JpdGUoZGV2X3ByaXYsCisJCQkJ ICAgIFBMQU5FX05WMTJfQlVGX0NGRyhwaXBlLCBwbGFuZV9pZCksIDB4MCk7CisJfQogfQogCiBz dGF0aWMgdm9pZCBza2xfd3JpdGVfY3Vyc29yX3dtKHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9j cnRjLApAQCAtNDkwNiw4ICs0OTA3LDggQEAgc2tsX2RkYl9hZGRfYWZmZWN0ZWRfcGxhbmVzKHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUpCiAKIAkJaWYgKHNrbF9kZGJfZW50cnlfZXF1 YWwoJmN1cl9kZGItPnBsYW5lW3BpcGVdW3BsYW5lX2lkXSwKIAkJCQkJJm5ld19kZGItPnBsYW5l W3BpcGVdW3BsYW5lX2lkXSkgJiYKLQkJICAgIHNrbF9kZGJfZW50cnlfZXF1YWwoJmN1cl9kZGIt PnlfcGxhbmVbcGlwZV1bcGxhbmVfaWRdLAotCQkJCQkmbmV3X2RkYi0+eV9wbGFuZVtwaXBlXVtw bGFuZV9pZF0pKQorCQkgICAgc2tsX2RkYl9lbnRyeV9lcXVhbCgmY3VyX2RkYi0+dXZfcGxhbmVb cGlwZV1bcGxhbmVfaWRdLAorCQkJCQkmbmV3X2RkYi0+dXZfcGxhbmVbcGlwZV1bcGxhbmVfaWRd KSkKIAkJCWNvbnRpbnVlOwogCiAJCXBsYW5lX3N0YXRlID0gZHJtX2F0b21pY19nZXRfcGxhbmVf c3RhdGUoc3RhdGUsIHBsYW5lKTsKQEAgLTUwMDEsOCArNTAwMiw4IEBAIHNrbF9jb3B5X2RkYl9m b3JfcGlwZShzdHJ1Y3Qgc2tsX2RkYl92YWx1ZXMgKmRzdCwKIAkJICAgICBzdHJ1Y3Qgc2tsX2Rk Yl92YWx1ZXMgKnNyYywKIAkJICAgICBlbnVtIHBpcGUgcGlwZSkKIHsKLQltZW1jcHkoZHN0LT5k ZGIueV9wbGFuZVtwaXBlXSwgc3JjLT5kZGIueV9wbGFuZVtwaXBlXSwKLQkgICAgICAgc2l6ZW9m KGRzdC0+ZGRiLnlfcGxhbmVbcGlwZV0pKTsKKwltZW1jcHkoZHN0LT5kZGIudXZfcGxhbmVbcGlw ZV0sIHNyYy0+ZGRiLnV2X3BsYW5lW3BpcGVdLAorCSAgICAgICBzaXplb2YoZHN0LT5kZGIudXZf cGxhbmVbcGlwZV0pKTsKIAltZW1jcHkoZHN0LT5kZGIucGxhbmVbcGlwZV0sIHNyYy0+ZGRiLnBs YW5lW3BpcGVdLAogCSAgICAgICBzaXplb2YoZHN0LT5kZGIucGxhbmVbcGlwZV0pKTsKIH0KLS0g CjIuNy40CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJ bnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK