Lines Matching refs:rmap_head
1212 struct kvm_rmap_head *rmap_head) in pte_list_add() argument
1217 if (!rmap_head->val) { in pte_list_add()
1219 rmap_head->val = (unsigned long)spte; in pte_list_add()
1220 } else if (!(rmap_head->val & 1)) { in pte_list_add()
1223 desc->sptes[0] = (u64 *)rmap_head->val; in pte_list_add()
1225 rmap_head->val = (unsigned long)desc | 1; in pte_list_add()
1229 desc = (struct pte_list_desc *)(rmap_head->val & ~1ul); in pte_list_add()
1246 pte_list_desc_remove_entry(struct kvm_rmap_head *rmap_head, in pte_list_desc_remove_entry() argument
1259 rmap_head->val = (unsigned long)desc->sptes[0]; in pte_list_desc_remove_entry()
1264 rmap_head->val = (unsigned long)desc->more | 1; in pte_list_desc_remove_entry()
1268 static void pte_list_remove(u64 *spte, struct kvm_rmap_head *rmap_head) in pte_list_remove() argument
1274 if (!rmap_head->val) { in pte_list_remove()
1277 } else if (!(rmap_head->val & 1)) { in pte_list_remove()
1279 if ((u64 *)rmap_head->val != spte) { in pte_list_remove()
1283 rmap_head->val = 0; in pte_list_remove()
1286 desc = (struct pte_list_desc *)(rmap_head->val & ~1ul); in pte_list_remove()
1291 pte_list_desc_remove_entry(rmap_head, in pte_list_remove()
1335 struct kvm_rmap_head *rmap_head; in rmap_add() local
1339 rmap_head = gfn_to_rmap(vcpu->kvm, gfn, sp); in rmap_add()
1340 return pte_list_add(vcpu, spte, rmap_head); in rmap_add()
1347 struct kvm_rmap_head *rmap_head; in rmap_remove() local
1351 rmap_head = gfn_to_rmap(kvm, gfn, sp); in rmap_remove()
1352 pte_list_remove(spte, rmap_head); in rmap_remove()
1372 static u64 *rmap_get_first(struct kvm_rmap_head *rmap_head, in rmap_get_first() argument
1377 if (!rmap_head->val) in rmap_get_first()
1380 if (!(rmap_head->val & 1)) { in rmap_get_first()
1382 sptep = (u64 *)rmap_head->val; in rmap_get_first()
1386 iter->desc = (struct pte_list_desc *)(rmap_head->val & ~1ul); in rmap_get_first()
1488 struct kvm_rmap_head *rmap_head, in __rmap_write_protect() argument
1495 for_each_rmap_spte(rmap_head, &iter, sptep) in __rmap_write_protect()
1528 static bool __rmap_clear_dirty(struct kvm *kvm, struct kvm_rmap_head *rmap_head) in __rmap_clear_dirty() argument
1534 for_each_rmap_spte(rmap_head, &iter, sptep) in __rmap_clear_dirty()
1554 static bool __rmap_set_dirty(struct kvm *kvm, struct kvm_rmap_head *rmap_head) in __rmap_set_dirty() argument
1560 for_each_rmap_spte(rmap_head, &iter, sptep) in __rmap_set_dirty()
1581 struct kvm_rmap_head *rmap_head; in kvm_mmu_write_protect_pt_masked() local
1584 rmap_head = __gfn_to_rmap(slot->base_gfn + gfn_offset + __ffs(mask), in kvm_mmu_write_protect_pt_masked()
1586 __rmap_write_protect(kvm, rmap_head, false); in kvm_mmu_write_protect_pt_masked()
1607 struct kvm_rmap_head *rmap_head; in kvm_mmu_clear_dirty_pt_masked() local
1610 rmap_head = __gfn_to_rmap(slot->base_gfn + gfn_offset + __ffs(mask), in kvm_mmu_clear_dirty_pt_masked()
1612 __rmap_clear_dirty(kvm, rmap_head); in kvm_mmu_clear_dirty_pt_masked()
1659 struct kvm_rmap_head *rmap_head; in kvm_mmu_slot_gfn_write_protect() local
1664 rmap_head = __gfn_to_rmap(gfn, i, slot); in kvm_mmu_slot_gfn_write_protect()
1665 write_protected |= __rmap_write_protect(kvm, rmap_head, true); in kvm_mmu_slot_gfn_write_protect()
1679 static bool kvm_zap_rmapp(struct kvm *kvm, struct kvm_rmap_head *rmap_head) in kvm_zap_rmapp() argument
1685 while ((sptep = rmap_get_first(rmap_head, &iter))) { in kvm_zap_rmapp()
1695 static int kvm_unmap_rmapp(struct kvm *kvm, struct kvm_rmap_head *rmap_head, in kvm_unmap_rmapp() argument
1699 return kvm_zap_rmapp(kvm, rmap_head); in kvm_unmap_rmapp()
1702 static int kvm_set_pte_rmapp(struct kvm *kvm, struct kvm_rmap_head *rmap_head, in kvm_set_pte_rmapp() argument
1717 for_each_rmap_spte(rmap_head, &iter, sptep) { in kvm_set_pte_rmapp()
1819 struct kvm_rmap_head *rmap_head, in kvm_handle_hva_range() argument
1864 struct kvm_rmap_head *rmap_head, in kvm_handle_hva() argument
1882 static int kvm_age_rmapp(struct kvm *kvm, struct kvm_rmap_head *rmap_head, in kvm_age_rmapp() argument
1890 for_each_rmap_spte(rmap_head, &iter, sptep) in kvm_age_rmapp()
1897 static int kvm_test_age_rmapp(struct kvm *kvm, struct kvm_rmap_head *rmap_head, in kvm_test_age_rmapp() argument
1904 for_each_rmap_spte(rmap_head, &iter, sptep) in kvm_test_age_rmapp()
1914 struct kvm_rmap_head *rmap_head; in rmap_recycle() local
1919 rmap_head = gfn_to_rmap(vcpu->kvm, gfn, sp); in rmap_recycle()
1921 kvm_unmap_rmapp(vcpu->kvm, rmap_head, NULL, gfn, sp->role.level, 0); in rmap_recycle()
5468 typedef bool (*slot_level_handler) (struct kvm *kvm, struct kvm_rmap_head *rmap_head);
5563 struct kvm_rmap_head *rmap_head) in slot_rmap_write_protect() argument
5565 return __rmap_write_protect(kvm, rmap_head, false); in slot_rmap_write_protect()
5601 struct kvm_rmap_head *rmap_head) in kvm_mmu_zap_collapsible_spte() argument
5610 for_each_rmap_spte(rmap_head, &iter, sptep) { in kvm_mmu_zap_collapsible_spte()