Lines Matching refs:slots

627 	struct kvm_memslots *slots;  in kvm_alloc_memslots()  local
629 slots = kvzalloc(sizeof(struct kvm_memslots), GFP_KERNEL_ACCOUNT); in kvm_alloc_memslots()
630 if (!slots) in kvm_alloc_memslots()
634 slots->id_to_index[i] = -1; in kvm_alloc_memslots()
636 return slots; in kvm_alloc_memslots()
658 static void kvm_free_memslots(struct kvm *kvm, struct kvm_memslots *slots) in kvm_free_memslots() argument
662 if (!slots) in kvm_free_memslots()
665 kvm_for_each_memslot(memslot, slots) in kvm_free_memslots()
668 kvfree(slots); in kvm_free_memslots()
764 struct kvm_memslots *slots = kvm_alloc_memslots(); in kvm_create_vm() local
766 if (!slots) in kvm_create_vm()
769 slots->generation = i; in kvm_create_vm()
770 rcu_assign_pointer(kvm->memslots[i], slots); in kvm_create_vm()
943 static inline void kvm_memslot_delete(struct kvm_memslots *slots, in kvm_memslot_delete() argument
946 struct kvm_memory_slot *mslots = slots->memslots; in kvm_memslot_delete()
949 if (WARN_ON(slots->id_to_index[memslot->id] == -1)) in kvm_memslot_delete()
952 slots->used_slots--; in kvm_memslot_delete()
954 if (atomic_read(&slots->lru_slot) >= slots->used_slots) in kvm_memslot_delete()
955 atomic_set(&slots->lru_slot, 0); in kvm_memslot_delete()
957 for (i = slots->id_to_index[memslot->id]; i < slots->used_slots; i++) { in kvm_memslot_delete()
959 slots->id_to_index[mslots[i].id] = i; in kvm_memslot_delete()
962 slots->id_to_index[memslot->id] = -1; in kvm_memslot_delete()
969 static inline int kvm_memslot_insert_back(struct kvm_memslots *slots) in kvm_memslot_insert_back() argument
971 return slots->used_slots++; in kvm_memslot_insert_back()
981 static inline int kvm_memslot_move_backward(struct kvm_memslots *slots, in kvm_memslot_move_backward() argument
984 struct kvm_memory_slot *mslots = slots->memslots; in kvm_memslot_move_backward()
987 if (WARN_ON_ONCE(slots->id_to_index[memslot->id] == -1) || in kvm_memslot_move_backward()
988 WARN_ON_ONCE(!slots->used_slots)) in kvm_memslot_move_backward()
996 for (i = slots->id_to_index[memslot->id]; i < slots->used_slots - 1; i++) { in kvm_memslot_move_backward()
1004 slots->id_to_index[mslots[i].id] = i; in kvm_memslot_move_backward()
1016 static inline int kvm_memslot_move_forward(struct kvm_memslots *slots, in kvm_memslot_move_forward() argument
1020 struct kvm_memory_slot *mslots = slots->memslots; in kvm_memslot_move_forward()
1031 slots->id_to_index[mslots[i].id] = i; in kvm_memslot_move_forward()
1077 static void update_memslots(struct kvm_memslots *slots, in update_memslots() argument
1084 kvm_memslot_delete(slots, memslot); in update_memslots()
1087 i = kvm_memslot_insert_back(slots); in update_memslots()
1089 i = kvm_memslot_move_backward(slots, memslot); in update_memslots()
1090 i = kvm_memslot_move_forward(slots, memslot, i); in update_memslots()
1096 slots->memslots[i] = *memslot; in update_memslots()
1097 slots->id_to_index[memslot->id] = i; in update_memslots()
1116 int as_id, struct kvm_memslots *slots) in install_new_memslots() argument
1122 slots->generation = gen | KVM_MEMSLOT_GEN_UPDATE_IN_PROGRESS; in install_new_memslots()
1124 rcu_assign_pointer(kvm->memslots[as_id], slots); in install_new_memslots()
1133 gen = slots->generation & ~KVM_MEMSLOT_GEN_UPDATE_IN_PROGRESS; in install_new_memslots()
1146 slots->generation = gen; in install_new_memslots()
1159 struct kvm_memslots *slots; in kvm_dup_memslots() local
1170 slots = kvzalloc(new_size, GFP_KERNEL_ACCOUNT); in kvm_dup_memslots()
1171 if (likely(slots)) in kvm_dup_memslots()
1172 memcpy(slots, old, old_size); in kvm_dup_memslots()
1174 return slots; in kvm_dup_memslots()
1184 struct kvm_memslots *slots; in kvm_set_memslot() local
1187 slots = kvm_dup_memslots(__kvm_memslots(kvm, as_id), change); in kvm_set_memslot()
1188 if (!slots) in kvm_set_memslot()
1196 slot = id_to_memslot(slots, old->id); in kvm_set_memslot()
1205 slots = install_new_memslots(kvm, as_id, slots); in kvm_set_memslot()
1221 update_memslots(slots, new, change); in kvm_set_memslot()
1222 slots = install_new_memslots(kvm, as_id, slots); in kvm_set_memslot()
1226 kvfree(slots); in kvm_set_memslot()
1231 slots = install_new_memslots(kvm, as_id, slots); in kvm_set_memslot()
1232 kvfree(slots); in kvm_set_memslot()
1421 struct kvm_memslots *slots; in kvm_get_dirty_log() local
1434 slots = __kvm_memslots(kvm, as_id); in kvm_get_dirty_log()
1435 *memslot = id_to_memslot(slots, id); in kvm_get_dirty_log()
1479 struct kvm_memslots *slots; in kvm_get_dirty_log_protect() local
1492 slots = __kvm_memslots(kvm, as_id); in kvm_get_dirty_log_protect()
1493 memslot = id_to_memslot(slots, id); in kvm_get_dirty_log_protect()
1586 struct kvm_memslots *slots; in kvm_clear_dirty_log_protect() local
1603 slots = __kvm_memslots(kvm, as_id); in kvm_clear_dirty_log_protect()
1604 memslot = id_to_memslot(slots, id); in kvm_clear_dirty_log_protect()
2129 static int __kvm_map_gfn(struct kvm_memslots *slots, gfn_t gfn, in __kvm_map_gfn() argument
2137 struct kvm_memory_slot *slot = __gfn_to_memslot(slots, gfn); in __kvm_map_gfn()
2138 u64 gen = slots->generation; in __kvm_map_gfn()
2497 static int __kvm_gfn_to_hva_cache_init(struct kvm_memslots *slots, in __kvm_gfn_to_hva_cache_init() argument
2508 ghc->generation = slots->generation; in __kvm_gfn_to_hva_cache_init()
2520 ghc->memslot = __gfn_to_memslot(slots, start_gfn); in __kvm_gfn_to_hva_cache_init()
2541 struct kvm_memslots *slots = kvm_memslots(kvm); in kvm_gfn_to_hva_cache_init() local
2542 return __kvm_gfn_to_hva_cache_init(slots, ghc, gpa, len); in kvm_gfn_to_hva_cache_init()
2550 struct kvm_memslots *slots = kvm_memslots(kvm); in kvm_write_guest_offset_cached() local
2556 if (slots->generation != ghc->generation) { in kvm_write_guest_offset_cached()
2557 if (__kvm_gfn_to_hva_cache_init(slots, ghc, ghc->gpa, ghc->len)) in kvm_write_guest_offset_cached()
2587 struct kvm_memslots *slots = kvm_memslots(kvm); in kvm_read_guest_offset_cached() local
2593 if (slots->generation != ghc->generation) { in kvm_read_guest_offset_cached()
2594 if (__kvm_gfn_to_hva_cache_init(slots, ghc, ghc->gpa, ghc->len)) in kvm_read_guest_offset_cached()