Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp823667pxf; Thu, 1 Apr 2021 14:46:49 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwzqYpKVYTh4ekcpsjYrsM0R1R+mUTQYneU+1cVJwCDwQYg7jbFZc6IaPcOyDFa1JfDN1P9 X-Received: by 2002:a92:cbc8:: with SMTP id s8mr8224771ilq.227.1617313609617; Thu, 01 Apr 2021 14:46:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1617313609; cv=none; d=google.com; s=arc-20160816; b=mSnRB2WfkMV9WDt/CKbIVlbwe/BWmQcVOgFKw3FnQGLOH9A40ROGdyt9UmxF7KDZUw +oWYK8Mr2BQgzgyFp/vSLEYj6x3k5ZlOa8XoavJexczsQf3f1IBVXF/zqDpyPHZfl7vB ZkK0nhN7zkGLI+Jjg9TivOlVvm+LyBgCFxeuS4Nui0wzUMaDCyTtVx9BTqVYOyFIM7EJ NSllA3GLeP6KnXBZZQTA8pQTN2rxsCO1lAiIQ5YKmPF1woKTrpIcGhKCBLPkqUjTNxmy CfyeNan1XGn/37Tg+rSWZgYavJtPFe0xvOHNuhNWNwVWR+N+1rbWmYPPd0jD9HAfT2Ib i/gA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=03BQSw1CPJ8M8BexxEezvsYQZb8neb/x+xNYoF5ZH40=; b=J2NjJ0pm3kX5+sjQWUvuowyjyqgyjsNDt+WXNbI7Eaez/vob59yrObV3zv11lL4g1G n5FbdF28jiSk94PefIXhJ+qrzUBgYDQ0tAH5DdB54A3K9tySL82CYqME8s4n+Fvao2CT o2y/LPUKsyIiPYUB5ipiYZefHLRknndcQuZ2NJXQGFqy9WQGnJEpai597WNMiFBYXRRP +peFr6QMWIVSdYUW+IAjwkudxVVWRJlEfrnEgQ5P4L+ikuFdtV9uTZNa00+99prFTpqp rKu1Q+W2vY5IFOko23IqbL8t3S6Vrnxy4S1SZ1XFuso/pqCHHJI+fXUAWtWinEYV+EqU ckWA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=ZQE9ppnq; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id f6si5553294jaj.119.2021.04.01.14.46.35; Thu, 01 Apr 2021 14:46:49 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=ZQE9ppnq; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235480AbhDAVpw (ORCPT + 99 others); Thu, 1 Apr 2021 17:45:52 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55176 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234724AbhDAVpv (ORCPT ); Thu, 1 Apr 2021 17:45:51 -0400 Received: from mail-wr1-x429.google.com (mail-wr1-x429.google.com [IPv6:2a00:1450:4864:20::429]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3431EC0613E6; Thu, 1 Apr 2021 14:45:51 -0700 (PDT) Received: by mail-wr1-x429.google.com with SMTP id b9so3127183wrt.8; Thu, 01 Apr 2021 14:45:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=03BQSw1CPJ8M8BexxEezvsYQZb8neb/x+xNYoF5ZH40=; b=ZQE9ppnqnPtgf+sAq2hJfhtYScAce9TxQHQKT/zS+ZJEPvti7l/hx+rl3OZ3WasfBK 6oDLe1zbgki31FRRjcQjewbh9fuIJjhm9vn4+uIFWT2x1Q+/GhsuCGKRDWWilUCkky/w S0aWWRw5tcDMCIrbsqUh6KGQyHcnK3UqIC+KtmspbNtvjB8BDXnHP7UlUF1xp/x3Hyei YlnDEi7NtkQQLX/seZWGHmxBmAXxIoA0e28iGhqFZ1yaX+4YG9+mQcoXE3IDyv9bXRCf QAuYXfNWr3FxictHeiaXuiwRuyGFXgIwPKeGA2+uy+ASLf4mNdkIRNnKvoMRxWGfvOem aVOw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=03BQSw1CPJ8M8BexxEezvsYQZb8neb/x+xNYoF5ZH40=; b=i2PsstbeokLVpVnzK/wtJ1hwOYTu80QnsnzcJ7jW5FSaOt55/Ox1DwBXVCzL7Ukegx mJFZOAFWqiIJtvKtp7Jvb1JOPHReA1lOfXzGO4S2o/xcI8IlzMVYfRUdDsH+T8YSWLW+ m+5PhwBK4zPGMVwEnuwNnz5GJVrfT7gh4xihPa5epFA1fZNsp8X6ZO5S7E+gUt5zRjD1 s/3ObeSkHveRXqsfNpyg/bbPHI8fFLT0RKhhojg3NMf8pMN/P6YD+Oi6VFDjhHzu6yNx a4PsAvoS3H3jCcl1RrPTuM9jzToSZNrSfmaQxWj0ZFPN1O0mFjgLuHDJazLwJSOg29+7 2XAg== X-Gm-Message-State: AOAM530FBlw64USw1Uy+HkO+dTSrvkhgAXbt0UFSTXIqIep8shAwaO2x Ny/zYkFSv4/aaB1uTkGUf2RvQSGx4Vcdc9fQ83d2nsNNFc7LlA== X-Received: by 2002:adf:b30f:: with SMTP id j15mr12078963wrd.132.1617313549709; Thu, 01 Apr 2021 14:45:49 -0700 (PDT) MIME-Version: 1.0 References: <20210216200909.19039-1-jonathan@marek.ca> <775436ba-c94a-ab22-d65b-b2391047ec65@codeaurora.org> <20210217190820.GA2229@jcrouse1-lnx.qualcomm.com> <74d1277e-295f-0996-91c3-05cfce8d3a0e@marek.ca> <757b557a-b5f6-6018-caa4-34bffb1b60b7@codeaurora.org> <0f057c99-ec94-f3e3-796f-b73a609f735d@codeaurora.org> In-Reply-To: From: Rob Clark Date: Thu, 1 Apr 2021 14:49:13 -0700 Message-ID: Subject: Re: [PATCH] drm/msm/a6xx: fix for kernels without CONFIG_NVMEM To: Dmitry Baryshkov Cc: Akhil P Oommen , Jonathan Marek , freedreno , Sean Paul , Sai Prakash Ranjan , Eric Anholt , "open list:DRM DRIVER FOR MSM ADRENO GPU" , "open list:DRM DRIVER FOR MSM ADRENO GPU" , open list Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Apr 1, 2021 at 2:03 PM Dmitry Baryshkov wrote: > > On Thu, 1 Apr 2021 at 23:09, Rob Clark wrote: > > > > On Mon, Feb 22, 2021 at 8:06 AM Rob Clark wrote: > > > > > > On Mon, Feb 22, 2021 at 7:45 AM Akhil P Oommen wrote: > > > > > > > > On 2/19/2021 9:30 PM, Rob Clark wrote: > > > > > On Fri, Feb 19, 2021 at 2:44 AM Akhil P Oommen wrote: > > > > >> > > > > >> On 2/18/2021 9:41 PM, Rob Clark wrote: > > > > >>> On Thu, Feb 18, 2021 at 4:28 AM Akhil P Oommen wrote: > > > > >>>> > > > > >>>> On 2/18/2021 2:05 AM, Jonathan Marek wrote: > > > > >>>>> On 2/17/21 3:18 PM, Rob Clark wrote: > > > > >>>>>> On Wed, Feb 17, 2021 at 11:08 AM Jordan Crouse > > > > >>>>>> wrote: > > > > >>>>>>> > > > > >>>>>>> On Wed, Feb 17, 2021 at 07:14:16PM +0530, Akhil P Oommen wrote: > > > > >>>>>>>> On 2/17/2021 8:36 AM, Rob Clark wrote: > > > > >>>>>>>>> On Tue, Feb 16, 2021 at 12:10 PM Jonathan Marek > > > > >>>>>>>>> wrote: > > > > >>>>>>>>>> > > > > >>>>>>>>>> Ignore nvmem_cell_get() EOPNOTSUPP error in the same way as a > > > > >>>>>>>>>> ENOENT error, > > > > >>>>>>>>>> to fix the case where the kernel was compiled without CONFIG_NVMEM. > > > > >>>>>>>>>> > > > > >>>>>>>>>> Fixes: fe7952c629da ("drm/msm: Add speed-bin support to a618 gpu") > > > > >>>>>>>>>> Signed-off-by: Jonathan Marek > > > > >>>>>>>>>> --- > > > > >>>>>>>>>> drivers/gpu/drm/msm/adreno/a6xx_gpu.c | 6 +++--- > > > > >>>>>>>>>> 1 file changed, 3 insertions(+), 3 deletions(-) > > > > >>>>>>>>>> > > > > >>>>>>>>>> diff --git a/drivers/gpu/drm/msm/adreno/a6xx_gpu.c > > > > >>>>>>>>>> b/drivers/gpu/drm/msm/adreno/a6xx_gpu.c > > > > >>>>>>>>>> index ba8e9d3cf0fe..7fe5d97606aa 100644 > > > > >>>>>>>>>> --- a/drivers/gpu/drm/msm/adreno/a6xx_gpu.c > > > > >>>>>>>>>> +++ b/drivers/gpu/drm/msm/adreno/a6xx_gpu.c > > > > >>>>>>>>>> @@ -1356,10 +1356,10 @@ static int a6xx_set_supported_hw(struct > > > > >>>>>>>>>> device *dev, struct a6xx_gpu *a6xx_gpu, > > > > >>>>>>>>>> > > > > >>>>>>>>>> cell = nvmem_cell_get(dev, "speed_bin"); > > > > >>>>>>>>>> /* > > > > >>>>>>>>>> - * -ENOENT means that the platform doesn't support > > > > >>>>>>>>>> speedbin which is > > > > >>>>>>>>>> - * fine > > > > >>>>>>>>>> + * -ENOENT means no speed bin in device tree, > > > > >>>>>>>>>> + * -EOPNOTSUPP means kernel was built without CONFIG_NVMEM > > > > >>>>>>>>> > > > > >>>>>>>>> very minor nit, it would be nice to at least preserve the gist of the > > > > >>>>>>>>> "which is fine" (ie. some variation of "this is an optional thing and > > > > >>>>>>>>> things won't catch fire without it" ;-)) > > > > >>>>>>>>> > > > > >>>>>>>>> (which is, I believe, is true, hopefully Akhil could confirm.. if not > > > > >>>>>>>>> we should have a harder dependency on CONFIG_NVMEM..) > > > > >>>>>>>> IIRC, if the gpu opp table in the DT uses the 'opp-supported-hw' > > > > >>>>>>>> property, > > > > >>>>>>>> we will see some error during boot up if we don't call > > > > >>>>>>>> dev_pm_opp_set_supported_hw(). So calling "nvmem_cell_get(dev, > > > > >>>>>>>> "speed_bin")" > > > > >>>>>>>> is a way to test this. > > > > >>>>>>>> > > > > >>>>>>>> If there is no other harm, we can put a hard dependency on > > > > >>>>>>>> CONFIG_NVMEM. > > > > >>>>>>> > > > > >>>>>>> I'm not sure if we want to go this far given the squishiness about > > > > >>>>>>> module > > > > >>>>>>> dependencies. As far as I know we are the only driver that uses this > > > > >>>>>>> seriously > > > > >>>>>>> on QCOM SoCs and this is only needed for certain targets. I don't > > > > >>>>>>> know if we > > > > >>>>>>> want to force every target to build NVMEM and QFPROM on our behalf. > > > > >>>>>>> But maybe > > > > >>>>>>> I'm just saying that because Kconfig dependencies tend to break my > > > > >>>>>>> brain (and > > > > >>>>>>> then Arnd has to send a patch to fix it). > > > > >>>>>>> > > > > >>>>>> > > > > >>>>>> Hmm, good point.. looks like CONFIG_NVMEM itself doesn't have any > > > > >>>>>> other dependencies, so I suppose it wouldn't be the end of the world > > > > >>>>>> to select that.. but I guess we don't want to require QFPROM > > > > >>>>>> > > > > >>>>>> I guess at the end of the day, what is the failure mode if you have a > > > > >>>>>> speed-bin device, but your kernel config misses QFPROM (and possibly > > > > >>>>>> NVMEM)? If the result is just not having the highest clk rate(s) > > > > >>>> > > > > >>>> Atleast on sc7180's gpu, using an unsupported FMAX breaks gmu. It won't > > > > >>>> be very obvious what went wrong when this happens! > > > > >>> > > > > >>> Ugg, ok.. > > > > >>> > > > > >>> I suppose we could select NVMEM, but not QFPROM, and then the case > > > > >>> where QFPROM is not enabled on platforms that have the speed-bin field > > > > >>> in DT will fail gracefully and all other platforms would continue on > > > > >>> happily? > > > > >>> > > > > >>> BR, > > > > >>> -R > > > > >> > > > > >> Sounds good to me. > > > > >> > > > > > > > > > > You probably should do a quick test with NVMEM enabled but QFPROM > > > > > disabled to confirm my theory, but I *think* that should work > > > > > > > > > > BR, > > > > > -R > > > > > > > > > > > > > I tried it on an sc7180 device. The suggested combo (CONFIG_NVMEM + no > > > > CONFIG_QCOM_QFPROM) makes the gpu probe fail with error "failed to read > > > > speed-bin. Some OPPs may not be supported by hardware". This is good > > > > enough clue for the developer that he should fix the broken speedbin > > > > detection. > > > > > > > > > > Ok, great.. then sounds like selecting NVMEM is a good approach > > > > > > > btw, did anyone ever send a patch to select NVMEM? I'm not seeing one > > but I could be overlooking something > > Judging by the amount of issues surrounding speed-bin, I might have a > bold suggestion to revert these patches for now and get them once all > the issues are sorted, so that we'd have a single working commit > instead of scattered patch series breaking git bisect, having bad > side-effects on non-sc7180 platforms, etc. > We do really need some pre-merge CI like we have on the mesa side of things (and we at least have 845 devices in our CI farm, but it would be useful to add more generations).. but other than the config issue, I *think* this fixes the last of the speedbin fallout? https://patchwork.freedesktop.org/patch/426538/?series=88558&rev=1 Planning to include that in a -fixes pull req in the next day or two. (And please have a look at msm-next-staging and let me know if you see anything other fixes that would be good to get in, speedbin related or otherwise.) BR, -R