Commit 4983e48c authored by Lucas Stach's avatar Lucas Stach Committed by Alex Deucher

drm/sched: move fence slab handling to module init/exit

This is the only part of the scheduler which must not be called from
different drivers. Move it to module init/exit so it is done a single
time when loading the scheduler.
Reviewed-by: default avatarChunming Zhou <david1.zhou@amd.com>
Tested-by: default avatarDieter Nützel <Dieter@nuetzel-hh.de>
Acked-by: default avatarAlex Deucher <alexander.deucher@amd.com>
Signed-off-by: default avatarLucas Stach <l.stach@pengutronix.de>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 1b1f42d8
...@@ -912,10 +912,6 @@ static int __init amdgpu_init(void) ...@@ -912,10 +912,6 @@ static int __init amdgpu_init(void)
if (r) if (r)
goto error_fence; goto error_fence;
r = drm_sched_fence_slab_init();
if (r)
goto error_sched;
if (vgacon_text_force()) { if (vgacon_text_force()) {
DRM_ERROR("VGACON disables amdgpu kernel modesetting.\n"); DRM_ERROR("VGACON disables amdgpu kernel modesetting.\n");
return -EINVAL; return -EINVAL;
...@@ -928,9 +924,6 @@ static int __init amdgpu_init(void) ...@@ -928,9 +924,6 @@ static int __init amdgpu_init(void)
/* let modprobe override vga console setting */ /* let modprobe override vga console setting */
return pci_register_driver(pdriver); return pci_register_driver(pdriver);
error_sched:
amdgpu_fence_slab_fini();
error_fence: error_fence:
amdgpu_sync_fini(); amdgpu_sync_fini();
...@@ -944,7 +937,6 @@ static void __exit amdgpu_exit(void) ...@@ -944,7 +937,6 @@ static void __exit amdgpu_exit(void)
pci_unregister_driver(pdriver); pci_unregister_driver(pdriver);
amdgpu_unregister_atpx_handler(); amdgpu_unregister_atpx_handler();
amdgpu_sync_fini(); amdgpu_sync_fini();
drm_sched_fence_slab_fini();
amdgpu_fence_slab_fini(); amdgpu_fence_slab_fini();
} }
......
...@@ -29,7 +29,7 @@ ...@@ -29,7 +29,7 @@
static struct kmem_cache *sched_fence_slab; static struct kmem_cache *sched_fence_slab;
int drm_sched_fence_slab_init(void) static int __init drm_sched_fence_slab_init(void)
{ {
sched_fence_slab = kmem_cache_create( sched_fence_slab = kmem_cache_create(
"drm_sched_fence", sizeof(struct drm_sched_fence), 0, "drm_sched_fence", sizeof(struct drm_sched_fence), 0,
...@@ -39,14 +39,12 @@ int drm_sched_fence_slab_init(void) ...@@ -39,14 +39,12 @@ int drm_sched_fence_slab_init(void)
return 0; return 0;
} }
EXPORT_SYMBOL_GPL(drm_sched_fence_slab_init);
void drm_sched_fence_slab_fini(void) static void __exit drm_sched_fence_slab_fini(void)
{ {
rcu_barrier(); rcu_barrier();
kmem_cache_destroy(sched_fence_slab); kmem_cache_destroy(sched_fence_slab);
} }
EXPORT_SYMBOL_GPL(drm_sched_fence_slab_fini);
void drm_sched_fence_scheduled(struct drm_sched_fence *fence) void drm_sched_fence_scheduled(struct drm_sched_fence *fence)
{ {
...@@ -185,3 +183,9 @@ struct drm_sched_fence *drm_sched_fence_create(struct drm_sched_entity *entity, ...@@ -185,3 +183,9 @@ struct drm_sched_fence *drm_sched_fence_create(struct drm_sched_entity *entity,
return fence; return fence;
} }
module_init(drm_sched_fence_slab_init);
module_exit(drm_sched_fence_slab_fini);
MODULE_DESCRIPTION("DRM GPU scheduler");
MODULE_LICENSE("GPL and additional rights");
...@@ -155,9 +155,6 @@ void drm_sched_entity_push_job(struct drm_sched_job *sched_job, ...@@ -155,9 +155,6 @@ void drm_sched_entity_push_job(struct drm_sched_job *sched_job,
void drm_sched_entity_set_rq(struct drm_sched_entity *entity, void drm_sched_entity_set_rq(struct drm_sched_entity *entity,
struct drm_sched_rq *rq); struct drm_sched_rq *rq);
int drm_sched_fence_slab_init(void);
void drm_sched_fence_slab_fini(void);
struct drm_sched_fence *drm_sched_fence_create( struct drm_sched_fence *drm_sched_fence_create(
struct drm_sched_entity *s_entity, void *owner); struct drm_sched_entity *s_entity, void *owner);
void drm_sched_fence_scheduled(struct drm_sched_fence *fence); void drm_sched_fence_scheduled(struct drm_sched_fence *fence);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment