1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
|
From 5b3adecd45017567cc2f3d045f8502f98d4ada85 Mon Sep 17 00:00:00 2001
From: Yong Zhao <Yong.Zhao@amd.com>
Date: Fri, 7 Apr 2017 17:04:14 -0400
Subject: [PATCH 1622/4131] Hybrid-kfd-adaption: replace vm page_directory with
root.bo
In amd-kfd-staging branch, the corresponding change is embedded in the
merged commit, which has two parents. Since we are doing cherry-picks
rather than merges, the manual adaption is needed here.
Change-Id: I55ff89812aa5cc61e6d2237568ef677882b5f6f9
Signed-off-by: Yong Zhao <Yong.Zhao@amd.com>
---
drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 20 ++++++++++----------
1 file changed, 10 insertions(+), 10 deletions(-)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
index 7f431e4..5853b59 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
@@ -455,7 +455,7 @@ static int amdgpu_amdkfd_bo_invalidate(struct amdgpu_bo *bo)
static int validate_pt_pd_bos(struct amdgpu_device *adev, struct amdgpu_vm *vm)
{
- struct amdgpu_bo *pd = vm->page_directory;
+ struct amdgpu_bo *pd = vm->root.bo;
struct amdgpu_vm_parser param;
int ret;
@@ -893,7 +893,7 @@ static int unmap_bo_from_gpuvm(struct amdgpu_device *adev,
struct amdgpu_bo_va *bo_va = entry->bo_va;
struct amdgpu_vm *vm = bo_va->vm;
struct amdkfd_vm *kvm = container_of(vm, struct amdkfd_vm, base);
- struct amdgpu_bo *pd = vm->page_directory;
+ struct amdgpu_bo *pd = vm->root.bo;
/* Remove eviction fence from PD (and thereby from PTs too as they
* share the resv. object. Otherwise during PT update job (see
@@ -938,13 +938,13 @@ static int update_gpuvm_pte(struct amdgpu_device *adev,
bo = bo_va->bo;
/* Update the page directory */
- ret = amdgpu_vm_update_page_directory(adev, vm);
+ ret = amdgpu_vm_update_directories(adev, vm);
if (ret != 0) {
pr_err("amdgpu_vm_update_page_directory failed\n");
return ret;
}
- amdgpu_sync_fence(adev, sync, vm->page_directory_fence);
+ amdgpu_sync_fence(adev, sync, vm->last_dir_update);
/* Update the page tables */
ret = amdgpu_vm_bo_update(adev, bo_va, false);
@@ -978,7 +978,7 @@ static int map_bo_to_gpuvm(struct amdgpu_device *adev,
struct amdgpu_bo *bo = entry->bo_va->bo;
struct amdkfd_vm *kvm = container_of(entry->bo_va->vm,
struct amdkfd_vm, base);
- struct amdgpu_bo *pd = entry->bo_va->vm->page_directory;
+ struct amdgpu_bo *pd = entry->bo_va->vm->root.bo;
/* Remove eviction fence from PD (and thereby from PTs too as they
* share the resv. object. This is necessary because new PTs are
@@ -1351,11 +1351,11 @@ static u64 get_vm_pd_gpu_offset(void *vm)
BUG_ON(avm == NULL);
- amdgpu_bo_reserve(avm->page_directory, false);
+ amdgpu_bo_reserve(avm->root.bo, false);
- offset = amdgpu_bo_gpu_offset(avm->page_directory);
+ offset = amdgpu_bo_gpu_offset(avm->root.bo);
- amdgpu_bo_unreserve(avm->page_directory);
+ amdgpu_bo_unreserve(avm->root.bo);
return offset;
}
@@ -1444,7 +1444,7 @@ void amdgpu_amdkfd_gpuvm_destroy_process_vm(struct kgd_dev *kgd, void *vm)
pr_debug("Destroying process vm %p\n", vm);
/* Release eviction fence from PD */
- pd = avm->page_directory;
+ pd = avm->root.bo;
amdgpu_bo_reserve(pd, false);
amdgpu_bo_fence(pd, NULL, false);
amdgpu_bo_unreserve(pd);
@@ -2206,7 +2206,7 @@ int amdgpu_amdkfd_gpuvm_restore_process_bos(void *info)
/* Validate PTs*/
list_for_each_entry(peer_vm, &process_info->vm_list_head,
vm_list_node) {
- adev = amdgpu_ttm_adev(peer_vm->base.page_directory->tbo.bdev);
+ adev = amdgpu_ttm_adev(peer_vm->base.root.bo->tbo.bdev);
ret = amdgpu_vm_validate_pt_bos(adev, &peer_vm->base,
amdgpu_amdkfd_validate, ¶m);
if (ret) {
--
2.7.4
|