[PATCH] media: platform: Add WQ_PERCPU to alloc_workqueue users

Marco Crivellari posted 1 patch 3 weeks, 4 days ago
drivers/media/platform/renesas/rzv2h-ivc/rzv2h-ivc-video.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[PATCH] media: platform: Add WQ_PERCPU to alloc_workqueue users
Posted by Marco Crivellari 3 weeks, 4 days ago
This continues the effort to refactor workqueue APIs, which began with
the introduction of new workqueues and a new alloc_workqueue flag in:

   commit 128ea9f6ccfb ("workqueue: Add system_percpu_wq and system_dfl_wq")
   commit 930c2ea566af ("workqueue: Add new WQ_PERCPU flag")

The refactoring is going to alter the default behavior of
alloc_workqueue() to be unbound by default.

With the introduction of the WQ_PERCPU flag (equivalent to !WQ_UNBOUND),
any alloc_workqueue() caller that doesn’t explicitly specify WQ_UNBOUND
must now use WQ_PERCPU. For more details see the Link tag below.

In order to keep alloc_workqueue() behavior identical, explicitly request
WQ_PERCPU.

Link: https://lore.kernel.org/all/20250221112003.1dSuoGyc@linutronix.de/
Suggested-by: Tejun Heo <tj@kernel.org>
Signed-off-by: Marco Crivellari <marco.crivellari@suse.com>
---
 drivers/media/platform/renesas/rzv2h-ivc/rzv2h-ivc-video.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/media/platform/renesas/rzv2h-ivc/rzv2h-ivc-video.c b/drivers/media/platform/renesas/rzv2h-ivc/rzv2h-ivc-video.c
index 799453250b85..e3ff0482a84e 100644
--- a/drivers/media/platform/renesas/rzv2h-ivc/rzv2h-ivc-video.c
+++ b/drivers/media/platform/renesas/rzv2h-ivc/rzv2h-ivc-video.c
@@ -445,7 +445,7 @@ int rzv2h_ivc_init_vdev(struct rzv2h_ivc *ivc, struct v4l2_device *v4l2_dev)
 	INIT_LIST_HEAD(&ivc->buffers.queue);
 	INIT_WORK(&ivc->buffers.work, rzv2h_ivc_transfer_buffer);
 
-	ivc->buffers.async_wq = alloc_workqueue("rzv2h-ivc", 0, 0);
+	ivc->buffers.async_wq = alloc_workqueue("rzv2h-ivc", WQ_PERCPU, 0);
 	if (!ivc->buffers.async_wq)
 		return -EINVAL;
 
-- 
2.52.0

Re: [PATCH] media: platform: Add WQ_PERCPU to alloc_workqueue users
Posted by Dan Scally 3 weeks, 2 days ago
Hi Marco

On 13/01/2026 14:04, Marco Crivellari wrote:
> This continues the effort to refactor workqueue APIs, which began with
> the introduction of new workqueues and a new alloc_workqueue flag in:
> 
>     commit 128ea9f6ccfb ("workqueue: Add system_percpu_wq and system_dfl_wq")
>     commit 930c2ea566af ("workqueue: Add new WQ_PERCPU flag")
> 
> The refactoring is going to alter the default behavior of
> alloc_workqueue() to be unbound by default.
> 
> With the introduction of the WQ_PERCPU flag (equivalent to !WQ_UNBOUND),
> any alloc_workqueue() caller that doesn’t explicitly specify WQ_UNBOUND
> must now use WQ_PERCPU. For more details see the Link tag below.
> 
> In order to keep alloc_workqueue() behavior identical, explicitly request
> WQ_PERCPU.
> 
> Link: https://lore.kernel.org/all/20250221112003.1dSuoGyc@linutronix.de/
> Suggested-by: Tejun Heo <tj@kernel.org>
> Signed-off-by: Marco Crivellari <marco.crivellari@suse.com>
> ---

Sorry for the delay getting back to you. I haven't looked at the impact of the refactoring in 
detail, but I'm happy to trust you on the workqueue internals and this is line with the changes to 
other drivers across the tree so:

Acked-by: Daniel Scally <dan.scally@ideasonboard.com>

>   drivers/media/platform/renesas/rzv2h-ivc/rzv2h-ivc-video.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/media/platform/renesas/rzv2h-ivc/rzv2h-ivc-video.c b/drivers/media/platform/renesas/rzv2h-ivc/rzv2h-ivc-video.c
> index 799453250b85..e3ff0482a84e 100644
> --- a/drivers/media/platform/renesas/rzv2h-ivc/rzv2h-ivc-video.c
> +++ b/drivers/media/platform/renesas/rzv2h-ivc/rzv2h-ivc-video.c
> @@ -445,7 +445,7 @@ int rzv2h_ivc_init_vdev(struct rzv2h_ivc *ivc, struct v4l2_device *v4l2_dev)
>   	INIT_LIST_HEAD(&ivc->buffers.queue);
>   	INIT_WORK(&ivc->buffers.work, rzv2h_ivc_transfer_buffer);
>   
> -	ivc->buffers.async_wq = alloc_workqueue("rzv2h-ivc", 0, 0);
> +	ivc->buffers.async_wq = alloc_workqueue("rzv2h-ivc", WQ_PERCPU, 0);
>   	if (!ivc->buffers.async_wq)
>   		return -EINVAL;
>   

Re: [PATCH] media: platform: Add WQ_PERCPU to alloc_workqueue users
Posted by Marco Crivellari 3 weeks, 1 day ago
On Thu, Jan 15, 2026 at 10:20 PM Dan Scally <dan.scally@ideasonboard.com> wrote:
> [...]
> Sorry for the delay getting back to you. I haven't looked at the impact of the refactoring in
> detail, but I'm happy to trust you on the workqueue internals and this is line with the changes to
> other drivers across the tree so:
>
> Acked-by: Daniel Scally <dan.scally@ideasonboard.com>

Hi Daniel,

No worries, thanks for your reply and the Ack!

BTW, the introduction of WQ_PERCPU here it's only to keep the same old
behavior, but make explicit it is per-cpu and not unbound.

Looking at the code there is a big chance this can already be
converted to unbound anyhow,
(WQ_UNBOUND, explicitly) because I don't see per-cpu variables around.
Otherwise this can
be done in a later step, and keep the per-cpu behavior for now, like
it has been till now.

Thanks!

-- 

Marco Crivellari

L3 Support Engineer