Skip to content

Commit

Permalink
drm/panfrost: Align GEM objects GPU VA to 2MB
Browse files Browse the repository at this point in the history
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
  • Loading branch information
Rob Herring committed Jun 14, 2019
1 parent 987d65d commit a0e93c4
Showing 1 changed file with 6 additions and 2 deletions.
8 changes: 6 additions & 2 deletions drivers/gpu/drm/panfrost/panfrost_gem.c
Original file line number Diff line number Diff line change
Expand Up @@ -52,16 +52,20 @@ 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)
return NULL;

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;
Expand Down

0 comments on commit a0e93c4

Please sign in to comment.