Lines Matching refs:mm_slot

83 struct mm_slot {  struct
99 struct mm_slot *mm_slot; member
1973 sizeof(struct mm_slot), in khugepaged_slab_init()
1974 __alignof__(struct mm_slot), 0, NULL); in khugepaged_slab_init()
1986 static inline struct mm_slot *alloc_mm_slot(void) in alloc_mm_slot()
1993 static inline void free_mm_slot(struct mm_slot *mm_slot) in free_mm_slot() argument
1995 kmem_cache_free(mm_slot_cache, mm_slot); in free_mm_slot()
1998 static struct mm_slot *get_mm_slot(struct mm_struct *mm) in get_mm_slot()
2000 struct mm_slot *mm_slot; in get_mm_slot() local
2002 hash_for_each_possible(mm_slots_hash, mm_slot, hash, (unsigned long)mm) in get_mm_slot()
2003 if (mm == mm_slot->mm) in get_mm_slot()
2004 return mm_slot; in get_mm_slot()
2010 struct mm_slot *mm_slot) in insert_to_mm_slots_hash() argument
2012 mm_slot->mm = mm; in insert_to_mm_slots_hash()
2013 hash_add(mm_slots_hash, &mm_slot->hash, (long)mm); in insert_to_mm_slots_hash()
2023 struct mm_slot *mm_slot; in __khugepaged_enter() local
2026 mm_slot = alloc_mm_slot(); in __khugepaged_enter()
2027 if (!mm_slot) in __khugepaged_enter()
2033 free_mm_slot(mm_slot); in __khugepaged_enter()
2038 insert_to_mm_slots_hash(mm, mm_slot); in __khugepaged_enter()
2044 list_add_tail(&mm_slot->mm_node, &khugepaged_scan.mm_head); in __khugepaged_enter()
2076 struct mm_slot *mm_slot; in __khugepaged_exit() local
2080 mm_slot = get_mm_slot(mm); in __khugepaged_exit()
2081 if (mm_slot && khugepaged_scan.mm_slot != mm_slot) { in __khugepaged_exit()
2082 hash_del(&mm_slot->hash); in __khugepaged_exit()
2083 list_del(&mm_slot->mm_node); in __khugepaged_exit()
2090 free_mm_slot(mm_slot); in __khugepaged_exit()
2092 } else if (mm_slot) { in __khugepaged_exit()
2638 static void collect_mm_slot(struct mm_slot *mm_slot) in collect_mm_slot() argument
2640 struct mm_struct *mm = mm_slot->mm; in collect_mm_slot()
2646 hash_del(&mm_slot->hash); in collect_mm_slot()
2647 list_del(&mm_slot->mm_node); in collect_mm_slot()
2656 free_mm_slot(mm_slot); in collect_mm_slot()
2666 struct mm_slot *mm_slot; in khugepaged_scan_mm_slot() local
2674 if (khugepaged_scan.mm_slot) in khugepaged_scan_mm_slot()
2675 mm_slot = khugepaged_scan.mm_slot; in khugepaged_scan_mm_slot()
2677 mm_slot = list_entry(khugepaged_scan.mm_head.next, in khugepaged_scan_mm_slot()
2678 struct mm_slot, mm_node); in khugepaged_scan_mm_slot()
2680 khugepaged_scan.mm_slot = mm_slot; in khugepaged_scan_mm_slot()
2684 mm = mm_slot->mm; in khugepaged_scan_mm_slot()
2742 VM_BUG_ON(khugepaged_scan.mm_slot != mm_slot); in khugepaged_scan_mm_slot()
2753 if (mm_slot->mm_node.next != &khugepaged_scan.mm_head) { in khugepaged_scan_mm_slot()
2754 khugepaged_scan.mm_slot = list_entry( in khugepaged_scan_mm_slot()
2755 mm_slot->mm_node.next, in khugepaged_scan_mm_slot()
2756 struct mm_slot, mm_node); in khugepaged_scan_mm_slot()
2759 khugepaged_scan.mm_slot = NULL; in khugepaged_scan_mm_slot()
2763 collect_mm_slot(mm_slot); in khugepaged_scan_mm_slot()
2800 if (!khugepaged_scan.mm_slot) in khugepaged_do_scan()
2835 struct mm_slot *mm_slot; in khugepaged() local
2846 mm_slot = khugepaged_scan.mm_slot; in khugepaged()
2847 khugepaged_scan.mm_slot = NULL; in khugepaged()
2848 if (mm_slot) in khugepaged()
2849 collect_mm_slot(mm_slot); in khugepaged()