Lines Matching defs:slots

683 	struct kvm_memslots *slots;
685 slots = kvzalloc(sizeof(struct kvm_memslots), GFP_KERNEL_ACCOUNT);
686 if (!slots)
690 slots->id_to_index[i] = -1;
692 return slots;
714 static void kvm_free_memslots(struct kvm *kvm, struct kvm_memslots *slots)
718 if (!slots)
721 kvm_for_each_memslot(memslot, slots)
724 kvfree(slots);
834 struct kvm_memslots *slots = kvm_alloc_memslots();
836 if (!slots)
839 slots->generation = i;
840 rcu_assign_pointer(kvm->memslots[i], slots);
1021 * Delete a memslot by decrementing the number of used slots and shifting all
1024 static inline void kvm_memslot_delete(struct kvm_memslots *slots,
1027 struct kvm_memory_slot *mslots = slots->memslots;
1030 if (WARN_ON(slots->id_to_index[memslot->id] == -1))
1033 slots->used_slots--;
1035 if (atomic_read(&slots->lru_slot) >= slots->used_slots)
1036 atomic_set(&slots->lru_slot, 0);
1038 for (i = slots->id_to_index[memslot->id]; i < slots->used_slots; i++) {
1040 slots->id_to_index[mslots[i].id] = i;
1043 slots->id_to_index[memslot->id] = -1;
1047 * "Insert" a new memslot by incrementing the number of used slots. Returns
1050 static inline int kvm_memslot_insert_back(struct kvm_memslots *slots)
1052 return slots->used_slots++;
1056 * Move a changed memslot backwards in the array by shifting existing slots
1062 static inline int kvm_memslot_move_backward(struct kvm_memslots *slots,
1065 struct kvm_memory_slot *mslots = slots->memslots;
1068 if (WARN_ON_ONCE(slots->id_to_index[memslot->id] == -1) ||
1069 WARN_ON_ONCE(!slots->used_slots))
1077 for (i = slots->id_to_index[memslot->id]; i < slots->used_slots - 1; i++) {
1085 slots->id_to_index[mslots[i].id] = i;
1091 * Move a changed memslot forwards in the array by shifting existing slots with
1097 static inline int kvm_memslot_move_forward(struct kvm_memslots *slots,
1101 struct kvm_memory_slot *mslots = slots->memslots;
1112 slots->id_to_index[mslots[i].id] = i;
1143 * Note, slots are sorted from highest->lowest instead of lowest->highest for
1158 static void update_memslots(struct kvm_memslots *slots,
1165 kvm_memslot_delete(slots, memslot);
1168 i = kvm_memslot_insert_back(slots);
1170 i = kvm_memslot_move_backward(slots, memslot);
1171 i = kvm_memslot_move_forward(slots, memslot, i);
1177 slots->memslots[i] = *memslot;
1178 slots->id_to_index[memslot->id] = i;
1197 int as_id, struct kvm_memslots *slots)
1203 slots->generation = gen | KVM_MEMSLOT_GEN_UPDATE_IN_PROGRESS;
1205 rcu_assign_pointer(kvm->memslots[as_id], slots);
1214 gen = slots->generation & ~KVM_MEMSLOT_GEN_UPDATE_IN_PROGRESS;
1227 slots->generation = gen;
1233 * Note, at a minimum, the current number of used slots must be allocated, even
1240 struct kvm_memslots *slots;
1251 slots = kvzalloc(new_size, GFP_KERNEL_ACCOUNT);
1252 if (likely(slots))
1253 memcpy(slots, old, old_size);
1255 return slots;
1265 struct kvm_memslots *slots;
1268 slots = kvm_dup_memslots(__kvm_memslots(kvm, as_id), change);
1269 if (!slots)
1277 slot = id_to_memslot(slots, old->id);
1286 slots = install_new_memslots(kvm, as_id, slots);
1303 update_memslots(slots, new, change);
1304 slots = install_new_memslots(kvm, as_id, slots);
1308 kvfree(slots);
1313 slots = install_new_memslots(kvm, as_id, slots);
1314 kvfree(slots);
1505 struct kvm_memslots *slots;
1518 slots = __kvm_memslots(kvm, as_id);
1519 *memslot = id_to_memslot(slots, id);
1563 struct kvm_memslots *slots;
1576 slots = __kvm_memslots(kvm, as_id);
1577 memslot = id_to_memslot(slots, id);
1670 struct kvm_memslots *slots;
1687 slots = __kvm_memslots(kvm, as_id);
1688 memslot = id_to_memslot(slots, id);
2236 static int __kvm_map_gfn(struct kvm_memslots *slots, gfn_t gfn,
2244 struct kvm_memory_slot *slot = __gfn_to_memslot(slots, gfn);
2245 u64 gen = slots->generation;
2616 static int __kvm_gfn_to_hva_cache_init(struct kvm_memslots *slots,
2627 ghc->generation = slots->generation;
2639 ghc->memslot = __gfn_to_memslot(slots, start_gfn);
2660 struct kvm_memslots *slots = kvm_memslots(kvm);
2661 return __kvm_gfn_to_hva_cache_init(slots, ghc, gpa, len);
2669 struct kvm_memslots *slots = kvm_memslots(kvm);
2676 if (slots->generation != ghc->generation) {
2677 if (__kvm_gfn_to_hva_cache_init(slots, ghc, ghc->gpa, ghc->len))
2707 struct kvm_memslots *slots = kvm_memslots(kvm);
2714 if (slots->generation != ghc->generation) {
2715 if (__kvm_gfn_to_hva_cache_init(slots, ghc, ghc->gpa, ghc->len))