Lines Matching refs:slot
29 void kvm_page_track_free_memslot(struct kvm_memory_slot *slot)
31 kvfree(slot->arch.gfn_write_track);
32 slot->arch.gfn_write_track = NULL;
35 static int __kvm_page_track_write_tracking_alloc(struct kvm_memory_slot *slot,
38 const size_t size = sizeof(*slot->arch.gfn_write_track);
40 if (!slot->arch.gfn_write_track)
41 slot->arch.gfn_write_track = __vcalloc(npages, size,
44 return slot->arch.gfn_write_track ? 0 : -ENOMEM;
48 struct kvm_memory_slot *slot,
54 return __kvm_page_track_write_tracking_alloc(slot, npages);
57 int kvm_page_track_write_tracking_alloc(struct kvm_memory_slot *slot)
59 return __kvm_page_track_write_tracking_alloc(slot, slot->npages);
62 static void update_gfn_write_track(struct kvm_memory_slot *slot, gfn_t gfn,
67 index = gfn_to_index(gfn, slot->base_gfn, PG_LEVEL_4K);
69 val = slot->arch.gfn_write_track[index];
74 slot->arch.gfn_write_track[index] += count;
77 void __kvm_write_track_add_gfn(struct kvm *kvm, struct kvm_memory_slot *slot,
88 update_gfn_write_track(slot, gfn, 1);
94 kvm_mmu_gfn_disallow_lpage(slot, gfn);
96 if (kvm_mmu_slot_gfn_write_protect(kvm, slot, gfn, PG_LEVEL_4K))
101 struct kvm_memory_slot *slot, gfn_t gfn)
111 update_gfn_write_track(slot, gfn, -1);
117 kvm_mmu_gfn_allow_lpage(slot, gfn);
124 const struct kvm_memory_slot *slot, gfn_t gfn)
128 if (!slot)
134 index = gfn_to_index(gfn, slot->base_gfn, PG_LEVEL_4K);
135 return !!READ_ONCE(slot->arch.gfn_write_track[index]);
229 void kvm_page_track_delete_slot(struct kvm *kvm, struct kvm_memory_slot *slot)
244 n->track_remove_region(slot->base_gfn, slot->npages, n);
257 struct kvm_memory_slot *slot;
262 slot = gfn_to_memslot(kvm, gfn);
263 if (!slot) {
269 __kvm_write_track_add_gfn(kvm, slot, gfn);
287 struct kvm_memory_slot *slot;
292 slot = gfn_to_memslot(kvm, gfn);
293 if (!slot) {
299 __kvm_write_track_remove_gfn(kvm, slot, gfn);