[RFC PATCH v2 3/6] drm/shmem: Implement sparse allocation of pages for shmem objects

Dmitry Osipenko dmitry.osipenko at collabora.com
Wed Mar 26 19:54:27 UTC 2025


On 3/26/25 05:14, Adrián Larumbe wrote:
> +static struct sg_table *
> +drm_gem_shmem_sparse_get_sgt_range(struct drm_gem_shmem_object *shmem,
> +				   unsigned int n_pages, pgoff_t page_offset,
> +				   gfp_t gfp)
> +{
> +	struct drm_gem_object *obj = &shmem->base;
> +	struct sg_table *sgt;
> +	int ret;
> +
> +	if (drm_WARN_ON(obj->dev, !shmem->sparse))
> +		return ERR_PTR(-EINVAL);
> +
> +	/* If the page range wasn't allocated, then bail out immediately */
> +	if (xa_load(&shmem->xapages, page_offset) == NULL)
> +		return ERR_PTR(-EINVAL);
> +
> +	sgt = kzalloc(sizeof(*sgt), GFP_NOWAIT);

You likely meant to use the gfp arg here.

-- 
Best regards,
Dmitry


More information about the dri-devel mailing list