[Intel-xe] [PATCH] drm/xe/vm: fix double list add
Maarten Lankhorst
maarten.lankhorst at linux.intel.com
Thu Jun 1 13:19:05 UTC 2023
Hey,
I guess that should make the ignore argument pointless?
Cheers,
Maarten
On 2023-06-01 14:35, Matthew Auld wrote:
> It looks like the driver only wants to track one vma for each external
> object per vm. However it looks like bo_has_vm_references_locked() will
> ignore any vma that is marked as vma->destroyed (not actually destroyed
> yet). If we then mark our externally tracked vma as destroyed and then
> create a new vma for the same object and vm, we can have two externally
> tracked vma for the same object and vm. When the destroy actually
> happens it tries to move the external tracking to a different vma, but
> in this case it is already being tracked, leading to double list add
> errors. It should be safe to simply drop the destroyed check in
> bo_has_vm_references(), since the actual destroy will switch the
> external tracking to the next available vma.
>
> Closes: https://gitlab.freedesktop.org/drm/xe/kernel/-/issues/290
> Cc: Maarten Lankhorst <maarten.lankhorst at linux.intel.com>
> Cc: Thomas Hellström <thomas.hellstrom at linux.intel.com>
> Signed-off-by: Matthew Auld <matthew.auld at intel.com>
> ---
> drivers/gpu/drm/xe/xe_vm.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c
> index dd1335e12d4c..5aa2aeb14beb 100644
> --- a/drivers/gpu/drm/xe/xe_vm.c
> +++ b/drivers/gpu/drm/xe/xe_vm.c
> @@ -964,7 +964,7 @@ bo_has_vm_references_locked(struct xe_bo *bo, struct xe_vm *vm,
> struct xe_vma *vma;
>
> list_for_each_entry(vma, &bo->vmas, bo_link) {
> - if (vma != ignore && vma->vm == vm && !vma->destroyed)
> + if (vma != ignore && vma->vm == vm)
> return vma;
> }
>
More information about the Intel-xe
mailing list