Re: [PATCH] drm/xe: Reject page faults from non-fault-mode scratch VMs
Matthew Brost <[email protected]>
| Newsgroups | org.freedesktop.lists.intel-xe |
|---|---|
| Message-ID | <[email protected]> |
On Thu, Aug 20, 2026 at 12:24:45PM +0530, Arvind Yadav wrote:
> Having scratch enabled does not make a VM capable of handling recoverable
> page faults. Allowing scratch VMs through the ASID lookup also admits
> dma-fence mode VMs.
>
> If such a VM faults on an already valid VMA, the handler reports success
> without fixing the fault, causing the GPU to retry indefinitely.
>
> Only allow fault-mode VMs through the ASID lookup. Fault-mode VMs using
> scratch remain supported, while faults from 3D VMs are rejected.
>
> Fixes: ad9843aac91a ("drm/xe/madvise: Implement purgeable buffer object support")
> Cc: Matthew Brost <[email protected]>
Reviewed-by: Matthew Brost <[email protected]>
> Cc: Thomas Hellström <[email protected]>
> Cc: Himal Prasad Ghimiray <[email protected]>
> Suggested-by: Matthew Brost <[email protected]>
> Signed-off-by: Arvind Yadav <[email protected]>
> ---
> drivers/gpu/drm/xe/xe_pagefault.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/xe/xe_pagefault.c b/drivers/gpu/drm/xe/xe_pagefault.c
> index b2d7bca9e407..19cc7c59bec4 100644
> --- a/drivers/gpu/drm/xe/xe_pagefault.c
> +++ b/drivers/gpu/drm/xe/xe_pagefault.c
> @@ -234,7 +234,7 @@ static struct xe_vm *xe_pagefault_asid_to_vm(struct xe_device *xe, u32 asid)
>
> down_read(&xe->usm.lock);
> vm = xa_load(&xe->usm.asid_to_vm, asid);
> - if (vm && (xe_vm_in_fault_mode(vm) || xe_vm_has_scratch(vm)))
> + if (vm && xe_vm_in_fault_mode(vm))
> xe_vm_get(vm);
> else
> vm = ERR_PTR(-EINVAL);
> --
> 2.43.0
>