Lines Matching refs:mob

92 			       struct vmw_mob *mob);
93 static void vmw_mob_pt_setup(struct vmw_mob *mob,
119 struct vmw_mob *mob; in vmw_setup_otable_base() local
130 mob = vmw_mob_create(otable->size >> PAGE_SHIFT); in vmw_setup_otable_base()
131 if (unlikely(mob == NULL)) { in vmw_setup_otable_base()
137 mob->pt_level = VMW_MOBFMT_PTDEPTH_0; in vmw_setup_otable_base()
138 mob->pt_root_page = vmw_piter_dma_addr(&iter); in vmw_setup_otable_base()
140 mob->pt_level = SVGA3D_MOBFMT_RANGE; in vmw_setup_otable_base()
141 mob->pt_root_page = vmw_piter_dma_addr(&iter); in vmw_setup_otable_base()
143 ret = vmw_mob_pt_populate(dev_priv, mob); in vmw_setup_otable_base()
147 vmw_mob_pt_setup(mob, iter, otable->size >> PAGE_SHIFT); in vmw_setup_otable_base()
148 mob->pt_level += VMW_MOBFMT_PTDEPTH_1 - SVGA3D_MOBFMT_PTDEPTH_1; in vmw_setup_otable_base()
161 cmd->body.baseAddress = mob->pt_root_page >> PAGE_SHIFT; in vmw_setup_otable_base()
164 cmd->body.ptDepth = mob->pt_level; in vmw_setup_otable_base()
171 BUG_ON(mob->pt_level == VMW_MOBFMT_PTDEPTH_2); in vmw_setup_otable_base()
174 otable->page_table = mob; in vmw_setup_otable_base()
180 vmw_mob_destroy(mob); in vmw_setup_otable_base()
411 struct vmw_mob *mob = kzalloc(sizeof(*mob), GFP_KERNEL); in vmw_mob_create() local
413 if (unlikely(!mob)) in vmw_mob_create()
416 mob->num_pages = vmw_mob_calculate_pt_pages(data_pages); in vmw_mob_create()
418 return mob; in vmw_mob_create()
433 struct vmw_mob *mob) in vmw_mob_pt_populate() argument
441 BUG_ON(mob->pt_bo != NULL); in vmw_mob_pt_populate()
443 ret = ttm_bo_create(&dev_priv->bdev, mob->num_pages * PAGE_SIZE, in vmw_mob_pt_populate()
446 0, false, &mob->pt_bo); in vmw_mob_pt_populate()
450 ret = ttm_bo_reserve(mob->pt_bo, false, true, NULL); in vmw_mob_pt_populate()
453 ret = vmw_bo_driver.ttm_tt_populate(mob->pt_bo->ttm, &ctx); in vmw_mob_pt_populate()
456 ret = vmw_bo_map_dma(mob->pt_bo); in vmw_mob_pt_populate()
460 ttm_bo_unreserve(mob->pt_bo); in vmw_mob_pt_populate()
465 ttm_bo_unreserve(mob->pt_bo); in vmw_mob_pt_populate()
466 ttm_bo_put(mob->pt_bo); in vmw_mob_pt_populate()
467 mob->pt_bo = NULL; in vmw_mob_pt_populate()
545 static void vmw_mob_pt_setup(struct vmw_mob *mob, in vmw_mob_pt_setup() argument
550 struct ttm_buffer_object *bo = mob->pt_bo; in vmw_mob_pt_setup()
562 mob->pt_level = 0; in vmw_mob_pt_setup()
564 ++mob->pt_level; in vmw_mob_pt_setup()
565 BUG_ON(mob->pt_level > 2); in vmw_mob_pt_setup()
573 mob->pt_root_page = vmw_piter_dma_addr(&save_pt_iter); in vmw_mob_pt_setup()
582 void vmw_mob_destroy(struct vmw_mob *mob) in vmw_mob_destroy() argument
584 if (mob->pt_bo) { in vmw_mob_destroy()
585 ttm_bo_put(mob->pt_bo); in vmw_mob_destroy()
586 mob->pt_bo = NULL; in vmw_mob_destroy()
588 kfree(mob); in vmw_mob_destroy()
598 struct vmw_mob *mob) in vmw_mob_unbind() argument
605 struct ttm_buffer_object *bo = mob->pt_bo; in vmw_mob_unbind()
619 cmd->body.mobid = mob->id; in vmw_mob_unbind()
646 struct vmw_mob *mob, in vmw_mob_bind() argument
659 mob->id = mob_id; in vmw_mob_bind()
665 mob->pt_level = VMW_MOBFMT_PTDEPTH_0; in vmw_mob_bind()
666 mob->pt_root_page = vmw_piter_dma_addr(&data_iter); in vmw_mob_bind()
668 mob->pt_level = SVGA3D_MOBFMT_RANGE; in vmw_mob_bind()
669 mob->pt_root_page = vmw_piter_dma_addr(&data_iter); in vmw_mob_bind()
670 } else if (unlikely(mob->pt_bo == NULL)) { in vmw_mob_bind()
671 ret = vmw_mob_pt_populate(dev_priv, mob); in vmw_mob_bind()
675 vmw_mob_pt_setup(mob, data_iter, num_data_pages); in vmw_mob_bind()
677 mob->pt_level += VMW_MOBFMT_PTDEPTH_1 - SVGA3D_MOBFMT_PTDEPTH_1; in vmw_mob_bind()
689 cmd->body.ptDepth = mob->pt_level; in vmw_mob_bind()
690 cmd->body.base = mob->pt_root_page >> PAGE_SHIFT; in vmw_mob_bind()
700 ttm_bo_put(mob->pt_bo); in vmw_mob_bind()
701 mob->pt_bo = NULL; in vmw_mob_bind()