[PATCH] drm/ttm, drm/vmwgfx: Move the lock- and object functionality to the vmwgfx driver
Christian König
ckoenig.leichtzumerken at gmail.com
Thu Sep 27 09:33:27 UTC 2018
Am 26.09.2018 um 21:20 schrieb Thomas Hellstrom:
> No other driver is using this functionality so move it out of TTM and
> into the vmwgfx driver. Update includes and remove exports.
> Also annotate to remove false static analyzer lock balance warnings.
>
> Cc: Christian König <christian.koenig at amd.com>
> Signed-off-by: Thomas Hellstrom <thellstrom at vmware.com>
Reviewed-by: Christian König <christian.koenig at amd.com>
> ---
> drivers/gpu/drm/ttm/Makefile | 4 ++--
> drivers/gpu/drm/vmwgfx/Makefile | 3 ++-
> drivers/gpu/drm/{ttm => vmwgfx}/ttm_lock.c | 13 ++----------
> .../ttm => drivers/gpu/drm/vmwgfx}/ttm_lock.h | 0
> drivers/gpu/drm/{ttm => vmwgfx}/ttm_object.c | 20 +++----------------
> .../gpu/drm/vmwgfx}/ttm_object.h | 3 +--
> drivers/gpu/drm/vmwgfx/vmwgfx_bo.c | 2 +-
> drivers/gpu/drm/vmwgfx/vmwgfx_drv.c | 2 +-
> drivers/gpu/drm/vmwgfx/vmwgfx_drv.h | 4 ++--
> drivers/gpu/drm/vmwgfx/vmwgfx_prime.c | 2 +-
> 10 files changed, 15 insertions(+), 38 deletions(-)
> rename drivers/gpu/drm/{ttm => vmwgfx}/ttm_lock.c (95%)
> rename {include/drm/ttm => drivers/gpu/drm/vmwgfx}/ttm_lock.h (100%)
> rename drivers/gpu/drm/{ttm => vmwgfx}/ttm_object.c (96%)
> rename {include/drm/ttm => drivers/gpu/drm/vmwgfx}/ttm_object.h (99%)
>
> diff --git a/drivers/gpu/drm/ttm/Makefile b/drivers/gpu/drm/ttm/Makefile
> index a60e560804e0..01fc670ce7a2 100644
> --- a/drivers/gpu/drm/ttm/Makefile
> +++ b/drivers/gpu/drm/ttm/Makefile
> @@ -4,8 +4,8 @@
>
> ttm-y := ttm_memory.o ttm_tt.o ttm_bo.o \
> ttm_bo_util.o ttm_bo_vm.o ttm_module.o \
> - ttm_object.o ttm_lock.o ttm_execbuf_util.o ttm_page_alloc.o \
> - ttm_bo_manager.o ttm_page_alloc_dma.o
> + ttm_execbuf_util.o ttm_page_alloc.o ttm_bo_manager.o \
> + ttm_page_alloc_dma.o
> ttm-$(CONFIG_AGP) += ttm_agp_backend.o
>
> obj-$(CONFIG_DRM_TTM) += ttm.o
> diff --git a/drivers/gpu/drm/vmwgfx/Makefile b/drivers/gpu/drm/vmwgfx/Makefile
> index 09b2aa08363e..22fdc07e03ad 100644
> --- a/drivers/gpu/drm/vmwgfx/Makefile
> +++ b/drivers/gpu/drm/vmwgfx/Makefile
> @@ -7,6 +7,7 @@ vmwgfx-y := vmwgfx_execbuf.o vmwgfx_gmr.o vmwgfx_kms.o vmwgfx_drv.o \
> vmwgfx_surface.o vmwgfx_prime.o vmwgfx_mob.o vmwgfx_shader.o \
> vmwgfx_cmdbuf_res.o vmwgfx_cmdbuf.o vmwgfx_stdu.o \
> vmwgfx_cotable.o vmwgfx_so.o vmwgfx_binding.o vmwgfx_msg.o \
> - vmwgfx_simple_resource.o vmwgfx_va.o vmwgfx_blit.o
> + vmwgfx_simple_resource.o vmwgfx_va.o vmwgfx_blit.o \
> + ttm_object.o ttm_lock.o
>
> obj-$(CONFIG_DRM_VMWGFX) := vmwgfx.o
> diff --git a/drivers/gpu/drm/ttm/ttm_lock.c b/drivers/gpu/drm/vmwgfx/ttm_lock.c
> similarity index 95%
> rename from drivers/gpu/drm/ttm/ttm_lock.c
> rename to drivers/gpu/drm/vmwgfx/ttm_lock.c
> index 20694b8a01ca..0d59f5a19e17 100644
> --- a/drivers/gpu/drm/ttm/ttm_lock.c
> +++ b/drivers/gpu/drm/vmwgfx/ttm_lock.c
> @@ -29,13 +29,13 @@
> * Authors: Thomas Hellstrom <thellstrom-at-vmware-dot-com>
> */
>
> -#include <drm/ttm/ttm_lock.h>
> #include <drm/ttm/ttm_module.h>
> #include <linux/atomic.h>
> #include <linux/errno.h>
> #include <linux/wait.h>
> #include <linux/sched/signal.h>
> -#include <linux/module.h>
> +#include "ttm_lock.h"
> +#include "ttm_object.h"
>
> #define TTM_WRITE_LOCK_PENDING (1 << 0)
> #define TTM_VT_LOCK_PENDING (1 << 1)
> @@ -52,7 +52,6 @@ void ttm_lock_init(struct ttm_lock *lock)
> lock->kill_takers = false;
> lock->signal = SIGKILL;
> }
> -EXPORT_SYMBOL(ttm_lock_init);
>
> void ttm_read_unlock(struct ttm_lock *lock)
> {
> @@ -61,7 +60,6 @@ void ttm_read_unlock(struct ttm_lock *lock)
> wake_up_all(&lock->queue);
> spin_unlock(&lock->lock);
> }
> -EXPORT_SYMBOL(ttm_read_unlock);
>
> static bool __ttm_read_lock(struct ttm_lock *lock)
> {
> @@ -92,7 +90,6 @@ int ttm_read_lock(struct ttm_lock *lock, bool interruptible)
> wait_event(lock->queue, __ttm_read_lock(lock));
> return ret;
> }
> -EXPORT_SYMBOL(ttm_read_lock);
>
> static bool __ttm_read_trylock(struct ttm_lock *lock, bool *locked)
> {
> @@ -144,7 +141,6 @@ void ttm_write_unlock(struct ttm_lock *lock)
> wake_up_all(&lock->queue);
> spin_unlock(&lock->lock);
> }
> -EXPORT_SYMBOL(ttm_write_unlock);
>
> static bool __ttm_write_lock(struct ttm_lock *lock)
> {
> @@ -185,7 +181,6 @@ int ttm_write_lock(struct ttm_lock *lock, bool interruptible)
>
> return ret;
> }
> -EXPORT_SYMBOL(ttm_write_lock);
>
> static int __ttm_vt_unlock(struct ttm_lock *lock)
> {
> @@ -262,14 +257,12 @@ int ttm_vt_lock(struct ttm_lock *lock,
>
> return ret;
> }
> -EXPORT_SYMBOL(ttm_vt_lock);
>
> int ttm_vt_unlock(struct ttm_lock *lock)
> {
> return ttm_ref_object_base_unref(lock->vt_holder,
> lock->base.hash.key, TTM_REF_USAGE);
> }
> -EXPORT_SYMBOL(ttm_vt_unlock);
>
> void ttm_suspend_unlock(struct ttm_lock *lock)
> {
> @@ -278,7 +271,6 @@ void ttm_suspend_unlock(struct ttm_lock *lock)
> wake_up_all(&lock->queue);
> spin_unlock(&lock->lock);
> }
> -EXPORT_SYMBOL(ttm_suspend_unlock);
>
> static bool __ttm_suspend_lock(struct ttm_lock *lock)
> {
> @@ -300,4 +292,3 @@ void ttm_suspend_lock(struct ttm_lock *lock)
> {
> wait_event(lock->queue, __ttm_suspend_lock(lock));
> }
> -EXPORT_SYMBOL(ttm_suspend_lock);
> diff --git a/include/drm/ttm/ttm_lock.h b/drivers/gpu/drm/vmwgfx/ttm_lock.h
> similarity index 100%
> rename from include/drm/ttm/ttm_lock.h
> rename to drivers/gpu/drm/vmwgfx/ttm_lock.h
> diff --git a/drivers/gpu/drm/ttm/ttm_object.c b/drivers/gpu/drm/vmwgfx/ttm_object.c
> similarity index 96%
> rename from drivers/gpu/drm/ttm/ttm_object.c
> rename to drivers/gpu/drm/vmwgfx/ttm_object.c
> index 74f1b1eb1f8e..190e2591e1f5 100644
> --- a/drivers/gpu/drm/ttm/ttm_object.c
> +++ b/drivers/gpu/drm/vmwgfx/ttm_object.c
> @@ -59,13 +59,12 @@
>
> #define pr_fmt(fmt) "[TTM] " fmt
>
> -#include <drm/ttm/ttm_object.h>
> #include <drm/ttm/ttm_module.h>
> #include <linux/list.h>
> #include <linux/spinlock.h>
> #include <linux/slab.h>
> -#include <linux/module.h>
> #include <linux/atomic.h>
> +#include "ttm_object.h"
>
> struct ttm_object_file {
> struct ttm_object_device *tdev;
> @@ -194,7 +193,6 @@ int ttm_base_object_init(struct ttm_object_file *tfile,
> out_err0:
> return ret;
> }
> -EXPORT_SYMBOL(ttm_base_object_init);
>
> static void ttm_release_base(struct kref *kref)
> {
> @@ -225,7 +223,6 @@ void ttm_base_object_unref(struct ttm_base_object **p_base)
>
> kref_put(&base->refcount, ttm_release_base);
> }
> -EXPORT_SYMBOL(ttm_base_object_unref);
>
> struct ttm_base_object *ttm_base_object_lookup(struct ttm_object_file *tfile,
> uint32_t key)
> @@ -247,7 +244,6 @@ struct ttm_base_object *ttm_base_object_lookup(struct ttm_object_file *tfile,
>
> return base;
> }
> -EXPORT_SYMBOL(ttm_base_object_lookup);
>
> struct ttm_base_object *
> ttm_base_object_lookup_for_ref(struct ttm_object_device *tdev, uint32_t key)
> @@ -269,7 +265,6 @@ ttm_base_object_lookup_for_ref(struct ttm_object_device *tdev, uint32_t key)
>
> return base;
> }
> -EXPORT_SYMBOL(ttm_base_object_lookup_for_ref);
>
> /**
> * ttm_ref_object_exists - Check whether a caller has a valid ref object
> @@ -315,7 +310,6 @@ bool ttm_ref_object_exists(struct ttm_object_file *tfile,
> rcu_read_unlock();
> return false;
> }
> -EXPORT_SYMBOL(ttm_ref_object_exists);
>
> int ttm_ref_object_add(struct ttm_object_file *tfile,
> struct ttm_base_object *base,
> @@ -391,9 +385,9 @@ int ttm_ref_object_add(struct ttm_object_file *tfile,
>
> return ret;
> }
> -EXPORT_SYMBOL(ttm_ref_object_add);
>
> -static void ttm_ref_object_release(struct kref *kref)
> +static void __releases(tfile->lock) __acquires(tfile->lock)
> +ttm_ref_object_release(struct kref *kref)
> {
> struct ttm_ref_object *ref =
> container_of(kref, struct ttm_ref_object, kref);
> @@ -435,7 +429,6 @@ int ttm_ref_object_base_unref(struct ttm_object_file *tfile,
> spin_unlock(&tfile->lock);
> return 0;
> }
> -EXPORT_SYMBOL(ttm_ref_object_base_unref);
>
> void ttm_object_file_release(struct ttm_object_file **p_tfile)
> {
> @@ -464,7 +457,6 @@ void ttm_object_file_release(struct ttm_object_file **p_tfile)
>
> ttm_object_file_unref(&tfile);
> }
> -EXPORT_SYMBOL(ttm_object_file_release);
>
> struct ttm_object_file *ttm_object_file_init(struct ttm_object_device *tdev,
> unsigned int hash_order)
> @@ -499,7 +491,6 @@ struct ttm_object_file *ttm_object_file_init(struct ttm_object_device *tdev,
>
> return NULL;
> }
> -EXPORT_SYMBOL(ttm_object_file_init);
>
> struct ttm_object_device *
> ttm_object_device_init(struct ttm_mem_global *mem_glob,
> @@ -530,7 +521,6 @@ ttm_object_device_init(struct ttm_mem_global *mem_glob,
> kfree(tdev);
> return NULL;
> }
> -EXPORT_SYMBOL(ttm_object_device_init);
>
> void ttm_object_device_release(struct ttm_object_device **p_tdev)
> {
> @@ -542,7 +532,6 @@ void ttm_object_device_release(struct ttm_object_device **p_tdev)
>
> kfree(tdev);
> }
> -EXPORT_SYMBOL(ttm_object_device_release);
>
> /**
> * get_dma_buf_unless_doomed - get a dma_buf reference if possible.
> @@ -648,7 +637,6 @@ int ttm_prime_fd_to_handle(struct ttm_object_file *tfile,
>
> return ret;
> }
> -EXPORT_SYMBOL_GPL(ttm_prime_fd_to_handle);
>
> /**
> * ttm_prime_handle_to_fd - Return a dma_buf fd from a ttm prime object
> @@ -739,7 +727,6 @@ int ttm_prime_handle_to_fd(struct ttm_object_file *tfile,
> ttm_base_object_unref(&base);
> return ret;
> }
> -EXPORT_SYMBOL_GPL(ttm_prime_handle_to_fd);
>
> /**
> * ttm_prime_object_init - Initialize a ttm_prime_object
> @@ -772,4 +759,3 @@ int ttm_prime_object_init(struct ttm_object_file *tfile, size_t size,
> ttm_prime_refcount_release,
> ref_obj_release);
> }
> -EXPORT_SYMBOL(ttm_prime_object_init);
> diff --git a/include/drm/ttm/ttm_object.h b/drivers/gpu/drm/vmwgfx/ttm_object.h
> similarity index 99%
> rename from include/drm/ttm/ttm_object.h
> rename to drivers/gpu/drm/vmwgfx/ttm_object.h
> index a98bfeb4239e..1c1b9cc118f8 100644
> --- a/include/drm/ttm/ttm_object.h
> +++ b/drivers/gpu/drm/vmwgfx/ttm_object.h
> @@ -42,8 +42,7 @@
> #include <linux/kref.h>
> #include <linux/rcupdate.h>
> #include <linux/dma-buf.h>
> -
> -#include "ttm_memory.h"
> +#include <drm/ttm/ttm_memory.h>
>
> /**
> * enum ttm_ref_type
> diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_bo.c b/drivers/gpu/drm/vmwgfx/vmwgfx_bo.c
> index 2dda03345761..36e84acee3ea 100644
> --- a/drivers/gpu/drm/vmwgfx/vmwgfx_bo.c
> +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_bo.c
> @@ -30,7 +30,7 @@
>
> #include <drm/drmP.h>
> #include "vmwgfx_drv.h"
> -#include "drm/ttm/ttm_object.h"
> +#include "ttm_object.h"
>
>
> /**
> diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
> index bb6dbbe18835..d9c178e235b4 100644
> --- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
> +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
> @@ -30,9 +30,9 @@
> #include <drm/drmP.h>
> #include "vmwgfx_drv.h"
> #include "vmwgfx_binding.h"
> +#include "ttm_object.h"
> #include <drm/ttm/ttm_placement.h>
> #include <drm/ttm/ttm_bo_driver.h>
> -#include <drm/ttm/ttm_object.h>
> #include <drm/ttm/ttm_module.h>
> #include <linux/dma_remapping.h>
>
> diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h
> index 1abe21758b0d..1aa11c39f07f 100644
> --- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h
> +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h
> @@ -35,11 +35,11 @@
> #include <drm/drm_auth.h>
> #include <linux/suspend.h>
> #include <drm/ttm/ttm_bo_driver.h>
> -#include <drm/ttm/ttm_object.h>
> -#include <drm/ttm/ttm_lock.h>
> #include <drm/ttm/ttm_execbuf_util.h>
> #include <drm/ttm/ttm_module.h>
> #include "vmwgfx_fence.h"
> +#include "ttm_object.h"
> +#include "ttm_lock.h"
> #include <linux/sync_file.h>
>
> #define VMWGFX_DRIVER_NAME "vmwgfx"
> diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_prime.c b/drivers/gpu/drm/vmwgfx/vmwgfx_prime.c
> index 0861c821a7fe..e420675e8db3 100644
> --- a/drivers/gpu/drm/vmwgfx/vmwgfx_prime.c
> +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_prime.c
> @@ -31,8 +31,8 @@
> */
>
> #include "vmwgfx_drv.h"
> +#include "ttm_object.h"
> #include <linux/dma-buf.h>
> -#include <drm/ttm/ttm_object.h>
>
> /*
> * DMA-BUF attach- and mapping methods. No need to implement
More information about the dri-devel
mailing list