diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3475-drm-amdgpu-make-VMID-assignment-more-fair-v2.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3475-drm-amdgpu-make-VMID-assignment-more-fair-v2.patch | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3475-drm-amdgpu-make-VMID-assignment-more-fair-v2.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3475-drm-amdgpu-make-VMID-assignment-more-fair-v2.patch new file mode 100644 index 00000000..8da9c9c4 --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3475-drm-amdgpu-make-VMID-assignment-more-fair-v2.patch @@ -0,0 +1,55 @@ +From 00de04ee677800ad6d74879eb444e19ba71998fb Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Christian=20K=C3=B6nig?= <christian.koenig@amd.com> +Date: Wed, 31 Jan 2018 10:16:26 +0100 +Subject: [PATCH 3475/4131] drm/amdgpu: make VMID assignment more fair v2 +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Similar to finding an idle one before reuse. + +This guarantees fairness between processes. Otherwise process with a reserved +VMID have an unfair advantage while scheduling jobs. + +v2: improve commit message + +Signed-off-by: Christian König <christian.koenig@amd.com> +Acked-by: Chunming Zhou <david1.zhou@amd.com> +Signed-off-by: Alex Deucher <alexander.deucher@amd.com> +--- + drivers/gpu/drm/amd/amdgpu/amdgpu_ids.c | 12 +++++++----- + 1 file changed, 7 insertions(+), 5 deletions(-) + +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ids.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ids.c +index 6ecf8ad..da2b051 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ids.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ids.c +@@ -272,11 +272,6 @@ int amdgpu_vmid_grab(struct amdgpu_vm *vm, struct amdgpu_ring *ring, + int r = 0; + + mutex_lock(&id_mgr->lock); +- if (vm->reserved_vmid[vmhub]) { +- r = amdgpu_vmid_grab_reserved_locked(vm, ring, sync, fence, job); +- mutex_unlock(&id_mgr->lock); +- return r; +- } + fences = kmalloc_array(sizeof(void *), id_mgr->num_ids, GFP_KERNEL); + if (!fences) { + mutex_unlock(&id_mgr->lock); +@@ -323,6 +318,13 @@ int amdgpu_vmid_grab(struct amdgpu_vm *vm, struct amdgpu_ring *ring, + } + kfree(fences); + ++ if (vm->reserved_vmid[vmhub]) { ++ r = amdgpu_vmid_grab_reserved_locked(vm, ring, sync, ++ fence, job); ++ mutex_unlock(&id_mgr->lock); ++ return r; ++ } ++ + job->vm_needs_flush = vm->use_cpu_for_update; + /* Check if we can use a VMID already assigned to this VM */ + list_for_each_entry_reverse(id, &id_mgr->ids_lru, list) { +-- +2.7.4 + |