On Thu, 2025-09-04 at 12:16 +1000, Dave Airlie wrote:
> From: Dave Airlie <airl...@redhat.com>
> 
> Before exporting a buffer, make sure it has been populated with
> pages at least once.
> 
> Cc: Thomas Hellström <thomas.hellst...@linux.intel.com>
> Signed-off-by: Dave Airlie <airl...@redhat.com>

Reviewed-by: Thomas Hellström <thomas.hellst...@linux.intel.com>

> ---
>  drivers/gpu/drm/xe/xe_dma_buf.c | 12 ++++++++++++
>  1 file changed, 12 insertions(+)
> 
> diff --git a/drivers/gpu/drm/xe/xe_dma_buf.c
> b/drivers/gpu/drm/xe/xe_dma_buf.c
> index 346f857f3837..71b70e17bddd 100644
> --- a/drivers/gpu/drm/xe/xe_dma_buf.c
> +++ b/drivers/gpu/drm/xe/xe_dma_buf.c
> @@ -191,10 +191,22 @@ struct dma_buf *xe_gem_prime_export(struct
> drm_gem_object *obj, int flags)
>  {
>       struct xe_bo *bo = gem_to_xe_bo(obj);
>       struct dma_buf *buf;
> +     struct ttm_operation_ctx ctx = {
> +             .interruptible = true,
> +             .no_wait_gpu = true,
> +             /* We opt to avoid OOM on system pages allocations
> */
> +             .gfp_retry_mayfail = true,
> +             .allow_res_evict = false,
> +     };
> +     int ret;
>  
>       if (bo->vm)
>               return ERR_PTR(-EPERM);
>  
> +     ret = ttm_bo_setup_export(&bo->ttm, &ctx);
> +     if (ret)
> +             return ERR_PTR(ret);
> +
>       buf = drm_gem_prime_export(obj, flags);
>       if (!IS_ERR(buf))
>               buf->ops = &xe_dmabuf_ops;

Reply via email to