On Tue, Oct 29, 2024 at 5:38 AM Christian König <christian.koenig@xxxxxxx> wrote: > > Am 24.10.24 um 14:10 schrieb Arunpravin Paneer Selvam: > > Keep the user queue fence signal and wait IOCTLs in the > > kernel config CONFIG_DRM_AMDGPU_NAVI3X_USERQ. > > > > Signed-off-by: Arunpravin Paneer Selvam <Arunpravin.PaneerSelvam@xxxxxxx> > > --- > > drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 4 ++++ > > drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c | 16 ++++++++++++++++ > > 2 files changed, 20 insertions(+) > > > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c > > index 70cb3b794a8a..04eb6611d19b 100644 > > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c > > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c > > @@ -2971,9 +2971,11 @@ static int __init amdgpu_init(void) > > if (r) > > goto error_sync; > > > > +#ifdef CONFIG_DRM_AMDGPU_NAVI3X_USERQ > > r = amdgpu_fence_slab_init(); > > if (r) > > goto error_fence; > > +#endif > > That here makes no sense. This is for the kernel queues and not for the > user queues. > > > > > r = amdgpu_userq_fence_slab_init(); > > if (r) > > @@ -3003,7 +3005,9 @@ static void __exit amdgpu_exit(void) > > amdgpu_unregister_atpx_handler(); > > amdgpu_acpi_release(); > > amdgpu_sync_fini(); > > +#ifdef CONFIG_DRM_AMDGPU_NAVI3X_USERQ > > amdgpu_fence_slab_fini(); > > +#endif > > amdgpu_userq_fence_slab_fini(); > > mmu_notifier_synchronize(); > > amdgpu_xcp_drv_release(); > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c > > index 279dece6f6d7..bec53776fe5f 100644 > > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c > > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_userq_fence.c > > @@ -318,6 +318,7 @@ 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 > > * > > @@ -502,7 +503,15 @@ 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 0; > > +} > > +#endif > > > > +#ifdef CONFIG_DRM_AMDGPU_NAVI3X_USERQ > > int amdgpu_userq_wait_ioctl(struct drm_device *dev, void *data, > > struct drm_file *filp) > > { > > @@ -797,3 +806,10 @@ 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 0; > > +} > > +#endif > > Not nice, but since CONFIG_DRM_AMDGPU_NAVI3X_USERQ depends on > CONFIG_BROKEN at the moment probably ok as intermediate step. Wouldn't it be better to return an error in these cases? Alex > > Regards, > Christian. >