[PATCH] Revert "drm/omap: add OMAP_BO flags to affect buffer allocation"
Daniel Vetter
daniel at ffwll.ch
Tue Oct 22 21:04:30 UTC 2019
On Tue, Oct 22, 2019 at 10:47 PM Sean Paul <sean at poorly.run> wrote:
>
> From: Sean Paul <seanpaul at chromium.org>
>
> This reverts commit 23b482252836ab3c5e6b3b20ed3038449cbc7679.
>
> This patch does not have an acceptable open source userspace
> implementation, and as such it does not meet the requirements for adding
> new UAPI.
>
> Discussion is in the Link.
>
> Link: https://lists.freedesktop.org/archives/dri-devel/2019-October/240586.html
> Fixes: 23b482252836 ("drm/omap: add OMAP_BO flags to affect buffer allocation")
> Cc: Tomi Valkeinen <tomi.valkeinen at ti.com>
> Cc: Jean-Jacques Hiblot <jjhiblot at ti.com>
> Cc: David Airlie <airlied at linux.ie>
> Cc: Daniel Vetter <daniel at ffwll.ch>
Ack.
-Daniel
> Cc: dri-devel at lists.freedesktop.org
> Signed-off-by: Sean Paul <seanpaul at chromium.org>
> ---
> drivers/gpu/drm/omapdrm/omap_gem.c | 54 ++----------------------------
> include/uapi/drm/omap_drm.h | 9 -----
> 2 files changed, 2 insertions(+), 61 deletions(-)
>
> diff --git a/drivers/gpu/drm/omapdrm/omap_gem.c b/drivers/gpu/drm/omapdrm/omap_gem.c
> index bf18dfe2b689..e518d93ca6df 100644
> --- a/drivers/gpu/drm/omapdrm/omap_gem.c
> +++ b/drivers/gpu/drm/omapdrm/omap_gem.c
> @@ -1097,9 +1097,6 @@ void omap_gem_free_object(struct drm_gem_object *obj)
> list_del(&omap_obj->mm_list);
> mutex_unlock(&priv->list_lock);
>
> - if (omap_obj->flags & OMAP_BO_MEM_PIN)
> - omap_gem_unpin_locked(obj);
> -
> /*
> * We own the sole reference to the object at this point, but to keep
> * lockdep happy, we must still take the omap_obj_lock to call
> @@ -1150,19 +1147,10 @@ static bool omap_gem_validate_flags(struct drm_device *dev, u32 flags)
> return false;
> }
>
> - if ((flags & OMAP_BO_MEM_CONTIG) && (flags & OMAP_BO_MEM_DMM))
> - return false;
> -
> - if ((flags & OMAP_BO_MEM_DMM) && !priv->usergart)
> - return false;
> -
> if (flags & OMAP_BO_TILED_MASK) {
> if (!priv->usergart)
> return false;
>
> - if (flags & OMAP_BO_MEM_CONTIG)
> - return false;
> -
> switch (flags & OMAP_BO_TILED_MASK) {
> case OMAP_BO_TILED_8:
> case OMAP_BO_TILED_16:
> @@ -1177,34 +1165,7 @@ static bool omap_gem_validate_flags(struct drm_device *dev, u32 flags)
> return true;
> }
>
> -/**
> - * omap_gem_new() - Create a new GEM buffer
> - * @dev: The DRM device
> - * @gsize: The requested size for the GEM buffer. If the buffer is tiled
> - * (2D buffer), the size is a pair of values: height and width
> - * expressed in pixels. If the buffers is not tiled, it is expressed
> - * in bytes.
> - * @flags: Flags give additionnal information about the allocation:
> - * OMAP_BO_TILED_x: use the TILER (2D buffers). The TILER container
> - * unit can be 8, 16 or 32 bits. Cache is always disabled for
> - * tiled buffers.
> - * OMAP_BO_SCANOUT: Scannout buffer, consummable by the DSS
> - * OMAP_BO_CACHED: Buffer CPU caching mode: cached
> - * OMAP_BO_WC: Buffer CPU caching mode: write-combined
> - * OMAP_BO_UNCACHED: Buffer CPU caching mode: uncached
> - * OMAP_BO_MEM_CONTIG: The driver will use dma_alloc to get the memory.
> - * This can be used to avoid DMM if the userspace knows it needs
> - * more than 128M of memory at the same time.
> - * OMAP_BO_MEM_DMM: The driver will use DMM to get the memory. There's
> - * not much use for this flag at the moment, as on platforms with
> - * DMM it is used by default, but it's here for completeness.
> - * OMAP_BO_MEM_PIN: The driver will pin the memory at alloc time, and
> - * keep it pinned. This can be used to 1) get an error at alloc
> - * time if DMM space is full, and 2) get rid of the constant
> - * pin/unpin operations which may have some effect on performance.
> - *
> - * Return: The GEM buffer or NULL if the allocation failed
> - */
> +/* GEM buffer object constructor */
> struct drm_gem_object *omap_gem_new(struct drm_device *dev,
> union omap_gem_size gsize, u32 flags)
> {
> @@ -1232,8 +1193,7 @@ struct drm_gem_object *omap_gem_new(struct drm_device *dev,
> */
> flags &= ~(OMAP_BO_CACHED|OMAP_BO_WC|OMAP_BO_UNCACHED);
> flags |= tiler_get_cpu_cache_flags();
> - } else if ((flags & OMAP_BO_MEM_CONTIG) ||
> - ((flags & OMAP_BO_SCANOUT) && !priv->has_dmm)) {
> + } else if ((flags & OMAP_BO_SCANOUT) && !priv->has_dmm) {
> /*
> * If we don't have DMM, we must allocate scanout buffers
> * from contiguous DMA memory.
> @@ -1293,22 +1253,12 @@ struct drm_gem_object *omap_gem_new(struct drm_device *dev,
> goto err_release;
> }
>
> - if (flags & OMAP_BO_MEM_PIN) {
> - ret = omap_gem_pin(obj, NULL);
> - if (ret)
> - goto err_free_dma;
> - }
> -
> mutex_lock(&priv->list_lock);
> list_add(&omap_obj->mm_list, &priv->obj_list);
> mutex_unlock(&priv->list_lock);
>
> return obj;
>
> -err_free_dma:
> - if (flags & OMAP_BO_MEM_DMA_API)
> - dma_free_wc(dev->dev, size, omap_obj->vaddr,
> - omap_obj->dma_addr);
> err_release:
> drm_gem_object_release(obj);
> err_free:
> diff --git a/include/uapi/drm/omap_drm.h b/include/uapi/drm/omap_drm.h
> index 842d3180a442..5a142fad473c 100644
> --- a/include/uapi/drm/omap_drm.h
> +++ b/include/uapi/drm/omap_drm.h
> @@ -47,15 +47,6 @@ struct drm_omap_param {
> #define OMAP_BO_UNCACHED 0x00000004
> #define OMAP_BO_CACHE_MASK 0x00000006
>
> -/* Force allocation from contiguous DMA memory */
> -#define OMAP_BO_MEM_CONTIG 0x00000008
> -
> -/* Force allocation via DMM */
> -#define OMAP_BO_MEM_DMM 0x00000010
> -
> -/* Pin the buffer when allocating and keep pinned */
> -#define OMAP_BO_MEM_PIN 0x00000020
> -
> /* Use TILER for the buffer. The TILER container unit can be 8, 16 or 32 bits. */
> #define OMAP_BO_TILED_8 0x00000100
> #define OMAP_BO_TILED_16 0x00000200
> --
> Sean Paul, Software Engineer, Google / Chromium OS
>
--
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch
More information about the dri-devel
mailing list