mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-08-23 15:26:50 -04:00
Documentation: drm: Add entry for removing spsc_queue to TODO list
drm_sched contains a lockless queue (spsc_queue) that seems to be useless and potentially unsound. Add a TODO list entry for replacing spsc_queue with a locked list. Reviewed-by: Christian König <christian.koenig@amd.com> Signed-off-by: Philipp Stanner <phasta@kernel.org> Link: https://patch.msgid.link/20260529215207.115513-2-phasta@kernel.org
This commit is contained in:
@@ -948,6 +948,47 @@ Contact: Philipp Stanner <phasta@kernel.org>
|
||||
|
||||
Level: Intermediate
|
||||
|
||||
Replace the lockless queue with a locked list
|
||||
---------------------------------------------
|
||||
|
||||
drm_sched is the only user in the entire kernel of a special lockless queue, the
|
||||
spsc_queue. This queue utilizes:
|
||||
|
||||
- preempt_disable()
|
||||
- atomic instructions
|
||||
- memory barriers
|
||||
- ACCESS_ONCE()
|
||||
|
||||
whereas a conventional spinlock utilizes:
|
||||
|
||||
- preempt_disable()
|
||||
- 1 atomic instruction for taking / releasing the lock
|
||||
- memory barriers
|
||||
|
||||
Moreover, drm_sched_entity_push_job(), the only user of spsc_queue_push(), has
|
||||
to take a lock in some situations anyways and calls to it are often serialized
|
||||
with a driver lock.
|
||||
|
||||
It is, thus, highly questionable whether the lockless queue grants any advantage
|
||||
at all. Considering that its internals are not well documented and its correctness
|
||||
is not formally proven, it seems desirable to replace the queue with a mere list
|
||||
or hlist that is protected by a spinlock.
|
||||
|
||||
Tasks:
|
||||
|
||||
- Replace the spsc_queue in drm/sched (and those who might access the scheduler's
|
||||
internal queue) with a spinlock + (h)list.
|
||||
- Ideally, check with some micro benchmarks and real world tests (preferably
|
||||
with amdgpu) for relevant performance regressions.
|
||||
- Remove the spsc_queue from the kernel altogether.
|
||||
|
||||
Contact:
|
||||
|
||||
- Philipp Stanner <phasta@kernel.org>
|
||||
- Christian König <christian.koenig@amd.com>
|
||||
|
||||
Level: Beginner
|
||||
|
||||
Outside DRM
|
||||
===========
|
||||
|
||||
|
||||
Reference in New Issue
Block a user