dri-devel.lists.freedesktop.org archive mirror
 help / color / mirror / Atom feed
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.

  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).