mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-06 10:58:48 +09:00
drm/rockchip: drm gem support flags ROCKCHIP_BO_DMA32
Userland can use the flag ROCKCHIP_BO_DMA32 to tell drm gem to get pages limit to 4GiB memory. Signed-off-by: Jianqun Xu <jay.xu@rock-chips.com> Change-Id: Icdc77efae71ed6272f425ad93a07c8d3e98a9ca4
This commit is contained in:
@@ -606,7 +606,8 @@ static void rockchip_gem_release_object(struct rockchip_gem_object *rk_obj)
|
||||
}
|
||||
|
||||
static struct rockchip_gem_object *
|
||||
rockchip_gem_alloc_object(struct drm_device *drm, unsigned int size)
|
||||
rockchip_gem_alloc_object(struct drm_device *drm, unsigned int size,
|
||||
unsigned int flags)
|
||||
{
|
||||
struct address_space *mapping;
|
||||
struct rockchip_gem_object *rk_obj;
|
||||
@@ -617,6 +618,10 @@ static struct rockchip_gem_object *
|
||||
#else
|
||||
gfp_t gfp_mask = GFP_HIGHUSER | __GFP_RECLAIMABLE;
|
||||
#endif
|
||||
|
||||
if (flags & ROCKCHIP_BO_DMA32)
|
||||
gfp_mask |= __GFP_DMA32;
|
||||
|
||||
size = round_up(size, PAGE_SIZE);
|
||||
|
||||
rk_obj = kzalloc(sizeof(*rk_obj), GFP_KERNEL);
|
||||
@@ -640,7 +645,7 @@ rockchip_gem_create_object(struct drm_device *drm, unsigned int size,
|
||||
struct rockchip_gem_object *rk_obj;
|
||||
int ret;
|
||||
|
||||
rk_obj = rockchip_gem_alloc_object(drm, size);
|
||||
rk_obj = rockchip_gem_alloc_object(drm, size, flags);
|
||||
if (IS_ERR(rk_obj))
|
||||
return rk_obj;
|
||||
rk_obj->flags = flags;
|
||||
@@ -847,7 +852,7 @@ rockchip_gem_prime_import_sg_table(struct drm_device *drm,
|
||||
struct rockchip_gem_object *rk_obj;
|
||||
int ret;
|
||||
|
||||
rk_obj = rockchip_gem_alloc_object(drm, attach->dmabuf->size);
|
||||
rk_obj = rockchip_gem_alloc_object(drm, attach->dmabuf->size, 0);
|
||||
if (IS_ERR(rk_obj))
|
||||
return ERR_CAST(rk_obj);
|
||||
|
||||
|
||||
@@ -36,8 +36,11 @@ enum drm_rockchip_gem_mem_type {
|
||||
ROCKCHIP_BO_SECURE = 1 << 3,
|
||||
/* keep kmap for cma buffer or alloc kmap for other type memory */
|
||||
ROCKCHIP_BO_ALLOC_KMAP = 1 << 4,
|
||||
/* alloc page with gfp_dma32 */
|
||||
ROCKCHIP_BO_DMA32 = 1 << 5,
|
||||
ROCKCHIP_BO_MASK = ROCKCHIP_BO_CONTIG | ROCKCHIP_BO_CACHABLE |
|
||||
ROCKCHIP_BO_WC | ROCKCHIP_BO_SECURE | ROCKCHIP_BO_ALLOC_KMAP,
|
||||
ROCKCHIP_BO_WC | ROCKCHIP_BO_SECURE | ROCKCHIP_BO_ALLOC_KMAP |
|
||||
ROCKCHIP_BO_DMA32,
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user