diff options
Diffstat (limited to 'common/recipes-kernel/linux/files/0357-drm-amdgpu-add-slap-cache-for-sync-objects-as-well.patch')
-rw-r--r-- | common/recipes-kernel/linux/files/0357-drm-amdgpu-add-slap-cache-for-sync-objects-as-well.patch | 131 |
1 files changed, 0 insertions, 131 deletions
diff --git a/common/recipes-kernel/linux/files/0357-drm-amdgpu-add-slap-cache-for-sync-objects-as-well.patch b/common/recipes-kernel/linux/files/0357-drm-amdgpu-add-slap-cache-for-sync-objects-as-well.patch deleted file mode 100644 index 21cbb42c..00000000 --- a/common/recipes-kernel/linux/files/0357-drm-amdgpu-add-slap-cache-for-sync-objects-as-well.patch +++ /dev/null @@ -1,131 +0,0 @@ -From 1f797846d6a6f5734d9cb105fcd5a0b6cc4b3fc8 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Christian=20K=C3=B6nig?= <christian.koenig@amd.com> -Date: Tue, 16 Feb 2016 11:24:58 +0100 -Subject: [PATCH 0357/1110] drm/amdgpu: add slap cache for sync objects as well -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -We need them all the time. - -Signed-off-by: Christian König <christian.koenig@amd.com> -Reviewed-by: Alex Deucher <alexander.deucher@amd.com> -Reviewed-by: Chunming Zhou <david1.zhou@amd.com> ---- - drivers/gpu/drm/amd/amdgpu/amdgpu.h | 2 ++ - drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 2 ++ - drivers/gpu/drm/amd/amdgpu/amdgpu_sync.c | 36 ++++++++++++++++++++++++++++---- - 3 files changed, 36 insertions(+), 4 deletions(-) - -diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h -index 27b1dc3..866e790 100644 ---- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h -+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h -@@ -594,6 +594,8 @@ int amdgpu_sync_resv(struct amdgpu_device *adev, - struct fence *amdgpu_sync_get_fence(struct amdgpu_sync *sync); - int amdgpu_sync_wait(struct amdgpu_sync *sync); - void amdgpu_sync_free(struct amdgpu_sync *sync); -+int amdgpu_sync_init(void); -+void amdgpu_sync_fini(void); - - /* - * GART structures, functions & helpers -diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c -index c1182ec..82cab2e 100644 ---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c -+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c -@@ -547,6 +547,7 @@ static struct pci_driver amdgpu_kms_pci_driver = { - - static int __init amdgpu_init(void) - { -+ amdgpu_sync_init(); - #ifdef CONFIG_VGA_CONSOLE - if (vgacon_text_force()) { - DRM_ERROR("VGACON disables amdgpu kernel modesetting.\n"); -@@ -571,6 +572,7 @@ static void __exit amdgpu_exit(void) - amdgpu_amdkfd_fini(); - drm_pci_exit(driver, pdriver); - amdgpu_unregister_atpx_handler(); -+ amdgpu_sync_fini(); - } - - module_init(amdgpu_init); -diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_sync.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_sync.c -index e367342..c48b4fc 100644 ---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_sync.c -+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_sync.c -@@ -37,6 +37,8 @@ struct amdgpu_sync_entry { - struct fence *fence; - }; - -+static struct kmem_cache *amdgpu_sync_slab; -+ - /** - * amdgpu_sync_create - zero init sync object - * -@@ -133,7 +135,7 @@ int amdgpu_sync_fence(struct amdgpu_device *adev, struct amdgpu_sync *sync, - return 0; - } - -- e = kmalloc(sizeof(struct amdgpu_sync_entry), GFP_KERNEL); -+ e = kmem_cache_alloc(amdgpu_sync_slab, GFP_KERNEL); - if (!e) - return -ENOMEM; - -@@ -214,7 +216,7 @@ struct fence *amdgpu_sync_get_fence(struct amdgpu_sync *sync) - f = e->fence; - - hash_del(&e->node); -- kfree(e); -+ kmem_cache_free(amdgpu_sync_slab, e); - - if (!fence_is_signaled(f)) - return f; -@@ -237,7 +239,7 @@ int amdgpu_sync_wait(struct amdgpu_sync *sync) - - hash_del(&e->node); - fence_put(e->fence); -- kfree(e); -+ kmem_cache_free(amdgpu_sync_slab, e); - } - - return 0; -@@ -259,8 +261,34 @@ void amdgpu_sync_free(struct amdgpu_sync *sync) - hash_for_each_safe(sync->fences, i, tmp, e, node) { - hash_del(&e->node); - fence_put(e->fence); -- kfree(e); -+ kmem_cache_free(amdgpu_sync_slab, e); - } - - fence_put(sync->last_vm_update); - } -+ -+/** -+ * amdgpu_sync_init - init sync object subsystem -+ * -+ * Allocate the slab allocator. -+ */ -+int amdgpu_sync_init(void) -+{ -+ amdgpu_sync_slab = kmem_cache_create( -+ "amdgpu_sync", sizeof(struct amdgpu_sync_entry), 0, -+ SLAB_HWCACHE_ALIGN, NULL); -+ if (!amdgpu_sync_slab) -+ return -ENOMEM; -+ -+ return 0; -+} -+ -+/** -+ * amdgpu_sync_fini - fini sync object subsystem -+ * -+ * Free the slab allocator. -+ */ -+void amdgpu_sync_fini(void) -+{ -+ kmem_cache_destroy(amdgpu_sync_slab); -+} --- -2.7.4 - |