[Intel-gfx] [PATCH v2] drm/i915: Update size upon return from GEM_CREATE
Vanshidhar Konda
vanshidhar.r.konda at intel.com
Tue Mar 26 17:29:07 UTC 2019
On Tue, Mar 26, 2019 at 06:02:18PM +0100, Michał Winiarski wrote:
>Since GEM_CREATE is trying to outsmart the user by rounding up unaligned
>objects, we used to update the size returned to userspace.
>This update seems to have been lost throughout the history.
>
>v2: Use round_up(), reorder locals (Chris)
>
>References: ff72145badb8 ("drm: dumb scanout create/mmap for intel/radeon (v3)")
>Signed-off-by: Michał Winiarski <michal.winiarski at intel.com>
>Cc: Chris Wilson <chris at chris-wilson.co.uk>
>Cc: Janusz Krzysztofik <janusz.krzysztofik at intel.com>
>Cc: Joonas Lahtinen <joonas.lahtinen at linux.intel.com>
>Reviewed-by: Chris Wilson <chris at chris-wilson.co.uk>
>---
> drivers/gpu/drm/i915/i915_gem.c | 12 +++++++-----
> 1 file changed, 7 insertions(+), 5 deletions(-)
>
>diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
>index f6cdd5fb9deb..e506e43cfade 100644
>--- a/drivers/gpu/drm/i915/i915_gem.c
>+++ b/drivers/gpu/drm/i915/i915_gem.c
>@@ -622,14 +622,15 @@ i915_gem_phys_pwrite(struct drm_i915_gem_object *obj,
> static int
> i915_gem_create(struct drm_file *file,
> struct drm_i915_private *dev_priv,
>- u64 size,
>+ u64 *size_p,
> u32 *handle_p)
> {
> struct drm_i915_gem_object *obj;
>- int ret;
> u32 handle;
>+ u64 size;
>+ int ret;
>
>- size = roundup(size, PAGE_SIZE);
>+ size = round_up(*size_p, PAGE_SIZE);
> if (size == 0)
> return -EINVAL;
>
Does it make more sense to check the size prior to doing a roundup?
>@@ -645,6 +646,7 @@ i915_gem_create(struct drm_file *file,
> return ret;
>
> *handle_p = handle;
>+ *size_p = obj->base.size;
> return 0;
> }
>
>@@ -657,7 +659,7 @@ i915_gem_dumb_create(struct drm_file *file,
> args->pitch = ALIGN(args->width * DIV_ROUND_UP(args->bpp, 8), 64);
> args->size = args->pitch * args->height;
> return i915_gem_create(file, to_i915(dev),
>- args->size, &args->handle);
>+ &args->size, &args->handle);
> }
>
> static bool gpu_write_needs_clflush(struct drm_i915_gem_object *obj)
>@@ -682,7 +684,7 @@ i915_gem_create_ioctl(struct drm_device *dev, void *data,
> i915_gem_flush_free_objects(dev_priv);
>
> return i915_gem_create(file, dev_priv,
>- args->size, &args->handle);
>+ &args->size, &args->handle);
> }
>
> static inline enum fb_op_origin
>--
>2.20.1
>
>_______________________________________________
>Intel-gfx mailing list
>Intel-gfx at lists.freedesktop.org
>https://lists.freedesktop.org/mailman/listinfo/intel-gfx
More information about the Intel-gfx
mailing list