Lines Matching refs:slot

42 void kvm_page_track_free_memslot(struct kvm_memory_slot *slot)
44 kvfree(slot->arch.gfn_write_track);
45 slot->arch.gfn_write_track = NULL;
48 static int __kvm_page_track_write_tracking_alloc(struct kvm_memory_slot *slot,
51 const size_t size = sizeof(*slot->arch.gfn_write_track);
53 if (!slot->arch.gfn_write_track)
54 slot->arch.gfn_write_track = __vcalloc(npages, size,
57 return slot->arch.gfn_write_track ? 0 : -ENOMEM;
61 struct kvm_memory_slot *slot,
67 return __kvm_page_track_write_tracking_alloc(slot, npages);
70 int kvm_page_track_write_tracking_alloc(struct kvm_memory_slot *slot)
72 return __kvm_page_track_write_tracking_alloc(slot, slot->npages);
75 static void update_gfn_write_track(struct kvm_memory_slot *slot, gfn_t gfn,
80 index = gfn_to_index(gfn, slot->base_gfn, PG_LEVEL_4K);
82 val = slot->arch.gfn_write_track[index];
87 slot->arch.gfn_write_track[index] += count;
90 void __kvm_write_track_add_gfn(struct kvm *kvm, struct kvm_memory_slot *slot,
101 update_gfn_write_track(slot, gfn, 1);
107 kvm_mmu_gfn_disallow_lpage(slot, gfn);
109 if (kvm_mmu_slot_gfn_write_protect(kvm, slot, gfn, PG_LEVEL_4K))
114 struct kvm_memory_slot *slot, gfn_t gfn)
124 update_gfn_write_track(slot, gfn, -1);
130 kvm_mmu_gfn_allow_lpage(slot, gfn);
137 const struct kvm_memory_slot *slot, gfn_t gfn)
141 if (!slot)
147 index = gfn_to_index(gfn, slot->base_gfn, PG_LEVEL_4K);
148 return !!READ_ONCE(slot->arch.gfn_write_track[index]);
172 struct kvm_memory_slot *slot;
187 kvm_for_each_memslot(slot, bkt, slots) {
192 * metadata is guaranteed to be freed when the slot is
196 r = kvm_page_track_write_tracking_alloc(slot);
293 void kvm_page_track_delete_slot(struct kvm *kvm, struct kvm_memory_slot *slot)
308 n->track_remove_region(slot->base_gfn, slot->npages, n);
321 struct kvm_memory_slot *slot;
326 slot = gfn_to_memslot(kvm, gfn);
327 if (!slot) {
333 __kvm_write_track_add_gfn(kvm, slot, gfn);
351 struct kvm_memory_slot *slot;
356 slot = gfn_to_memslot(kvm, gfn);
357 if (!slot) {
363 __kvm_write_track_remove_gfn(kvm, slot, gfn);