]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
nouveau: set placement to original placement on uvmm validate.
authorDave Airlie <airlied@redhat.com>
Wed, 15 May 2024 02:55:41 +0000 (12:55 +1000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 11 Aug 2024 10:58:01 +0000 (12:58 +0200)
commit 9c685f61722d30a22d55bb8a48f7a48bb2e19bcc upstream.

When a buffer is evicted for memory pressure or TTM evict all,
the placement is set to the eviction domain, this means the
buffer never gets revalidated on the next exec to the correct domain.

I think this should be fine to use the initial domain from the
object creation, as least with VM_BIND this won't change after
init so this should be the correct answer.

Fixes: b88baab82871 ("drm/nouveau: implement new VM_BIND uAPI")
Cc: Danilo Krummrich <dakr@redhat.com>
Cc: <stable@vger.kernel.org> # v6.6
Signed-off-by: Dave Airlie <airlied@redhat.com>
Signed-off-by: Danilo Krummrich <dakr@kernel.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20240515025542.2156774-1-airlied@gmail.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/gpu/drm/nouveau/nouveau_uvmm.c

index ee02cd833c5e4345abdc3fb83968769999ac4340..84a36fe7c37dd6219414c50a65e1b8511d96add0 100644 (file)
@@ -1803,6 +1803,7 @@ nouveau_uvmm_bo_validate(struct drm_gpuvm_bo *vm_bo, struct drm_exec *exec)
 {
        struct nouveau_bo *nvbo = nouveau_gem_object(vm_bo->obj);
 
+       nouveau_bo_placement_set(nvbo, nvbo->valid_domains, 0);
        return nouveau_bo_validate(nvbo, true, false);
 }