Lines Matching refs:rmap_head

867 			struct kvm_rmap_head *rmap_head)  in pte_list_add()  argument
872 if (!rmap_head->val) { in pte_list_add()
874 rmap_head->val = (unsigned long)spte; in pte_list_add()
875 } else if (!(rmap_head->val & 1)) { in pte_list_add()
878 desc->sptes[0] = (u64 *)rmap_head->val; in pte_list_add()
881 rmap_head->val = (unsigned long)desc | 1; in pte_list_add()
885 desc = (struct pte_list_desc *)(rmap_head->val & ~1ul); in pte_list_add()
903 pte_list_desc_remove_entry(struct kvm_rmap_head *rmap_head, in pte_list_desc_remove_entry() argument
915 rmap_head->val = 0; in pte_list_desc_remove_entry()
920 rmap_head->val = (unsigned long)desc->more | 1; in pte_list_desc_remove_entry()
924 static void pte_list_remove(u64 *spte, struct kvm_rmap_head *rmap_head) in pte_list_remove() argument
930 if (!rmap_head->val) { in pte_list_remove()
933 } else if (!(rmap_head->val & 1)) { in pte_list_remove()
935 if ((u64 *)rmap_head->val != spte) { in pte_list_remove()
939 rmap_head->val = 0; in pte_list_remove()
942 desc = (struct pte_list_desc *)(rmap_head->val & ~1ul); in pte_list_remove()
947 pte_list_desc_remove_entry(rmap_head, in pte_list_remove()
961 struct kvm_rmap_head *rmap_head, u64 *sptep) in kvm_zap_one_rmap_spte() argument
964 pte_list_remove(sptep, rmap_head); in kvm_zap_one_rmap_spte()
969 struct kvm_rmap_head *rmap_head) in kvm_zap_all_rmap_sptes() argument
974 if (!rmap_head->val) in kvm_zap_all_rmap_sptes()
977 if (!(rmap_head->val & 1)) { in kvm_zap_all_rmap_sptes()
978 mmu_spte_clear_track_bits(kvm, (u64 *)rmap_head->val); in kvm_zap_all_rmap_sptes()
982 desc = (struct pte_list_desc *)(rmap_head->val & ~1ul); in kvm_zap_all_rmap_sptes()
992 rmap_head->val = 0; in kvm_zap_all_rmap_sptes()
996 unsigned int pte_list_count(struct kvm_rmap_head *rmap_head) in pte_list_count() argument
1001 if (!rmap_head->val) in pte_list_count()
1003 else if (!(rmap_head->val & 1)) in pte_list_count()
1006 desc = (struct pte_list_desc *)(rmap_head->val & ~1ul); in pte_list_count()
1039 struct kvm_rmap_head *rmap_head; in rmap_remove() local
1052 rmap_head = gfn_to_rmap(gfn, sp->role.level, slot); in rmap_remove()
1054 pte_list_remove(spte, rmap_head); in rmap_remove()
1074 static u64 *rmap_get_first(struct kvm_rmap_head *rmap_head, in rmap_get_first() argument
1079 if (!rmap_head->val) in rmap_get_first()
1082 if (!(rmap_head->val & 1)) { in rmap_get_first()
1084 sptep = (u64 *)rmap_head->val; in rmap_get_first()
1088 iter->desc = (struct pte_list_desc *)(rmap_head->val & ~1ul); in rmap_get_first()
1185 static bool rmap_write_protect(struct kvm_rmap_head *rmap_head, in rmap_write_protect() argument
1192 for_each_rmap_spte(rmap_head, &iter, sptep) in rmap_write_protect()
1225 static bool __rmap_clear_dirty(struct kvm *kvm, struct kvm_rmap_head *rmap_head, in __rmap_clear_dirty() argument
1232 for_each_rmap_spte(rmap_head, &iter, sptep) in __rmap_clear_dirty()
1254 struct kvm_rmap_head *rmap_head; in kvm_mmu_write_protect_pt_masked() local
1264 rmap_head = gfn_to_rmap(slot->base_gfn + gfn_offset + __ffs(mask), in kvm_mmu_write_protect_pt_masked()
1266 rmap_write_protect(rmap_head, false); in kvm_mmu_write_protect_pt_masked()
1287 struct kvm_rmap_head *rmap_head; in kvm_mmu_clear_dirty_pt_masked() local
1297 rmap_head = gfn_to_rmap(slot->base_gfn + gfn_offset + __ffs(mask), in kvm_mmu_clear_dirty_pt_masked()
1299 __rmap_clear_dirty(kvm, rmap_head, slot); in kvm_mmu_clear_dirty_pt_masked()
1361 struct kvm_rmap_head *rmap_head; in kvm_mmu_slot_gfn_write_protect() local
1367 rmap_head = gfn_to_rmap(gfn, i, slot); in kvm_mmu_slot_gfn_write_protect()
1368 write_protected |= rmap_write_protect(rmap_head, true); in kvm_mmu_slot_gfn_write_protect()
1387 static bool __kvm_zap_rmap(struct kvm *kvm, struct kvm_rmap_head *rmap_head, in __kvm_zap_rmap() argument
1390 return kvm_zap_all_rmap_sptes(kvm, rmap_head); in __kvm_zap_rmap()
1393 static bool kvm_zap_rmap(struct kvm *kvm, struct kvm_rmap_head *rmap_head, in kvm_zap_rmap() argument
1397 return __kvm_zap_rmap(kvm, rmap_head, slot); in kvm_zap_rmap()
1400 static bool kvm_set_pte_rmap(struct kvm *kvm, struct kvm_rmap_head *rmap_head, in kvm_set_pte_rmap() argument
1414 for_each_rmap_spte(rmap_head, &iter, sptep) { in kvm_set_pte_rmap()
1421 kvm_zap_one_rmap_spte(kvm, rmap_head, sptep); in kvm_set_pte_rmap()
1509 typedef bool (*rmap_handler_t)(struct kvm *kvm, struct kvm_rmap_head *rmap_head,
1554 static bool kvm_age_rmap(struct kvm *kvm, struct kvm_rmap_head *rmap_head, in kvm_age_rmap() argument
1562 for_each_rmap_spte(rmap_head, &iter, sptep) in kvm_age_rmap()
1568 static bool kvm_test_age_rmap(struct kvm *kvm, struct kvm_rmap_head *rmap_head, in kvm_test_age_rmap() argument
1575 for_each_rmap_spte(rmap_head, &iter, sptep) in kvm_test_age_rmap()
1589 struct kvm_rmap_head *rmap_head; in __rmap_add() local
1596 rmap_head = gfn_to_rmap(gfn, sp->role.level, slot); in __rmap_add()
1597 rmap_count = pte_list_add(cache, spte, rmap_head); in __rmap_add()
1602 kvm_zap_all_rmap_sptes(kvm, rmap_head); in __rmap_add()
5698 struct kvm_rmap_head *rmap_head,
6080 struct kvm_rmap_head *rmap_head, in slot_rmap_write_protect() argument
6083 return rmap_write_protect(rmap_head, false); in slot_rmap_write_protect()
6270 struct kvm_rmap_head *rmap_head, in shadow_mmu_try_split_huge_pages() argument
6279 for_each_rmap_spte(rmap_head, &iter, huge_sptep) { in shadow_mmu_try_split_huge_pages()
6386 struct kvm_rmap_head *rmap_head, in kvm_mmu_zap_collapsible_spte() argument
6395 for_each_rmap_spte(rmap_head, &iter, sptep) { in kvm_mmu_zap_collapsible_spte()
6408 kvm_zap_one_rmap_spte(kvm, rmap_head, sptep); in kvm_mmu_zap_collapsible_spte()