diff options
Diffstat (limited to 'common/recipes-kernel/linux/files/0464-drm-amdgpu-optionally-enable-GART-debugfs-file.patch')
-rw-r--r-- | common/recipes-kernel/linux/files/0464-drm-amdgpu-optionally-enable-GART-debugfs-file.patch | 193 |
1 files changed, 0 insertions, 193 deletions
diff --git a/common/recipes-kernel/linux/files/0464-drm-amdgpu-optionally-enable-GART-debugfs-file.patch b/common/recipes-kernel/linux/files/0464-drm-amdgpu-optionally-enable-GART-debugfs-file.patch deleted file mode 100644 index e91b8105..00000000 --- a/common/recipes-kernel/linux/files/0464-drm-amdgpu-optionally-enable-GART-debugfs-file.patch +++ /dev/null @@ -1,193 +0,0 @@ -From 18510c1c4a1505f2e79edc206b997bee011913f6 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Christian=20K=C3=B6nig?= <christian.koenig@amd.com> -Date: Wed, 30 Mar 2016 14:42:57 +0200 -Subject: [PATCH 0464/1110] drm/amdgpu: optionally enable GART debugfs file -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Keeping the pages array around can use a lot of system memory -when you want a large GART. - -Signed-off-by: Christian König <christian.koenig@amd.com> -Reviewed-by: Alex Deucher <alexander.deucher@amd.com> -Signed-off-by: Alex Deucher <alexander.deucher@amd.com> ---- - drivers/gpu/drm/amd/amdgpu/Kconfig | 10 +++++++++ - drivers/gpu/drm/amd/amdgpu/amdgpu.h | 2 ++ - drivers/gpu/drm/amd/amdgpu/amdgpu_gart.c | 35 +++++++++++++++++++------------- - drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 9 ++++++++ - 4 files changed, 42 insertions(+), 14 deletions(-) - -diff --git a/drivers/gpu/drm/amd/amdgpu/Kconfig b/drivers/gpu/drm/amd/amdgpu/Kconfig -index b30fcfa..7335c04 100644 ---- a/drivers/gpu/drm/amd/amdgpu/Kconfig -+++ b/drivers/gpu/drm/amd/amdgpu/Kconfig -@@ -15,3 +15,13 @@ config DRM_AMDGPU_USERPTR - help - This option selects CONFIG_MMU_NOTIFIER if it isn't already - selected to enabled full userptr support. -+ -+config DRM_AMDGPU_GART_DEBUGFS -+ bool "Allow GART access through debugfs" -+ depends on DRM_AMDGPU -+ depends on DEBUG_FS -+ default n -+ help -+ Selecting this option creates a debugfs file to inspect the mapped -+ pages. Uses more memory for housekeeping, enable only for debugging. -+ -diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h -index 35e07fb..993b574 100644 ---- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h -+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h -@@ -612,7 +612,9 @@ struct amdgpu_gart { - unsigned num_gpu_pages; - unsigned num_cpu_pages; - unsigned table_size; -+#ifdef CONFIG_DRM_AMDGPU_GART_DEBUGFS - struct page **pages; -+#endif - bool ready; - const struct amdgpu_gart_funcs *gart_funcs; - }; -diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gart.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gart.c -index a13603a..921bce2 100644 ---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gart.c -+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gart.c -@@ -238,17 +238,17 @@ void amdgpu_gart_unbind(struct amdgpu_device *adev, unsigned offset, - t = offset / AMDGPU_GPU_PAGE_SIZE; - p = t / (PAGE_SIZE / AMDGPU_GPU_PAGE_SIZE); - for (i = 0; i < pages; i++, p++) { -- if (adev->gart.pages[p]) { -- adev->gart.pages[p] = NULL; -- page_base = adev->dummy_page.addr; -- if (!adev->gart.ptr) -- continue; -+#ifdef CONFIG_AMDGPU_GART_DEBUGFS -+ adev->gart.pages[p] = NULL; -+#endif -+ page_base = adev->dummy_page.addr; -+ if (!adev->gart.ptr) -+ continue; - -- for (j = 0; j < (PAGE_SIZE / AMDGPU_GPU_PAGE_SIZE); j++, t++) { -- amdgpu_gart_set_pte_pde(adev, adev->gart.ptr, -- t, page_base, flags); -- page_base += AMDGPU_GPU_PAGE_SIZE; -- } -+ for (j = 0; j < (PAGE_SIZE / AMDGPU_GPU_PAGE_SIZE); j++, t++) { -+ amdgpu_gart_set_pte_pde(adev, adev->gart.ptr, -+ t, page_base, flags); -+ page_base += AMDGPU_GPU_PAGE_SIZE; - } - } - mb(); -@@ -286,7 +286,9 @@ int amdgpu_gart_bind(struct amdgpu_device *adev, unsigned offset, - p = t / (PAGE_SIZE / AMDGPU_GPU_PAGE_SIZE); - - for (i = 0; i < pages; i++, p++) { -+#ifdef CONFIG_AMDGPU_GART_DEBUGFS - adev->gart.pages[p] = pagelist[i]; -+#endif - if (adev->gart.ptr) { - page_base = dma_addr[i]; - for (j = 0; j < (PAGE_SIZE / AMDGPU_GPU_PAGE_SIZE); j++, t++) { -@@ -312,9 +314,9 @@ int amdgpu_gart_init(struct amdgpu_device *adev) - { - int r; - -- if (adev->gart.pages) { -+ if (adev->dummy_page.page) - return 0; -- } -+ - /* We need PAGE_SIZE >= AMDGPU_GPU_PAGE_SIZE */ - if (PAGE_SIZE < AMDGPU_GPU_PAGE_SIZE) { - DRM_ERROR("Page size is smaller than GPU page size!\n"); -@@ -328,12 +330,16 @@ int amdgpu_gart_init(struct amdgpu_device *adev) - adev->gart.num_gpu_pages = adev->mc.gtt_size / AMDGPU_GPU_PAGE_SIZE; - DRM_INFO("GART: num cpu pages %u, num gpu pages %u\n", - adev->gart.num_cpu_pages, adev->gart.num_gpu_pages); -+ -+#ifdef CONFIG_AMDGPU_GART_DEBUGFS - /* Allocate pages table */ - adev->gart.pages = vzalloc(sizeof(void *) * adev->gart.num_cpu_pages); - if (adev->gart.pages == NULL) { - amdgpu_gart_fini(adev); - return -ENOMEM; - } -+#endif -+ - return 0; - } - -@@ -346,13 +352,14 @@ int amdgpu_gart_init(struct amdgpu_device *adev) - */ - void amdgpu_gart_fini(struct amdgpu_device *adev) - { -- if (adev->gart.pages && adev->gart.ready) { -+ if (adev->gart.ready) { - /* unbind pages */ - amdgpu_gart_unbind(adev, 0, adev->gart.num_cpu_pages); - } - adev->gart.ready = false; -+#ifdef CONFIG_AMDGPU_GART_DEBUGFS - vfree(adev->gart.pages); - adev->gart.pages = NULL; -- -+#endif - amdgpu_dummy_page_fini(adev); - } -diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c -index fbc3c2b..228ccab 100644 ---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c -+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c -@@ -1226,6 +1226,8 @@ static const struct file_operations amdgpu_ttm_vram_fops = { - .llseek = default_llseek - }; - -+#ifdef CONFIG_DRM_AMDGPU_GART_DEBUGFS -+ - static ssize_t amdgpu_ttm_gtt_read(struct file *f, char __user *buf, - size_t size, loff_t *pos) - { -@@ -1273,6 +1275,8 @@ static const struct file_operations amdgpu_ttm_gtt_fops = { - - #endif - -+#endif -+ - static int amdgpu_ttm_debugfs_init(struct amdgpu_device *adev) - { - #if defined(CONFIG_DEBUG_FS) -@@ -1288,6 +1292,7 @@ static int amdgpu_ttm_debugfs_init(struct amdgpu_device *adev) - i_size_write(ent->d_inode, adev->mc.mc_vram_size); - adev->mman.vram = ent; - -+#ifdef CONFIG_DRM_AMDGPU_GART_DEBUGFS - ent = debugfs_create_file("amdgpu_gtt", S_IFREG | S_IRUGO, root, - adev, &amdgpu_ttm_gtt_fops); - if (IS_ERR(ent)) -@@ -1295,6 +1300,7 @@ static int amdgpu_ttm_debugfs_init(struct amdgpu_device *adev) - i_size_write(ent->d_inode, adev->mc.gtt_size); - adev->mman.gtt = ent; - -+#endif - count = ARRAY_SIZE(amdgpu_ttm_debugfs_list); - - #ifdef CONFIG_SWIOTLB -@@ -1316,7 +1322,10 @@ static void amdgpu_ttm_debugfs_fini(struct amdgpu_device *adev) - debugfs_remove(adev->mman.vram); - adev->mman.vram = NULL; - -+#ifdef CONFIG_DRM_AMDGPU_GART_DEBUGFS - debugfs_remove(adev->mman.gtt); - adev->mman.gtt = NULL; - #endif -+ -+#endif - } --- -2.7.4 - |