[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <34829993-a888-4f7c-a2c6-e87723644c3c@amd.com>
Date: Thu, 30 Oct 2025 18:10:14 +0100
From: Christian König <christian.koenig@....com>
To: Marco Crivellari <marco.crivellari@...e.com>,
 linux-kernel@...r.kernel.org, amd-gfx@...ts.freedesktop.org,
 dri-devel@...ts.freedesktop.org
Cc: Tejun Heo <tj@...nel.org>, Lai Jiangshan <jiangshanlai@...il.com>,
 Frederic Weisbecker <frederic@...nel.org>,
 Sebastian Andrzej Siewior <bigeasy@...utronix.de>,
 Michal Hocko <mhocko@...e.com>, Alex Deucher <alexander.deucher@....com>,
 David Airlie <airlied@...il.com>, Simona Vetter <simona@...ll.ch>
Subject: Re: [PATCH 2/4] drm/amdgpu: replace use of system_wq with
 system_percpu_wq
On 10/30/25 17:10, Marco Crivellari wrote:
> Currently if a user enqueue a work item using schedule_delayed_work() the
> used wq is "system_wq" (per-cpu wq) while queue_delayed_work() use
> WORK_CPU_UNBOUND (used when a cpu is not specified). The same applies to
> schedule_work() that is using system_wq and queue_work(), that makes use
> again of WORK_CPU_UNBOUND.
> 
> This lack of consistency cannot be addressed without refactoring the API.
> 
> system_wq should be the per-cpu workqueue, yet in this name nothing makes
> that clear, so replace system_wq with system_percpu_wq.
> 
> The old wq (system_wq) will be kept for a few release cycles.
Oh, good point!
> 
> Suggested-by: Tejun Heo <tj@...nel.org>
> Signed-off-by: Marco Crivellari <marco.crivellari@...e.com>
> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> index 8c4d79f6c14f..2f8160702f9a 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> @@ -4798,7 +4798,7 @@ int amdgpu_device_init(struct amdgpu_device *adev,
>  		}
>  		/* must succeed. */
>  		amdgpu_ras_resume(adev);
> -		queue_delayed_work(system_wq, &adev->delayed_init_work,
> +		queue_delayed_work(system_percpu_wq, &adev->delayed_init_work,
>  				   msecs_to_jiffies(AMDGPU_RESUME_MS));
>  	}
>  
> @@ -5328,7 +5328,7 @@ int amdgpu_device_resume(struct drm_device *dev, bool notify_clients)
>  	if (r)
>  		goto exit;
>  
> -	queue_delayed_work(system_wq, &adev->delayed_init_work,
> +	queue_delayed_work(system_percpu_wq, &adev->delayed_init_work,
>  			   msecs_to_jiffies(AMDGPU_RESUME_MS));
In this particular use case we actually don't want the percpu wq.
This can execute on any CPU except for the current one.
Regards,
Christian.
>  exit:
>  	if (amdgpu_sriov_vf(adev)) {
Powered by blists - more mailing lists
 
