diff options
Diffstat (limited to 'meta-amdfalconx86/recipes-kernel/linux/linux-yocto/0664-drm-amdgpu-use-fence_is_later-for-vm_flush-as-well-v.patch')
-rw-r--r-- | meta-amdfalconx86/recipes-kernel/linux/linux-yocto/0664-drm-amdgpu-use-fence_is_later-for-vm_flush-as-well-v.patch | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/meta-amdfalconx86/recipes-kernel/linux/linux-yocto/0664-drm-amdgpu-use-fence_is_later-for-vm_flush-as-well-v.patch b/meta-amdfalconx86/recipes-kernel/linux/linux-yocto/0664-drm-amdgpu-use-fence_is_later-for-vm_flush-as-well-v.patch new file mode 100644 index 00000000..505edbd0 --- /dev/null +++ b/meta-amdfalconx86/recipes-kernel/linux/linux-yocto/0664-drm-amdgpu-use-fence_is_later-for-vm_flush-as-well-v.patch @@ -0,0 +1,59 @@ +From a7800f6e18d8b5e57685e1d2d33abee3a4f6e2c9 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Christian=20K=C3=B6nig?= <christian.koenig@amd.com> +Date: Thu, 29 Oct 2015 17:01:19 +0100 +Subject: [PATCH 0664/1050] drm/amdgpu: use fence_is_later() for vm_flush as + well v2 +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +v2: remove superfluous check + +Signed-off-by: Christian König <christian.koenig@amd.com> +Reviewed-by: Alex Deucher <alexander.deucher@amd.com> (v1) +Reviewed-by: Chunming Zhou <david1.zhou@amd.com> +--- + drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 21 +++++++++------------ + 1 file changed, 9 insertions(+), 12 deletions(-) + +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c +index 633a32a..8c80381 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c +@@ -207,24 +207,21 @@ void amdgpu_vm_flush(struct amdgpu_ring *ring, + uint64_t pd_addr = amdgpu_bo_gpu_offset(vm->page_directory); + struct amdgpu_vm_id *vm_id = &vm->ids[ring->idx]; + struct fence *flushed_updates = vm_id->flushed_updates; +- bool is_earlier = false; ++ bool is_later; + +- if (flushed_updates && updates) { +- BUG_ON(flushed_updates->context != updates->context); +- is_earlier = (updates->seqno - flushed_updates->seqno <= +- INT_MAX) ? true : false; +- } +- +- if (pd_addr != vm_id->pd_gpu_addr || !flushed_updates || +- is_earlier) { ++ if (!flushed_updates) ++ is_later = true; ++ else if (!updates) ++ is_later = false; ++ else ++ is_later = fence_is_later(updates, flushed_updates); + ++ if (pd_addr != vm_id->pd_gpu_addr || is_later) { + trace_amdgpu_vm_flush(pd_addr, ring->idx, vm_id->id); +- if (is_earlier) { ++ if (is_later) { + vm_id->flushed_updates = fence_get(updates); + fence_put(flushed_updates); + } +- if (!flushed_updates) +- vm_id->flushed_updates = fence_get(updates); + vm_id->pd_gpu_addr = pd_addr; + amdgpu_ring_emit_vm_flush(ring, vm_id->id, vm_id->pd_gpu_addr); + } +-- +1.9.1 + |