On Tue, Aug 04, 2020 at 12:56:21PM +1000, Dave Airlie wrote:
From: Dave Airlie airlied@redhat.com
Signed-off-by: Dave Airlie airlied@redhat.com
Reviewed-by: Daniel Vetter daniel.vetter@ffwll.ch
drivers/gpu/drm/vmwgfx/vmwgfx_thp.c | 32 +++++++++++++++++++---------- 1 file changed, 21 insertions(+), 11 deletions(-)
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_thp.c b/drivers/gpu/drm/vmwgfx/vmwgfx_thp.c index 720a24214c74..1cefd9c1e8ea 100644 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_thp.c +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_thp.c @@ -16,10 +16,16 @@
- @lock: Manager lock.
*/ struct vmw_thp_manager {
- struct ttm_mem_type_manager manager; struct drm_mm mm; spinlock_t lock;
};
+static struct vmw_thp_manager *to_thp_manager(struct ttm_mem_type_manager *man) +{
- return container_of(man, struct vmw_thp_manager, manager);
+}
static int vmw_thp_insert_aligned(struct drm_mm *mm, struct drm_mm_node *node, unsigned long align_pages, const struct ttm_place *place, @@ -43,7 +49,7 @@ static int vmw_thp_get_node(struct ttm_mem_type_manager *man, const struct ttm_place *place, struct ttm_mem_reg *mem) {
- struct vmw_thp_manager *rman = (struct vmw_thp_manager *) man->priv;
- struct vmw_thp_manager *rman = to_thp_manager(man); struct drm_mm *mm = &rman->mm; struct drm_mm_node *node; unsigned long align_pages;
@@ -103,7 +109,7 @@ static int vmw_thp_get_node(struct ttm_mem_type_manager *man, static void vmw_thp_put_node(struct ttm_mem_type_manager *man, struct ttm_mem_reg *mem) {
- struct vmw_thp_manager *rman = (struct vmw_thp_manager *) man->priv;
struct vmw_thp_manager *rman = to_thp_manager(man);
if (mem->mm_node) { spin_lock(&rman->lock);
@@ -117,20 +123,24 @@ static void vmw_thp_put_node(struct ttm_mem_type_manager *man,
int vmw_thp_init(struct vmw_private *dev_priv) {
- struct ttm_mem_type_manager *man = ttm_manager_type(&dev_priv->bdev, TTM_PL_VRAM);
struct ttm_mem_type_manager *man; struct vmw_thp_manager *rman;
rman = kzalloc(sizeof(*rman), GFP_KERNEL);
if (!rman)
return -ENOMEM;
man = &rman->manager; man->available_caching = TTM_PL_FLAG_CACHED; man->default_caching = TTM_PL_FLAG_CACHED;
ttm_mem_type_manager_init(&dev_priv->bdev, man, dev_priv->vram_size >> PAGE_SHIFT);
rman = kzalloc(sizeof(*rman), GFP_KERNEL);
if (!rman)
return -ENOMEM;
drm_mm_init(&rman->mm, 0, man->size); spin_lock_init(&rman->lock);
man->priv = rman;
- ttm_set_driver_manager(&dev_priv->bdev, TTM_PL_VRAM, &rman->manager); ttm_mem_type_manager_set_used(man, true); return 0;
} @@ -138,7 +148,7 @@ int vmw_thp_init(struct vmw_private *dev_priv) void vmw_thp_fini(struct vmw_private *dev_priv) { struct ttm_mem_type_manager *man = ttm_manager_type(&dev_priv->bdev, TTM_PL_VRAM);
- struct vmw_thp_manager *rman = (struct vmw_thp_manager *) man->priv;
- struct vmw_thp_manager *rman = to_thp_manager(man); struct drm_mm *mm = &rman->mm; int ret;
@@ -151,15 +161,15 @@ void vmw_thp_fini(struct vmw_private *dev_priv) drm_mm_clean(mm); drm_mm_takedown(mm); spin_unlock(&rman->lock);
- kfree(rman);
- man->priv = NULL; ttm_mem_type_manager_cleanup(man);
- ttm_set_driver_manager(&dev_priv->bdev, TTM_PL_VRAM, NULL);
- kfree(rman);
}
static void vmw_thp_debug(struct ttm_mem_type_manager *man, struct drm_printer *printer) {
- struct vmw_thp_manager *rman = (struct vmw_thp_manager *) man->priv;
struct vmw_thp_manager *rman = to_thp_manager(man);
spin_lock(&rman->lock); drm_mm_print(&rman->mm, printer);
-- 2.26.2
dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel