[PATCH v2] drm/xe: Invalidate userptr VMA on page pin fault

Yang, Fei fei.yang at intel.com
Sat Mar 9 07:01:19 UTC 2024


Snip

> diff --git a/drivers/gpu/drm/xe/xe_vm.c b/drivers/gpu/drm/xe/xe_vm.c index 643b3701a738..fff7be376bc4 100644
> --- a/drivers/gpu/drm/xe/xe_vm.c
> +++ b/drivers/gpu/drm/xe/xe_vm.c
> @@ -724,11 +724,18 @@ int xe_vm_userptr_pin(struct xe_vm *vm)
>       list_for_each_entry_safe(uvma, next, &vm->userptr.repin_list,
>                                userptr.repin_link) {
>               err = xe_vma_userptr_pin_pages(uvma);
> -             if (err < 0)
> -                     return err;
> -
>               list_del_init(&uvma->userptr.repin_link);
> -             list_move_tail(&uvma->vma.combined_links.rebind, &vm->rebind_list);
> +             if (err == -EFAULT) {

why checking for EFAULT only?

> +                     err = xe_vm_invalidate_vma(&uvma->vma);
> +                     if (err)
> +                             return err;
> +             } else {
> +                     if (err < 0)
> +                             return err;

For errors other than EFAULT, we would return without invalidating the vma?

> +
> +                     list_move_tail(&uvma->vma.combined_links.rebind,
> +                                    &vm->rebind_list);
> +             }
>       }
>
>       return 0;

-Fei


More information about the Intel-xe mailing list