Received: by 2002:a05:6358:111d:b0:dc:6189:e246 with SMTP id f29csp2344287rwi; Thu, 3 Nov 2022 16:05:44 -0700 (PDT) X-Google-Smtp-Source: AMsMyM7jX92hOkVSeBuJbTE1EeiFFsK5G2oa7eHZxiMLvysYv5OfgUAukFxx/FjwcNlPNGupmy0T X-Received: by 2002:a17:906:db0a:b0:781:f24:a782 with SMTP id xj10-20020a170906db0a00b007810f24a782mr31886514ejb.399.1667516744209; Thu, 03 Nov 2022 16:05:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1667516744; cv=none; d=google.com; s=arc-20160816; b=hJSG1rzwxCpML2kjt7OUhFBTEbbMwYivhuuF9FR0k3oOk6wVIyQ2S6Urfw+aK/g4Uh xVsupmwqyDzK/PlrYZpNtfWWxqlFSUlNAH4RQaNDvS0QymtIWlXROxgkiBiKhPBUY7CV g5z7VlrB6muo0nOU3Gbmwh/32M/H6H4bnWVS35Um2ESiU3FBUxkzuCUL2jK/PIZNNJNA JBBCwTCR+tAlmXeLKxOiEs+v7vFm5g+NSNlhz2WN6bQMmSovGgd+aHnQQ/tjTAovGd+r xpcgniQGGSH3D8j8DyIBWFzYdy/tvcM/VqJcHbLSnt7Nj9mkqTXAwoIMcevmAQWvTprI jsMA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:in-reply-to:from :content-language:references:cc:to:subject:user-agent:mime-version :date:message-id:dkim-signature; bh=DglF2gboCEQTQgS/XPKf71EI1gzkhiZkOLpFwA4VkEw=; b=xFA8Gc9rXXxL11duWK9gW0dxGnVE2LRfxbg3PjK2As5f39lErtNQNYmvZje1TvIVZ8 mFVd5HEvwf8Ue0CCKerAXj3WUPa/7NESvuj3x3DcZ2rw9F+NK8phI6tIVtNafmp5Wjwn pjs+QFhlrSSD6LIknfm20n69QUsJmqI2syJym/6bIHzQzME+EjZsa0cQpdaFc7kXQtbP i8jPJvK762qtURrSStvHzhtbhpRTz+XfiV79hZam6BIUJvZT1fSnTDa46U/EP66ZUJ5K ruL+7JlTD4hFmIU4jZcNlgGJXi8wCkbLHLViztdjcxJ5Gw3qRVQeTKOFYm/ygJVqGTvR 5NcA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@collabora.com header.s=mail header.b=gfAzxu1N; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=collabora.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id y14-20020a17090668ce00b0078c25fb3842si2212753ejr.370.2022.11.03.16.05.16; Thu, 03 Nov 2022 16:05:44 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@collabora.com header.s=mail header.b=gfAzxu1N; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=collabora.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231663AbiKCVoZ (ORCPT + 97 others); Thu, 3 Nov 2022 17:44:25 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54974 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229487AbiKCVoX (ORCPT ); Thu, 3 Nov 2022 17:44:23 -0400 Received: from madras.collabora.co.uk (madras.collabora.co.uk [IPv6:2a00:1098:0:82:1000:25:2eeb:e5ab]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 10AB320187; Thu, 3 Nov 2022 14:44:22 -0700 (PDT) Received: from [192.168.2.125] (unknown [109.252.117.140]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: dmitry.osipenko) by madras.collabora.co.uk (Postfix) with ESMTPSA id 7D6846602962; Thu, 3 Nov 2022 21:44:19 +0000 (GMT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1667511860; bh=pPa/YSAVPL1N6jGFwvkkOusm5GGYIeJDDbcOgexGCEk=; h=Date:Subject:To:Cc:References:From:In-Reply-To:From; b=gfAzxu1Nz6i6XLCESRGtK2/omO1gKkqJpeReusnIZTkacUXJbT8AWmAW1zrBlZBbq XsVuStpH7qS52LB7O+woOgODc/cDLFHtXMCVQ972MOz4s3K+HtVj2JB1iWeM5ni117 eisa1WIJ+MGtEJ4AN/LqS1lX+KXUTc13WIAvQv6z0WUadrQD0V4eATUBRnhlWkNUVA 4Cw8SzE0GqiZGYo0ZcDX+Q7zTXX0syCUhnu/TQKKCYNXGuuDmzLsNHZKlC+McxHYyf ajSdKptZHXMKZwzLceUIvLl2ELT0nlq9R202ZysmvrqlxKfXESJBOCQVDHeR7yKA4e pBS8bQ9N34QUw== Message-ID: <0e002130-868e-ca51-a1dd-091c269dba5d@collabora.com> Date: Fri, 4 Nov 2022 00:44:16 +0300 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.3.1 Subject: Re: [PATCH] clk: tegra: fix HOST1X clock divider on Tegra20 and Tegra30 To: Luca Ceresoli Cc: linux-tegra@vger.kernel.org, Peter De Schrijver , Prashant Gaikwad , Michael Turquette , Stephen Boyd , Thierry Reding , Jonathan Hunter , linux-clk@vger.kernel.org, linux-kernel@vger.kernel.org, Thomas Petazzoni , stable@vger.kernel.org, Ben Dooks References: <20221028074826.2317640-1-luca.ceresoli@bootlin.com> <603a0227-7d25-b9da-6dc3-fa9fe1b951e7@collabora.com> <20221102093255.0b5ba7d6@booty> Content-Language: en-US From: Dmitry Osipenko In-Reply-To: <20221102093255.0b5ba7d6@booty> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,NICE_REPLY_A,SPF_HELO_NONE, SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 11/2/22 11:32, Luca Ceresoli wrote: > Hello Dmitry, > > On Mon, 31 Oct 2022 03:34:07 +0300 > Dmitry Osipenko wrote: > >> On 10/28/22 10:48, luca.ceresoli@bootlin.com wrote: >>> From: Luca Ceresoli >>> >>> On Tegra20 and Tegra30 the HOST1X clock is a fractional clock divider with >>> 7 integer bits + 1 decimal bit. This has been verified on both >>> documentation and real hardware for Tegra20 an on the documentation I was >>> able to find for Tegra30. >>> >>> However in the kernel code this clock is declared as an integer divider. A >>> consequence of this is that requesting 144 MHz for HOST1X which is fed by >>> pll_p running at 216 MHz would result in 108 MHz (216 / 2) instead of 144 >>> MHz (216 / 1.5). >>> >>> Fix by replacing the INT() macro with the MUX() macro which, despite the >>> name, defines a fractional divider. The only difference between the two >>> macros is the former does not have the TEGRA_DIVIDER_INT flag. >>> >>> Also move the line together with the other MUX*() ones to keep the existing >>> file organization. >>> >>> Fixes: 76ebc134d45d ("clk: tegra: move periph clocks to common file") >>> Cc: stable@vger.kernel.org >>> Cc: Peter De Schrijver >>> Signed-off-by: Luca Ceresoli >>> --- >>> drivers/clk/tegra/clk-tegra-periph.c | 2 +- >>> 1 file changed, 1 insertion(+), 1 deletion(-) >>> >>> diff --git a/drivers/clk/tegra/clk-tegra-periph.c b/drivers/clk/tegra/clk-tegra-periph.c >>> index 4dcf7f7cb8a0..806d835ca0d2 100644 >>> --- a/drivers/clk/tegra/clk-tegra-periph.c >>> +++ b/drivers/clk/tegra/clk-tegra-periph.c >>> @@ -615,7 +615,6 @@ static struct tegra_periph_init_data periph_clks[] = { >>> INT("vde", mux_pllp_pllc_pllm_clkm, CLK_SOURCE_VDE, 61, 0, tegra_clk_vde), >>> INT("vi", mux_pllm_pllc_pllp_plla, CLK_SOURCE_VI, 20, 0, tegra_clk_vi), >>> INT("epp", mux_pllm_pllc_pllp_plla, CLK_SOURCE_EPP, 19, 0, tegra_clk_epp), >>> - INT("host1x", mux_pllm_pllc_pllp_plla, CLK_SOURCE_HOST1X, 28, 0, tegra_clk_host1x), >>> INT("mpe", mux_pllm_pllc_pllp_plla, CLK_SOURCE_MPE, 60, 0, tegra_clk_mpe), >>> INT("2d", mux_pllm_pllc_pllp_plla, CLK_SOURCE_2D, 21, 0, tegra_clk_gr2d), >>> INT("3d", mux_pllm_pllc_pllp_plla, CLK_SOURCE_3D, 24, 0, tegra_clk_gr3d), >>> @@ -664,6 +663,7 @@ static struct tegra_periph_init_data periph_clks[] = { >>> MUX("owr", mux_pllp_pllc_clkm, CLK_SOURCE_OWR, 71, TEGRA_PERIPH_ON_APB, tegra_clk_owr_8), >>> MUX("nor", mux_pllp_pllc_pllm_clkm, CLK_SOURCE_NOR, 42, 0, tegra_clk_nor), >>> MUX("mipi", mux_pllp_pllc_pllm_clkm, CLK_SOURCE_MIPI, 50, TEGRA_PERIPH_ON_APB, tegra_clk_mipi), >>> + MUX("host1x", mux_pllm_pllc_pllp_plla, CLK_SOURCE_HOST1X, 28, 0, tegra_clk_host1x), >>> MUX("vi_sensor", mux_pllm_pllc_pllp_plla, CLK_SOURCE_VI_SENSOR, 20, TEGRA_PERIPH_NO_RESET, tegra_clk_vi_sensor), >>> MUX("vi_sensor", mux_pllc_pllp_plla, CLK_SOURCE_VI_SENSOR, 20, TEGRA_PERIPH_NO_RESET, tegra_clk_vi_sensor_9), >>> MUX("cilab", mux_pllp_pllc_clkm, CLK_SOURCE_CILAB, 144, 0, tegra_clk_cilab), >> >> This was attempted in the past >> https://lore.kernel.org/all/20180723085010.GK1636@tbergstrom-lnx.Nvidia.com/ >> >> I assume here you're also porting the downstream patches to upstream. >> This one is too questionable. The host1x clock shouldn't affect overall >> performance to begin with. It doesn't make sense to use fractional clock >> just for getting extra KHz. > > Thank you for the review and for the pointer! > > Indeed I'm not sure this patch brings an actual improvement to my use > case, however I reached it by trying to replicate the configuration on > a known-working kernel 3.1, which uses a 1.5 divider. This seems to be > the same reason that led to the 2018 patch that also got rejected. > > I'll be OK with dropping this patch after I have a 100% working setup > with an integer divider, which is very likely given your reply. But it > took time before I found the root cause of this issue, and I would like > to avoid other people waste time in the future, so what about adding a > comment there? > > What about: > > /* > * The host1x clock shouldn't affect overall performance. It doesn't > * make sense to use fractional clock just for getting extra KHz, so > * let's pretend it's an integer divider > */ If host1x isn't the only clock like that, then comment shouldn't be directed to host1x. Have you checked other clocks? I'm curious who made that change originally in your downstream, was it coming from NVIDIA? -- Best regards, Dmitry