Hi Tomi, On Thursday 18 May 2017 14:34:09 Tomi Valkeinen wrote: > On 18/05/17 14:25, Laurent Pinchart wrote: > > On Thursday 18 May 2017 14:14:35 Tomi Valkeinen wrote: > >> On 18/05/17 13:59, Laurent Pinchart wrote: > >>> On Thursday 18 May 2017 13:28:26 Tomi Valkeinen wrote: > >>>> omap_gem uses page alignment for buffer stride. The related > >>>> calculations > >>>> are a bit off, though, as byte stride of 4096 gets aligned to 8192, > >>>> instead of 4096. This patch fixes those calculations. > >>>> > >>>> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@xxxxxx> > >>>> --- > >>>> > >>>> drivers/gpu/drm/omapdrm/omap_gem.c | 4 ++-- > >>>> 1 file changed, 2 insertions(+), 2 deletions(-) > >>>> > >>>> diff --git a/drivers/gpu/drm/omapdrm/omap_gem.c > >>>> b/drivers/gpu/drm/omapdrm/omap_gem.c index 13abf221d153..4c41000ff4c4 > >>>> 100644 > >>>> --- a/drivers/gpu/drm/omapdrm/omap_gem.c > >>>> +++ b/drivers/gpu/drm/omapdrm/omap_gem.c > >>>> @@ -182,7 +182,7 @@ static void evict_entry(struct drm_gem_object *obj, > >>>> size_t size = PAGE_SIZE * n; > >>>> loff_t off = mmap_offset(obj) + > >>>> (entry->obj_pgoff << PAGE_SHIFT); > >>>> - const int m = 1 + ((omap_obj->width << fmt) / PAGE_SIZE); > >>>> + const int m = 1 + (((omap_obj->width - 1) << fmt) / > >>>> PAGE_SIZE); > >>> > >>> How about > >>> > >>> int m = round_up(omap_obj->width << fmt, PAGE_SIZE); > >>> > >>> instead of open-coding it ? I find that a bit easier to understand. > >> > >> That should be: > >> > >> round_up(omap_obj->width << fmt, PAGE_SIZE) / PAGE_SIZE; > > > > Sorry, I meant DIV_ROUND_UP, not round_up. > > Ah, of course. Not my day... =) > > From: Tomi Valkeinen <tomi.valkeinen@xxxxxx> > Date: Thu, 18 May 2017 11:51:51 +0300 > Subject: [PATCH] drm/omap: fix tiled buffer stride calculations > > omap_gem uses page alignment for buffer stride. The related calculations > are a bit off, though, as byte stride of 4096 gets aligned to 8192, > instead of 4096. > > This patch changes the code to use DIV_ROUND_UP(), which fixes those > calculations and makes them more readable. > > Signed-off-by: Tomi Valkeinen <tomi.valkeinen@xxxxxx> Reviewed-by: Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx> > diff --git a/drivers/gpu/drm/omapdrm/omap_gem.c > b/drivers/gpu/drm/omapdrm/omap_gem.c index 13abf221d153..5c5c86ddd6f4 > 100644 > --- a/drivers/gpu/drm/omapdrm/omap_gem.c > +++ b/drivers/gpu/drm/omapdrm/omap_gem.c > @@ -182,7 +182,7 @@ static void evict_entry(struct drm_gem_object *obj, > size_t size = PAGE_SIZE * n; > loff_t off = mmap_offset(obj) + > (entry->obj_pgoff << PAGE_SHIFT); > - const int m = 1 + ((omap_obj->width << fmt) / PAGE_SIZE); > + const int m = DIV_ROUND_UP(omap_obj->width << fmt, PAGE_SIZE); > > if (m > 1) { > int i; > @@ -424,7 +424,7 @@ static int fault_2d(struct drm_gem_object *obj, > * into account in some of the math, so figure out virtual stride > * in pages > */ > - const int m = 1 + ((omap_obj->width << fmt) / PAGE_SIZE); > + const int m = DIV_ROUND_UP(omap_obj->width << fmt, PAGE_SIZE); > > /* We don't use vmf->pgoff since that has the fake offset: */ > pgoff = (vmf->address - vma->vm_start) >> PAGE_SHIFT; -- Regards, Laurent Pinchart _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel