Lines Matching refs:vm
61 #define ggtt_total_entries(ggtt) ((ggtt)->vm.total >> PAGE_SHIFT)
198 void (*bind_vma)(struct i915_address_space *vm,
207 void (*unbind_vma)(struct i915_address_space *vm,
264 (*alloc_pt_dma)(struct i915_address_space *vm, int sz);
272 void (*allocate_va_range)(struct i915_address_space *vm,
275 void (*clear_range)(struct i915_address_space *vm,
277 void (*insert_page)(struct i915_address_space *vm,
282 void (*insert_entries)(struct i915_address_space *vm,
286 void (*cleanup)(struct i915_address_space *vm);
288 void (*foreach)(struct i915_address_space *vm,
290 void (*fn)(struct i915_address_space *vm,
310 struct i915_address_space vm; member
353 struct i915_address_space vm; member
358 #define i915_is_ggtt(vm) ((vm)->is_ggtt) argument
359 #define i915_is_dpt(vm) ((vm)->is_dpt) argument
360 #define i915_is_ggtt_or_dpt(vm) (i915_is_ggtt(vm) || i915_is_dpt(vm)) argument
363 i915_vm_lock_objects(struct i915_address_space *vm, struct i915_gem_ww_ctx *ww);
366 i915_vm_is_4lvl(const struct i915_address_space *vm) in i915_vm_is_4lvl() argument
368 return (vm->total - 1) >> 32; in i915_vm_is_4lvl()
372 i915_vm_has_scratch_64K(struct i915_address_space *vm) in i915_vm_has_scratch_64K() argument
374 return vm->scratch_order == get_order(I915_GTT_PAGE_SIZE_64K); in i915_vm_has_scratch_64K()
378 i915_vm_has_cache_coloring(struct i915_address_space *vm) in i915_vm_has_cache_coloring() argument
380 return i915_is_ggtt(vm) && vm->mm.color_adjust; in i915_vm_has_cache_coloring()
384 i915_vm_to_ggtt(struct i915_address_space *vm) in i915_vm_to_ggtt() argument
386 BUILD_BUG_ON(offsetof(struct i915_ggtt, vm)); in i915_vm_to_ggtt()
387 GEM_BUG_ON(!i915_is_ggtt(vm)); in i915_vm_to_ggtt()
388 return container_of(vm, struct i915_ggtt, vm); in i915_vm_to_ggtt()
392 i915_vm_to_ppgtt(struct i915_address_space *vm) in i915_vm_to_ppgtt() argument
394 BUILD_BUG_ON(offsetof(struct i915_ppgtt, vm)); in i915_vm_to_ppgtt()
395 GEM_BUG_ON(i915_is_ggtt_or_dpt(vm)); in i915_vm_to_ppgtt()
396 return container_of(vm, struct i915_ppgtt, vm); in i915_vm_to_ppgtt()
400 i915_vm_get(struct i915_address_space *vm) in i915_vm_get() argument
402 kref_get(&vm->ref); in i915_vm_get()
403 return vm; in i915_vm_get()
412 static inline struct dma_resv *i915_vm_resv_get(struct i915_address_space *vm) in i915_vm_resv_get() argument
414 kref_get(&vm->resv_ref); in i915_vm_resv_get()
415 return &vm->_resv; in i915_vm_resv_get()
422 static inline void i915_vm_put(struct i915_address_space *vm) in i915_vm_put() argument
424 kref_put(&vm->ref, i915_vm_release); in i915_vm_put()
431 static inline void i915_vm_resv_put(struct i915_address_space *vm) in i915_vm_resv_put() argument
433 kref_put(&vm->resv_ref, i915_vm_resv_release); in i915_vm_resv_put()
437 i915_vm_open(struct i915_address_space *vm) in i915_vm_open() argument
439 GEM_BUG_ON(!atomic_read(&vm->open)); in i915_vm_open()
440 atomic_inc(&vm->open); in i915_vm_open()
441 return i915_vm_get(vm); in i915_vm_open()
445 i915_vm_tryopen(struct i915_address_space *vm) in i915_vm_tryopen() argument
447 if (atomic_add_unless(&vm->open, 1, 0)) in i915_vm_tryopen()
448 return i915_vm_get(vm); in i915_vm_tryopen()
453 void __i915_vm_close(struct i915_address_space *vm);
456 i915_vm_close(struct i915_address_space *vm) in i915_vm_close() argument
458 GEM_BUG_ON(!atomic_read(&vm->open)); in i915_vm_close()
459 __i915_vm_close(vm); in i915_vm_close()
461 i915_vm_put(vm); in i915_vm_close()
464 void i915_address_space_init(struct i915_address_space *vm, int subclass);
465 void i915_address_space_fini(struct i915_address_space *vm);
519 return __px_dma(pt ? px_base(pt) : ppgtt->vm.scratch[ppgtt->vm.top]); in i915_page_dir_dma_addr()
554 int setup_scratch_page(struct i915_address_space *vm);
555 void free_scratch(struct i915_address_space *vm);
557 struct drm_i915_gem_object *alloc_pt_dma(struct i915_address_space *vm, int sz);
558 struct drm_i915_gem_object *alloc_pt_lmem(struct i915_address_space *vm, int sz);
559 struct i915_page_table *alloc_pt(struct i915_address_space *vm);
560 struct i915_page_directory *alloc_pd(struct i915_address_space *vm);
563 int map_pt_dma(struct i915_address_space *vm, struct drm_i915_gem_object *obj);
564 int map_pt_dma_locked(struct i915_address_space *vm, struct drm_i915_gem_object *obj);
566 void free_px(struct i915_address_space *vm,
568 #define free_pt(vm, px) free_px(vm, px, 0) argument
569 #define free_pd(vm, px) free_px(vm, px_pt(px), 1) argument
596 void ppgtt_bind_vma(struct i915_address_space *vm,
601 void ppgtt_unbind_vma(struct i915_address_space *vm,
608 int i915_vm_alloc_pt_stash(struct i915_address_space *vm,
611 int i915_vm_map_pt_stash(struct i915_address_space *vm,
613 void i915_vm_free_pt_stash(struct i915_address_space *vm,
617 __vm_create_scratch_for_read(struct i915_address_space *vm, unsigned long size);
620 __vm_create_scratch_for_read_pinned(struct i915_address_space *vm, unsigned long size);