drm/amdgpu: handle leaf PDEs as PTEs on Vega

This way we get retry faults for missing PDs.

Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
Christian König 2019-03-28 13:51:23 +01:00 коммит произвёл Alex Deucher
Родитель 5fa76a9dfe
Коммит b6f3a51e0a
1 изменённых файлов: 13 добавлений и 6 удалений

Просмотреть файл

@ -787,15 +787,22 @@ static int amdgpu_vm_clear_bo(struct amdgpu_device *adev,
} }
if (entries) { if (entries) {
uint64_t value = 0; uint64_t value = 0, flags = 0;
/* Workaround for fault priority problem on GMC9 */ if (adev->asic_type >= CHIP_VEGA10) {
if (level == AMDGPU_VM_PTB && if (level != AMDGPU_VM_PTB) {
adev->asic_type >= CHIP_VEGA10) /* Handle leaf PDEs as PTEs */
value = AMDGPU_PTE_EXECUTABLE; flags |= AMDGPU_PDE_PTE;
amdgpu_gmc_get_vm_pde(adev, level,
&value, &flags);
} else {
/* Workaround for fault priority problem on GMC9 */
flags = AMDGPU_PTE_EXECUTABLE;
}
}
r = vm->update_funcs->update(&params, bo, addr, 0, entries, r = vm->update_funcs->update(&params, bo, addr, 0, entries,
0, value); value, flags);
if (r) if (r)
return r; return r;
} }