Message ID | 20210513171431.18632-8-jonathan@marek.ca |
---|---|
State | Superseded |
Headers | show |
Series | drm/msm/a6xx: add support for Adreno 660 GPU | expand |
On 5/13/2021 10:44 PM, Jonathan Marek wrote: > Accept all SQE firmware versions for A660. > > Re-organize the function a bit and print an error message for unexpected > GPU IDs instead of failing silently. > > Signed-off-by: Jonathan Marek <jonathan@marek.ca> > --- > drivers/gpu/drm/msm/adreno/a6xx_gpu.c | 36 +++++++++++++-------------- > 1 file changed, 17 insertions(+), 19 deletions(-) > > diff --git a/drivers/gpu/drm/msm/adreno/a6xx_gpu.c b/drivers/gpu/drm/msm/adreno/a6xx_gpu.c > index 3cc23057b11d..ec66a24fc37e 100644 > --- a/drivers/gpu/drm/msm/adreno/a6xx_gpu.c > +++ b/drivers/gpu/drm/msm/adreno/a6xx_gpu.c > @@ -697,6 +697,11 @@ static bool a6xx_ucode_check_version(struct a6xx_gpu *a6xx_gpu, > * Targets up to a640 (a618, a630 and a640) need to check for a > * microcode version that is patched to support the whereami opcode or > * one that is new enough to include it by default. > + * > + * a650 tier targets don't need whereami but still need to be > + * equal to or newer than 0.95 for other security fixes > + * > + * a660 targets have all the critical security fixes from the start > */ > if (adreno_is_a618(adreno_gpu) || adreno_is_a630(adreno_gpu) || > adreno_is_a640(adreno_gpu)) { > @@ -720,27 +725,20 @@ static bool a6xx_ucode_check_version(struct a6xx_gpu *a6xx_gpu, > DRM_DEV_ERROR(&gpu->pdev->dev, > "a630 SQE ucode is too old. Have version %x need at least %x\n", > buf[0] & 0xfff, 0x190); > - } else { > - /* > - * a650 tier targets don't need whereami but still need to be > - * equal to or newer than 0.95 for other security fixes > - */ > - if (adreno_is_a650(adreno_gpu)) { > - if ((buf[0] & 0xfff) >= 0x095) { > - ret = true; > - goto out; > - } > - > - DRM_DEV_ERROR(&gpu->pdev->dev, > - "a650 SQE ucode is too old. Have version %x need at least %x\n", > - buf[0] & 0xfff, 0x095); > + } else if (adreno_is_a650(adreno_gpu)) { > + if ((buf[0] & 0xfff) >= 0x095) { > + ret = true; > + goto out; > } > > - /* > - * When a660 is added those targets should return true here > - * since those have all the critical security fixes built in > - * from the start > - */ > + DRM_DEV_ERROR(&gpu->pdev->dev, > + "a650 SQE ucode is too old. Have version %x need at least %x\n", > + buf[0] & 0xfff, 0x095); > + } else if (adreno_is_a660(adreno_gpu)) { > + ret = true; > + } else { > + DRM_DEV_ERROR(&gpu->pdev->dev, > + "unknown GPU, add it to a6xx_ucode_check_version()!!\n"); > } > out: > msm_gem_put_vaddr(obj); > Can we squash this patch with the previous one? -Akhil.
diff --git a/drivers/gpu/drm/msm/adreno/a6xx_gpu.c b/drivers/gpu/drm/msm/adreno/a6xx_gpu.c index 3cc23057b11d..ec66a24fc37e 100644 --- a/drivers/gpu/drm/msm/adreno/a6xx_gpu.c +++ b/drivers/gpu/drm/msm/adreno/a6xx_gpu.c @@ -697,6 +697,11 @@ static bool a6xx_ucode_check_version(struct a6xx_gpu *a6xx_gpu, * Targets up to a640 (a618, a630 and a640) need to check for a * microcode version that is patched to support the whereami opcode or * one that is new enough to include it by default. + * + * a650 tier targets don't need whereami but still need to be + * equal to or newer than 0.95 for other security fixes + * + * a660 targets have all the critical security fixes from the start */ if (adreno_is_a618(adreno_gpu) || adreno_is_a630(adreno_gpu) || adreno_is_a640(adreno_gpu)) { @@ -720,27 +725,20 @@ static bool a6xx_ucode_check_version(struct a6xx_gpu *a6xx_gpu, DRM_DEV_ERROR(&gpu->pdev->dev, "a630 SQE ucode is too old. Have version %x need at least %x\n", buf[0] & 0xfff, 0x190); - } else { - /* - * a650 tier targets don't need whereami but still need to be - * equal to or newer than 0.95 for other security fixes - */ - if (adreno_is_a650(adreno_gpu)) { - if ((buf[0] & 0xfff) >= 0x095) { - ret = true; - goto out; - } - - DRM_DEV_ERROR(&gpu->pdev->dev, - "a650 SQE ucode is too old. Have version %x need at least %x\n", - buf[0] & 0xfff, 0x095); + } else if (adreno_is_a650(adreno_gpu)) { + if ((buf[0] & 0xfff) >= 0x095) { + ret = true; + goto out; } - /* - * When a660 is added those targets should return true here - * since those have all the critical security fixes built in - * from the start - */ + DRM_DEV_ERROR(&gpu->pdev->dev, + "a650 SQE ucode is too old. Have version %x need at least %x\n", + buf[0] & 0xfff, 0x095); + } else if (adreno_is_a660(adreno_gpu)) { + ret = true; + } else { + DRM_DEV_ERROR(&gpu->pdev->dev, + "unknown GPU, add it to a6xx_ucode_check_version()!!\n"); } out: msm_gem_put_vaddr(obj);
Accept all SQE firmware versions for A660. Re-organize the function a bit and print an error message for unexpected GPU IDs instead of failing silently. Signed-off-by: Jonathan Marek <jonathan@marek.ca> --- drivers/gpu/drm/msm/adreno/a6xx_gpu.c | 36 +++++++++++++-------------- 1 file changed, 17 insertions(+), 19 deletions(-)