Lines Matching refs:rmap_head
837 struct kvm_rmap_head *rmap_head) in pte_list_add() argument
842 if (!rmap_head->val) { in pte_list_add()
844 rmap_head->val = (unsigned long)spte; in pte_list_add()
845 } else if (!(rmap_head->val & 1)) { in pte_list_add()
848 desc->sptes[0] = (u64 *)rmap_head->val; in pte_list_add()
850 rmap_head->val = (unsigned long)desc | 1; in pte_list_add()
854 desc = (struct pte_list_desc *)(rmap_head->val & ~1ul); in pte_list_add()
873 pte_list_desc_remove_entry(struct kvm_rmap_head *rmap_head, in pte_list_desc_remove_entry() argument
886 rmap_head->val = 0; in pte_list_desc_remove_entry()
891 rmap_head->val = (unsigned long)desc->more | 1; in pte_list_desc_remove_entry()
895 static void __pte_list_remove(u64 *spte, struct kvm_rmap_head *rmap_head) in __pte_list_remove() argument
901 if (!rmap_head->val) { in __pte_list_remove()
904 } else if (!(rmap_head->val & 1)) { in __pte_list_remove()
906 if ((u64 *)rmap_head->val != spte) { in __pte_list_remove()
910 rmap_head->val = 0; in __pte_list_remove()
913 desc = (struct pte_list_desc *)(rmap_head->val & ~1ul); in __pte_list_remove()
918 pte_list_desc_remove_entry(rmap_head, in __pte_list_remove()
931 static void pte_list_remove(struct kvm_rmap_head *rmap_head, u64 *sptep) in pte_list_remove() argument
934 __pte_list_remove(sptep, rmap_head); in pte_list_remove()
968 struct kvm_rmap_head *rmap_head; in rmap_add() local
972 rmap_head = gfn_to_rmap(vcpu->kvm, gfn, sp); in rmap_add()
973 return pte_list_add(vcpu, spte, rmap_head); in rmap_add()
980 struct kvm_rmap_head *rmap_head; in rmap_remove() local
984 rmap_head = gfn_to_rmap(kvm, gfn, sp); in rmap_remove()
985 __pte_list_remove(spte, rmap_head); in rmap_remove()
1005 static u64 *rmap_get_first(struct kvm_rmap_head *rmap_head, in rmap_get_first() argument
1010 if (!rmap_head->val) in rmap_get_first()
1013 if (!(rmap_head->val & 1)) { in rmap_get_first()
1015 sptep = (u64 *)rmap_head->val; in rmap_get_first()
1019 iter->desc = (struct pte_list_desc *)(rmap_head->val & ~1ul); in rmap_get_first()
1124 struct kvm_rmap_head *rmap_head, in __rmap_write_protect() argument
1131 for_each_rmap_spte(rmap_head, &iter, sptep) in __rmap_write_protect()
1164 static bool __rmap_clear_dirty(struct kvm *kvm, struct kvm_rmap_head *rmap_head) in __rmap_clear_dirty() argument
1170 for_each_rmap_spte(rmap_head, &iter, sptep) in __rmap_clear_dirty()
1195 static bool __rmap_set_dirty(struct kvm *kvm, struct kvm_rmap_head *rmap_head) in __rmap_set_dirty() argument
1201 for_each_rmap_spte(rmap_head, &iter, sptep) in __rmap_set_dirty()
1222 struct kvm_rmap_head *rmap_head; in kvm_mmu_write_protect_pt_masked() local
1228 rmap_head = __gfn_to_rmap(slot->base_gfn + gfn_offset + __ffs(mask), in kvm_mmu_write_protect_pt_masked()
1230 __rmap_write_protect(kvm, rmap_head, false); in kvm_mmu_write_protect_pt_masked()
1251 struct kvm_rmap_head *rmap_head; in kvm_mmu_clear_dirty_pt_masked() local
1257 rmap_head = __gfn_to_rmap(slot->base_gfn + gfn_offset + __ffs(mask), in kvm_mmu_clear_dirty_pt_masked()
1259 __rmap_clear_dirty(kvm, rmap_head); in kvm_mmu_clear_dirty_pt_masked()
1291 struct kvm_rmap_head *rmap_head; in kvm_mmu_slot_gfn_write_protect() local
1296 rmap_head = __gfn_to_rmap(gfn, i, slot); in kvm_mmu_slot_gfn_write_protect()
1297 write_protected |= __rmap_write_protect(kvm, rmap_head, true); in kvm_mmu_slot_gfn_write_protect()
1315 static bool kvm_zap_rmapp(struct kvm *kvm, struct kvm_rmap_head *rmap_head) in kvm_zap_rmapp() argument
1321 while ((sptep = rmap_get_first(rmap_head, &iter))) { in kvm_zap_rmapp()
1324 pte_list_remove(rmap_head, sptep); in kvm_zap_rmapp()
1331 static int kvm_unmap_rmapp(struct kvm *kvm, struct kvm_rmap_head *rmap_head, in kvm_unmap_rmapp() argument
1335 return kvm_zap_rmapp(kvm, rmap_head); in kvm_unmap_rmapp()
1338 static int kvm_set_pte_rmapp(struct kvm *kvm, struct kvm_rmap_head *rmap_head, in kvm_set_pte_rmapp() argument
1353 for_each_rmap_spte(rmap_head, &iter, sptep) { in kvm_set_pte_rmapp()
1360 pte_list_remove(rmap_head, sptep); in kvm_set_pte_rmapp()
1452 struct kvm_rmap_head *rmap_head, in kvm_handle_hva_range() argument
1497 struct kvm_rmap_head *rmap_head, in kvm_handle_hva() argument
1530 static int kvm_age_rmapp(struct kvm *kvm, struct kvm_rmap_head *rmap_head, in kvm_age_rmapp() argument
1538 for_each_rmap_spte(rmap_head, &iter, sptep) in kvm_age_rmapp()
1545 static int kvm_test_age_rmapp(struct kvm *kvm, struct kvm_rmap_head *rmap_head, in kvm_test_age_rmapp() argument
1552 for_each_rmap_spte(rmap_head, &iter, sptep) in kvm_test_age_rmapp()
1562 struct kvm_rmap_head *rmap_head; in rmap_recycle() local
1567 rmap_head = gfn_to_rmap(vcpu->kvm, gfn, sp); in rmap_recycle()
1569 kvm_unmap_rmapp(vcpu->kvm, rmap_head, NULL, gfn, sp->role.level, 0); in rmap_recycle()
5231 typedef bool (*slot_level_handler) (struct kvm *kvm, struct kvm_rmap_head *rmap_head);
5538 struct kvm_rmap_head *rmap_head) in slot_rmap_write_protect() argument
5540 return __rmap_write_protect(kvm, rmap_head, false); in slot_rmap_write_protect()
5572 struct kvm_rmap_head *rmap_head) in kvm_mmu_zap_collapsible_spte() argument
5581 for_each_rmap_spte(rmap_head, &iter, sptep) { in kvm_mmu_zap_collapsible_spte()
5595 pte_list_remove(rmap_head, sptep); in kvm_mmu_zap_collapsible_spte()