From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
To: Krzysztof Kozlowski <krzk@kernel.org>,
Hans de Goede <hansg@kernel.org>,
Matti Vaittinen <mazziesaccount@gmail.com>
Cc: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
"Rafael J. Wysocki" <rafael@kernel.org>,
Danilo Krummrich <dakr@kernel.org>,
Jonathan Corbet <corbet@lwn.net>,
Shuah Khan <skhan@linuxfoundation.org>, Tejun Heo <tj@kernel.org>,
Lai Jiangshan <jiangshanlai@gmail.com>,
Tobias Schrammm <t.schramm@manjaro.org>,
Sebastian Reichel <sre@kernel.org>,
Dan Carpenter <dan.carpenter@linaro.org>,
Lee Jones <lee@kernel.org>,
Dzmitry Sankouski <dsankouski@gmail.com>,
Matthias Brugger <matthias.bgg@gmail.com>,
AngeloGioacchino Del Regno
<angelogioacchino.delregno@collabora.com>,
Benson Leung <bleung@chromium.org>,
Tzung-Bi Shih <tzungbi@kernel.org>,
driver-core@lists.linux.dev, linux-doc@vger.kernel.org,
linux-kernel@vger.kernel.org,
Sebastian Reichel <sebastian.reichel@collabora.com>,
linux-pm@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
linux-mediatek@lists.infradead.org,
chrome-platform@lists.linux.dev
Subject: Re: [PATCH 1/9] workqueue: devres: Add device-managed allocate workqueue
Date: Mon, 23 Feb 2026 14:12:59 +0200 [thread overview]
Message-ID: <aZxES35K3hSX4KEx@smile.fi.intel.com> (raw)
In-Reply-To: <9dd377f6-3565-4c0c-8c98-1b5ac4982f5b@kernel.org>
+Cc: devm-helpers maintainers/reviewers
On Mon, Feb 23, 2026 at 12:52:14PM +0100, Krzysztof Kozlowski wrote:
> On 23/02/2026 09:56, Andy Shevchenko wrote:
> > On Mon, Feb 23, 2026 at 08:27:29AM +0100, Krzysztof Kozlowski wrote:
> >> Add a Resource-managed version of alloc_workqueue() to fix common
> >> problem of drivers mixing devm() calls with destroy_workqueue. Such
> >> naive and discouraged driver approach leads to difficult to debug bugs
> >> when the driver:
> >>
> >> 1. Allocates workqueue in standard way and destroys it in driver
> >> remove() callback,
> >> 2. Sets work struct with devm_work_autocancel(),
> >> 3. Registers interrupt handler with devm_request_threaded_irq().
> >>
> >> Which leads to following unbind/removal path:
> >>
> >> 1. destroy_workqueue() via driver remove(),
> >> Any interrupt coming now would still execute the interrupt handler,
> >> which queues work on destroyed workqueue.
> >> 2. devm_irq_release(),
> >> 3. devm_work_drop() -> cancel_work_sync() on destroyed workqueue.
> >>
> >> devm_alloc_workqueue() has two benefits:
> >> 1. Solves above problem of mix-and-match devres and non-devres code in
> >> driver,
> >> 2. Simplify any sane drivers which were correctly using
> >> alloc_workqueue() + devm_add_action_or_reset().
> >
> >> include/linux/workqueue.h | 32 ++++++++++++++++++++++++
> >> kernel/workqueue.c | 32 ++++++++++++++++++++++++
> >
> > Hmm... We have devm-helpers.h. Why the new one is in workqueue.h?
> > Can we have some consistency here?
>
> Answering with update:
> I don't think this should go to devm-helpers.h. The definition is in
> workqueue.c, thus the declaration should be in corresponding header.
> It's logical and consistent.
>
> Otherwise, I could move it entirely - definition and declaration - to
> devm-helpers.h, but then the release (devm_destroy_workqueue()) will be
> essentially exported to everyone through the header.
>
> So kind of conflicting choices.
Hmm... An alternative I see is more intrusive but should make it less
inconsistent: Treat the devm-helpers as devres like header for workqueue
and collect there all devm_*wq* related stuff with maybe something putting
back to / holding in the c-file.
OTOH we may leave devm_destroy_workqueue() visible for now with a comment
saying do not use, it's internal or something like that.
Hans, what would be your opinion as you IIRC is the author of devm-helpers.h?
Matti, I also Cc'ed to you, you have usually non-standard thinkig and
insightful solutions (besides being reviewer of devm-helpers).
--
With Best Regards,
Andy Shevchenko
next prev parent reply other threads:[~2026-02-23 12:13 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-02-23 7:27 [PATCH 0/9] workqueue / drivers: Add device-managed allocate workqueue Krzysztof Kozlowski
2026-02-23 7:27 ` [PATCH 1/9] workqueue: devres: " Krzysztof Kozlowski
2026-02-23 8:56 ` Andy Shevchenko
2026-02-23 10:18 ` Krzysztof Kozlowski
2026-02-23 11:34 ` Andy Shevchenko
2026-02-23 11:43 ` Krzysztof Kozlowski
2026-02-23 11:48 ` Andy Shevchenko
2026-02-23 11:52 ` Krzysztof Kozlowski
2026-02-23 12:12 ` Andy Shevchenko [this message]
2026-02-23 13:52 ` Matti Vaittinen
2026-02-23 10:36 ` Danilo Krummrich
2026-02-23 10:44 ` Krzysztof Kozlowski
2026-02-23 15:42 ` Tejun Heo
2026-03-05 20:16 ` Krzysztof Kozlowski
2026-02-23 7:27 ` [PATCH 2/9] power: supply: cw2015: Free allocated workqueue Krzysztof Kozlowski
2026-02-23 7:27 ` [PATCH 3/9] power: supply: max77705: Free allocated workqueue and fix removal order Krzysztof Kozlowski
2026-02-23 8:57 ` Andy Shevchenko
2026-02-23 10:19 ` Krzysztof Kozlowski
2026-02-23 11:29 ` Andy Shevchenko
2026-02-23 7:27 ` [PATCH 4/9] power: supply: mt6370: Simplify with devm_create_singlethread_workqueue Krzysztof Kozlowski
2026-02-23 7:27 ` [PATCH 5/9] power: supply: ipaq_micro: Simplify with devm Krzysztof Kozlowski
2026-02-23 7:27 ` [PATCH 6/9] mfd: ezx-pcap: Drop memory allocation error message Krzysztof Kozlowski
2026-02-23 7:27 ` [PATCH 7/9] mfd: ezx-pcap: Return directly instead of empty gotos Krzysztof Kozlowski
2026-02-23 7:27 ` [PATCH 8/9] mfd: ezx-pcap: Avoid rescheduling after destroying workqueue Krzysztof Kozlowski
2026-02-23 7:27 ` [PATCH 9/9] platform/chrome: cros_usbpd_logger: Simplify with devm Krzysztof Kozlowski
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=aZxES35K3hSX4KEx@smile.fi.intel.com \
--to=andriy.shevchenko@linux.intel.com \
--cc=angelogioacchino.delregno@collabora.com \
--cc=bleung@chromium.org \
--cc=chrome-platform@lists.linux.dev \
--cc=corbet@lwn.net \
--cc=dakr@kernel.org \
--cc=dan.carpenter@linaro.org \
--cc=driver-core@lists.linux.dev \
--cc=dsankouski@gmail.com \
--cc=gregkh@linuxfoundation.org \
--cc=hansg@kernel.org \
--cc=jiangshanlai@gmail.com \
--cc=krzk@kernel.org \
--cc=krzysztof.kozlowski@oss.qualcomm.com \
--cc=lee@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mediatek@lists.infradead.org \
--cc=linux-pm@vger.kernel.org \
--cc=matthias.bgg@gmail.com \
--cc=mazziesaccount@gmail.com \
--cc=rafael@kernel.org \
--cc=sebastian.reichel@collabora.com \
--cc=skhan@linuxfoundation.org \
--cc=sre@kernel.org \
--cc=t.schramm@manjaro.org \
--cc=tj@kernel.org \
--cc=tzungbi@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.