Lines Matching full:range
19 * @MMU_NOTIFY_UNMAP: either munmap() that unmap the range or a mremap() that
20 * move the range
25 * @MMU_NOTIFY_PROTECTION_VMA: update is due to protection change for the range
26 * ie using the vma access permission (vm_page_prot) to update the whole range
31 * pages in the range so to mirror those changes the user must inspect the CPU
40 * that the mm refcount is zero and the range is no longer accessible.
133 * the pages in the range, it has to implement the
139 * establishment of sptes is forbidden in the range passed to
144 * range are still mapped and have at least a refcount of one.
147 * range have been unmapped and the pages have been freed by
179 const struct mmu_notifier_range *range);
181 const struct mmu_notifier_range *range);
194 * external TLB range needs to be flushed. For more in depth
197 * Note that this function might be called with just a sub-range
242 * range. This function can sleep. Return false only if sleeping
243 * was required but mmu_notifier_range_blockable(range) is false.
247 const struct mmu_notifier_range *range,
335 * mmu_interval_read_retry - End a read side critical section against a VA range
398 mmu_notifier_range_update_to_read_only(const struct mmu_notifier_range *range);
401 mmu_notifier_range_blockable(const struct mmu_notifier_range *range) in mmu_notifier_range_blockable() argument
403 return (range->flags & MMU_NOTIFIER_RANGE_BLOCKABLE); in mmu_notifier_range_blockable()
446 mmu_notifier_invalidate_range_start(struct mmu_notifier_range *range) in mmu_notifier_invalidate_range_start() argument
451 if (mm_has_notifiers(range->mm)) { in mmu_notifier_invalidate_range_start()
452 range->flags |= MMU_NOTIFIER_RANGE_BLOCKABLE; in mmu_notifier_invalidate_range_start()
453 __mmu_notifier_invalidate_range_start(range); in mmu_notifier_invalidate_range_start()
459 mmu_notifier_invalidate_range_start_nonblock(struct mmu_notifier_range *range) in mmu_notifier_invalidate_range_start_nonblock() argument
464 if (mm_has_notifiers(range->mm)) { in mmu_notifier_invalidate_range_start_nonblock()
465 range->flags &= ~MMU_NOTIFIER_RANGE_BLOCKABLE; in mmu_notifier_invalidate_range_start_nonblock()
466 ret = __mmu_notifier_invalidate_range_start(range); in mmu_notifier_invalidate_range_start_nonblock()
473 mmu_notifier_invalidate_range_end(struct mmu_notifier_range *range) in mmu_notifier_invalidate_range_end() argument
475 if (mmu_notifier_range_blockable(range)) in mmu_notifier_invalidate_range_end()
478 if (mm_has_notifiers(range->mm)) in mmu_notifier_invalidate_range_end()
479 __mmu_notifier_invalidate_range_end(range, false); in mmu_notifier_invalidate_range_end()
483 mmu_notifier_invalidate_range_only_end(struct mmu_notifier_range *range) in mmu_notifier_invalidate_range_only_end() argument
485 if (mm_has_notifiers(range->mm)) in mmu_notifier_invalidate_range_only_end()
486 __mmu_notifier_invalidate_range_end(range, true); in mmu_notifier_invalidate_range_only_end()
508 static inline void mmu_notifier_range_init(struct mmu_notifier_range *range, in mmu_notifier_range_init() argument
516 range->vma = vma; in mmu_notifier_range_init()
517 range->event = event; in mmu_notifier_range_init()
518 range->mm = mm; in mmu_notifier_range_init()
519 range->start = start; in mmu_notifier_range_init()
520 range->end = end; in mmu_notifier_range_init()
521 range->flags = flags; in mmu_notifier_range_init()
525 struct mmu_notifier_range *range, unsigned int flags, in mmu_notifier_range_init_migrate() argument
529 mmu_notifier_range_init(range, MMU_NOTIFY_MIGRATE, flags, vma, mm, in mmu_notifier_range_init_migrate()
531 range->migrate_pgmap_owner = pgmap; in mmu_notifier_range_init_migrate()
648 static inline void _mmu_notifier_range_init(struct mmu_notifier_range *range, in _mmu_notifier_range_init() argument
652 range->start = start; in _mmu_notifier_range_init()
653 range->end = end; in _mmu_notifier_range_init()
656 #define mmu_notifier_range_init(range,event,flags,vma,mm,start,end) \ argument
657 _mmu_notifier_range_init(range, start, end)
658 #define mmu_notifier_range_init_migrate(range, flags, vma, mm, start, end, \ argument
660 _mmu_notifier_range_init(range, start, end)
663 mmu_notifier_range_blockable(const struct mmu_notifier_range *range) in mmu_notifier_range_blockable() argument
696 mmu_notifier_invalidate_range_start(struct mmu_notifier_range *range) in mmu_notifier_invalidate_range_start() argument
701 mmu_notifier_invalidate_range_start_nonblock(struct mmu_notifier_range *range) in mmu_notifier_invalidate_range_start_nonblock() argument
707 void mmu_notifier_invalidate_range_end(struct mmu_notifier_range *range) in mmu_notifier_invalidate_range_end() argument
712 mmu_notifier_invalidate_range_only_end(struct mmu_notifier_range *range) in mmu_notifier_invalidate_range_only_end() argument