[PATCH 0/4] drm/vc4: Clean-up the BO seqnos

Maíra Canal mcanal at igalia.com
Fri Dec 6 15:11:43 UTC 2024


On 06/12/24 11:17, Christian König wrote:
> Am 06.12.24 um 14:12 schrieb Maíra Canal:
>> This series introduces a series of clean-ups in BO reservations for the
>> VC4 driver. Currently, VC4 uses shared fences to track BO reservations as
>> several other DRM devices. But apart from the DMA reservation objects, 
>> VC4
>> also attaches seqnos to its BOs with the intention to track if the job 
>> that
>> uses such BO has finished.
>>
>> The seqno tracking system was introduced before the DMA reservation 
>> objects
>> and we ended up lefting it in the code after DMA resv was introduced. 
>> This
>> is redundant, as we can perfectly track the end of a job with a fence.
>> Therefore, this series focuses on eliminating the seqnos from the BO.
>>
>> This series introduces a series of clean-ups for BO reservations in 
>> the VC4
>> driver. Currently, VC4 uses shared fences to track BO reservations, 
>> similar
>> to many other DRM devices. However, in addition to DMA reservation 
>> objects,
>> VC4 has been maintaining a separate seqno tracking system for BOs to 
>> track
>> job completion.
>>
>> The seqno tracking system was implemented before DMA reservation objects
>> and was left in the code after DMA reservation's introduction. This
>> approach is now redundant, as job completion can be effectively tracked
>> using fences. Consequently, this series focuses on eliminating seqnos 
>> from
>> the BO implementation.
> 
> Just FYI, you duplicated the text somehow :)

Oops, that's a non-native English-speaker trying to write a v2 of a
paragraph :)

> 
>>
>> Patch Breakdown
>> ===============
>>
>> * Patch #1: Uses the DRM GEM implementation of 
>> `drm_gem_lock_reservations()`
>> and `drm_gem_unlock_reservations()` to replace the open-coded 
>> implementation
>> of this functions by VC4. A straightforward change with no functional
>> changes.
> 
> I actually pushed to remove drm_gem_lock_reservations() in favor of 
> using the drm_exec object.
> 
> It would be nice if you could use that one instead.

Okay, I'll use DRM exec in the next version. I'd appreciate if you could
take a look at the patches that remove the BOs seqnos.

Thanks for comments!

Best Regards,
- Maíra

> 
> Regards,
> Christian.
> 
>>
>> * Patch #2: Implements the VC4 wait BO IOCTL using DMA reservations. The
>> new implementation closely mirrors the V3D approach and removes the 
>> IOCTL's
>> dependency on BO sequence numbers.
>>
>> * Patch #3: The central piece of this patchset. It removes `bo->seqno`,
>> `bo->write_seqno`, and `exec->bin_dep_seqno` from the driver. As the 
>> seqno
>> tracking system is redundant, its deletion is relatively straightforward.
>> The only notable change is `vc4_async_set_fence_cb()`, which now uses
>> `dma_fence_add_callback()` to add the VC4 callback.
>>
>> * Patch #4: Deletes the now-unused function `vc4_queue_seqno_cb()`.
>>
>> Best Regards,
>> - Maíra
>>
>> Maíra Canal (4):
>>    drm/vc4: Use `drm_gem_lock_reservations()` instead of hard-coding
>>    drm/vc4: Use DMA Resv to implement VC4 wait BO IOCTL
>>    drm/vc4: Remove BOs seqnos
>>    drm/vc4: Remove `vc4_queue_seqno_cb()`
>>
>>   drivers/gpu/drm/vc4/vc4_crtc.c     |  22 ++---
>>   drivers/gpu/drm/vc4/vc4_drv.h      |  26 ++---
>>   drivers/gpu/drm/vc4/vc4_gem.c      | 147 ++++++-----------------------
>>   drivers/gpu/drm/vc4/vc4_validate.c |  11 ---
>>   4 files changed, 48 insertions(+), 158 deletions(-)
>>
> 



More information about the dri-devel mailing list