From: Liviu Dudau <liviu.dudau@arm.com>
To: Karunika Choo <karunika.choo@arm.com>
Cc: dri-devel@lists.freedesktop.org, nd@arm.com,
Boris Brezillon <boris.brezillon@collabora.com>,
Steven Price <steven.price@arm.com>,
linux-kernel@vger.kernel.org,
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>
Subject: Re: [PATCH v1 03/27] drm/panthor: Parse and store GPU_ID fields
Date: Wed, 28 Oct 2026 15:57:44 +0000 [thread overview]
Message-ID: <auIbeK8uH-ZWRyu-@e142607> (raw)
In-Reply-To: <20260922204535.2850094-4-karunika.choo@arm.com>
On Tue, Sep 22, 2026 at 09:44:57PM +0100, Karunika Choo wrote:
> Prepare for Mali v15, where GPU_ID expands to 64 bits and its field
> layout changes.
>
> Introduce a small panthor_gpu_id structure and parse the GPU_ID fields
> once during hardware initialization. Convert existing users to consume
> the cached fields instead of extracting them repeatedly from the raw
> register value.
>
> This centralizes GPU_ID decoding and makes it easier to support both the
> existing and v15 formats.
>
> Signed-off-by: Karunika Choo <karunika.choo@arm.com>
Reviewed-by: Liviu Dudau <liviu.dudau@arm.com>
Best regards,
Liviu
> ---
> v1:
> - changed struct panthor_gpu_id into a flat structure instead of
> inconsistent groupings.
>
> drivers/gpu/drm/panthor/panthor_device.h | 29 ++++++++++++++++++++++++
> drivers/gpu/drm/panthor/panthor_fw.c | 4 ++--
> drivers/gpu/drm/panthor/panthor_gpu.c | 2 +-
> drivers/gpu/drm/panthor/panthor_hw.c | 26 ++++++++++++++-------
> drivers/gpu/drm/panthor/panthor_hw.h | 3 +--
> 5 files changed, 51 insertions(+), 13 deletions(-)
>
> diff --git a/drivers/gpu/drm/panthor/panthor_device.h b/drivers/gpu/drm/panthor/panthor_device.h
> index 54031c5252473..ba93a100ceda2 100644
> --- a/drivers/gpu/drm/panthor/panthor_device.h
> +++ b/drivers/gpu/drm/panthor/panthor_device.h
> @@ -110,6 +110,32 @@ struct panthor_irq {
> enum panthor_irq_state state;
> };
>
> +/**
> + * struct panthor_gpu_id - Parsed GPU_ID fields
> + */
> +struct panthor_gpu_id {
> + /** @arch_major: Architecture major revision */
> + u8 arch_major;
> +
> + /** @arch_minor: Architecture minor revision */
> + u8 arch_minor;
> +
> + /** @arch_rev: Architecture patch revision */
> + u8 arch_rev;
> +
> + /** @prod_major: Product identifier */
> + u8 prod_major;
> +
> + /** @ver_major: Major release version number */
> + u8 ver_major;
> +
> + /** @ver_minor: Minor release version number */
> + u8 ver_minor;
> +
> + /** @ver_status: Status of GPU release */
> + u8 ver_status;
> +};
> +
> /**
> * enum panthor_device_profiling_mode - Profiling state
> */
> @@ -169,6 +195,9 @@ struct panthor_device {
> /** @mmu_info: MMU info */
> struct drm_panthor_mmu_info mmu_info;
>
> + /** @gpu_id: Parsed GPU_ID fields */
> + struct panthor_gpu_id gpu_id;
> +
> /** @hw: GPU-specific data. */
> struct panthor_hw *hw;
>
> diff --git a/drivers/gpu/drm/panthor/panthor_fw.c b/drivers/gpu/drm/panthor/panthor_fw.c
> index 4f1fab66a13bf..13efed3a2ea72 100644
> --- a/drivers/gpu/drm/panthor/panthor_fw.c
> +++ b/drivers/gpu/drm/panthor/panthor_fw.c
> @@ -809,8 +809,8 @@ static int panthor_fw_load(struct panthor_device *ptdev)
> int ret;
>
> snprintf(fw_path, sizeof(fw_path), "arm/mali/arch%d.%d/%s",
> - (u32)GPU_ARCH_MAJOR(ptdev->gpu_info.gpu_id),
> - (u32)GPU_ARCH_MINOR(ptdev->gpu_info.gpu_id),
> + (u32)ptdev->gpu_id.arch_major,
> + (u32)ptdev->gpu_id.arch_minor,
> CSF_FW_NAME);
>
> ret = request_firmware(&fw, fw_path, ptdev->base.dev);
> diff --git a/drivers/gpu/drm/panthor/panthor_gpu.c b/drivers/gpu/drm/panthor/panthor_gpu.c
> index a383b04f101ed..ade2646e2caf6 100644
> --- a/drivers/gpu/drm/panthor/panthor_gpu.c
> +++ b/drivers/gpu/drm/panthor/panthor_gpu.c
> @@ -73,7 +73,7 @@ static void panthor_gpu_l2_config_set(struct panthor_device *ptdev)
> if (!data || !data->asn_hash_enable)
> return;
>
> - if (GPU_ARCH_MAJOR(ptdev->gpu_info.gpu_id) < 11) {
> + if (ptdev->gpu_id.arch_major < 11) {
> drm_err(&ptdev->base, "Custom ASN hash not supported by the device");
> return;
> }
> diff --git a/drivers/gpu/drm/panthor/panthor_hw.c b/drivers/gpu/drm/panthor/panthor_hw.c
> index 4c96573b649a1..2143e57d48106 100644
> --- a/drivers/gpu/drm/panthor/panthor_hw.c
> +++ b/drivers/gpu/drm/panthor/panthor_hw.c
> @@ -119,9 +119,9 @@ void panthor_hw_power_status_unregister(void)
>
> static char *get_gpu_model_name(struct panthor_device *ptdev)
> {
> - const u32 gpu_id = ptdev->gpu_info.gpu_id;
> - const u32 product_id = GPU_PROD_ID_MAKE(GPU_ARCH_MAJOR(gpu_id),
> - GPU_PROD_MAJOR(gpu_id));
> + const struct panthor_gpu_id *gpu_id = &ptdev->gpu_id;
> + const u32 product_id = GPU_PROD_ID_MAKE(gpu_id->arch_major,
> + gpu_id->prod_major);
> const bool ray_intersection = !!(ptdev->gpu_info.gpu_features &
> GPU_FEATURES_RAY_INTERSECTION);
> const u8 shader_core_count = hweight64(ptdev->gpu_info.shader_present);
> @@ -245,13 +245,13 @@ static int panthor_hw_info_init(struct panthor_device *ptdev)
> if (ret)
> return ret;
>
> - major = GPU_VER_MAJOR(ptdev->gpu_info.gpu_id);
> - minor = GPU_VER_MINOR(ptdev->gpu_info.gpu_id);
> - status = GPU_VER_STATUS(ptdev->gpu_info.gpu_id);
> + major = ptdev->gpu_id.ver_major;
> + minor = ptdev->gpu_id.ver_minor;
> + status = ptdev->gpu_id.ver_status;
>
> drm_info(&ptdev->base,
> "%s id 0x%x major 0x%x minor 0x%x status 0x%x",
> - get_gpu_model_name(ptdev), ptdev->gpu_info.gpu_id >> 16,
> + get_gpu_model_name(ptdev), ptdev->gpu_id.prod_major,
> major, minor, status);
>
> drm_info(&ptdev->base,
> @@ -273,7 +273,7 @@ static int panthor_hw_info_init(struct panthor_device *ptdev)
> static int panthor_hw_bind_device(struct panthor_device *ptdev)
> {
> struct panthor_hw *hdev = NULL;
> - const u32 arch_major = GPU_ARCH_MAJOR(ptdev->gpu_info.gpu_id);
> + const u32 arch_major = ptdev->gpu_id.arch_major;
> int i = 0;
>
> for (i = 0; i < ARRAY_SIZE(panthor_hw_match); i++) {
> @@ -295,10 +295,20 @@ static int panthor_hw_bind_device(struct panthor_device *ptdev)
>
> static int panthor_hw_gpu_id_init(struct panthor_device *ptdev)
> {
> + struct panthor_gpu_id *gpu_id = &ptdev->gpu_id;
> ptdev->gpu_info.gpu_id = gpu_read(ptdev->iomem, GPU_ID);
> +
> if (!ptdev->gpu_info.gpu_id)
> return -ENXIO;
>
> + gpu_id->arch_major = GPU_ARCH_MAJOR(ptdev->gpu_info.gpu_id);
> + gpu_id->arch_minor = GPU_ARCH_MINOR(ptdev->gpu_info.gpu_id);
> + gpu_id->arch_rev = GPU_ARCH_REV(ptdev->gpu_info.gpu_id);
> + gpu_id->prod_major = GPU_PROD_MAJOR(ptdev->gpu_info.gpu_id);
> + gpu_id->ver_major = GPU_VER_MAJOR(ptdev->gpu_info.gpu_id);
> + gpu_id->ver_minor = GPU_VER_MINOR(ptdev->gpu_info.gpu_id);
> + gpu_id->ver_status = GPU_VER_STATUS(ptdev->gpu_info.gpu_id);
> +
> return 0;
> }
>
> diff --git a/drivers/gpu/drm/panthor/panthor_hw.h b/drivers/gpu/drm/panthor/panthor_hw.h
> index f797663893b2d..bdda3b10e660a 100644
> --- a/drivers/gpu/drm/panthor/panthor_hw.h
> +++ b/drivers/gpu/drm/panthor/panthor_hw.h
> @@ -5,7 +5,6 @@
> #define __PANTHOR_HW_H__
>
> #include "panthor_device.h"
> -#include "panthor_gpu_regs.h"
>
> /**
> * struct panthor_hw_ops - HW operations that are specific to a GPU
> @@ -58,7 +57,7 @@ static inline void panthor_hw_l2_power_off(struct panthor_device *ptdev)
>
> static inline bool panthor_hw_has_pwr_ctrl(struct panthor_device *ptdev)
> {
> - return GPU_ARCH_MAJOR(ptdev->gpu_info.gpu_id) >= 14;
> + return ptdev->gpu_id.arch_major >= 14;
> }
>
> #endif /* __PANTHOR_HW_H__ */
> --
> 2.43.0
>
--
====================
| I would like to |
| fix the world, |
| but they're not |
| giving me the |
\ source code! /
---------------
¯\_(ツ)_/¯
next prev parent reply other threads:[~2026-10-28 15:57 UTC|newest]
Thread overview: 63+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-22 20:44 [PATCH v1 00/27] drm/panthor: Add Mali v15 virtualization support Karunika Choo
2026-09-22 20:44 ` [PATCH v1 01/27] drm/panthor: Ignore -EOPNOTSUPP for shader-present nvmem lookup Karunika Choo
2026-10-28 15:51 ` Liviu Dudau
2026-09-22 20:44 ` [PATCH v1 02/27] drm/panthor: Move register access helpers out of panthor_device.h Karunika Choo
2026-09-22 20:54 ` sashiko-bot
2026-10-28 15:52 ` Liviu Dudau
2026-09-22 20:44 ` [PATCH v1 03/27] drm/panthor: Parse and store GPU_ID fields Karunika Choo
2026-09-22 20:56 ` sashiko-bot
2026-10-28 15:57 ` Liviu Dudau [this message]
2026-09-22 20:44 ` [PATCH v1 04/27] drm/panthor: Add 64-bit GPU_ID decoding for v15 GPUs Karunika Choo
2026-09-22 21:01 ` sashiko-bot
2026-09-22 23:23 ` Deborah Brouwer
2026-10-28 15:58 ` Liviu Dudau
2026-09-22 20:44 ` [PATCH v1 05/27] drm/panthor: Move register base offsets to the HW description Karunika Choo
2026-10-28 16:03 ` Liviu Dudau
2026-09-22 20:45 ` [PATCH v1 06/27] drm/panthor: Derive MMU AS register addresses from base and stride Karunika Choo
2026-09-22 21:00 ` sashiko-bot
2026-10-28 16:06 ` Liviu Dudau
2026-09-22 20:45 ` [PATCH v1 07/27] dt-bindings: gpu: mali-valhall-csf: Add Mali Gen5 AM compatible Karunika Choo
2026-09-28 10:02 ` Krzysztof Kozlowski
2026-09-22 20:45 ` [PATCH v1 08/27] drm/panthor: Add Mali v15 hardware support Karunika Choo
2026-09-22 20:58 ` sashiko-bot
2026-10-28 13:21 ` Liviu Dudau
2026-10-28 16:20 ` Liviu Dudau
2026-09-22 20:45 ` [PATCH v1 09/27] drm/panthor: Skip devfreq when no OPP table is present Karunika Choo
2026-10-28 16:26 ` Liviu Dudau
2026-09-22 20:45 ` [PATCH v1 10/27] dt-bindings: gpu: panthor: Document panthor-system bindings Karunika Choo
2026-09-22 20:56 ` sashiko-bot
2026-09-28 10:05 ` Krzysztof Kozlowski
2026-09-22 20:45 ` [PATCH v1 11/27] drm/panthor: Add AM_SYSTEM platform driver Karunika Choo
2026-09-22 20:59 ` sashiko-bot
2026-09-22 20:45 ` [PATCH v1 12/27] dt-bindings: gpu: panthor: Document panthor-arbitration bindings Karunika Choo
2026-09-22 20:59 ` sashiko-bot
2026-09-28 10:06 ` Krzysztof Kozlowski
2026-09-22 20:45 ` [PATCH v1 13/27] drm/panthor: Add AM_PARTITION_CONTROL support Karunika Choo
2026-09-22 20:57 ` sashiko-bot
2026-09-22 20:45 ` [PATCH v1 14/27] drm/panthor: Add AM message helpers Karunika Choo
2026-09-22 20:58 ` sashiko-bot
2026-09-22 20:45 ` [PATCH v1 15/27] drm/panthor: Add AM_RESOURCE_GROUP support Karunika Choo
2026-09-22 20:56 ` sashiko-bot
2026-09-22 20:45 ` [PATCH v1 16/27] drm/panthor: Add arbitration scheduler Karunika Choo
2026-09-22 21:00 ` sashiko-bot
2026-09-22 20:45 ` [PATCH v1 17/27] drm/panthor: Route arbitration events Karunika Choo
2026-09-22 21:04 ` sashiko-bot
2026-09-22 20:45 ` [PATCH v1 18/27] dt-bindings: gpu: panthor: Document AW assignment DT property Karunika Choo
2026-09-22 20:57 ` sashiko-bot
2026-09-28 10:06 ` Krzysztof Kozlowski
2026-09-22 20:45 ` [PATCH v1 19/27] drm/panthor: Add AW assignment tracking Karunika Choo
2026-09-22 20:45 ` [PATCH v1 20/27] drm/panthor: Handle partition control INVALID_COMMAND interrupt Karunika Choo
2026-09-22 21:04 ` sashiko-bot
2026-09-22 20:45 ` [PATCH v1 21/27] drm/panthor: Request AW to yield GPU access on idle Karunika Choo
2026-09-22 21:07 ` sashiko-bot
2026-09-22 20:45 ` [PATCH v1 22/27] drm/panthor: Add access-window support Karunika Choo
2026-09-22 21:05 ` sashiko-bot
2026-09-22 20:45 ` [PATCH v1 23/27] drm/panthor: Synchronize HW component PM transitions Karunika Choo
2026-09-22 20:45 ` [PATCH v1 24/27] drm/panthor: Route HW component PM through access windows Karunika Choo
2026-09-22 21:06 ` sashiko-bot
2026-09-22 20:45 ` [PATCH v1 25/27] drm/panthor: Tolerate access-window loss during HW waits Karunika Choo
2026-09-22 21:14 ` sashiko-bot
2026-09-22 20:45 ` [PATCH v1 26/27] drm/panthor: Prevent missed post-yield cleanup due to reset Karunika Choo
2026-09-22 21:12 ` sashiko-bot
2026-09-22 20:45 ` [PATCH v1 27/27] drm/panthor: Release GPU access immediately for out-of-band grants Karunika Choo
2026-09-22 21:06 ` sashiko-bot
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=auIbeK8uH-ZWRyu-@e142607 \
--to=liviu.dudau@arm.com \
--cc=airlied@gmail.com \
--cc=boris.brezillon@collabora.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=karunika.choo@arm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=maarten.lankhorst@linux.intel.com \
--cc=mripard@kernel.org \
--cc=nd@arm.com \
--cc=simona@ffwll.ch \
--cc=steven.price@arm.com \
--cc=tzimmermann@suse.de \
/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.