[Intel-gfx] [PATCH] drm/i915/blt: fixup block_size rounding

2019-10-28 Thread Chris Wilson
From: Matthew Auld 

There is nothing to say that the obj->base.size is actually a multiple
of the block_size.

v2: Use round_up() as block_size is a power-of-two

Reported-by: Chris Wilson 
Signed-off-by: Matthew Auld 
Cc: Chris Wilson 
Reviewed-by: Chris Wilson 
---
 drivers/gpu/drm/i915/gem/i915_gem_object_blt.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/gem/i915_gem_object_blt.c 
b/drivers/gpu/drm/i915/gem/i915_gem_object_blt.c
index 51acffd31575..07341cea46fd 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_object_blt.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_object_blt.c
@@ -30,7 +30,7 @@ struct i915_vma *intel_emit_vma_fill_blt(struct intel_context 
*ce,
GEM_BUG_ON(intel_engine_is_virtual(ce->engine));
intel_engine_pm_get(ce->engine);
 
-   count = div_u64(vma->size, block_size);
+   count = round_up(vma->size, block_size) / block_size;
size = (1 + 8 * count) * sizeof(u32);
size = round_up(size, PAGE_SIZE);
pool = intel_engine_get_pool(ce->engine, size);
@@ -214,7 +214,7 @@ struct i915_vma *intel_emit_vma_copy_blt(struct 
intel_context *ce,
GEM_BUG_ON(intel_engine_is_virtual(ce->engine));
intel_engine_pm_get(ce->engine);
 
-   count = div_u64(dst->size, block_size);
+   count = round_up(vma->size, block_size) / block_size;
size = (1 + 11 * count) * sizeof(u32);
size = round_up(size, PAGE_SIZE);
pool = intel_engine_get_pool(ce->engine, size);
-- 
2.24.0.rc1

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Re: [Intel-gfx] [PATCH] drm/i915/blt: fixup block_size rounding

2019-10-28 Thread Chris Wilson
Quoting Ville Syrjälä (2019-10-28 16:46:46)
> On Mon, Oct 28, 2019 at 04:39:50PM +, Matthew Auld wrote:
> > There is nothing to say that the obj->base.size is actually a multiple
> > of the block_size.
> > 
> > Reported-by: Chris Wilson 
> > Signed-off-by: Matthew Auld 
> > Cc: Chris Wilson 
> > ---
> >  drivers/gpu/drm/i915/gem/i915_gem_object_blt.c | 4 ++--
> >  1 file changed, 2 insertions(+), 2 deletions(-)
> > 
> > diff --git a/drivers/gpu/drm/i915/gem/i915_gem_object_blt.c 
> > b/drivers/gpu/drm/i915/gem/i915_gem_object_blt.c
> > index 516e61e99212..5597f1345a63 100644
> > --- a/drivers/gpu/drm/i915/gem/i915_gem_object_blt.c
> > +++ b/drivers/gpu/drm/i915/gem/i915_gem_object_blt.c
> > @@ -30,7 +30,7 @@ struct i915_vma *intel_emit_vma_fill_blt(struct 
> > intel_context *ce,
> >   GEM_BUG_ON(intel_engine_is_virtual(ce->engine));
> >   intel_engine_pm_get(ce->engine);
> >  
> > - count = div_u64(vma->size, block_size);
> > + count = DIV64_U64_ROUND_UP(vma->size, block_size);
> 
> block_size size look to be u32?

And we can control it to be a pot.
-Chris
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Re: [Intel-gfx] [PATCH] drm/i915/blt: fixup block_size rounding

2019-10-28 Thread Ville Syrjälä
On Mon, Oct 28, 2019 at 04:39:50PM +, Matthew Auld wrote:
> There is nothing to say that the obj->base.size is actually a multiple
> of the block_size.
> 
> Reported-by: Chris Wilson 
> Signed-off-by: Matthew Auld 
> Cc: Chris Wilson 
> ---
>  drivers/gpu/drm/i915/gem/i915_gem_object_blt.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/gem/i915_gem_object_blt.c 
> b/drivers/gpu/drm/i915/gem/i915_gem_object_blt.c
> index 516e61e99212..5597f1345a63 100644
> --- a/drivers/gpu/drm/i915/gem/i915_gem_object_blt.c
> +++ b/drivers/gpu/drm/i915/gem/i915_gem_object_blt.c
> @@ -30,7 +30,7 @@ struct i915_vma *intel_emit_vma_fill_blt(struct 
> intel_context *ce,
>   GEM_BUG_ON(intel_engine_is_virtual(ce->engine));
>   intel_engine_pm_get(ce->engine);
>  
> - count = div_u64(vma->size, block_size);
> + count = DIV64_U64_ROUND_UP(vma->size, block_size);

block_size size look to be u32?

>   size = (1 + 8 * count) * sizeof(u32);
>   size = round_up(size, PAGE_SIZE);
>   pool = intel_engine_get_pool(ce->engine, size);
> @@ -214,7 +214,7 @@ struct i915_vma *intel_emit_vma_copy_blt(struct 
> intel_context *ce,
>   GEM_BUG_ON(intel_engine_is_virtual(ce->engine));
>   intel_engine_pm_get(ce->engine);
>  
> - count = div_u64(dst->size, block_size);
> + count = DIV64_U64_ROUND_UP(dst->size, block_size);
>   size = (1 + 11 * count) * sizeof(u32);
>   size = round_up(size, PAGE_SIZE);
>   pool = intel_engine_get_pool(ce->engine, size);
> -- 
> 2.20.1
> 
> ___
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Ville Syrjälä
Intel
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

[Intel-gfx] [PATCH] drm/i915/blt: fixup block_size rounding

2019-10-28 Thread Matthew Auld
There is nothing to say that the obj->base.size is actually a multiple
of the block_size.

Reported-by: Chris Wilson 
Signed-off-by: Matthew Auld 
Cc: Chris Wilson 
---
 drivers/gpu/drm/i915/gem/i915_gem_object_blt.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/gem/i915_gem_object_blt.c 
b/drivers/gpu/drm/i915/gem/i915_gem_object_blt.c
index 516e61e99212..5597f1345a63 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_object_blt.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_object_blt.c
@@ -30,7 +30,7 @@ struct i915_vma *intel_emit_vma_fill_blt(struct intel_context 
*ce,
GEM_BUG_ON(intel_engine_is_virtual(ce->engine));
intel_engine_pm_get(ce->engine);
 
-   count = div_u64(vma->size, block_size);
+   count = DIV64_U64_ROUND_UP(vma->size, block_size);
size = (1 + 8 * count) * sizeof(u32);
size = round_up(size, PAGE_SIZE);
pool = intel_engine_get_pool(ce->engine, size);
@@ -214,7 +214,7 @@ struct i915_vma *intel_emit_vma_copy_blt(struct 
intel_context *ce,
GEM_BUG_ON(intel_engine_is_virtual(ce->engine));
intel_engine_pm_get(ce->engine);
 
-   count = div_u64(dst->size, block_size);
+   count = DIV64_U64_ROUND_UP(dst->size, block_size);
size = (1 + 11 * count) * sizeof(u32);
size = round_up(size, PAGE_SIZE);
pool = intel_engine_get_pool(ce->engine, size);
-- 
2.20.1

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx