diff options
Diffstat (limited to 'drivers/gpu/drm/amd/scheduler/sched_fence.c')
-rw-r--r-- | drivers/gpu/drm/amd/scheduler/sched_fence.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/drivers/gpu/drm/amd/scheduler/sched_fence.c b/drivers/gpu/drm/amd/scheduler/sched_fence.c index d802638094f4..8d2130b9ff05 100644 --- a/drivers/gpu/drm/amd/scheduler/sched_fence.c +++ b/drivers/gpu/drm/amd/scheduler/sched_fence.c | |||
@@ -32,7 +32,7 @@ struct amd_sched_fence *amd_sched_fence_create(struct amd_sched_entity *s_entity | |||
32 | struct amd_sched_fence *fence = NULL; | 32 | struct amd_sched_fence *fence = NULL; |
33 | unsigned seq; | 33 | unsigned seq; |
34 | 34 | ||
35 | fence = kzalloc(sizeof(struct amd_sched_fence), GFP_KERNEL); | 35 | fence = kmem_cache_zalloc(sched_fence_slab, GFP_KERNEL); |
36 | if (fence == NULL) | 36 | if (fence == NULL) |
37 | return NULL; | 37 | return NULL; |
38 | fence->owner = owner; | 38 | fence->owner = owner; |
@@ -71,11 +71,17 @@ static bool amd_sched_fence_enable_signaling(struct fence *f) | |||
71 | return true; | 71 | return true; |
72 | } | 72 | } |
73 | 73 | ||
74 | static void amd_sched_fence_release(struct fence *f) | ||
75 | { | ||
76 | struct amd_sched_fence *fence = to_amd_sched_fence(f); | ||
77 | kmem_cache_free(sched_fence_slab, fence); | ||
78 | } | ||
79 | |||
74 | const struct fence_ops amd_sched_fence_ops = { | 80 | const struct fence_ops amd_sched_fence_ops = { |
75 | .get_driver_name = amd_sched_fence_get_driver_name, | 81 | .get_driver_name = amd_sched_fence_get_driver_name, |
76 | .get_timeline_name = amd_sched_fence_get_timeline_name, | 82 | .get_timeline_name = amd_sched_fence_get_timeline_name, |
77 | .enable_signaling = amd_sched_fence_enable_signaling, | 83 | .enable_signaling = amd_sched_fence_enable_signaling, |
78 | .signaled = NULL, | 84 | .signaled = NULL, |
79 | .wait = fence_default_wait, | 85 | .wait = fence_default_wait, |
80 | .release = NULL, | 86 | .release = amd_sched_fence_release, |
81 | }; | 87 | }; |