[PATCH v2] drm/amdgpu: remove DRM_AMDGPU_NAVI3X_USERQ config for UQ

Christian König christian.koenig at amd.com
Wed Apr 23 14:00:02 UTC 2025


On 4/23/25 15:48, Alex Deucher wrote:
> On Wed, Apr 23, 2025 at 6:03 AM Khatri, Sunil <sukhatri at amd.com> wrote:
>>
>> LGTM, Reviewed-by: Sunil Khatri <sunil.khatri at amd.com>
>>
>> I think you should also get an acknowledgement from Alex too before
>> pushing to ASDN.
> 
> Please go ahead.
> 
> Reviewed-by: Alex Deucher <alexander.deucher at amd.com>

Feel free to add Reviewed-by: Christian König <christian.koenig at amd.com> as well.

Christian.

> 
>>
>> Regards
>> Sunil khatri
>>
>> On 4/23/2025 3:03 PM, Arvind Yadav wrote:
>>> DRM_AMDGPU_NAVI3X_USERQ config support is not required for
>>> usermode queue.
>>>
>>> v2: rebase.
>>>
>>> Cc: Alex Deucher <alexander.deucher at amd.com>
>>> Cc: Christian Koenig <christian.koenig at amd.com>
>>> Cc: Sunil Khatri <sunil.khatri at amd.com>
>>> Cc: Arunpravin Paneer Selvam <Arunpravin.PaneerSelvam at amd.com>
>>> Signed-off-by: Arvind Yadav <Arvind.Yadav at amd.com>
>>> ---
>>>   drivers/gpu/drm/amd/amdgpu/Kconfig             |  8 --------
>>>   drivers/gpu/drm/amd/amdgpu/Makefile            |  2 +-
>>>   drivers/gpu/drm/amd/amdgpu/amdgpu_device.c     |  7 +------
>>>   drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c        |  5 +----
>>>   drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c      |  8 --------
>>>   .../gpu/drm/amd/amdgpu/amdgpu_userq_fence.c    | 18 ------------------
>>>   drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c         |  4 ----
>>>   drivers/gpu/drm/amd/amdgpu/gfx_v12_0.c         |  2 --
>>>   drivers/gpu/drm/amd/amdgpu/sdma_v6_0.c         |  3 +--
>>>   drivers/gpu/drm/amd/amdgpu/sdma_v7_0.c         |  3 ---
>>>   10 files changed, 4 insertions(+), 56 deletions(-)
>>>
>>> diff --git a/drivers/gpu/drm/amd/amdgpu/Kconfig b/drivers/gpu/drm/amd/amdgpu/Kconfig
>>> index 7b95221d2f3d..1a11cab741ac 100644
>>> --- a/drivers/gpu/drm/amd/amdgpu/Kconfig
>>> +++ b/drivers/gpu/drm/amd/amdgpu/Kconfig
>>> @@ -96,14 +96,6 @@ config DRM_AMDGPU_WERROR
>>>         Add -Werror to the build flags for amdgpu.ko.
>>>         Only enable this if you are warning code for amdgpu.ko.
>>>
>>> -config DRM_AMDGPU_NAVI3X_USERQ
>>> -     bool "Enable amdgpu usermode queues"
>>> -     depends on DRM_AMDGPU
>>> -     default n
>>> -     help
>>> -       Choose this option to enable GFX usermode queue support for GFX/SDMA/Compute
>>> -          workload submission. This feature is experimental and supported on GFX11+.
>>> -
>>>   source "drivers/gpu/drm/amd/acp/Kconfig"
>>>   source "drivers/gpu/drm/amd/display/Kconfig"
>>>   source "drivers/gpu/drm/amd/amdkfd/Kconfig"
>>> diff --git a/drivers/gpu/drm/amd/amdgpu/Makefile b/drivers/gpu/drm/amd/amdgpu/Makefile
>>> index 8595e05c691b..87080c06e5fc 100644
>>> --- a/drivers/gpu/drm/amd/amdgpu/Makefile
>>> +++ b/drivers/gpu/drm/amd/amdgpu/Makefile
>>> @@ -177,7 +177,7 @@ amdgpu-y += \
>>>       mes_v12_0.o \
>>>
>>>   # add GFX userqueue support
>>> -amdgpu-$(CONFIG_DRM_AMDGPU_NAVI3X_USERQ) += mes_userqueue.o
>>> +amdgpu-y += mes_userqueue.o
>>>
>>>   # add UVD block
>>>   amdgpu-y += \
>>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
>>> index b96e0613ea7e..fe68ba9997ae 100644
>>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
>>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
>>> @@ -3513,9 +3513,7 @@ static int amdgpu_device_ip_fini_early(struct amdgpu_device *adev)
>>>       amdgpu_device_set_cg_state(adev, AMD_CG_STATE_UNGATE);
>>>
>>>       amdgpu_amdkfd_suspend(adev, false);
>>> -#ifdef CONFIG_DRM_AMDGPU_NAVI3X_USERQ
>>>       amdgpu_userq_suspend(adev);
>>> -#endif
>>>
>>>       /* Workaround for ASICs need to disable SMC first */
>>>       amdgpu_device_smu_fini_early(adev);
>>> @@ -5086,9 +5084,7 @@ int amdgpu_device_suspend(struct drm_device *dev, bool notify_clients)
>>>
>>>       if (!adev->in_s0ix) {
>>>               amdgpu_amdkfd_suspend(adev, adev->in_runpm);
>>> -#ifdef CONFIG_DRM_AMDGPU_NAVI3X_USERQ
>>>               amdgpu_userq_suspend(adev);
>>> -#endif
>>>       }
>>>
>>>       r = amdgpu_device_evict_resources(adev);
>>> @@ -5156,11 +5152,10 @@ int amdgpu_device_resume(struct drm_device *dev, bool notify_clients)
>>>               r = amdgpu_amdkfd_resume(adev, adev->in_runpm);
>>>               if (r)
>>>                       goto exit;
>>> -#ifdef CONFIG_DRM_AMDGPU_NAVI3X_USERQ
>>> +
>>>               r = amdgpu_userq_resume(adev);
>>>               if (r)
>>>                       goto exit;
>>> -#endif
>>>       }
>>>
>>>       r = amdgpu_device_ip_late_init(adev);
>>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c
>>> index cb9ffb17ab98..cc5d6250ac69 100644
>>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c
>>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c
>>> @@ -1980,9 +1980,7 @@ 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
>>>                               if (adev->kfd.init_complete)
>>>                                       amdgpu_amdkfd_stop_sched(adev, idx);
>>>                               adev->gfx.userq_sch_inactive[idx] = true;
>>> @@ -2040,9 +2038,8 @@ 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;
>>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c
>>> index b0e8098a3988..451890ee3fb7 100644
>>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c
>>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_userq.c
>>> @@ -129,7 +129,6 @@ amdgpu_userq_active(struct amdgpu_userq_mgr *uq_mgr)
>>>       return ret;
>>>   }
>>>
>>> -#ifdef CONFIG_DRM_AMDGPU_NAVI3X_USERQ
>>>   static struct amdgpu_usermode_queue *
>>>   amdgpu_userq_find(struct amdgpu_userq_mgr *uq_mgr, int qid)
>>>   {
>>> @@ -520,13 +519,6 @@ int amdgpu_userq_ioctl(struct drm_device *dev, void *data,
>>>
>>>       return r;
>>>   }
>>> -#else
>>> -int amdgpu_userq_ioctl(struct drm_device *dev, void *data,
>>> -                    struct drm_file *filp)
>>> -{
>>> -     return -ENOTSUPP;
>>> -}
>>> -#endif
>>>
>>>   static int
>>>   amdgpu_userq_restore_all(struct amdgpu_userq_mgr *uq_mgr)
>>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c
>>> index be068e8e37d1..3288c2ff692e 100644
>>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c
>>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c
>>> @@ -216,7 +216,6 @@ void amdgpu_userq_fence_driver_put(struct amdgpu_userq_fence_driver *fence_drv)
>>>       kref_put(&fence_drv->refcount, amdgpu_userq_fence_driver_destroy);
>>>   }
>>>
>>> -#ifdef CONFIG_DRM_AMDGPU_NAVI3X_USERQ
>>>   static int amdgpu_userq_fence_alloc(struct amdgpu_userq_fence **userq_fence)
>>>   {
>>>       *userq_fence = kmem_cache_alloc(amdgpu_userq_fence_slab, GFP_ATOMIC);
>>> @@ -288,7 +287,6 @@ static int amdgpu_userq_fence_create(struct amdgpu_usermode_queue *userq,
>>>
>>>       return 0;
>>>   }
>>> -#endif
>>>
>>>   static const char *amdgpu_userq_fence_get_driver_name(struct dma_fence *f)
>>>   {
>>> @@ -343,7 +341,6 @@ static const struct dma_fence_ops amdgpu_userq_fence_ops = {
>>>       .release = amdgpu_userq_fence_release,
>>>   };
>>>
>>> -#ifdef CONFIG_DRM_AMDGPU_NAVI3X_USERQ
>>>   /**
>>>    * amdgpu_userq_fence_read_wptr - Read the userq wptr value
>>>    *
>>> @@ -594,15 +591,7 @@ int amdgpu_userq_signal_ioctl(struct drm_device *dev, void *data,
>>>
>>>       return r;
>>>   }
>>> -#else
>>> -int amdgpu_userq_signal_ioctl(struct drm_device *dev, void *data,
>>> -                           struct drm_file *filp)
>>> -{
>>> -     return -ENOTSUPP;
>>> -}
>>> -#endif
>>>
>>> -#ifdef CONFIG_DRM_AMDGPU_NAVI3X_USERQ
>>>   int amdgpu_userq_wait_ioctl(struct drm_device *dev, void *data,
>>>                           struct drm_file *filp)
>>>   {
>>> @@ -968,10 +957,3 @@ int amdgpu_userq_wait_ioctl(struct drm_device *dev, void *data,
>>>
>>>       return r;
>>>   }
>>> -#else
>>> -int amdgpu_userq_wait_ioctl(struct drm_device *dev, void *data,
>>> -                         struct drm_file *filp)
>>> -{
>>> -     return -ENOTSUPP;
>>> -}
>>> -#endif
>>> diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c
>>> index ac7ac58e25a6..519b82f77cff 100644
>>> --- a/drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c
>>> +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c
>>> @@ -1630,7 +1630,6 @@ static int gfx_v11_0_sw_init(struct amdgpu_ip_block *ip_block)
>>>       case IP_VERSION(11, 0, 0):
>>>       case IP_VERSION(11, 0, 2):
>>>       case IP_VERSION(11, 0, 3):
>>> -#ifdef CONFIG_DRM_AMDGPU_NAVI3X_USERQ
>>>               if (!adev->gfx.disable_uq &&
>>>                   adev->gfx.me_fw_version  >= 2390 &&
>>>                   adev->gfx.pfp_fw_version >= 2530 &&
>>> @@ -1639,7 +1638,6 @@ static int gfx_v11_0_sw_init(struct amdgpu_ip_block *ip_block)
>>>                       adev->userq_funcs[AMDGPU_HW_IP_GFX] = &userq_mes_funcs;
>>>                       adev->userq_funcs[AMDGPU_HW_IP_COMPUTE] = &userq_mes_funcs;
>>>               }
>>> -#endif
>>>               break;
>>>       case IP_VERSION(11, 0, 1):
>>>       case IP_VERSION(11, 0, 4):
>>> @@ -1647,13 +1645,11 @@ static int gfx_v11_0_sw_init(struct amdgpu_ip_block *ip_block)
>>>       case IP_VERSION(11, 5, 1):
>>>       case IP_VERSION(11, 5, 2):
>>>       case IP_VERSION(11, 5, 3):
>>> -#ifdef CONFIG_DRM_AMDGPU_NAVI3X_USERQ
>>>               /* add firmware version checks here */
>>>               if (0 && !adev->gfx.disable_uq) {
>>>                       adev->userq_funcs[AMDGPU_HW_IP_GFX] = &userq_mes_funcs;
>>>                       adev->userq_funcs[AMDGPU_HW_IP_COMPUTE] = &userq_mes_funcs;
>>>               }
>>> -#endif
>>>               break;
>>>       default:
>>>               break;
>>> diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v12_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v12_0.c
>>> index dfa0830a4eb1..f09d96bfee16 100644
>>> --- a/drivers/gpu/drm/amd/amdgpu/gfx_v12_0.c
>>> +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v12_0.c
>>> @@ -1416,7 +1416,6 @@ static int gfx_v12_0_sw_init(struct amdgpu_ip_block *ip_block)
>>>       switch (amdgpu_ip_version(adev, GC_HWIP, 0)) {
>>>       case IP_VERSION(12, 0, 0):
>>>       case IP_VERSION(12, 0, 1):
>>> -#ifdef CONFIG_DRM_AMDGPU_NAVI3X_USERQ
>>>               if (!adev->gfx.disable_uq &&
>>>                   adev->gfx.me_fw_version  >= 2780 &&
>>>                   adev->gfx.pfp_fw_version >= 2840 &&
>>> @@ -1425,7 +1424,6 @@ static int gfx_v12_0_sw_init(struct amdgpu_ip_block *ip_block)
>>>                       adev->userq_funcs[AMDGPU_HW_IP_GFX] = &userq_mes_funcs;
>>>                       adev->userq_funcs[AMDGPU_HW_IP_COMPUTE] = &userq_mes_funcs;
>>>               }
>>> -#endif
>>>               break;
>>>       default:
>>>               break;
>>> diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v6_0.c b/drivers/gpu/drm/amd/amdgpu/sdma_v6_0.c
>>> index 6bb36187a53d..da5b5d64f137 100644
>>> --- a/drivers/gpu/drm/amd/amdgpu/sdma_v6_0.c
>>> +++ b/drivers/gpu/drm/amd/amdgpu/sdma_v6_0.c
>>> @@ -1363,11 +1363,10 @@ static int sdma_v6_0_sw_init(struct amdgpu_ip_block *ip_block)
>>>       else
>>>               DRM_ERROR("Failed to allocated memory for SDMA IP Dump\n");
>>>
>>> -#ifdef CONFIG_DRM_AMDGPU_NAVI3X_USERQ
>>>       /* add firmware version checks here */
>>>       if (0 && !adev->sdma.disable_uq)
>>>               adev->userq_funcs[AMDGPU_HW_IP_DMA] = &userq_mes_funcs;
>>> -#endif
>>> +
>>>       r = amdgpu_sdma_sysfs_reset_mask_init(adev);
>>>       if (r)
>>>               return r;
>>> diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v7_0.c b/drivers/gpu/drm/amd/amdgpu/sdma_v7_0.c
>>> index 943c6446a0a7..befe013b11a7 100644
>>> --- a/drivers/gpu/drm/amd/amdgpu/sdma_v7_0.c
>>> +++ b/drivers/gpu/drm/amd/amdgpu/sdma_v7_0.c
>>> @@ -1338,12 +1338,9 @@ static int sdma_v7_0_sw_init(struct amdgpu_ip_block *ip_block)
>>>       else
>>>               DRM_ERROR("Failed to allocated memory for SDMA IP Dump\n");
>>>
>>> -#ifdef CONFIG_DRM_AMDGPU_NAVI3X_USERQ
>>>       /* add firmware version checks here */
>>>       if (0 && !adev->sdma.disable_uq)
>>>               adev->userq_funcs[AMDGPU_HW_IP_DMA] = &userq_mes_funcs;
>>> -#endif
>>> -
>>>
>>>       return r;
>>>   }



More information about the amd-gfx mailing list