Lines Matching refs:vma

149 static void ppgtt_bind_vma(struct i915_vma *vma,
152 static void ppgtt_unbind_vma(struct i915_vma *vma);
1539 ppgtt_bind_vma(struct i915_vma *vma, in ppgtt_bind_vma() argument
1544 if (vma->obj->gt_ro) in ppgtt_bind_vma()
1547 vma->vm->insert_entries(vma->vm, vma->obj->pages, vma->node.start, in ppgtt_bind_vma()
1551 static void ppgtt_unbind_vma(struct i915_vma *vma) in ppgtt_unbind_vma() argument
1553 vma->vm->clear_range(vma->vm, in ppgtt_unbind_vma()
1554 vma->node.start, in ppgtt_unbind_vma()
1555 vma->obj->base.size, in ppgtt_unbind_vma()
1671 struct i915_vma *vma = i915_gem_obj_to_vma(obj, in i915_gem_restore_gtt_mappings() local
1673 if (!vma) in i915_gem_restore_gtt_mappings()
1684 vma->bound &= ~GLOBAL_BIND; in i915_gem_restore_gtt_mappings()
1685 WARN_ON(i915_vma_bind(vma, obj->cache_level, GLOBAL_BIND)); in i915_gem_restore_gtt_mappings()
1876 static void i915_ggtt_bind_vma(struct i915_vma *vma, in i915_ggtt_bind_vma() argument
1880 const unsigned long entry = vma->node.start >> PAGE_SHIFT; in i915_ggtt_bind_vma()
1884 BUG_ON(!i915_is_ggtt(vma->vm)); in i915_ggtt_bind_vma()
1885 intel_gtt_insert_sg_entries(vma->ggtt_view.pages, entry, flags); in i915_ggtt_bind_vma()
1886 vma->bound = GLOBAL_BIND; in i915_ggtt_bind_vma()
1899 static void i915_ggtt_unbind_vma(struct i915_vma *vma) in i915_ggtt_unbind_vma() argument
1901 const unsigned int first = vma->node.start >> PAGE_SHIFT; in i915_ggtt_unbind_vma()
1902 const unsigned int size = vma->obj->base.size >> PAGE_SHIFT; in i915_ggtt_unbind_vma()
1904 BUG_ON(!i915_is_ggtt(vma->vm)); in i915_ggtt_unbind_vma()
1905 vma->bound = 0; in i915_ggtt_unbind_vma()
1909 static void ggtt_bind_vma(struct i915_vma *vma, in ggtt_bind_vma() argument
1913 struct drm_device *dev = vma->vm->dev; in ggtt_bind_vma()
1915 struct drm_i915_gem_object *obj = vma->obj; in ggtt_bind_vma()
1922 if (i915_is_ggtt(vma->vm)) in ggtt_bind_vma()
1923 pages = vma->ggtt_view.pages; in ggtt_bind_vma()
1937 if (!(vma->bound & GLOBAL_BIND) || in ggtt_bind_vma()
1939 vma->vm->insert_entries(vma->vm, pages, in ggtt_bind_vma()
1940 vma->node.start, in ggtt_bind_vma()
1942 vma->bound |= GLOBAL_BIND; in ggtt_bind_vma()
1947 (!(vma->bound & LOCAL_BIND) || in ggtt_bind_vma()
1951 vma->node.start, in ggtt_bind_vma()
1953 vma->bound |= LOCAL_BIND; in ggtt_bind_vma()
1957 static void ggtt_unbind_vma(struct i915_vma *vma) in ggtt_unbind_vma() argument
1959 struct drm_device *dev = vma->vm->dev; in ggtt_unbind_vma()
1961 struct drm_i915_gem_object *obj = vma->obj; in ggtt_unbind_vma()
1963 if (vma->bound & GLOBAL_BIND) { in ggtt_unbind_vma()
1964 vma->vm->clear_range(vma->vm, in ggtt_unbind_vma()
1965 vma->node.start, in ggtt_unbind_vma()
1968 vma->bound &= ~GLOBAL_BIND; in ggtt_unbind_vma()
1971 if (vma->bound & LOCAL_BIND) { in ggtt_unbind_vma()
1974 vma->node.start, in ggtt_unbind_vma()
1977 vma->bound &= ~LOCAL_BIND; in ggtt_unbind_vma()
2054 struct i915_vma *vma = i915_gem_obj_to_vma(obj, ggtt_vm); in i915_gem_setup_global_gtt() local
2060 ret = drm_mm_reserve_node(&ggtt_vm->mm, &vma->node); in i915_gem_setup_global_gtt()
2065 vma->bound |= GLOBAL_BIND; in i915_gem_setup_global_gtt()
2531 struct i915_vma *vma; in __i915_gem_vma_create() local
2535 vma = kzalloc(sizeof(*vma), GFP_KERNEL); in __i915_gem_vma_create()
2536 if (vma == NULL) in __i915_gem_vma_create()
2539 INIT_LIST_HEAD(&vma->vma_link); in __i915_gem_vma_create()
2540 INIT_LIST_HEAD(&vma->mm_list); in __i915_gem_vma_create()
2541 INIT_LIST_HEAD(&vma->exec_list); in __i915_gem_vma_create()
2542 vma->vm = vm; in __i915_gem_vma_create()
2543 vma->obj = obj; in __i915_gem_vma_create()
2547 vma->ggtt_view = *ggtt_view; in __i915_gem_vma_create()
2549 vma->unbind_vma = ggtt_unbind_vma; in __i915_gem_vma_create()
2550 vma->bind_vma = ggtt_bind_vma; in __i915_gem_vma_create()
2552 vma->unbind_vma = ppgtt_unbind_vma; in __i915_gem_vma_create()
2553 vma->bind_vma = ppgtt_bind_vma; in __i915_gem_vma_create()
2557 vma->ggtt_view = *ggtt_view; in __i915_gem_vma_create()
2558 vma->unbind_vma = i915_ggtt_unbind_vma; in __i915_gem_vma_create()
2559 vma->bind_vma = i915_ggtt_bind_vma; in __i915_gem_vma_create()
2562 list_add_tail(&vma->vma_link, &obj->vma_list); in __i915_gem_vma_create()
2566 return vma; in __i915_gem_vma_create()
2573 struct i915_vma *vma; in i915_gem_obj_lookup_or_create_vma() local
2575 vma = i915_gem_obj_to_vma(obj, vm); in i915_gem_obj_lookup_or_create_vma()
2576 if (!vma) in i915_gem_obj_lookup_or_create_vma()
2577 vma = __i915_gem_vma_create(obj, vm, in i915_gem_obj_lookup_or_create_vma()
2580 return vma; in i915_gem_obj_lookup_or_create_vma()
2588 struct i915_vma *vma; in i915_gem_obj_lookup_or_create_ggtt_vma() local
2593 vma = i915_gem_obj_to_ggtt_view(obj, view); in i915_gem_obj_lookup_or_create_ggtt_vma()
2595 if (IS_ERR(vma)) in i915_gem_obj_lookup_or_create_ggtt_vma()
2596 return vma; in i915_gem_obj_lookup_or_create_ggtt_vma()
2598 if (!vma) in i915_gem_obj_lookup_or_create_ggtt_vma()
2599 vma = __i915_gem_vma_create(obj, ggtt, view); in i915_gem_obj_lookup_or_create_ggtt_vma()
2601 return vma; in i915_gem_obj_lookup_or_create_ggtt_vma()
2706 i915_get_ggtt_vma_pages(struct i915_vma *vma) in i915_get_ggtt_vma_pages() argument
2710 if (vma->ggtt_view.pages) in i915_get_ggtt_vma_pages()
2713 if (vma->ggtt_view.type == I915_GGTT_VIEW_NORMAL) in i915_get_ggtt_vma_pages()
2714 vma->ggtt_view.pages = vma->obj->pages; in i915_get_ggtt_vma_pages()
2715 else if (vma->ggtt_view.type == I915_GGTT_VIEW_ROTATED) in i915_get_ggtt_vma_pages()
2716 vma->ggtt_view.pages = in i915_get_ggtt_vma_pages()
2717 intel_rotate_fb_obj_pages(&vma->ggtt_view, vma->obj); in i915_get_ggtt_vma_pages()
2720 vma->ggtt_view.type); in i915_get_ggtt_vma_pages()
2722 if (!vma->ggtt_view.pages) { in i915_get_ggtt_vma_pages()
2724 vma->ggtt_view.type); in i915_get_ggtt_vma_pages()
2726 } else if (IS_ERR(vma->ggtt_view.pages)) { in i915_get_ggtt_vma_pages()
2727 ret = PTR_ERR(vma->ggtt_view.pages); in i915_get_ggtt_vma_pages()
2728 vma->ggtt_view.pages = NULL; in i915_get_ggtt_vma_pages()
2730 vma->ggtt_view.type, ret); in i915_get_ggtt_vma_pages()
2746 int i915_vma_bind(struct i915_vma *vma, enum i915_cache_level cache_level, in i915_vma_bind() argument
2749 if (i915_is_ggtt(vma->vm)) { in i915_vma_bind()
2750 int ret = i915_get_ggtt_vma_pages(vma); in i915_vma_bind()
2756 vma->bind_vma(vma, cache_level, flags); in i915_vma_bind()