Lines Matching defs:vm
64 #define ggtt_total_entries(ggtt) ((ggtt)->vm.total >> PAGE_SHIFT)
233 void (*bind_vma)(struct i915_address_space *vm,
242 void (*unbind_vma)(struct i915_address_space *vm,
301 /* Flags used when creating page-table objects for this vm */
308 (*alloc_pt_dma)(struct i915_address_space *vm, int sz);
310 (*alloc_scratch_dma)(struct i915_address_space *vm, int sz);
319 void (*allocate_va_range)(struct i915_address_space *vm,
322 void (*clear_range)(struct i915_address_space *vm,
324 void (*scratch_range)(struct i915_address_space *vm,
326 void (*insert_page)(struct i915_address_space *vm,
331 void (*insert_entries)(struct i915_address_space *vm,
335 void (*raw_insert_page)(struct i915_address_space *vm,
340 void (*raw_insert_entries)(struct i915_address_space *vm,
344 dma_addr_t (*read_entry)(struct i915_address_space *vm,
346 void (*cleanup)(struct i915_address_space *vm);
348 void (*foreach)(struct i915_address_space *vm,
350 void (*fn)(struct i915_address_space *vm,
370 struct i915_address_space vm;
413 struct i915_address_space vm;
418 #define i915_is_ggtt(vm) ((vm)->is_ggtt)
419 #define i915_is_dpt(vm) ((vm)->is_dpt)
420 #define i915_is_ggtt_or_dpt(vm) (i915_is_ggtt(vm) || i915_is_dpt(vm))
425 i915_vm_lock_objects(struct i915_address_space *vm, struct i915_gem_ww_ctx *ww);
428 i915_vm_is_4lvl(const struct i915_address_space *vm)
430 return (vm->total - 1) >> 32;
434 i915_vm_has_scratch_64K(struct i915_address_space *vm)
436 return vm->scratch_order == get_order(I915_GTT_PAGE_SIZE_64K);
439 static inline u64 i915_vm_min_alignment(struct i915_address_space *vm,
443 if ((int)type >= ARRAY_SIZE(vm->min_alignment))
446 return vm->min_alignment[type];
449 static inline u64 i915_vm_obj_min_alignment(struct i915_address_space *vm,
455 return i915_vm_min_alignment(vm, type);
459 i915_vm_has_cache_coloring(struct i915_address_space *vm)
461 return i915_is_ggtt(vm) && vm->mm.color_adjust;
465 i915_vm_to_ggtt(struct i915_address_space *vm)
467 BUILD_BUG_ON(offsetof(struct i915_ggtt, vm));
468 GEM_BUG_ON(!i915_is_ggtt(vm));
469 return container_of(vm, struct i915_ggtt, vm);
473 i915_vm_to_ppgtt(struct i915_address_space *vm)
475 BUILD_BUG_ON(offsetof(struct i915_ppgtt, vm));
476 GEM_BUG_ON(i915_is_ggtt_or_dpt(vm));
477 return container_of(vm, struct i915_ppgtt, vm);
481 i915_vm_get(struct i915_address_space *vm)
483 kref_get(&vm->ref);
484 return vm;
488 i915_vm_tryget(struct i915_address_space *vm)
490 return kref_get_unless_zero(&vm->ref) ? vm : NULL;
493 static inline void assert_vm_alive(struct i915_address_space *vm)
495 GEM_BUG_ON(!kref_read(&vm->ref));
499 * i915_vm_resv_get - Obtain a reference on the vm's reservation lock
500 * @vm: The vm whose reservation lock we want to share.
502 * Return: A pointer to the vm's reservation lock.
504 static inline struct dma_resv *i915_vm_resv_get(struct i915_address_space *vm)
506 kref_get(&vm->resv_ref);
507 return &vm->_resv;
514 static inline void i915_vm_put(struct i915_address_space *vm)
516 kref_put(&vm->ref, i915_vm_release);
520 * i915_vm_resv_put - Release a reference on the vm's reservation lock
521 * @vm: The vm whose reservation lock reference we want to release
523 static inline void i915_vm_resv_put(struct i915_address_space *vm)
525 kref_put(&vm->resv_ref, i915_vm_resv_release);
528 void i915_address_space_init(struct i915_address_space *vm, int subclass);
529 void i915_address_space_fini(struct i915_address_space *vm);
583 return __px_dma(pt ? px_base(pt) : ppgtt->vm.scratch[ppgtt->vm.top]);
588 void intel_ggtt_bind_vma(struct i915_address_space *vm,
593 void intel_ggtt_unbind_vma(struct i915_address_space *vm,
596 dma_addr_t intel_ggtt_read_entry(struct i915_address_space *vm,
617 void i915_ggtt_suspend_vm(struct i915_address_space *vm, bool evict_all);
618 bool i915_ggtt_resume_vm(struct i915_address_space *vm, bool all_evicted);
631 int setup_scratch_page(struct i915_address_space *vm);
632 void free_scratch(struct i915_address_space *vm);
634 struct drm_i915_gem_object *alloc_pt_dma(struct i915_address_space *vm, int sz);
635 struct drm_i915_gem_object *alloc_pt_lmem(struct i915_address_space *vm, int sz);
636 struct i915_page_table *alloc_pt(struct i915_address_space *vm, int sz);
637 struct i915_page_directory *alloc_pd(struct i915_address_space *vm);
640 int map_pt_dma(struct i915_address_space *vm, struct drm_i915_gem_object *obj);
641 int map_pt_dma_locked(struct i915_address_space *vm, struct drm_i915_gem_object *obj);
643 void free_px(struct i915_address_space *vm,
645 #define free_pt(vm, px) free_px(vm, px, 0)
646 #define free_pd(vm, px) free_px(vm, px_pt(px), 1)
669 void ppgtt_bind_vma(struct i915_address_space *vm,
674 void ppgtt_unbind_vma(struct i915_address_space *vm,
681 int i915_vm_alloc_pt_stash(struct i915_address_space *vm,
684 int i915_vm_map_pt_stash(struct i915_address_space *vm,
686 void i915_vm_free_pt_stash(struct i915_address_space *vm,
690 __vm_create_scratch_for_read(struct i915_address_space *vm, unsigned long size);
693 __vm_create_scratch_for_read_pinned(struct i915_address_space *vm, unsigned long size);