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=-11.1 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,NICE_REPLY_A, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=unavailable 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 E6BC8C2D0A3 for ; Sun, 1 Nov 2020 15:24:18 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id A0A7022242 for ; Sun, 1 Nov 2020 15:24:18 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="TZsCakYK" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726839AbgKAPYO (ORCPT ); Sun, 1 Nov 2020 10:24:14 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33646 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726549AbgKAPYO (ORCPT ); Sun, 1 Nov 2020 10:24:14 -0500 Received: from mail-lj1-x241.google.com (mail-lj1-x241.google.com [IPv6:2a00:1450:4864:20::241]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 16C2CC0617A6; Sun, 1 Nov 2020 07:24:14 -0800 (PST) Received: by mail-lj1-x241.google.com with SMTP id m16so12235544ljo.6; Sun, 01 Nov 2020 07:24:14 -0800 (PST) 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=TvSbmYTBbiH/6uQP+ocL/XJvZrWVgoLgTGEXcKMdRKw=; b=TZsCakYKTg1FrKZSl+qwJefjMXzq1vVG0ZESq6jgcr/4B0WepUkCLgNCIT825Cjwqn sN2TNLubmUwOOpeHaxS2Wxr5ISuxvb/BNkkbmzmdGNCCeLgHBEH5/v955E3Jzx5JPlx8 JWM+MvTOeJ+NoAyeYCA/YQ39cN82ngBc1zcVZQpZIqlIhgilmgT9/4cAH1hq7bMU526Q gg9nt1msByT0vADvdhYYKgaL2i+2pYaPtCHC4AH0kcjt6Rcn0R6+hkOC57E4kZd+f1Zp 0PD9+LHvLkidvjJDl2+0A+YPfA/b7sSvJYsRnLKvnqytrAyol9XBixf2WmxSIrzFsRws GqGw== 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=TvSbmYTBbiH/6uQP+ocL/XJvZrWVgoLgTGEXcKMdRKw=; b=A5ftxPhkfabiH4/9K6gYjeUyOhIkEv20KxYtYtkGkoG4aWhvIswpV8b+mnb6jwmSBj 0oqK4Kn57a3Ailuf2TXCgMM6J5johgWGNYJNXVNlURh6g5tWdBtpxXraGPlbJ9zk9jBA QTnD86QoR/0OL4MEOmXdbo0U2VEeaamn669TUdjN2iLGRyq6ocyAD9AiENLo2/FRKfq6 Yl2dgh6rv2FTRCmKGhr32F3O/xyQFW+RhQw1gshjQ3Qzwd/k5ee+rMcW+2w5TKBo+jGV JkDNl5PIsuhx0L11kZW61yn4fZiLrP9kjp/vSm/5ayHULplQv54kZ8PafOdkDAutua7t KejA== X-Gm-Message-State: AOAM5310b3x+FvBqQMqzsqlE57ZMlcKDwhvezjvQKSzNTJlVi/oJfVlz oNy30xngJG6H6ipyOwLpkxuEPVcM5TQ= X-Google-Smtp-Source: ABdhPJxJqsa3z4OBcKgBN7B+2gEVgZQYaZlOk6XiYr6D8zFcMO+Rg/JZv768uPAmCkRM1XwgguwIZw== X-Received: by 2002:a2e:681a:: with SMTP id c26mr5126010lja.56.1604244252401; Sun, 01 Nov 2020 07:24:12 -0800 (PST) Received: from [192.168.2.145] (109-252-193-177.dynamic.spd-mgts.ru. [109.252.193.177]) by smtp.googlemail.com with ESMTPSA id l9sm1778384ljc.86.2020.11.01.07.24.11 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 01 Nov 2020 07:24:11 -0800 (PST) Subject: Re: [PATCH v6 51/52] PM / devfreq: tegra30: Support interconnect and OPPs from device-tree To: cwchoi00@gmail.com Cc: Thierry Reding , Jonathan Hunter , Georgi Djakov , Rob Herring , Michael Turquette , Stephen Boyd , Peter De Schrijver , MyungJoo Ham , Kyungmin Park , Chanwoo Choi , Mikko Perttunen , Viresh Kumar , Peter Geis , Nicolas Chauvet , Krzysztof Kozlowski , linux-tegra@vger.kernel.org, Linux PM list , linux-kernel , dri-devel , devicetree References: <20201025221735.3062-1-digetx@gmail.com> <20201025221735.3062-52-digetx@gmail.com> From: Dmitry Osipenko Message-ID: <961863f7-933d-d455-cd5d-99bab898ee75@gmail.com> Date: Sun, 1 Nov 2020 18:24:11 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-pm@vger.kernel.org 01.11.2020 17:44, Chanwoo Choi пишет: > Hi Dmitry, > > On Mon, Oct 26, 2020 at 7:22 AM Dmitry Osipenko wrote: >> >> This patch moves ACTMON driver away from generating OPP table by itself, >> transitioning it to use the table which comes from device-tree. This >> change breaks compatibility with older device-trees in order to bring >> support for the interconnect framework to the driver. This is a mandatory >> change which needs to be done in order to implement interconnect-based >> memory DVFS. Users of legacy device-trees will get a message telling that >> theirs DT needs to be upgraded. Now ACTMON issues memory bandwidth request >> using dev_pm_opp_set_bw(), instead of driving EMC clock rate directly. >> >> Tested-by: Peter Geis >> Tested-by: Nicolas Chauvet >> Signed-off-by: Dmitry Osipenko >> --- >> drivers/devfreq/tegra30-devfreq.c | 91 ++++++++++++++++--------------- >> 1 file changed, 48 insertions(+), 43 deletions(-) >> >> diff --git a/drivers/devfreq/tegra30-devfreq.c b/drivers/devfreq/tegra30-devfreq.c >> index 3f732ab53573..1b0b91a71886 100644 >> --- a/drivers/devfreq/tegra30-devfreq.c >> +++ b/drivers/devfreq/tegra30-devfreq.c >> @@ -19,6 +19,8 @@ >> #include >> #include >> >> +#include >> + > > This patch touches the OPP. Is it related to this change? Yes, this is needed for the dev_pm_opp_set_supported_hw(). >> #include "governor.h" >> >> #define ACTMON_GLB_STATUS 0x0 >> @@ -155,6 +157,7 @@ struct tegra_devfreq_device { >> >> struct tegra_devfreq { >> struct devfreq *devfreq; >> + struct opp_table *opp_table; >> >> struct reset_control *reset; >> struct clk *clock; >> @@ -612,34 +615,19 @@ static void tegra_actmon_stop(struct tegra_devfreq *tegra) >> static int tegra_devfreq_target(struct device *dev, unsigned long *freq, >> u32 flags) >> { >> - struct tegra_devfreq *tegra = dev_get_drvdata(dev); >> - struct devfreq *devfreq = tegra->devfreq; >> struct dev_pm_opp *opp; >> - unsigned long rate; >> - int err; >> + int ret; >> >> opp = devfreq_recommended_opp(dev, freq, flags); >> if (IS_ERR(opp)) { >> - dev_err(dev, "Failed to find opp for %lu Hz\n", *freq); >> + dev_err(dev, "failed to find opp for %lu Hz\n", *freq); > > You used the 'Failed to' format in almost every error case. > Don't need to change it. > (snip) Good catch, thanks. 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=-10.8 required=3.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED,DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FORGED_FROMDOMAIN, FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, NICE_REPLY_A,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_SANE_1 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 C06F9C2D0A3 for ; Sun, 1 Nov 2020 17:37:37 +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 76489206D5 for ; Sun, 1 Nov 2020 17:37:37 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="TZsCakYK" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 76489206D5 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 89C846EB2A; Sun, 1 Nov 2020 17:36:59 +0000 (UTC) Received: from mail-lj1-x242.google.com (mail-lj1-x242.google.com [IPv6:2a00:1450:4864:20::242]) by gabe.freedesktop.org (Postfix) with ESMTPS id F34A66EABC for ; Sun, 1 Nov 2020 15:24:13 +0000 (UTC) Received: by mail-lj1-x242.google.com with SMTP id o13so3925180ljj.11 for ; Sun, 01 Nov 2020 07:24:13 -0800 (PST) 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=TvSbmYTBbiH/6uQP+ocL/XJvZrWVgoLgTGEXcKMdRKw=; b=TZsCakYKTg1FrKZSl+qwJefjMXzq1vVG0ZESq6jgcr/4B0WepUkCLgNCIT825Cjwqn sN2TNLubmUwOOpeHaxS2Wxr5ISuxvb/BNkkbmzmdGNCCeLgHBEH5/v955E3Jzx5JPlx8 JWM+MvTOeJ+NoAyeYCA/YQ39cN82ngBc1zcVZQpZIqlIhgilmgT9/4cAH1hq7bMU526Q gg9nt1msByT0vADvdhYYKgaL2i+2pYaPtCHC4AH0kcjt6Rcn0R6+hkOC57E4kZd+f1Zp 0PD9+LHvLkidvjJDl2+0A+YPfA/b7sSvJYsRnLKvnqytrAyol9XBixf2WmxSIrzFsRws GqGw== 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=TvSbmYTBbiH/6uQP+ocL/XJvZrWVgoLgTGEXcKMdRKw=; b=Lg72ZtGVSHwIC0YUst/6XcaJhfNDiS1WXr1dMX0aYJuxOz7OnwXDzFlme1AJqvpZL1 LyzM6BHSoyIdx+k7xsZ5YEkB5gr8eprbaxTD1q7qElYmXxZ5GnhCY5r7WtLnZ0FYbIqK Yke+hjthZNtglxkEWKZBjXKAMpiEYpX2cL9U4tBdpwfQWV7UIdCO2uX7GHJkCk0KZCsZ cODoTa9bmWxIRRK/1ctP0bWkOQ8XL56ObRU+Amf2zzQDqtJIowwW8EqsDNIi+EvAuKh0 Jmc7YTQEjwLxDSVntJ1xs1KmJBmMijyg/rZA/xCw7j/fVAErBxAwkBCP5HzFfLlmhZv3 YFyw== X-Gm-Message-State: AOAM531SvRNvW4hdRw2B03jBaaZNgnSQqFfiLyOjt8RRWN2gyzC1oH8a 1GSR2ZXByC+3t7jXPTdgh0M= X-Google-Smtp-Source: ABdhPJxJqsa3z4OBcKgBN7B+2gEVgZQYaZlOk6XiYr6D8zFcMO+Rg/JZv768uPAmCkRM1XwgguwIZw== X-Received: by 2002:a2e:681a:: with SMTP id c26mr5126010lja.56.1604244252401; Sun, 01 Nov 2020 07:24:12 -0800 (PST) Received: from [192.168.2.145] (109-252-193-177.dynamic.spd-mgts.ru. [109.252.193.177]) by smtp.googlemail.com with ESMTPSA id l9sm1778384ljc.86.2020.11.01.07.24.11 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 01 Nov 2020 07:24:11 -0800 (PST) Subject: Re: [PATCH v6 51/52] PM / devfreq: tegra30: Support interconnect and OPPs from device-tree To: cwchoi00@gmail.com References: <20201025221735.3062-1-digetx@gmail.com> <20201025221735.3062-52-digetx@gmail.com> From: Dmitry Osipenko Message-ID: <961863f7-933d-d455-cd5d-99bab898ee75@gmail.com> Date: Sun, 1 Nov 2020 18:24:11 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 MIME-Version: 1.0 In-Reply-To: Content-Language: en-US X-Mailman-Approved-At: Sun, 01 Nov 2020 17:36:56 +0000 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter De Schrijver , Krzysztof Kozlowski , Mikko Perttunen , dri-devel , Nicolas Chauvet , Stephen Boyd , Viresh Kumar , Michael Turquette , Linux PM list , linux-kernel , Rob Herring , Jonathan Hunter , Chanwoo Choi , Kyungmin Park , Thierry Reding , MyungJoo Ham , Peter Geis , linux-tegra@vger.kernel.org, Georgi Djakov , devicetree Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" MDEuMTEuMjAyMCAxNzo0NCwgQ2hhbndvbyBDaG9pINC/0LjRiNC10YI6Cj4gSGkgRG1pdHJ5LAo+ IAo+IE9uIE1vbiwgT2N0IDI2LCAyMDIwIGF0IDc6MjIgQU0gRG1pdHJ5IE9zaXBlbmtvIDxkaWdl dHhAZ21haWwuY29tPiB3cm90ZToKPj4KPj4gVGhpcyBwYXRjaCBtb3ZlcyBBQ1RNT04gZHJpdmVy IGF3YXkgZnJvbSBnZW5lcmF0aW5nIE9QUCB0YWJsZSBieSBpdHNlbGYsCj4+IHRyYW5zaXRpb25p bmcgaXQgdG8gdXNlIHRoZSB0YWJsZSB3aGljaCBjb21lcyBmcm9tIGRldmljZS10cmVlLiBUaGlz Cj4+IGNoYW5nZSBicmVha3MgY29tcGF0aWJpbGl0eSB3aXRoIG9sZGVyIGRldmljZS10cmVlcyBp biBvcmRlciB0byBicmluZwo+PiBzdXBwb3J0IGZvciB0aGUgaW50ZXJjb25uZWN0IGZyYW1ld29y ayB0byB0aGUgZHJpdmVyLiBUaGlzIGlzIGEgbWFuZGF0b3J5Cj4+IGNoYW5nZSB3aGljaCBuZWVk cyB0byBiZSBkb25lIGluIG9yZGVyIHRvIGltcGxlbWVudCBpbnRlcmNvbm5lY3QtYmFzZWQKPj4g bWVtb3J5IERWRlMuIFVzZXJzIG9mIGxlZ2FjeSBkZXZpY2UtdHJlZXMgd2lsbCBnZXQgYSBtZXNz YWdlIHRlbGxpbmcgdGhhdAo+PiB0aGVpcnMgRFQgbmVlZHMgdG8gYmUgdXBncmFkZWQuIE5vdyBB Q1RNT04gaXNzdWVzIG1lbW9yeSBiYW5kd2lkdGggcmVxdWVzdAo+PiB1c2luZyBkZXZfcG1fb3Bw X3NldF9idygpLCBpbnN0ZWFkIG9mIGRyaXZpbmcgRU1DIGNsb2NrIHJhdGUgZGlyZWN0bHkuCj4+ Cj4+IFRlc3RlZC1ieTogUGV0ZXIgR2VpcyA8cGd3aXBlb3V0QGdtYWlsLmNvbT4KPj4gVGVzdGVk LWJ5OiBOaWNvbGFzIENoYXV2ZXQgPGt3aXphcnRAZ21haWwuY29tPgo+PiBTaWduZWQtb2ZmLWJ5 OiBEbWl0cnkgT3NpcGVua28gPGRpZ2V0eEBnbWFpbC5jb20+Cj4+IC0tLQo+PiAgZHJpdmVycy9k ZXZmcmVxL3RlZ3JhMzAtZGV2ZnJlcS5jIHwgOTEgKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0t LS0tLQo+PiAgMSBmaWxlIGNoYW5nZWQsIDQ4IGluc2VydGlvbnMoKyksIDQzIGRlbGV0aW9ucygt KQo+Pgo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9kZXZmcmVxL3RlZ3JhMzAtZGV2ZnJlcS5jIGIv ZHJpdmVycy9kZXZmcmVxL3RlZ3JhMzAtZGV2ZnJlcS5jCj4+IGluZGV4IDNmNzMyYWI1MzU3My4u MWIwYjkxYTcxODg2IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2RldmZyZXEvdGVncmEzMC1kZXZm cmVxLmMKPj4gKysrIGIvZHJpdmVycy9kZXZmcmVxL3RlZ3JhMzAtZGV2ZnJlcS5jCj4+IEBAIC0x OSw2ICsxOSw4IEBACj4+ICAjaW5jbHVkZSA8bGludXgvcmVzZXQuaD4KPj4gICNpbmNsdWRlIDxs aW51eC93b3JrcXVldWUuaD4KPj4KPj4gKyNpbmNsdWRlIDxzb2MvdGVncmEvZnVzZS5oPgo+PiAr Cj4gCj4gVGhpcyBwYXRjaCB0b3VjaGVzIHRoZSBPUFAuIElzIGl0IHJlbGF0ZWQgdG8gdGhpcyBj aGFuZ2U/CgpZZXMsIHRoaXMgaXMgbmVlZGVkIGZvciB0aGUgZGV2X3BtX29wcF9zZXRfc3VwcG9y dGVkX2h3KCkuCgo+PiAgI2luY2x1ZGUgImdvdmVybm9yLmgiCj4+Cj4+ICAjZGVmaW5lIEFDVE1P Tl9HTEJfU1RBVFVTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAKPj4g QEAgLTE1NSw2ICsxNTcsNyBAQCBzdHJ1Y3QgdGVncmFfZGV2ZnJlcV9kZXZpY2Ugewo+Pgo+PiAg c3RydWN0IHRlZ3JhX2RldmZyZXEgewo+PiAgICAgICAgIHN0cnVjdCBkZXZmcmVxICAgICAgICAg ICpkZXZmcmVxOwo+PiArICAgICAgIHN0cnVjdCBvcHBfdGFibGUgICAgICAgICpvcHBfdGFibGU7 Cj4+Cj4+ICAgICAgICAgc3RydWN0IHJlc2V0X2NvbnRyb2wgICAgKnJlc2V0Owo+PiAgICAgICAg IHN0cnVjdCBjbGsgICAgICAgICAgICAgICpjbG9jazsKPj4gQEAgLTYxMiwzNCArNjE1LDE5IEBA IHN0YXRpYyB2b2lkIHRlZ3JhX2FjdG1vbl9zdG9wKHN0cnVjdCB0ZWdyYV9kZXZmcmVxICp0ZWdy YSkKPj4gIHN0YXRpYyBpbnQgdGVncmFfZGV2ZnJlcV90YXJnZXQoc3RydWN0IGRldmljZSAqZGV2 LCB1bnNpZ25lZCBsb25nICpmcmVxLAo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHUzMiBmbGFncykKPj4gIHsKPj4gLSAgICAgICBzdHJ1Y3QgdGVncmFfZGV2ZnJlcSAqdGVncmEg PSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsKPj4gLSAgICAgICBzdHJ1Y3QgZGV2ZnJlcSAqZGV2ZnJl cSA9IHRlZ3JhLT5kZXZmcmVxOwo+PiAgICAgICAgIHN0cnVjdCBkZXZfcG1fb3BwICpvcHA7Cj4+ IC0gICAgICAgdW5zaWduZWQgbG9uZyByYXRlOwo+PiAtICAgICAgIGludCBlcnI7Cj4+ICsgICAg ICAgaW50IHJldDsKPj4KPj4gICAgICAgICBvcHAgPSBkZXZmcmVxX3JlY29tbWVuZGVkX29wcChk ZXYsIGZyZXEsIGZsYWdzKTsKPj4gICAgICAgICBpZiAoSVNfRVJSKG9wcCkpIHsKPj4gLSAgICAg ICAgICAgICAgIGRldl9lcnIoZGV2LCAiRmFpbGVkIHRvIGZpbmQgb3BwIGZvciAlbHUgSHpcbiIs ICpmcmVxKTsKPj4gKyAgICAgICAgICAgICAgIGRldl9lcnIoZGV2LCAiZmFpbGVkIHRvIGZpbmQg b3BwIGZvciAlbHUgSHpcbiIsICpmcmVxKTsKPiAKPiBZb3UgdXNlZCB0aGUgJ0ZhaWxlZCB0bycg Zm9ybWF0IGluIGFsbW9zdCBldmVyeSBlcnJvciBjYXNlLgo+IERvbid0IG5lZWQgdG8gY2hhbmdl IGl0Lgo+IChzbmlwKQoKR29vZCBjYXRjaCwgdGhhbmtzLgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZl bEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9kcmktZGV2ZWwK