Lines Matching refs:mm
36 struct mm_struct *mm; member
79 was_interruptible = dev_priv->mm.interruptible; in cancel_userptr()
80 dev_priv->mm.interruptible = false; in cancel_userptr()
88 dev_priv->mm.interruptible = was_interruptible; in cancel_userptr()
100 struct mm_struct *mm, in invalidate_range__linear() argument
133 struct mm_struct *mm, in i915_gem_userptr_mn_invalidate_range_start() argument
148 it = invalidate_range__linear(mn, mm, start, end); in i915_gem_userptr_mn_invalidate_range_start()
184 i915_mmu_notifier_create(struct mm_struct *mm) in i915_mmu_notifier_create() argument
201 ret = __mmu_notifier_register(&mn->mn, mm); in i915_mmu_notifier_create()
310 i915_mmu_notifier_find(struct i915_mm_struct *mm) in i915_mmu_notifier_find() argument
312 struct i915_mmu_notifier *mn = mm->mn; in i915_mmu_notifier_find()
314 mn = mm->mn; in i915_mmu_notifier_find()
318 down_write(&mm->mm->mmap_sem); in i915_mmu_notifier_find()
319 mutex_lock(&to_i915(mm->dev)->mm_lock); in i915_mmu_notifier_find()
320 if ((mn = mm->mn) == NULL) { in i915_mmu_notifier_find()
321 mn = i915_mmu_notifier_create(mm->mm); in i915_mmu_notifier_find()
323 mm->mn = mn; in i915_mmu_notifier_find()
325 mutex_unlock(&to_i915(mm->dev)->mm_lock); in i915_mmu_notifier_find()
326 up_write(&mm->mm->mmap_sem); in i915_mmu_notifier_find()
342 if (WARN_ON(obj->userptr.mm == NULL)) in i915_gem_userptr_init__mmu_notifier()
345 mn = i915_mmu_notifier_find(obj->userptr.mm); in i915_gem_userptr_init__mmu_notifier()
370 struct mm_struct *mm) in i915_mmu_notifier_free() argument
375 mmu_notifier_unregister(&mn->mn, mm); in i915_mmu_notifier_free()
401 struct mm_struct *mm) in i915_mmu_notifier_free() argument
410 struct i915_mm_struct *mm; in __i915_mm_struct_find() local
413 hash_for_each_possible(dev_priv->mm_structs, mm, node, (unsigned long)real) in __i915_mm_struct_find()
414 if (mm->mm == real) in __i915_mm_struct_find()
415 return mm; in __i915_mm_struct_find()
424 struct i915_mm_struct *mm; in i915_gem_userptr_init__mm_struct() local
438 mm = __i915_mm_struct_find(dev_priv, current->mm); in i915_gem_userptr_init__mm_struct()
439 if (mm == NULL) { in i915_gem_userptr_init__mm_struct()
440 mm = kmalloc(sizeof(*mm), GFP_KERNEL); in i915_gem_userptr_init__mm_struct()
441 if (mm == NULL) { in i915_gem_userptr_init__mm_struct()
446 kref_init(&mm->kref); in i915_gem_userptr_init__mm_struct()
447 mm->dev = obj->base.dev; in i915_gem_userptr_init__mm_struct()
449 mm->mm = current->mm; in i915_gem_userptr_init__mm_struct()
450 atomic_inc(¤t->mm->mm_count); in i915_gem_userptr_init__mm_struct()
452 mm->mn = NULL; in i915_gem_userptr_init__mm_struct()
456 &mm->node, (unsigned long)mm->mm); in i915_gem_userptr_init__mm_struct()
458 kref_get(&mm->kref); in i915_gem_userptr_init__mm_struct()
460 obj->userptr.mm = mm; in i915_gem_userptr_init__mm_struct()
469 struct i915_mm_struct *mm = container_of(work, typeof(*mm), work); in __i915_mm_struct_free__worker() local
470 i915_mmu_notifier_free(mm->mn, mm->mm); in __i915_mm_struct_free__worker()
471 mmdrop(mm->mm); in __i915_mm_struct_free__worker()
472 kfree(mm); in __i915_mm_struct_free__worker()
478 struct i915_mm_struct *mm = container_of(kref, typeof(*mm), kref); in __i915_mm_struct_free() local
481 hash_del(&mm->node); in __i915_mm_struct_free()
482 mutex_unlock(&to_i915(mm->dev)->mm_lock); in __i915_mm_struct_free()
484 INIT_WORK(&mm->work, __i915_mm_struct_free__worker); in __i915_mm_struct_free()
485 schedule_work(&mm->work); in __i915_mm_struct_free()
491 if (obj->userptr.mm == NULL) in i915_gem_userptr_release__mm_struct()
494 kref_put_mutex(&obj->userptr.mm->kref, in i915_gem_userptr_release__mm_struct()
497 obj->userptr.mm = NULL; in i915_gem_userptr_release__mm_struct()
563 struct mm_struct *mm = obj->userptr.mm->mm; in __i915_gem_userptr_get_pages_worker() local
565 down_read(&mm->mmap_sem); in __i915_gem_userptr_get_pages_worker()
567 ret = get_user_pages(work->task, mm, in __i915_gem_userptr_get_pages_worker()
577 up_read(&mm->mmap_sem); in __i915_gem_userptr_get_pages_worker()
586 list_add_tail(&obj->global_list, &to_i915(dev)->mm.unbound_list); in __i915_gem_userptr_get_pages_worker()
629 if (obj->userptr.mm->mm == current->mm) { in i915_gem_userptr_get_pages()