Intel-XE Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Matthew Brost <matthew.brost@intel.com>
To: intel-xe@lists.freedesktop.org, dri-devel@lists.freedesktop.org,
	linux-kernel@vger.kernel.org
Cc: tj@kernel.org, jiangshanlai@gmail.com, christian.koenig@amd.com,
	ltuikov89@gmail.com, daniel@ffwll.ch
Subject: [RFC PATCH 0/3] Use user-defined workqueue lockdep map for drm sched
Date: Tue, 30 Jul 2024 15:17:39 -0700	[thread overview]
Message-ID: <20240730221742.2248527-1-matthew.brost@intel.com> (raw)

By default, each DRM scheduler instance creates an ordered workqueue for
submission, and each workqueue creation allocates a new lockdep map.
This becomes problematic when a DRM scheduler is created for every user
queue (e.g., in DRM drivers with firmware schedulers like Xe) due to the
limited number of available lockdep maps. With numerous user queues
being created and destroyed, lockdep may run out of maps, leading to
lockdep being disabled. Xe mitigated this by creating a pool of
workqueues for DRM scheduler use. However, this approach also encounters
issues if the driver is unloaded and reloaded multiple times or if many
VFs are probed.

To address this, we propose creating a single lockdep map for all DRM
scheduler workqueues, which will also resolve issues for other DRM
drivers that create a DRM scheduler per user queue.

This solution has been tested by unloading and reloading the Xe driver.
Before this series, around 30 driver reloads would result in lockdep
being turned off. After implementing the series, the driver can be
unloaded and reloaded hundreds of times without issues.

This is being sent as an RFC to gather feedback from workqueue
maintainers on the viability of this solution.

Matt

Matthew Brost (3):
  workqueue: Add interface for user-defined workqueue lockdep map
  drm/sched: Use drm sched lockdep map for submit_wq
  drm/xe: Drop GuC submit_wq pool

 drivers/gpu/drm/scheduler/sched_main.c | 12 +++++-
 drivers/gpu/drm/xe/xe_guc_submit.c     | 60 +-------------------------
 drivers/gpu/drm/xe/xe_guc_types.h      |  7 ---
 include/linux/workqueue.h              |  3 ++
 kernel/workqueue.c                     | 44 ++++++++++++++++---
 5 files changed, 52 insertions(+), 74 deletions(-)

-- 
2.34.1


             reply	other threads:[~2024-07-30 22:16 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-07-30 22:17 Matthew Brost [this message]
2024-07-30 22:17 ` [RFC PATCH 1/3] workqueue: Add interface for user-defined workqueue lockdep map Matthew Brost
2024-07-30 22:34   ` Tejun Heo
2024-07-30 22:53     ` Matthew Brost
2024-07-30 22:56       ` Tejun Heo
2024-07-30 22:56         ` Matthew Brost
2024-07-30 22:17 ` [RFC PATCH 2/3] drm/sched: Use drm sched lockdep map for submit_wq Matthew Brost
2024-07-30 22:17 ` [RFC PATCH 3/3] drm/xe: Drop GuC submit_wq pool Matthew Brost
2024-07-30 22:22 ` ✓ CI.Patch_applied: success for Use user-defined workqueue lockdep map for drm sched Patchwork
2024-07-30 22:22 ` ✓ CI.checkpatch: " Patchwork
2024-07-30 22:23 ` ✓ CI.KUnit: " Patchwork
2024-07-30 22:35 ` ✓ CI.Build: " Patchwork
2024-07-30 22:37 ` ✓ CI.Hooks: " Patchwork
2024-07-30 22:39 ` ✗ CI.checksparse: warning " Patchwork
2024-07-30 22:58 ` ✓ CI.BAT: success " Patchwork
2024-07-31  0:11 ` ✗ CI.FULL: failure " Patchwork

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=20240730221742.2248527-1-matthew.brost@intel.com \
    --to=matthew.brost@intel.com \
    --cc=christian.koenig@amd.com \
    --cc=daniel@ffwll.ch \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=intel-xe@lists.freedesktop.org \
    --cc=jiangshanlai@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=ltuikov89@gmail.com \
    --cc=tj@kernel.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