[PATCH 000/156] drm/nouveau: replace "ioctl" interface between drm/nvkm

Ben Skeggs bskeggs at nvidia.com
Thu Apr 18 12:52:04 UTC 2024


On 17/4/24 14:15, Dave Airlie wrote:

> On Wed, 17 Apr 2024 at 10:57, Ben Skeggs <bskeggs at nvidia.com> wrote:
>> This is a series of cleanups that I intended on doing after posting
>> the initial GSP-RM support several months ago, and have now had the
>> opportunity to work on again.
>>
>> The main intention here is to replace the ioctl-like interface that
>> sits between NVKM and the nouveau DRM driver with more direct calls,
>> to reduce the call-chain complexity (and overhead).
>>
>> This is achieved by having NVKM return structs of info and function
>> pointers specific to each class, along with an opaque pointer to its
>> private data.  These are stored in the NVIF structs and used to call
>> directly into an implementation without handle lookups and multiple
>> layers of indirection.
>>
>> There's room for further cleanups and API changes from here, but for
>> now most of the API usage is exactly as it was before, as the series
>> has gotten quite large enough already.
>>
>> The first part of the series starts out by cleaning up some of the
>> interfaces within the DRM driver, and reimplementing the subset of
>> "ioctl" interfaces needed by userspace directly.
>>
>> A number of unused interfaces/function args are then removed so that
>> they don't need to be ported, and some initial renames/preparations
>> are made to the NVKM's user object implementations so that diffs of
>> the next set of patches are more straightforward to read.
>>
>> I then go through each class in turn, starting from the root of the
>> object tree (client), and working up from there.  The object ctors/
>> dtors are ported first, followed by sclass/map/etc, followed by the
>> class's methods, and then repeating the process with each of their
>> children.
>>
>> Objects remain accessible with the "ioctl" interface throughout the
>> changes (until their last use, after which they're removed from the
>> object rb entirely) to allow each change to be done independently.
>>
>> After all classes have been ported, some final cleanups are made to
>> the DRM driver to complete the series.
> Welcome back!

Hey!  Thank you :)


>
> Do you have a git tree with this in it, since I think at least patch
> 25 got stuck in moderation.

I've pushed a tree to 
https://gitlab.freedesktop.org/bskeggs/nouveau/-/tree/remove-ioctl


>
> Have you tested nouveau GL and nvk on top of this?

Yes I have, nvk mostly via zink (and vkcube ;)).


Ben.

>
> Dave.


More information about the Nouveau mailing list