On 2020-02-19 9:44 a.m., Christian König wrote: > Well it should apply on top of amd-staging-drm-next. But I haven't > fetched that today yet. > > Give me a minute to rebase. This patch seems to have fixed the regression we saw yesterday. It applies to amd-staging-drm-next with a small jitter: $patch -p1 < /tmp/\[PATCH\]\ drm_amdgpu\:\ add\ VM\ update\ fences\ back\ to\ the\ root\ PD.eml patching file amdgpu_vm.c Hunk #2 succeeded at 1599 (offset -20 lines). I've been running 'glxgears' on the root window and 'pinion' and no problems--clean log. Tested-by: Luben Tuikov <luben.tuikov@xxxxxxx> Regards, Luben > > Christian. > > Am 19.02.20 um 15:27 schrieb Tom St Denis: >> This doesn't apply on top of 7fd3b632e17e55c5ffd008f9f025754e7daa1b66 >> which is the tip of drm-next >> >> >> Tom >> >> On 2020-02-19 9:20 a.m., Christian König wrote: >>> Add update fences to the root PD while mapping BOs. >>> >>> Otherwise PDs freed during the mapping won't wait for >>> updates to finish and can cause corruptions. >>> >>> Signed-off-by: Christian König <christian.koenig@xxxxxxx> >>> --- >>> drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 14 ++++++++++++-- >>> 1 file changed, 12 insertions(+), 2 deletions(-) >>> >>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c >>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c >>> index e7ab0c1e2793..dd63ccdbad2a 100644 >>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c >>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c >>> @@ -585,8 +585,8 @@ void amdgpu_vm_get_pd_bo(struct amdgpu_vm *vm, >>> { >>> entry->priority = 0; >>> entry->tv.bo = &vm->root.base.bo->tbo; >>> - /* One for TTM and one for the CS job */ >>> - entry->tv.num_shared = 2; >>> + /* Two for VM updates, one for TTM and one for the CS job */ >>> + entry->tv.num_shared = 4; >>> entry->user_pages = NULL; >>> list_add(&entry->tv.head, validated); >>> } >>> @@ -1619,6 +1619,16 @@ static int amdgpu_vm_bo_update_mapping(struct >>> amdgpu_device *adev, >>> goto error_unlock; >>> } >>> + if (flags & AMDGPU_PTE_VALID) { >>> + struct amdgpu_bo *root = vm->root.base.bo; >>> + >>> + if (!dma_fence_is_signaled(vm->last_direct)) >>> + amdgpu_bo_fence(root, vm->last_direct, true); >>> + >>> + if (!dma_fence_is_signaled(vm->last_delayed)) >>> + amdgpu_bo_fence(root, vm->last_delayed, true); >>> + } >>> + >>> r = vm->update_funcs->prepare(¶ms, resv, sync_mode); >>> if (r) >>> goto error_unlock; > _______________________________________________ amd-gfx mailing list amd-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/amd-gfx