From a612c861dddff2aa9eaee3fdddb2483253a2fe25 Mon Sep 17 00:00:00 2001 From: Andy Yan Date: Wed, 16 Dec 2020 19:05:17 +0800 Subject: [PATCH] drm/rockchip: gem: Convert sg to page This make cpu can dump fb data allocated by ION. Change-Id: I639e7cbbe6957d2bb02e4577805343cdbf5f5bf7 Signed-off-by: Andy Yan --- drivers/gpu/drm/rockchip/rockchip_drm_gem.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_gem.c b/drivers/gpu/drm/rockchip/rockchip_drm_gem.c index a7a2e5b719f0..b24b11efddd0 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_gem.c +++ b/drivers/gpu/drm/rockchip/rockchip_drm_gem.c @@ -877,6 +877,21 @@ rockchip_gem_prime_import_sg_table(struct drm_device *drm, goto err_free_rk_obj; } + rk_obj->num_pages = rk_obj->base.size >> PAGE_SHIFT; + rk_obj->pages = drm_calloc_large(rk_obj->num_pages, sizeof(*rk_obj->pages)); + if (!rk_obj->pages) { + DRM_ERROR("failed to allocate pages.\n"); + ret = -ENOMEM; + goto err_free_rk_obj; + } + + ret = drm_prime_sg_to_page_addr_arrays(sg, rk_obj->pages, NULL, rk_obj->num_pages); + if (ret < 0) { + DRM_ERROR("invalid sgtable.\n"); + drm_free_large(rk_obj->pages); + goto err_free_rk_obj; + } + return &rk_obj->base; err_free_rk_obj: