Received: by 2002:a05:6358:3188:b0:123:57c1:9b43 with SMTP id q8csp783080rwd; Wed, 31 May 2023 05:32:42 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ42c/C2jSCGotSF4669ccUx7+d/8jRkZ1u5WELOVBttUAJeTJs6xLuaybVZQUFUpb/RYETA X-Received: by 2002:a05:6a21:1508:b0:10f:8b61:195f with SMTP id nq8-20020a056a21150800b0010f8b61195fmr5672312pzb.46.1685536362505; Wed, 31 May 2023 05:32:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1685536362; cv=none; d=google.com; s=arc-20160816; b=LTK+0+CABub3m0MnHBk/CygdanEsOtS+DTmmcUzMllM3SZc8mUPiLGlFmdXpY/S9hN 78Qa9Lpvxs85f7Tni1phQYW+Rtm7PGKtUFs/DCLwIJf+JNXQAYqnggmByH4VN7laC6V3 ggh9Z3lMLg/oa91IhpTvATT7VQO8yOQTJ9qCKwk02ag3WB2sGYOFRn+bGuIHvHghP0To 7Pltj2bz9Z4+KEqs4fgyDy7zpitkXOBCYzFa2be6VtGAnsfYD9UHPHXKyQFi+OAqI9Oz QmUhuZD3IkbRRWj+E4JkOX8TKp7dBfNzbjJew+kr7pjHqbWGqbt3wSW97oM+n5aVwAmr jBbw== 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 :references:cc:to:content-language:subject:user-agent:mime-version :date:message-id:dkim-signature; bh=ZI9EijwDgNgG5YKZAyyFoow2CWVs6k+f06gFywwNGvo=; b=Iira5rY6RhFBG34N1QVWEsVMolDq3cze8LTg5A0KVmXutksqCRBfMbPCGuinLU18rF +HuPi2DjXEYwdA0SOpfhIeNEBP09xCF2DvngqqztFz1CGjg4rjOB5ykK1MXrMbcHH4F9 VOi8t9pdF4Ju57hV6AYhw1kHDYyWnVLPWM5LiTI7Xi/keLpw8M6KWDvbPBEhq+8yRDPD Y0fzd/Nua2SYtPDfYdZ/XTrDyhxKKxDjgvzXcJbSx1+NyVeTV3WtV6T+obTVJLcE7cBr I5RGGH17OV/HZvRzMsqLNmf0sYpLki5UNmFVz4Qd6EcKnd+2dGOFTnSRCkbbKcDxBNpb f6rg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b="g/9/fqrs"; 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=linaro.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id cx3-20020a17090afd8300b00250db0f5689si846874pjb.179.2023.05.31.05.32.27; Wed, 31 May 2023 05:32:42 -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=@linaro.org header.s=google header.b="g/9/fqrs"; 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=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233071AbjEaMPE (ORCPT + 99 others); Wed, 31 May 2023 08:15:04 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59224 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232014AbjEaMPC (ORCPT ); Wed, 31 May 2023 08:15:02 -0400 Received: from mail-lj1-x230.google.com (mail-lj1-x230.google.com [IPv6:2a00:1450:4864:20::230]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C08FA101 for ; Wed, 31 May 2023 05:14:59 -0700 (PDT) Received: by mail-lj1-x230.google.com with SMTP id 38308e7fff4ca-2af24ee004dso59633351fa.0 for ; Wed, 31 May 2023 05:14:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1685535298; x=1688127298; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=ZI9EijwDgNgG5YKZAyyFoow2CWVs6k+f06gFywwNGvo=; b=g/9/fqrs6GmSpWh/XsyQrFm1pySlpWi/3fdu0YMZC6JqX7az2w11dTVxIDuRXyt1n5 HMmqTqTGXIPzRWkXtKUOWCE3GBwTwcp7EKlydRhMJIFlUpaf7gZpNzWuRjVG/jFRlTof yOIgXTdGcVjdYmLPHt5cWAMZmtUZaSG3ckEl5XWTOTYEdsnaw1iEETU/Q88jMQIcfSHz hOW5ASLuKJ1ibHnTG5sIGDijRiJhCM2URrAsI7W0VSoCncgB4NDI2vnJPESOXr7KPztn xS1B9RwvC5PamqYmzE/H1KxrFiPoQMzFThfFnx5C2I37SIWux04STvthyxoJVNAcbkfS 1Big== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1685535298; x=1688127298; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=ZI9EijwDgNgG5YKZAyyFoow2CWVs6k+f06gFywwNGvo=; b=Z1N4TlR5B1VWp1hqatlHx+b7zFJxWOT2zjo7281vbQFdM3OBItg1Ro7LFaM1k+UE0t DgrdQPvA+Js/nmZEDsfQdsfo+aKbyAdhx84bLYdBFTq+dyH31lnd8fCXwqCNhu4EQyxv 1/nJ/6GQGP2a8GLUJbAo6UgGKvqhBPWTqrcD+ouN11N2hXPuBo0rUnqW1JqAV2i6UXo1 pirei+RFXfaC+sKUvr14Qzki9JtWHqdB6Yo6GlC80hi1u9dqBl8yIlZMYSrRf+RXAZG+ AZXySrjswVblo5ayzQmhsudG3kM+2nsNiuYsX12ldr6zAwluVDWmT+3Q0UzfAMSUt3IH P07g== X-Gm-Message-State: AC+VfDxtEne2YjAzkR1Gx1GaV8qkimCrVDpQ15J3/j7euIxTQZT+Uc+m XE1vy3QwWaT4Mj6sEJtnC3wgkA== X-Received: by 2002:a2e:9b82:0:b0:2b0:2976:172d with SMTP id z2-20020a2e9b82000000b002b02976172dmr2797670lji.9.1685535297960; Wed, 31 May 2023 05:14:57 -0700 (PDT) Received: from [192.168.1.101] (abyj77.neoplus.adsl.tpnet.pl. [83.9.29.77]) by smtp.gmail.com with ESMTPSA id a8-20020a2e9808000000b002ad9f224bfasm3292431ljj.51.2023.05.31.05.14.56 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 31 May 2023 05:14:57 -0700 (PDT) Message-ID: <19abbd36-3d68-bca7-465a-7c084b4e6434@linaro.org> Date: Wed, 31 May 2023 14:14:55 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.11.2 Subject: Re: [PATCH v8 00/18] GMU-less A6xx support (A610, A619_holi) Content-Language: en-US To: Rob Clark , Abhinav Kumar , Dmitry Baryshkov , Sean Paul , David Airlie , Daniel Vetter , Rob Herring , Krzysztof Kozlowski , Bjorn Andersson , Konrad Dybcio , Akhil P Oommen , Conor Dooley Cc: linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Rob Clark , Marijn Suijten , Krzysztof Kozlowski References: <20230223-topic-gmuwrapper-v8-0-69c68206609e@linaro.org> From: Konrad Dybcio In-Reply-To: <20230223-topic-gmuwrapper-v8-0-69c68206609e@linaro.org> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-2.2 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,NICE_REPLY_A,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED 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 29.05.2023 15:52, Konrad Dybcio wrote: > v7 -> v8: > - Fix up resume/suspend (icc now correctly parks to 0, don't abuse > OPP & genpd throughout system-wide suspend) > - Don't handle ebi1_clk separately, the bulk ops handle it just fine > - Rebase on next-20230525 (no meaningful changes) Krzysztof pointed out to me in private that he has previously reviewed the dt-bindings patches, but I managed to drop them by accident.. I'll fix that in the next revision. I'll wait for more comments before resending though. Konrad > > v7: https://lore.kernel.org/linux-arm-msm/20230223-topic-gmuwrapper-v7-0-ecc7aab83556@linaro.org/ > > v6 -> v7: > - Rebase on next-20230519 (A640/650 speedbin merged already) > > - separate out the .get_timestamp cb for gmu wrapper > > - check for gmu presence inside a6xx_llc_slices_(init|destroy) instead > of before calling them > > - use REG_A6XX_RBBM_GPR0_CNTL instead of literal 0x18 > > - move a6xx_bus_clear_pending_transactions to a6xx_gpu, clean it up > and reuse it for gmu wrapper gpus > > - drop clearing RBBM_GBIF (GBIF from GX's POV) as part of draining the > buses, it's not necessary > > - introduce a helper for gpu softreset > > - sw-reset the gmu wrapper GPUS *after* draining GBIF and only reset > it if it's hung > > - reword the commit message in "Remove both GBIF and RBBM GBIF halt > on hw init" and move it before gmu wrapper-specific changes > > - drop set_rate logic from a6xx_pm_suspend as the clock simply gets > disabled and we don't have to worry about scaling problems as OPP > and devfreq take care of that, validated with debugcc > > - drop a level of indentation in _a6xx_check_idle() to hopefully > improve readability > > - check for !a610 instead of gmu_wrapper||a619_holi in sptprac cc > toggling in a6xx_set_hwcg() > > - pick up krzk's rb on bindings > > All external dependencies have been merged since the last revision. > > v6: https://lore.kernel.org/r/20230223-topic-gmuwrapper-v6-0-2034115bb60c@linaro.org > > v5 -> v6: > - Rebase on 8ead96783163 ("drm/msm/gpu: Move BO allocation out of hw_init") > (Add .ucode_load to funcs_gmuwrapper) > - Drop A6[45]0 speedbin deps, merged into msm-next > > Dependencies: > - https://lore.kernel.org/linux-arm-msm/20230330231517.2747024-1-konrad.dybcio@linaro.org/ (to work properly) > > v5: https://lore.kernel.org/linux-arm-msm/20230223-topic-gmuwrapper-v5-0-bf774b9a902a@linaro.org/ > > v4 -> v5: > - Add a newline before the new allOf:if: [3/15] > - Enforce 6 clocks on A619_holi/A610 [2/15] > - Pick up tags > - Improve error handling in a6xx_pm_resume [6/15] > - Add patch [1/15] (fix an existing issue) which can be picked > separately and account for it in [6/15] > - Rebase atop Akhil's CX shutdown patches and incorporate analogous logic > - Fix a regression introduced in v3 that made the fw loader expect > GMU fw on GMU wrapper GPUs > > Dependencies: > - https://lore.kernel.org/linux-arm-msm/20230120172233.1905761-1-konrad.dybcio@linaro.org/ (to apply) > - https://lore.kernel.org/linux-arm-msm/20230330231517.2747024-1-konrad.dybcio@linaro.org/ (to work properly) > > v4: https://lore.kernel.org/r/20230223-topic-gmuwrapper-v4-0-e987eb79d03f@linaro.org > > v3 -> v4: > - Drop the mistakengly-included and wrong A3xx-A5xx bindings changes > - Improve bindings commit messages to better explain what GMU Wrapper is > - Drop the A680 highest bank bit value adjustment patch > - Sort UBWC config variables in a reverse-Christmass-tree fashion [4/14] > - Don't alter any UBWC config values in [4/14] > - Do so for a619_holi in [8/14] > - Rebase on next-20230314 (shouldn't matter at all) > > v3: https://lore.kernel.org/r/20230223-topic-gmuwrapper-v3-0-5be55a336819@linaro.org > > v2 -> v3: > New dependencies: > - https://lore.kernel.org/linux-arm-msm/20230223-topic-opp-v3-0-5f22163cd1df@linaro.org/T/#t > - https://lore.kernel.org/linux-arm-msm/20230120172233.1905761-1-konrad.dybcio@linaro.org/ > > Sidenote: A speedbin rework is in progress, the of_machine_is_compatible > calls in A619_holi are ugly (but well, necessary..) but they'll be > replaced with socid matching in this or the next kernel cycle. > > Due to the new way of identifying GMU wrapper GPUs, configuring 6350 > to use wrapper would cause the wrong fuse values to be checked, but that > will be solved by the conversion + the ultimate goal is to use the GMU > whenever possible with the wrapper left for GMU-less Adrenos and early > bringup debugging of GMU-equipped ones. > > - Ship dt-bindings in this series as we're referencing the compatible now > > - "De-staticize" -> "remove static keyword" [3/15] > > - Track down all the values in [4/15] > > - Add many comments and explanations in [4/15] > > - Fix possible return-before-mutex-unlock [5/15] > > - Explain the GMU wrapper a bit more in the commit msg [5/15] > > - Separate out pm_resume/suspend for GMU-wrapper GPUs to make things > cleaner [5/15] > > - Don't check if `info` exists, it has to at this point [5/15] > > - Assign gpu->info early and clean up following if statements in > a6xx_gpu_init [5/15] > > - Determine whether we use GMU wrapper based on the GMU compatible > instead of a quirk [5/15] > > - Use a struct field to annotate whether we're using gmu wrapper so > that it can be assigned at runtime (turns out a619 holi-ness cannot > be determined by patchid + that will make it easier to test out GMU > GPUs without actually turning on the GMU if anybody wants to do so) > [5/15] > > - Unconditionally hook up gx to the gmu wrapper (otherwise our gpu > will not get power) [5/15] > > - Don't check for gx domain presence in gmu_wrapper paths, it's > guaranteed [5/15] > > - Use opp set rate in the gmuwrapper suspend path [5/15] > > - Call opp functions on the GPU device and not on the DRM device of > mdp4/5/DPU1 half the time (WHOOOOPS!) [5/15] > > - Disable the memory clock in a6xx_pm_suspend instead of enabling it > (moderate oops) [5/15] > > - Call the forgotten clk_bulk_disable_unprepare in a6xx_pm_suspend [5/15] > > - Set rate to FMIN (a6xx really doesn't like rate=0 + that's what > msm-5.x does anyway) before disabling core clock [5/15] > > - pm_runtime_get_sync -> pm_runtime_resume_and_get [5/15] > > - Don't annotate no cached BO support with a quirk, as A619_holi is > merged into the A619 entry in the big const struct - this means > that all GPUs operating in gmu wrapper configuration will be > implicitly treated as if they didn't have this feature [7/15] > > - Drop OPP rate & icc related patches, they're a part of a separate > series now; rebase on it > > - Clean up extra parentheses [8/15] > > - Identify A619_holi by checking the compatible of its GMU instead > of patchlevel [8/15] > > - Drop "Fix up A6XX protected registers" - unnecessary, Rob will add > a comment explaining why > > - Fix existing UBWC values for A680, new patch [10/15] > > - Use adreno_is_aXYZ macros in speedbin matching [13/15] - new patch > > v2: https://lore.kernel.org/linux-arm-msm/20230214173145.2482651-1-konrad.dybcio@linaro.org/ > > v1 -> v2: > - Fix A630 values in [2/14] > - Fix [6/14] for GMU-equipped GPUs > > Link to v1: https://lore.kernel.org/linux-arm-msm/20230126151618.225127-1-konrad.dybcio@linaro.org/ > > This series concludes my couple-weeks-long suffering of figuring out > the ins and outs of the "non-standard" A6xx GPUs which feature no GMU. > > The GMU functionality is essentially emulated by parting out a > "GMU wrapper" region, which is essentially just a register space > within the GPU. It's modeled to be as similar to the actual GMU > as possible while staying as unnecessary as we can make it - there's > no IRQs, communicating with a microcontroller, no RPMh communication > etc. etc. I tried to reuse as much code as possible without making > a mess where every even line is used for GMU and every odd line is > used for GMU wrapper.. > > This series contains: > - plumbing for non-GMU operation, if-ing out GMU calls based on > GMU presence > - GMU wrapper support > - A610 support (w/ speedbin) > - A619 support (w/ speedbin) > - couple of minor fixes and improvements > - VDDCX/VDDGX scaling fix for non-GMU GPUs (concerns more than just > A6xx) > - Enablement of opp interconnect properties > > A619_holi works perfectly fine using the already-present A619 support > in mesa. A610 needs more work on that front, but can already replay > command traces captures on downstream. > > NOTE: the "drm/msm/a6xx: Add support for A619_holi" patch contains > two occurences of 0x18 used in place of a register #define, as it's > supposed to be RBBM_GPR0_CNTL, but that will only be present after > mesa-side changes are merged and headers are synced from there. > > Speedbin patches depend on: > https://lore.kernel.org/linux-arm-msm/20230120172233.1905761-1-konrad.dybcio@linaro.org/ > > Signed-off-by: Konrad Dybcio > --- > Konrad Dybcio (18): > dt-bindings: display/msm: gpu: Document GMU wrapper-equipped A6xx > dt-bindings: display/msm/gmu: Add GMU wrapper > drm/msm/a6xx: Remove static keyword from sptprac en/disable functions > drm/msm/a6xx: Move force keepalive vote removal to a6xx_gmu_force_off() > drm/msm/a6xx: Move a6xx_bus_clear_pending_transactions to a6xx_gpu > drm/msm/a6xx: Improve a6xx_bus_clear_pending_transactions() > drm/msm/a6xx: Add a helper for software-resetting the GPU > drm/msm/a6xx: Remove both GBIF and RBBM GBIF halt on hw init > drm/msm/a6xx: Extend and explain UBWC config > drm/msm/a6xx: Introduce GMU wrapper support > drm/msm/adreno: Disable has_cached_coherent in GMU wrapper configurations > drm/msm/a6xx: Add support for A619_holi > drm/msm/a6xx: Add A610 support > drm/msm/a6xx: Fix some A619 tunables > drm/msm/a6xx: Use "else if" in GPU speedbin rev matching > drm/msm/a6xx: Use adreno_is_aXYZ macros in speedbin matching > drm/msm/a6xx: Add A619_holi speedbin support > drm/msm/a6xx: Add A610 speedbin support > > .../devicetree/bindings/display/msm/gmu.yaml | 50 +- > .../devicetree/bindings/display/msm/gpu.yaml | 61 ++- > drivers/gpu/drm/msm/adreno/a6xx_gmu.c | 122 +++-- > drivers/gpu/drm/msm/adreno/a6xx_gmu.h | 2 + > drivers/gpu/drm/msm/adreno/a6xx_gpu.c | 512 ++++++++++++++++++--- > drivers/gpu/drm/msm/adreno/a6xx_gpu.h | 4 + > drivers/gpu/drm/msm/adreno/a6xx_gpu_state.c | 14 +- > drivers/gpu/drm/msm/adreno/adreno_device.c | 17 +- > drivers/gpu/drm/msm/adreno/adreno_gpu.c | 8 +- > drivers/gpu/drm/msm/adreno/adreno_gpu.h | 33 +- > 10 files changed, 686 insertions(+), 137 deletions(-) > --- > base-commit: 6a3d37b4d885129561e1cef361216f00472f7d2e > change-id: 20230223-topic-gmuwrapper-b4fff5fd7789 > > Best regards,