[PATCH V3 4/4] drm/amdgpu/userq: integrate with enforce isolation

Khatri, Sunil sukhatri at amd.com
Tue Apr 15 06:24:10 UTC 2025


On 4/15/2025 12:50 AM, Alex Deucher wrote:
> Enforce isolation serializes access to the GFX IP.  User
> queues are isolated in the MES scheduler, but we still
> need to serialize between kernel queues and user queues.
> For enforce isolation, group KGD user queues with KFD user
> queues.
>
> v2: split out variable renaming, add config guards
> v3: use new function names
>
> Signed-off-by: Alex Deucher <alexander.deucher at amd.com>
> ---
>   drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c | 6 ++++++
>   1 file changed, 6 insertions(+)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c
> index c58d32983c45e..e1dca45a152b6 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c
> @@ -1970,6 +1970,9 @@ static void amdgpu_gfx_kfd_sch_ctrl(struct amdgpu_device *adev, u32 idx,
>   		if (adev->gfx.userq_sch_req_count[idx] == 0) {
>   			cancel_delayed_work_sync(&adev->gfx.enforce_isolation[idx].work);
>   			if (!adev->gfx.userq_sch_inactive[idx]) {
> +#ifdef CONFIG_DRM_AMDGPU_NAVI3X_USERQ
> +				amdgpu_userq_stop_sched_for_enforce_isolation(adev, idx);
> +#endif
>
> Just a suggestion only, I understand the list will be empty but we will still be taking a mutex and some of the unnecessary checks that could be avoided with the user_queue flag check.
> if you still think its ok i am fine with it, functionally its fine and make sense. Also this check #if CONFIG_DRM_AMDGPU_NAVI3X_USERQ will be removed as its not really needed once we have proper drm_info information passed to USER and handled in kernel.
>
> Reviewed-by:
> Sunil Khatri <sunil.khatri at amd.com>
>   				if (adev->kfd.init_complete)
>   					amdgpu_amdkfd_stop_sched(adev, idx);
>   				adev->gfx.userq_sch_inactive[idx] = true;
> @@ -2027,6 +2030,9 @@ void amdgpu_gfx_enforce_isolation_handler(struct work_struct *work)
>   		/* Tell KFD to resume the runqueue */
>   		WARN_ON_ONCE(!adev->gfx.userq_sch_inactive[idx]);
>   		WARN_ON_ONCE(adev->gfx.userq_sch_req_count[idx]);
> +#ifdef CONFIG_DRM_AMDGPU_NAVI3X_USERQ
> +		amdgpu_userq_start_sched_for_enforce_isolation(adev, idx);
> +#endif
>   		if (adev->kfd.init_complete)
>   			amdgpu_amdkfd_start_sched(adev, idx);
>   		adev->gfx.userq_sch_inactive[idx] = false;


More information about the amd-gfx mailing list