From: Matt Coster <Matt.Coster@imgtec.com>
To: Geert Uytterhoeven <geert+renesas@glider.be>,
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>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Marek Vasut <marek.vasut+renesas@mailbox.org>,
Adam Ford <aford173@gmail.com>
Cc: Frank Binns <Frank.Binns@imgtec.com>,
Alessio Belle <Alessio.Belle@imgtec.com>,
Brajesh Gupta <Brajesh.Gupta@imgtec.com>,
Alexandru Dadu <Alexandru.Dadu@imgtec.com>,
Luigi Santivetti <Luigi.Santivetti@imgtec.com>,
"dri-devel@lists.freedesktop.org"
<dri-devel@lists.freedesktop.org>,
"linux-renesas-soc@vger.kernel.org"
<linux-renesas-soc@vger.kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] Revert "drm/imagination: Warn or error on unsupported hardware"
Date: Mon, 11 May 2026 14:05:54 +0000 [thread overview]
Message-ID: <f46eff18-4a5c-4c25-a0b7-71cdbd444014@imgtec.com> (raw)
In-Reply-To: <caf5e011a5b3fbdbab8c50d064bc8342212d5cc1.1778505897.git.geert+renesas@glider.be>
[-- Attachment #1.1: Type: text/plain, Size: 7122 bytes --]
Hi Geert,
On 11/05/2026 14:28, Geert Uytterhoeven wrote:
> Revert commit 1c21f240fbc1e47b94e68abfa2da2c01ed29a74d, as it stopped
> the driver from working on various Renesas R-Car SoCs.
>
> Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
> ---
> DT binding documentation updates were reviewed by the drm/imagination
> maintainers[1][2][3], DTS additions were reviewed and/or acked by the
> drm/imagination maintainers[4][5][6], and firmware is available[7].
> Note that the GPU nodes were not enabled in board DTS files before, as
> not having suitable firmware installed under /lib/firmware could trigger
> a crash, not directly related to drm/imagination driver support. This
> was fixed only recently in v7.1-rc3[8], so board enablement[9] is now
> unblocked.
We will freely acknowledge that the sequencing was not ideal here. This
patch should probably have been sent before we started accepting DTS
changes for those Renesas platforms. However, the purpose of this patch
still stands.
We're not saying we never want to list all these platforms as
"supported", but we don't want to mislead anyone into thinking the GPU
on these platforms will function in any meaningful way just because they
now have DTS nodes. We were originally convinved to allow these DTS
nodes to be added since it would facilitate active development on these
platforms, but this does not mean that we as a team have the bandwidth
to do that work ourselves at this time.
Our main concern is around the UAPI: we don't know for sure that support
for these platforms (which are significantly older than anything we
currently support) can be correctly implemented without UAPI changes. To
that end, we don't want to back ourselves into a corner where the UAPI
cannot be updated at a later date.
There's a similar mechanism in place in userspace: the user must set an
environment variable (PVR_I_WANT_A_BROKEN_VULKAN_DRIVER) to use
platforms for which we don't promise API conformance, but just like in
the kernel, this is not a compile time option and any user and/or
developer can enable it if they know what they're doing.
As for "it stopped the driver from working", no it didn't. The driver
never really worked on those platforms, at least not in any useful way,
and certainly not sufficiently for any non-developer user to benefit in
any way from it. The only change is that the user must now acknowledge
that this is the case to clarify that they shouldn't expect much (if
anything) to work. Just to be explicit, "firmware boots" is a loooooong
way from "ooh pretty triangles".
Would you prefer a different approach to providing this information to
users, perhaps a purely docs-based solution? I'm not convinced that
would be as effective at preserving our ability to mutate the UAPI for
these as-yet-unsupported platforms.
Cheers,
Matt
>
> [1] commit 18ff1dc462ef6dac ("dt-bindings: gpu: img,powervr-rogue:
> Document GX6250 GPU in Renesas R-Car M3-W/M3-W+")
> [2] commit 6126a7f27f002408 ("dt-bindings: gpu: img,powervr-rogue:
> Document GE7800 GPU in Renesas R-Car M3-N")
> [3] commit 67549b73f10b8517 ("dt-bindings: gpu: img,powervr-rogue:
> Document GE7800 GPU in Renesas R-Car V3U")
> [4] commit 73100fa8e4ce21cc ("arm64: dts: renesas: r8a77960: Add GX6250
> GPU node")
> [5] commit 6e20a9d94a459b4e ("arm64: dts: renesas: r8a77961: Add GX6250
> GPU node")
> [6] commit 303a5185e024ee62 ("arm64: dts: renesas: r8a77965: Add GE7800
> GPU node")
> [7] https://gitlab.freedesktop.org/imagination/linux-firmware/-/tree/powervr/powervr
> [8] commit 26735dfdd8930d9e ("pmdomain: core: Fix detach procedure for
> virtual devices in genpd")
> [9] https://lore.kernel.org/all/20251027211249.95826-1-marek.vasut+renesas@mailbox.org/
> ---
> drivers/gpu/drm/imagination/pvr_device.c | 73 +-----------------------
> 1 file changed, 1 insertion(+), 72 deletions(-)
>
> diff --git a/drivers/gpu/drm/imagination/pvr_device.c b/drivers/gpu/drm/imagination/pvr_device.c
> index dbb6f5a8ded12a42..b7984563627de753 100644
> --- a/drivers/gpu/drm/imagination/pvr_device.c
> +++ b/drivers/gpu/drm/imagination/pvr_device.c
> @@ -508,77 +508,6 @@ pvr_gpuid_decode_string(const struct pvr_device *pvr_dev,
> }
> EXPORT_SYMBOL_IF_KUNIT(pvr_gpuid_decode_string);
>
> -static bool pvr_exp_hw_support;
> -module_param_named(exp_hw_support, pvr_exp_hw_support, bool, 0600);
> -MODULE_PARM_DESC(exp_hw_support, "Bypass runtime checks for fully supported GPU cores. WARNING: enabling this option may result in a buggy, insecure, or otherwise unusable driver.");
> -
> -/**
> - * enum pvr_gpu_support_level - The level of support for a gpu_id in the current
> - * version of the driver.
> - *
> - * @PVR_GPU_UNKNOWN: Cores that are unknown to the driver. These may not even exist.
> - * @PVR_GPU_EXPERIMENTAL: Cores that have experimental support.
> - * @PVR_GPU_SUPPORTED: Cores that are supported and maintained.
> - */
> -enum pvr_gpu_support_level {
> - PVR_GPU_UNKNOWN,
> - PVR_GPU_EXPERIMENTAL,
> - PVR_GPU_SUPPORTED,
> -};
> -
> -static enum pvr_gpu_support_level
> -pvr_gpu_support_level(const struct pvr_gpu_id *gpu_id)
> -{
> - switch (pvr_gpu_id_to_packed_bvnc(gpu_id)) {
> - case PVR_PACKED_BVNC(33, 15, 11, 3):
> - case PVR_PACKED_BVNC(36, 53, 104, 796):
> - return PVR_GPU_SUPPORTED;
> -
> - case PVR_PACKED_BVNC(36, 52, 104, 182):
> - return PVR_GPU_EXPERIMENTAL;
> -
> - default:
> - return PVR_GPU_UNKNOWN;
> - }
> -}
> -
> -static int
> -pvr_check_gpu_supported(struct pvr_device *pvr_dev,
> - const struct pvr_gpu_id *gpu_id)
> -{
> - struct drm_device *drm_dev = from_pvr_device(pvr_dev);
> -
> - switch (pvr_gpu_support_level(gpu_id)) {
> - case PVR_GPU_SUPPORTED:
> - if (pvr_exp_hw_support)
> - drm_info(drm_dev, "Module parameter 'exp_hw_support' was set, but this hardware is fully supported by the current driver.");
> -
> - break;
> -
> - case PVR_GPU_EXPERIMENTAL:
> - if (!pvr_exp_hw_support) {
> - drm_err(drm_dev, "Unsupported GPU! Set 'exp_hw_support' to bypass this check.");
> - return -ENODEV;
> - }
> -
> - drm_warn(drm_dev, "Running on unsupported hardware; you may encounter bugs!");
> - break;
> -
> - /* NOTE: This code path may indicate misbehaving hardware. */
> - case PVR_GPU_UNKNOWN:
> - default:
> - if (!pvr_exp_hw_support) {
> - drm_err(drm_dev, "Unknown GPU! Set 'exp_hw_support' to bypass this check.");
> - return -ENODEV;
> - }
> -
> - drm_warn(drm_dev, "Running on unknown hardware; expect issues.");
> - break;
> - }
> -
> - return 0;
> -}
> -
> static char *pvr_gpuid_override;
> module_param_named(gpuid, pvr_gpuid_override, charp, 0400);
> MODULE_PARM_DESC(gpuid, "GPU ID (BVNC) to be used instead of the value read from hardware.");
> @@ -609,7 +538,7 @@ pvr_load_gpu_id(struct pvr_device *pvr_dev)
> return err;
> }
>
> - return pvr_check_gpu_supported(pvr_dev, gpu_id);
> + return 0;
> }
>
> /**
--
Matt Coster
E: matt.coster@imgtec.com
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 236 bytes --]
next prev parent reply other threads:[~2026-05-11 14:06 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-11 13:28 [PATCH] Revert "drm/imagination: Warn or error on unsupported hardware" Geert Uytterhoeven
2026-05-11 14:05 ` Matt Coster [this message]
2026-05-11 14:43 ` Geert Uytterhoeven
2026-05-12 10:00 ` Matt Coster
2026-05-16 5:12 ` Claude review: " Claude Code Review Bot
2026-05-16 5:12 ` Claude Code Review 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=f46eff18-4a5c-4c25-a0b7-71cdbd444014@imgtec.com \
--to=matt.coster@imgtec.com \
--cc=Alessio.Belle@imgtec.com \
--cc=Alexandru.Dadu@imgtec.com \
--cc=Brajesh.Gupta@imgtec.com \
--cc=Frank.Binns@imgtec.com \
--cc=Luigi.Santivetti@imgtec.com \
--cc=aford173@gmail.com \
--cc=airlied@gmail.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=geert+renesas@glider.be \
--cc=gregkh@linuxfoundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-renesas-soc@vger.kernel.org \
--cc=maarten.lankhorst@linux.intel.com \
--cc=marek.vasut+renesas@mailbox.org \
--cc=mripard@kernel.org \
--cc=simona@ffwll.ch \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox