Lines Matching defs:slots
578 #define kvm_for_each_memslot_in_hva_range(node, slots, start, last) \
579 for (node = interval_tree_iter_first(&slots->hva_tree, start, last); \
589 struct kvm_memslots *slots;
605 slots = __kvm_memslots(kvm, i);
606 kvm_for_each_memslot_in_hva_range(node, slots,
610 slot = container_of(node, struct kvm_memory_slot, hva_node[slots->node_idx]);
997 static void kvm_free_memslots(struct kvm *kvm, struct kvm_memslots *slots)
1009 if (!slots->node_idx)
1012 hash_for_each_safe(slots->id_hash, bkt, idnode, memslot, id_node[1])
1153 struct kvm_memslots *slots;
1200 slots = &kvm->__memslots[i][j];
1202 atomic_long_set(&slots->last_used_slot, (unsigned long)NULL);
1203 slots->hva_tree = RB_ROOT_CACHED;
1204 slots->gfn_tree = RB_ROOT;
1205 hash_init(slots->id_hash);
1206 slots->node_idx = j;
1209 slots->generation = i;
1443 static void kvm_insert_gfn_node(struct kvm_memslots *slots,
1446 struct rb_root *gfn_tree = &slots->gfn_tree;
1448 int idx = slots->node_idx;
1468 static void kvm_erase_gfn_node(struct kvm_memslots *slots,
1471 rb_erase(&slot->gfn_node[slots->node_idx], &slots->gfn_tree);
1474 static void kvm_replace_gfn_node(struct kvm_memslots *slots,
1478 int idx = slots->node_idx;
1483 &slots->gfn_tree);
1500 struct kvm_memslots *slots = kvm_get_inactive_memslots(kvm, as_id);
1501 int idx = slots->node_idx;
1505 interval_tree_remove(&old->hva_node[idx], &slots->hva_tree);
1507 if ((long)old == atomic_long_read(&slots->last_used_slot))
1508 atomic_long_set(&slots->last_used_slot, (long)new);
1511 kvm_erase_gfn_node(slots, old);
1529 hash_add(slots->id_hash, &new->id_node[idx], new->id);
1530 interval_tree_insert(&new->hva_node[idx], &slots->hva_tree);
1540 kvm_replace_gfn_node(slots, old, new);
1543 kvm_erase_gfn_node(slots, old);
1544 kvm_insert_gfn_node(slots, new);
1564 struct kvm_memslots *slots = kvm_get_inactive_memslots(kvm, as_id);
1570 slots->generation = gen | KVM_MEMSLOT_GEN_UPDATE_IN_PROGRESS;
1586 rcu_assign_pointer(kvm->memslots[as_id], slots);
1604 gen = slots->generation & ~KVM_MEMSLOT_GEN_UPDATE_IN_PROGRESS;
1617 slots->generation = gen;
1712 * Activate @new, which must be installed in the inactive slots by the caller,
1713 * by swapping the active slots and then propagating @new to @old once @old is
1760 * the slot to the now inactive slots. The slot is either going to be
1801 * the "new" slot, and for the invalid version in the active slots.
1813 * Replace the old memslot in the inactive slots, and then swap slots
1884 * in the inactive slots. Changing the active memslots also
1928 static bool kvm_check_memslot_overlap(struct kvm_memslots *slots, int id,
1933 kvm_for_each_memslot_in_gfn_range(&iter, slots, start, end) {
1953 struct kvm_memslots *slots;
1986 slots = __kvm_memslots(kvm, as_id);
1992 old = id_to_memslot(slots, id);
2031 kvm_check_memslot_overlap(slots, id, base_gfn, base_gfn + npages))
2085 struct kvm_memslots *slots;
2102 slots = __kvm_memslots(kvm, as_id);
2103 *memslot = id_to_memslot(slots, id);
2147 struct kvm_memslots *slots;
2164 slots = __kvm_memslots(kvm, as_id);
2165 memslot = id_to_memslot(slots, id);
2258 struct kvm_memslots *slots;
2279 slots = __kvm_memslots(kvm, as_id);
2280 memslot = id_to_memslot(slots, id);
2353 struct kvm_memslots *slots = kvm_vcpu_memslots(vcpu);
2354 u64 gen = slots->generation;
2375 slot = search_memslots(slots, gfn, false);
3206 static int __kvm_gfn_to_hva_cache_init(struct kvm_memslots *slots,
3217 ghc->generation = slots->generation;
3229 ghc->memslot = __gfn_to_memslot(slots, start_gfn);
3250 struct kvm_memslots *slots = kvm_memslots(kvm);
3251 return __kvm_gfn_to_hva_cache_init(slots, ghc, gpa, len);
3259 struct kvm_memslots *slots = kvm_memslots(kvm);
3266 if (slots->generation != ghc->generation) {
3267 if (__kvm_gfn_to_hva_cache_init(slots, ghc, ghc->gpa, ghc->len))
3297 struct kvm_memslots *slots = kvm_memslots(kvm);
3304 if (slots->generation != ghc->generation) {
3305 if (__kvm_gfn_to_hva_cache_init(slots, ghc, ghc->gpa, ghc->len))