[PATCH 1/2] drm/amdgpu: add userq specific kernel config for fence ioctls
Alex Deucher
alexdeucher at gmail.com
Tue Oct 29 13:32:28 UTC 2024
On Tue, Oct 29, 2024 at 5:38 AM Christian König
<christian.koenig at amd.com> 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 at amd.com>
> > ---
> > 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.
>
More information about the amd-gfx
mailing list