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.deuc...@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.kha...@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;

Reply via email to