On Tue, Aug 04, 2020 at 12:56:21PM +1000, Dave Airlie wrote: > From: Dave Airlie <airlied@xxxxxxxxxx> > > Signed-off-by: Dave Airlie <airlied@xxxxxxxxxx> Reviewed-by: Daniel Vetter <daniel.vetter@xxxxxxxx> > --- > 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@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/dri-devel -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel