/* A page is dirtied when it's being cleared. */
paging_mark_dirty(pg_owner, page_to_mfn(page));
- clear_domain_page(page_to_mfn(page));
+ clear_domain_page(_mfn(page_to_mfn(page)));
put_page_and_type(page);
break;
/* A page is dirtied when it's being copied to. */
paging_mark_dirty(pg_owner, page_to_mfn(dst_page));
- copy_domain_page(page_to_mfn(dst_page), page_to_mfn(src_page));
+ copy_domain_page(_mfn(page_to_mfn(dst_page)),
+ _mfn(page_to_mfn(src_page)));
put_page_and_type(dst_page);
put_page(src_page);
pg = alloc_domheap_page(d, MEMF_no_owner);
if ( pg )
{
- clear_domain_page(page_to_mfn(pg));
+ clear_domain_page(_mfn(page_to_mfn(pg)));
if ( !IS_NIL(ppg) )
*ppg++ = pg;
l1tab[l1_table_offset(va)] =
goto unlock_and_copyback;
}
- copy_domain_page(page_to_mfn(new_page), mfn);
+ copy_domain_page(_mfn(page_to_mfn(new_page)), _mfn(mfn));
page->count_info &= ~(PGC_count_mask|PGC_allocated);
free_domheap_page(page);
if ( !page )
return NULL;
- clear_domain_page(page_to_mfn(page));
+ clear_domain_page(_mfn(page_to_mfn(page)));
return page;
}
if ( page )
{
image->next_crash_page = hole_end;
- clear_domain_page(page_to_mfn(page));
+ clear_domain_page(_mfn(page_to_mfn(page)));
}
return page;
if ( old )
{
/* If so move it. */
- unsigned long old_mfn = *old >> PAGE_SHIFT;
- unsigned long mfn = addr >> PAGE_SHIFT;
+ mfn_t old_mfn = _mfn(*old >> PAGE_SHIFT);
+ mfn_t mfn = _mfn(addr >> PAGE_SHIFT);
copy_domain_page(mfn, old_mfn);
clear_domain_page(old_mfn);
*old = (addr & ~PAGE_MASK) | IND_SOURCE;
unmap_domain_page(old);
- page = mfn_to_page(old_mfn);
+ page = mfn_to_page(mfn_x(old_mfn));
break;
}
else
goto done;
}
- copy_domain_page(page_to_mfn(xen_page), mfn);
+ copy_domain_page(_mfn(page_to_mfn(xen_page)), _mfn(mfn));
put_page(guest_page);
ret = kimage_add_page(image, page_to_maddr(xen_page));
return rc;
}
-#ifdef CONFIG_DOMAIN_PAGE
-void clear_domain_page(unsigned long mfn)
+void clear_domain_page(mfn_t mfn)
{
- void *ptr = map_domain_page(mfn);
+ void *ptr = map_domain_page(mfn_x(mfn));
clear_page(ptr);
unmap_domain_page(ptr);
}
-void copy_domain_page(unsigned long dmfn, unsigned long smfn)
+void copy_domain_page(mfn_t dest, mfn_t source)
{
- const void *src = map_domain_page(smfn);
- void *dst = map_domain_page(dmfn);
+ const void *src = map_domain_page(mfn_x(source));
+ void *dst = map_domain_page(mfn_x(dest));
copy_page(dst, src);
unmap_domain_page(dst);
unmap_domain_page(src);
}
-#endif
void destroy_ring_for_helper(
void **_va, struct page_info *page)
#include <xen/mm.h>
+/*
+ * Clear a given page frame, or copy between two of them.
+ */
+void clear_domain_page(mfn_t mfn);
+void copy_domain_page(mfn_t dst, const mfn_t src);
+
#ifdef CONFIG_DOMAIN_PAGE
/*
*/
void unmap_domain_page(const void *va);
-/*
- * Clear a given page frame, or copy between two of them.
- */
-void clear_domain_page(unsigned long mfn);
-void copy_domain_page(unsigned long dmfn, unsigned long smfn);
-
/*
* Given a VA from map_domain_page(), return its underlying MFN.
*/
#define map_domain_page(mfn) mfn_to_virt(mfn)
#define __map_domain_page(pg) page_to_virt(pg)
#define unmap_domain_page(va) ((void)(va))
-#define clear_domain_page(mfn) clear_page(mfn_to_virt(mfn))
-#define copy_domain_page(dmfn, smfn) copy_page(mfn_to_virt(dmfn), \
- mfn_to_virt(smfn))
#define domain_page_map_to_mfn(va) virt_to_mfn((unsigned long)(va))
static inline void *map_domain_page_global(mfn_t mfn)