diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2940-drm-amdgpu-remove-keeping-the-addr-of-the-VM-PDs.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2940-drm-amdgpu-remove-keeping-the-addr-of-the-VM-PDs.patch | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2940-drm-amdgpu-remove-keeping-the-addr-of-the-VM-PDs.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2940-drm-amdgpu-remove-keeping-the-addr-of-the-VM-PDs.patch new file mode 100644 index 00000000..ee9952c4 --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/2940-drm-amdgpu-remove-keeping-the-addr-of-the-VM-PDs.patch @@ -0,0 +1,92 @@ +From e9868117babf16d21b5bafe06893d0df5dae4ae9 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Christian=20K=C3=B6nig?= <christian.koenig@amd.com> +Date: Thu, 30 Nov 2017 15:41:28 +0100 +Subject: [PATCH 2940/4131] drm/amdgpu: remove keeping the addr of the VM PDs +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +No more double house keeping. + +Signed-off-by: Christian König <christian.koenig@amd.com> +Reviewed-by: Chunming Zhou <david1.zhou@amd.com> +--- + drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 13 ++++--------- + drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h | 2 +- + 2 files changed, 5 insertions(+), 10 deletions(-) + +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c +index 733caae..a715ee8 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c +@@ -392,7 +392,6 @@ static int amdgpu_vm_alloc_levels(struct amdgpu_device *adev, + spin_lock(&vm->status_lock); + list_add(&entry->base.vm_status, &vm->relocated); + spin_unlock(&vm->status_lock); +- entry->addr = 0; + } + + if (level < adev->vm_manager.num_level) { +@@ -1134,15 +1133,12 @@ static int amdgpu_vm_update_pde(struct amdgpu_device *adev, + pt = amdgpu_bo_gpu_offset(bo); + pt = amdgpu_gart_get_vm_pde(adev, pt); + /* Don't update huge pages here */ +- if (entry->addr & AMDGPU_PDE_PTE || +- entry->addr == (pt | AMDGPU_PTE_VALID)) { ++ if (entry->huge) { + if (!vm->use_cpu_for_update) + amdgpu_job_free(job); + return 0; + } + +- entry->addr = pt | AMDGPU_PTE_VALID; +- + if (shadow) { + pde = shadow_addr + (entry - parent->entries) * 8; + params.func(¶ms, pde, pt, 1, 0, AMDGPU_PTE_VALID); +@@ -1208,7 +1204,6 @@ static void amdgpu_vm_invalidate_level(struct amdgpu_device *adev, + if (!entry->base.bo) + continue; + +- entry->addr = ~0ULL; + spin_lock(&vm->status_lock); + if (list_empty(&entry->base.vm_status)) + list_add(&entry->base.vm_status, &vm->relocated); +@@ -1341,10 +1336,10 @@ static void amdgpu_vm_handle_huge_pages(struct amdgpu_pte_update_params *p, + flags |= AMDGPU_PDE_PTE; + } + +- if (entry->addr == (dst | flags)) ++ if (!entry->huge && !(flags & AMDGPU_PDE_PTE)) + return; + +- entry->addr = (dst | flags); ++ entry->huge = !!(flags & AMDGPU_PDE_PTE); + + if (use_cpu_update) { + /* In case a huge page is replaced with a system +@@ -1418,7 +1413,7 @@ static int amdgpu_vm_update_ptes(struct amdgpu_pte_update_params *params, + amdgpu_vm_handle_huge_pages(params, entry, parent, + nptes, dst, flags); + /* We don't need to update PTEs for huge pages */ +- if (entry->addr & AMDGPU_PDE_PTE) ++ if (entry->huge) + continue; + + pt = entry->base.bo; +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h +index 6653278..b5988f6 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h +@@ -142,7 +142,7 @@ struct amdgpu_vm_bo_base { + + struct amdgpu_vm_pt { + struct amdgpu_vm_bo_base base; +- uint64_t addr; ++ bool huge; + + /* array of page tables, one for each directory entry */ + struct amdgpu_vm_pt *entries; +-- +2.7.4 + |