Lines Matching refs:gfn
424 gfn_t gfn = _gfn(gfn_l); in __get_gfn_type_access() local
440 gfn_lock(p2m, gfn, 0); in __get_gfn_type_access()
442 mfn = p2m->get_entry(p2m, gfn, t, a, q, page_order, NULL); in __get_gfn_type_access()
451 mfn = p2m->get_entry(p2m, gfn, t, a, q, page_order, NULL); in __get_gfn_type_access()
465 void __put_gfn(struct p2m_domain *p2m, unsigned long gfn) in __put_gfn() argument
471 ASSERT(gfn_locked_by_me(p2m, gfn)); in __put_gfn()
473 gfn_unlock(p2m, gfn, 0); in __put_gfn()
478 struct p2m_domain *p2m, gfn_t gfn, in p2m_get_page_from_gfn() argument
494 mfn = __get_gfn_type_access(p2m, gfn_x(gfn), t, a, 0, NULL, 0); in p2m_get_page_from_gfn()
523 mfn = get_gfn_type_access(p2m, gfn_x(gfn), t, a, q, NULL); in p2m_get_page_from_gfn()
530 put_gfn(p2m->domain, gfn_x(gfn)); in p2m_get_page_from_gfn()
536 int p2m_set_entry(struct p2m_domain *p2m, gfn_t gfn, mfn_t mfn, in p2m_set_entry() argument
544 ASSERT(gfn_locked_by_me(p2m, gfn)); in p2m_set_entry()
552 fn_mask |= gfn_x(gfn) | todo; in p2m_set_entry()
562 set_rc = p2m->set_entry(p2m, gfn, mfn, order, p2mt, p2ma, -1); in p2m_set_entry()
566 gfn = gfn_add(gfn, 1ul << order); in p2m_set_entry()
712 gfn_t gfn = _gfn(gfn_l); in p2m_remove_page() local
735 ASSERT(gfn_locked_by_me(p2m, gfn)); in p2m_remove_page()
742 mfn_return = p2m->get_entry(p2m, gfn_add(gfn, i), &t, &a, 0, in p2m_remove_page()
749 return p2m_set_entry(p2m, gfn, INVALID_MFN, page_order, p2m_invalid, in p2m_remove_page()
754 guest_physmap_remove_page(struct domain *d, gfn_t gfn, in guest_physmap_remove_page() argument
759 gfn_lock(p2m, gfn, page_order); in guest_physmap_remove_page()
760 rc = p2m_remove_page(p2m, gfn_x(gfn), mfn_x(mfn), page_order); in guest_physmap_remove_page()
761 gfn_unlock(p2m, gfn, page_order); in guest_physmap_remove_page()
766 guest_physmap_add_entry(struct domain *d, gfn_t gfn, mfn_t mfn, in guest_physmap_add_entry() argument
807 P2M_DEBUG("adding gfn=%#lx mfn=%#lx\n", gfn_x(gfn), mfn_x(mfn)); in guest_physmap_add_entry()
812 omfn = p2m->get_entry(p2m, gfn_add(gfn, i), &ot, in guest_physmap_add_entry()
820 gfn_x(gfn_add(gfn, i)), 0); in guest_physmap_add_entry()
836 gfn_x(gfn_add(gfn, i)), in guest_physmap_add_entry()
840 omfn = p2m->get_entry(p2m, gfn_add(gfn, i), in guest_physmap_add_entry()
884 !gfn_eq(ogfn, gfn_add(gfn, i)) ) in guest_physmap_add_entry()
890 gfn_x(gfn_add(gfn, i))); in guest_physmap_add_entry()
907 rc = p2m_set_entry(p2m, gfn, mfn, page_order, t, in guest_physmap_add_entry()
916 gfn_x(gfn_add(gfn, i))); in guest_physmap_add_entry()
922 gfn_x(gfn), mfn_x(mfn)); in guest_physmap_add_entry()
923 rc = p2m_set_entry(p2m, gfn, INVALID_MFN, page_order, in guest_physmap_add_entry()
951 gfn_t gfn = _gfn(gfn_l); in p2m_change_type_one() local
959 gfn_lock(p2m, gfn, 0); in p2m_change_type_one()
961 mfn = p2m->get_entry(p2m, gfn, &pt, &a, 0, NULL, NULL); in p2m_change_type_one()
963 ? p2m_set_entry(p2m, gfn, mfn, PAGE_ORDER_4K, nt, in p2m_change_type_one()
967 gfn_unlock(p2m, gfn, 0); in p2m_change_type_one()
977 unsigned long gfn = start; in p2m_change_type_range() local
989 if ( !gfn ) in p2m_change_type_range()
992 gfn = end; in p2m_change_type_range()
996 if ( gfn < end ) in p2m_change_type_range()
997 rc = p2m->change_entry_type_range(p2m, ot, nt, gfn, end - 1); in p2m_change_type_range()
1039 unsigned long gfn = gfn_x(first_gfn); in p2m_finish_type_change() local
1040 unsigned long last_gfn = gfn + max_nr - 1; in p2m_finish_type_change()
1046 while ( gfn <= last_gfn ) in p2m_finish_type_change()
1048 rc = p2m->recalc(p2m, gfn); in p2m_finish_type_change()
1059 d->domain_id, gfn); in p2m_finish_type_change()
1063 gfn++; in p2m_finish_type_change()
1086 gfn_t gfn = _gfn(gfn_l); in set_typed_p2m_entry() local
1093 gfn_lock(p2m, gfn, order); in set_typed_p2m_entry()
1094 omfn = p2m->get_entry(p2m, gfn, &ot, &a, 0, &cur_order, NULL); in set_typed_p2m_entry()
1097 gfn_unlock(p2m, gfn, order); in set_typed_p2m_entry()
1102 gfn_unlock(p2m, gfn, order); in set_typed_p2m_entry()
1118 rc = p2m_set_entry(p2m, gfn, mfn, order, gfn_p2mt, access); in set_typed_p2m_entry()
1129 gfn_unlock(p2m, gfn, order); in set_typed_p2m_entry()
1135 static int set_foreign_p2m_entry(struct domain *d, unsigned long gfn, in set_foreign_p2m_entry() argument
1138 return set_typed_p2m_entry(d, gfn, mfn, PAGE_ORDER_4K, p2m_map_foreign, in set_foreign_p2m_entry()
1142 int set_mmio_p2m_entry(struct domain *d, unsigned long gfn, mfn_t mfn, in set_mmio_p2m_entry() argument
1150 return set_typed_p2m_entry(d, gfn, mfn, order, p2m_mmio_direct, access); in set_mmio_p2m_entry()
1158 gfn_t gfn = _gfn(gfn_l); in set_identity_p2m_entry() local
1170 gfn_lock(p2m, gfn, 0); in set_identity_p2m_entry()
1172 mfn = p2m->get_entry(p2m, gfn, &p2mt, &a, 0, NULL, NULL); in set_identity_p2m_entry()
1175 ret = p2m_set_entry(p2m, gfn, _mfn(gfn_l), PAGE_ORDER_4K, in set_identity_p2m_entry()
1191 gfn_unlock(p2m, gfn, 0); in set_identity_p2m_entry()
1206 gfn_t gfn = _gfn(gfn_l); in clear_mmio_p2m_entry() local
1216 gfn_lock(p2m, gfn, order); in clear_mmio_p2m_entry()
1217 actual_mfn = p2m->get_entry(p2m, gfn, &t, &a, 0, &cur_order, NULL); in clear_mmio_p2m_entry()
1235 rc = p2m_set_entry(p2m, gfn, INVALID_MFN, order, p2m_invalid, in clear_mmio_p2m_entry()
1239 gfn_unlock(p2m, gfn, order); in clear_mmio_p2m_entry()
1248 gfn_t gfn = _gfn(gfn_l); in clear_identity_p2m_entry() local
1260 gfn_lock(p2m, gfn, 0); in clear_identity_p2m_entry()
1262 mfn = p2m->get_entry(p2m, gfn, &p2mt, &a, 0, NULL, NULL); in clear_identity_p2m_entry()
1265 ret = p2m_set_entry(p2m, gfn, INVALID_MFN, PAGE_ORDER_4K, in clear_identity_p2m_entry()
1267 gfn_unlock(p2m, gfn, 0); in clear_identity_p2m_entry()
1271 gfn_unlock(p2m, gfn, 0); in clear_identity_p2m_entry()
1286 gfn_t gfn = _gfn(gfn_l); in set_shared_p2m_entry() local
1295 gfn_lock(p2m, gfn, 0); in set_shared_p2m_entry()
1296 omfn = p2m->get_entry(p2m, gfn, &ot, &a, 0, NULL, NULL); in set_shared_p2m_entry()
1309 rc = p2m_set_entry(p2m, gfn, mfn, PAGE_ORDER_4K, p2m_ram_shared, in set_shared_p2m_entry()
1311 gfn_unlock(p2m, gfn, 0); in set_shared_p2m_entry()
1343 gfn_t gfn = _gfn(gfn_l); in p2m_mem_paging_nominate() local
1347 gfn_lock(p2m, gfn, 0); in p2m_mem_paging_nominate()
1349 mfn = p2m->get_entry(p2m, gfn, &p2mt, &a, 0, NULL, NULL); in p2m_mem_paging_nominate()
1373 ret = p2m_set_entry(p2m, gfn, mfn, PAGE_ORDER_4K, p2m_ram_paging_out, a); in p2m_mem_paging_nominate()
1376 gfn_unlock(p2m, gfn, 0); in p2m_mem_paging_nominate()
1404 gfn_t gfn = _gfn(gfn_l); in p2m_mem_paging_evict() local
1409 gfn_lock(p2m, gfn, 0); in p2m_mem_paging_evict()
1412 mfn = p2m->get_entry(p2m, gfn, &p2mt, &a, 0, NULL, NULL); in p2m_mem_paging_evict()
1438 ret = p2m_set_entry(p2m, gfn, INVALID_MFN, PAGE_ORDER_4K, in p2m_mem_paging_evict()
1452 gfn_unlock(p2m, gfn, 0); in p2m_mem_paging_evict()
1465 void p2m_mem_paging_drop_page(struct domain *d, unsigned long gfn, in p2m_mem_paging_drop_page() argument
1470 .u.mem_paging.gfn = gfn in p2m_mem_paging_drop_page()
1520 .u.mem_paging.gfn = gfn_l in p2m_mem_paging_populate()
1524 gfn_t gfn = _gfn(gfn_l); in p2m_mem_paging_populate() local
1544 gfn_lock(p2m, gfn, 0); in p2m_mem_paging_populate()
1545 mfn = p2m->get_entry(p2m, gfn, &p2mt, &a, 0, NULL, NULL); in p2m_mem_paging_populate()
1553 p2m_set_entry(p2m, gfn, mfn, PAGE_ORDER_4K, p2m_ram_paging_in, a); in p2m_mem_paging_populate()
1555 gfn_unlock(p2m, gfn, 0); in p2m_mem_paging_populate()
1594 gfn_t gfn = _gfn(gfn_l); in p2m_mem_paging_prep() local
1606 gfn_lock(p2m, gfn, 0); in p2m_mem_paging_prep()
1608 mfn = p2m->get_entry(p2m, gfn, &p2mt, &a, 0, NULL, NULL); in p2m_mem_paging_prep()
1654 ret = p2m_set_entry(p2m, gfn, mfn, PAGE_ORDER_4K, in p2m_mem_paging_prep()
1663 gfn_unlock(p2m, gfn, 0); in p2m_mem_paging_prep()
1693 gfn_t gfn = _gfn(rsp->u.mem_access.gfn); in p2m_mem_paging_resume() local
1695 gfn_lock(p2m, gfn, 0); in p2m_mem_paging_resume()
1696 mfn = p2m->get_entry(p2m, gfn, &p2mt, &a, 0, NULL, NULL); in p2m_mem_paging_resume()
1703 p2m_set_entry(p2m, gfn, mfn, PAGE_ORDER_4K, in p2m_mem_paging_resume()
1706 set_gpfn_from_mfn(mfn_x(mfn), gfn_x(gfn)); in p2m_mem_paging_resume()
1708 gfn_unlock(p2m, gfn, 0); in p2m_mem_paging_resume()
2024 void *map_domain_gfn(struct p2m_domain *p2m, gfn_t gfn, mfn_t *mfn, in map_domain_gfn() argument
2029 if ( !gfn_valid(p2m->domain, gfn) ) in map_domain_gfn()
2036 page = p2m_get_page_from_gfn(p2m, gfn, p2mt, NULL, q); in map_domain_gfn()
2042 p2m_mem_paging_populate(p2m->domain, gfn_x(gfn)); in map_domain_gfn()
2205 gfn_t gfn = _gfn(paddr_to_pfn(gpa)); in p2m_altp2m_lazy_copy() local
2212 mfn = get_gfn_type_access(*ap2m, gfn_x(gfn), &p2mt, &p2ma, in p2m_altp2m_lazy_copy()
2214 __put_gfn(*ap2m, gfn_x(gfn)); in p2m_altp2m_lazy_copy()
2219 mfn = get_gfn_type_access(hp2m, gfn_x(gfn), &p2mt, &p2ma, in p2m_altp2m_lazy_copy()
2221 __put_gfn(hp2m, gfn_x(gfn)); in p2m_altp2m_lazy_copy()
2234 gfn = _gfn(gfn_x(gfn) & mask); in p2m_altp2m_lazy_copy()
2236 rv = p2m_set_entry(*ap2m, gfn, mfn, page_order, p2mt, p2ma); in p2m_altp2m_lazy_copy()
2243 gfn_x(gfn), mfn_x(mfn), (unsigned long)*ap2m); in p2m_altp2m_lazy_copy()
2418 gfn_t gfn; in p2m_change_altp2m_gfn() local
2422 gfn = _gfn(gfn_x(old_gfn) & mask); in p2m_change_altp2m_gfn()
2425 if ( ap2m->set_entry(ap2m, gfn, mfn, page_order, t, a, 1) ) in p2m_change_altp2m_gfn()
2466 void p2m_altp2m_propagate_change(struct domain *d, gfn_t gfn, in p2m_altp2m_propagate_change() argument
2489 m = get_gfn_type_access(p2m, gfn_x(gfn), &t, &a, 0, NULL); in p2m_altp2m_propagate_change()
2493 gfn_x(gfn) >= p2m->min_remapped_gfn && in p2m_altp2m_propagate_change()
2494 gfn_x(gfn) <= p2m->max_remapped_gfn ) in p2m_altp2m_propagate_change()
2504 __put_gfn(p2m, gfn_x(gfn)); in p2m_altp2m_propagate_change()
2522 p2m_set_entry(p2m, gfn, mfn, page_order, p2mt, p2ma); in p2m_altp2m_propagate_change()
2524 __put_gfn(p2m, gfn_x(gfn)); in p2m_altp2m_propagate_change()
2541 unsigned long mfn, gfn; in audit_p2m() local
2577 gfn = get_gpfn_from_mfn(mfn); in audit_p2m()
2578 if ( gfn == INVALID_M2P_ENTRY ) in audit_p2m()
2586 if ( gfn == SHARED_M2P_ENTRY ) in audit_p2m()
2593 p2mfn = get_gfn_type_access(p2m, gfn, &type, &p2ma, 0, NULL); in audit_p2m()
2599 mfn, gfn, mfn_x(p2mfn), in audit_p2m()
2608 __put_gfn(p2m, gfn); in audit_p2m()
2611 mfn, gfn, mfn_x(p2mfn)); in audit_p2m()