Lines Matching refs:rmap_head
1366 struct kvm_rmap_head *rmap_head) in pte_list_add() argument
1371 if (!rmap_head->val) { in pte_list_add()
1373 rmap_head->val = (unsigned long)spte; in pte_list_add()
1374 } else if (!(rmap_head->val & 1)) { in pte_list_add()
1377 desc->sptes[0] = (u64 *)rmap_head->val; in pte_list_add()
1379 rmap_head->val = (unsigned long)desc | 1; in pte_list_add()
1383 desc = (struct pte_list_desc *)(rmap_head->val & ~1ul); in pte_list_add()
1400 pte_list_desc_remove_entry(struct kvm_rmap_head *rmap_head, in pte_list_desc_remove_entry() argument
1413 rmap_head->val = (unsigned long)desc->sptes[0]; in pte_list_desc_remove_entry()
1418 rmap_head->val = (unsigned long)desc->more | 1; in pte_list_desc_remove_entry()
1422 static void __pte_list_remove(u64 *spte, struct kvm_rmap_head *rmap_head) in __pte_list_remove() argument
1428 if (!rmap_head->val) { in __pte_list_remove()
1431 } else if (!(rmap_head->val & 1)) { in __pte_list_remove()
1433 if ((u64 *)rmap_head->val != spte) { in __pte_list_remove()
1437 rmap_head->val = 0; in __pte_list_remove()
1440 desc = (struct pte_list_desc *)(rmap_head->val & ~1ul); in __pte_list_remove()
1445 pte_list_desc_remove_entry(rmap_head, in __pte_list_remove()
1458 static void pte_list_remove(struct kvm_rmap_head *rmap_head, u64 *sptep) in pte_list_remove() argument
1461 __pte_list_remove(sptep, rmap_head); in pte_list_remove()
1495 struct kvm_rmap_head *rmap_head; in rmap_add() local
1499 rmap_head = gfn_to_rmap(vcpu->kvm, gfn, sp); in rmap_add()
1500 return pte_list_add(vcpu, spte, rmap_head); in rmap_add()
1507 struct kvm_rmap_head *rmap_head; in rmap_remove() local
1511 rmap_head = gfn_to_rmap(kvm, gfn, sp); in rmap_remove()
1512 __pte_list_remove(spte, rmap_head); in rmap_remove()
1532 static u64 *rmap_get_first(struct kvm_rmap_head *rmap_head, in rmap_get_first() argument
1537 if (!rmap_head->val) in rmap_get_first()
1540 if (!(rmap_head->val & 1)) { in rmap_get_first()
1542 sptep = (u64 *)rmap_head->val; in rmap_get_first()
1546 iter->desc = (struct pte_list_desc *)(rmap_head->val & ~1ul); in rmap_get_first()
1652 struct kvm_rmap_head *rmap_head, in __rmap_write_protect() argument
1659 for_each_rmap_spte(rmap_head, &iter, sptep) in __rmap_write_protect()
1692 static bool __rmap_clear_dirty(struct kvm *kvm, struct kvm_rmap_head *rmap_head) in __rmap_clear_dirty() argument
1698 for_each_rmap_spte(rmap_head, &iter, sptep) in __rmap_clear_dirty()
1723 static bool __rmap_set_dirty(struct kvm *kvm, struct kvm_rmap_head *rmap_head) in __rmap_set_dirty() argument
1729 for_each_rmap_spte(rmap_head, &iter, sptep) in __rmap_set_dirty()
1750 struct kvm_rmap_head *rmap_head; in kvm_mmu_write_protect_pt_masked() local
1753 rmap_head = __gfn_to_rmap(slot->base_gfn + gfn_offset + __ffs(mask), in kvm_mmu_write_protect_pt_masked()
1755 __rmap_write_protect(kvm, rmap_head, false); in kvm_mmu_write_protect_pt_masked()
1776 struct kvm_rmap_head *rmap_head; in kvm_mmu_clear_dirty_pt_masked() local
1779 rmap_head = __gfn_to_rmap(slot->base_gfn + gfn_offset + __ffs(mask), in kvm_mmu_clear_dirty_pt_masked()
1781 __rmap_clear_dirty(kvm, rmap_head); in kvm_mmu_clear_dirty_pt_masked()
1828 struct kvm_rmap_head *rmap_head; in kvm_mmu_slot_gfn_write_protect() local
1833 rmap_head = __gfn_to_rmap(gfn, i, slot); in kvm_mmu_slot_gfn_write_protect()
1834 write_protected |= __rmap_write_protect(kvm, rmap_head, true); in kvm_mmu_slot_gfn_write_protect()
1848 static bool kvm_zap_rmapp(struct kvm *kvm, struct kvm_rmap_head *rmap_head) in kvm_zap_rmapp() argument
1854 while ((sptep = rmap_get_first(rmap_head, &iter))) { in kvm_zap_rmapp()
1857 pte_list_remove(rmap_head, sptep); in kvm_zap_rmapp()
1864 static int kvm_unmap_rmapp(struct kvm *kvm, struct kvm_rmap_head *rmap_head, in kvm_unmap_rmapp() argument
1868 return kvm_zap_rmapp(kvm, rmap_head); in kvm_unmap_rmapp()
1871 static int kvm_set_pte_rmapp(struct kvm *kvm, struct kvm_rmap_head *rmap_head, in kvm_set_pte_rmapp() argument
1886 for_each_rmap_spte(rmap_head, &iter, sptep) { in kvm_set_pte_rmapp()
1893 pte_list_remove(rmap_head, sptep); in kvm_set_pte_rmapp()
1990 struct kvm_rmap_head *rmap_head, in kvm_handle_hva_range() argument
2035 struct kvm_rmap_head *rmap_head, in kvm_handle_hva() argument
2053 static int kvm_age_rmapp(struct kvm *kvm, struct kvm_rmap_head *rmap_head, in kvm_age_rmapp() argument
2061 for_each_rmap_spte(rmap_head, &iter, sptep) in kvm_age_rmapp()
2068 static int kvm_test_age_rmapp(struct kvm *kvm, struct kvm_rmap_head *rmap_head, in kvm_test_age_rmapp() argument
2075 for_each_rmap_spte(rmap_head, &iter, sptep) in kvm_test_age_rmapp()
2085 struct kvm_rmap_head *rmap_head; in rmap_recycle() local
2090 rmap_head = gfn_to_rmap(vcpu->kvm, gfn, sp); in rmap_recycle()
2092 kvm_unmap_rmapp(vcpu->kvm, rmap_head, NULL, gfn, sp->role.level, 0); in rmap_recycle()
5671 typedef bool (*slot_level_handler) (struct kvm *kvm, struct kvm_rmap_head *rmap_head);
5958 struct kvm_rmap_head *rmap_head) in slot_rmap_write_protect() argument
5960 return __rmap_write_protect(kvm, rmap_head, false); in slot_rmap_write_protect()
5997 struct kvm_rmap_head *rmap_head) in kvm_mmu_zap_collapsible_spte() argument
6006 for_each_rmap_spte(rmap_head, &iter, sptep) { in kvm_mmu_zap_collapsible_spte()
6020 pte_list_remove(rmap_head, sptep); in kvm_mmu_zap_collapsible_spte()