From nobody Fri Jul 24 21:29:31 2026 Received: from sender4-op-o11.zoho.com (sender4-op-o11.zoho.com [136.143.188.11]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7C3014156C5; Fri, 24 Jul 2026 12:10:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=136.143.188.11 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784895045; cv=pass; b=RkOnOAJbCvrYe6nFIu+WwB9zC+ndwrsE+EXDC+GUgzV5XNFzIjC+W82l5mt2btUOyY2jUNh/73FI9w0P5cKo2nAELD6qXZtCNulFLzuB2bu1nXISagLRM6nBMq/q+0VTxHzBNWtRwunQWUE8rIcP6GldGmI93Mxy0NfRh8uoI+c= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784895045; c=relaxed/simple; bh=3PVL60uLcRI4yvDQx1IrwymmB1TFYT1vk37fGhTxmlE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc; b=iug1u3ZYfgGb7v8t0GfuTxFmAzvZhesRAarLJ5C6AilpyWrzLX9dbjokQPvpba4A8eIou+hxiDPnSY82HTqqMTSepuyyWEbTRLzjVUpyM2AmILIvqk2Eu0U6phPI9M3vyFnNHOnI4GWcRiIlThuNJzedAAZa6azLcb7IadN0G6k= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (1024-bit key) header.d=collabora.com header.i=adrian.larumbe@collabora.com header.b=DM9IjqJU; arc=pass smtp.client-ip=136.143.188.11 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=collabora.com header.i=adrian.larumbe@collabora.com header.b="DM9IjqJU" ARC-Seal: i=1; a=rsa-sha256; t=1784894957; cv=none; d=zohomail.com; s=zohoarc; b=XytxdjCGX9EVUPtKHF9e+bqP8A0cCXkZpjpzzRG0dGjvUYRYcAh6Y28Aq0zdwe+8AdS0x2LLhgchFvco13lZXmzHRS1P311dnA5e7UXs7dXA0MgXm1/tA6glovCBav/JXtd1SH6LVt1sIIOsu4z+/L++ZRAMXpwvZ6Y9a5hq7Og= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784894957; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:MIME-Version:Message-ID:Subject:Subject:To:To:Message-Id:Reply-To; bh=DeEZcBVEsWInovxiw4dTOa5TRdK+0FTpKBalsMipvug=; b=JnD439G1G5v2NpSXVTamKPt4m956jX/SiSkVFQJyR8L+/Tzfcz085c8FPQDIm1O9UU0rkWqmeYYp/9INnwOJJg9koEjGsYp+o3hKrvNRRHQQP9jIuiTFBONMiQ50KaKCTWw3+QtroSfWuKweTO9haNeRIBLOFveMfJT9agHj8Xs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=collabora.com; spf=pass smtp.mailfrom=adrian.larumbe@collabora.com; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1784894957; s=zohomail; d=collabora.com; i=adrian.larumbe@collabora.com; h=From:From:Date:Date:Subject:Subject:MIME-Version:Content-Type:Content-Transfer-Encoding:Message-Id:Message-Id:To:To:Cc:Cc:Reply-To; bh=DeEZcBVEsWInovxiw4dTOa5TRdK+0FTpKBalsMipvug=; b=DM9IjqJUPkdiUu8sGP59ecg8r/tMoNO5Ucrjlfp4CnQV0i6E7tPp3MHZHIK06Xf+ EyXUTV8YPyUEvAZ8TTPMKZdAi/yeV5ewIIepEP577y2UoMRbsytnA4WAQYtOppnR8oO 8MACe4aWiJ5XesjgWMqpy/fAHasX7/jXdqs3/ukY= Received: by mx.zohomail.com with SMTPS id 1784894955910533.5313550215117; Fri, 24 Jul 2026 05:09:15 -0700 (PDT) From: =?utf-8?q?Adri=C3=A1n_Larumbe?= Date: Fri, 24 Jul 2026 13:08:58 +0100 Subject: [PATCH] drm/gem: Move pages_to_sg helper into drm_gem.c Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260724-get_pages-v1-1-b10e5d65628e@collabora.com> X-B4-Tracking: v=1; b=H4sIAAAAAAAC/6tWKk4tykwtVrJSqFYqSi3LLM7MzwNyDHUUlJIzE vPSU3UzU4B8JSMDIzMDcyMT3fTUkviCxPTUYt1Uo1RLw2RT49TERGMloPqCotS0zAqwWdGxEH5 xaVJWanIJyACl2loAZ6PVx20AAAA= X-Change-ID: 20260724-get_pages-e2e91c53eaa3 To: Alex Deucher , =?utf-8?q?Christian_K=C3=B6nig?= , David Airlie , Simona Vetter , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Lucas Stach , Russell King , Christian Gmeiner , Jianmin Lv , Qianhai Wu , Huacai Chen , Mingcong Bai , Xi Ruoyao , Icenowy Zheng , Rob Clark , Dmitry Baryshkov , Abhinav Kumar , Jessica Zhang , Sean Paul , Marijn Suijten , Lyude Paul , Danilo Krummrich , Boris Brezillon , Steven Price , Liviu Dudau , Sandy Huang , =?utf-8?q?Heiko_St=C3=BCbner?= , Andy Yan , Thierry Reding , Mikko Perttunen , Jonathan Hunter , Zack Rusin , Broadcom internal kernel review list , Matthew Brost , =?utf-8?q?Thomas_Hellstr=C3=B6m?= , Rodrigo Vivi , Oleksandr Andrushchenko , Sumit Semwal Cc: amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, etnaviv@lists.freedesktop.org, linux-arm-msm@vger.kernel.org, freedreno@lists.freedesktop.org, nouveau@lists.freedesktop.org, linux-rockchip@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-tegra@vger.kernel.org, intel-xe@lists.freedesktop.org, xen-devel@lists.xenproject.org, linux-media@vger.kernel.org, linaro-mm-sig@lists.linaro.org, =?utf-8?q?Adri=C3=A1n_Larumbe?= X-Mailer: b4 0.15.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=17563; i=adrian.larumbe@collabora.com; h=from:subject:message-id; bh=3PVL60uLcRI4yvDQx1IrwymmB1TFYT1vk37fGhTxmlE=; b=owEB7QES/pANAwAKAQ4mfkzuU0M9AcsmYgBqY1XgrrsDazA78XCqv4Hkn/ujXzt2KDrdKQQnM HDXI/outcGJAbMEAAEKAB0WIQQyQDDowAUXXfk3B6QOJn5M7lNDPQUCamNV4AAKCRAOJn5M7lND PRlEC/4otGAiqlGdJW1PM79TRx/wgUCZsSgcgrihNvGOYUqY7R9iKNivSpxEvj7LI/vuWtkk1Sc zz5Fl15Hx81JDA5QrDvVIaw6+h2UxR/395AaKIu6dxEVD/nUAljE+CGzvKXvbg1ef5mcl5xwkEU NG8Zife//57e2Cxx3jlm8K05OHWpAxmvpgK/+TnbbjGN0S2sU0mKLKkOI/IjpKDtXbRawqmkP8f ig5FFku9ryqj7iISJIc0IHOFkwlK6amszLd0X/XZqc5HCl3rWVGWNYBC0brOGcyxZ6Cz+vBACkw Fxxqt5KEzITsrBK+ame24r5yCJ36qiVAuHoy1Yrw9GO3H4xt/8zM7lCwOdCUkFmyErXSPHmjSQr 4uEDJziN3dnZkl+tTIHkGxbVzjQZgTaLF8XDZFaFpMCUz+aIyb3LpPY7hirfcwSnFl7UoaiynXg nXS0x8DIJ3+QDNXhi7eYtwSDPtiuv6RTaJlr8oBkoACoTgxRbv8Q+ZCgyvm91ZdVCDtDk= X-Developer-Key: i=adrian.larumbe@collabora.com; a=openpgp; fpr=324030E8C005175DF93707A40E267E4CEE53433D None of the semantics of the function tell of it being a PRIME-exclusive entry point. In fact, most drivers seem to be using it to translate a list of pages into an sg table that can be used for GPU mapping later on, rather than just for sharing an object's pages with another driver. Move it across files and rename accordingly. Signed-off-by: Adri=C3=A1n Larumbe Reviewed-by: Thomas Zimmermann --- drm_prime_pages_to_sg() has no real dependency on PRIME/dma-buf interfaces. It is a generic helper that converts a page array into a scatter/gather table via dma_map_sg_attrs. Nothing in its implementation touches struct dma_buf or import/export logic. --- drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c | 6 ++--- drivers/gpu/drm/drm_gem.c | 35 ++++++++++++++++++++++++++ drivers/gpu/drm/drm_gem_shmem_helper.c | 2 +- drivers/gpu/drm/drm_prime.c | 38 -------------------------= ---- drivers/gpu/drm/etnaviv/etnaviv_gem.c | 3 +-- drivers/gpu/drm/etnaviv/etnaviv_gem_prime.c | 3 ++- drivers/gpu/drm/loongson/lsdc_gem.c | 3 +-- drivers/gpu/drm/msm/msm_gem.c | 2 +- drivers/gpu/drm/msm/msm_gem_prime.c | 2 +- drivers/gpu/drm/nouveau/nouveau_prime.c | 4 +-- drivers/gpu/drm/panthor/panthor_gem.c | 6 ++--- drivers/gpu/drm/radeon/radeon_prime.c | 5 ++-- drivers/gpu/drm/rockchip/rockchip_drm_gem.c | 6 ++--- drivers/gpu/drm/tegra/gem.c | 4 +-- drivers/gpu/drm/vmwgfx/vmwgfx_gem.c | 4 +-- drivers/gpu/drm/xe/xe_dma_buf.c | 6 ++--- drivers/gpu/drm/xen/xen_drm_front_gem.c | 2 +- include/drm/drm_gem.h | 5 +++- include/drm/drm_prime.h | 2 -- 19 files changed, 68 insertions(+), 70 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c b/drivers/gpu/drm/= amd/amdgpu/amdgpu_dma_buf.c index b33c300e26e2..c9a98aec7eb6 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_dma_buf.c @@ -203,9 +203,9 @@ static struct sg_table *amdgpu_dma_buf_map(struct dma_b= uf_attachment *attach, =20 switch (bo->tbo.resource->mem_type) { case TTM_PL_TT: - sgt =3D drm_prime_pages_to_sg(obj->dev, - bo->tbo.ttm->pages, - bo->tbo.ttm->num_pages); + sgt =3D drm_pages_to_sg(obj->dev, + bo->tbo.ttm->pages, + bo->tbo.ttm->num_pages); if (IS_ERR(sgt)) return sgt; =20 diff --git a/drivers/gpu/drm/drm_gem.c b/drivers/gpu/drm/drm_gem.c index 018df97d590d..22c8a3b5f667 100644 --- a/drivers/gpu/drm/drm_gem.c +++ b/drivers/gpu/drm/drm_gem.c @@ -780,6 +780,41 @@ void drm_gem_put_pages(struct drm_gem_object *obj, str= uct page **pages, } EXPORT_SYMBOL(drm_gem_put_pages); =20 +/** + * drm_pages_to_sg - converts a page array into an sg list + * @dev: DRM device + * @pages: pointer to the array of page pointers to convert + * @nr_pages: length of the page vector + * + * This helper creates an sg table object from a set of pages. + * This is useful for implementing &drm_gem_object_funcs.get_sg_table. + */ +struct sg_table *drm_pages_to_sg(struct drm_device *dev, + struct page **pages, unsigned int nr_pages) +{ + struct sg_table *sg; + size_t max_segment =3D 0; + int err; + + sg =3D kmalloc_obj(struct sg_table); + if (!sg) + return ERR_PTR(-ENOMEM); + + if (dev) + max_segment =3D dma_max_mapping_size(drm_dev_dma_dev(dev)); + if (max_segment =3D=3D 0) + max_segment =3D UINT_MAX; + err =3D sg_alloc_table_from_pages_segment(sg, pages, nr_pages, 0, + (unsigned long)nr_pages << PAGE_SHIFT, + max_segment, GFP_KERNEL); + if (err) { + kfree(sg); + sg =3D ERR_PTR(err); + } + return sg; +} +EXPORT_SYMBOL(drm_pages_to_sg); + static int objects_lookup(struct drm_file *filp, u32 *handle, int count, struct drm_gem_object **objs) { diff --git a/drivers/gpu/drm/drm_gem_shmem_helper.c b/drivers/gpu/drm/drm_g= em_shmem_helper.c index 22ec52e2ffb8..144d088a477f 100644 --- a/drivers/gpu/drm/drm_gem_shmem_helper.c +++ b/drivers/gpu/drm/drm_gem_shmem_helper.c @@ -825,7 +825,7 @@ struct sg_table *drm_gem_shmem_get_sg_table(struct drm_= gem_shmem_object *shmem) =20 drm_WARN_ON(obj->dev, drm_gem_is_imported(obj)); =20 - return drm_prime_pages_to_sg(obj->dev, shmem->pages, obj->size >> PAGE_SH= IFT); + return drm_pages_to_sg(obj->dev, shmem->pages, obj->size >> PAGE_SHIFT); } EXPORT_SYMBOL_GPL(drm_gem_shmem_get_sg_table); =20 diff --git a/drivers/gpu/drm/drm_prime.c b/drivers/gpu/drm/drm_prime.c index 9b44c78cd77f..54539a8929c1 100644 --- a/drivers/gpu/drm/drm_prime.c +++ b/drivers/gpu/drm/drm_prime.c @@ -835,44 +835,6 @@ static const struct dma_buf_ops drm_gem_prime_dmabuf_o= ps =3D { .vunmap =3D drm_gem_dmabuf_vunmap, }; =20 -/** - * drm_prime_pages_to_sg - converts a page array into an sg list - * @dev: DRM device - * @pages: pointer to the array of page pointers to convert - * @nr_pages: length of the page vector - * - * This helper creates an sg table object from a set of pages - * the driver is responsible for mapping the pages into the - * importers address space for use with dma_buf itself. - * - * This is useful for implementing &drm_gem_object_funcs.get_sg_table. - */ -struct sg_table *drm_prime_pages_to_sg(struct drm_device *dev, - struct page **pages, unsigned int nr_pages) -{ - struct sg_table *sg; - size_t max_segment =3D 0; - int err; - - sg =3D kmalloc_obj(struct sg_table); - if (!sg) - return ERR_PTR(-ENOMEM); - - if (dev) - max_segment =3D dma_max_mapping_size(drm_dev_dma_dev(dev)); - if (max_segment =3D=3D 0) - max_segment =3D UINT_MAX; - err =3D sg_alloc_table_from_pages_segment(sg, pages, nr_pages, 0, - (unsigned long)nr_pages << PAGE_SHIFT, - max_segment, GFP_KERNEL); - if (err) { - kfree(sg); - sg =3D ERR_PTR(err); - } - return sg; -} -EXPORT_SYMBOL(drm_prime_pages_to_sg); - /** * drm_prime_get_contiguous_size - returns the contiguous size of the buff= er * @sgt: sg_table describing the buffer to check diff --git a/drivers/gpu/drm/etnaviv/etnaviv_gem.c b/drivers/gpu/drm/etnavi= v/etnaviv_gem.c index b0436a1e103f..a8e8614f8210 100644 --- a/drivers/gpu/drm/etnaviv/etnaviv_gem.c +++ b/drivers/gpu/drm/etnaviv/etnaviv_gem.c @@ -3,7 +3,6 @@ * Copyright (C) 2015-2018 Etnaviv Project */ =20 -#include #include #include #include @@ -104,7 +103,7 @@ struct page **etnaviv_gem_get_pages(struct etnaviv_gem_= object *etnaviv_obj) unsigned int npages =3D etnaviv_obj->base.size >> PAGE_SHIFT; struct sg_table *sgt; =20 - sgt =3D drm_prime_pages_to_sg(dev, etnaviv_obj->pages, npages); + sgt =3D drm_pages_to_sg(dev, etnaviv_obj->pages, npages); if (IS_ERR(sgt)) { dev_err(dev->dev, "failed to allocate sgt: %ld\n", PTR_ERR(sgt)); diff --git a/drivers/gpu/drm/etnaviv/etnaviv_gem_prime.c b/drivers/gpu/drm/= etnaviv/etnaviv_gem_prime.c index 6757ae6ec304..f44484325ddb 100644 --- a/drivers/gpu/drm/etnaviv/etnaviv_gem_prime.c +++ b/drivers/gpu/drm/etnaviv/etnaviv_gem_prime.c @@ -3,6 +3,7 @@ * Copyright (C) 2014-2018 Etnaviv Project */ =20 +#include #include #include #include @@ -22,7 +23,7 @@ struct sg_table *etnaviv_gem_prime_get_sg_table(struct dr= m_gem_object *obj) if (WARN_ON(!etnaviv_obj->pages)) /* should have already pinned! */ return ERR_PTR(-EINVAL); =20 - return drm_prime_pages_to_sg(obj->dev, etnaviv_obj->pages, npages); + return drm_pages_to_sg(obj->dev, etnaviv_obj->pages, npages); } =20 int etnaviv_gem_prime_vmap(struct drm_gem_object *obj, struct iosys_map *m= ap) diff --git a/drivers/gpu/drm/loongson/lsdc_gem.c b/drivers/gpu/drm/loongson= /lsdc_gem.c index 2fb03487c983..37160228244c 100644 --- a/drivers/gpu/drm/loongson/lsdc_gem.c +++ b/drivers/gpu/drm/loongson/lsdc_gem.c @@ -9,7 +9,6 @@ #include #include #include -#include #include =20 #include "lsdc_drv.h" @@ -51,7 +50,7 @@ static struct sg_table *lsdc_gem_prime_get_sg_table(struc= t drm_gem_object *obj) return ERR_PTR(-ENOMEM); } =20 - return drm_prime_pages_to_sg(obj->dev, tt->pages, tt->num_pages); + return drm_pages_to_sg(obj->dev, tt->pages, tt->num_pages); } =20 static void lsdc_gem_object_free(struct drm_gem_object *obj) diff --git a/drivers/gpu/drm/msm/msm_gem.c b/drivers/gpu/drm/msm/msm_gem.c index efd3d3c9a449..7e3418290c22 100644 --- a/drivers/gpu/drm/msm/msm_gem.c +++ b/drivers/gpu/drm/msm/msm_gem.c @@ -207,7 +207,7 @@ static struct page **get_pages(struct drm_gem_object *o= bj) =20 msm_obj->pages =3D p; =20 - msm_obj->sgt =3D drm_prime_pages_to_sg(obj->dev, p, npages); + msm_obj->sgt =3D drm_pages_to_sg(obj->dev, p, npages); if (IS_ERR(msm_obj->sgt)) { void *ptr =3D ERR_CAST(msm_obj->sgt); =20 diff --git a/drivers/gpu/drm/msm/msm_gem_prime.c b/drivers/gpu/drm/msm/msm_= gem_prime.c index 036d34c674d9..d25393a9e549 100644 --- a/drivers/gpu/drm/msm/msm_gem_prime.c +++ b/drivers/gpu/drm/msm/msm_gem_prime.c @@ -23,7 +23,7 @@ struct sg_table *msm_gem_prime_get_sg_table(struct drm_ge= m_object *obj) if (WARN_ON(!msm_obj->pages)) /* should have already pinned! */ return ERR_PTR(-ENOMEM); =20 - return drm_prime_pages_to_sg(obj->dev, msm_obj->pages, npages); + return drm_pages_to_sg(obj->dev, msm_obj->pages, npages); } =20 int msm_gem_prime_vmap(struct drm_gem_object *obj, struct iosys_map *map) diff --git a/drivers/gpu/drm/nouveau/nouveau_prime.c b/drivers/gpu/drm/nouv= eau/nouveau_prime.c index caab60fc62f6..b95f2f07df74 100644 --- a/drivers/gpu/drm/nouveau/nouveau_prime.c +++ b/drivers/gpu/drm/nouveau/nouveau_prime.c @@ -32,8 +32,8 @@ struct sg_table *nouveau_gem_prime_get_sg_table(struct dr= m_gem_object *obj) { struct nouveau_bo *nvbo =3D nouveau_gem_object(obj); =20 - return drm_prime_pages_to_sg(obj->dev, nvbo->bo.ttm->pages, - nvbo->bo.ttm->num_pages); + return drm_pages_to_sg(obj->dev, nvbo->bo.ttm->pages, + nvbo->bo.ttm->num_pages); } =20 struct drm_gem_object *nouveau_gem_prime_import_sg_table(struct drm_device= *dev, diff --git a/drivers/gpu/drm/panthor/panthor_gem.c b/drivers/gpu/drm/pantho= r/panthor_gem.c index 9855df738194..ec530d254fa4 100644 --- a/drivers/gpu/drm/panthor/panthor_gem.c +++ b/drivers/gpu/drm/panthor/panthor_gem.c @@ -321,8 +321,8 @@ panthor_gem_dev_map_get_sgt_locked(struct panthor_gem_o= bject *bo) if (ret) return ERR_PTR(ret); =20 - sgt =3D drm_prime_pages_to_sg(bo->base.dev, bo->backing.pages, - bo->base.size >> PAGE_SHIFT); + sgt =3D drm_pages_to_sg(bo->base.dev, bo->backing.pages, + bo->base.size >> PAGE_SHIFT); if (IS_ERR(sgt)) return sgt; =20 @@ -702,7 +702,7 @@ static struct sg_table *panthor_gem_get_sg_table(struct= drm_gem_object *obj) drm_WARN_ON_ONCE(obj->dev, !bo->backing.pages); drm_WARN_ON_ONCE(obj->dev, !refcount_read(&bo->backing.pin_count)); =20 - return drm_prime_pages_to_sg(obj->dev, bo->backing.pages, obj->size >> PA= GE_SHIFT); + return drm_pages_to_sg(obj->dev, bo->backing.pages, obj->size >> PAGE_SHI= FT); } =20 static int panthor_gem_vmap_locked(struct drm_gem_object *obj, diff --git a/drivers/gpu/drm/radeon/radeon_prime.c b/drivers/gpu/drm/radeon= /radeon_prime.c index a77881f035e7..4cfc4282a59c 100644 --- a/drivers/gpu/drm/radeon/radeon_prime.c +++ b/drivers/gpu/drm/radeon/radeon_prime.c @@ -26,6 +26,7 @@ =20 #include =20 +#include #include #include =20 @@ -38,8 +39,8 @@ struct sg_table *radeon_gem_prime_get_sg_table(struct drm= _gem_object *obj) { struct radeon_bo *bo =3D gem_to_radeon_bo(obj); =20 - return drm_prime_pages_to_sg(obj->dev, bo->tbo.ttm->pages, - bo->tbo.ttm->num_pages); + return drm_pages_to_sg(obj->dev, bo->tbo.ttm->pages, + bo->tbo.ttm->num_pages); } =20 struct drm_gem_object *radeon_gem_prime_import_sg_table(struct drm_device = *dev, diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_gem.c b/drivers/gpu/drm/= rockchip/rockchip_drm_gem.c index b188539dca0b..7897da0becf4 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_gem.c +++ b/drivers/gpu/drm/rockchip/rockchip_drm_gem.c @@ -89,8 +89,8 @@ static int rockchip_gem_get_pages(struct rockchip_gem_obj= ect *rk_obj) =20 rk_obj->num_pages =3D rk_obj->base.size >> PAGE_SHIFT; =20 - rk_obj->sgt =3D drm_prime_pages_to_sg(rk_obj->base.dev, - rk_obj->pages, rk_obj->num_pages); + rk_obj->sgt =3D drm_pages_to_sg(rk_obj->base.dev, + rk_obj->pages, rk_obj->num_pages); if (IS_ERR(rk_obj->sgt)) { ret =3D PTR_ERR(rk_obj->sgt); goto err_put_pages; @@ -432,7 +432,7 @@ struct sg_table *rockchip_gem_prime_get_sg_table(struct= drm_gem_object *obj) int ret; =20 if (rk_obj->pages) - return drm_prime_pages_to_sg(obj->dev, rk_obj->pages, rk_obj->num_pages); + return drm_pages_to_sg(obj->dev, rk_obj->pages, rk_obj->num_pages); =20 sgt =3D kzalloc_obj(*sgt); if (!sgt) diff --git a/drivers/gpu/drm/tegra/gem.c b/drivers/gpu/drm/tegra/gem.c index 436394e04812..701af672b4e5 100644 --- a/drivers/gpu/drm/tegra/gem.c +++ b/drivers/gpu/drm/tegra/gem.c @@ -17,7 +17,7 @@ =20 #include #include -#include +#include =20 #include "drm.h" #include "gem.h" @@ -352,7 +352,7 @@ static int tegra_bo_get_pages(struct drm_device *drm, s= truct tegra_bo *bo) =20 bo->num_pages =3D bo->gem.size >> PAGE_SHIFT; =20 - bo->sgt =3D drm_prime_pages_to_sg(bo->gem.dev, bo->pages, bo->num_pages); + bo->sgt =3D drm_pages_to_sg(bo->gem.dev, bo->pages, bo->num_pages); if (IS_ERR(bo->sgt)) { err =3D PTR_ERR(bo->sgt); goto put_pages; diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_gem.c b/drivers/gpu/drm/vmwgfx/v= mwgfx_gem.c index 39f8c46550c2..c9e7f2e3668c 100644 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_gem.c +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_gem.c @@ -28,7 +28,7 @@ #include "vmwgfx_bo.h" #include "vmwgfx_drv.h" =20 -#include "drm/drm_prime.h" +#include "drm/drm_gem.h" #include "drm/drm_gem_ttm_helper.h" =20 #include @@ -76,7 +76,7 @@ static struct sg_table *vmw_gem_object_get_sg_table(struc= t drm_gem_object *obj) if (vmw_tt->vsgt.sgt) return vmw_tt->vsgt.sgt; =20 - return drm_prime_pages_to_sg(obj->dev, vmw_tt->dma_ttm.pages, vmw_tt->dma= _ttm.num_pages); + return drm_pages_to_sg(obj->dev, vmw_tt->dma_ttm.pages, vmw_tt->dma_ttm.n= um_pages); } =20 static int vmw_gem_vmap(struct drm_gem_object *obj, struct iosys_map *map) diff --git a/drivers/gpu/drm/xe/xe_dma_buf.c b/drivers/gpu/drm/xe/xe_dma_bu= f.c index 8a920e58245c..f0fe80706b79 100644 --- a/drivers/gpu/drm/xe/xe_dma_buf.c +++ b/drivers/gpu/drm/xe/xe_dma_buf.c @@ -118,9 +118,9 @@ static struct sg_table *xe_dma_buf_map(struct dma_buf_a= ttachment *attach, =20 switch (bo->ttm.resource->mem_type) { case XE_PL_TT: - sgt =3D drm_prime_pages_to_sg(obj->dev, - bo->ttm.ttm->pages, - obj->size >> PAGE_SHIFT); + sgt =3D drm_pages_to_sg(obj->dev, + bo->ttm.ttm->pages, + obj->size >> PAGE_SHIFT); if (IS_ERR(sgt)) return sgt; =20 diff --git a/drivers/gpu/drm/xen/xen_drm_front_gem.c b/drivers/gpu/drm/xen/= xen_drm_front_gem.c index eec4c1da3f9e..a4a7c7f2c91c 100644 --- a/drivers/gpu/drm/xen/xen_drm_front_gem.c +++ b/drivers/gpu/drm/xen/xen_drm_front_gem.c @@ -236,7 +236,7 @@ struct sg_table *xen_drm_front_gem_get_sg_table(struct = drm_gem_object *gem_obj) if (!xen_obj->pages) return ERR_PTR(-ENOMEM); =20 - return drm_prime_pages_to_sg(gem_obj->dev, + return drm_pages_to_sg(gem_obj->dev, xen_obj->pages, xen_obj->num_pages); } =20 diff --git a/include/drm/drm_gem.h b/include/drm/drm_gem.h index 885244e375d3..7b9cc6335689 100644 --- a/include/drm/drm_gem.h +++ b/include/drm/drm_gem.h @@ -155,7 +155,7 @@ struct drm_gem_object_funcs { * here cannot be used for sg tables pointing at driver private memory * ranges. * - * See also drm_prime_pages_to_sg(). + * See also drm_pages_to_sg(). */ struct sg_table *(*get_sg_table)(struct drm_gem_object *obj); =20 @@ -589,6 +589,9 @@ struct page **drm_gem_get_pages(struct drm_gem_object *= obj); void drm_gem_put_pages(struct drm_gem_object *obj, struct page **pages, bool dirty, bool accessed); =20 +struct sg_table *drm_pages_to_sg(struct drm_device *dev, + struct page **pages, unsigned int nr_pages); + void drm_gem_lock(struct drm_gem_object *obj); void drm_gem_unlock(struct drm_gem_object *obj); =20 diff --git a/include/drm/drm_prime.h b/include/drm/drm_prime.h index f50f862f0d8b..603e16a40ae7 100644 --- a/include/drm/drm_prime.h +++ b/include/drm/drm_prime.h @@ -92,8 +92,6 @@ void drm_gem_dmabuf_vunmap(struct dma_buf *dma_buf, struc= t iosys_map *map); int drm_gem_prime_mmap(struct drm_gem_object *obj, struct vm_area_struct *= vma); int drm_gem_dmabuf_mmap(struct dma_buf *dma_buf, struct vm_area_struct *vm= a); =20 -struct sg_table *drm_prime_pages_to_sg(struct drm_device *dev, - struct page **pages, unsigned int nr_pages); struct dma_buf *drm_gem_prime_export(struct drm_gem_object *obj, int flags); =20 --- base-commit: 48dd37d1fef33fbf42f1d6887c61e242fd21d00d change-id: 20260724-get_pages-e2e91c53eaa3 Best regards, -- =20 Adri=C3=A1n Larumbe