From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dmitry Osipenko Subject: Re: [PATCH v6 09/14] memory: tegra: Add EMC scaling support code for Tegra210 Date: Fri, 10 Apr 2020 02:56:53 +0300 Message-ID: <3e518dfa-cb3d-e2ce-a9b8-5e143e02fc61@gmail.com> References: <20200409175238.3586487-1-thierry.reding@gmail.com> <20200409175238.3586487-10-thierry.reding@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Return-path: In-Reply-To: <20200409175238.3586487-10-thierry.reding-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> Content-Language: en-US Sender: linux-tegra-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org To: Thierry Reding , Rob Herring Cc: Jon Hunter , Michael Turquette , Stephen Boyd , Joseph Lo , linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-clk-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org List-Id: linux-tegra@vger.kernel.org 09.04.2020 20:52, Thierry Reding пишет: ... > +#define CLK_RST_CONTROLLER_CLK_SOURCE_EMC 0x19c ... > +#define CLK_RST_CONTROLLER_CLK_SOURCE_EMC_DLL 0x664 I'd suggest to double check all the macros and remove everything unused, to not pollute the code. ... > +#define TRIM_REG(chan, rank, reg, byte) \ > + (((EMC_PMACRO_OB_DDLL_LONG_DQ_RANK ## rank ## _ ## reg ## \ > + _OB_DDLL_LONG_DQ_RANK ## rank ## _BYTE ## byte ## _MASK & \ > + next->trim_regs[EMC_PMACRO_OB_DDLL_LONG_DQ_RANK ## \ > + rank ## _ ## reg ## _INDEX]) >> \ > + EMC_PMACRO_OB_DDLL_LONG_DQ_RANK ## rank ## _ ## reg ## \ > + _OB_DDLL_LONG_DQ_RANK ## rank ## _BYTE ## byte ## _SHIFT) \ > + + \ > + (((EMC_DATA_BRLSHFT_ ## rank ## _RANK ## rank ## _BYTE ## \ > + byte ## _DATA_BRLSHFT_MASK & \ > + next->trim_perch_regs[EMC ## chan ## \ > + _EMC_DATA_BRLSHFT_ ## rank ## _INDEX]) >> \ > + EMC_DATA_BRLSHFT_ ## rank ## _RANK ## rank ## _BYTE ## \ > + byte ## _DATA_BRLSHFT_SHIFT) * 64)) > + > +#define CALC_TEMP(rank, reg, byte1, byte2, n) \ > + (((new[n] << EMC_PMACRO_OB_DDLL_LONG_DQ_RANK ## rank ## _ ## \ > + reg ## _OB_DDLL_LONG_DQ_RANK ## rank ## _BYTE ## byte1 ## _SHIFT) & \ > + EMC_PMACRO_OB_DDLL_LONG_DQ_RANK ## rank ## _ ## reg ## \ > + _OB_DDLL_LONG_DQ_RANK ## rank ## _BYTE ## byte1 ## _MASK) \ > + | \ > + ((new[n + 1] << EMC_PMACRO_OB_DDLL_LONG_DQ_RANK ## rank ## _ ##\ > + reg ## _OB_DDLL_LONG_DQ_RANK ## rank ## _BYTE ## byte2 ## _SHIFT) & \ > + EMC_PMACRO_OB_DDLL_LONG_DQ_RANK ## rank ## _ ## reg ## \ > + _OB_DDLL_LONG_DQ_RANK ## rank ## _BYTE ## byte2 ## _MASK)) My eyes.. :P 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=-1.3 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, UPPERCASE_50_75,USER_AGENT_SANE_1 autolearn=no 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 E62E0C2BB85 for ; Thu, 9 Apr 2020 23:56:59 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id BD5F420757 for ; Thu, 9 Apr 2020 23:56:59 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="ZGFleZwj" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726827AbgDIX46 (ORCPT ); Thu, 9 Apr 2020 19:56:58 -0400 Received: from mail-lf1-f67.google.com ([209.85.167.67]:41256 "EHLO mail-lf1-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726779AbgDIX46 (ORCPT ); Thu, 9 Apr 2020 19:56:58 -0400 Received: by mail-lf1-f67.google.com with SMTP id z23so200714lfh.8; Thu, 09 Apr 2020 16:56:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=h7ou2+MWS5yebpK+PkJaL1qSzOXz/nH64pUokezkgN0=; b=ZGFleZwjigSbIXhSeJj/RBOKq1ORM7YyqiRg8grGG6Po3qc4jpwEaMak9ZRmwk5wgN WQsVxyJRGFydj9/1SpgNvPKwTWBHH1DEl36qBoV7xT2CEf54yhW1pnsXZ1UVO3dqjbkM zyUcsUE7ua7lUZVMlhyOuRctiGCtcx7Xim3Yhv6JH0uKTJCfhX9G3UyieZDK5Tj1YlaK r86f6QFFQZ9pCkzdHPTWxxRGZ5LKzctKjCaXbzDkhzv22N+HJSIPm4EsSN+yjkEFf6Af 8APR0MGmRFSoptFGAFCozmY3c4WBszAEVSfZKkAApzaPBRpZ66insE26eSaFkKPdd2m+ NbPg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=h7ou2+MWS5yebpK+PkJaL1qSzOXz/nH64pUokezkgN0=; b=d3rqiFb8pwhmpbtsx17gOxtVd1/wKt924rltDQdp7VxYI7OFgG96BmgWJq2hQf9HkM c5PlMPxig+1FTq8EXy2R8eJwxgsNdLGF2S/1AHkn3gZ51UIcva54+criPNErj9mO+X4R JxmWU0szC+CSoTRk7tyRe1sXmqXGdOFXN9KNGbs4gf1Aorp6avowTiLVk77R7Mot++1q znhReP5O88DswIlzqRVpT4hBGx0pHFKaNRMiCjwQ2mdRe5UnVDlQ/A+V6PKB8wC2VrnW Ezz2LW8nhJH/dGp2aGaX3IER2lQdHEGzpip81GG/2CI1sI2NL4wl2ddgRm3w6v3h++4q lX6g== X-Gm-Message-State: AGi0PuYcneq6vl+rTJde9kt1gltKK7bGCB8kYnPvnfVbEF2K4SE2EMXm heDPKLq2H51V1Dit7VGIwf4= X-Google-Smtp-Source: APiQypJR6KOA3fPvqfWuaqk/S2szvx9gudiDB0qTYW3KcISCqn+kQOJFAM8qa4TSuauFyPNKMPiElg== X-Received: by 2002:a19:5f45:: with SMTP id a5mr1006421lfj.18.1586476614994; Thu, 09 Apr 2020 16:56:54 -0700 (PDT) Received: from [192.168.2.145] (ppp91-78-208-152.pppoe.mtu-net.ru. [91.78.208.152]) by smtp.googlemail.com with ESMTPSA id i25sm131562ljg.82.2020.04.09.16.56.53 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 09 Apr 2020 16:56:54 -0700 (PDT) Subject: Re: [PATCH v6 09/14] memory: tegra: Add EMC scaling support code for Tegra210 To: Thierry Reding , Rob Herring Cc: Jon Hunter , Michael Turquette , Stephen Boyd , Joseph Lo , linux-tegra@vger.kernel.org, devicetree@vger.kernel.org, linux-clk@vger.kernel.org, linux-arm-kernel@lists.infradead.org References: <20200409175238.3586487-1-thierry.reding@gmail.com> <20200409175238.3586487-10-thierry.reding@gmail.com> From: Dmitry Osipenko Message-ID: <3e518dfa-cb3d-e2ce-a9b8-5e143e02fc61@gmail.com> Date: Fri, 10 Apr 2020 02:56:53 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.5.0 MIME-Version: 1.0 In-Reply-To: <20200409175238.3586487-10-thierry.reding@gmail.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 8bit Sender: devicetree-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: devicetree@vger.kernel.org 09.04.2020 20:52, Thierry Reding пишет: ... > +#define CLK_RST_CONTROLLER_CLK_SOURCE_EMC 0x19c ... > +#define CLK_RST_CONTROLLER_CLK_SOURCE_EMC_DLL 0x664 I'd suggest to double check all the macros and remove everything unused, to not pollute the code. ... > +#define TRIM_REG(chan, rank, reg, byte) \ > + (((EMC_PMACRO_OB_DDLL_LONG_DQ_RANK ## rank ## _ ## reg ## \ > + _OB_DDLL_LONG_DQ_RANK ## rank ## _BYTE ## byte ## _MASK & \ > + next->trim_regs[EMC_PMACRO_OB_DDLL_LONG_DQ_RANK ## \ > + rank ## _ ## reg ## _INDEX]) >> \ > + EMC_PMACRO_OB_DDLL_LONG_DQ_RANK ## rank ## _ ## reg ## \ > + _OB_DDLL_LONG_DQ_RANK ## rank ## _BYTE ## byte ## _SHIFT) \ > + + \ > + (((EMC_DATA_BRLSHFT_ ## rank ## _RANK ## rank ## _BYTE ## \ > + byte ## _DATA_BRLSHFT_MASK & \ > + next->trim_perch_regs[EMC ## chan ## \ > + _EMC_DATA_BRLSHFT_ ## rank ## _INDEX]) >> \ > + EMC_DATA_BRLSHFT_ ## rank ## _RANK ## rank ## _BYTE ## \ > + byte ## _DATA_BRLSHFT_SHIFT) * 64)) > + > +#define CALC_TEMP(rank, reg, byte1, byte2, n) \ > + (((new[n] << EMC_PMACRO_OB_DDLL_LONG_DQ_RANK ## rank ## _ ## \ > + reg ## _OB_DDLL_LONG_DQ_RANK ## rank ## _BYTE ## byte1 ## _SHIFT) & \ > + EMC_PMACRO_OB_DDLL_LONG_DQ_RANK ## rank ## _ ## reg ## \ > + _OB_DDLL_LONG_DQ_RANK ## rank ## _BYTE ## byte1 ## _MASK) \ > + | \ > + ((new[n + 1] << EMC_PMACRO_OB_DDLL_LONG_DQ_RANK ## rank ## _ ##\ > + reg ## _OB_DDLL_LONG_DQ_RANK ## rank ## _BYTE ## byte2 ## _SHIFT) & \ > + EMC_PMACRO_OB_DDLL_LONG_DQ_RANK ## rank ## _ ## reg ## \ > + _OB_DDLL_LONG_DQ_RANK ## rank ## _BYTE ## byte2 ## _MASK)) My eyes.. :P 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=-1.2 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_HELO_NONE,SPF_PASS, UPPERCASE_50_75,USER_AGENT_SANE_1 autolearn=no 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 5AE24C2BA19 for ; Thu, 9 Apr 2020 23:57:35 +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 28E3D206A1 for ; Thu, 9 Apr 2020 23:57:35 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="hCLE3xEW"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="ZGFleZwj" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 28E3D206A1 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:In-Reply-To:MIME-Version:Date: Message-ID:From:References:To:Subject:Reply-To:Content-ID:Content-Description :Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=xV8W9V04X0AwgGXmoAJAxANzvTKnyAhU+8n7hWotAyo=; b=hCLE3xEWQNoCt+ wqOLRpVK6NNNplS+tf4pHVD3+ui++0AwHV/OHL1/TeL5Ci1gfQMWHNyc13jI6RbvcnsZsaFSl0bzz krGQ4ayRmGFWyPWWO2XhFVXIsmfKNZRwI3ey+qBkWdJN6Q1M9NZioIU8Obb5FULfzUUjr/p4FlheY Im1HyfYbNH3hYmqUdIavVz2fXd90HAy0R0WSgv7keoNrQWFmkyqkgixmKBSMYZdYQ30d/zhhSn0UX NQtZphka5NdE34MCGX6slJwe1vwxLSKfIivkR5eBhVOAfwz2b3TjHDYbDEPfie9Gu0g2lAO6A2NHS Z9hCH1Clrq1mC7qsg+Jg==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jMh38-0007jE-6e; Thu, 09 Apr 2020 23:57:34 +0000 Received: from mail-lf1-x142.google.com ([2a00:1450:4864:20::142]) by bombadil.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jMh2W-0007aj-S3 for linux-arm-kernel@lists.infradead.org; Thu, 09 Apr 2020 23:57:12 +0000 Received: by mail-lf1-x142.google.com with SMTP id r17so220323lff.2 for ; Thu, 09 Apr 2020 16:56:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-language:content-transfer-encoding; bh=h7ou2+MWS5yebpK+PkJaL1qSzOXz/nH64pUokezkgN0=; b=ZGFleZwjigSbIXhSeJj/RBOKq1ORM7YyqiRg8grGG6Po3qc4jpwEaMak9ZRmwk5wgN WQsVxyJRGFydj9/1SpgNvPKwTWBHH1DEl36qBoV7xT2CEf54yhW1pnsXZ1UVO3dqjbkM zyUcsUE7ua7lUZVMlhyOuRctiGCtcx7Xim3Yhv6JH0uKTJCfhX9G3UyieZDK5Tj1YlaK r86f6QFFQZ9pCkzdHPTWxxRGZ5LKzctKjCaXbzDkhzv22N+HJSIPm4EsSN+yjkEFf6Af 8APR0MGmRFSoptFGAFCozmY3c4WBszAEVSfZKkAApzaPBRpZ66insE26eSaFkKPdd2m+ NbPg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=h7ou2+MWS5yebpK+PkJaL1qSzOXz/nH64pUokezkgN0=; b=cEPLRIqwZvYcBiKT1CB1so/B7lC+VOw2QLPqxd81OGqQzXAHfhziMnRuN34CZMaHxv SyrkHhtLqcIlKrHi+7fvLyzxJwmxeWNDqHvhqzmEUHww7kefLz37X2yfhnBsAW7xcOOi nRHpyhaE1ysYTUZkggKWahiJ2SXsqBA1qKXJr7Z1KRSHcLzt+UUIAHR4n1h6aXbqsrbV yFPomV06Hx61xaPnvNjUTZGhTmggkV8Y1Zp0dDWwJ0q5JNyJq+IHrH+4sHlT7TiKUEC7 cp66/7UhdzxNYvp/YVxna5v7UHWNl2599QhdHlGxz8hSmxJNjjXhJMiNA3PYaPudak91 mcww== X-Gm-Message-State: AGi0PuYIuKhXItZ4oprMsKde+QP7Js6npvs251hx7osqd7a84Izvx3yl qpanbD9/0b41kLGzvgpfk18XVVZB X-Google-Smtp-Source: APiQypJR6KOA3fPvqfWuaqk/S2szvx9gudiDB0qTYW3KcISCqn+kQOJFAM8qa4TSuauFyPNKMPiElg== X-Received: by 2002:a19:5f45:: with SMTP id a5mr1006421lfj.18.1586476614994; Thu, 09 Apr 2020 16:56:54 -0700 (PDT) Received: from [192.168.2.145] (ppp91-78-208-152.pppoe.mtu-net.ru. [91.78.208.152]) by smtp.googlemail.com with ESMTPSA id i25sm131562ljg.82.2020.04.09.16.56.53 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 09 Apr 2020 16:56:54 -0700 (PDT) Subject: Re: [PATCH v6 09/14] memory: tegra: Add EMC scaling support code for Tegra210 To: Thierry Reding , Rob Herring References: <20200409175238.3586487-1-thierry.reding@gmail.com> <20200409175238.3586487-10-thierry.reding@gmail.com> From: Dmitry Osipenko Message-ID: <3e518dfa-cb3d-e2ce-a9b8-5e143e02fc61@gmail.com> Date: Fri, 10 Apr 2020 02:56:53 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.5.0 MIME-Version: 1.0 In-Reply-To: <20200409175238.3586487-10-thierry.reding@gmail.com> Content-Language: en-US X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200409_165659_739934_A79C0F48 X-CRM114-Status: GOOD ( 11.60 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: devicetree@vger.kernel.org, Stephen Boyd , Michael Turquette , Jon Hunter , Joseph Lo , linux-tegra@vger.kernel.org, linux-clk@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 MDkuMDQuMjAyMCAyMDo1MiwgVGhpZXJyeSBSZWRpbmcg0L/QuNGI0LXRgjoKLi4uCj4gKyNkZWZp bmUgQ0xLX1JTVF9DT05UUk9MTEVSX0NMS19TT1VSQ0VfRU1DCQkweDE5YwouLi4KPiArI2RlZmlu ZSBDTEtfUlNUX0NPTlRST0xMRVJfQ0xLX1NPVVJDRV9FTUNfRExMCQkweDY2NAoKSSdkIHN1Z2dl c3QgdG8gZG91YmxlIGNoZWNrIGFsbCB0aGUgbWFjcm9zIGFuZCByZW1vdmUgZXZlcnl0aGluZyB1 bnVzZWQsCnRvIG5vdCBwb2xsdXRlIHRoZSBjb2RlLgoKLi4uCj4gKyNkZWZpbmUgVFJJTV9SRUco Y2hhbiwgcmFuaywgcmVnLCBieXRlKQkJCQkJXAo+ICsJKCgoRU1DX1BNQUNST19PQl9ERExMX0xP TkdfRFFfUkFOSyAjIyByYW5rICMjIF8gIyMgcmVnICMjCVwKPiArCSAgIF9PQl9ERExMX0xPTkdf RFFfUkFOSyAjIyByYW5rICMjIF9CWVRFICMjIGJ5dGUgIyMgX01BU0sgJglcCj4gKwkgICBuZXh0 LT50cmltX3JlZ3NbRU1DX1BNQUNST19PQl9ERExMX0xPTkdfRFFfUkFOSyAjIwkJXAo+ICsJCQkJ IHJhbmsgIyMgXyAjIyByZWcgIyMgX0lOREVYXSkgPj4JXAo+ICsJICBFTUNfUE1BQ1JPX09CX0RE TExfTE9OR19EUV9SQU5LICMjIHJhbmsgIyMgXyAjIyByZWcgIyMJXAo+ICsJICBfT0JfRERMTF9M T05HX0RRX1JBTksgIyMgcmFuayAjIyBfQllURSAjIyBieXRlICMjIF9TSElGVCkJXAo+ICsJICsJ CQkJCQkJCVwKPiArCSAoKChFTUNfREFUQV9CUkxTSEZUXyAjIyByYW5rICMjIF9SQU5LICMjIHJh bmsgIyMgX0JZVEUgIyMJXAo+ICsJICAgIGJ5dGUgIyMgX0RBVEFfQlJMU0hGVF9NQVNLICYJCQkJ XAo+ICsJICAgIG5leHQtPnRyaW1fcGVyY2hfcmVnc1tFTUMgIyMgY2hhbiAjIwkJCVwKPiArCQkJ ICAgICAgX0VNQ19EQVRBX0JSTFNIRlRfICMjIHJhbmsgIyMgX0lOREVYXSkgPj4JXAo+ICsJICAg RU1DX0RBVEFfQlJMU0hGVF8gIyMgcmFuayAjIyBfUkFOSyAjIyByYW5rICMjIF9CWVRFICMjCVwK PiArCSAgIGJ5dGUgIyMgX0RBVEFfQlJMU0hGVF9TSElGVCkgKiA2NCkpCj4gKwo+ICsjZGVmaW5l IENBTENfVEVNUChyYW5rLCByZWcsIGJ5dGUxLCBieXRlMiwgbikJCQkJXAo+ICsJKCgobmV3W25d IDw8IEVNQ19QTUFDUk9fT0JfRERMTF9MT05HX0RRX1JBTksgIyMgcmFuayAjIyBfICMjCVwKPiAr CSAgIHJlZyAjIyBfT0JfRERMTF9MT05HX0RRX1JBTksgIyMgcmFuayAjIyBfQllURSAjIyBieXRl MSAjIyBfU0hJRlQpICYgXAo+ICsJICBFTUNfUE1BQ1JPX09CX0RETExfTE9OR19EUV9SQU5LICMj IHJhbmsgIyMgXyAjIyByZWcgIyMJXAo+ICsJICBfT0JfRERMTF9MT05HX0RRX1JBTksgIyMgcmFu ayAjIyBfQllURSAjIyBieXRlMSAjIyBfTUFTSykJXAo+ICsJIHwJCQkJCQkJCVwKPiArCSAoKG5l d1tuICsgMV0gPDwgRU1DX1BNQUNST19PQl9ERExMX0xPTkdfRFFfUkFOSyAjIyByYW5rICMjIF8g IyNcCj4gKwkgICByZWcgIyMgX09CX0RETExfTE9OR19EUV9SQU5LICMjIHJhbmsgIyMgX0JZVEUg IyMgYnl0ZTIgIyMgX1NISUZUKSAmIFwKPiArCSAgRU1DX1BNQUNST19PQl9ERExMX0xPTkdfRFFf UkFOSyAjIyByYW5rICMjIF8gIyMgcmVnICMjCVwKPiArCSAgX09CX0RETExfTE9OR19EUV9SQU5L ICMjIHJhbmsgIyMgX0JZVEUgIyMgYnl0ZTIgIyMgX01BU0spKQoKTXkgZXllcy4uIDpQCgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2Vy bmVsIG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0 cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVs Cg==