From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.9 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,UNWANTED_LANGUAGE_BODY, URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3A459C2D0E4 for ; Fri, 27 Nov 2020 10:52:11 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id D549B206DF for ; Fri, 27 Nov 2020 10:52:10 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D549B206DF Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id B981C6EB8A; Fri, 27 Nov 2020 10:52:09 +0000 (UTC) Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1D69F6EB78 for ; Fri, 27 Nov 2020 10:52:00 +0000 (UTC) IronPort-SDR: ykPIrRtRtjy++S4Nc4bJW6DbNWubjckHeG/6croG8AEzW7VdEEU8AASd+gdaDV5sneQAAn3+lN vF5Cz4yh6Mow== X-IronPort-AV: E=McAfee;i="6000,8403,9817"; a="151634275" X-IronPort-AV: E=Sophos;i="5.78,374,1599548400"; d="scan'208";a="151634275" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Nov 2020 02:51:10 -0800 IronPort-SDR: OfIjHX3DFqYJRyI2F5ov/izX+Je7mlAj+js4Rnql++uYa1eTNaknTKAMN82PW2cKuxMbmu2WAt UaW4Wsiu3Tsg== X-IronPort-AV: E=Sophos;i="5.78,374,1599548400"; d="scan'208";a="537605103" Received: from helsinki.fi.intel.com ([10.237.66.162]) by fmsmga005-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Nov 2020 02:51:08 -0800 From: Gwan-gyeong Mun To: intel-gfx@lists.freedesktop.org Date: Fri, 27 Nov 2020 12:50:38 +0200 Message-Id: <20201127105041.2793779-2-gwan-gyeong.mun@intel.com> X-Mailer: git-send-email 2.25.0 In-Reply-To: <20201127105041.2793779-1-gwan-gyeong.mun@intel.com> References: <20201127105041.2793779-1-gwan-gyeong.mun@intel.com> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH v3 2/5] drm/i915/display/psr: Calculate Trancoder's SU rect and plane's SF rect X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" SXQgaW1wbGVtZW50cyBjYWxjdWxhdGluZyBvZiBTZWxlY3RpdmUgVXBkYXRlIGFyZWEgZm9yIHRy YW5zY29kZXIuClNVIGZvbGxvd3MgY3J0YyBnZW9tZXRyeS4KdGhlIGxvZ2ljIGhhbmRsZXMgdGhl IGZvbGxvd2luZyBjYXNlcy4KIDEuIHBsYW5lIGhhcyBtb3ZlZAogMi4gcGxhbmUncyBhbHBoYSB2 YWx1ZSBoYXMgY2hhbmdlZAogMy4gcGxhbmUncyB2aXNpYmlsaXR5IGhhcyBjaGFuZ2VkCiA0LiBw bGFuZSdzIGRhbWFnZSBjbGlwcyBleGlzdAogNS4gcGxhbmUncyBmYiBoYXMgZmxpcHBlZCwgYnV0 IHRoZXJlIHdlcmUgbm8gZGFtYWdlZCBjbGlwcwoKQW5kIGl0IGdlbmVyYXRlcyBhIFNlbGVjdGl2 ZSBGZXRjaCBhcmVhIGZvciB0aGUgcGxhbmUuCkVhY2ggU0YgYXJlYSBmb2xsb3dzIHBsYW5lIGdl b21ldHJ5LgpTRiByZWN0IGlzIGNhbGN1bGF0ZWQgYnkgaW50ZXJzZWN0aW5nIGEgcGxhbmUncyBk c3QgcmVjdCBhbmQgU1UgcmVjdC4KaW4gb3JkZXIgdG8gZm9sbG93IHRoZSBwbGFuZSdzIHNyYyBn ZW9tZXRyeSwgdGhlIGludGVyc2VjdGVkIHJlY3QKaXMgY29udmVydGVkIHRvIHRoZSBwbGFuZSdz IHNyYyBnZW9tZXRyeS4KClRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIGRvZXMgbm90IGhhbmRs ZSBhIGZ1bGx5IG9ic2N1cmVkIHBsYW5lIGFyZWEuCkluIG9yZGVyIHRvIG9wdGltaXplIGNhbGN1 bGF0aW5nIG9mIFNVIGFyZWEsIGl0IG5lZWRzIHRvIHN1YnRyYWN0CnRoZSBhY2N1bXVsYXRlZCBT VSBhcmVhIGZyb20gdGhlIHZpc2libGUgYXJlYS4KCkNjOiBKb3PDqSBSb2JlcnRvIGRlIFNvdXph IDxqb3NlLnNvdXphQGludGVsLmNvbT4KQ2M6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFs YUBsaW51eC5pbnRlbC5jb20+CkNjOiBKdWhhLVBla2thIEhlaWtraWxhIDxqdWhhcGVra2EuaGVp a2tpbGFAZ21haWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBHd2FuLWd5ZW9uZyBNdW4gPGd3YW4tZ3ll b25nLm11bkBpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRl bF9kaXNwbGF5LmggfCAgIDkgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9w c3IuYyAgICAgfCAyNDggKysrKysrKysrKysrKysrLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCAyMTEg aW5zZXJ0aW9ucygrKSwgNDYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9k aXNwbGF5L2ludGVsX2Rpc3BsYXkuaAppbmRleCA1ZTBkNDJkODJjMTEuLmIyOTY5ZDhmZjYyNSAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmgK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9kaXNwbGF5LmgKQEAgLTQ2 NSw2ICs0NjUsMTUgQEAgZW51bSBwaHlfZmlhIHsKIAkgICAgIChfX2kpKyspIFwKIAkJZm9yX2Vh Y2hfaWYocGxhbmUpCiAKKyNkZWZpbmUgZm9yX2VhY2hfb2xkbmV3X2ludGVsX3BsYW5lX2luX3N0 YXRlX3JldmVyc2UoX19zdGF0ZSwgcGxhbmUsIG9sZF9wbGFuZV9zdGF0ZSwgbmV3X3BsYW5lX3N0 YXRlLCBfX2kpIFwKKwlmb3IgKChfX2kpID0gKF9fc3RhdGUpLT5iYXNlLmRldi0+bW9kZV9jb25m aWcubnVtX3RvdGFsX3BsYW5lIC0gMTsgXAorCSAgICAgKF9faSkgPj0gMCAmJiBcCisJCSAgICAg KChwbGFuZSkgPSB0b19pbnRlbF9wbGFuZSgoX19zdGF0ZSktPmJhc2UucGxhbmVzW19faV0ucHRy KSwgXAorCQkgICAgICAob2xkX3BsYW5lX3N0YXRlKSA9IHRvX2ludGVsX3BsYW5lX3N0YXRlKChf X3N0YXRlKS0+YmFzZS5wbGFuZXNbX19pXS5vbGRfc3RhdGUpLCBcCisJCSAgICAgIChuZXdfcGxh bmVfc3RhdGUpID0gdG9faW50ZWxfcGxhbmVfc3RhdGUoKF9fc3RhdGUpLT5iYXNlLnBsYW5lc1tf X2ldLm5ld19zdGF0ZSksIDEpOyBcCisJICAgICAoX19pKS0tKSBcCisJCWZvcl9lYWNoX2lmKHBs YW5lKQorCiAjZGVmaW5lIGZvcl9lYWNoX29sZG5ld19pbnRlbF9jcnRjX2luX3N0YXRlKF9fc3Rh dGUsIGNydGMsIG9sZF9jcnRjX3N0YXRlLCBuZXdfY3J0Y19zdGF0ZSwgX19pKSBcCiAJZm9yICgo X19pKSA9IDA7IFwKIAkgICAgIChfX2kpIDwgKF9fc3RhdGUpLT5iYXNlLmRldi0+bW9kZV9jb25m aWcubnVtX2NydGMgJiYgXApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxh eS9pbnRlbF9wc3IuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfcHNyLmMK aW5kZXggZDlhMzk1YzQ4NmQzLi5mMzE0ZjU1MGI4MDkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfcHNyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv ZGlzcGxheS9pbnRlbF9wc3IuYwpAQCAtMTI0OSw3NSArMTI0OSwyMzEgQEAgc3RhdGljIHZvaWQg cHNyMl9tYW5fdHJrX2N0bF9jYWxjKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRl LAogCWNydGNfc3RhdGUtPnBzcjJfbWFuX3RyYWNrX2N0bCA9IHZhbDsKIH0KIAotc3RhdGljIHZv aWQgY2xpcF9hcmVhX3VwZGF0ZShzdHJ1Y3QgZHJtX3JlY3QgKm92ZXJsYXBfZGFtYWdlX2FyZWEs Ci0JCQkgICAgIHN0cnVjdCBkcm1fcmVjdCAqZGFtYWdlX2FyZWEpCisvKiBjYWxjdWxhdGUgYW5k IHVwZGF0ZSBzZWxlY3RpdmUgdXBkYXRlIHJlY3Qgd2l0aCB1cGRhdGUgcmVjdCAqLworc3RhdGlj IHZvaWQKK3N1X3JlY3RfdXBkYXRlKHN0cnVjdCBkcm1fcmVjdCAqc3VfcmVjdCwgc3RydWN0IGRy bV9yZWN0ICp1cGRhdGVfcmVjdCkKIHsKLQlpZiAob3ZlcmxhcF9kYW1hZ2VfYXJlYS0+eTEgPT0g LTEpIHsKLQkJb3ZlcmxhcF9kYW1hZ2VfYXJlYS0+eTEgPSBkYW1hZ2VfYXJlYS0+eTE7Ci0JCW92 ZXJsYXBfZGFtYWdlX2FyZWEtPnkyID0gZGFtYWdlX2FyZWEtPnkyOworCWlmIChkcm1fcmVjdF9o ZWlnaHQodXBkYXRlX3JlY3QpIDw9IDApCiAJCXJldHVybjsKKworCWlmICghZHJtX3JlY3RfaGVp Z2h0KHN1X3JlY3QpKSB7CisJCS8qIHdoZW4gc2VsZWN0IHVwZGF0ZSByZWN0IGlzIGVtcHR5ICov CisJCXN1X3JlY3QtPnkxID0gdXBkYXRlX3JlY3QtPnkxOworCQlzdV9yZWN0LT55MiA9IHVwZGF0 ZV9yZWN0LT55MjsKKwl9IGVsc2UgeworCQlzdV9yZWN0LT55MSA9IG1pbihzdV9yZWN0LT55MSwg dXBkYXRlX3JlY3QtPnkxKTsKKwkJc3VfcmVjdC0+eTIgPSBtYXgoc3VfcmVjdC0+eTIsIHVwZGF0 ZV9yZWN0LT55Mik7CiAJfQorfQorCitzdGF0aWMgdm9pZAorcGxhbmVfZ2V0X2RhbWFnZV9yZWN0 KGNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnN0YXRlLAorCQkgICAgICBzdHJ1Y3QgZHJt X3JlY3QgKmRhbWFnZV9yZWN0KQoreworCXN0cnVjdCBkcm1fbW9kZV9yZWN0ICpkYW1hZ2VfY2xp cHM7CisJaW50IGk7CisJdTMyIG51bV9jbGlwcyA9IGRybV9wbGFuZV9nZXRfZGFtYWdlX2NsaXBz X2NvdW50KHN0YXRlKTsKKworCisJaWYgKCFudW1fY2xpcHMpCisJCXJldHVybjsKIAotCWlmIChk YW1hZ2VfYXJlYS0+eTEgPCBvdmVybGFwX2RhbWFnZV9hcmVhLT55MSkKLQkJb3ZlcmxhcF9kYW1h Z2VfYXJlYS0+eTEgPSBkYW1hZ2VfYXJlYS0+eTE7CisJZGFtYWdlX2NsaXBzID0gZHJtX3BsYW5l X2dldF9kYW1hZ2VfY2xpcHMoc3RhdGUpOwogCi0JaWYgKGRhbWFnZV9hcmVhLT55MiA+IG92ZXJs YXBfZGFtYWdlX2FyZWEtPnkyKQotCQlvdmVybGFwX2RhbWFnZV9hcmVhLT55MiA9IGRhbWFnZV9h cmVhLT55MjsKKwkvKiBpbml0aWFsaXplIHdpdGggZmlyc3QgZGFtYWdlX2NsaXAgKi8KKwlkYW1h Z2VfcmVjdC0+eDEgPSBkYW1hZ2VfY2xpcHNbMF0ueDE7CisJZGFtYWdlX3JlY3QtPnkxID0gZGFt YWdlX2NsaXBzWzBdLnkxOworCWRhbWFnZV9yZWN0LT54MiA9IGRhbWFnZV9jbGlwc1swXS54MjsK KwlkYW1hZ2VfcmVjdC0+eTIgPSBkYW1hZ2VfY2xpcHNbMF0ueTI7CisKKwlmb3IgKGkgPSAxOyBp IDwgbnVtX2NsaXBzOyBpKyspIHsKKwkJLyogU2VsZWN0aXZlIEZldGNoIGhhcyBsaW1pdGF0dGlv biB3aGljaCBvbmx5IGNhbiBoYXZlIG9uZSByZWN0ICovCisJCWRhbWFnZV9yZWN0LT54MSA9IG1p bihkYW1hZ2VfcmVjdC0+eDEsIGRhbWFnZV9jbGlwc1tpXS54MSk7CisJCWRhbWFnZV9yZWN0LT54 MiA9IG1heChkYW1hZ2VfcmVjdC0+eDIsIGRhbWFnZV9jbGlwc1tpXS54Mik7CisJCWRhbWFnZV9y ZWN0LT55MSA9IG1pbihkYW1hZ2VfcmVjdC0+eTEsIGRhbWFnZV9jbGlwc1tpXS55MSk7CisJCWRh bWFnZV9yZWN0LT55MiA9IG1heChkYW1hZ2VfcmVjdC0+eTIsIGRhbWFnZV9jbGlwc1tpXS55Mik7 CisJfQogfQogCi1pbnQgaW50ZWxfcHNyMl9zZWxfZmV0Y2hfdXBkYXRlKHN0cnVjdCBpbnRlbF9h dG9taWNfc3RhdGUgKnN0YXRlLAotCQkJCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQorLyoKKyAq IEdlbmVyYXRlIFNlbGVjdGl2ZSBVcGRhdGUgYXJlYSByZWN0CisgKiBUb2RvOiBJbiBvcmRlciB0 byBvcHRpbWl6ZSBjYWxjdWxhdGluZyBvZiBTVSBhcmVhLCBpdCBzaG91bGQgc3VidHJhY3QKKyAq IGFjY3VtdWxhdGVkIFNVIGFyZWEgZnJvbSB0aGUgdmlzaWJsZSBhcmVhLgorICovCitzdGF0aWMg dm9pZAorcHNyX2dlbmVyYXRlX3N1X3JlY3Qoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqc3Rh dGUsCisJCSAgICAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCisJCSAgICAg c3RydWN0IGRybV9yZWN0ICpzdV9yZWN0KQogewotCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj cnRjX3N0YXRlID0gaW50ZWxfYXRvbWljX2dldF9uZXdfY3J0Y19zdGF0ZShzdGF0ZSwgY3J0Yyk7 CiAJc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpuZXdfcGxhbmVfc3RhdGUsICpvbGRfcGxhbmVf c3RhdGU7Ci0Jc3RydWN0IGRybV9yZWN0IHBpcGVfY2xpcCA9IHsgLnkxID0gLTEgfTsKIAlzdHJ1 Y3QgaW50ZWxfcGxhbmUgKnBsYW5lOwotCWJvb2wgZnVsbF91cGRhdGUgPSBmYWxzZTsKLQlpbnQg aSwgcmV0OworCWludCBpOwogCi0JaWYgKCFjcnRjX3N0YXRlLT5lbmFibGVfcHNyMl9zZWxfZmV0 Y2gpCi0JCXJldHVybiAwOworCWZvcl9lYWNoX29sZG5ld19pbnRlbF9wbGFuZV9pbl9zdGF0ZV9y ZXZlcnNlKHN0YXRlLCBwbGFuZSwgb2xkX3BsYW5lX3N0YXRlLAorCQkJCQkJICAgICBuZXdfcGxh bmVfc3RhdGUsIGkpIHsKKwkJYm9vbCBvbGRfYWxwaGEsIG5ld19hbHBoYSwgYWxwaGFfY2hhbmdl OworCQlib29sIHZpc2libGUsIHZpc2liaWxpdHlfY2hhbmdlOworCQlib29sIGZsaXAsIG1vdmU7 CisJCXUzMiBudW1fY2xpcHM7CiAKLQlyZXQgPSBkcm1fYXRvbWljX2FkZF9hZmZlY3RlZF9wbGFu ZXMoJnN0YXRlLT5iYXNlLCAmY3J0Yy0+YmFzZSk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsK KwkJaWYgKG5ld19wbGFuZV9zdGF0ZS0+dWFwaS5jcnRjICE9IGNydGNfc3RhdGUtPnVhcGkuY3J0 YykKKwkJCWNvbnRpbnVlOwogCi0JZm9yX2VhY2hfb2xkbmV3X2ludGVsX3BsYW5lX2luX3N0YXRl KHN0YXRlLCBwbGFuZSwgb2xkX3BsYW5lX3N0YXRlLAotCQkJCQkgICAgIG5ld19wbGFuZV9zdGF0 ZSwgaSkgewotCQlzdHJ1Y3QgZHJtX3JlY3QgKnNlbF9mZXRjaF9hcmVhLCB0ZW1wOworCQlpZiAo cGxhbmUtPmlkID09IFBMQU5FX0NVUlNPUikKKwkJCWNvbnRpbnVlOwogCi0JCWlmIChuZXdfcGxh bmVfc3RhdGUtPnVhcGkuY3J0YyAhPSBjcnRjX3N0YXRlLT51YXBpLmNydGMpCisJCW5ld19hbHBo YSA9IG5ld19wbGFuZV9zdGF0ZS0+dWFwaS5hbHBoYSAhPSBEUk1fQkxFTkRfQUxQSEFfT1BBUVVF OworCQlvbGRfYWxwaGEgPSBvbGRfcGxhbmVfc3RhdGUtPnVhcGkuYWxwaGEgIT0gRFJNX0JMRU5E X0FMUEhBX09QQVFVRTsKKwkJYWxwaGFfY2hhbmdlID0gbmV3X2FscGhhICE9IG9sZF9hbHBoYTsK KwkJdmlzaWJsZSA9IG5ld19wbGFuZV9zdGF0ZS0+dWFwaS52aXNpYmxlOworCQl2aXNpYmlsaXR5 X2NoYW5nZSA9CisJCQlvbGRfcGxhbmVfc3RhdGUtPnVhcGkudmlzaWJsZSAhPSBuZXdfcGxhbmVf c3RhdGUtPnVhcGkudmlzaWJsZTsKKwkJZmxpcCA9IG5ld19wbGFuZV9zdGF0ZS0+dWFwaS5mYiAh PSBvbGRfcGxhbmVfc3RhdGUtPnVhcGkuZmI7CisJCW1vdmUgPSAhZHJtX3JlY3RfZXF1YWxzKCZu ZXdfcGxhbmVfc3RhdGUtPnVhcGkuZHN0LAorCQkJCQkmb2xkX3BsYW5lX3N0YXRlLT51YXBpLmRz dCk7CisKKwkJLyogMS4gcGxhbmUgaGFzIG1vdmVkICovCisJCWlmIChtb3ZlICYmICF2aXNpYmls aXR5X2NoYW5nZSAmJiB2aXNpYmxlKSB7CisJCQlzdV9yZWN0X3VwZGF0ZShzdV9yZWN0LCAmb2xk X3BsYW5lX3N0YXRlLT51YXBpLmRzdCk7CisJCQlzdV9yZWN0X3VwZGF0ZShzdV9yZWN0LCAmbmV3 X3BsYW5lX3N0YXRlLT51YXBpLmRzdCk7CiAJCQljb250aW51ZTsKKwkJfQogCi0JCS8qCi0JCSAq IFRPRE86IE5vdCBjbGVhciBob3cgdG8gaGFuZGxlIHBsYW5lcyB3aXRoIG5lZ2F0aXZlIHBvc2l0 aW9uLAotCQkgKiBhbHNvIHBsYW5lcyBhcmUgbm90IHVwZGF0ZWQgaWYgdGhleSBoYXZlIGEgbmVn YXRpdmUgWAotCQkgKiBwb3NpdGlvbiBzbyBmb3Igbm93IGRvaW5nIGEgZnVsbCB1cGRhdGUgaW4g dGhpcyBjYXNlcwotCQkgKi8KLQkJaWYgKG5ld19wbGFuZV9zdGF0ZS0+dWFwaS5kc3QueTEgPCAw IHx8Ci0JCSAgICBuZXdfcGxhbmVfc3RhdGUtPnVhcGkuZHN0LngxIDwgMCkgewotCQkJZnVsbF91 cGRhdGUgPSB0cnVlOwotCQkJYnJlYWs7CisJCS8qIDIuIHBsYW5lJ3MgYWxwaGEgdmFsdWUgaGFz IGNoYW5nZWQgKi8KKwkJaWYgKGFscGhhX2NoYW5nZSAmJiAhdmlzaWJpbGl0eV9jaGFuZ2UgJiYg dmlzaWJsZSkgeworCQkJc3VfcmVjdF91cGRhdGUoc3VfcmVjdCwgJm5ld19wbGFuZV9zdGF0ZS0+ dWFwaS5kc3QpOworCQkJY29udGludWU7CisJCX0KKworCQkvKiAzLiBwbGFuZSdzIHZpc2liaWxp dHkgaGFzIGNoYW5nZWQgKi8KKwkJaWYgKHZpc2liaWxpdHlfY2hhbmdlKSB7CisJCQlpZiAodmlz aWJsZSkKKwkJCQlzdV9yZWN0X3VwZGF0ZShzdV9yZWN0LCAmbmV3X3BsYW5lX3N0YXRlLT51YXBp LmRzdCk7CisJCQllbHNlCisJCQkJc3VfcmVjdF91cGRhdGUoc3VfcmVjdCwgJm9sZF9wbGFuZV9z dGF0ZS0+dWFwaS5kc3QpOworCQkJY29udGludWU7CisJCX0KKworCQludW1fY2xpcHMgPSBkcm1f cGxhbmVfZ2V0X2RhbWFnZV9jbGlwc19jb3VudCgmbmV3X3BsYW5lX3N0YXRlLT51YXBpKTsKKwkJ LyogNC4gcGxhbmUncyBkYW1hZ2UgY2xpcHMgZXhpc3QgKi8KKwkJaWYgKG51bV9jbGlwcyAmJiB2 aXNpYmxlKSB7CisJCQlzdHJ1Y3QgZHJtX3JlY3QgZGFtYWdlX3JlY3QsIHNyY19yZWN0OworCisJ CQlkcm1fcmVjdF9pbml0KCZkYW1hZ2VfcmVjdCwgMCwgMCwgMCwgMCk7CisJCQlwbGFuZV9nZXRf ZGFtYWdlX3JlY3QoJm5ld19wbGFuZV9zdGF0ZS0+dWFwaSwgJmRhbWFnZV9yZWN0KTsKKwkJCS8q IGNvbnZlcnQgZml4ZWQgcG9pbnQgZmxvYXQgdG8gaW50ICovCisJCQlzcmNfcmVjdC54MSA9IG5l d19wbGFuZV9zdGF0ZS0+dWFwaS5zcmMueDEgPj4gMTY7CisJCQlzcmNfcmVjdC54MiA9IG5ld19w bGFuZV9zdGF0ZS0+dWFwaS5zcmMueDIgPj4gMTY7CisJCQlzcmNfcmVjdC55MSA9IG5ld19wbGFu ZV9zdGF0ZS0+dWFwaS5zcmMueTEgPj4gMTY7CisJCQlzcmNfcmVjdC55MiA9IG5ld19wbGFuZV9z dGF0ZS0+dWFwaS5zcmMueTIgPj4gMTY7CisKKwkJCS8qIGRhbWFnZSByZWN0IGlzIGJhc2VkIG9u IHNyYyBnZW9tZXRyeSAqLworCQkJaWYgKGRybV9yZWN0X2ludGVyc2VjdCgmZGFtYWdlX3JlY3Qs ICZzcmNfcmVjdCkpIHsKKwkJCQkvKgorCQkJCSAqIHN1IHJlY3QgaXMgYmFzZWQgb24gZHN0IGdl b21ldHJ5CisJCQkJICogY29udmVydCBkYW1hZ2VfcmVjdCdzIHNyYyBnZW9tZXRyeSB0byBkc3Qg Z2VvbWV0cnkKKwkJCQkgKi8KKwkJCQlkYW1hZ2VfcmVjdC54MSA9CisJCQkJCWRhbWFnZV9yZWN0 LngxIC0gc3JjX3JlY3QueDEgKworCQkJCQluZXdfcGxhbmVfc3RhdGUtPnVhcGkuZHN0LngxOwor CQkJCWRhbWFnZV9yZWN0LngyID0KKwkJCQkJZGFtYWdlX3JlY3QueDIgLSBzcmNfcmVjdC54MSAr CisJCQkJCW5ld19wbGFuZV9zdGF0ZS0+dWFwaS5kc3QueDE7CisJCQkJZGFtYWdlX3JlY3QueTEg PQorCQkJCQlkYW1hZ2VfcmVjdC55MSAtIHNyY19yZWN0LnkxICsKKwkJCQkJbmV3X3BsYW5lX3N0 YXRlLT51YXBpLmRzdC55MTsKKwkJCQlkYW1hZ2VfcmVjdC55MiA9CisJCQkJCWRhbWFnZV9yZWN0 LnkyIC0gc3JjX3JlY3QueTEgKworCQkJCQluZXdfcGxhbmVfc3RhdGUtPnVhcGkuZHN0LnkxOwor CisJCQkJc3VfcmVjdF91cGRhdGUoc3VfcmVjdCwgJmRhbWFnZV9yZWN0KTsKKwkJCX0KKwkJCWNv bnRpbnVlOworCQl9CisKKwkJLyogNS4gcGxhbmUncyBmYiBoYXMgZmxpcHBlZCwgYnV0IHRoZXJl IHdlcmUgbm8gZGFtYWdlZCBjbGlwcyAqLworCQlpZiAoZmxpcCAmJiB2aXNpYmxlKSB7CisJCQlz dV9yZWN0X3VwZGF0ZShzdV9yZWN0LCAmbmV3X3BsYW5lX3N0YXRlLT51YXBpLmRzdCk7CisJCQlj b250aW51ZTsKIAkJfQorCX0KK30KKworLyoKKyAqIEdlbmVyYXRlIFBsYW5lJ3MgU2VsZWN0aXZl IEZldGNoIHJlY3QgZnJvbSBpbnRlcnNlY3RlZCBhcmVhIGJldHdlZW4KKyAqIFNlbGVjdGl2ZSBV cGRhdGUgYXJlYSByZWN0IGFuZCBwbGFuZSdzIGRzdCByZWN0LgorICogVG9kbzogQ29uc2lkZXIg dG8gaGFuZGxlIGEgZnVsbHkgb2JzY3VyZWQgcGxhbmUuCisgKi8KK3N0YXRpYyB2b2lkCitwc3Jf Z2VuZXJhdGVfcGxhbmVfc2ZfcmVjdChzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0ZSwK KwkJCSAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAorCQkJICAgY29uc3Qg c3RydWN0IGRybV9yZWN0ICpzdV9yZWN0KQoreworCXN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAq bmV3X3BsYW5lX3N0YXRlLCAqb2xkX3BsYW5lX3N0YXRlOworCXN0cnVjdCBpbnRlbF9wbGFuZSAq cGxhbmU7CisJaW50IGk7CisKKwlmb3JfZWFjaF9vbGRuZXdfaW50ZWxfcGxhbmVfaW5fc3RhdGVf cmV2ZXJzZShzdGF0ZSwgcGxhbmUsIG9sZF9wbGFuZV9zdGF0ZSwKKwkJCQkJCSAgICAgbmV3X3Bs YW5lX3N0YXRlLCBpKSB7CisKKwkJc3RydWN0IGRybV9yZWN0IHNmX3JlY3QgPSBuZXdfcGxhbmVf c3RhdGUtPnVhcGkuZHN0OworCisJCWlmIChuZXdfcGxhbmVfc3RhdGUtPnVhcGkuY3J0YyAhPSBj cnRjX3N0YXRlLT51YXBpLmNydGMpCisJCQljb250aW51ZTsKKworCQlpZiAocGxhbmUtPmlkID09 IFBMQU5FX0NVUlNPUikKKwkJCWNvbnRpbnVlOwogCiAJCWlmICghbmV3X3BsYW5lX3N0YXRlLT51 YXBpLnZpc2libGUpCiAJCQljb250aW51ZTsKIAotCQkvKgotCQkgKiBGb3Igbm93IGRvaW5nIGEg c2VsZWN0aXZlIGZldGNoIGluIHRoZSB3aG9sZSBwbGFuZSBhcmVhLAotCQkgKiBvcHRpbWl6YXRp b25zIHdpbGwgY29tZSBpbiB0aGUgZnV0dXJlLgotCQkgKi8KLQkJc2VsX2ZldGNoX2FyZWEgPSAm bmV3X3BsYW5lX3N0YXRlLT5wc3IyX3NlbF9mZXRjaF9hcmVhOwotCQlzZWxfZmV0Y2hfYXJlYS0+ eTEgPSBuZXdfcGxhbmVfc3RhdGUtPnVhcGkuc3JjLnkxID4+IDE2OwotCQlzZWxfZmV0Y2hfYXJl YS0+eTIgPSBuZXdfcGxhbmVfc3RhdGUtPnVhcGkuc3JjLnkyID4+IDE2OwotCi0JCXRlbXAgPSAq c2VsX2ZldGNoX2FyZWE7Ci0JCXRlbXAueTEgKz0gbmV3X3BsYW5lX3N0YXRlLT51YXBpLmRzdC55 MTsKLQkJdGVtcC55MiArPSBuZXdfcGxhbmVfc3RhdGUtPnVhcGkuZHN0LnkyOwotCQljbGlwX2Fy ZWFfdXBkYXRlKCZwaXBlX2NsaXAsICZ0ZW1wKTsKKwkJaWYgKGRybV9yZWN0X2ludGVyc2VjdCgm c2ZfcmVjdCwgc3VfcmVjdCkpIHsKKwkJCS8qCisJCQkgKiBzdSByZWN0IGlzIGJhc2VkIG9uIGRz dCBnZW9tZXRyeSBhbmQgc2YgcmVjdCBzaG91bGQKKwkJCSAqIGZvbGxvdyBzcmMgZ2VvbWV0cnku IGNvbnZlcnQgc2YgcmVjdCdzIGRzdCBnZW9tZXRyeQorCQkJICogdG8gZHN0IGdlb21ldHJ5CisJ CQkgKi8KKwkJCXNmX3JlY3QueDEgPSBzZl9yZWN0LngxIC0gbmV3X3BsYW5lX3N0YXRlLT51YXBp LmRzdC54MSArCisJCQkJICAgICAobmV3X3BsYW5lX3N0YXRlLT51YXBpLnNyYy54MSA+PiAxNik7 CisJCQlzZl9yZWN0LngyID0gc2ZfcmVjdC54MiAtIG5ld19wbGFuZV9zdGF0ZS0+dWFwaS5kc3Qu eDEgKworCQkJCSAgICAgKG5ld19wbGFuZV9zdGF0ZS0+dWFwaS5zcmMueDEgPj4gMTYpOworCQkJ c2ZfcmVjdC55MSA9IHNmX3JlY3QueTEgLSBuZXdfcGxhbmVfc3RhdGUtPnVhcGkuZHN0LnkxICsK KwkJCQkgICAgIChuZXdfcGxhbmVfc3RhdGUtPnVhcGkuc3JjLnkxID4+IDE2KTsKKwkJCXNmX3Jl Y3QueTIgPSBzZl9yZWN0LnkyIC0gbmV3X3BsYW5lX3N0YXRlLT51YXBpLmRzdC55MSArCisJCQkJ ICAgICAobmV3X3BsYW5lX3N0YXRlLT51YXBpLnNyYy55MSA+PiAxNik7CisKKwkJCW5ld19wbGFu ZV9zdGF0ZS0+cHNyMl9zZWxfZmV0Y2hfYXJlYSA9IHNmX3JlY3Q7CisJCX0KIAl9Cit9CisKK2lu dCBpbnRlbF9wc3IyX3NlbF9mZXRjaF91cGRhdGUoc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAq c3RhdGUsCisJCQkJc3RydWN0IGludGVsX2NydGMgKmNydGMpCit7CisJc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKmNydGNfc3RhdGUgPQorCQlpbnRlbF9hdG9taWNfZ2V0X25ld19jcnRjX3N0YXRl KHN0YXRlLCBjcnRjKTsKKwlzdHJ1Y3QgZHJtX3JlY3Qgc3VfcmVjdDsKKwlib29sIGZ1bGxfdXBk YXRlID0gZmFsc2U7CisJaW50IHJldDsKKworCWlmICghY3J0Y19zdGF0ZS0+ZW5hYmxlX3BzcjJf c2VsX2ZldGNoKQorCQlyZXR1cm4gMDsKKworCXJldCA9IGRybV9hdG9taWNfYWRkX2FmZmVjdGVk X3BsYW5lcygmc3RhdGUtPmJhc2UsICZjcnRjLT5iYXNlKTsKKwlpZiAocmV0KQorCQlyZXR1cm4g cmV0OworCisJLyoKKwkgKiBHZW5lcmF0ZSBTZWxlY3RpdmUgVXBkYXRlIGFyZWEgcmVjdAorCSAq IFRvZG86IEluIG9yZGVyIHRvIG9wdGltaXplIGNhbGN1bGF0aW5nIG9mIFNVIGFyZWEsIGl0IHNo b3VsZCBzdWJ0cmFjdAorCSAqIGFjY3VtdWxhdGVkIFNVIGFyZWEgZnJvbSB0aGUgdmlzaWJsZSBh cmVhLgorCSAqLworCWRybV9yZWN0X2luaXQoJnN1X3JlY3QsIDAsIDAsCisJCSAgICAgIGNydGNf c3RhdGUtPnVhcGkuYWRqdXN0ZWRfbW9kZS5jcnRjX2hkaXNwbGF5LCAwKTsKKwlwc3JfZ2VuZXJh dGVfc3VfcmVjdChzdGF0ZSwgY3J0Y19zdGF0ZSwgJnN1X3JlY3QpOworCXBzcl9nZW5lcmF0ZV9w bGFuZV9zZl9yZWN0KHN0YXRlLCBjcnRjX3N0YXRlLCAmc3VfcmVjdCk7CisJcHNyMl9tYW5fdHJr X2N0bF9jYWxjKGNydGNfc3RhdGUsICZzdV9yZWN0LCBmdWxsX3VwZGF0ZSk7CiAKLQlwc3IyX21h bl90cmtfY3RsX2NhbGMoY3J0Y19zdGF0ZSwgJnBpcGVfY2xpcCwgZnVsbF91cGRhdGUpOwogCXJl dHVybiAwOwogfQogCi0tIAoyLjI1LjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2ludGVsLWdmeAo=