All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] drm/panfrost: Align GEM objects GPU VA to 2MB
@ 2019-06-10 16:58 Rob Herring
  2019-06-13 13:38 ` Tomeu Vizoso
  0 siblings, 1 reply; 2+ messages in thread
From: Rob Herring @ 2019-06-10 16:58 UTC (permalink / raw)
  To: dri-devel; +Cc: Robin Murphy, Tomeu Vizoso, Steven Price

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>
---
 drivers/gpu/drm/panfrost/panfrost_gem.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/panfrost/panfrost_gem.c b/drivers/gpu/drm/panfrost/panfrost_gem.c
index a5528a360ef4..886875ae31d3 100644
--- a/drivers/gpu/drm/panfrost/panfrost_gem.c
+++ b/drivers/gpu/drm/panfrost/panfrost_gem.c
@@ -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;
-- 
2.20.1

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH] drm/panfrost: Align GEM objects GPU VA to 2MB
  2019-06-10 16:58 [PATCH] drm/panfrost: Align GEM objects GPU VA to 2MB Rob Herring
@ 2019-06-13 13:38 ` Tomeu Vizoso
  0 siblings, 0 replies; 2+ messages in thread
From: Tomeu Vizoso @ 2019-06-13 13:38 UTC (permalink / raw)
  To: Rob Herring; +Cc: Robin Murphy, dri-devel, Steven Price

On Mon, 10 Jun 2019 at 18:58, Rob Herring <robh@kernel.org> wrote:
>
> 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>

Thanks!

Tomeu

> ---
>  drivers/gpu/drm/panfrost/panfrost_gem.c | 8 ++++++--
>  1 file changed, 6 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/panfrost/panfrost_gem.c b/drivers/gpu/drm/panfrost/panfrost_gem.c
> index a5528a360ef4..886875ae31d3 100644
> --- a/drivers/gpu/drm/panfrost/panfrost_gem.c
> +++ b/drivers/gpu/drm/panfrost/panfrost_gem.c
> @@ -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;
> --
> 2.20.1
>
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2019-06-13 13:38 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-06-10 16:58 [PATCH] drm/panfrost: Align GEM objects GPU VA to 2MB Rob Herring
2019-06-13 13:38 ` Tomeu Vizoso

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.