Lines Matching refs:vma

50 static inline bool i915_vma_is_active(const struct i915_vma *vma)
52 return !i915_active_is_idle(&vma->active);
55 int __must_check __i915_vma_move_to_active(struct i915_vma *vma,
57 int __must_check i915_vma_move_to_active(struct i915_vma *vma,
63 static inline bool i915_vma_is_ggtt(const struct i915_vma *vma)
65 return test_bit(I915_VMA_GGTT_BIT, __i915_vma_flags(vma));
68 static inline bool i915_vma_has_ggtt_write(const struct i915_vma *vma)
70 return test_bit(I915_VMA_GGTT_WRITE_BIT, __i915_vma_flags(vma));
73 static inline void i915_vma_set_ggtt_write(struct i915_vma *vma)
75 GEM_BUG_ON(!i915_vma_is_ggtt(vma));
76 set_bit(I915_VMA_GGTT_WRITE_BIT, __i915_vma_flags(vma));
79 static inline bool i915_vma_unset_ggtt_write(struct i915_vma *vma)
82 __i915_vma_flags(vma));
85 void i915_vma_flush_writes(struct i915_vma *vma);
87 static inline bool i915_vma_is_map_and_fenceable(const struct i915_vma *vma)
89 return test_bit(I915_VMA_CAN_FENCE_BIT, __i915_vma_flags(vma));
92 static inline bool i915_vma_set_userfault(struct i915_vma *vma)
94 GEM_BUG_ON(!i915_vma_is_map_and_fenceable(vma));
95 return test_and_set_bit(I915_VMA_USERFAULT_BIT, __i915_vma_flags(vma));
98 static inline void i915_vma_unset_userfault(struct i915_vma *vma)
100 return clear_bit(I915_VMA_USERFAULT_BIT, __i915_vma_flags(vma));
103 static inline bool i915_vma_has_userfault(const struct i915_vma *vma)
105 return test_bit(I915_VMA_USERFAULT_BIT, __i915_vma_flags(vma));
108 static inline bool i915_vma_is_closed(const struct i915_vma *vma)
110 return !list_empty(&vma->closed_link);
113 static inline u32 i915_ggtt_offset(const struct i915_vma *vma)
115 GEM_BUG_ON(!i915_vma_is_ggtt(vma));
116 GEM_BUG_ON(!drm_mm_node_allocated(&vma->node));
117 GEM_BUG_ON(upper_32_bits(vma->node.start));
118 GEM_BUG_ON(upper_32_bits(vma->node.start + vma->node.size - 1));
119 return lower_32_bits(vma->node.start);
122 static inline u32 i915_ggtt_pin_bias(struct i915_vma *vma)
124 return i915_vm_to_ggtt(vma->vm)->pin_bias;
127 static inline struct i915_vma *i915_vma_get(struct i915_vma *vma)
129 i915_gem_object_get(vma->obj);
130 return vma;
133 static inline struct i915_vma *i915_vma_tryget(struct i915_vma *vma)
135 if (likely(kref_get_unless_zero(&vma->obj->base.refcount)))
136 return vma;
141 static inline void i915_vma_put(struct i915_vma *vma)
143 i915_gem_object_put(vma->obj);
152 i915_vma_compare(struct i915_vma *vma,
160 cmp = ptrdiff(vma->vm, vm);
165 cmp = vma->ggtt_view.type;
192 return memcmp(&vma->ggtt_view.partial, &view->partial, view->type);
196 int i915_vma_bind(struct i915_vma *vma,
201 bool i915_gem_valid_gtt_space(struct i915_vma *vma, unsigned long color);
202 bool i915_vma_misplaced(const struct i915_vma *vma,
204 void __i915_vma_set_map_and_fenceable(struct i915_vma *vma);
205 void i915_vma_revoke_mmap(struct i915_vma *vma);
206 void __i915_vma_evict(struct i915_vma *vma);
207 int __i915_vma_unbind(struct i915_vma *vma);
208 int __must_check i915_vma_unbind(struct i915_vma *vma);
209 void i915_vma_unlink_ctx(struct i915_vma *vma);
210 void i915_vma_close(struct i915_vma *vma);
211 void i915_vma_reopen(struct i915_vma *vma);
213 static inline struct i915_vma *__i915_vma_get(struct i915_vma *vma)
215 if (kref_get_unless_zero(&vma->ref))
216 return vma;
222 static inline void __i915_vma_put(struct i915_vma *vma)
224 kref_put(&vma->ref, i915_vma_release);
227 #define assert_vma_held(vma) dma_resv_assert_held((vma)->resv)
229 static inline void i915_vma_lock(struct i915_vma *vma)
231 dma_resv_lock(vma->resv, NULL);
234 static inline void i915_vma_unlock(struct i915_vma *vma)
236 dma_resv_unlock(vma->resv);
240 i915_vma_pin_ww(struct i915_vma *vma, struct i915_gem_ww_ctx *ww,
244 i915_vma_pin(struct i915_vma *vma, u64 size, u64 alignment, u64 flags)
246 return i915_vma_pin_ww(vma, NULL, size, alignment, flags);
249 int i915_ggtt_pin(struct i915_vma *vma, struct i915_gem_ww_ctx *ww,
252 static inline int i915_vma_pin_count(const struct i915_vma *vma)
254 return atomic_read(&vma->flags) & I915_VMA_PIN_MASK;
257 static inline bool i915_vma_is_pinned(const struct i915_vma *vma)
259 return i915_vma_pin_count(vma);
262 static inline void __i915_vma_pin(struct i915_vma *vma)
264 atomic_inc(&vma->flags);
265 GEM_BUG_ON(!i915_vma_is_pinned(vma));
268 static inline void __i915_vma_unpin(struct i915_vma *vma)
270 GEM_BUG_ON(!i915_vma_is_pinned(vma));
271 atomic_dec(&vma->flags);
274 static inline void i915_vma_unpin(struct i915_vma *vma)
276 GEM_BUG_ON(!drm_mm_node_allocated(&vma->node));
277 __i915_vma_unpin(vma);
280 static inline bool i915_vma_is_bound(const struct i915_vma *vma,
283 return atomic_read(&vma->flags) & where;
294 * @vma: VMA to iomap
303 void __iomem *i915_vma_pin_iomap(struct i915_vma *vma);
308 * @vma: VMA to unpin
315 void i915_vma_unpin_iomap(struct i915_vma *vma);
317 static inline struct page *i915_vma_first_page(struct i915_vma *vma)
319 GEM_BUG_ON(!vma->pages);
320 return sg_page(vma->pages->sgl);
325 * @vma: vma to pin fencing for
328 * vma (and its object) is ready to be used as a scanout target. Fencing
336 * True if the vma has a fence, false otherwise.
338 int __must_check i915_vma_pin_fence(struct i915_vma *vma);
339 void i915_vma_revoke_fence(struct i915_vma *vma);
341 int __i915_vma_pin_fence(struct i915_vma *vma);
343 static inline void __i915_vma_unpin_fence(struct i915_vma *vma)
345 GEM_BUG_ON(atomic_read(&vma->fence->pin_count) <= 0);
346 atomic_dec(&vma->fence->pin_count);
351 * @vma: vma to unpin fencing for
358 i915_vma_unpin_fence(struct i915_vma *vma)
360 if (vma->fence)
361 __i915_vma_unpin_fence(vma);
378 list_for_each_entry(V, &(OBJ)->vma.list, obj_link) \
382 void i915_vma_free(struct i915_vma *vma);
384 struct i915_vma *i915_vma_make_unshrinkable(struct i915_vma *vma);
385 void i915_vma_make_shrinkable(struct i915_vma *vma);
386 void i915_vma_make_purgeable(struct i915_vma *vma);
388 int i915_vma_wait_for_bind(struct i915_vma *vma);
390 static inline int i915_vma_sync(struct i915_vma *vma)
393 return i915_active_wait(&vma->active);