lkml.org 
[lkml]   [2020]   [Feb]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 5.4 032/459] drm/msm/adreno: fix zap vs no-zap handling
    Date
    From: Rob Clark <robdclark@chromium.org>

    [ Upstream commit 15ab987c423df561e0949d77fb5043921ae59956 ]

    We can have two cases, when it comes to "zap" fw. Either the fw
    requires zap fw to take the GPU out of secure mode at boot, or it does
    not and we can write RBBM_SECVID_TRUST_CNTL directly. Previously we
    decided based on whether zap fw load succeeded, but this is not a great
    plan because:

    1) we could have zap fw in the filesystem on a device where it is not
    required
    2) we could have the inverse case

    Instead, shift to deciding based on whether we have a 'zap-shader' node
    in dt. In practice, there is only one device (currently) with upstream
    dt that does not use zap (cheza), and it already has a /delete-node/ for
    the zap-shader node.

    Fixes: abccb9fe3267 ("drm/msm/a6xx: Add zap shader load")
    Signed-off-by: Rob Clark <robdclark@chromium.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/gpu/drm/msm/adreno/a5xx_gpu.c | 11 +++++++++--
    drivers/gpu/drm/msm/adreno/a6xx_gpu.c | 11 +++++++++--
    2 files changed, 18 insertions(+), 4 deletions(-)

    diff --git a/drivers/gpu/drm/msm/adreno/a5xx_gpu.c b/drivers/gpu/drm/msm/adreno/a5xx_gpu.c
    index e9c55d1d6c044..99cd6e62a9715 100644
    --- a/drivers/gpu/drm/msm/adreno/a5xx_gpu.c
    +++ b/drivers/gpu/drm/msm/adreno/a5xx_gpu.c
    @@ -726,11 +726,18 @@ static int a5xx_hw_init(struct msm_gpu *gpu)
    gpu->funcs->flush(gpu, gpu->rb[0]);
    if (!a5xx_idle(gpu, gpu->rb[0]))
    return -EINVAL;
    - } else {
    - /* Print a warning so if we die, we know why */
    + } else if (ret == -ENODEV) {
    + /*
    + * This device does not use zap shader (but print a warning
    + * just in case someone got their dt wrong.. hopefully they
    + * have a debug UART to realize the error of their ways...
    + * if you mess this up you are about to crash horribly)
    + */
    dev_warn_once(gpu->dev->dev,
    "Zap shader not enabled - using SECVID_TRUST_CNTL instead\n");
    gpu_write(gpu, REG_A5XX_RBBM_SECVID_TRUST_CNTL, 0x0);
    + } else {
    + return ret;
    }

    /* Last step - yield the ringbuffer */
    diff --git a/drivers/gpu/drm/msm/adreno/a6xx_gpu.c b/drivers/gpu/drm/msm/adreno/a6xx_gpu.c
    index dc8ec2c94301b..686c34d706b0d 100644
    --- a/drivers/gpu/drm/msm/adreno/a6xx_gpu.c
    +++ b/drivers/gpu/drm/msm/adreno/a6xx_gpu.c
    @@ -537,12 +537,19 @@ static int a6xx_hw_init(struct msm_gpu *gpu)
    a6xx_flush(gpu, gpu->rb[0]);
    if (!a6xx_idle(gpu, gpu->rb[0]))
    return -EINVAL;
    - } else {
    - /* Print a warning so if we die, we know why */
    + } else if (ret == -ENODEV) {
    + /*
    + * This device does not use zap shader (but print a warning
    + * just in case someone got their dt wrong.. hopefully they
    + * have a debug UART to realize the error of their ways...
    + * if you mess this up you are about to crash horribly)
    + */
    dev_warn_once(gpu->dev->dev,
    "Zap shader not enabled - using SECVID_TRUST_CNTL instead\n");
    gpu_write(gpu, REG_A6XX_RBBM_SECVID_TRUST_CNTL, 0x0);
    ret = 0;
    + } else {
    + return ret;
    }

    out:
    --
    2.20.1
    \
     
     \ /
      Last update: 2020-02-14 18:46    [W:2.402 / U:7.172 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site