From: Marek Vasut <marek.vasut@mailbox.org>
To: Frank Binns <Frank.Binns@imgtec.com>,
"aford173@gmail.com" <aford173@gmail.com>
Cc: "matthew.brost@intel.com" <matthew.brost@intel.com>,
Sarah Walker <Sarah.Walker@imgtec.com>,
"dri-devel@lists.freedesktop.org"
<dri-devel@lists.freedesktop.org>,
"christian.koenig@amd.com" <christian.koenig@amd.com>,
"luben.tuikov@amd.com" <luben.tuikov@amd.com>,
"dakr@redhat.com" <dakr@redhat.com>,
Donald Robson <Donald.Robson@imgtec.com>,
"boris.brezillon@collabora.com" <boris.brezillon@collabora.com>,
"sumit.semwal@linaro.org" <sumit.semwal@linaro.org>,
"faith.ekstrand@collabora.com" <faith.ekstrand@collabora.com>
Subject: Re: [PATCH v3 07/17] drm/imagination: Add GPU ID parsing and firmware loading
Date: Wed, 5 Jul 2023 20:10:40 +0200 [thread overview]
Message-ID: <072d786b-f10d-a7d6-163c-e70be4bad1f3@mailbox.org> (raw)
In-Reply-To: <9c11a1afd5e568b3daebc0aff1cf71650adf3dca.camel@imgtec.com>
On 7/5/23 15:13, Frank Binns wrote:
> On Mon, 2023-06-26 at 10:38 -0500, Adam Ford wrote:
>> On Mon, Jun 26, 2023 at 8:22 AM Frank Binns <Frank.Binns@imgtec.com> wrote:
>>> Hi Adam,
>>>
>>> On Sat, 2023-06-17 at 07:48 -0500, Adam Ford wrote:
>>>> On Tue, Jun 13, 2023 at 10:20 AM Sarah Walker <sarah.walker@imgtec.com> wrote:
>>>>> Read the GPU ID register at probe time and select the correct
>>>>> features/quirks/enhancements. Use the GPU ID to form the firmware
>>>>> file name and load the firmware.
>>>>
>>>> I have a Rogue 6250 variant, but the BVNC is returning a slightly
>>>> different revision than the firmware that's currently available, and
>>>> the older firmware for the vendor driver doesn't work with this new
>>>> code.
>>>>
>>>> Linux responds with Unsupported BVNC: 4.45.2.58. From what I can
>>>> tell, the closest available firmware is 4.40.2.51.
>>>>
>>>> Will there be more firmware variants in the future or will there be
>>>> some options to build the firmware somehow?
>>>
>>> We don't plan to support the SoC vendor provided firmware binaries as this will
>>> mean having to deal with many different versions of the firmware and its
>>> interface. Specifically, the interface can change in backwards incompatible ways
>>> between releases, it changes based on the hardware feature set & bugs and it's
>>> split across userspace & the kernel. This makes these SoC provided firmware
>>> binaries very difficult to support in this new driver.
>>
>> Thanks for the response.
>>
>> That makes sense. I would hope that various SoC vendors would jump on
>> the bandwagon to work with your group to get their hardware supported.
>>> As an alternative, we'll be releasing firmware binaries as we add support for
>>> more Rogue GPUs. We'll also release binaries upon request, in case others in the
>>> community want to work on support in the meantime - we're just getting things
>>> set up for this at the moment.
>>
>> The Mesa side of things appears to be missing some documentation, and
>> the power VR stuff still appears listed as experimental. Is there
>> some documentation somewhere that would explain to someone how to go
>> about porting the Rogue 6250 to a different hardware variant of the
>> 6250? I don't really know the difference between BVNC of 4.45.2.58
>> and 4.40.2.51, but I can't imagine they are drastically different.
>
> One thing I forgot to mention is that, alongside the firmware binaries, we'll
> also provide the corresponding device info, e.g. for Mesa:
> https://gitlab.freedesktop.org/mesa/mesa/-/blob/e714b35301a33145399f8939ca864ffd14b49de9/src/imagination/common/pvr_device_info.c#L32-125
>
> We don't have any specific porting documentation, but we did just send out a
> Mesa MR adding some initial (basic) documentation:
> https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23992
>
> In terms of differences between the two GX6250 variants, it doesn't seem that
> there's anything feature-wise that will require any driver changes that are
> specific to the 4.45.2.58 variant (the different firmware should in theory be
> sufficient). There are still some driver changes required, however.
>
> Assuming the SoC you're interested in is already well supported upstream and the
> clocks, power controllers, etc needed by the GPU are also already supported then
> the following changes will be required at a minimum:
>
> 1. A GPU node will need adding to the device tree source file for your specific
> board
> 2. The compatible string for the GPU node will need adding to the list of
> supported devices in the kernel driver (grep for "dt_match" in the driver
> code)
> 3. The device info we provide alongside the firmware binary will need adding to
> the kernel driver and Mesa
> 4. The compatible string for the GPU and display controller device tree nodes
> will need adding to the Vulkan driver (grep for "pvr_drm_configs" in the Mesa
> code to see existing examples)
>
> Hopefully that covers everything, but no doubt I missed something!
>
> With respect to the experimental status of the driver, I think there are three
> things that need to happen before we can drop this tag. Firstly, the kernel
> driver needs to be merged to the kernel. Secondly, we need to pass Khronos
> conformance on at least one of the devices we support (our current focus is on
> the AXE-1-16M). Finally, we need to upstream all our Mesa changes. This is
> something that we've been chipping away at, but we do have a big backlog in our
> public branch [1]. I expect it's going to be quite some time until all of this
> work is complete.
>
> While so much code is sitting in downstream branches I think it's going to be
> somewhat painful for people to meaningfully contribute to the driver itself.
> Effort is probably best spent on getting the other drivers, which the GPU driver
> depends on, upstream for the platform(s) you're interested in.
>
> Just to say that I'm by no means trying to put you off from contributing, but
> simply trying to warn you that until the driver is out of its experimental
> state, a lot of things are going to be in flux and the development process is
> currently a lot more complicated.
>
> It's also worth highlighting that we're a small team tackling a very large job!
> We're doing our best to do things in the proper way and to lay good foundations
> for the future. We're also learning along the way, so please bear with us :-)
Last year I spent considerable amount of time trying to bring this up on
R-Car M3-W, but that all failed due to unavailable firmware for this GPU
revision. The GPU is also GX6250 , so supporting it should be basically
trivial, considering how the R-Car Gen3 upstream support is all there
and the driver already supports GX6250 .
Would it be possible for imgtec to provide suitable firmware for this
GX6250 revision, so the bring up effort could be resumed ?
I think that would also yield a couple more reviewers of this driver,
since without a suitable firmware, the kernel driver and user space
stack can not be tested, so there is no point in reviewing or even
merging such untestable code.
next prev parent reply other threads:[~2023-07-06 7:37 UTC|newest]
Thread overview: 50+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-06-13 14:47 [PATCH v3 00/17] Imagination Technologies PowerVR DRM driver Sarah Walker
2023-06-13 14:47 ` [PATCH v3 01/17] sizes.h: Add entries between 32G and 64T Sarah Walker
2023-06-16 12:10 ` Linus Walleij
2023-06-26 13:25 ` Frank Binns
2023-06-13 14:47 ` [PATCH v3 02/17] dt-bindings: gpu: Add Imagination Technologies PowerVR GPU Sarah Walker
2023-06-13 17:38 ` Andrew Davis
2023-06-16 11:23 ` Frank Binns
2023-06-13 18:24 ` Krzysztof Kozlowski
2023-06-14 14:34 ` Frank Binns
2023-06-15 20:50 ` Rob Herring
2023-06-16 11:27 ` Frank Binns
2023-06-16 12:48 ` Linus Walleij
2023-06-16 14:23 ` Rob Herring
2023-07-04 15:13 ` Frank Binns
2023-07-05 7:08 ` Linus Walleij
2023-06-13 14:47 ` [PATCH v3 03/17] drm/imagination/uapi: Add PowerVR driver UAPI Sarah Walker
2023-06-13 14:47 ` [PATCH v3 04/17] drm/imagination: Add skeleton PowerVR driver Sarah Walker
2023-07-07 12:46 ` Maxime Ripard
2023-07-14 13:15 ` Frank Binns
2023-06-13 14:47 ` [PATCH v3 05/17] drm/imagination: Get GPU resources Sarah Walker
2023-06-13 18:12 ` Andrew Davis
2023-06-16 11:23 ` Frank Binns
2023-07-07 12:47 ` Maxime Ripard
2023-07-14 13:39 ` Frank Binns
2023-06-13 14:47 ` [PATCH v3 06/17] drm/imagination: Add GPU register and FWIF headers Sarah Walker
2023-06-13 14:47 ` [PATCH v3 07/17] drm/imagination: Add GPU ID parsing and firmware loading Sarah Walker
2023-06-17 12:48 ` Adam Ford
2023-06-26 13:22 ` Frank Binns
2023-06-26 15:38 ` Adam Ford
2023-07-05 13:13 ` Frank Binns
2023-07-05 18:10 ` Marek Vasut [this message]
2023-06-13 14:47 ` [PATCH v3 08/17] drm/imagination: Add GEM and VM related code Sarah Walker
2023-06-13 14:47 ` [PATCH v3 09/17] drm/imagination: Implement power management Sarah Walker
2023-07-07 12:48 ` Maxime Ripard
2023-07-14 13:47 ` Frank Binns
2023-06-13 14:47 ` [PATCH v3 10/17] drm/imagination: Implement firmware infrastructure and META FW support Sarah Walker
2023-06-13 14:47 ` [PATCH v3 11/17] drm/imagination: Implement MIPS firmware processor and MMU support Sarah Walker
2023-06-13 14:47 ` [PATCH v3 12/17] drm/imagination: Implement free list and HWRT create and destroy ioctls Sarah Walker
2023-06-13 14:47 ` [PATCH v3 13/17] drm/imagination: Implement context creation/destruction ioctls Sarah Walker
2023-06-13 14:47 ` [PATCH v3 14/17] drm/imagination: Implement job submission and scheduling Sarah Walker
2023-06-13 14:47 ` [PATCH v3 15/17] drm/imagination: Add firmware trace to debugfs Sarah Walker
2023-06-13 14:47 ` [PATCH v3 16/17] drm/imagination: Add driver documentation Sarah Walker
2023-06-13 14:48 ` [PATCH v3 17/17] arm64: dts: ti: k3-am62-main: Add GPU device node [DO NOT MERGE] Sarah Walker
2023-06-13 18:26 ` [PATCH v3 00/17] Imagination Technologies PowerVR DRM driver Krzysztof Kozlowski
2023-06-16 12:29 ` Linus Walleij
2023-06-16 14:06 ` H. Nikolaus Schaller
2023-06-26 13:45 ` Frank Binns
2023-06-26 18:48 ` H. Nikolaus Schaller
2023-06-16 14:08 ` H. Nikolaus Schaller
2023-06-26 13:31 ` Frank Binns
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=072d786b-f10d-a7d6-163c-e70be4bad1f3@mailbox.org \
--to=marek.vasut@mailbox.org \
--cc=Donald.Robson@imgtec.com \
--cc=Frank.Binns@imgtec.com \
--cc=Sarah.Walker@imgtec.com \
--cc=aford173@gmail.com \
--cc=boris.brezillon@collabora.com \
--cc=christian.koenig@amd.com \
--cc=dakr@redhat.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=faith.ekstrand@collabora.com \
--cc=luben.tuikov@amd.com \
--cc=matthew.brost@intel.com \
--cc=sumit.semwal@linaro.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).