Am 06.07.2018 um 13:02 schrieb Huang Rui:
On Fri, Jul 06, 2018 at 10:02:32AM +0200, Christian König wrote:
Am 05.07.2018 um 20:56 schrieb Andrey Grodzovsky:
Problem: When PD/PT update made by CPU root PD was not yet mapped causing
page fault.
Fix: Verify root PD is mapped into CPU address space.
v2:
Make sure that we add the root PD to the relocated list
since then it's get mapped into CPU address space bt default
in amdgpu_vm_update_directories.
Link: https://bugs.freedesktop.org/show_bug.cgi?id=107065
Signed-off-by: Andrey Grodzovsky <[email protected]>
Signed-off-by: Andrey Grodzovsky <[email protected]>
---
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
index 845f73a..1a8caf1 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
@@ -156,6 +156,9 @@ static void amdgpu_vm_bo_base_init(struct amdgpu_vm_bo_base
*base,
return;
list_add_tail(&base->bo_list, &bo->va);
+ if (bo->tbo.type == ttm_bo_type_kernel)
+ list_move(&base->vm_status, &vm->relocated);
+
if (bo->tbo.resv != vm->root.base.bo->tbo.resv)
return;
@@ -168,7 +171,8 @@ static void amdgpu_vm_bo_base_init(struct amdgpu_vm_bo_base
*base,
* is currently evicted. add the bo to the evicted list to make sure it
* is validated on next vm use to avoid fault.
* */
- list_move_tail(&base->vm_status, &vm->evicted);
+ if (bo->tbo.type != ttm_bo_type_kernel)
+ list_move_tail(&base->vm_status, &vm->evicted);
You need to drop that chunk, the evicted state supersedes the
relocated state (e.g. when they are validated they move from evicted
to relocated).
Is that mean we must also move root bo to relocated list like other PD/PT
BOs, then we do the kmap under amdgpu_vm_update_directories for updating
pte with mmio from pcie?
Yes, exactly.
Why we avoid kernel type bo to move evicted list if they are not in
preferred_domains here? You know we checked (bo->preferred_domains &
amdgpu_mem_type_to_domain(bo->tbo.mem.mem_type)) last step.
Well that is the point, we must move the PDs to the evicted list when
they are not in one of the preferred_domains.
Christian.
Thanks,
Ray
Additional to that the now superfluous move in
amdgpu_vm_alloc_levels() can be removed.
Christian.
}
/**
_______________________________________________
amd-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/amd-gfx
_______________________________________________
amd-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/amd-gfx
_______________________________________________
amd-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/amd-gfx