From: Matthew Brost <matthew.brost@intel.com>
To: Tejun Heo <tj@kernel.org>
Cc: <intel-xe@lists.freedesktop.org>,
<dri-devel@lists.freedesktop.org>,
"Lai Jiangshan" <jiangshanlai@gmail.com>,
<linux-kernel@vger.kernel.org>
Subject: Re: [RFC PATCH 01/12] workqueue: Add interface to teach lockdep to warn on reclaim violations
Date: Wed, 25 Mar 2026 18:49:59 -0700 [thread overview]
Message-ID: <acSQxyclGs7FYvbS@gsse-cloud1> (raw)
In-Reply-To: <acQGehvhyfU5j6uL@slm.duckdns.org>
On Wed, Mar 25, 2026 at 05:59:54AM -1000, Tejun Heo wrote:
> Sorry about the tardiness. Traveling during spring break. Getting more than
> I can catch up with each day.
>
> On Sun, Mar 15, 2026 at 09:32:44PM -0700, Matthew Brost wrote:
> > @@ -403,6 +403,7 @@ enum wq_flags {
> > */
> > WQ_POWER_EFFICIENT = 1 << 7,
> > WQ_PERCPU = 1 << 8, /* bound to a specific cpu */
> > + WQ_MEM_WARN_ON_RECLAIM = 1 << 9, /* teach lockdep to warn on reclaim */
>
> Shouldn't this require WQ_MEM_RECLAIM?
>
Yes, so what is suggestion here? If WQ_MEM_WARN_ON_RECLAIM is set
without WQ_MEM_RECLAIM fail the WQ creation with -EINVAL?
> > +/**
> > + * workqueue_is_reclaim_annotated() - Test whether a workqueue is annotated for
> > + * reclaim safety
> > + * @wq: workqueue to test
> > + *
> > + * Returns true if @wq is flags have both %WQ_MEM_WARN_ON_RECLAIM and
> > + * %WQ_MEM_RECLAIM set. A workqueue marked with these flags indicates that it
> > + * participates in reclaim paths, and therefore must not perform memory
> > + * allocations that can recurse into reclaim (e.g., GFP_KERNEL is not allowed).
> > + *
> > + * Drivers can use this helper to enforce reclaim-safe behavior on workqueues
> > + * that are created or provided elsewhere in the code.
> > + *
> > + * Return:
> > + * true if the workqueue is reclaim-annotated, false otherwise.
> > + */
> > +bool workqueue_is_reclaim_annotated(struct workqueue_struct *wq)
> > +{
> > + return (wq->flags & WQ_MEM_WARN_ON_RECLAIM) &&
> > + (wq->flags & WQ_MEM_RECLAIM);
> > +}
> > +EXPORT_SYMBOL_GPL(workqueue_is_reclaim_annotated);
>
> Why is this function necessary? It feels rather odd to use wq as the source
> of this information. Shouldn't that be an innate knowledge of the code
> that's using this?
This, for example, would be used in DRM sched (the existing scheduler)
or DRM dep (the proposed replacement) to ensure that driver-allocated
WQs passed into the layers are created with these flags. DRM sched or
DRM dep has strict DMA-fencing, thus reclaim rule that we expect DRM
drivers to follow. Historically, DRM drivers have broken these rules
quite often, and we no longer want to give them the opportunity to do
so—lockdep should enforce them.
Matt
>
> Thanks.
>
> --
> tejun
next prev parent reply other threads:[~2026-03-26 1:50 UTC|newest]
Thread overview: 50+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20260316043255.226352-1-matthew.brost@intel.com>
2026-03-16 4:32 ` [RFC PATCH 01/12] workqueue: Add interface to teach lockdep to warn on reclaim violations Matthew Brost
2026-03-25 15:59 ` Tejun Heo
2026-03-26 1:49 ` Matthew Brost [this message]
2026-03-26 2:19 ` Tejun Heo
2026-03-27 4:33 ` Matthew Brost
2026-03-16 4:32 ` [RFC PATCH 02/12] drm/dep: Add DRM dependency queue layer Matthew Brost
2026-03-16 9:16 ` Boris Brezillon
2026-03-17 5:22 ` Matthew Brost
2026-03-17 8:48 ` Boris Brezillon
2026-03-16 10:25 ` Danilo Krummrich
2026-03-17 5:10 ` Matthew Brost
2026-03-17 12:19 ` Danilo Krummrich
2026-03-18 23:02 ` Matthew Brost
2026-03-17 2:47 ` Daniel Almeida
2026-03-17 5:45 ` Matthew Brost
2026-03-17 7:17 ` Miguel Ojeda
2026-03-17 8:26 ` Matthew Brost
2026-03-17 12:04 ` Daniel Almeida
2026-03-17 19:41 ` Miguel Ojeda
2026-03-23 17:31 ` Matthew Brost
2026-03-23 17:42 ` Miguel Ojeda
2026-03-17 18:14 ` Matthew Brost
2026-03-17 19:48 ` Daniel Almeida
2026-03-17 20:43 ` Boris Brezillon
2026-03-18 22:40 ` Matthew Brost
2026-03-19 9:57 ` Boris Brezillon
2026-03-22 6:43 ` Matthew Brost
2026-03-23 7:58 ` Matthew Brost
2026-03-23 10:06 ` Boris Brezillon
2026-03-23 17:11 ` Matthew Brost
2026-03-17 12:31 ` Danilo Krummrich
2026-03-17 14:25 ` Daniel Almeida
2026-03-17 14:33 ` Danilo Krummrich
2026-03-18 22:50 ` Matthew Brost
2026-03-17 8:47 ` Christian König
2026-03-17 14:55 ` Boris Brezillon
2026-03-18 23:28 ` Matthew Brost
2026-03-19 9:11 ` Boris Brezillon
2026-03-23 4:50 ` Matthew Brost
2026-03-23 9:55 ` Boris Brezillon
2026-03-23 17:08 ` Matthew Brost
2026-03-23 18:38 ` Matthew Brost
2026-03-24 9:23 ` Boris Brezillon
2026-03-24 16:06 ` Matthew Brost
2026-03-25 2:33 ` Matthew Brost
2026-03-24 8:49 ` Boris Brezillon
2026-03-24 16:51 ` Matthew Brost
2026-03-17 16:30 ` Shashank Sharma
2026-03-16 4:32 ` [RFC PATCH 11/12] accel/amdxdna: Convert to drm_dep scheduler layer Matthew Brost
2026-03-16 4:32 ` [RFC PATCH 12/12] drm/panthor: " Matthew Brost
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=acSQxyclGs7FYvbS@gsse-cloud1 \
--to=matthew.brost@intel.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=intel-xe@lists.freedesktop.org \
--cc=jiangshanlai@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--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