On Mon, 10 Jun 2019 at 18:58, Rob Herring <robh@xxxxxxxxxx> 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@xxxxxxx> > Cc: Steven Price <steven.price@xxxxxxx> > Cc: Tomeu Vizoso <tomeu.vizoso@xxxxxxxxxxxxx> > Signed-off-by: Rob Herring <robh@xxxxxxxxxx> Reviewed-by: Tomeu Vizoso <tomeu.vizoso@xxxxxxxxxxxxx> 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@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/dri-devel _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel