Applied. thanks!
On Tue, Oct 27, 2026 at 4:16 PM Christian König <[email protected]> wrote: > > On 10/27/26 14:37, Philipp Stanner wrote: > > amdgpu's fence implements the deprecated fence_ops->release() callback > > which prevents the driver from ever unloading robustly. > > > > amdgpu's implementation merely uses a call_rcu() that performs a kfree() > > on the fence - this functionality is already centrally implemented by > > the dma_fence backend. > > > > The dma_fence backend invokes a kfree_rcu() on the dma_fence, which is > > fine since this is always the first member of a struct amdgpu_fence. > > Thus, amdgpu's implementation is redundant. > > > > Remove fence_ops->release(). > > > > Signed-off-by: Philipp Stanner <[email protected]> > > I have exactly the same patch in my pipeline as well. > > Reviewed-by: Christian König <[email protected]> > > > --- > > Just saw that this should be unnecessary? Don't have a setup for amdgpu > > testing right now, so please take a close look, just compile-tested. > > > > P. > > --- > > drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c | 29 ----------------------- > > 1 file changed, 29 deletions(-) > > > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c > > b/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c > > index 3043ad041bb4..3f8b2571d74a 100644 > > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c > > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_fence.c > > @@ -892,39 +892,10 @@ static bool amdgpu_fence_enable_signaling(struct > > dma_fence *f) > > return true; > > } > > > > -/** > > - * amdgpu_fence_free - free up the fence memory > > - * > > - * @rcu: RCU callback head > > - * > > - * Free up the fence memory after the RCU grace period. > > - */ > > -static void amdgpu_fence_free(struct rcu_head *rcu) > > -{ > > - struct dma_fence *f = container_of(rcu, struct dma_fence, rcu); > > - > > - /* free fence_slab if it's separated fence*/ > > - kfree(to_amdgpu_fence(f)); > > -} > > - > > -/** > > - * amdgpu_fence_release - callback that fence can be freed > > - * > > - * @f: fence > > - * > > - * This function is called when the reference count becomes zero. > > - * It just RCU schedules freeing up the fence. > > - */ > > -static void amdgpu_fence_release(struct dma_fence *f) > > -{ > > - call_rcu(&f->rcu, amdgpu_fence_free); > > -} > > - > > static const struct dma_fence_ops amdgpu_fence_ops = { > > .get_driver_name = amdgpu_fence_get_driver_name, > > .get_timeline_name = amdgpu_fence_get_timeline_name, > > .enable_signaling = amdgpu_fence_enable_signaling, > > - .release = amdgpu_fence_release, > > }; > > > > /* > > > > base-commit: 731ba09867520c047c7de53f92e384808e0b638e >
