Lines Matching refs:mm

36 	struct mm_struct *mm;
79 was_interruptible = dev_priv->mm.interruptible;
80 dev_priv->mm.interruptible = false;
88 dev_priv->mm.interruptible = was_interruptible;
100 struct mm_struct *mm,
130 struct mm_struct *mm,
145 it = invalidate_range__linear(mn, mm, start, end);
168 i915_mmu_notifier_create(struct mm_struct *mm)
185 ret = __mmu_notifier_register(&mn->mn, mm);
294 i915_mmu_notifier_find(struct i915_mm_struct *mm)
296 struct i915_mmu_notifier *mn = mm->mn;
298 mn = mm->mn;
302 down_write(&mm->mm->mmap_sem);
303 mutex_lock(&to_i915(mm->dev)->mm_lock);
304 if ((mn = mm->mn) == NULL) {
305 mn = i915_mmu_notifier_create(mm->mm);
307 mm->mn = mn;
309 mutex_unlock(&to_i915(mm->dev)->mm_lock);
310 up_write(&mm->mm->mmap_sem);
326 if (WARN_ON(obj->userptr.mm == NULL))
329 mn = i915_mmu_notifier_find(obj->userptr.mm);
354 struct mm_struct *mm)
359 mmu_notifier_unregister(&mn->mn, mm);
385 struct mm_struct *mm)
394 struct i915_mm_struct *mm;
397 hash_for_each_possible(dev_priv->mm_structs, mm, node, (unsigned long)real)
398 if (mm->mm == real)
399 return mm;
408 struct i915_mm_struct *mm;
417 * to defer releasing the mm reference until after we drop the
422 mm = __i915_mm_struct_find(dev_priv, current->mm);
423 if (mm == NULL) {
424 mm = kmalloc(sizeof(*mm), GFP_KERNEL);
425 if (mm == NULL) {
430 kref_init(&mm->kref);
431 mm->dev = obj->base.dev;
433 mm->mm = current->mm;
434 atomic_inc(&current->mm->mm_count);
436 mm->mn = NULL;
440 &mm->node, (unsigned long)mm->mm);
442 kref_get(&mm->kref);
444 obj->userptr.mm = mm;
453 struct i915_mm_struct *mm = container_of(work, typeof(*mm), work);
454 i915_mmu_notifier_free(mm->mn, mm->mm);
455 mmdrop(mm->mm);
456 kfree(mm);
462 struct i915_mm_struct *mm = container_of(kref, typeof(*mm), kref);
465 hash_del(&mm->node);
466 mutex_unlock(&to_i915(mm->dev)->mm_lock);
468 INIT_WORK(&mm->work, __i915_mm_struct_free__worker);
469 schedule_work(&mm->work);
475 if (obj->userptr.mm == NULL)
478 kref_put_mutex(&obj->userptr.mm->kref,
481 obj->userptr.mm = NULL;
547 struct mm_struct *mm = obj->userptr.mm->mm;
549 down_read(&mm->mmap_sem);
551 ret = get_user_pages(work->task, mm,
561 up_read(&mm->mmap_sem);
570 list_add_tail(&obj->global_list, &to_i915(dev)->mm.unbound_list);
613 if (obj->userptr.mm->mm == current->mm) {
738 * Creates a new mm object that wraps some normal memory from the process
812 /* And keep a pointer to the current->mm for resolving the user pages