Lines Matching refs:mm_slot

86 struct mm_slot {  struct
102 struct mm_slot *mm_slot; member
2046 sizeof(struct mm_slot), in khugepaged_slab_init()
2047 __alignof__(struct mm_slot), 0, NULL); in khugepaged_slab_init()
2059 static inline struct mm_slot *alloc_mm_slot(void) in alloc_mm_slot()
2066 static inline void free_mm_slot(struct mm_slot *mm_slot) in free_mm_slot() argument
2068 kmem_cache_free(mm_slot_cache, mm_slot); in free_mm_slot()
2071 static struct mm_slot *get_mm_slot(struct mm_struct *mm) in get_mm_slot()
2073 struct mm_slot *mm_slot; in get_mm_slot() local
2075 hash_for_each_possible(mm_slots_hash, mm_slot, hash, (unsigned long)mm) in get_mm_slot()
2076 if (mm == mm_slot->mm) in get_mm_slot()
2077 return mm_slot; in get_mm_slot()
2083 struct mm_slot *mm_slot) in insert_to_mm_slots_hash() argument
2085 mm_slot->mm = mm; in insert_to_mm_slots_hash()
2086 hash_add(mm_slots_hash, &mm_slot->hash, (long)mm); in insert_to_mm_slots_hash()
2096 struct mm_slot *mm_slot; in __khugepaged_enter() local
2099 mm_slot = alloc_mm_slot(); in __khugepaged_enter()
2100 if (!mm_slot) in __khugepaged_enter()
2106 free_mm_slot(mm_slot); in __khugepaged_enter()
2111 insert_to_mm_slots_hash(mm, mm_slot); in __khugepaged_enter()
2117 list_add_tail(&mm_slot->mm_node, &khugepaged_scan.mm_head); in __khugepaged_enter()
2149 struct mm_slot *mm_slot; in __khugepaged_exit() local
2153 mm_slot = get_mm_slot(mm); in __khugepaged_exit()
2154 if (mm_slot && khugepaged_scan.mm_slot != mm_slot) { in __khugepaged_exit()
2155 hash_del(&mm_slot->hash); in __khugepaged_exit()
2156 list_del(&mm_slot->mm_node); in __khugepaged_exit()
2163 free_mm_slot(mm_slot); in __khugepaged_exit()
2165 } else if (mm_slot) { in __khugepaged_exit()
2717 static void collect_mm_slot(struct mm_slot *mm_slot) in collect_mm_slot() argument
2719 struct mm_struct *mm = mm_slot->mm; in collect_mm_slot()
2725 hash_del(&mm_slot->hash); in collect_mm_slot()
2726 list_del(&mm_slot->mm_node); in collect_mm_slot()
2735 free_mm_slot(mm_slot); in collect_mm_slot()
2745 struct mm_slot *mm_slot; in khugepaged_scan_mm_slot() local
2753 if (khugepaged_scan.mm_slot) in khugepaged_scan_mm_slot()
2754 mm_slot = khugepaged_scan.mm_slot; in khugepaged_scan_mm_slot()
2756 mm_slot = list_entry(khugepaged_scan.mm_head.next, in khugepaged_scan_mm_slot()
2757 struct mm_slot, mm_node); in khugepaged_scan_mm_slot()
2759 khugepaged_scan.mm_slot = mm_slot; in khugepaged_scan_mm_slot()
2763 mm = mm_slot->mm; in khugepaged_scan_mm_slot()
2821 VM_BUG_ON(khugepaged_scan.mm_slot != mm_slot); in khugepaged_scan_mm_slot()
2832 if (mm_slot->mm_node.next != &khugepaged_scan.mm_head) { in khugepaged_scan_mm_slot()
2833 khugepaged_scan.mm_slot = list_entry( in khugepaged_scan_mm_slot()
2834 mm_slot->mm_node.next, in khugepaged_scan_mm_slot()
2835 struct mm_slot, mm_node); in khugepaged_scan_mm_slot()
2838 khugepaged_scan.mm_slot = NULL; in khugepaged_scan_mm_slot()
2842 collect_mm_slot(mm_slot); in khugepaged_scan_mm_slot()
2879 if (!khugepaged_scan.mm_slot) in khugepaged_do_scan()
2912 struct mm_slot *mm_slot; in khugepaged() local
2923 mm_slot = khugepaged_scan.mm_slot; in khugepaged()
2924 khugepaged_scan.mm_slot = NULL; in khugepaged()
2925 if (mm_slot) in khugepaged()
2926 collect_mm_slot(mm_slot); in khugepaged()