}
-static int get_page_from_pagenr(unsigned long page_nr, struct domain *d)
+static bool get_page_from_mfn(mfn_t mfn, struct domain *d)
{
- struct page_info *page = mfn_to_page(page_nr);
+ struct page_info *page = mfn_to_page(mfn_x(mfn));
- if ( unlikely(!mfn_valid(_mfn(page_nr))) || unlikely(!get_page(page, d)) )
+ if ( unlikely(!mfn_valid(mfn)) || unlikely(!get_page(page, d)) )
{
gdprintk(XENLOG_WARNING,
- "Could not get page ref for mfn %"PRI_mfn"\n", page_nr);
- return 0;
+ "Could not get page ref for mfn %"PRI_mfn"\n", mfn_x(mfn));
+ return false;
}
- return 1;
+ return true;
}
int rc;
if ( likely(partial >= 0) &&
- unlikely(!get_page_from_pagenr(page_nr, d)) )
+ unlikely(!get_page_from_mfn(_mfn(page_nr), d)) )
return -EINVAL;
rc = (preemptible ?
if ( (pfn = level##e_get_pfn(pde)) != pde_pfn ) \
{ \
/* Make sure the mapped frame belongs to the correct domain. */ \
- if ( unlikely(!get_page_from_pagenr(pfn, d)) ) \
+ if ( unlikely(!get_page_from_mfn(_mfn(pfn), d)) ) \
return 0; \
\
/* \
}
rc = paging_mode_refcounts(d)
- ? (get_page_from_pagenr(mfn, d) ? 0 : -EINVAL)
+ ? (get_page_from_mfn(_mfn(mfn), d) ? 0 : -EINVAL)
: get_page_and_type_from_pagenr(mfn, PGT_root_page_table, d, 0, 1);
switch ( rc )
{
xsm_checked = xsm_needed;
}
- if ( unlikely(!get_page_from_pagenr(mfn, pg_owner)) )
+ if ( unlikely(!get_page_from_mfn(_mfn(mfn), pg_owner)) )
{
gdprintk(XENLOG_WARNING,
"Could not get page for mach->phys update\n");
return GNTST_general_error;
}
- if ( !get_page_from_pagenr(gl1mfn, current->domain) )
+ if ( !get_page_from_mfn(_mfn(gl1mfn), current->domain) )
{
guest_unmap_l1e(pl1e);
return GNTST_general_error;
return GNTST_general_error;
}
- if ( !get_page_from_pagenr(gl1mfn, current->domain) )
+ if ( !get_page_from_mfn(_mfn(gl1mfn), current->domain) )
{
rc = GNTST_general_error;
goto out;
return GNTST_general_error;
}
- if ( !get_page_from_pagenr(gl1mfn, current->domain) )
+ if ( !get_page_from_mfn(_mfn(gl1mfn), current->domain) )
{
guest_unmap_l1e(pl1e);
return GNTST_general_error;
rc = -EINVAL;
pl1e = guest_map_l1e(va, &gl1mfn);
- if ( unlikely(!pl1e || !get_page_from_pagenr(gl1mfn, d)) )
+ if ( unlikely(!pl1e || !get_page_from_mfn(_mfn(gl1mfn), d)) )
goto out;
gl1pg = mfn_to_page(gl1mfn);
put_gfn(d, gfn);
return -ENOMEM;
}
- if ( !get_page_from_pagenr(idx, d) )
+ if ( !get_page_from_mfn(_mfn(idx), d) )
break;
mfn = idx;
page = mfn_to_page(mfn);
/* We are looking only for read-only mappings of p.t. pages. */
if ( ((l1e_get_flags(pte) & (_PAGE_PRESENT|_PAGE_RW)) != _PAGE_PRESENT) ||
rangeset_contains_singleton(mmio_ro_ranges, l1e_get_pfn(pte)) ||
- !get_page_from_pagenr(l1e_get_pfn(pte), d) )
+ !get_page_from_mfn(_mfn(l1e_get_pfn(pte)), d) )
goto bail;
page = l1e_get_page(pte);