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=-9.8 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,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 6B887C33CB1 for ; Wed, 15 Jan 2020 14:32:59 +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 4B0C42073A for ; Wed, 15 Jan 2020 14:32:59 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 4B0C42073A 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 ED2E96EABA; Wed, 15 Jan 2020 14:32:58 +0000 (UTC) Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3B7E66EAB9 for ; Wed, 15 Jan 2020 14:32:57 +0000 (UTC) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by orsmga103.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 15 Jan 2020 06:32:56 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.70,322,1574150400"; d="scan'208";a="425045366" Received: from slisovsk-lenovo-ideapad-720s-13ikb.fi.intel.com ([10.237.72.89]) by fmsmga006.fm.intel.com with ESMTP; 15 Jan 2020 06:32:55 -0800 From: Stanislav Lisovskiy To: intel-gfx@lists.freedesktop.org Date: Wed, 15 Jan 2020 16:30:33 +0200 Message-Id: <20200115143033.28284-6-stanislav.lisovskiy@intel.com> X-Mailer: git-send-email 2.24.1.485.gad05a3d8e5 In-Reply-To: <20200115143033.28284-1-stanislav.lisovskiy@intel.com> References: <20200115143033.28284-1-stanislav.lisovskiy@intel.com> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH v12 5/5] drm/i915: Correctly map DBUF slices to pipes 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" QWRkZWQgcHJvcGVyIERCdWYgc2xpY2UgbWFwcGluZyB0byBjb3JyZXNwb25kZW50CnBpcGVzLCBk ZXBlbmRpbmcgb24gcGlwZSBjb25maWd1cmF0aW9uIGFzIHN0YXRlZAppbiBCU3BlYy4KCnYyOgog ICAgLSBSZW1vdmUgdW5uZWVkZWQgYnJhY2VzCiAgICAtIFN0b3AgdXNpbmcgbWFjcm8gZm9yIERC dWYgYXNzaWdubWVudHMgYXMKICAgICAgaXQgc2VlbXMgdG8gcmVkdWNlIHJlYWRhYmlsaXR5LgoK djM6IFN0YXJ0IHVzaW5nIGVuYWJsZWQgc2xpY2VzIG1hc2sgaW4gZGV2X3ByaXYKCnY0OiBSZW5h bWVkICJlbmFibGVkX3NsaWNlcyIgdXNlZCBpbiBkZXZfcHJpdgogICAgdG8gImVuYWJsZWRfZGJ1 Zl9zbGljZXNfbWFzayIoTWF0dCBSb3BlcikKCnY1OiAtIFJlbW92ZWQgcmVkdW5kYW50IHBhcmFt ZXRlcnMgZnJvbQogICAgICBpbnRlbF9nZXRfZGRiX3NpemUgZnVuY3Rpb24uKE1hdHQgUm9wZXIp CiAgICAtIE1hZGUgaTkxNV9wb3NzaWJsZV9kYnVmX3NsaWNlcyBzdGF0aWMoTWF0dCBSb3BlcikK ICAgIC0gUmVuYW1lZCB0b3RhbF93aWR0aCBpbnRvIHRvdGFsX3dpZHRoX2luX3JhbmdlCiAgICAg IHNvIHRoYXQgaXQgbm93IHJlZmxlY3RzIHRoYXQgdGhpcyBpcyBub3QKICAgICAgYSB0b3RhbCBw aXBlIHdpZHRoIGJ1dCB0aGUgb25lIGluIGN1cnJlbnQKICAgICAgZGJ1ZiBzbGljZSBhbGxvd2Vk IHJhbmdlIGZvciBwaXBlLihNYXR0IFJvcGVyKQogICAgLSBSZW1vdmVkIDR0aCBwaXBlIGZvciBJ Q0wgaW4gREJ1ZiBhc3NpZ25tZW50CiAgICAgIHRhYmxlKE1hdHQgUm9wZXIpCiAgICAtIEZpeGVk IHdyb25nIERCdWYgc2xpY2UgaW4gREJ1ZiB0YWJsZSBmb3IgVEdMCiAgICAgIChNYXR0IFJvcGVy KQogICAgLSBBZGRlZCBjb21tZW50IHJlZ2FyZGluZyB3aHkgd2UgY3VycmVudGx5IG5vdAogICAg ICB1c2luZyBwaXBlIHJhdGlvIGZvciBEQnVmIGFzc2lnbm1lbnQgZm9yIElDTAoKdjY6IC0gQ2hh bmdlZCB1MzIgdG8gdW5zaWduZWQgaW50IGluCiAgICAgIGljbF9nZXRfZmlyc3RfZGJ1Zl9zbGlj ZV9vZmZzZXQgZnVuY3Rpb24gc2lnbmF0dXJlCiAgICAgIChWaWxsZSBTeXJqw6Rsw6QpCiAgICAt IENoYW5nZWQgYWxzbyB1MzIgdG8gdTggaW4gZGJ1ZiBzbGljZSBtYXNrIHN0cnVjdHVyZQogICAg ICAoVmlsbGUgU3lyasOkbMOkKQogICAgLSBTd2l0Y2hlZCBmcm9tIERCVUZfUzFfQklUIHRvIGVu dW0gKyBleHBsaWNpdAogICAgICBCSVQoREJVRl9TMSkgYWNjZXNzKFZpbGxlIFN5cmrDpGzDpCkK ICAgIC0gU3dpdGNoZWQgdG8gbmFtZWQgaW5pdGlhbGl6ZXJzIGluIERCdWYgYXNzaWdubWVudAog ICAgICBhcnJheXMoVmlsbGUgU3lyasOkbMOkKQogICAgLSBEQnVmIGFzc2lnbm1lbnQgYXJyYXlz IG5vdyB1c2UgYXV0b2dlbmVyYXRpb24gdG9vbAogICAgICBmcm9tCiAgICAgIGh0dHBzOi8vcGF0 Y2h3b3JrLmZyZWVkZXNrdG9wLm9yZy9zZXJpZXMvNzA0OTMvCiAgICAgIHRvIGF2b2lkIHR5cG9z LgogICAgLSBSZW5hbWVkIGk5MTVfZmluZF9waXBlX2NvbmYgdG8gKl9jb21wdXRlX2RidWZfc2xp Y2VzCiAgICAgIChWaWxsZSBTeXJqw6Rsw6QpCiAgICAtIENoYW5nZWQgcGxhdGZvcm1zIG9yZGVy aW5nIGluIHNrbF9jb21wdXRlX2RidWZfc2xpY2VzCiAgICAgIHRvIGJlIGZyb20gbmV3ZXN0IHRv IG9sZGVzdChWaWxsZSBTeXJqw6Rsw6QpCgp2NzogLSBOb3cgT1JpbmcgYXNzaWduZWQgREJ1ZiBz bGljZSBjb25maWcgYWx3YXlzIHdpdGggREJVRl9TMQogICAgICBiZWNhdXNlIHNsaWNlIDEgaGFz IHRvIGJlIGNvbnN0YW50bHkgcG93ZXJlZCBvbi4KICAgICAgKFZpbGxlIFN5cmrDpGzDpCkKClNp Z25lZC1vZmYtYnk6IFN0YW5pc2xhdiBMaXNvdnNraXkgPHN0YW5pc2xhdi5saXNvdnNraXlAaW50 ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgfCAzOTUgKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bt LmggfCAgIDIgKwogMiBmaWxlcyBjaGFuZ2VkLCAzNzkgaW5zZXJ0aW9ucygrKSwgMTggZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKaW5kZXggZTViODIyNjRjYTVmLi5lMTg2MjI2 MzAyMTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwpAQCAtMzg2MCwxMyArMzg2MCwyOSBAQCBi b29sIGludGVsX2Nhbl9lbmFibGVfc2FndihzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICpzdGF0 ZSkKIAlyZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIHUxNiBpbnRlbF9nZXRfZGRiX3NpemUoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAotCQkJICAgICAgY29uc3Qgc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCi0JCQkgICAgICBjb25zdCB1NjQgdG90YWxfZGF0 YV9yYXRlLAotCQkJICAgICAgY29uc3QgaW50IG51bV9hY3RpdmUpCisvKgorICogQ2FsY3VsYXRl IGluaXRpYWwgREJ1ZiBzbGljZSBvZmZzZXQsIGJhc2VkIG9uIHNsaWNlIHNpemUKKyAqIGFuZCBt YXNrKGkuZSBpZiBzbGljZSBzaXplIGlzIDEwMjQgYW5kIHNlY29uZCBzbGljZSBpcyBlbmFibGVk CisgKiBvZmZzZXQgd291bGQgYmUgMTAyNCkKKyAqLworc3RhdGljIHVuc2lnbmVkIGludAoraWNs X2dldF9maXJzdF9kYnVmX3NsaWNlX29mZnNldCh1MzIgZGJ1Zl9zbGljZV9tYXNrLAorCQkJCXUz MiBzbGljZV9zaXplLAorCQkJCXUzMiBkZGJfc2l6ZSkKK3sKKwl1bnNpZ25lZCBpbnQgb2Zmc2V0 ID0gMDsKKworCWlmICghZGJ1Zl9zbGljZV9tYXNrKQorCQlyZXR1cm4gMDsKKworCW9mZnNldCA9 IChmZnMoZGJ1Zl9zbGljZV9tYXNrKSAtIDEpICogc2xpY2Vfc2l6ZTsKKworCVdBUk5fT04ob2Zm c2V0ID49IGRkYl9zaXplKTsKKwlyZXR1cm4gb2Zmc2V0OworfQorCitzdGF0aWMgdTE2IGludGVs X2dldF9kZGJfc2l6ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7Ci0Jc3Ry dWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlID0gY3J0Y19zdGF0ZS0+dWFwaS5zdGF0ZTsKLQlz dHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICppbnRlbF9zdGF0ZSA9IHRvX2ludGVsX2F0b21pY19z dGF0ZShzdGF0ZSk7CiAJdTE2IGRkYl9zaXplID0gSU5URUxfSU5GTyhkZXZfcHJpdiktPmRkYl9z aXplOwogCiAJV0FSTl9PTihkZGJfc2l6ZSA9PSAwKTsKQEAgLTM4NzQsMTIgKzM4OTAsMTIgQEAg c3RhdGljIHUxNiBpbnRlbF9nZXRfZGRiX3NpemUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAogCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgMTEpCiAJCXJldHVybiBkZGJfc2l6 ZSAtIDQ7IC8qIDQgYmxvY2tzIGZvciBieXBhc3MgcGF0aCBhbGxvY2F0aW9uICovCiAKLQlpbnRl bF9zdGF0ZS0+ZW5hYmxlZF9kYnVmX3NsaWNlc19tYXNrID0gQklUKERCVUZfUzEpOwotCWRkYl9z aXplIC89IDI7Ci0KIAlyZXR1cm4gZGRiX3NpemU7CiB9CiAKK3N0YXRpYyB1OCBza2xfY29tcHV0 ZV9kYnVmX3NsaWNlcyhjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwK KwkJCQkgIHUzMiBhY3RpdmVfcGlwZXMpOworCiBzdGF0aWMgdm9pZAogc2tsX2RkYl9nZXRfcGlw ZV9hbGxvY2F0aW9uX2xpbWl0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJ CQkJICAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCkBAIC0zODkx LDEwICszOTA3LDE3IEBAIHNrbF9kZGJfZ2V0X3BpcGVfYWxsb2NhdGlvbl9saW1pdHMoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCXN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUg KmludGVsX3N0YXRlID0gdG9faW50ZWxfYXRvbWljX3N0YXRlKHN0YXRlKTsKIAlzdHJ1Y3QgZHJt X2NydGMgKmZvcl9jcnRjID0gY3J0Y19zdGF0ZS0+dWFwaS5jcnRjOwogCWNvbnN0IHN0cnVjdCBp bnRlbF9jcnRjICpjcnRjOwotCXUzMiBwaXBlX3dpZHRoID0gMCwgdG90YWxfd2lkdGggPSAwLCB3 aWR0aF9iZWZvcmVfcGlwZSA9IDA7CisJdTMyIHBpcGVfd2lkdGggPSAwLCB0b3RhbF93aWR0aF9p bl9yYW5nZSA9IDAsIHdpZHRoX2JlZm9yZV9waXBlID0gMDsKIAllbnVtIHBpcGUgZm9yX3BpcGUg PSB0b19pbnRlbF9jcnRjKGZvcl9jcnRjKS0+cGlwZTsKIAl1MTYgZGRiX3NpemU7CisJdTMyIGRk Yl9yYW5nZV9zaXplOwogCXUzMiBpOworCXUzMiBkYnVmX3NsaWNlX21hc2s7CisJdTMyIGFjdGl2 ZV9waXBlczsKKwl1MzIgb2Zmc2V0OworCXUzMiBzbGljZV9zaXplOworCXUzMiB0b3RhbF9zbGlj ZV9tYXNrOworCXUzMiBzdGFydCwgZW5kOwogCiAJaWYgKFdBUk5fT04oIXN0YXRlKSB8fCAhY3J0 Y19zdGF0ZS0+aHcuYWN0aXZlKSB7CiAJCWFsbG9jLT5zdGFydCA9IDA7CkBAIC0zOTA0LDEyICsz OTI3LDE1IEBAIHNrbF9kZGJfZ2V0X3BpcGVfYWxsb2NhdGlvbl9saW1pdHMoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAogCX0KIAogCWlmIChpbnRlbF9zdGF0ZS0+YWN0aXZlX3Bp cGVfY2hhbmdlcykKLQkJKm51bV9hY3RpdmUgPSBod2VpZ2h0OChpbnRlbF9zdGF0ZS0+YWN0aXZl X3BpcGVzKTsKKwkJYWN0aXZlX3BpcGVzID0gaW50ZWxfc3RhdGUtPmFjdGl2ZV9waXBlczsKIAll bHNlCi0JCSpudW1fYWN0aXZlID0gaHdlaWdodDgoZGV2X3ByaXYtPmFjdGl2ZV9waXBlcyk7CisJ CWFjdGl2ZV9waXBlcyA9IGRldl9wcml2LT5hY3RpdmVfcGlwZXM7CisKKwkqbnVtX2FjdGl2ZSA9 IGh3ZWlnaHQ4KGFjdGl2ZV9waXBlcyk7CisKKwlkZGJfc2l6ZSA9IGludGVsX2dldF9kZGJfc2l6 ZShkZXZfcHJpdik7CiAKLQlkZGJfc2l6ZSA9IGludGVsX2dldF9kZGJfc2l6ZShkZXZfcHJpdiwg Y3J0Y19zdGF0ZSwgdG90YWxfZGF0YV9yYXRlLAotCQkJCSAgICAgICpudW1fYWN0aXZlKTsKKwlz bGljZV9zaXplID0gZGRiX3NpemUgLyBJTlRFTF9JTkZPKGRldl9wcml2KS0+bnVtX3N1cHBvcnRl ZF9kYnVmX3NsaWNlczsKIAogCS8qCiAJICogSWYgdGhlIHN0YXRlIGRvZXNuJ3QgY2hhbmdlIHRo ZSBhY3RpdmUgQ1JUQydzIG9yIHRoZXJlIGlzIG5vCkBAIC0zOTI4LDIyICszOTU0LDcxIEBAIHNr bF9kZGJfZ2V0X3BpcGVfYWxsb2NhdGlvbl9saW1pdHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LAogCQlyZXR1cm47CiAJfQogCisJLyoKKwkgKiBHZXQgYWxsb3dlZCBEQnVmIHNs aWNlcyBmb3IgY29ycmVzcG9uZGVudCBwaXBlIGFuZCBwbGF0Zm9ybS4KKwkgKi8KKwlkYnVmX3Ns aWNlX21hc2sgPSBza2xfY29tcHV0ZV9kYnVmX3NsaWNlcyhjcnRjX3N0YXRlLCBhY3RpdmVfcGlw ZXMpOworCisJRFJNX0RFQlVHX0tNUygiREJ1ZiBzbGljZSBtYXNrICV4IHBpcGUgJWQgYWN0aXZl IHBpcGVzICV4XG4iLAorCQkgICAgICBkYnVmX3NsaWNlX21hc2ssCisJCSAgICAgIGZvcl9waXBl LCBhY3RpdmVfcGlwZXMpOworCisJLyoKKwkgKiBGaWd1cmUgb3V0IGF0IHdoaWNoIERCdWYgc2xp Y2Ugd2Ugc3RhcnQsIGkuZSBpZiB3ZSBzdGFydCBhdCBEYnVmIFMyCisJICogYW5kIHNsaWNlIHNp emUgaXMgMTAyNCwgdGhlIG9mZnNldCB3b3VsZCBiZSAxMDI0CisJICovCisJb2Zmc2V0ID0gaWNs X2dldF9maXJzdF9kYnVmX3NsaWNlX29mZnNldChkYnVmX3NsaWNlX21hc2ssCisJCQkJCQkgc2xp Y2Vfc2l6ZSwgZGRiX3NpemUpOworCisJLyoKKwkgKiBGaWd1cmUgb3V0IHRvdGFsIHNpemUgb2Yg YWxsb3dlZCBEQnVmIHNsaWNlcywgd2hpY2ggaXMgYmFzaWNhbGx5CisJICogYSBudW1iZXIgb2Yg YWxsb3dlZCBzbGljZXMgZm9yIHRoYXQgcGlwZSBtdWx0aXBsaWVkIGJ5IHNsaWNlIHNpemUuCisJ ICogSW5zaWRlIG9mIHRoaXMKKwkgKiByYW5nZSBkZGIgZW50cmllcyBhcmUgc3RpbGwgYWxsb2Nh dGVkIGluIHByb3BvcnRpb24gdG8gZGlzcGxheSB3aWR0aC4KKwkgKi8KKwlkZGJfcmFuZ2Vfc2l6 ZSA9IGh3ZWlnaHQ4KGRidWZfc2xpY2VfbWFzaykgKiBzbGljZV9zaXplOworCiAJLyoKIAkgKiBX YXRlcm1hcmsvZGRiIHJlcXVpcmVtZW50IGhpZ2hseSBkZXBlbmRzIHVwb24gd2lkdGggb2YgdGhl CiAJICogZnJhbWVidWZmZXIsIFNvIGluc3RlYWQgb2YgYWxsb2NhdGluZyBEREIgZXF1YWxseSBh bW9uZyBwaXBlcwogCSAqIGRpc3RyaWJ1dGUgRERCIGJhc2VkIG9uIHJlc29sdXRpb24vd2lkdGgg b2YgdGhlIGRpc3BsYXkuCiAJICovCisJdG90YWxfc2xpY2VfbWFzayA9IGRidWZfc2xpY2VfbWFz azsKIAlmb3JfZWFjaF9uZXdfaW50ZWxfY3J0Y19pbl9zdGF0ZShpbnRlbF9zdGF0ZSwgY3J0Yywg Y3J0Y19zdGF0ZSwgaSkgewogCQljb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0 ZWRfbW9kZSA9CiAJCQkmY3J0Y19zdGF0ZS0+aHcuYWRqdXN0ZWRfbW9kZTsKIAkJZW51bSBwaXBl IHBpcGUgPSBjcnRjLT5waXBlOwogCQlpbnQgaGRpc3BsYXksIHZkaXNwbGF5OworCQl1MzIgcGlw ZV9kYnVmX3NsaWNlX21hc2s7CiAKLQkJaWYgKCFjcnRjX3N0YXRlLT5ody5lbmFibGUpCisJCWlm ICghY3J0Y19zdGF0ZS0+aHcuYWN0aXZlKQorCQkJY29udGludWU7CisKKwkJcGlwZV9kYnVmX3Ns aWNlX21hc2sgPSBza2xfY29tcHV0ZV9kYnVmX3NsaWNlcyhjcnRjX3N0YXRlLAorCQkJCQkJCSAg ICAgICBhY3RpdmVfcGlwZXMpOworCisJCS8qCisJCSAqIEFjY29yZGluZyB0byBCU3BlYyBwaXBl IGNhbiBzaGFyZSBvbmUgZGJ1ZiBzbGljZSB3aXRoIGFub3RoZXIKKwkJICogcGlwZXMgb3IgcGlw ZSBjYW4gdXNlIG11bHRpcGxlIGRidWZzLCBpbiBib3RoIGNhc2VzIHdlCisJCSAqIGFjY291bnQg Zm9yIG90aGVyIHBpcGVzIG9ubHkgaWYgdGhleSBoYXZlIGV4YWN0bHkgc2FtZSBtYXNrLgorCQkg KiBIb3dldmVyIHdlIG5lZWQgdG8gYWNjb3VudCBob3cgbWFueSBzbGljZXMgd2Ugc2hvdWxkIGVu YWJsZQorCQkgKiBpbiB0b3RhbC4KKwkJICovCisJCXRvdGFsX3NsaWNlX21hc2sgfD0gcGlwZV9k YnVmX3NsaWNlX21hc2s7CisKKwkJLyoKKwkJICogRG8gbm90IGFjY291bnQgcGlwZXMgdXNpbmcg b3RoZXIgc2xpY2Ugc2V0cworCQkgKiBsdWNraWx5IGFzIG9mIGN1cnJlbnQgQlNwZWMgc2xpY2Ug c2V0cyBkbyBub3QgcGFydGlhbGx5CisJCSAqIGludGVyc2VjdChwaXBlcyBzaGFyZSBlaXRoZXIg c2FtZSBvbmUgc2xpY2Ugb3Igc2FtZSBzbGljZSBzZXQKKwkJICogaS5lIG5vIHBhcnRpYWwgaW50 ZXJzZWN0aW9uKSwgc28gaXQgaXMgZW5vdWdoIHRvIGNoZWNrIGZvcgorCQkgKiBlcXVhbGl0eSBm b3Igbm93LgorCQkgKi8KKwkJaWYgKGRidWZfc2xpY2VfbWFzayAhPSBwaXBlX2RidWZfc2xpY2Vf bWFzaykKIAkJCWNvbnRpbnVlOwogCiAJCWRybV9tb2RlX2dldF9odl90aW1pbmcoYWRqdXN0ZWRf bW9kZSwgJmhkaXNwbGF5LCAmdmRpc3BsYXkpOwotCQl0b3RhbF93aWR0aCArPSBoZGlzcGxheTsK KworCQl0b3RhbF93aWR0aF9pbl9yYW5nZSArPSBoZGlzcGxheTsKIAogCQlpZiAocGlwZSA8IGZv cl9waXBlKQogCQkJd2lkdGhfYmVmb3JlX3BpcGUgKz0gaGRpc3BsYXk7CkBAIC0zOTUxLDggKzQw MjYsMzEgQEAgc2tsX2RkYl9nZXRfcGlwZV9hbGxvY2F0aW9uX2xpbWl0cyhzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQlwaXBlX3dpZHRoID0gaGRpc3BsYXk7CiAJfQogCi0J YWxsb2MtPnN0YXJ0ID0gZGRiX3NpemUgKiB3aWR0aF9iZWZvcmVfcGlwZSAvIHRvdGFsX3dpZHRo OwotCWFsbG9jLT5lbmQgPSBkZGJfc2l6ZSAqICh3aWR0aF9iZWZvcmVfcGlwZSArIHBpcGVfd2lk dGgpIC8gdG90YWxfd2lkdGg7CisJLyoKKwkgKiBGSVhNRShob3c/KToKKwkgKiBJdCBsb29rcyBy aWRpY3Vsb3VzLiBJdCBsb29rcyBzdHVwaWQuIEJ1dCBjdXJyZW50bHkgd2UgbmVlZCB0byBPUiBp dAorCSAqIHdpdGggREJVRl9TMSBiaXQgYWx3YXlzLCBkdXJpbmcgY29yZV9pbml0L3VuaW5pdCwg d2UgaGF2ZSB0byBhbHdheXMKKwkgKiBoZXZlIHBvd2VyZWQgb24gMXN0IERCdWYgc2xpY2UsIGFj Y29yZGluZyB0byBCU3BlYyghKS4KKwkgKiBTbyBmb3IgdGhpcyByZWFzb24gaWNsL3NrbF9kYnVm X2VuYWJsZSBhbHdheXMgc2V0cyBpdCBvbi4KKwkgKiBCdXQgd2Ugbm93IGhhdmUgYSB1bmlmaWVk IGFzc2VydGlvbiBpbiBnZW45X2Rpc2FibGVfZGNfc3RhdGVzLCB3aGljaAorCSAqIGlzIHN1cHBv c2VkIHRvIGNoZWNrIGlmIHRoZSBhY3R1YWwgc3RhdGUgbWF0Y2hlcyBzdGF0ZSBpbiBkZXZfcHJp di4KKwkgKiBUaHVzIHdlIGFsd2F5cyBnb2luZyB0byBoYXZlIGEgbWlzbWF0Y2ghIFNvIGN1cnJl bnRseSB3ZSBhcmUgZ29pbmcKKwkgKiB0byBPUiBpdCwga2VlcCBEQlVGX1MxIGNvbnN0YW50bHkg T04gZXZlbiB3aGVuIHRoaXMgaXMgbm90IG5lZWRlZC4uCisJICovCisJaW50ZWxfc3RhdGUtPmVu YWJsZWRfZGJ1Zl9zbGljZXNfbWFzayA9IHRvdGFsX3NsaWNlX21hc2sgfCBCSVQoREJVRl9TMSk7 CisKKwlzdGFydCA9IGRkYl9yYW5nZV9zaXplICogd2lkdGhfYmVmb3JlX3BpcGUgLyB0b3RhbF93 aWR0aF9pbl9yYW5nZTsKKwllbmQgPSBkZGJfcmFuZ2Vfc2l6ZSAqCisJCSh3aWR0aF9iZWZvcmVf cGlwZSArIHBpcGVfd2lkdGgpIC8gdG90YWxfd2lkdGhfaW5fcmFuZ2U7CisKKwlhbGxvYy0+c3Rh cnQgPSBvZmZzZXQgKyBzdGFydDsKKwlhbGxvYy0+ZW5kID0gb2Zmc2V0ICsgZW5kOworCisJRFJN X0RFQlVHX0tNUygiUGlwZSAlZCBkZGIgJWQtJWRcbiIsIGZvcl9waXBlLAorCQkgICAgICBhbGxv Yy0+c3RhcnQsIGFsbG9jLT5lbmQpOworCURSTV9ERUJVR19LTVMoIkVuYWJsZWQgZGRiIHNsaWNl cyBtYXNrICV4IG51bSBzdXBwb3J0ZWQgJWRcbiIsCisJCSAgICAgIGludGVsX3N0YXRlLT5lbmFi bGVkX2RidWZfc2xpY2VzX21hc2ssCisJCSAgICAgIElOVEVMX0lORk8oZGV2X3ByaXYpLT5udW1f c3VwcG9ydGVkX2RidWZfc2xpY2VzKTsKIH0KIAogc3RhdGljIGludCBza2xfY29tcHV0ZV93bV9w YXJhbXMoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCkBAIC00MTIz LDYgKzQyMjEsMjY3IEBAIHNrbF9wbGFuZV9kb3duc2NhbGVfYW1vdW50KGNvbnN0IHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAogCXJldHVybiBtdWxfZml4ZWQxNihkb3duc2Nh bGVfdywgZG93bnNjYWxlX2gpOwogfQogCitzdHJ1Y3QgZGJ1Zl9zbGljZV9jb25mX2VudHJ5IHsK Kwl1OCBhY3RpdmVfcGlwZXM7CisJdTggZGJ1Zl9tYXNrW0k5MTVfTUFYX1BJUEVTXTsKK307CisK Ky8qCisgKiBUYWJsZSB0YWtlbiBmcm9tIEJzcGVjIDEyNzE2CisgKiBQaXBlcyBkbyBoYXZlIHNv bWUgcHJlZmVycmVkIERCdWYgc2xpY2UgYWZmaW5pdHksCisgKiBwbHVzIHRoZXJlIGFyZSBzb21l IGhhcmRjb2RlZCByZXF1aXJlbWVudHMgb24gaG93CisgKiB0aG9zZSBzaG91bGQgYmUgZGlzdHJp YnV0ZWQgZm9yIG11bHRpcGlwZSBzY2VuYXJpb3MuCisgKiBGb3IgbW9yZSBEQnVmIHNsaWNlcyBh bGdvcml0aG0gY2FuIGdldCBldmVuIG1vcmUgbWVzc3kKKyAqIGFuZCBsZXNzIHJlYWRhYmxlLCBz byBkZWNpZGVkIHRvIHVzZSBhIHRhYmxlIGFsbW9zdAorICogYXMgaXMgZnJvbSBCU3BlYyBpdHNl bGYgLSB0aGF0IHdheSBpdCBpcyBhdCBsZWFzdCBlYXNpZXIKKyAqIHRvIGNvbXBhcmUsIGNoYW5n ZSBhbmQgY2hlY2suCisgKi8KK3N0YXRpYyBzdHJ1Y3QgZGJ1Zl9zbGljZV9jb25mX2VudHJ5IGlj bF9hbGxvd2VkX2RidWZzW10gPQorLyogQXV0b2dlbmVyYXRlZCB3aXRoIGlndC90b29scy9pbnRl bF9kYnVmX21hcCB0b29sOiAqLworeworCXsKKwkJLmFjdGl2ZV9waXBlcyA9IEJJVChQSVBFX0Ep LAorCQl7CisJCQlbUElQRV9BXSA9IEJJVChEQlVGX1MxKSB8IEJJVChEQlVGX1MyKQorCQl9CisJ fSwKKwl7CisJCS5hY3RpdmVfcGlwZXMgPSBCSVQoUElQRV9CKSwKKwkJeworCQkJW1BJUEVfQl0g PSBCSVQoREJVRl9TMSkgfCBCSVQoREJVRl9TMikKKwkJfQorCX0sCisJeworCQkuYWN0aXZlX3Bp cGVzID0gQklUKFBJUEVfQSkgfCBCSVQoUElQRV9CKSwKKwkJeworCQkJW1BJUEVfQV0gPSBCSVQo REJVRl9TMSksCisJCQlbUElQRV9CXSA9IEJJVChEQlVGX1MyKQorCQl9CisJfSwKKwl7CisJCS5h Y3RpdmVfcGlwZXMgPSBCSVQoUElQRV9DKSwKKwkJeworCQkJW1BJUEVfQ10gPSBCSVQoREJVRl9T MikgfCBCSVQoREJVRl9TMSkKKwkJfQorCX0sCisJeworCQkuYWN0aXZlX3BpcGVzID0gQklUKFBJ UEVfQSkgfCBCSVQoUElQRV9DKSwKKwkJeworCQkJW1BJUEVfQV0gPSBCSVQoREJVRl9TMSksCisJ CQlbUElQRV9DXSA9IEJJVChEQlVGX1MyKQorCQl9CisJfSwKKwl7CisJCS5hY3RpdmVfcGlwZXMg PSBCSVQoUElQRV9CKSB8IEJJVChQSVBFX0MpLAorCQl7CisJCQlbUElQRV9CXSA9IEJJVChEQlVG X1MxKSwKKwkJCVtQSVBFX0NdID0gQklUKERCVUZfUzIpCisJCX0KKwl9LAorCXsKKwkJLmFjdGl2 ZV9waXBlcyA9IEJJVChQSVBFX0EpIHwgQklUKFBJUEVfQikgfCBCSVQoUElQRV9DKSwKKwkJewor CQkJW1BJUEVfQV0gPSBCSVQoREJVRl9TMSksCisJCQlbUElQRV9CXSA9IEJJVChEQlVGX1MxKSwK KwkJCVtQSVBFX0NdID0gQklUKERCVUZfUzIpCisJCX0KKwl9LAorfTsKKworLyoKKyAqIFRhYmxl IHRha2VuIGZyb20gQnNwZWMgNDkyNTUKKyAqIFBpcGVzIGRvIGhhdmUgc29tZSBwcmVmZXJyZWQg REJ1ZiBzbGljZSBhZmZpbml0eSwKKyAqIHBsdXMgdGhlcmUgYXJlIHNvbWUgaGFyZGNvZGVkIHJl cXVpcmVtZW50cyBvbiBob3cKKyAqIHRob3NlIHNob3VsZCBiZSBkaXN0cmlidXRlZCBmb3IgbXVs dGlwaXBlIHNjZW5hcmlvcy4KKyAqIEZvciBtb3JlIERCdWYgc2xpY2VzIGFsZ29yaXRobSBjYW4g Z2V0IGV2ZW4gbW9yZSBtZXNzeQorICogYW5kIGxlc3MgcmVhZGFibGUsIHNvIGRlY2lkZWQgdG8g dXNlIGEgdGFibGUgYWxtb3N0CisgKiBhcyBpcyBmcm9tIEJTcGVjIGl0c2VsZiAtIHRoYXQgd2F5 IGl0IGlzIGF0IGxlYXN0IGVhc2llcgorICogdG8gY29tcGFyZSwgY2hhbmdlIGFuZCBjaGVjay4K KyAqLworc3RhdGljIHN0cnVjdCBkYnVmX3NsaWNlX2NvbmZfZW50cnkgdGdsX2FsbG93ZWRfZGJ1 ZnNbXSA9CisvKiBBdXRvZ2VuZXJhdGVkIHdpdGggaWd0L3Rvb2xzL2ludGVsX2RidWZfbWFwIHRv b2w6ICovCit7CisJeworCQkuYWN0aXZlX3BpcGVzID0gQklUKFBJUEVfQSksCisJCXsKKwkJCVtQ SVBFX0FdID0gQklUKERCVUZfUzEpIHwgQklUKERCVUZfUzIpCisJCX0KKwl9LAorCXsKKwkJLmFj dGl2ZV9waXBlcyA9IEJJVChQSVBFX0IpLAorCQl7CisJCQlbUElQRV9CXSA9IEJJVChEQlVGX1Mx KSB8IEJJVChEQlVGX1MyKQorCQl9CisJfSwKKwl7CisJCS5hY3RpdmVfcGlwZXMgPSBCSVQoUElQ RV9BKSB8IEJJVChQSVBFX0IpLAorCQl7CisJCQlbUElQRV9BXSA9IEJJVChEQlVGX1MyKSwKKwkJ CVtQSVBFX0JdID0gQklUKERCVUZfUzEpCisJCX0KKwl9LAorCXsKKwkJLmFjdGl2ZV9waXBlcyA9 IEJJVChQSVBFX0MpLAorCQl7CisJCQlbUElQRV9DXSA9IEJJVChEQlVGX1MyKSB8IEJJVChEQlVG X1MxKQorCQl9CisJfSwKKwl7CisJCS5hY3RpdmVfcGlwZXMgPSBCSVQoUElQRV9BKSB8IEJJVChQ SVBFX0MpLAorCQl7CisJCQlbUElQRV9BXSA9IEJJVChEQlVGX1MxKSwKKwkJCVtQSVBFX0NdID0g QklUKERCVUZfUzIpCisJCX0KKwl9LAorCXsKKwkJLmFjdGl2ZV9waXBlcyA9IEJJVChQSVBFX0Ip IHwgQklUKFBJUEVfQyksCisJCXsKKwkJCVtQSVBFX0JdID0gQklUKERCVUZfUzEpLAorCQkJW1BJ UEVfQ10gPSBCSVQoREJVRl9TMikKKwkJfQorCX0sCisJeworCQkuYWN0aXZlX3BpcGVzID0gQklU KFBJUEVfQSkgfCBCSVQoUElQRV9CKSB8IEJJVChQSVBFX0MpLAorCQl7CisJCQlbUElQRV9BXSA9 IEJJVChEQlVGX1MxKSwKKwkJCVtQSVBFX0JdID0gQklUKERCVUZfUzEpLAorCQkJW1BJUEVfQ10g PSBCSVQoREJVRl9TMikKKwkJfQorCX0sCisJeworCQkuYWN0aXZlX3BpcGVzID0gQklUKFBJUEVf RCksCisJCXsKKwkJCVtQSVBFX0RdID0gQklUKERCVUZfUzIpIHwgQklUKERCVUZfUzEpCisJCX0K Kwl9LAorCXsKKwkJLmFjdGl2ZV9waXBlcyA9IEJJVChQSVBFX0EpIHwgQklUKFBJUEVfRCksCisJ CXsKKwkJCVtQSVBFX0FdID0gQklUKERCVUZfUzEpLAorCQkJW1BJUEVfRF0gPSBCSVQoREJVRl9T MikKKwkJfQorCX0sCisJeworCQkuYWN0aXZlX3BpcGVzID0gQklUKFBJUEVfQikgfCBCSVQoUElQ RV9EKSwKKwkJeworCQkJW1BJUEVfQl0gPSBCSVQoREJVRl9TMSksCisJCQlbUElQRV9EXSA9IEJJ VChEQlVGX1MyKQorCQl9CisJfSwKKwl7CisJCS5hY3RpdmVfcGlwZXMgPSBCSVQoUElQRV9BKSB8 IEJJVChQSVBFX0IpIHwgQklUKFBJUEVfRCksCisJCXsKKwkJCVtQSVBFX0FdID0gQklUKERCVUZf UzEpLAorCQkJW1BJUEVfQl0gPSBCSVQoREJVRl9TMSksCisJCQlbUElQRV9EXSA9IEJJVChEQlVG X1MyKQorCQl9CisJfSwKKwl7CisJCS5hY3RpdmVfcGlwZXMgPSBCSVQoUElQRV9DKSB8IEJJVChQ SVBFX0QpLAorCQl7CisJCQlbUElQRV9DXSA9IEJJVChEQlVGX1MxKSwKKwkJCVtQSVBFX0RdID0g QklUKERCVUZfUzIpCisJCX0KKwl9LAorCXsKKwkJLmFjdGl2ZV9waXBlcyA9IEJJVChQSVBFX0Ep IHwgQklUKFBJUEVfQykgfCBCSVQoUElQRV9EKSwKKwkJeworCQkJW1BJUEVfQV0gPSBCSVQoREJV Rl9TMSksCisJCQlbUElQRV9DXSA9IEJJVChEQlVGX1MyKSwKKwkJCVtQSVBFX0RdID0gQklUKERC VUZfUzIpCisJCX0KKwl9LAorCXsKKwkJLmFjdGl2ZV9waXBlcyA9IEJJVChQSVBFX0IpIHwgQklU KFBJUEVfQykgfCBCSVQoUElQRV9EKSwKKwkJeworCQkJW1BJUEVfQl0gPSBCSVQoREJVRl9TMSks CisJCQlbUElQRV9DXSA9IEJJVChEQlVGX1MyKSwKKwkJCVtQSVBFX0RdID0gQklUKERCVUZfUzIp CisJCX0KKwl9LAorCXsKKwkJLmFjdGl2ZV9waXBlcyA9CisJCQlCSVQoUElQRV9BKSB8IEJJVChQ SVBFX0IpIHwgQklUKFBJUEVfQykgfCBCSVQoUElQRV9EKSwKKwkJeworCQkJW1BJUEVfQV0gPSBC SVQoREJVRl9TMSksCisJCQlbUElQRV9CXSA9IEJJVChEQlVGX1MxKSwKKwkJCVtQSVBFX0NdID0g QklUKERCVUZfUzIpLAorCQkJW1BJUEVfRF0gPSBCSVQoREJVRl9TMikKKwkJfQorCX0sCit9Owor CitzdGF0aWMgdTggY29tcHV0ZV9kYnVmX3NsaWNlcyhlbnVtIHBpcGUgcGlwZSwKKwkJCSAgICAg IHUzMiBhY3RpdmVfcGlwZXMsCisJCQkgICAgICBjb25zdCBzdHJ1Y3QgZGJ1Zl9zbGljZV9jb25m X2VudHJ5ICpkYnVmX3NsaWNlcywKKwkJCSAgICAgIGludCBzaXplKQoreworCWludCBpOworCisJ Zm9yIChpID0gMDsgaSA8IHNpemU7IGkrKykgeworCQlpZiAoZGJ1Zl9zbGljZXNbaV0uYWN0aXZl X3BpcGVzID09IGFjdGl2ZV9waXBlcykKKwkJCXJldHVybiBkYnVmX3NsaWNlc1tpXS5kYnVmX21h c2tbcGlwZV07CisJfQorCXJldHVybiAwOworfQorCisvKgorICogVGhpcyBmdW5jdGlvbiBmaW5k cyBhbiBlbnRyeSB3aXRoIHNhbWUgZW5hYmxlZCBwaXBlIGNvbmZpZ3VyYXRpb24gYW5kCisgKiBy ZXR1cm5zIGNvcnJlc3BvbmRlbnQgREJ1ZiBzbGljZSBtYXNrIGFzIHN0YXRlZCBpbiBCU3BlYyBm b3IgcGFydGljdWxhcgorICogcGxhdGZvcm0uCisgKi8KK3N0YXRpYyB1MzIgaWNsX2NvbXB1dGVf ZGJ1Zl9zbGljZXMoZW51bSBwaXBlIHBpcGUsCisJCQkJICAgdTMyIGFjdGl2ZV9waXBlcywKKwkJ CQkgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKK3sKKwkvKgor CSAqIEZJWE1FOiBGb3IgSUNMIHRoaXMgaXMgc3RpbGwgYSBiaXQgdW5jbGVhciBhcyBwcmV2IEJT cGVjIHJldmlzaW9uCisJICogcmVxdWlyZWQgY2FsY3VsYXRpbmcgInBpcGUgcmF0aW8iIGluIG9y ZGVyIHRvIGRldGVybWluZQorCSAqIGlmIG9uZSBvciB0d28gc2xpY2VzIGNhbiBiZSB1c2VkIGZv ciBzaW5nbGUgcGlwZSBjb25maWd1cmF0aW9ucworCSAqIGFzIGFkZGl0aW9uYWwgY29uc3RyYWlu dCB0byB0aGUgZXhpc3RpbmcgdGFibGUuCisJICogSG93ZXZlciBiYXNlZCBvbiByZWNlbnQgaW5m bywgaXQgc2hvdWxkIGJlIG5vdCAicGlwZSByYXRpbyIKKwkgKiBidXQgcmF0aGVyIHJhdGlvIGJl dHdlZW4gcGl4ZWxfcmF0ZSBhbmQgY2RjbGsgd2l0aCBhZGRpdGlvbmFsCisJICogY29uc3RhbnRz LCBzbyBmb3Igbm93IHdlIGFyZSB1c2luZyBvbmx5IHRhYmxlIHVudGlsIHRoaXMgaXMKKwkgKiBj bGFyaWZpZWQuIEFsc28gdGhpcyBpcyB0aGUgcmVhc29uIHdoeSBjcnRjX3N0YXRlIHBhcmFtIGlz CisJICogc3RpbGwgaGVyZSAtIHdlIHdpbGwgbmVlZCBpdCBvbmNlIHRob3NlIGFkZGl0aW9uYWwg Y29uc3RyYWludHMKKwkgKiBwb3AgdXAuCisJICovCisJcmV0dXJuIGNvbXB1dGVfZGJ1Zl9zbGlj ZXMocGlwZSwgYWN0aXZlX3BpcGVzLAorCQkJCSAgIGljbF9hbGxvd2VkX2RidWZzLAorCQkJCSAg IEFSUkFZX1NJWkUoaWNsX2FsbG93ZWRfZGJ1ZnMpKTsKK30KKworc3RhdGljIHUzMiB0Z2xfY29t cHV0ZV9kYnVmX3NsaWNlcyhlbnVtIHBpcGUgcGlwZSwKKwkJCQkgICB1MzIgYWN0aXZlX3BpcGVz LAorCQkJCSAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQorewor CXJldHVybiBjb21wdXRlX2RidWZfc2xpY2VzKHBpcGUsIGFjdGl2ZV9waXBlcywKKwkJCQkgICB0 Z2xfYWxsb3dlZF9kYnVmcywKKwkJCQkgICBBUlJBWV9TSVpFKHRnbF9hbGxvd2VkX2RidWZzKSk7 Cit9CisKK3N0YXRpYyB1OCBza2xfY29tcHV0ZV9kYnVmX3NsaWNlcyhjb25zdCBzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKKwkJCQkgIHUzMiBhY3RpdmVfcGlwZXMpCit7CisJ c3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGNydGNfc3RhdGUtPnVhcGku Y3J0Yyk7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRj LT5iYXNlLmRldik7CisJZW51bSBwaXBlIHBpcGUgPSBjcnRjLT5waXBlOworCisJaWYgKElTX0dF TihkZXZfcHJpdiwgMTIpKQorCQlyZXR1cm4gdGdsX2NvbXB1dGVfZGJ1Zl9zbGljZXMocGlwZSwK KwkJCQkJICAgICAgIGFjdGl2ZV9waXBlcywKKwkJCQkJICAgICAgIGNydGNfc3RhdGUpOworCWVs c2UgaWYgKElTX0dFTihkZXZfcHJpdiwgMTEpKQorCQlyZXR1cm4gaWNsX2NvbXB1dGVfZGJ1Zl9z bGljZXMocGlwZSwKKwkJCQkJICAgICAgIGFjdGl2ZV9waXBlcywKKwkJCQkJICAgICAgIGNydGNf c3RhdGUpOworCS8qCisJICogRm9yIGFueXRoaW5nIGVsc2UganVzdCByZXR1cm4gb25lIHNsaWNl IHlldC4KKwkgKiBTaG91bGQgYmUgZXh0ZW5kZWQgZm9yIG90aGVyIHBsYXRmb3Jtcy4KKwkgKi8K KwlyZXR1cm4gQklUKERCVUZfUzEpOworfQorCiBzdGF0aWMgdTY0CiBza2xfcGxhbmVfcmVsYXRp dmVfZGF0YV9yYXRlKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAog CQkJICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlLApkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uaCBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3BtLmgKaW5kZXggZDYwYTg1NDIxYzVhLi5mODUzYmMxODRkZDYgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmgKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfcG0uaApAQCAtNTcsNiArNTcsOCBAQCBib29sIGlsa19kaXNhYmxlX2xw X3dtKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CiB2b2lkIGludGVsX2luaXRf aXBjKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CiB2b2lkIGludGVsX2VuYWJs ZV9pcGMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKIAoraW50IGludGVsX2Ri dWZfbWF4X3NsaWNlcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOworCiBib29s IGludGVsX3NldF9tZW1vcnlfY3hzcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs IGJvb2wgZW5hYmxlKTsKIAogI2VuZGlmIC8qIF9fSU5URUxfUE1fSF9fICovCi0tIAoyLjI0LjEu NDg1LmdhZDA1YTNkOGU1CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRl bC1nZngK