Lines Matching refs:mob

76 			       struct vmw_mob *mob);
77 static void vmw_mob_pt_setup(struct vmw_mob *mob,
102 struct vmw_mob *mob; in vmw_setup_otable_base() local
113 mob = vmw_mob_create(otable->size >> PAGE_SHIFT); in vmw_setup_otable_base()
114 if (unlikely(mob == NULL)) { in vmw_setup_otable_base()
120 mob->pt_level = VMW_MOBFMT_PTDEPTH_0; in vmw_setup_otable_base()
121 mob->pt_root_page = vmw_piter_dma_addr(&iter); in vmw_setup_otable_base()
123 mob->pt_level = SVGA3D_MOBFMT_RANGE; in vmw_setup_otable_base()
124 mob->pt_root_page = vmw_piter_dma_addr(&iter); in vmw_setup_otable_base()
126 ret = vmw_mob_pt_populate(dev_priv, mob); in vmw_setup_otable_base()
130 vmw_mob_pt_setup(mob, iter, otable->size >> PAGE_SHIFT); in vmw_setup_otable_base()
131 mob->pt_level += VMW_MOBFMT_PTDEPTH_1 - SVGA3D_MOBFMT_PTDEPTH_1; in vmw_setup_otable_base()
145 cmd->body.baseAddress = cpu_to_le64(mob->pt_root_page >> PAGE_SHIFT); in vmw_setup_otable_base()
148 cmd->body.ptDepth = mob->pt_level; in vmw_setup_otable_base()
155 BUG_ON(mob->pt_level == VMW_MOBFMT_PTDEPTH_2); in vmw_setup_otable_base()
158 otable->page_table = mob; in vmw_setup_otable_base()
164 vmw_mob_destroy(mob); in vmw_setup_otable_base()
367 struct vmw_mob *mob = kzalloc(sizeof(*mob), GFP_KERNEL); in vmw_mob_create() local
369 if (unlikely(mob == NULL)) in vmw_mob_create()
372 mob->num_pages = vmw_mob_calculate_pt_pages(data_pages); in vmw_mob_create()
374 return mob; in vmw_mob_create()
389 struct vmw_mob *mob) in vmw_mob_pt_populate() argument
392 BUG_ON(mob->pt_bo != NULL); in vmw_mob_pt_populate()
394 ret = ttm_bo_create(&dev_priv->bdev, mob->num_pages * PAGE_SIZE, in vmw_mob_pt_populate()
397 0, false, NULL, &mob->pt_bo); in vmw_mob_pt_populate()
401 ret = ttm_bo_reserve(mob->pt_bo, false, true, false, NULL); in vmw_mob_pt_populate()
404 ret = vmw_bo_driver.ttm_tt_populate(mob->pt_bo->ttm); in vmw_mob_pt_populate()
407 ret = vmw_bo_map_dma(mob->pt_bo); in vmw_mob_pt_populate()
411 ttm_bo_unreserve(mob->pt_bo); in vmw_mob_pt_populate()
416 ttm_bo_unreserve(mob->pt_bo); in vmw_mob_pt_populate()
417 ttm_bo_unref(&mob->pt_bo); in vmw_mob_pt_populate()
495 static void vmw_mob_pt_setup(struct vmw_mob *mob, in vmw_mob_pt_setup() argument
500 struct ttm_buffer_object *bo = mob->pt_bo; in vmw_mob_pt_setup()
512 mob->pt_level = 0; in vmw_mob_pt_setup()
514 ++mob->pt_level; in vmw_mob_pt_setup()
515 BUG_ON(mob->pt_level > 2); in vmw_mob_pt_setup()
523 mob->pt_root_page = vmw_piter_dma_addr(&save_pt_iter); in vmw_mob_pt_setup()
532 void vmw_mob_destroy(struct vmw_mob *mob) in vmw_mob_destroy() argument
534 if (mob->pt_bo) in vmw_mob_destroy()
535 ttm_bo_unref(&mob->pt_bo); in vmw_mob_destroy()
536 kfree(mob); in vmw_mob_destroy()
546 struct vmw_mob *mob) in vmw_mob_unbind() argument
553 struct ttm_buffer_object *bo = mob->pt_bo; in vmw_mob_unbind()
570 cmd->body.mobid = mob->id; in vmw_mob_unbind()
596 struct vmw_mob *mob, in vmw_mob_bind() argument
609 mob->id = mob_id; in vmw_mob_bind()
615 mob->pt_level = VMW_MOBFMT_PTDEPTH_0; in vmw_mob_bind()
616 mob->pt_root_page = vmw_piter_dma_addr(&data_iter); in vmw_mob_bind()
618 mob->pt_level = SVGA3D_MOBFMT_RANGE; in vmw_mob_bind()
619 mob->pt_root_page = vmw_piter_dma_addr(&data_iter); in vmw_mob_bind()
620 } else if (unlikely(mob->pt_bo == NULL)) { in vmw_mob_bind()
621 ret = vmw_mob_pt_populate(dev_priv, mob); in vmw_mob_bind()
625 vmw_mob_pt_setup(mob, data_iter, num_data_pages); in vmw_mob_bind()
627 mob->pt_level += VMW_MOBFMT_PTDEPTH_1 - SVGA3D_MOBFMT_PTDEPTH_1; in vmw_mob_bind()
642 cmd->body.ptDepth = mob->pt_level; in vmw_mob_bind()
643 cmd->body.base = cpu_to_le64(mob->pt_root_page >> PAGE_SHIFT); in vmw_mob_bind()
653 ttm_bo_unref(&mob->pt_bo); in vmw_mob_bind()