drm/ttm: optimize ttm pool shrinker a bit
authorChristian König <christian.koenig@amd.com>
Tue, 17 Nov 2020 15:35:24 +0000 (16:35 +0100)
committerChristian König <christian.koenig@amd.com>
Wed, 20 Jan 2021 11:57:13 +0000 (12:57 +0100)
Only initialize the DMA coherent pools if they are used.

Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Link: https://patchwork.freedesktop.org/patch/414957/
drivers/gpu/drm/ttm/ttm_pool.c

index 98ecb9c9842c8ac69cf991aabed64316008c62e0..e0617717113fef8208b92e4431f6c7e47f24ffa5 100644 (file)
@@ -505,10 +505,12 @@ void ttm_pool_init(struct ttm_pool *pool, struct device *dev,
        pool->use_dma_alloc = use_dma_alloc;
        pool->use_dma32 = use_dma32;
 
-       for (i = 0; i < TTM_NUM_CACHING_TYPES; ++i)
-               for (j = 0; j < MAX_ORDER; ++j)
-                       ttm_pool_type_init(&pool->caching[i].orders[j],
-                                          pool, i, j);
+       if (use_dma_alloc) {
+               for (i = 0; i < TTM_NUM_CACHING_TYPES; ++i)
+                       for (j = 0; j < MAX_ORDER; ++j)
+                               ttm_pool_type_init(&pool->caching[i].orders[j],
+                                                  pool, i, j);
+       }
 }
 EXPORT_SYMBOL(ttm_pool_init);
 
@@ -524,9 +526,11 @@ void ttm_pool_fini(struct ttm_pool *pool)
 {
        unsigned int i, j;
 
-       for (i = 0; i < TTM_NUM_CACHING_TYPES; ++i)
-               for (j = 0; j < MAX_ORDER; ++j)
-                       ttm_pool_type_fini(&pool->caching[i].orders[j]);
+       if (pool->use_dma_alloc) {
+               for (i = 0; i < TTM_NUM_CACHING_TYPES; ++i)
+                       for (j = 0; j < MAX_ORDER; ++j)
+                               ttm_pool_type_fini(&pool->caching[i].orders[j]);
+       }
 }
 EXPORT_SYMBOL(ttm_pool_fini);
 
@@ -631,6 +635,11 @@ int ttm_pool_debugfs(struct ttm_pool *pool, struct seq_file *m)
 {
        unsigned int i;
 
+       if (!pool->use_dma_alloc) {
+               seq_puts(m, "unused\n");
+               return 0;
+       }
+
        ttm_pool_debugfs_header(m);
 
        spin_lock(&shrinker_lock);