New XENMAPSPACE_gmfn parameter for XENMEM_add_to_physmap.

Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
This commit is contained in:
Keir Fraser committed 2009-01-09 11:44:35 +00:00
1 parent a562362b25
commit 3e50af3d87
3 files changed
+38 -35

No files matched your search

+30 -28
View File
@@ -3295,38 +3295,40 @@ arch_memory_op(int op, XEN_GUEST_HANDLE(void) arg)
spin_unlock(&d->grant_table->lock);
break;
case XENMAPSPACE_mfn:
{
if ( get_page_from_pagenr(xatp.idx, d) ) {
struct xen_ia64_memmap_info memmap_info;
efi_memory_desc_t md;
int ret;
case XENMAPSPACE_gmfn:
xatp.idx = gmfn_to_mfn(d, xatp.idx);
case XENMAPSPACE_mfn: {
struct xen_ia64_memmap_info memmap_info;
efi_memory_desc_t md;
int ret;
mfn = xatp.idx;
page = mfn_to_page(mfn);
if ( !get_page_from_pagenr(xatp.idx, d) )
break;
memmap_info.efi_memmap_size = sizeof(md);
memmap_info.efi_memdesc_size = sizeof(md);
memmap_info.efi_memdesc_version =
EFI_MEMORY_DESCRIPTOR_VERSION;
mfn = xatp.idx;
page = mfn_to_page(mfn);
md.type = EFI_CONVENTIONAL_MEMORY;
md.pad = 0;
md.phys_addr = xatp.gpfn << PAGE_SHIFT;
md.virt_addr = 0;
md.num_pages = 1UL << (PAGE_SHIFT - EFI_PAGE_SHIFT);
md.attribute = EFI_MEMORY_WB;
memmap_info.efi_memmap_size = sizeof(md);
memmap_info.efi_memdesc_size = sizeof(md);
memmap_info.efi_memdesc_version =
EFI_MEMORY_DESCRIPTOR_VERSION;
ret = __dom0vp_add_memdesc(d, &memmap_info, (char*)&md);
if (ret != 0) {
put_page(page);
rcu_unlock_domain(d);
gdprintk(XENLOG_DEBUG,
"%s:%d td %d gpfn 0x%lx mfn 0x%lx ret %d\n",
__func__, __LINE__,
d->domain_id, xatp.gpfn, xatp.idx, ret);
return ret;
}
md.type = EFI_CONVENTIONAL_MEMORY;
md.pad = 0;
md.phys_addr = xatp.gpfn << PAGE_SHIFT;
md.virt_addr = 0;
md.num_pages = 1UL << (PAGE_SHIFT - EFI_PAGE_SHIFT);
md.attribute = EFI_MEMORY_WB;
ret = __dom0vp_add_memdesc(d, &memmap_info, (char*)&md);
if (ret != 0) {
put_page(page);
rcu_unlock_domain(d);
gdprintk(XENLOG_DEBUG,
"%s:%d td %d gpfn 0x%lx mfn 0x%lx ret %d\n",
__func__, __LINE__,
d->domain_id, xatp.gpfn, xatp.idx, ret);
return ret;
}
break;
}
+6 -6
View File
@@ -3808,14 +3808,14 @@ long arch_memory_op(int op, XEN_GUEST_HANDLE(void) arg)
spin_unlock(&d->grant_table->lock);
break;
case XENMAPSPACE_gmfn:
xatp.idx = gmfn_to_mfn(d, xatp.idx);
case XENMAPSPACE_mfn:
{
if ( get_page_from_pagenr(xatp.idx, d) ) {
mfn = xatp.idx;
page = mfn_to_page(mfn);
}
if ( !get_page_from_pagenr(xatp.idx, d) )
break;
mfn = xatp.idx;
page = mfn_to_page(mfn);
break;
}
default:
break;
}
+2 -1
View File
@@ -206,7 +206,8 @@ struct xen_add_to_physmap {
/* Source mapping space. */
#define XENMAPSPACE_shared_info 0 /* shared info page */
#define XENMAPSPACE_grant_table 1 /* grant table page */
#define XENMAPSPACE_mfn 2 /* usual MFN */
#define XENMAPSPACE_mfn 2 /* MFN */
#define XENMAPSPACE_gmfn 3 /* GMFN */
unsigned int space;
/* Index into source mapping space. */
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.