Lines Matching refs:mfn
423 mfn_t mfn; in __get_gfn_type_access() local
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()
457 mfn = INVALID_MFN; in __get_gfn_type_access()
462 return mfn; in __get_gfn_type_access()
484 mfn_t mfn; in p2m_get_page_from_gfn() local
494 mfn = __get_gfn_type_access(p2m, gfn_x(gfn), t, a, 0, NULL, 0); in p2m_get_page_from_gfn()
495 if ( p2m_is_any_ram(*t) && mfn_valid(mfn) in p2m_get_page_from_gfn()
498 page = mfn_to_page(mfn); 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()
524 if ( p2m_is_ram(*t) && mfn_valid(mfn) ) in p2m_get_page_from_gfn()
526 page = mfn_to_page(mfn); 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
550 unsigned long fn_mask = !mfn_eq(mfn, INVALID_MFN) ? mfn_x(mfn) : 0; in p2m_set_entry()
562 set_rc = p2m->set_entry(p2m, gfn, mfn, order, p2mt, p2ma, -1); in p2m_set_entry()
567 if ( !mfn_eq(mfn, INVALID_MFN) ) in p2m_set_entry()
568 mfn = mfn_add(mfn, 1ul << order); in p2m_set_entry()
708 p2m_remove_page(struct p2m_domain *p2m, unsigned long gfn_l, unsigned long mfn, in p2m_remove_page() argument
725 int ret = iommu_unmap_page(p2m->domain, mfn + i); in p2m_remove_page()
736 P2M_DEBUG("removing gfn=%#lx mfn=%#lx\n", gfn_l, mfn); in p2m_remove_page()
738 if ( mfn_valid(_mfn(mfn)) ) in p2m_remove_page()
745 set_gpfn_from_mfn(mfn+i, INVALID_M2P_ENTRY); in p2m_remove_page()
746 ASSERT( !p2m_is_valid(t) || mfn + i == mfn_x(mfn_return) ); in p2m_remove_page()
755 mfn_t mfn, unsigned int page_order) in guest_physmap_remove_page() argument
760 rc = p2m_remove_page(p2m, gfn_x(gfn), mfn_x(mfn), 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
784 rc = iommu_map_page(d, mfn_x(mfn_add(mfn, i)), in guest_physmap_add_entry()
785 mfn_x(mfn_add(mfn, i)), in guest_physmap_add_entry()
791 if ( iommu_unmap_page(d, mfn_x(mfn_add(mfn, i))) ) in guest_physmap_add_entry()
807 P2M_DEBUG("adding gfn=%#lx mfn=%#lx\n", gfn_x(gfn), mfn_x(mfn)); in guest_physmap_add_entry()
872 if ( page_get_owner(mfn_to_page(mfn_add(mfn, i))) == dom_cow ) in guest_physmap_add_entry()
876 mfn_x(mfn_add(mfn, i)), d->domain_id); in guest_physmap_add_entry()
880 if ( page_get_owner(mfn_to_page(mfn_add(mfn, i))) != d ) in guest_physmap_add_entry()
882 ogfn = _gfn(mfn_to_gfn(d, mfn_add(mfn, i))); in guest_physmap_add_entry()
889 mfn_x(mfn_add(mfn, i)), gfn_x(ogfn), in guest_physmap_add_entry()
897 if ( mfn_eq(omfn, mfn_add(mfn, i)) ) in guest_physmap_add_entry()
898 p2m_remove_page(p2m, gfn_x(ogfn), mfn_x(mfn_add(mfn, i)), in guest_physmap_add_entry()
905 if ( mfn_valid(mfn) ) in guest_physmap_add_entry()
907 rc = p2m_set_entry(p2m, gfn, mfn, page_order, t, in guest_physmap_add_entry()
915 set_gpfn_from_mfn(mfn_x(mfn_add(mfn, i)), in guest_physmap_add_entry()
922 gfn_x(gfn), mfn_x(mfn)); in guest_physmap_add_entry()
952 mfn_t mfn; in p2m_change_type_one() local
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()
1079 mfn_t mfn, unsigned int order, in set_typed_p2m_entry() argument
1117 P2M_DEBUG("set %d %lx %lx\n", gfn_p2mt, gfn_l, mfn_x(mfn)); in set_typed_p2m_entry()
1118 rc = p2m_set_entry(p2m, gfn, mfn, order, gfn_p2mt, access); in set_typed_p2m_entry()
1121 gfn_l, order, rc, mfn_x(mfn)); in set_typed_p2m_entry()
1136 mfn_t mfn) 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
1146 rangeset_overlaps_range(mmio_ro_ranges, mfn_x(mfn), in set_mmio_p2m_entry()
1147 mfn_x(mfn) + (1UL << order) - 1) ) in set_mmio_p2m_entry()
1150 return set_typed_p2m_entry(d, gfn, mfn, order, p2m_mmio_direct, access); in set_mmio_p2m_entry()
1159 mfn_t mfn; in set_identity_p2m_entry() local
1172 mfn = p2m->get_entry(p2m, gfn, &p2mt, &a, 0, NULL, NULL); in set_identity_p2m_entry()
1177 else if ( mfn_x(mfn) == gfn_l && p2mt == p2m_mmio_direct && a == p2ma ) in set_identity_p2m_entry()
1188 d->domain_id, gfn_l, mfn_x(mfn)); in set_identity_p2m_entry()
1202 int clear_mmio_p2m_entry(struct domain *d, unsigned long gfn_l, mfn_t mfn, in clear_mmio_p2m_entry() argument
1231 if ( mfn_x(mfn) != mfn_x(actual_mfn) ) in clear_mmio_p2m_entry()
1234 mfn_x(mfn), gfn_l); in clear_mmio_p2m_entry()
1249 mfn_t mfn; in clear_identity_p2m_entry() local
1262 mfn = p2m->get_entry(p2m, gfn, &p2mt, &a, 0, NULL, NULL); in clear_identity_p2m_entry()
1263 if ( p2mt == p2m_mmio_direct && mfn_x(mfn) == gfn_l ) in clear_identity_p2m_entry()
1274 d->domain_id, gfn_l, mfn_x(mfn)); in clear_identity_p2m_entry()
1282 int set_shared_p2m_entry(struct domain *d, unsigned long gfn_l, mfn_t mfn) in set_shared_p2m_entry() argument
1308 P2M_DEBUG("set shared %lx %lx\n", gfn_l, mfn_x(mfn)); in set_shared_p2m_entry()
1309 rc = p2m_set_entry(p2m, gfn, mfn, PAGE_ORDER_4K, p2m_ram_shared, in set_shared_p2m_entry()
1344 mfn_t mfn; in p2m_mem_paging_nominate() local
1349 mfn = p2m->get_entry(p2m, gfn, &p2mt, &a, 0, NULL, NULL); in p2m_mem_paging_nominate()
1352 if ( !mfn_valid(mfn) ) in p2m_mem_paging_nominate()
1360 if ( is_iomem_page(mfn) ) in p2m_mem_paging_nominate()
1364 page = mfn_to_page(mfn); 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()
1405 mfn_t mfn; in p2m_mem_paging_evict() local
1412 mfn = p2m->get_entry(p2m, gfn, &p2mt, &a, 0, NULL, NULL); in p2m_mem_paging_evict()
1413 if ( unlikely(!mfn_valid(mfn)) ) in p2m_mem_paging_evict()
1421 page = mfn_to_page(mfn); in p2m_mem_paging_evict()
1525 mfn_t mfn; in p2m_mem_paging_populate() local
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()
1595 mfn_t mfn; in p2m_mem_paging_prep() local
1608 mfn = p2m->get_entry(p2m, gfn, &p2mt, &a, 0, NULL, NULL); in p2m_mem_paging_prep()
1616 if ( !mfn_valid(mfn) ) in p2m_mem_paging_prep()
1627 mfn = page_to_mfn(page); in p2m_mem_paging_prep()
1637 ASSERT( mfn_valid(mfn) ); in p2m_mem_paging_prep()
1638 guest_map = map_domain_page(mfn); in p2m_mem_paging_prep()
1654 ret = p2m_set_entry(p2m, gfn, mfn, PAGE_ORDER_4K, in p2m_mem_paging_prep()
1657 set_gpfn_from_mfn(mfn_x(mfn), gfn_l); in p2m_mem_paging_prep()
1688 mfn_t mfn; in p2m_mem_paging_resume() local
1696 mfn = p2m->get_entry(p2m, gfn, &p2mt, &a, 0, NULL, NULL); in p2m_mem_paging_resume()
1701 if ( mfn_valid(mfn) && (p2mt == p2m_ram_paging_in) ) 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()
1738 mfn_t mfn; in p2m_flush_table_locked() local
1763 mfn = pagetable_get_mfn(p2m_get_pagetable(p2m)); in p2m_flush_table_locked()
1764 clear_domain_page(mfn); in p2m_flush_table_locked()
1767 top = mfn_to_page(mfn); in p2m_flush_table_locked()
2024 void *map_domain_gfn(struct p2m_domain *p2m, gfn_t gfn, mfn_t *mfn, in map_domain_gfn() argument
2060 *mfn = page_to_mfn(page); in map_domain_gfn()
2061 ASSERT(mfn_valid(*mfn)); in map_domain_gfn()
2063 return map_domain_page(*mfn); in map_domain_gfn()
2100 mfn_t mfn) in map_mmio_regions() argument
2113 for ( order = mmio_order(d, (gfn_x(start_gfn) + i) | (mfn_x(mfn) + i), nr - i); ; in map_mmio_regions()
2117 mfn_add(mfn, i), order, in map_mmio_regions()
2133 mfn_t mfn) in unmap_mmio_regions() argument
2146 for ( order = mmio_order(d, (gfn_x(start_gfn) + i) | (mfn_x(mfn) + i), nr - i); ; in unmap_mmio_regions()
2150 mfn_add(mfn, i), order); in unmap_mmio_regions()
2207 mfn_t mfn; in p2m_altp2m_lazy_copy() local
2212 mfn = get_gfn_type_access(*ap2m, gfn_x(gfn), &p2mt, &p2ma, in p2m_altp2m_lazy_copy()
2216 if ( !mfn_eq(mfn, INVALID_MFN) ) in p2m_altp2m_lazy_copy()
2219 mfn = get_gfn_type_access(hp2m, gfn_x(gfn), &p2mt, &p2ma, in p2m_altp2m_lazy_copy()
2223 if ( mfn_eq(mfn, INVALID_MFN) ) in p2m_altp2m_lazy_copy()
2233 mfn = _mfn(mfn_x(mfn) & 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()
2383 mfn_t mfn; in p2m_change_altp2m_gfn() local
2396 mfn = ap2m->get_entry(ap2m, old_gfn, &t, &a, 0, NULL, NULL); in p2m_change_altp2m_gfn()
2400 if ( mfn_valid(mfn) ) in p2m_change_altp2m_gfn()
2401 p2m_remove_page(ap2m, gfn_x(old_gfn), mfn_x(mfn), PAGE_ORDER_4K); in p2m_change_altp2m_gfn()
2407 if ( !mfn_valid(mfn) ) in p2m_change_altp2m_gfn()
2409 mfn = __get_gfn_type_access(hp2m, gfn_x(old_gfn), &t, &a, in p2m_change_altp2m_gfn()
2412 if ( !mfn_valid(mfn) || t != p2m_ram_rw ) in p2m_change_altp2m_gfn()
2423 mfn = _mfn(mfn_x(mfn) & mask); in p2m_change_altp2m_gfn()
2425 if ( ap2m->set_entry(ap2m, gfn, mfn, page_order, t, a, 1) ) in p2m_change_altp2m_gfn()
2430 mfn = ap2m->get_entry(ap2m, new_gfn, &t, &a, 0, NULL, NULL); in p2m_change_altp2m_gfn()
2432 if ( !mfn_valid(mfn) ) in p2m_change_altp2m_gfn()
2433 mfn = hp2m->get_entry(hp2m, new_gfn, &t, &a, 0, NULL, NULL); in p2m_change_altp2m_gfn()
2436 if ( !mfn_valid(mfn) || (t != p2m_ram_rw) ) in p2m_change_altp2m_gfn()
2439 if ( !ap2m->set_entry(ap2m, old_gfn, mfn, PAGE_ORDER_4K, t, a, in p2m_change_altp2m_gfn()
2467 mfn_t mfn, unsigned int page_order, in p2m_altp2m_propagate_change() argument
2492 if ( mfn_eq(mfn, INVALID_MFN) && in p2m_altp2m_propagate_change()
2522 p2m_set_entry(p2m, gfn, mfn, page_order, p2mt, p2ma); in p2m_altp2m_propagate_change()
2541 unsigned long mfn, gfn; in audit_p2m() local
2564 mfn = mfn_x(page_to_mfn(page)); in audit_p2m()
2566 P2M_PRINTK("auditing guest page, mfn=%#lx\n", mfn); in audit_p2m()
2573 mfn, od, (od?od->domain_id:-1), d, d->domain_id); in audit_p2m()
2577 gfn = get_gpfn_from_mfn(mfn); in audit_p2m()
2582 mfn); in audit_p2m()
2589 mfn); in audit_p2m()
2594 if ( mfn_x(p2mfn) != mfn ) in audit_p2m()
2599 mfn, gfn, mfn_x(p2mfn), in audit_p2m()
2606 set_gpfn_from_mfn(mfn, INVALID_M2P_ENTRY); in audit_p2m()
2611 mfn, gfn, mfn_x(p2mfn)); in audit_p2m()
2655 mfn_t prev_mfn, mfn; in p2m_add_foreign() local
2698 mfn = page_to_mfn(page); in p2m_add_foreign()
2718 rc = set_foreign_p2m_entry(tdom, gpfn, mfn); in p2m_add_foreign()
2722 gpfn, mfn_x(mfn), fgfn, tdom->domain_id, fdom->domain_id); in p2m_add_foreign()