diff options
Diffstat (limited to 'common/recipes-kernel/linux/files/0255-drm-amdgpu-optimize-amdgpu_vm_update_ptes-a-bit.patch')
-rw-r--r-- | common/recipes-kernel/linux/files/0255-drm-amdgpu-optimize-amdgpu_vm_update_ptes-a-bit.patch | 101 |
1 files changed, 0 insertions, 101 deletions
diff --git a/common/recipes-kernel/linux/files/0255-drm-amdgpu-optimize-amdgpu_vm_update_ptes-a-bit.patch b/common/recipes-kernel/linux/files/0255-drm-amdgpu-optimize-amdgpu_vm_update_ptes-a-bit.patch deleted file mode 100644 index c674a1e2..00000000 --- a/common/recipes-kernel/linux/files/0255-drm-amdgpu-optimize-amdgpu_vm_update_ptes-a-bit.patch +++ /dev/null @@ -1,101 +0,0 @@ -From 804871103c28d763b94a3488262169696452c0c6 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Christian=20K=C3=B6nig?= <christian.koenig@amd.com> -Date: Tue, 26 Jan 2016 12:37:49 +0100 -Subject: [PATCH 0255/1110] drm/amdgpu: optimize amdgpu_vm_update_ptes a bit -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Don't calculate the end address multiple times. - -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> -Signed-off-by: Kalyan Alle <kalyan.alle@amd.com> ---- - drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 39 ++++++++++++++++++---------------- - 1 file changed, 21 insertions(+), 18 deletions(-) - -diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c -index 21d918a..83bc8b1 100644 ---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c -+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c -@@ -577,6 +577,10 @@ static void amdgpu_vm_frag_ptes(struct amdgpu_device *adev, - - unsigned count; - -+ /* Abort early if there isn't anything to do */ -+ if (pe_start == pe_end) -+ return; -+ - /* system pages are non continuously */ - if (gtt || !(flags & AMDGPU_PTE_VALID) || (frag_start >= frag_end)) { - -@@ -634,6 +638,9 @@ static void amdgpu_vm_update_ptes(struct amdgpu_device *adev, - uint64_t mask = AMDGPU_VM_PTE_COUNT - 1; - uint64_t last_pte = ~0, last_dst = ~0; - unsigned count = 0; -+ const uint64_t mask = AMDGPU_VM_PTE_COUNT - 1; -+ -+ uint64_t last_pe_start = ~0, last_pe_end = ~0, last_dst = ~0; - uint64_t addr; - - /* walk over the address space and update the page tables */ -@@ -641,40 +648,36 @@ static void amdgpu_vm_update_ptes(struct amdgpu_device *adev, - uint64_t pt_idx = addr >> amdgpu_vm_block_size; - struct amdgpu_bo *pt = vm->page_tables[pt_idx].entry.robj; - unsigned nptes; -- uint64_t pte; -+ uint64_t pe_start; - - if ((addr & ~mask) == (end & ~mask)) - nptes = end - addr; - else - nptes = AMDGPU_VM_PTE_COUNT - (addr & mask); - -- pte = amdgpu_bo_gpu_offset(pt); -- pte += (addr & mask) * 8; -+ pe_start = amdgpu_bo_gpu_offset(pt); -+ pe_start += (addr & mask) * 8; - -- if ((last_pte + 8 * count) != pte) { -+ if (last_pe_end != pe_start) { - -- if (count) { -- amdgpu_vm_frag_ptes(adev, gtt, gtt_flags, ib, -- last_pte, last_pte + 8 * count, -- last_dst, flags); -- } -- -- count = nptes; -- last_pte = pte; -+ amdgpu_vm_frag_ptes(adev, gtt, gtt_flags, ib, -+ last_pe_start, last_pe_end, -+ last_dst, flags); -+ -+ last_pe_start = pe_start; -+ last_pe_end = pe_start + 8 * nptes; - last_dst = dst; - } else { -- count += nptes; -+ last_pe_end += 8 * nptes; - } - - addr += nptes; - dst += nptes * AMDGPU_GPU_PAGE_SIZE; - } - -- if (count) { -- amdgpu_vm_frag_ptes(adev, gtt, gtt_flags, ib, -- last_pte, last_pte + 8 * count, -- last_dst, flags); -- } -+ amdgpu_vm_frag_ptes(adev, gtt, gtt_flags, ib, -+ last_pe_start, last_pe_end, -+ last_dst, flags); - } - - /** --- -2.7.4 - |