From mboxrd@z Thu Jan 1 00:00:00 1970 From: Vidya Srinivas Subject: [PATCH v13 02/17] drm/i915/skl+: refactor WM calculation for NV12 Date: Fri, 9 Mar 2018 14:18:49 +0530 Message-ID: <1520585344-10094-3-git-send-email-vidya.srinivas@intel.com> References: <1520585344-10094-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 mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9072E6EB73 for ; Fri, 9 Mar 2018 08:51:29 +0000 (UTC) In-Reply-To: <1520585344-10094-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: ville.syrjala@intel.com, Vidya Srinivas , maarten.lankhorst@intel.com List-Id: intel-gfx@lists.freedesktop.org RnJvbTogTWFoZXNoIEt1bWFyIDxtYWhlc2gxLmt1bWFyQGludGVsLmNvbT4KCkN1cnJlbnQgY29k ZSBjYWxjdWxhdGVzIEREQiBmb3IgcGxhbmFyIGZvcm1hdHMgaW4gc3VjaCBhIHdheSB0aGF0IHdl CnN0b3JlIEREQiBvZiBwbGFuZS0wIGluIHBsYW5lIDEgJiB2aWNlLXZlcnNhLgpJbiBvcmRlciB0 byBtYWtlIHRoaXMgY2xlYW4gdGhpcyBwYXRjaCByZWZhY3RvcnMgV00vRERCIGNhbGN1bGF0aW9u IGZvcgpOVjEyIHBsYW5hciBmb3JtYXRzLgoKdjI6IEFkZHJlc3NlZCByZXZpZXcgY29tbWVudHMg YnkgTWFhcnRlbgoKdjM6IFJlYmFzZWQgYW5kIGFkZHJlc3NlZCByZXZpZXcgY29tbWVudHMgYnkg TWFhcnRlbgoKdjQ6IEZpeGVkIGEgY29tcGlsYXRpb24gaXNzdWUgb2Ygc3RyaW5nIHJlcGxhY2Vt ZW50IGlzX252MTIgdG8KaXNfcGxhbmFyCgpSZXZpZXdlZC1ieTogTWFhcnRlbiBMYW5raG9yc3Qg PG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4LmludGVsLmNvbT4KU2lnbmVkLW9mZi1ieTogTWFoZXNo IEt1bWFyIDxtYWhlc2gxLmt1bWFyQGludGVsLmNvbT4KU2lnbmVkLW9mZi1ieTogVmlkeWEgU3Jp bml2YXMgPHZpZHlhLnNyaW5pdmFzQGludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5oICB8ICAgNSArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2Lmgg fCAgIDEgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyAgfCAxMjEgKysrKysrKysr KysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tCiAzIGZpbGVzIGNoYW5nZWQsIDY2IGluc2Vy dGlvbnMoKyksIDYxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCmluZGV4IDA3 NzVlMzMuLjVhYmJkMDQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAtMTQ1MSw4ICsxNDUx LDkgQEAgc3RhdGljIGlubGluZSBib29sIHNrbF9kZGJfZW50cnlfZXF1YWwoY29uc3Qgc3RydWN0 IHNrbF9kZGJfZW50cnkgKmUxLAogfQogCiBzdHJ1Y3Qgc2tsX2RkYl9hbGxvY2F0aW9uIHsKLQlz dHJ1Y3Qgc2tsX2RkYl9lbnRyeSBwbGFuZVtJOTE1X01BWF9QSVBFU11bSTkxNV9NQVhfUExBTkVT XTsgLyogcGFja2VkL3V2ICovCi0Jc3RydWN0IHNrbF9kZGJfZW50cnkgeV9wbGFuZVtJOTE1X01B WF9QSVBFU11bSTkxNV9NQVhfUExBTkVTXTsKKwkvKiBwYWNrZWQveSAqLworCXN0cnVjdCBza2xf ZGRiX2VudHJ5IHBsYW5lW0k5MTVfTUFYX1BJUEVTXVtJOTE1X01BWF9QTEFORVNdOworCXN0cnVj dCBza2xfZGRiX2VudHJ5IHV2X3BsYW5lW0k5MTVfTUFYX1BJUEVTXVtJOTE1X01BWF9QTEFORVNd OwogfTsKIAogc3RydWN0IHNrbF9kZGJfdmFsdWVzIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgK aW5kZXggNzU5NjljZS4uMTg5MzBhZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKQEAgLTU5 OSw2ICs1OTksNyBAQCBzdHJ1Y3QgaW50ZWxfcGlwZV93bSB7CiBzdHJ1Y3Qgc2tsX3BsYW5lX3dt IHsKIAlzdHJ1Y3Qgc2tsX3dtX2xldmVsIHdtWzhdOwogCXN0cnVjdCBza2xfd21fbGV2ZWwgdHJh bnNfd207CisJYm9vbCBpc19wbGFuYXI7CiB9OwogCiBzdHJ1Y3Qgc2tsX3BpcGVfd20gewpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3BtLmMKaW5kZXggNzk3ZmU0ZC4uMzFlZjVjOCAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9wbS5jCkBAIC00MDA5LDkgKzQwMDksOSBAQCBpbnQgc2tsX2NoZWNrX3BpcGVfbWF4X3Bp eGVsX3JhdGUoc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMsCiBzdGF0aWMgdW5zaWduZWQg aW50CiBza2xfcGxhbmVfcmVsYXRpdmVfZGF0YV9yYXRlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpjc3RhdGUsCiAJCQkgICAgIGNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnBz dGF0ZSwKLQkJCSAgICAgaW50IHkpCisJCQkgICAgIGNvbnN0IGludCBwbGFuZSkKIHsKLQlzdHJ1 Y3QgaW50ZWxfcGxhbmUgKnBsYW5lID0gdG9faW50ZWxfcGxhbmUocHN0YXRlLT5wbGFuZSk7CisJ c3RydWN0IGludGVsX3BsYW5lICppbnRlbF9wbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBzdGF0ZS0+ cGxhbmUpOwogCXN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqaW50ZWxfcHN0YXRlID0gdG9faW50 ZWxfcGxhbmVfc3RhdGUocHN0YXRlKTsKIAl1aW50MzJfdCBkYXRhX3JhdGU7CiAJdWludDMyX3Qg d2lkdGggPSAwLCBoZWlnaHQgPSAwOwpAQCAtNDAyNSw5ICs0MDI1LDkgQEAgc2tsX3BsYW5lX3Jl bGF0aXZlX2RhdGFfcmF0ZShjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlLAog CWZiID0gcHN0YXRlLT5mYjsKIAlmb3JtYXQgPSBmYi0+Zm9ybWF0LT5mb3JtYXQ7CiAKLQlpZiAo cGxhbmUtPmlkID09IFBMQU5FX0NVUlNPUikKKwlpZiAoaW50ZWxfcGxhbmUtPmlkID09IFBMQU5F X0NVUlNPUikKIAkJcmV0dXJuIDA7Ci0JaWYgKHkgJiYgZm9ybWF0ICE9IERSTV9GT1JNQVRfTlYx MikKKwlpZiAocGxhbmUgPT0gMSAmJiBmb3JtYXQgIT0gRFJNX0ZPUk1BVF9OVjEyKQogCQlyZXR1 cm4gMDsKIAogCS8qCkBAIC00MDM4LDE5ICs0MDM4LDE0IEBAIHNrbF9wbGFuZV9yZWxhdGl2ZV9k YXRhX3JhdGUoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSwKIAl3aWR0aCA9 IGRybV9yZWN0X3dpZHRoKCZpbnRlbF9wc3RhdGUtPmJhc2Uuc3JjKSA+PiAxNjsKIAloZWlnaHQg PSBkcm1fcmVjdF9oZWlnaHQoJmludGVsX3BzdGF0ZS0+YmFzZS5zcmMpID4+IDE2OwogCi0JLyog Zm9yIHBsYW5hciBmb3JtYXQgKi8KLQlpZiAoZm9ybWF0ID09IERSTV9GT1JNQVRfTlYxMikgewot CQlpZiAoeSkgIC8qIHktcGxhbmUgZGF0YSByYXRlICovCi0JCQlkYXRhX3JhdGUgPSB3aWR0aCAq IGhlaWdodCAqCi0JCQkJZmItPmZvcm1hdC0+Y3BwWzBdOwotCQllbHNlICAgIC8qIHV2LXBsYW5l IGRhdGEgcmF0ZSAqLwotCQkJZGF0YV9yYXRlID0gKHdpZHRoIC8gMikgKiAoaGVpZ2h0IC8gMikg KgotCQkJCWZiLT5mb3JtYXQtPmNwcFsxXTsKLQl9IGVsc2UgewotCQkvKiBmb3IgcGFja2VkIGZv cm1hdHMgKi8KLQkJZGF0YV9yYXRlID0gd2lkdGggKiBoZWlnaHQgKiBmYi0+Zm9ybWF0LT5jcHBb MF07CisJLyogVVYgcGxhbmUgZG9lcyAxLzIgcGl4ZWwgc3ViLXNhbXBsaW5nICovCisJaWYgKHBs YW5lID09IDEgJiYgZm9ybWF0ID09IERSTV9GT1JNQVRfTlYxMikgeworCQl3aWR0aCAvPSAyOwor CQloZWlnaHQgLz0gMjsKIAl9CiAKKwlkYXRhX3JhdGUgPSB3aWR0aCAqIGhlaWdodCAqIGZiLT5m b3JtYXQtPmNwcFtwbGFuZV07CisKIAlkb3duX3NjYWxlX2Ftb3VudCA9IHNrbF9wbGFuZV9kb3du c2NhbGVfYW1vdW50KGNzdGF0ZSwgaW50ZWxfcHN0YXRlKTsKIAogCXJldHVybiBtdWxfcm91bmRf dXBfdTMyX2ZpeGVkMTYoZGF0YV9yYXRlLCBkb3duX3NjYWxlX2Ftb3VudCk7CkBAIC00MDYzLDgg KzQwNTgsOCBAQCBza2xfcGxhbmVfcmVsYXRpdmVfZGF0YV9yYXRlKGNvbnN0IHN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpjc3RhdGUsCiAgKi8KIHN0YXRpYyB1bnNpZ25lZCBpbnQKIHNrbF9nZXRf dG90YWxfcmVsYXRpdmVfZGF0YV9yYXRlKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICppbnRlbF9j c3RhdGUsCi0JCQkJIHVuc2lnbmVkICpwbGFuZV9kYXRhX3JhdGUsCi0JCQkJIHVuc2lnbmVkICpw bGFuZV95X2RhdGFfcmF0ZSkKKwkJCQkgdW5zaWduZWQgaW50ICpwbGFuZV9kYXRhX3JhdGUsCisJ CQkJIHVuc2lnbmVkIGludCAqdXZfcGxhbmVfZGF0YV9yYXRlKQogewogCXN0cnVjdCBkcm1fY3J0 Y19zdGF0ZSAqY3N0YXRlID0gJmludGVsX2NzdGF0ZS0+YmFzZTsKIAlzdHJ1Y3QgZHJtX2F0b21p Y19zdGF0ZSAqc3RhdGUgPSBjc3RhdGUtPnN0YXRlOwpAQCAtNDA4MCwxNyArNDA3NSwxNyBAQCBz a2xfZ2V0X3RvdGFsX3JlbGF0aXZlX2RhdGFfcmF0ZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq aW50ZWxfY3N0YXRlLAogCQllbnVtIHBsYW5lX2lkIHBsYW5lX2lkID0gdG9faW50ZWxfcGxhbmUo cGxhbmUpLT5pZDsKIAkJdW5zaWduZWQgaW50IHJhdGU7CiAKLQkJLyogcGFja2VkL3V2ICovCisJ CS8qIHBhY2tlZC95ICovCiAJCXJhdGUgPSBza2xfcGxhbmVfcmVsYXRpdmVfZGF0YV9yYXRlKGlu dGVsX2NzdGF0ZSwKIAkJCQkJCSAgICBwc3RhdGUsIDApOwogCQlwbGFuZV9kYXRhX3JhdGVbcGxh bmVfaWRdID0gcmF0ZTsKIAogCQl0b3RhbF9kYXRhX3JhdGUgKz0gcmF0ZTsKIAotCQkvKiB5LXBs YW5lICovCisJCS8qIHV2LXBsYW5lICovCiAJCXJhdGUgPSBza2xfcGxhbmVfcmVsYXRpdmVfZGF0 YV9yYXRlKGludGVsX2NzdGF0ZSwKIAkJCQkJCSAgICBwc3RhdGUsIDEpOwotCQlwbGFuZV95X2Rh dGFfcmF0ZVtwbGFuZV9pZF0gPSByYXRlOworCQl1dl9wbGFuZV9kYXRhX3JhdGVbcGxhbmVfaWRd ID0gcmF0ZTsKIAogCQl0b3RhbF9kYXRhX3JhdGUgKz0gcmF0ZTsKIAl9CkBAIC00MDk5LDggKzQw OTQsNyBAQCBza2xfZ2V0X3RvdGFsX3JlbGF0aXZlX2RhdGFfcmF0ZShzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqaW50ZWxfY3N0YXRlLAogfQogCiBzdGF0aWMgdWludDE2X3QKLXNrbF9kZGJfbWlu X2FsbG9jKGNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnBzdGF0ZSwKLQkJICBjb25zdCBp bnQgeSkKK3NrbF9kZGJfbWluX2FsbG9jKGNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnBz dGF0ZSwgY29uc3QgaW50IHBsYW5lKQogewogCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0g cHN0YXRlLT5mYjsKIAlzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKmludGVsX3BzdGF0ZSA9IHRv X2ludGVsX3BsYW5lX3N0YXRlKHBzdGF0ZSk7CkBAIC00MTExLDggKzQxMDUsOCBAQCBza2xfZGRi X21pbl9hbGxvYyhjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpwc3RhdGUsCiAJaWYgKFdB Uk5fT04oIWZiKSkKIAkJcmV0dXJuIDA7CiAKLQkvKiBGb3IgcGFja2VkIGZvcm1hdHMsIG5vIHkt cGxhbmUsIHJldHVybiAwICovCi0JaWYgKHkgJiYgZmItPmZvcm1hdC0+Zm9ybWF0ICE9IERSTV9G T1JNQVRfTlYxMikKKwkvKiBGb3IgcGFja2VkIGZvcm1hdHMsIGFuZCB1di1wbGFuZSwgcmV0dXJu IDAgKi8KKwlpZiAocGxhbmUgPT0gMSAmJiBmYi0+Zm9ybWF0LT5mb3JtYXQgIT0gRFJNX0ZPUk1B VF9OVjEyKQogCQlyZXR1cm4gMDsKIAogCS8qIEZvciBOb24gWS10aWxlIHJldHVybiA4LWJsb2Nr cyAqLwpAQCAtNDEzMSwxNSArNDEyNSwxMiBAQCBza2xfZGRiX21pbl9hbGxvYyhjb25zdCBzdHJ1 Y3QgZHJtX3BsYW5lX3N0YXRlICpwc3RhdGUsCiAJc3JjX2ggPSBkcm1fcmVjdF9oZWlnaHQoJmlu dGVsX3BzdGF0ZS0+YmFzZS5zcmMpID4+IDE2OwogCiAJLyogSGFsdmUgVVYgcGxhbmUgd2lkdGgg YW5kIGhlaWdodCBmb3IgTlYxMiAqLwotCWlmIChmYi0+Zm9ybWF0LT5mb3JtYXQgPT0gRFJNX0ZP Uk1BVF9OVjEyICYmICF5KSB7CisJaWYgKHBsYW5lID09IDEpIHsKIAkJc3JjX3cgLz0gMjsKIAkJ c3JjX2ggLz0gMjsKIAl9CiAKLQlpZiAoZmItPmZvcm1hdC0+Zm9ybWF0ID09IERSTV9GT1JNQVRf TlYxMiAmJiAheSkKLQkJcGxhbmVfYnBwID0gZmItPmZvcm1hdC0+Y3BwWzFdOwotCWVsc2UKLQkJ cGxhbmVfYnBwID0gZmItPmZvcm1hdC0+Y3BwWzBdOworCXBsYW5lX2JwcCA9IGZiLT5mb3JtYXQt PmNwcFtwbGFuZV07CiAKIAlpZiAoZHJtX3JvdGF0aW9uXzkwX29yXzI3MChwc3RhdGUtPnJvdGF0 aW9uKSkgewogCQlzd2l0Y2ggKHBsYW5lX2JwcCkgewpAQCAtNDE2Nyw3ICs0MTU4LDcgQEAgc2ts X2RkYl9taW5fYWxsb2MoY29uc3Qgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqcHN0YXRlLAogCiBz dGF0aWMgdm9pZAogc2tsX2RkYl9jYWxjX21pbihjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqY3N0YXRlLCBpbnQgbnVtX2FjdGl2ZSwKLQkJIHVpbnQxNl90ICptaW5pbXVtLCB1aW50MTZf dCAqeV9taW5pbXVtKQorCQkgdWludDE2X3QgKm1pbmltdW0sIHVpbnQxNl90ICp1dl9taW5pbXVt KQogewogCWNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnBzdGF0ZTsKIAlzdHJ1Y3QgZHJt X3BsYW5lICpwbGFuZTsKQEAgLTQxODIsNyArNDE3Myw3IEBAIHNrbF9kZGJfY2FsY19taW4oY29u c3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSwgaW50IG51bV9hY3RpdmUsCiAJCQlj b250aW51ZTsKIAogCQltaW5pbXVtW3BsYW5lX2lkXSA9IHNrbF9kZGJfbWluX2FsbG9jKHBzdGF0 ZSwgMCk7Ci0JCXlfbWluaW11bVtwbGFuZV9pZF0gPSBza2xfZGRiX21pbl9hbGxvYyhwc3RhdGUs IDEpOworCQl1dl9taW5pbXVtW3BsYW5lX2lkXSA9IHNrbF9kZGJfbWluX2FsbG9jKHBzdGF0ZSwg MSk7CiAJfQogCiAJbWluaW11bVtQTEFORV9DVVJTT1JdID0gc2tsX2N1cnNvcl9hbGxvY2F0aW9u KG51bV9hY3RpdmUpOwpAQCAtNDIwMCwxNyArNDE5MSwxNyBAQCBza2xfYWxsb2NhdGVfcGlwZV9k ZGIoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSwKIAlzdHJ1Y3Qgc2tsX2RkYl9lbnRy eSAqYWxsb2MgPSAmY3N0YXRlLT53bS5za2wuZGRiOwogCXVpbnQxNl90IGFsbG9jX3NpemUsIHN0 YXJ0OwogCXVpbnQxNl90IG1pbmltdW1bSTkxNV9NQVhfUExBTkVTXSA9IHt9OwotCXVpbnQxNl90 IHlfbWluaW11bVtJOTE1X01BWF9QTEFORVNdID0ge307CisJdWludDE2X3QgdXZfbWluaW11bVtJ OTE1X01BWF9QTEFORVNdID0ge307CiAJdW5zaWduZWQgaW50IHRvdGFsX2RhdGFfcmF0ZTsKIAll bnVtIHBsYW5lX2lkIHBsYW5lX2lkOwogCWludCBudW1fYWN0aXZlOwotCXVuc2lnbmVkIHBsYW5l X2RhdGFfcmF0ZVtJOTE1X01BWF9QTEFORVNdID0ge307Ci0JdW5zaWduZWQgcGxhbmVfeV9kYXRh X3JhdGVbSTkxNV9NQVhfUExBTkVTXSA9IHt9OworCXVuc2lnbmVkIGludCBwbGFuZV9kYXRhX3Jh dGVbSTkxNV9NQVhfUExBTkVTXSA9IHt9OworCXVuc2lnbmVkIGludCB1dl9wbGFuZV9kYXRhX3Jh dGVbSTkxNV9NQVhfUExBTkVTXSA9IHt9OwogCXVpbnQxNl90IHRvdGFsX21pbl9ibG9ja3MgPSAw OwogCiAJLyogQ2xlYXIgdGhlIHBhcnRpdGlvbmluZyBmb3IgZGlzYWJsZWQgcGxhbmVzLiAqLwog CW1lbXNldChkZGItPnBsYW5lW3BpcGVdLCAwLCBzaXplb2YoZGRiLT5wbGFuZVtwaXBlXSkpOwot CW1lbXNldChkZGItPnlfcGxhbmVbcGlwZV0sIDAsIHNpemVvZihkZGItPnlfcGxhbmVbcGlwZV0p KTsKKwltZW1zZXQoZGRiLT51dl9wbGFuZVtwaXBlXSwgMCwgc2l6ZW9mKGRkYi0+dXZfcGxhbmVb cGlwZV0pKTsKIAogCWlmIChXQVJOX09OKCFzdGF0ZSkpCiAJCXJldHVybiAwOwpAQCAtNDIyNSw3 ICs0MjE2LDcgQEAgc2tsX2FsbG9jYXRlX3BpcGVfZGRiKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl ICpjc3RhdGUsCiAJaWYgKGFsbG9jX3NpemUgPT0gMCkKIAkJcmV0dXJuIDA7CiAKLQlza2xfZGRi X2NhbGNfbWluKGNzdGF0ZSwgbnVtX2FjdGl2ZSwgbWluaW11bSwgeV9taW5pbXVtKTsKKwlza2xf ZGRiX2NhbGNfbWluKGNzdGF0ZSwgbnVtX2FjdGl2ZSwgbWluaW11bSwgdXZfbWluaW11bSk7CiAK IAkvKgogCSAqIDEuIEFsbG9jYXRlIHRoZSBtaW5pbnVtIHJlcXVpcmVkIGJsb2NrcyBmb3IgZWFj aCBhY3RpdmUgcGxhbmUKQEAgLTQyMzUsNyArNDIyNiw3IEBAIHNrbF9hbGxvY2F0ZV9waXBlX2Rk YihzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlLAogCiAJZm9yX2VhY2hfcGxhbmVfaWRf b25fY3J0YyhpbnRlbF9jcnRjLCBwbGFuZV9pZCkgewogCQl0b3RhbF9taW5fYmxvY2tzICs9IG1p bmltdW1bcGxhbmVfaWRdOwotCQl0b3RhbF9taW5fYmxvY2tzICs9IHlfbWluaW11bVtwbGFuZV9p ZF07CisJCXRvdGFsX21pbl9ibG9ja3MgKz0gdXZfbWluaW11bVtwbGFuZV9pZF07CiAJfQogCiAJ aWYgKHRvdGFsX21pbl9ibG9ja3MgPiBhbGxvY19zaXplKSB7CkBAIC00MjU3LDE0ICs0MjQ4LDE0 IEBAIHNrbF9hbGxvY2F0ZV9waXBlX2RkYihzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRl LAogCSAqLwogCXRvdGFsX2RhdGFfcmF0ZSA9IHNrbF9nZXRfdG90YWxfcmVsYXRpdmVfZGF0YV9y YXRlKGNzdGF0ZSwKIAkJCQkJCQkgICBwbGFuZV9kYXRhX3JhdGUsCi0JCQkJCQkJICAgcGxhbmVf eV9kYXRhX3JhdGUpOworCQkJCQkJCSAgIHV2X3BsYW5lX2RhdGFfcmF0ZSk7CiAJaWYgKHRvdGFs X2RhdGFfcmF0ZSA9PSAwKQogCQlyZXR1cm4gMDsKIAogCXN0YXJ0ID0gYWxsb2MtPnN0YXJ0Owog CWZvcl9lYWNoX3BsYW5lX2lkX29uX2NydGMoaW50ZWxfY3J0YywgcGxhbmVfaWQpIHsKLQkJdW5z aWduZWQgaW50IGRhdGFfcmF0ZSwgeV9kYXRhX3JhdGU7Ci0JCXVpbnQxNl90IHBsYW5lX2Jsb2Nr cywgeV9wbGFuZV9ibG9ja3MgPSAwOworCQl1bnNpZ25lZCBpbnQgZGF0YV9yYXRlLCB1dl9kYXRh X3JhdGU7CisJCXVpbnQxNl90IHBsYW5lX2Jsb2NrcywgdXZfcGxhbmVfYmxvY2tzOwogCiAJCWlm IChwbGFuZV9pZCA9PSBQTEFORV9DVVJTT1IpCiAJCQljb250aW51ZTsKQEAgLTQyODgsMjEgKzQy NzksMjAgQEAgc2tsX2FsbG9jYXRlX3BpcGVfZGRiKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj c3RhdGUsCiAKIAkJc3RhcnQgKz0gcGxhbmVfYmxvY2tzOwogCi0JCS8qCi0JCSAqIGFsbG9jYXRp b24gZm9yIHlfcGxhbmUgcGFydCBvZiBwbGFuYXIgZm9ybWF0OgotCQkgKi8KLQkJeV9kYXRhX3Jh dGUgPSBwbGFuZV95X2RhdGFfcmF0ZVtwbGFuZV9pZF07CisJCS8qIEFsbG9jYXRlIEREQiBmb3Ig VVYgcGxhbmUgZm9yIHBsYW5hciBmb3JtYXQvTlYxMiAqLworCQl1dl9kYXRhX3JhdGUgPSB1dl9w bGFuZV9kYXRhX3JhdGVbcGxhbmVfaWRdOwogCi0JCXlfcGxhbmVfYmxvY2tzID0geV9taW5pbXVt W3BsYW5lX2lkXTsKLQkJeV9wbGFuZV9ibG9ja3MgKz0gZGl2X3U2NCgodWludDY0X3QpYWxsb2Nf c2l6ZSAqIHlfZGF0YV9yYXRlLAotCQkJCQl0b3RhbF9kYXRhX3JhdGUpOworCQl1dl9wbGFuZV9i bG9ja3MgPSB1dl9taW5pbXVtW3BsYW5lX2lkXTsKKwkJdXZfcGxhbmVfYmxvY2tzICs9IGRpdl91 NjQoKHVpbnQ2NF90KWFsbG9jX3NpemUgKiB1dl9kYXRhX3JhdGUsCisJCQkJCSAgIHRvdGFsX2Rh dGFfcmF0ZSk7CiAKLQkJaWYgKHlfZGF0YV9yYXRlKSB7Ci0JCQlkZGItPnlfcGxhbmVbcGlwZV1b cGxhbmVfaWRdLnN0YXJ0ID0gc3RhcnQ7Ci0JCQlkZGItPnlfcGxhbmVbcGlwZV1bcGxhbmVfaWRd LmVuZCA9IHN0YXJ0ICsgeV9wbGFuZV9ibG9ja3M7CisJCWlmICh1dl9kYXRhX3JhdGUpIHsKKwkJ CWRkYi0+dXZfcGxhbmVbcGlwZV1bcGxhbmVfaWRdLnN0YXJ0ID0gc3RhcnQ7CisJCQlkZGItPnV2 X3BsYW5lW3BpcGVdW3BsYW5lX2lkXS5lbmQgPQorCQkJCXN0YXJ0ICsgdXZfcGxhbmVfYmxvY2tz OwogCQl9CiAKLQkJc3RhcnQgKz0geV9wbGFuZV9ibG9ja3M7CisJCXN0YXJ0ICs9IHV2X3BsYW5l X2Jsb2NrczsKIAl9CiAKIAlyZXR1cm4gMDsKQEAgLTQ0MzAsOCArNDQyMCw3IEBAIHNrbF9jb21w dXRlX3BsYW5lX3dtX3BhcmFtcyhjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsCiAJCXdwLT53aWR0aCA9IGRybV9yZWN0X3dpZHRoKCZpbnRlbF9wc3RhdGUtPmJhc2Uuc3Jj KSA+PiAxNjsKIAl9CiAKLQl3cC0+Y3BwID0gKGZiLT5mb3JtYXQtPmZvcm1hdCA9PSBEUk1fRk9S TUFUX05WMTIpID8gZmItPmZvcm1hdC0+Y3BwWzFdIDoKLQkJCQkJCQkgICAgZmItPmZvcm1hdC0+ Y3BwWzBdOworCXdwLT5jcHAgPSBmYi0+Zm9ybWF0LT5jcHBbMF07CiAJd3AtPnBsYW5lX3BpeGVs X3JhdGUgPSBza2xfYWRqdXN0ZWRfcGxhbmVfcGl4ZWxfcmF0ZShjc3RhdGUsCiAJCQkJCQkJICAg ICBpbnRlbF9wc3RhdGUpOwogCkBAIC00NjYwLDYgKzQ2NDksOSBAQCBza2xfY29tcHV0ZV93bV9s ZXZlbHMoY29uc3Qgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQkJcmV0dXJu IHJldDsKIAl9CiAKKwlpZiAoaW50ZWxfcHN0YXRlLT5iYXNlLmZiLT5mb3JtYXQtPmZvcm1hdCA9 PSBEUk1fRk9STUFUX05WMTIpCisJCXdtLT5pc19wbGFuYXIgPSB0cnVlOworCiAJcmV0dXJuIDA7 CiB9CiAKQEAgLTQ4MzMsMTAgKzQ4MjUsMjEgQEAgc3RhdGljIHZvaWQgc2tsX3dyaXRlX3BsYW5l X3dtKHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjLAogCiAJc2tsX2RkYl9lbnRyeV93cml0 ZShkZXZfcHJpdiwgUExBTkVfQlVGX0NGRyhwaXBlLCBwbGFuZV9pZCksCiAJCQkgICAgJmRkYi0+ cGxhbmVbcGlwZV1bcGxhbmVfaWRdKTsKLQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDExKQor CWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDExKQorCQlyZXR1cm4gc2tsX2RkYl9lbnRyeV93 cml0ZShkZXZfcHJpdiwKKwkJCQkJICAgUExBTkVfQlVGX0NGRyhwaXBlLCBwbGFuZV9pZCksCisJ CQkJCSAgICZkZGItPnBsYW5lW3BpcGVdW3BsYW5lX2lkXSk7CisJaWYgKHdtLT5pc19wbGFuYXIp IHsKKwkJc2tsX2RkYl9lbnRyeV93cml0ZShkZXZfcHJpdiwgUExBTkVfQlVGX0NGRyhwaXBlLCBw bGFuZV9pZCksCisJCQkJICAgICZkZGItPnV2X3BsYW5lW3BpcGVdW3BsYW5lX2lkXSk7CiAJCXNr bF9kZGJfZW50cnlfd3JpdGUoZGV2X3ByaXYsCiAJCQkJICAgIFBMQU5FX05WMTJfQlVGX0NGRyhw aXBlLCBwbGFuZV9pZCksCi0JCQkJICAgICZkZGItPnlfcGxhbmVbcGlwZV1bcGxhbmVfaWRdKTsK KwkJCQkgICAgJmRkYi0+cGxhbmVbcGlwZV1bcGxhbmVfaWRdKTsKKwl9IGVsc2UgeworCQlza2xf ZGRiX2VudHJ5X3dyaXRlKGRldl9wcml2LCBQTEFORV9CVUZfQ0ZHKHBpcGUsIHBsYW5lX2lkKSwK KwkJCQkgICAgJmRkYi0+cGxhbmVbcGlwZV1bcGxhbmVfaWRdKTsKKwkJSTkxNV9XUklURShQTEFO RV9OVjEyX0JVRl9DRkcocGlwZSwgcGxhbmVfaWQpLCAweDApOworCX0KIH0KIAogc3RhdGljIHZv aWQgc2tsX3dyaXRlX2N1cnNvcl93bShzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YywKQEAg LTQ5NTEsOCArNDk1NCw4IEBAIHNrbF9kZGJfYWRkX2FmZmVjdGVkX3BsYW5lcyhzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlKQogCiAJCWlmIChza2xfZGRiX2VudHJ5X2VxdWFsKCZjdXJf ZGRiLT5wbGFuZVtwaXBlXVtwbGFuZV9pZF0sCiAJCQkJCSZuZXdfZGRiLT5wbGFuZVtwaXBlXVtw bGFuZV9pZF0pICYmCi0JCSAgICBza2xfZGRiX2VudHJ5X2VxdWFsKCZjdXJfZGRiLT55X3BsYW5l W3BpcGVdW3BsYW5lX2lkXSwKLQkJCQkJJm5ld19kZGItPnlfcGxhbmVbcGlwZV1bcGxhbmVfaWRd KSkKKwkJICAgIHNrbF9kZGJfZW50cnlfZXF1YWwoJmN1cl9kZGItPnV2X3BsYW5lW3BpcGVdW3Bs YW5lX2lkXSwKKwkJCQkJJm5ld19kZGItPnV2X3BsYW5lW3BpcGVdW3BsYW5lX2lkXSkpCiAJCQlj b250aW51ZTsKIAogCQlwbGFuZV9zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X3BsYW5lX3N0YXRlKHN0 YXRlLCBwbGFuZSk7CkBAIC01MDQ2LDggKzUwNDksOCBAQCBza2xfY29weV9kZGJfZm9yX3BpcGUo c3RydWN0IHNrbF9kZGJfdmFsdWVzICpkc3QsCiAJCSAgICAgIHN0cnVjdCBza2xfZGRiX3ZhbHVl cyAqc3JjLAogCQkgICAgICBlbnVtIHBpcGUgcGlwZSkKIHsKLQltZW1jcHkoZHN0LT5kZGIueV9w bGFuZVtwaXBlXSwgc3JjLT5kZGIueV9wbGFuZVtwaXBlXSwKLQkgICAgICAgc2l6ZW9mKGRzdC0+ ZGRiLnlfcGxhbmVbcGlwZV0pKTsKKwltZW1jcHkoZHN0LT5kZGIudXZfcGxhbmVbcGlwZV0sIHNy Yy0+ZGRiLnV2X3BsYW5lW3BpcGVdLAorCSAgICAgICBzaXplb2YoZHN0LT5kZGIudXZfcGxhbmVb cGlwZV0pKTsKIAltZW1jcHkoZHN0LT5kZGIucGxhbmVbcGlwZV0sIHNyYy0+ZGRiLnBsYW5lW3Bp cGVdLAogCSAgICAgICBzaXplb2YoZHN0LT5kZGIucGxhbmVbcGlwZV0pKTsKIH0KLS0gCjIuNy40 CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1n ZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK