Lines Matching refs:mmo

252 	struct i915_mmap_offset *mmo = area->vm_private_data;  in vm_fault_cpu()  local
253 struct drm_i915_gem_object *obj = mmo->obj; in vm_fault_cpu()
296 struct i915_mmap_offset *mmo = area->vm_private_data; in vm_fault_gtt() local
297 struct drm_i915_gem_object *obj = mmo->obj; in vm_fault_gtt()
413 vma->mmo = mmo; in vm_fault_gtt()
448 struct i915_mmap_offset *mmo = area->vm_private_data; in vm_access() local
449 struct drm_i915_gem_object *obj = mmo->obj; in vm_access()
571 struct i915_mmap_offset *mmo, *mn; in i915_gem_object_release_mmap_offset() local
576 spin_lock(&obj->mmo.lock); in i915_gem_object_release_mmap_offset()
577 rbtree_postorder_for_each_entry_safe(mmo, mn, in i915_gem_object_release_mmap_offset()
578 &obj->mmo.offsets, offset) { in i915_gem_object_release_mmap_offset()
583 if (mmo->mmap_type == I915_MMAP_TYPE_GTT) in i915_gem_object_release_mmap_offset()
586 spin_unlock(&obj->mmo.lock); in i915_gem_object_release_mmap_offset()
587 drm_vma_node_unmap(&mmo->vma_node, in i915_gem_object_release_mmap_offset()
589 spin_lock(&obj->mmo.lock); in i915_gem_object_release_mmap_offset()
591 spin_unlock(&obj->mmo.lock); in i915_gem_object_release_mmap_offset()
600 spin_lock(&obj->mmo.lock); in lookup_mmo()
601 rb = obj->mmo.offsets.rb_node; in lookup_mmo()
603 struct i915_mmap_offset *mmo = in lookup_mmo() local
604 rb_entry(rb, typeof(*mmo), offset); in lookup_mmo()
606 if (mmo->mmap_type == mmap_type) { in lookup_mmo()
607 spin_unlock(&obj->mmo.lock); in lookup_mmo()
608 return mmo; in lookup_mmo()
611 if (mmo->mmap_type < mmap_type) in lookup_mmo()
616 spin_unlock(&obj->mmo.lock); in lookup_mmo()
622 insert_mmo(struct drm_i915_gem_object *obj, struct i915_mmap_offset *mmo) in insert_mmo() argument
626 spin_lock(&obj->mmo.lock); in insert_mmo()
628 p = &obj->mmo.offsets.rb_node; in insert_mmo()
635 if (pos->mmap_type == mmo->mmap_type) { in insert_mmo()
636 spin_unlock(&obj->mmo.lock); in insert_mmo()
638 &mmo->vma_node); in insert_mmo()
639 kfree(mmo); in insert_mmo()
643 if (pos->mmap_type < mmo->mmap_type) in insert_mmo()
648 rb_link_node(&mmo->offset, rb, p); in insert_mmo()
649 rb_insert_color(&mmo->offset, &obj->mmo.offsets); in insert_mmo()
650 spin_unlock(&obj->mmo.lock); in insert_mmo()
652 return mmo; in insert_mmo()
661 struct i915_mmap_offset *mmo; in mmap_offset_attach() local
666 mmo = lookup_mmo(obj, mmap_type); in mmap_offset_attach()
667 if (mmo) in mmap_offset_attach()
670 mmo = kmalloc(sizeof(*mmo), GFP_KERNEL); in mmap_offset_attach()
671 if (!mmo) in mmap_offset_attach()
674 mmo->obj = obj; in mmap_offset_attach()
675 mmo->mmap_type = mmap_type; in mmap_offset_attach()
676 drm_vma_node_reset(&mmo->vma_node); in mmap_offset_attach()
679 &mmo->vma_node, obj->base.size / PAGE_SIZE); in mmap_offset_attach()
691 &mmo->vma_node, obj->base.size / PAGE_SIZE); in mmap_offset_attach()
696 mmo = insert_mmo(obj, mmo); in mmap_offset_attach()
697 GEM_BUG_ON(lookup_mmo(obj, mmap_type) != mmo); in mmap_offset_attach()
700 drm_vma_node_allow_once(&mmo->vma_node, file); in mmap_offset_attach()
701 return mmo; in mmap_offset_attach()
704 kfree(mmo); in mmap_offset_attach()
713 struct i915_mmap_offset *mmo; in __assign_mmap_offset() local
734 mmo = mmap_offset_attach(obj, mmap_type, file); in __assign_mmap_offset()
735 if (IS_ERR(mmo)) in __assign_mmap_offset()
736 return PTR_ERR(mmo); in __assign_mmap_offset()
738 *offset = drm_vma_node_offset_addr(&mmo->vma_node); in __assign_mmap_offset()
860 struct i915_mmap_offset *mmo = vma->vm_private_data; in vm_open() local
861 struct drm_i915_gem_object *obj = mmo->obj; in vm_open()
869 struct i915_mmap_offset *mmo = vma->vm_private_data; in vm_close() local
870 struct drm_i915_gem_object *obj = mmo->obj; in vm_close()
942 struct i915_mmap_offset *mmo = NULL; in i915_gem_mmap() local
960 mmo = container_of(node, struct i915_mmap_offset, vma_node); in i915_gem_mmap()
961 obj = i915_gem_object_get_rcu(mmo->obj); in i915_gem_mmap()
1012 vma->vm_private_data = mmo; in i915_gem_mmap()
1014 switch (mmo->mmap_type) { in i915_gem_mmap()