diff options
author | Christian König <christian.koenig@amd.com> | 2017-11-30 08:12:53 -0500 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2017-12-12 14:45:34 -0500 |
commit | 94c6f5e4d1574094a91b1712536ab5b6a43f7a23 (patch) | |
tree | 929ee7c03458b9c2644899626ec332147d8529f8 /drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | |
parent | 79588d21ad312d9cd16a867c0d13278e6377a653 (diff) |
drm/amdgpu: stop joining PDEs
That doesn't hit any more most of the time anyway.
Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Chunming Zhou <david1.zhou@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 41 |
1 files changed, 7 insertions, 34 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c index dbe37d621796..17ae6afdef70 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | |||
@@ -1076,8 +1076,7 @@ static int amdgpu_vm_update_level(struct amdgpu_device *adev, | |||
1076 | struct amdgpu_bo *shadow; | 1076 | struct amdgpu_bo *shadow; |
1077 | struct amdgpu_ring *ring = NULL; | 1077 | struct amdgpu_ring *ring = NULL; |
1078 | uint64_t pd_addr, shadow_addr = 0; | 1078 | uint64_t pd_addr, shadow_addr = 0; |
1079 | uint64_t last_pde = ~0, last_pt = ~0, last_shadow = ~0; | 1079 | unsigned pt_idx, ndw = 0; |
1080 | unsigned count = 0, pt_idx, ndw = 0; | ||
1081 | struct amdgpu_job *job; | 1080 | struct amdgpu_job *job; |
1082 | struct amdgpu_pte_update_params params; | 1081 | struct amdgpu_pte_update_params params; |
1083 | struct dma_fence *fence = NULL; | 1082 | struct dma_fence *fence = NULL; |
@@ -1149,41 +1148,15 @@ static int amdgpu_vm_update_level(struct amdgpu_device *adev, | |||
1149 | 1148 | ||
1150 | parent->entries[pt_idx].addr = pt | AMDGPU_PTE_VALID; | 1149 | parent->entries[pt_idx].addr = pt | AMDGPU_PTE_VALID; |
1151 | 1150 | ||
1152 | pde = pd_addr + pt_idx * 8; | ||
1153 | incr = amdgpu_bo_size(bo); | 1151 | incr = amdgpu_bo_size(bo); |
1154 | if (((last_pde + 8 * count) != pde) || | 1152 | if (shadow) { |
1155 | ((last_pt + incr * count) != pt) || | 1153 | pde = shadow_addr + pt_idx * 8; |
1156 | (count == AMDGPU_VM_MAX_UPDATE_SIZE)) { | 1154 | params.func(¶ms, pde, pt, 1, incr, |
1157 | 1155 | AMDGPU_PTE_VALID); | |
1158 | if (count) { | ||
1159 | if (shadow) | ||
1160 | params.func(¶ms, | ||
1161 | last_shadow, | ||
1162 | last_pt, count, | ||
1163 | incr, | ||
1164 | AMDGPU_PTE_VALID); | ||
1165 | |||
1166 | params.func(¶ms, last_pde, | ||
1167 | last_pt, count, incr, | ||
1168 | AMDGPU_PTE_VALID); | ||
1169 | } | ||
1170 | |||
1171 | count = 1; | ||
1172 | last_pde = pde; | ||
1173 | last_shadow = shadow_addr + pt_idx * 8; | ||
1174 | last_pt = pt; | ||
1175 | } else { | ||
1176 | ++count; | ||
1177 | } | 1156 | } |
1178 | } | ||
1179 | 1157 | ||
1180 | if (count) { | 1158 | pde = pd_addr + pt_idx * 8; |
1181 | if (vm->root.base.bo->shadow) | 1159 | params.func(¶ms, pde, pt, 1, incr, AMDGPU_PTE_VALID); |
1182 | params.func(¶ms, last_shadow, last_pt, | ||
1183 | count, incr, AMDGPU_PTE_VALID); | ||
1184 | |||
1185 | params.func(¶ms, last_pde, last_pt, | ||
1186 | count, incr, AMDGPU_PTE_VALID); | ||
1187 | } | 1160 | } |
1188 | 1161 | ||
1189 | if (!vm->use_cpu_for_update) { | 1162 | if (!vm->use_cpu_for_update) { |