Unified initialization and release of the global TTM state is provided
by struct ttm_global and its interfaces.

Signed-off-by: Thomas Zimmermann <tzimmerm...@suse.de>
---
 drivers/gpu/drm/vmwgfx/vmwgfx_drv.c      |  6 ++--
 drivers/gpu/drm/vmwgfx/vmwgfx_drv.h      |  6 ++--
 drivers/gpu/drm/vmwgfx/vmwgfx_ttm_glue.c | 44 ++----------------------
 3 files changed, 9 insertions(+), 47 deletions(-)

diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c 
b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
index 61a84b958d67..85b58e0c25fa 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
@@ -829,7 +829,7 @@ static int vmw_driver_load(struct drm_device *dev, unsigned 
long chipset)
        }
 
        dev_priv->tdev = ttm_object_device_init
-               (dev_priv->mem_global_ref.object, 12, &vmw_prime_dmabuf_ops);
+               (dev_priv->glob.mem_ref.object, 12, &vmw_prime_dmabuf_ops);
 
        if (unlikely(dev_priv->tdev == NULL)) {
                DRM_ERROR("Unable to initialize TTM object management.\n");
@@ -870,7 +870,7 @@ static int vmw_driver_load(struct drm_device *dev, unsigned 
long chipset)
        }
 
        ret = ttm_bo_device_init(&dev_priv->bdev,
-                                dev_priv->bo_global_ref.ref.object,
+                                dev_priv->glob.bo_ref.object,
                                 &vmw_bo_driver,
                                 dev->anon_inode->i_mapping,
                                 VMWGFX_FILE_PAGE_OFFSET,
@@ -1530,7 +1530,7 @@ static int vmw_pm_freeze(struct device *kdev)
 
        vmw_fence_fifo_down(dev_priv->fman);
        __vmw_svga_disable(dev_priv);
-       
+
        vmw_release_device_late(dev_priv);
        return 0;
 }
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h 
b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h
index 59f614225bcd..ae724c756bf0 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.h
@@ -38,6 +38,7 @@
 #include <drm/ttm/ttm_bo_driver.h>
 #include <drm/ttm/ttm_execbuf_util.h>
 #include <drm/ttm/ttm_module.h>
+#include <drm/ttm/ttm_global.h>
 #include "vmwgfx_fence.h"
 #include "ttm_object.h"
 #include "ttm_lock.h"
@@ -417,8 +418,7 @@ enum {
 
 struct vmw_private {
        struct ttm_bo_device bdev;
-       struct ttm_bo_global_ref bo_global_ref;
-       struct drm_global_reference mem_global_ref;
+       struct ttm_global glob;
 
        struct vmw_fifo_state fifo;
 
@@ -1363,7 +1363,7 @@ vmw_bo_reference(struct vmw_buffer_object *buf)
 
 static inline struct ttm_mem_global *vmw_mem_glob(struct vmw_private *dev_priv)
 {
-       return (struct ttm_mem_global *) dev_priv->mem_global_ref.object;
+       return (struct ttm_mem_global *) dev_priv->glob.mem_ref.object;
 }
 
 static inline void vmw_fifo_resource_inc(struct vmw_private *dev_priv)
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_ttm_glue.c 
b/drivers/gpu/drm/vmwgfx/vmwgfx_ttm_glue.c
index f3ce43c41978..2125a0e3f431 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_ttm_glue.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_ttm_glue.c
@@ -43,56 +43,18 @@ int vmw_mmap(struct file *filp, struct vm_area_struct *vma)
        return ttm_bo_mmap(filp, vma, &dev_priv->bdev);
 }
 
-static int vmw_ttm_mem_global_init(struct drm_global_reference *ref)
-{
-       DRM_INFO("global init.\n");
-       return ttm_mem_global_init(ref->object);
-}
-
-static void vmw_ttm_mem_global_release(struct drm_global_reference *ref)
-{
-       ttm_mem_global_release(ref->object);
-}
-
 int vmw_ttm_global_init(struct vmw_private *dev_priv)
 {
-       struct drm_global_reference *global_ref;
-       int ret;
-
-       global_ref = &dev_priv->mem_global_ref;
-       global_ref->global_type = DRM_GLOBAL_TTM_MEM;
-       global_ref->size = sizeof(struct ttm_mem_global);
-       global_ref->init = &vmw_ttm_mem_global_init;
-       global_ref->release = &vmw_ttm_mem_global_release;
-
-       ret = drm_global_item_ref(global_ref);
+       int ret = ttm_global_init(&dev_priv->glob);
        if (unlikely(ret != 0)) {
-               DRM_ERROR("Failed setting up TTM memory accounting.\n");
+               DRM_ERROR("Failed setting up TTM.\n");
                return ret;
        }
 
-       dev_priv->bo_global_ref.mem_glob =
-               dev_priv->mem_global_ref.object;
-       global_ref = &dev_priv->bo_global_ref.ref;
-       global_ref->global_type = DRM_GLOBAL_TTM_BO;
-       global_ref->size = sizeof(struct ttm_bo_global);
-       global_ref->init = &ttm_bo_global_ref_init;
-       global_ref->release = &ttm_bo_global_ref_release;
-       ret = drm_global_item_ref(global_ref);
-
-       if (unlikely(ret != 0)) {
-               DRM_ERROR("Failed setting up TTM buffer objects.\n");
-               goto out_no_bo;
-       }
-
        return 0;
-out_no_bo:
-       drm_global_item_unref(&dev_priv->mem_global_ref);
-       return ret;
 }
 
 void vmw_ttm_global_release(struct vmw_private *dev_priv)
 {
-       drm_global_item_unref(&dev_priv->bo_global_ref.ref);
-       drm_global_item_unref(&dev_priv->mem_global_ref);
+       ttm_global_release(&dev_priv->glob);
 }
-- 
2.19.1

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to