mirror of https://gitee.com/openkylin/linux.git
drm/panfrost: Align GEM objects GPU VA to 2MB
In order to increase the chances of using 2MB pages, we need to align the GPU VA mapping to 2MB. Only do this if the object size is 2MB or more. Cc: Robin Murphy <robin.murphy@arm.com> Cc: Steven Price <steven.price@arm.com> Cc: Tomeu Vizoso <tomeu.vizoso@collabora.com> Signed-off-by: Rob Herring <robh@kernel.org> Reviewed-by: Tomeu Vizoso <tomeu.vizoso@collabora.com> Link: https://patchwork.freedesktop.org/patch/msgid/20190610165806.24854-1-robh@kernel.org
This commit is contained in:
parent
987d65d013
commit
a0e93c41eb
|
@ -52,6 +52,7 @@ struct drm_gem_object *panfrost_gem_create_object(struct drm_device *dev, size_t
|
|||
int ret;
|
||||
struct panfrost_device *pfdev = dev->dev_private;
|
||||
struct panfrost_gem_object *obj;
|
||||
u64 align;
|
||||
|
||||
obj = kzalloc(sizeof(*obj), GFP_KERNEL);
|
||||
if (!obj)
|
||||
|
@ -59,9 +60,12 @@ struct drm_gem_object *panfrost_gem_create_object(struct drm_device *dev, size_t
|
|||
|
||||
obj->base.base.funcs = &panfrost_gem_funcs;
|
||||
|
||||
size = roundup(size, PAGE_SIZE);
|
||||
align = size >= SZ_2M ? SZ_2M >> PAGE_SHIFT : 0;
|
||||
|
||||
spin_lock(&pfdev->mm_lock);
|
||||
ret = drm_mm_insert_node(&pfdev->mm, &obj->node,
|
||||
roundup(size, PAGE_SIZE) >> PAGE_SHIFT);
|
||||
ret = drm_mm_insert_node_generic(&pfdev->mm, &obj->node,
|
||||
size >> PAGE_SHIFT, align, 0, 0);
|
||||
spin_unlock(&pfdev->mm_lock);
|
||||
if (ret)
|
||||
goto free_obj;
|
||||
|
|
Loading…
Reference in New Issue