Lines Matching refs:mm_slot

120 struct mm_slot {  struct
137 struct mm_slot *mm_slot; member
234 static struct mm_slot ksm_mm_head = {
238 .mm_slot = &ksm_mm_head,
316 mm_slot_cache = KSM_KMEM_CACHE(mm_slot, 0); in ksm_slab_init()
412 static inline struct mm_slot *alloc_mm_slot(void) in alloc_mm_slot()
419 static inline void free_mm_slot(struct mm_slot *mm_slot) in free_mm_slot() argument
421 kmem_cache_free(mm_slot_cache, mm_slot); in free_mm_slot()
424 static struct mm_slot *get_mm_slot(struct mm_struct *mm) in get_mm_slot()
426 struct mm_slot *slot; in get_mm_slot()
436 struct mm_slot *mm_slot) in insert_to_mm_slots_hash() argument
438 mm_slot->mm = mm; in insert_to_mm_slots_hash()
439 hash_add(mm_slots_hash, &mm_slot->link, (unsigned long)mm); in insert_to_mm_slots_hash()
821 static void remove_trailing_rmap_items(struct mm_slot *mm_slot, in remove_trailing_rmap_items() argument
968 struct mm_slot *mm_slot; in unmerge_and_remove_all_rmap_items() local
974 ksm_scan.mm_slot = list_entry(ksm_mm_head.mm_list.next, in unmerge_and_remove_all_rmap_items()
975 struct mm_slot, mm_list); in unmerge_and_remove_all_rmap_items()
978 for (mm_slot = ksm_scan.mm_slot; in unmerge_and_remove_all_rmap_items()
979 mm_slot != &ksm_mm_head; mm_slot = ksm_scan.mm_slot) { in unmerge_and_remove_all_rmap_items()
980 mm = mm_slot->mm; in unmerge_and_remove_all_rmap_items()
993 remove_trailing_rmap_items(mm_slot, &mm_slot->rmap_list); in unmerge_and_remove_all_rmap_items()
997 ksm_scan.mm_slot = list_entry(mm_slot->mm_list.next, in unmerge_and_remove_all_rmap_items()
998 struct mm_slot, mm_list); in unmerge_and_remove_all_rmap_items()
1000 hash_del(&mm_slot->link); in unmerge_and_remove_all_rmap_items()
1001 list_del(&mm_slot->mm_list); in unmerge_and_remove_all_rmap_items()
1004 free_mm_slot(mm_slot); in unmerge_and_remove_all_rmap_items()
1019 ksm_scan.mm_slot = &ksm_mm_head; in unmerge_and_remove_all_rmap_items()
2198 static struct rmap_item *get_next_rmap_item(struct mm_slot *mm_slot, in get_next_rmap_item() argument
2218 rmap_item->mm = mm_slot->mm; in get_next_rmap_item()
2229 struct mm_slot *slot; in scan_get_next_rmap_item()
2237 slot = ksm_scan.mm_slot; in scan_get_next_rmap_item()
2275 slot = list_entry(slot->mm_list.next, struct mm_slot, mm_list); in scan_get_next_rmap_item()
2276 ksm_scan.mm_slot = slot; in scan_get_next_rmap_item()
2344 ksm_scan.mm_slot = list_entry(slot->mm_list.next, in scan_get_next_rmap_item()
2345 struct mm_slot, mm_list); in scan_get_next_rmap_item()
2377 slot = ksm_scan.mm_slot; in scan_get_next_rmap_item()
2495 struct mm_slot *mm_slot; in __ksm_enter() local
2498 mm_slot = alloc_mm_slot(); in __ksm_enter()
2499 if (!mm_slot) in __ksm_enter()
2506 insert_to_mm_slots_hash(mm, mm_slot); in __ksm_enter()
2518 list_add_tail(&mm_slot->mm_list, &ksm_mm_head.mm_list); in __ksm_enter()
2520 list_add_tail(&mm_slot->mm_list, &ksm_scan.mm_slot->mm_list); in __ksm_enter()
2534 struct mm_slot *mm_slot; in __ksm_exit() local
2547 mm_slot = get_mm_slot(mm); in __ksm_exit()
2548 if (mm_slot && ksm_scan.mm_slot != mm_slot) { in __ksm_exit()
2549 if (!mm_slot->rmap_list) { in __ksm_exit()
2550 hash_del(&mm_slot->link); in __ksm_exit()
2551 list_del(&mm_slot->mm_list); in __ksm_exit()
2554 list_move(&mm_slot->mm_list, in __ksm_exit()
2555 &ksm_scan.mm_slot->mm_list); in __ksm_exit()
2561 free_mm_slot(mm_slot); in __ksm_exit()
2564 } else if (mm_slot) { in __ksm_exit()