diff options
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.19.8/1693-drm-amdgpu-don-t-put-the-root-PD-into-the-relocated-.patch')
-rw-r--r-- | common/recipes-kernel/linux/linux-yocto-4.19.8/1693-drm-amdgpu-don-t-put-the-root-PD-into-the-relocated-.patch | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.19.8/1693-drm-amdgpu-don-t-put-the-root-PD-into-the-relocated-.patch b/common/recipes-kernel/linux/linux-yocto-4.19.8/1693-drm-amdgpu-don-t-put-the-root-PD-into-the-relocated-.patch new file mode 100644 index 00000000..07b61d4a --- /dev/null +++ b/common/recipes-kernel/linux/linux-yocto-4.19.8/1693-drm-amdgpu-don-t-put-the-root-PD-into-the-relocated-.patch @@ -0,0 +1,87 @@ +From 74ef1e4691d5248fc4be024d4ecb11771ba260dd Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Christian=20K=C3=B6nig?= <christian.koenig@amd.com> +Date: Wed, 27 Mar 2019 11:34:24 +0100 +Subject: [PATCH 1693/2940] drm/amdgpu: don't put the root PD into the + relocated list +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Instead of skipping the root PD while processing the relocated list just never +put it on the list in the first place. + +This avoids walking the list all together when the root PD is the only entry +and so also avoids trying to submit a zero sized IB to the SDMA. + +Signed-off-by: Christian König <christian.koenig@amd.com> +Tested-by: Michel Dänzer <michel.daenzer@amd.com> +--- + drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 18 ++++++++---------- + 1 file changed, 8 insertions(+), 10 deletions(-) + +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c +index 530a42d914e7..9f5e3bf9c908 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c +@@ -306,7 +306,7 @@ static void amdgpu_vm_bo_base_init(struct amdgpu_vm_bo_base *base, + return; + + vm->bulk_moveable = false; +- if (bo->tbo.type == ttm_bo_type_kernel) ++ if (bo->tbo.type == ttm_bo_type_kernel && bo->parent) + amdgpu_vm_bo_relocated(base); + else + amdgpu_vm_bo_idle(base); +@@ -640,7 +640,10 @@ int amdgpu_vm_validate_pt_bos(struct amdgpu_device *adev, struct amdgpu_vm *vm, + amdgpu_vm_bo_moved(bo_base); + } else { + vm->update_funcs->map_table(bo); +- amdgpu_vm_bo_relocated(bo_base); ++ if (bo->parent) ++ amdgpu_vm_bo_relocated(bo_base); ++ else ++ amdgpu_vm_bo_idle(bo_base); + } + } + +@@ -1141,16 +1144,15 @@ uint64_t amdgpu_vm_map_gart(const dma_addr_t *pages_addr, uint64_t addr) + * + * @param: parameters for the update + * @vm: requested vm +- * @parent: parent directory + * @entry: entry to update + * + * Makes sure the requested entry in parent is up to date. + */ + static int amdgpu_vm_update_pde(struct amdgpu_vm_update_params *params, + struct amdgpu_vm *vm, +- struct amdgpu_vm_pt *parent, + struct amdgpu_vm_pt *entry) + { ++ struct amdgpu_vm_pt *parent = amdgpu_vm_pt_parent(entry); + struct amdgpu_bo *bo = parent->base.bo, *pbo; + uint64_t pde, pt, flags; + unsigned level; +@@ -1212,17 +1214,13 @@ int amdgpu_vm_update_directories(struct amdgpu_device *adev, + return r; + + while (!list_empty(&vm->relocated)) { +- struct amdgpu_vm_pt *pt, *entry; ++ struct amdgpu_vm_pt *entry; + + entry = list_first_entry(&vm->relocated, struct amdgpu_vm_pt, + base.vm_status); + amdgpu_vm_bo_idle(&entry->base); + +- pt = amdgpu_vm_pt_parent(entry); +- if (!pt) +- continue; +- +- r = amdgpu_vm_update_pde(¶ms, vm, pt, entry); ++ r = amdgpu_vm_update_pde(¶ms, vm, entry); + if (r) + goto error; + } +-- +2.17.1 + |