From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dmitry Osipenko Subject: [PATCH v10 0/7] Support Trusted Foundations firmware on Tegra30 Date: Mon, 18 Mar 2019 01:52:03 +0300 Message-ID: <20190317225211.23091-1-digetx@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Return-path: Sender: linux-kernel-owner@vger.kernel.org To: Russell King , Thierry Reding , Jonathan Hunter , Robert Yang , =?UTF-8?q?Micha=C5=82=20Miros=C5=82aw?= Cc: linux-arm-kernel@lists.infradead.org, linux-tegra@vger.kernel.org, linux-kernel@vger.kernel.org List-Id: linux-tegra@vger.kernel.org Hello, This patchset adds support for the Trusted Foundations firmware on NVIDIA Tegra30. Pretty much all of Tegra30 consumer devices have that firmware and upstream kernel can't boot on those devices without the firmware support. This series was tested on Nexus 7, TF300T and Ouya Tegra30 devices. Changelog: v10: - Removed duplicated message about keeping L2C disabled when CONFIG_TRUSTED_FOUNDATIONS=n as was suggested by Michał Mirosław in the review comment to v9. v9: - Rebased on recent linux-next, resolved one conflict. v8: - Replaced BIT() macro with a definition provided by cache-l2x0.h in the "Support L2 cache maintenance" patch as was suggested by Russell King in the review comment to v7. v7: - Fixed kernel booting with CONFIG_TRUSTED_FOUNDATIONS=n by providing a dummy L2C write_sec implementation in the "Support L2 cache maintenance" patch. - Minor clean up: no static variables anymore, replaced white spaces with a tab in one place, etc. - Added Michał's and Robert's Tested-by/Signed-off-by to the patches. v6: - One patch got messed up accidentally in v5, this is fixed now. - Squashed "Support L2 cache maintenance done via firmware" patch into the "Add firmware calls..." patch. - The l2x0_init() firmware callback is now invoked unconditionally because it is always a NO-OP on T114+ and is a NO-OP on T20/30 if firmware node is missed in device-tree, hence there is no need to check the machine's DT compatible as it was done in the previous versions of the series. v5: - Fixed machine hanging on disabling D-cache during suspend, turned out there are slight variations in behaviour between firmware version in regards to cache-management. Thanks to Robert Yang for reporting the problem and helping with the solution. v4: - Fixed Thumb2-kernel hanging on Tegra20, turned out it was not a good idea to switch CPU into Thumb2 mode right after jumping into the reset handler. - Moved LP2-mode-set firmware call invocation to a later stage to better replicate what downstream kernel does. This change was suggested by Robert Yang and fixes system hang on Ouya game console. - Added references to the original work made by Michał Mirosław into commit messages of the relevant patches. v3: - Implemented suspend-resume support. - Reworked arm/firmware/trusted_foundations.c a tad. Now cache is getting properly initialized, cache enabling / disabling is supported. v2: - The "Don't apply CPU erratas in insecure mode" patch got some cleanup, in particular resolved the messiness in __tegra_cpu_reset_handler_data. - Added a comment to tf_cache_write_sec(), justifying the warning message. Dmitry Osipenko (7): ARM: trusted_foundations: Support L2 cache maintenance ARM: trusted_foundations: Make prepare_idle call to take mode argument ARM: trusted_foundations: Provide information about whether firmware is registered ARM: tegra: Set up L2 cache using Trusted Foundations firmware ARM: tegra: Don't apply CPU erratas in insecure mode ARM: tegra: Always boot CPU in ARM-mode ARM: tegra: Add firmware calls required for suspend-resume on Tegra30 arch/arm/firmware/trusted_foundations.c | 75 +++++++++++++++++++++- arch/arm/include/asm/firmware.h | 2 +- arch/arm/include/asm/trusted_foundations.h | 23 +++++++ arch/arm/mach-tegra/cpuidle-tegra114.c | 3 +- arch/arm/mach-tegra/pm.c | 49 ++++++++++++++ arch/arm/mach-tegra/reset-handler.S | 50 +++++++++++---- arch/arm/mach-tegra/reset.c | 3 + arch/arm/mach-tegra/reset.h | 9 ++- arch/arm/mach-tegra/sleep-tegra20.S | 4 ++ arch/arm/mach-tegra/sleep.S | 14 ++-- arch/arm/mach-tegra/tegra.c | 2 + 11 files changed, 212 insertions(+), 22 deletions(-) -- 2.20.1 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=-2.7 required=3.0 tests=DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED,DKIM_VALID,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,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 07F64C43381 for ; Sun, 17 Mar 2019 22:55:49 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (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 C472E2086A for ; Sun, 17 Mar 2019 22:55:48 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="AutMwkH9"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="i030CmbE" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org C472E2086A Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-Id:Date:Subject:To :From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=6DK9y4BwMDzlFTLIzBafp4JWXDYf5e065P9pSAjwvhE=; b=AutMwkH9swaolb IMOKXGPvYsjdyK1P8KbpFDGwE2x4Vt7n7ZDaEqURMFdHSXv6Zou4EjKzfeCSOUrPok0yqfbcg5RDR TEHrt3aCw4QBY88kEg3+kW/7+4uAxrN4j6qetUq836kjAJXFlYCbzufMd/BIlZmvY/GdfAbIzJcvN n0MqaieMDFEPqJKDHKmsWMpjvDLkULjN+7xeytzVWpGxBRDtKcrupl7FS3IPJIOfGNLC2iCT3NAt+ k4cAY4hvHAFpsQwL5IUG/L/mUN1DI0yHPQIT4YWKGGsLHYFGuXVN1+vr5jgsicPNwT5h1Xa2P77iE 39qDVr3ptSIZo/+omNSg==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.90_1 #2 (Red Hat Linux)) id 1h5egr-0006qE-KC; Sun, 17 Mar 2019 22:55:37 +0000 Received: from mail-pf1-x442.google.com ([2607:f8b0:4864:20::442]) by bombadil.infradead.org with esmtps (Exim 4.90_1 #2 (Red Hat Linux)) id 1h5egn-0006pV-Nh for linux-arm-kernel@lists.infradead.org; Sun, 17 Mar 2019 22:55:35 +0000 Received: by mail-pf1-x442.google.com with SMTP id n125so9930588pfn.5 for ; Sun, 17 Mar 2019 15:55:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=xxZ65DY7vxzATnUhNfFZNHDdifRft9qO1lmQBG3z9uE=; b=i030CmbErJdZChB/eUQ+tc3k4gzpI9/QWDthVCe1pH9/Yl9Dfu799E6MtCiZs4xtpd lKeAb+t4v1e4mB3EeOsMN9XIbYsk7Cu59/PkcJ6hsdO3tCjaU0JdNtMZ+6ddqLXp+LiX 3+90tCjCG+gG3Zr/tlNY6v6BoW6KLnrQ79pa/iiG9Szck5gOwOQndlj4ZnU7F2pajvCY UCHOUMfBg2I7y2O+kjfo4jeuhLSniJ+tw7PY5ALFcBRXbYTue1VeiOpNgkrysujX3IL1 MGb4Ac9vPw/hM3gf7/Va35MjRKscwBqk0ENkid3eS3q3dX07g5UadBANqrkAONSqasM1 zTmA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=xxZ65DY7vxzATnUhNfFZNHDdifRft9qO1lmQBG3z9uE=; b=KfgKyAuReSW+wFiW0OC3qfp8gPoXEsVZ4IPbuUr9gU1hVTnW7ZmYDU+OxjSWbvlxSQ m89uQcgeZY9ybewpTIcAw/969IFgYzENONa1PMerp0w7OixBNN+Zzatzef7FwgR4DhyT DNrJFssQVs1+F7NZ0/lGDL0rC7xzSozIDNTF9Vf5oeyqEf1y+b0fFAgniJmni22fdYlS EYjmFMkitH8ySeIHrFATdxzGIllwXALRxt/hFzlnOQy21etAAjacQ79iLtXgGdeHUN+Z 844UpF5ergwyp4HmEEPHi4wz0xJAvo4TNK7BegLlry3OlvwxMvM5SuhLd25iU/ab8KXH 8wUw== X-Gm-Message-State: APjAAAX7+9uKdaBCJDRjw+1jfvTK5+yzLsVyEBoQYEHe3ihTAEcg4IY/ 1IoifQ7rHdrlCBnfPvose3Y0NR6Z X-Google-Smtp-Source: APXvYqyjxAXIRBL0cf7PsMl+P8ChgEkfMOxc7Y64lrxiqcH7X6vW4XW6aKmF8dO6iaTANkgcJc281Q== X-Received: by 2002:a65:4381:: with SMTP id m1mr13863218pgp.97.1552863329779; Sun, 17 Mar 2019 15:55:29 -0700 (PDT) Received: from localhost.localdomain (ppp94-29-37-86.pppoe.spdop.ru. [94.29.37.86]) by smtp.gmail.com with ESMTPSA id v2sm13738838pfg.118.2019.03.17.15.55.23 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 17 Mar 2019 15:55:29 -0700 (PDT) From: Dmitry Osipenko To: Russell King , Thierry Reding , Jonathan Hunter , Robert Yang , =?UTF-8?q?Micha=C5=82=20Miros=C5=82aw?= Subject: [PATCH v10 0/7] Support Trusted Foundations firmware on Tegra30 Date: Mon, 18 Mar 2019 01:52:03 +0300 Message-Id: <20190317225211.23091-1-digetx@gmail.com> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20190317_155533_828931_1D38695D X-CRM114-Status: GOOD ( 15.63 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: linux-tegra@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+infradead-linux-arm-kernel=archiver.kernel.org@lists.infradead.org SGVsbG8sCgpUaGlzIHBhdGNoc2V0IGFkZHMgc3VwcG9ydCBmb3IgdGhlIFRydXN0ZWQgRm91bmRh dGlvbnMgZmlybXdhcmUgb24KTlZJRElBIFRlZ3JhMzAuIFByZXR0eSBtdWNoIGFsbCBvZiBUZWdy YTMwIGNvbnN1bWVyIGRldmljZXMgaGF2ZSB0aGF0CmZpcm13YXJlIGFuZCB1cHN0cmVhbSBrZXJu ZWwgY2FuJ3QgYm9vdCBvbiB0aG9zZSBkZXZpY2VzIHdpdGhvdXQgdGhlCmZpcm13YXJlIHN1cHBv cnQuIFRoaXMgc2VyaWVzIHdhcyB0ZXN0ZWQgb24gTmV4dXMgNywgVEYzMDBUIGFuZCBPdXlhClRl Z3JhMzAgZGV2aWNlcy4KCkNoYW5nZWxvZzoKCnYxMDogICAgLSBSZW1vdmVkIGR1cGxpY2F0ZWQg bWVzc2FnZSBhYm91dCBrZWVwaW5nIEwyQyBkaXNhYmxlZCB3aGVuCiAgICAgICAgICBDT05GSUdf VFJVU1RFRF9GT1VOREFUSU9OUz1uIGFzIHdhcyBzdWdnZXN0ZWQgYnkgTWljaGHFgiBNaXJvc8WC YXcKICAgICAgICAgIGluIHRoZSByZXZpZXcgY29tbWVudCB0byB2OS4KCnY5OiAgICAgLSBSZWJh c2VkIG9uIHJlY2VudCBsaW51eC1uZXh0LCByZXNvbHZlZCBvbmUgY29uZmxpY3QuCgp2ODogICAg IC0gUmVwbGFjZWQgQklUKCkgbWFjcm8gd2l0aCBhIGRlZmluaXRpb24gcHJvdmlkZWQgYnkgY2Fj aGUtbDJ4MC5oCiAgICAgICAgICBpbiB0aGUgIlN1cHBvcnQgTDIgY2FjaGUgbWFpbnRlbmFuY2Ui IHBhdGNoIGFzIHdhcyBzdWdnZXN0ZWQgYnkKICAgICAgICAgIFJ1c3NlbGwgS2luZyBpbiB0aGUg cmV2aWV3IGNvbW1lbnQgdG8gdjcuCgp2NzogICAgIC0gRml4ZWQga2VybmVsIGJvb3Rpbmcgd2l0 aCBDT05GSUdfVFJVU1RFRF9GT1VOREFUSU9OUz1uIGJ5CiAgICAgICAgICBwcm92aWRpbmcgYSBk dW1teSBMMkMgd3JpdGVfc2VjIGltcGxlbWVudGF0aW9uIGluIHRoZQogICAgICAgICAgIlN1cHBv cnQgTDIgY2FjaGUgbWFpbnRlbmFuY2UiIHBhdGNoLgoKICAgICAgICAtIE1pbm9yIGNsZWFuIHVw OiBubyBzdGF0aWMgdmFyaWFibGVzIGFueW1vcmUsIHJlcGxhY2VkCiAgICAgICAgICB3aGl0ZSBz cGFjZXMgd2l0aCBhIHRhYiBpbiBvbmUgcGxhY2UsIGV0Yy4KCiAgICAgICAgLSBBZGRlZCBNaWNo YcWCJ3MgYW5kIFJvYmVydCdzIFRlc3RlZC1ieS9TaWduZWQtb2ZmLWJ5IHRvIHRoZQogICAgICAg ICAgcGF0Y2hlcy4KCnY2OiAgICAgLSBPbmUgcGF0Y2ggZ290IG1lc3NlZCB1cCBhY2NpZGVudGFs bHkgaW4gdjUsIHRoaXMgaXMgZml4ZWQgbm93LgoKICAgICAgICAtIFNxdWFzaGVkICJTdXBwb3J0 IEwyIGNhY2hlIG1haW50ZW5hbmNlIGRvbmUgdmlhIGZpcm13YXJlIiBwYXRjaAogICAgICAgICAg aW50byB0aGUgIkFkZCBmaXJtd2FyZSBjYWxscy4uLiIgcGF0Y2guCgogICAgICAgIC0gVGhlIGwy eDBfaW5pdCgpIGZpcm13YXJlIGNhbGxiYWNrIGlzIG5vdyBpbnZva2VkIHVuY29uZGl0aW9uYWxs eQogICAgICAgICAgYmVjYXVzZSBpdCBpcyBhbHdheXMgYSBOTy1PUCBvbiBUMTE0KyBhbmQgaXMg YSBOTy1PUCBvbiBUMjAvMzAKICAgICAgICAgIGlmIGZpcm13YXJlIG5vZGUgaXMgbWlzc2VkIGlu IGRldmljZS10cmVlLCBoZW5jZSB0aGVyZSBpcyBubwogICAgICAgICAgbmVlZCB0byBjaGVjayB0 aGUgbWFjaGluZSdzIERUIGNvbXBhdGlibGUgYXMgaXQgd2FzIGRvbmUgaW4gdGhlCiAgICAgICAg ICBwcmV2aW91cyB2ZXJzaW9ucyBvZiB0aGUgc2VyaWVzLgoKdjU6ICAgICAtIEZpeGVkIG1hY2hp bmUgaGFuZ2luZyBvbiBkaXNhYmxpbmcgRC1jYWNoZSBkdXJpbmcgc3VzcGVuZCwKICAgICAgICAg IHR1cm5lZCBvdXQgdGhlcmUgYXJlIHNsaWdodCB2YXJpYXRpb25zIGluIGJlaGF2aW91ciBiZXR3 ZWVuCiAgICAgICAgICBmaXJtd2FyZSB2ZXJzaW9uIGluIHJlZ2FyZHMgdG8gY2FjaGUtbWFuYWdl bWVudC4gVGhhbmtzIHRvCiAgICAgICAgICBSb2JlcnQgWWFuZyBmb3IgcmVwb3J0aW5nIHRoZSBw cm9ibGVtIGFuZCBoZWxwaW5nIHdpdGggdGhlCiAgICAgICAgICBzb2x1dGlvbi4KCnY0OiAgICAg LSBGaXhlZCBUaHVtYjIta2VybmVsIGhhbmdpbmcgb24gVGVncmEyMCwgdHVybmVkIG91dCBpdCB3 YXMgbm90IGEKICAgICAgICAgIGdvb2QgaWRlYSB0byBzd2l0Y2ggQ1BVIGludG8gVGh1bWIyIG1v ZGUgcmlnaHQgYWZ0ZXIganVtcGluZyBpbnRvCiAgICAgICAgICB0aGUgcmVzZXQgaGFuZGxlci4K CiAgICAgICAgLSBNb3ZlZCBMUDItbW9kZS1zZXQgZmlybXdhcmUgY2FsbCBpbnZvY2F0aW9uIHRv IGEgbGF0ZXIgc3RhZ2UgdG8KICAgICAgICAgIGJldHRlciByZXBsaWNhdGUgd2hhdCBkb3duc3Ry ZWFtIGtlcm5lbCBkb2VzLiBUaGlzIGNoYW5nZSB3YXMKICAgICAgICAgIHN1Z2dlc3RlZCBieSBS b2JlcnQgWWFuZyBhbmQgZml4ZXMgc3lzdGVtIGhhbmcgb24gT3V5YSBnYW1lCiAgICAgICAgICBj b25zb2xlLgoKICAgICAgICAtIEFkZGVkIHJlZmVyZW5jZXMgdG8gdGhlIG9yaWdpbmFsIHdvcmsg bWFkZSBieSBNaWNoYcWCIE1pcm9zxYJhdwogICAgICAgICAgaW50byBjb21taXQgbWVzc2FnZXMg b2YgdGhlIHJlbGV2YW50IHBhdGNoZXMuCgp2MzogICAgIC0gSW1wbGVtZW50ZWQgc3VzcGVuZC1y ZXN1bWUgc3VwcG9ydC4KCiAgICAgICAgLSBSZXdvcmtlZCBhcm0vZmlybXdhcmUvdHJ1c3RlZF9m b3VuZGF0aW9ucy5jIGEgdGFkLiBOb3cgY2FjaGUKICAgICAgICAgIGlzIGdldHRpbmcgcHJvcGVy bHkgaW5pdGlhbGl6ZWQsIGNhY2hlIGVuYWJsaW5nIC8gZGlzYWJsaW5nIGlzCiAgICAgICAgICBz dXBwb3J0ZWQuCgp2MjoKICAgICAgICAtIFRoZSAiRG9uJ3QgYXBwbHkgQ1BVIGVycmF0YXMgaW4g aW5zZWN1cmUgbW9kZSIgcGF0Y2ggZ290IHNvbWUKICAgICAgICAgIGNsZWFudXAsIGluIHBhcnRp Y3VsYXIgcmVzb2x2ZWQgdGhlIG1lc3NpbmVzcyBpbgogICAgICAgICAgX190ZWdyYV9jcHVfcmVz ZXRfaGFuZGxlcl9kYXRhLgoKICAgICAgICAtIEFkZGVkIGEgY29tbWVudCB0byB0Zl9jYWNoZV93 cml0ZV9zZWMoKSwganVzdGlmeWluZyB0aGUgd2FybmluZwogICAgICAgICAgbWVzc2FnZS4KCkRt aXRyeSBPc2lwZW5rbyAoNyk6CiAgQVJNOiB0cnVzdGVkX2ZvdW5kYXRpb25zOiBTdXBwb3J0IEwy IGNhY2hlIG1haW50ZW5hbmNlCiAgQVJNOiB0cnVzdGVkX2ZvdW5kYXRpb25zOiBNYWtlIHByZXBh cmVfaWRsZSBjYWxsIHRvIHRha2UgbW9kZSBhcmd1bWVudAogIEFSTTogdHJ1c3RlZF9mb3VuZGF0 aW9uczogUHJvdmlkZSBpbmZvcm1hdGlvbiBhYm91dCB3aGV0aGVyIGZpcm13YXJlCiAgICBpcyBy ZWdpc3RlcmVkCiAgQVJNOiB0ZWdyYTogU2V0IHVwIEwyIGNhY2hlIHVzaW5nIFRydXN0ZWQgRm91 bmRhdGlvbnMgZmlybXdhcmUKICBBUk06IHRlZ3JhOiBEb24ndCBhcHBseSBDUFUgZXJyYXRhcyBp biBpbnNlY3VyZSBtb2RlCiAgQVJNOiB0ZWdyYTogQWx3YXlzIGJvb3QgQ1BVIGluIEFSTS1tb2Rl CiAgQVJNOiB0ZWdyYTogQWRkIGZpcm13YXJlIGNhbGxzIHJlcXVpcmVkIGZvciBzdXNwZW5kLXJl c3VtZSBvbiBUZWdyYTMwCgogYXJjaC9hcm0vZmlybXdhcmUvdHJ1c3RlZF9mb3VuZGF0aW9ucy5j ICAgIHwgNzUgKysrKysrKysrKysrKysrKysrKysrLQogYXJjaC9hcm0vaW5jbHVkZS9hc20vZmly bXdhcmUuaCAgICAgICAgICAgIHwgIDIgKy0KIGFyY2gvYXJtL2luY2x1ZGUvYXNtL3RydXN0ZWRf Zm91bmRhdGlvbnMuaCB8IDIzICsrKysrKysKIGFyY2gvYXJtL21hY2gtdGVncmEvY3B1aWRsZS10 ZWdyYTExNC5jICAgICB8ICAzICstCiBhcmNoL2FybS9tYWNoLXRlZ3JhL3BtLmMgICAgICAgICAg ICAgICAgICAgfCA0OSArKysrKysrKysrKysrKwogYXJjaC9hcm0vbWFjaC10ZWdyYS9yZXNldC1o YW5kbGVyLlMgICAgICAgIHwgNTAgKysrKysrKysrKystLS0tCiBhcmNoL2FybS9tYWNoLXRlZ3Jh L3Jlc2V0LmMgICAgICAgICAgICAgICAgfCAgMyArCiBhcmNoL2FybS9tYWNoLXRlZ3JhL3Jlc2V0 LmggICAgICAgICAgICAgICAgfCAgOSArKy0KIGFyY2gvYXJtL21hY2gtdGVncmEvc2xlZXAtdGVn cmEyMC5TICAgICAgICB8ICA0ICsrCiBhcmNoL2FybS9tYWNoLXRlZ3JhL3NsZWVwLlMgICAgICAg ICAgICAgICAgfCAxNCArKy0tCiBhcmNoL2FybS9tYWNoLXRlZ3JhL3RlZ3JhLmMgICAgICAgICAg ICAgICAgfCAgMiArCiAxMSBmaWxlcyBjaGFuZ2VkLCAyMTIgaW5zZXJ0aW9ucygrKSwgMjIgZGVs ZXRpb25zKC0pCgotLSAKMi4yMC4xCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtl cm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxt YW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=