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=-16.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,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 88056C433E3 for ; Thu, 25 Mar 2021 21:48:41 +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 4F881619EE for ; Thu, 25 Mar 2021 21:48:41 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 4F881619EE 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 E5D7C6EE69; Thu, 25 Mar 2021 21:48:39 +0000 (UTC) Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by gabe.freedesktop.org (Postfix) with ESMTPS id CED606EE5E for ; Thu, 25 Mar 2021 21:48:36 +0000 (UTC) IronPort-SDR: YteCfgOYdJEC5OfqxVay3Svv0Jf6AyRuGaaiFQacxzVD2MYYQnjF0S9xEBr102m+8TvmGgHzEZ DrUf3lTzbvTQ== X-IronPort-AV: E=McAfee;i="6000,8403,9934"; a="171005097" X-IronPort-AV: E=Sophos;i="5.81,278,1610438400"; d="scan'208";a="171005097" Received: from orsmga003.jf.intel.com ([10.7.209.27]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 Mar 2021 14:48:36 -0700 IronPort-SDR: mN/bPruZwfHRsBIypNi89oIpIFsCfEsHFxgcWD/AOTLOm0KpyG++NTbxHgcjTS1C/miuXiPCft tKUPKfjaeJsA== X-IronPort-AV: E=Sophos;i="5.81,278,1610438400"; d="scan'208";a="375235720" Received: from ideak-desk.fi.intel.com ([10.237.68.141]) by orsmga003-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 Mar 2021 14:48:35 -0700 From: Imre Deak To: intel-gfx@lists.freedesktop.org Date: Thu, 25 Mar 2021 23:48:02 +0200 Message-Id: <20210325214808.2071517-20-imre.deak@intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210325214808.2071517-1-imre.deak@intel.com> References: <20210325214808.2071517-1-imre.deak@intel.com> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH v2 19/25] drm/i915/intel_fb: Factor out calc_plane_remap_info() 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" RmFjdG9yIG91dCB0byBhIG5ldyBmdW5jdGlvbiB0aGUgbG9naWMgdG8gY2FsY3VsYXRlIHRoZSBG QiByZW1hcHBpbmcKcGFyYW1ldGVycyBib3RoIGR1cmluZyBjcmVhdGluZyB0aGUgRkIgYW5kIHdo ZW4gZmxpcHBpbmcgdG8gaXQuCgpBZGQgYSBuZXcgaW50ZWxfZmJfcGxhbmVfcmVtYXBfaW5mbyBz dHJ1Y3QgdGhhdCBjYW4gYmUgdXNlZCBpbiBhCmZvbGxvdy11cCBwYXRjaCB0byBhZGQgYSBuZXcg cmVtYXBwZWQgdmlldyB3aGVuIGNyZWF0aW5nIGFuIEZCLiBBbHNvCm1vdmUgaW50ZWxfZnJhbWVi dWZmZXI6OnJvdF9pbmZvIGludG8gdGhpcyBuZXcgc3RydWN0LCB0byBiZXR0ZXIgZ3JvdXAKYWxs IHRoZSByZW1hcHBpbmcgcmVsYXRlZCBpbmZvLgoKdjI6Ci0gS2VlcCBzdHJpZGUgbmV4dCB0byBv ZmZzZXQgY2FsY3VsYXRpb24uIChWaWxsZSkKLSBFbmNsb3NlIGNoZWNrX2FycmF5X2JvdW5kcyBt YWNybyBhcmd1bWVudHMgaW4gcGFyZW50aGVzZXMuCgpTaWduZWQtb2ZmLWJ5OiBJbXJlIERlYWsg PGltcmUuZGVha0BpbnRlbC5jb20+ClJldmlld2VkLWJ5OiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxl LnN5cmphbGFAbGludXguaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3Bs YXkvaW50ZWxfZmIuYyB8IDIwMyArKysrKysrKystLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFu Z2VkLCA3NyBpbnNlcnRpb25zKCspLCAxMjYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9mYi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZGlzcGxheS9pbnRlbF9mYi5jCmluZGV4IDE2ZGNmYjUzOGI0NDguLmI1NmM0MzJlMDQxNWYg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfZmIuYworKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2ZiLmMKQEAgLTksNiArOSw4IEBA CiAjaW5jbHVkZSAiaW50ZWxfZGlzcGxheV90eXBlcy5oIgogI2luY2x1ZGUgImludGVsX2ZiLmgi CiAKKyNkZWZpbmUgY2hlY2tfYXJyYXlfYm91bmRzKGk5MTUsIGEsIGkpIGRybV9XQVJOX09OKCYo aTkxNSktPmRybSwgKGkpID49IEFSUkFZX1NJWkUoYSkpCisKIGJvb2wgaXNfY2NzX3BsYW5lKGNv bnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLCBpbnQgcGxhbmUpCiB7CiAJaWYgKCFpc19j Y3NfbW9kaWZpZXIoZmItPm1vZGlmaWVyKSkKQEAgLTU3Miw2NiArNTc0LDYgQEAgc3RhdGljIHUz MiBjYWxjX3BsYW5lX2FsaWduZWRfb2Zmc2V0KGNvbnN0IHN0cnVjdCBpbnRlbF9mcmFtZWJ1ZmZl ciAqZmIsIGludCBjb2wKIAlyZXR1cm4gb2Zmc2V0IC8gdGlsZV9zaXplOwogfQogCi0vKgotICog U2V0dXAgdGhlIHJvdGF0ZWQgdmlldyBmb3IgYW4gRkIgcGxhbmUgYW5kIHJldHVybiB0aGUgc2l6 ZSB0aGUgR1RUIG1hcHBpbmcKLSAqIHJlcXVpcmVzIGZvciB0aGlzIHZpZXcuCi0gKi8KLXN0YXRp YyB1MzIgc2V0dXBfZmJfcm90YXRpb24oaW50IHBsYW5lLCBjb25zdCBzdHJ1Y3QgaW50ZWxfcmVt YXBwZWRfcGxhbmVfaW5mbyAqcGxhbmVfaW5mbywKLQkJCSAgICAgdTMyIGd0dF9vZmZzZXRfcm90 YXRlZCwgaW50IHgsIGludCB5LAotCQkJICAgICB1bnNpZ25lZCBpbnQgd2lkdGgsIHVuc2lnbmVk IGludCBoZWlnaHQsCi0JCQkgICAgIHVuc2lnbmVkIGludCB0aWxlX3NpemUsCi0JCQkgICAgIHVu c2lnbmVkIGludCB0aWxlX3dpZHRoLCB1bnNpZ25lZCBpbnQgdGlsZV9oZWlnaHQsCi0JCQkgICAg IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiKQotewotCXN0cnVjdCBpbnRlbF9mcmFtZWJ1ZmZl ciAqaW50ZWxfZmIgPSB0b19pbnRlbF9mcmFtZWJ1ZmZlcihmYik7Ci0Jc3RydWN0IGludGVsX3Jv dGF0aW9uX2luZm8gKnJvdF9pbmZvID0gJmludGVsX2ZiLT5yb3RhdGVkX3ZpZXcuZ3R0LnJvdGF0 ZWQ7Ci0JdW5zaWduZWQgaW50IHBpdGNoX3RpbGVzOwotCXN0cnVjdCBkcm1fcmVjdCByOwotCi0J LyogWSBvciBZZiBtb2RpZmllcnMgcmVxdWlyZWQgZm9yIDkwLzI3MCByb3RhdGlvbiAqLwotCWlm IChmYi0+bW9kaWZpZXIgIT0gSTkxNV9GT1JNQVRfTU9EX1lfVElMRUQgJiYKLQkgICAgZmItPm1v ZGlmaWVyICE9IEk5MTVfRk9STUFUX01PRF9ZZl9USUxFRCkKLQkJcmV0dXJuIDA7Ci0KLQlpZiAo ZHJtX1dBUk5fT04oZmItPmRldiwgcGxhbmUgPj0gQVJSQVlfU0laRShyb3RfaW5mby0+cGxhbmUp KSkKLQkJcmV0dXJuIDA7Ci0KLQlyb3RfaW5mby0+cGxhbmVbcGxhbmVdID0gKnBsYW5lX2luZm87 Ci0KLQlpbnRlbF9mYi0+cm90YXRlZF92aWV3LmNvbG9yX3BsYW5lW3BsYW5lXS5waXRjaCA9IHBs YW5lX2luZm8tPmhlaWdodCAqIHRpbGVfaGVpZ2h0OwotCi0JLyogcm90YXRlIHRoZSB4L3kgb2Zm c2V0cyB0byBtYXRjaCB0aGUgR1RUIHZpZXcgKi8KLQlkcm1fcmVjdF9pbml0KCZyLCB4LCB5LCB3 aWR0aCwgaGVpZ2h0KTsKLQlkcm1fcmVjdF9yb3RhdGUoJnIsCi0JCQlwbGFuZV9pbmZvLT53aWR0 aCAqIHRpbGVfd2lkdGgsCi0JCQlwbGFuZV9pbmZvLT5oZWlnaHQgKiB0aWxlX2hlaWdodCwKLQkJ CURSTV9NT0RFX1JPVEFURV8yNzApOwotCXggPSByLngxOwotCXkgPSByLnkxOwotCi0JLyogcm90 YXRlIHRoZSB0aWxlIGRpbWVuc2lvbnMgdG8gbWF0Y2ggdGhlIEdUVCB2aWV3ICovCi0JcGl0Y2hf dGlsZXMgPSBpbnRlbF9mYi0+cm90YXRlZF92aWV3LmNvbG9yX3BsYW5lW3BsYW5lXS5waXRjaCAv IHRpbGVfaGVpZ2h0OwotCXN3YXAodGlsZV93aWR0aCwgdGlsZV9oZWlnaHQpOwotCi0JLyoKLQkg KiBXZSBvbmx5IGtlZXAgdGhlIHgveSBvZmZzZXRzLCBzbyBwdXNoIGFsbCBvZiB0aGUKLQkgKiBn dHQgb2Zmc2V0IGludG8gdGhlIHgveSBvZmZzZXRzLgotCSAqLwotCWludGVsX2FkanVzdF90aWxl X29mZnNldCgmeCwgJnksCi0JCQkJIHRpbGVfd2lkdGgsIHRpbGVfaGVpZ2h0LAotCQkJCSB0aWxl X3NpemUsIHBpdGNoX3RpbGVzLAotCQkJCSBndHRfb2Zmc2V0X3JvdGF0ZWQgKiB0aWxlX3NpemUs IDApOwotCi0JLyoKLQkgKiBGaXJzdCBwaXhlbCBvZiB0aGUgZnJhbWVidWZmZXIgZnJvbQotCSAq IHRoZSBzdGFydCBvZiB0aGUgcm90YXRlZCBndHQgbWFwcGluZy4KLQkgKi8KLQlpbnRlbF9mYi0+ cm90YXRlZF92aWV3LmNvbG9yX3BsYW5lW3BsYW5lXS54ID0geDsKLQlpbnRlbF9mYi0+cm90YXRl ZF92aWV3LmNvbG9yX3BsYW5lW3BsYW5lXS55ID0geTsKLQotCXJldHVybiBwbGFuZV9pbmZvLT53 aWR0aCAqIHBsYW5lX2luZm8tPmhlaWdodDsKLX0KLQogc3RydWN0IGZiX3BsYW5lX3ZpZXdfZGlt cyB7CiAJdW5zaWduZWQgaW50IHdpZHRoLCBoZWlnaHQ7CiAJdW5zaWduZWQgaW50IHRpbGVfd2lk dGgsIHRpbGVfaGVpZ2h0OwpAQCAtNjcxLDYgKzYxMyw2OSBAQCBwbGFuZV92aWV3X2hlaWdodF90 aWxlcyhjb25zdCBzdHJ1Y3QgaW50ZWxfZnJhbWVidWZmZXIgKmZiLCBpbnQgY29sb3JfcGxhbmUs CiAJcmV0dXJuIERJVl9ST1VORF9VUCh5ICsgZGltcy0+aGVpZ2h0LCBkaW1zLT50aWxlX2hlaWdo dCk7CiB9CiAKK3N0YXRpYyB1MzIgY2FsY19wbGFuZV9yZW1hcF9pbmZvKGNvbnN0IHN0cnVjdCBp bnRlbF9mcmFtZWJ1ZmZlciAqZmIsIGludCBjb2xvcl9wbGFuZSwKKwkJCQkgY29uc3Qgc3RydWN0 IGZiX3BsYW5lX3ZpZXdfZGltcyAqZGltcywKKwkJCQkgdTMyIG9ial9vZmZzZXQsIHUzMiBndHRf b2Zmc2V0LCBpbnQgeCwgaW50IHksCisJCQkJIHN0cnVjdCBpbnRlbF9mYl92aWV3ICp2aWV3KQor eworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gdG9faTkxNShmYi0+YmFzZS5kZXYp OworCXN0cnVjdCBpbnRlbF9yZW1hcHBlZF9wbGFuZV9pbmZvICpyZW1hcF9pbmZvID0gJnZpZXct Pmd0dC5yZW1hcHBlZC5wbGFuZVtjb2xvcl9wbGFuZV07CisJc3RydWN0IGk5MTVfY29sb3JfcGxh bmVfdmlldyAqY29sb3JfcGxhbmVfaW5mbyA9ICZ2aWV3LT5jb2xvcl9wbGFuZVtjb2xvcl9wbGFu ZV07CisJdW5zaWduZWQgaW50IHRpbGVfd2lkdGggPSBkaW1zLT50aWxlX3dpZHRoOworCXVuc2ln bmVkIGludCB0aWxlX2hlaWdodCA9IGRpbXMtPnRpbGVfaGVpZ2h0OworCXVuc2lnbmVkIGludCB0 aWxlX3NpemUgPSBpbnRlbF90aWxlX3NpemUoaTkxNSk7CisJdW5zaWduZWQgaW50IHBpdGNoX3Rp bGVzOworCXN0cnVjdCBkcm1fcmVjdCByOworCisJcmVtYXBfaW5mby0+b2Zmc2V0ID0gb2JqX29m ZnNldDsKKwlyZW1hcF9pbmZvLT5zdHJpZGUgPSBwbGFuZV92aWV3X3N0cmlkZV90aWxlcyhmYiwg Y29sb3JfcGxhbmUsIGRpbXMpOworCXJlbWFwX2luZm8tPndpZHRoID0gcGxhbmVfdmlld193aWR0 aF90aWxlcyhmYiwgY29sb3JfcGxhbmUsIGRpbXMsIHgpOworCXJlbWFwX2luZm8tPmhlaWdodCA9 IHBsYW5lX3ZpZXdfaGVpZ2h0X3RpbGVzKGZiLCBjb2xvcl9wbGFuZSwgZGltcywgeSk7CisKKwlp ZiAodmlldy0+Z3R0LnR5cGUgPT0gSTkxNV9HR1RUX1ZJRVdfUk9UQVRFRCkgeworCQljaGVja19h cnJheV9ib3VuZHMoaTkxNSwgdmlldy0+Z3R0LnJvdGF0ZWQucGxhbmUsIGNvbG9yX3BsYW5lKTsK KworCQkvKiByb3RhdGUgdGhlIHgveSBvZmZzZXRzIHRvIG1hdGNoIHRoZSBHVFQgdmlldyAqLwor CQlkcm1fcmVjdF9pbml0KCZyLCB4LCB5LCBkaW1zLT53aWR0aCwgZGltcy0+aGVpZ2h0KTsKKwkJ ZHJtX3JlY3Rfcm90YXRlKCZyLAorCQkJCXJlbWFwX2luZm8tPndpZHRoICogdGlsZV93aWR0aCwK KwkJCQlyZW1hcF9pbmZvLT5oZWlnaHQgKiB0aWxlX2hlaWdodCwKKwkJCQlEUk1fTU9ERV9ST1RB VEVfMjcwKTsKKworCQljb2xvcl9wbGFuZV9pbmZvLT54ID0gci54MTsKKwkJY29sb3JfcGxhbmVf aW5mby0+eSA9IHIueTE7CisKKwkJcGl0Y2hfdGlsZXMgPSByZW1hcF9pbmZvLT5oZWlnaHQ7CisJ CWNvbG9yX3BsYW5lX2luZm8tPnBpdGNoID0gcGl0Y2hfdGlsZXMgKiB0aWxlX2hlaWdodDsKKwor CQkvKiByb3RhdGUgdGhlIHRpbGUgZGltZW5zaW9ucyB0byBtYXRjaCB0aGUgR1RUIHZpZXcgKi8K KwkJc3dhcCh0aWxlX3dpZHRoLCB0aWxlX2hlaWdodCk7CisJfSBlbHNlIHsKKwkJZHJtX1dBUk5f T04oJmk5MTUtPmRybSwgdmlldy0+Z3R0LnR5cGUgIT0gSTkxNV9HR1RUX1ZJRVdfUkVNQVBQRUQp OworCisJCWNoZWNrX2FycmF5X2JvdW5kcyhpOTE1LCB2aWV3LT5ndHQucmVtYXBwZWQucGxhbmUs IGNvbG9yX3BsYW5lKTsKKworCQljb2xvcl9wbGFuZV9pbmZvLT54ID0geDsKKwkJY29sb3JfcGxh bmVfaW5mby0+eSA9IHk7CisKKwkJcGl0Y2hfdGlsZXMgPSByZW1hcF9pbmZvLT53aWR0aDsKKwkJ Y29sb3JfcGxhbmVfaW5mby0+cGl0Y2ggPSBwaXRjaF90aWxlcyAqIHRpbGVfd2lkdGggKgorCQkJ CQkgIGZiLT5iYXNlLmZvcm1hdC0+Y3BwW2NvbG9yX3BsYW5lXTsKKwl9CisKKwkvKgorCSAqIFdl IG9ubHkga2VlcCB0aGUgeC95IG9mZnNldHMsIHNvIHB1c2ggYWxsIG9mIHRoZSBndHQgb2Zmc2V0 IGludG8KKwkgKiB0aGUgeC95IG9mZnNldHMuICB4LHkgd2lsbCBob2xkIHRoZSBmaXJzdCBwaXhl bCBvZiB0aGUgZnJhbWVidWZmZXIKKwkgKiBwbGFuZSBmcm9tIHRoZSBzdGFydCBvZiB0aGUgcmVt YXBwZWQvcm90YXRlZCBndHQgbWFwcGluZy4KKwkgKi8KKwlpbnRlbF9hZGp1c3RfdGlsZV9vZmZz ZXQoJmNvbG9yX3BsYW5lX2luZm8tPngsICZjb2xvcl9wbGFuZV9pbmZvLT55LAorCQkJCSB0aWxl X3dpZHRoLCB0aWxlX2hlaWdodCwKKwkJCQkgdGlsZV9zaXplLCBwaXRjaF90aWxlcywKKwkJCQkg Z3R0X29mZnNldCAqIHRpbGVfc2l6ZSwgMCk7CisKKwlyZXR1cm4gcmVtYXBfaW5mby0+d2lkdGgg KiByZW1hcF9pbmZvLT5oZWlnaHQ7Cit9CisKIC8qIFJldHVybiBudW1iZXIgb2YgdGlsZXMgQGNv bG9yX3BsYW5lIG5lZWRzLiAqLwogc3RhdGljIHVuc2lnbmVkIGludAogY2FsY19wbGFuZV9ub3Jt YWxfc2l6ZShjb25zdCBzdHJ1Y3QgaW50ZWxfZnJhbWVidWZmZXIgKmZiLCBpbnQgY29sb3JfcGxh bmUsCkBAIC03NTcsMjIgKzc2MiwxMiBAQCBpbnQgaW50ZWxfZmlsbF9mYl9pbmZvKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICppOTE1LCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYgogCiAJCW9m ZnNldCA9IGNhbGNfcGxhbmVfYWxpZ25lZF9vZmZzZXQoaW50ZWxfZmIsIGksICZ4LCAmeSk7CiAK LQkJaWYgKCFpc19zdXJmYWNlX2xpbmVhcihmYiwgaSkpIHsKLQkJCXN0cnVjdCBpbnRlbF9yZW1h cHBlZF9wbGFuZV9pbmZvIHBsYW5lX2luZm87Ci0KLQkJCXBsYW5lX2luZm8ub2Zmc2V0ID0gb2Zm c2V0OwotCQkJcGxhbmVfaW5mby5zdHJpZGUgPSBwbGFuZV92aWV3X3N0cmlkZV90aWxlcyhpbnRl bF9mYiwgaSwgJnZpZXdfZGltcyk7Ci0JCQlwbGFuZV9pbmZvLndpZHRoID0gcGxhbmVfdmlld193 aWR0aF90aWxlcyhpbnRlbF9mYiwgaSwgJnZpZXdfZGltcywgeCk7Ci0JCQlwbGFuZV9pbmZvLmhl aWdodCA9IHBsYW5lX3ZpZXdfaGVpZ2h0X3RpbGVzKGludGVsX2ZiLCBpLCAmdmlld19kaW1zLCB5 KTsKLQotCQkJZ3R0X29mZnNldF9yb3RhdGVkICs9Ci0JCQkJc2V0dXBfZmJfcm90YXRpb24oaSwg JnBsYW5lX2luZm8sCi0JCQkJCQkgIGd0dF9vZmZzZXRfcm90YXRlZCwKLQkJCQkJCSAgeCwgeSwg d2lkdGgsIGhlaWdodCwKLQkJCQkJCSAgdGlsZV9zaXplLAotCQkJCQkJICB2aWV3X2RpbXMudGls ZV93aWR0aCwgdmlld19kaW1zLnRpbGVfaGVpZ2h0LAotCQkJCQkJICBmYik7Ci0JCX0KKwkJLyog WSBvciBZZiBtb2RpZmllcnMgcmVxdWlyZWQgZm9yIDkwLzI3MCByb3RhdGlvbiAqLworCQlpZiAo ZmItPm1vZGlmaWVyID09IEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEIHx8CisJCSAgICBmYi0+bW9k aWZpZXIgPT0gSTkxNV9GT1JNQVRfTU9EX1lmX1RJTEVEKQorCQkJZ3R0X29mZnNldF9yb3RhdGVk ICs9IGNhbGNfcGxhbmVfcmVtYXBfaW5mbyhpbnRlbF9mYiwgaSwgJnZpZXdfZGltcywKKwkJCQkJ CQkJICAgIG9mZnNldCwgZ3R0X29mZnNldF9yb3RhdGVkLCB4LCB5LAorCQkJCQkJCQkgICAgJmlu dGVsX2ZiLT5yb3RhdGVkX3ZpZXcpOwogCiAJCXNpemUgPSBjYWxjX3BsYW5lX25vcm1hbF9zaXpl KGludGVsX2ZiLCBpLCAmdmlld19kaW1zLCB4LCB5KTsKIAkJLyogaG93IG1hbnkgdGlsZXMgaW4g dG90YWwgbmVlZGVkIGluIHRoZSBibyAqLwpAQCAtNzk1LDEwICs3OTAsOCBAQCBzdGF0aWMgdm9p ZCBpbnRlbF9wbGFuZV9yZW1hcF9ndHQoc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9z dGF0ZSkKIAkJdG9faTkxNShwbGFuZV9zdGF0ZS0+dWFwaS5wbGFuZS0+ZGV2KTsKIAlzdHJ1Y3Qg ZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lX3N0YXRlLT5ody5mYjsKIAlzdHJ1Y3QgaW50ZWxf ZnJhbWVidWZmZXIgKmludGVsX2ZiID0gdG9faW50ZWxfZnJhbWVidWZmZXIoZmIpOwotCXN0cnVj dCBpbnRlbF9yb3RhdGlvbl9pbmZvICppbmZvID0gJnBsYW5lX3N0YXRlLT52aWV3Lmd0dC5yb3Rh dGVkOwogCXVuc2lnbmVkIGludCByb3RhdGlvbiA9IHBsYW5lX3N0YXRlLT5ody5yb3RhdGlvbjsK IAlpbnQgaSwgbnVtX3BsYW5lcyA9IGZiLT5mb3JtYXQtPm51bV9wbGFuZXM7Ci0JdW5zaWduZWQg aW50IHRpbGVfc2l6ZSA9IGludGVsX3RpbGVfc2l6ZShpOTE1KTsKIAl1bnNpZ25lZCBpbnQgc3Jj X3gsIHNyY195OwogCXVuc2lnbmVkIGludCBzcmNfdywgc3JjX2g7CiAJdTMyIGd0dF9vZmZzZXQg PSAwOwpAQCAtODI3LDIwICs4MjAsMTggQEAgc3RhdGljIHZvaWQgaW50ZWxfcGxhbmVfcmVtYXBf Z3R0KHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCiAJZm9yIChpID0gMDsg aSA8IG51bV9wbGFuZXM7IGkrKykgewogCQl1bnNpZ25lZCBpbnQgaHN1YiA9IGkgPyBmYi0+Zm9y bWF0LT5oc3ViIDogMTsKIAkJdW5zaWduZWQgaW50IHZzdWIgPSBpID8gZmItPmZvcm1hdC0+dnN1 YiA6IDE7Ci0JCXVuc2lnbmVkIGludCBjcHAgPSBmYi0+Zm9ybWF0LT5jcHBbaV07Ci0JCXVuc2ln bmVkIGludCB0aWxlX3dpZHRoLCB0aWxlX2hlaWdodDsKKwkJc3RydWN0IGZiX3BsYW5lX3ZpZXdf ZGltcyB2aWV3X2RpbXM7CiAJCXVuc2lnbmVkIGludCB3aWR0aCwgaGVpZ2h0OwotCQl1bnNpZ25l ZCBpbnQgcGl0Y2hfdGlsZXM7CiAJCXVuc2lnbmVkIGludCB4LCB5OwogCQl1MzIgb2Zmc2V0Owog Ci0JCWludGVsX3RpbGVfZGltcyhmYiwgaSwgJnRpbGVfd2lkdGgsICZ0aWxlX2hlaWdodCk7Ci0K IAkJeCA9IHNyY194IC8gaHN1YjsKIAkJeSA9IHNyY195IC8gdnN1YjsKIAkJd2lkdGggPSBzcmNf dyAvIGhzdWI7CiAJCWhlaWdodCA9IHNyY19oIC8gdnN1YjsKIAorCQlpbml0X3BsYW5lX3ZpZXdf ZGltcyhpbnRlbF9mYiwgaSwgd2lkdGgsIGhlaWdodCwgJnZpZXdfZGltcyk7CisKIAkJLyoKIAkJ ICogRmlyc3QgcGl4ZWwgb2YgdGhlIHNyYyB2aWV3cG9ydCBmcm9tIHRoZQogCQkgKiBzdGFydCBv ZiB0aGUgbm9ybWFsIGd0dCBtYXBwaW5nLgpAQCAtODUwLDQ5ICs4NDEsOSBAQCBzdGF0aWMgdm9p ZCBpbnRlbF9wbGFuZV9yZW1hcF9ndHQoc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9z dGF0ZSkKIAogCQlvZmZzZXQgPSBjYWxjX3BsYW5lX2FsaWduZWRfb2Zmc2V0KGludGVsX2ZiLCBp LCAmeCwgJnkpOwogCi0JCWRybV9XQVJOX09OKCZpOTE1LT5kcm0sIGkgPj0gQVJSQVlfU0laRShp bmZvLT5wbGFuZSkpOwotCQlpbmZvLT5wbGFuZVtpXS5vZmZzZXQgPSBvZmZzZXQ7Ci0JCWluZm8t PnBsYW5lW2ldLnN0cmlkZSA9IERJVl9ST1VORF9VUChmYi0+cGl0Y2hlc1tpXSwKLQkJCQkJCSAg ICAgdGlsZV93aWR0aCAqIGNwcCk7Ci0JCWluZm8tPnBsYW5lW2ldLndpZHRoID0gRElWX1JPVU5E X1VQKHggKyB3aWR0aCwgdGlsZV93aWR0aCk7Ci0JCWluZm8tPnBsYW5lW2ldLmhlaWdodCA9IERJ Vl9ST1VORF9VUCh5ICsgaGVpZ2h0LCB0aWxlX2hlaWdodCk7Ci0KLQkJaWYgKGRybV9yb3RhdGlv bl85MF9vcl8yNzAocm90YXRpb24pKSB7Ci0JCQlzdHJ1Y3QgZHJtX3JlY3QgcjsKLQotCQkJLyog cm90YXRlIHRoZSB4L3kgb2Zmc2V0cyB0byBtYXRjaCB0aGUgR1RUIHZpZXcgKi8KLQkJCWRybV9y ZWN0X2luaXQoJnIsIHgsIHksIHdpZHRoLCBoZWlnaHQpOwotCQkJZHJtX3JlY3Rfcm90YXRlKCZy LAotCQkJCQlpbmZvLT5wbGFuZVtpXS53aWR0aCAqIHRpbGVfd2lkdGgsCi0JCQkJCWluZm8tPnBs YW5lW2ldLmhlaWdodCAqIHRpbGVfaGVpZ2h0LAotCQkJCQlEUk1fTU9ERV9ST1RBVEVfMjcwKTsK LQkJCXggPSByLngxOwotCQkJeSA9IHIueTE7Ci0KLQkJCXBpdGNoX3RpbGVzID0gaW5mby0+cGxh bmVbaV0uaGVpZ2h0OwotCQkJcGxhbmVfc3RhdGUtPnZpZXcuY29sb3JfcGxhbmVbaV0ucGl0Y2gg PSBwaXRjaF90aWxlcyAqIHRpbGVfaGVpZ2h0OwotCi0JCQkvKiByb3RhdGUgdGhlIHRpbGUgZGlt ZW5zaW9ucyB0byBtYXRjaCB0aGUgR1RUIHZpZXcgKi8KLQkJCXN3YXAodGlsZV93aWR0aCwgdGls ZV9oZWlnaHQpOwotCQl9IGVsc2UgewotCQkJcGl0Y2hfdGlsZXMgPSBpbmZvLT5wbGFuZVtpXS53 aWR0aDsKLQkJCXBsYW5lX3N0YXRlLT52aWV3LmNvbG9yX3BsYW5lW2ldLnBpdGNoID0gcGl0Y2hf dGlsZXMgKiB0aWxlX3dpZHRoICogY3BwOwotCQl9Ci0KLQkJLyoKLQkJICogV2Ugb25seSBrZWVw IHRoZSB4L3kgb2Zmc2V0cywgc28gcHVzaCBhbGwgb2YgdGhlCi0JCSAqIGd0dCBvZmZzZXQgaW50 byB0aGUgeC95IG9mZnNldHMuCi0JCSAqLwotCQlpbnRlbF9hZGp1c3RfdGlsZV9vZmZzZXQoJngs ICZ5LAotCQkJCQkgdGlsZV93aWR0aCwgdGlsZV9oZWlnaHQsCi0JCQkJCSB0aWxlX3NpemUsIHBp dGNoX3RpbGVzLAotCQkJCQkgZ3R0X29mZnNldCAqIHRpbGVfc2l6ZSwgMCk7Ci0KLQkJZ3R0X29m ZnNldCArPSBpbmZvLT5wbGFuZVtpXS53aWR0aCAqIGluZm8tPnBsYW5lW2ldLmhlaWdodDsKLQot CQlwbGFuZV9zdGF0ZS0+dmlldy5jb2xvcl9wbGFuZVtpXS5vZmZzZXQgPSAwOwotCQlwbGFuZV9z dGF0ZS0+dmlldy5jb2xvcl9wbGFuZVtpXS54ID0geDsKLQkJcGxhbmVfc3RhdGUtPnZpZXcuY29s b3JfcGxhbmVbaV0ueSA9IHk7CisJCWd0dF9vZmZzZXQgKz0gY2FsY19wbGFuZV9yZW1hcF9pbmZv KGludGVsX2ZiLCBpLCAmdmlld19kaW1zLAorCQkJCQkJICAgIG9mZnNldCwgZ3R0X29mZnNldCwg eCwgeSwKKwkJCQkJCSAgICAmcGxhbmVfc3RhdGUtPnZpZXcpOwogCX0KIH0KIAotLSAKMi4yNS4x CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1n ZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK