From: Liviu Dudau <liviu.dudau@arm.com>
To: Nicolas Frattaroli <nicolas.frattaroli@collabora.com>
Cc: Boris Brezillon <boris.brezillon@collabora.com>,
Steven Price <steven.price@arm.com>,
Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
Maxime Ripard <mripard@kernel.org>,
Thomas Zimmermann <tzimmermann@suse.de>,
David Airlie <airlied@gmail.com>, Simona Vetter <simona@ffwll.ch>,
Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>,
Matthias Brugger <matthias.bgg@gmail.com>,
AngeloGioacchino Del Regno
<angelogioacchino.delregno@collabora.com>,
Ulf Hansson <ulf.hansson@linaro.org>,
Chen-Yu Tsai <wenst@chromium.org>, Chia-I Wu <olvaffe@gmail.com>,
kernel@collabora.com, dri-devel@lists.freedesktop.org,
devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
linux-mediatek@lists.infradead.org, linux-pm@vger.kernel.org
Subject: Re: [PATCH v2 3/4] drm/panthor: Implement reading shader_present from nvmem
Date: Mon, 22 Dec 2025 13:41:52 +0000 [thread overview]
Message-ID: <aUlKoHKb084vm_p-@e142607> (raw)
In-Reply-To: <20251220-mt8196-shader-present-v2-3-45b1ff1dfab0@collabora.com>
On Sat, Dec 20, 2025 at 07:49:54PM +0100, Nicolas Frattaroli wrote:
> On some platforms, notably MediaTek MT8196, the shader_present bitmask
> in the Mali GPU register for it has cores enabled that may be faulty.
> The true shader_present bitmask is found in an efuse instead.
>
> Implement reading shader_present from an nvmem cell if one is present,
> falling back to the Mali register if it's absent. The error codes are
> trickled up through to the probe function so that probe deferral works.
>
> Signed-off-by: Nicolas Frattaroli <nicolas.frattaroli@collabora.com>
Reviewed-by: Liviu Dudau <liviu.dudau@arm.com>
Best regards,
Liviu
> ---
> drivers/gpu/drm/panthor/panthor_hw.c | 36 ++++++++++++++++++++++++++++++------
> 1 file changed, 30 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/gpu/drm/panthor/panthor_hw.c b/drivers/gpu/drm/panthor/panthor_hw.c
> index 87ebb7ae42c4..80c521784cd3 100644
> --- a/drivers/gpu/drm/panthor/panthor_hw.c
> +++ b/drivers/gpu/drm/panthor/panthor_hw.c
> @@ -1,6 +1,7 @@
> // SPDX-License-Identifier: GPL-2.0 or MIT
> /* Copyright 2025 ARM Limited. All rights reserved. */
>
> +#include <linux/nvmem-consumer.h>
> #include <drm/drm_print.h>
>
> #include "panthor_device.h"
> @@ -109,7 +110,25 @@ static char *get_gpu_model_name(struct panthor_device *ptdev)
> return "(Unknown Mali GPU)";
> }
>
> -static void panthor_gpu_info_init(struct panthor_device *ptdev)
> +static int overload_shader_present(struct panthor_device *ptdev)
> +{
> + u64 contents;
> + int ret;
> +
> + ret = nvmem_cell_read_variable_le_u64(ptdev->base.dev, "shader-present",
> + &contents);
> + if (!ret)
> + ptdev->gpu_info.shader_present = contents;
> + else if (ret == -ENOENT)
> + return 0;
> + else
> + return dev_err_probe(ptdev->base.dev, ret,
> + "Failed to read shader-present nvmem cell\n");
> +
> + return 0;
> +}
> +
> +static int panthor_gpu_info_init(struct panthor_device *ptdev)
> {
> unsigned int i;
>
> @@ -143,13 +162,18 @@ static void panthor_gpu_info_init(struct panthor_device *ptdev)
> ptdev->gpu_info.tiler_present = gpu_read64(ptdev, GPU_TILER_PRESENT);
> ptdev->gpu_info.l2_present = gpu_read64(ptdev, GPU_L2_PRESENT);
> }
> +
> + return overload_shader_present(ptdev);
> }
>
> -static void panthor_hw_info_init(struct panthor_device *ptdev)
> +static int panthor_hw_info_init(struct panthor_device *ptdev)
> {
> u32 major, minor, status;
> + int ret;
>
> - panthor_gpu_info_init(ptdev);
> + ret = panthor_gpu_info_init(ptdev);
> + if (ret)
> + return ret;
>
> major = GPU_VER_MAJOR(ptdev->gpu_info.gpu_id);
> minor = GPU_VER_MINOR(ptdev->gpu_info.gpu_id);
> @@ -172,6 +196,8 @@ static void panthor_hw_info_init(struct panthor_device *ptdev)
> "shader_present=0x%0llx l2_present=0x%0llx tiler_present=0x%0llx",
> ptdev->gpu_info.shader_present, ptdev->gpu_info.l2_present,
> ptdev->gpu_info.tiler_present);
> +
> + return 0;
> }
>
> static int panthor_hw_bind_device(struct panthor_device *ptdev)
> @@ -218,7 +244,5 @@ int panthor_hw_init(struct panthor_device *ptdev)
> if (ret)
> return ret;
>
> - panthor_hw_info_init(ptdev);
> -
> - return 0;
> + return panthor_hw_info_init(ptdev);
> }
>
> --
> 2.52.0
>
next prev parent reply other threads:[~2025-12-22 13:43 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-12-20 18:49 [PATCH v2 0/4] Make MT8196 get its Mali GPU shader_present from nvmem Nicolas Frattaroli
2025-12-20 18:49 ` [PATCH v2 1/4] dt-bindings: gpu: mali-valhall-csf: Add shader-present nvmem cell Nicolas Frattaroli
2025-12-20 18:49 ` [PATCH v2 2/4] dt-bindings: power: mt8196-gpufreq: Describe nvmem provider ability Nicolas Frattaroli
2025-12-20 18:49 ` [PATCH v2 3/4] drm/panthor: Implement reading shader_present from nvmem Nicolas Frattaroli
2025-12-22 11:43 ` Steven Price
2025-12-22 13:41 ` Liviu Dudau [this message]
2025-12-20 18:49 ` [PATCH v2 4/4] pmdomain: mediatek: mtk-mfg: Expose shader_present as nvmem cell Nicolas Frattaroli
2025-12-21 0:33 ` [PATCH v2 0/4] Make MT8196 get its Mali GPU shader_present from nvmem Chia-I Wu
2025-12-29 11:52 ` Ulf Hansson
2026-01-13 16:08 ` Boris Brezillon
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=aUlKoHKb084vm_p-@e142607 \
--to=liviu.dudau@arm.com \
--cc=airlied@gmail.com \
--cc=angelogioacchino.delregno@collabora.com \
--cc=boris.brezillon@collabora.com \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=dri-devel@lists.freedesktop.org \
--cc=kernel@collabora.com \
--cc=krzk+dt@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mediatek@lists.infradead.org \
--cc=linux-pm@vger.kernel.org \
--cc=maarten.lankhorst@linux.intel.com \
--cc=matthias.bgg@gmail.com \
--cc=mripard@kernel.org \
--cc=nicolas.frattaroli@collabora.com \
--cc=olvaffe@gmail.com \
--cc=robh@kernel.org \
--cc=simona@ffwll.ch \
--cc=steven.price@arm.com \
--cc=tzimmermann@suse.de \
--cc=ulf.hansson@linaro.org \
--cc=wenst@chromium.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.