# HG changeset patch # User yamahata@xxxxxxxxxxxxx # Date 1179733667 -32400 # Node ID c4006953d0d12b2d06347c2f1c6f34ff49e0651f # Parent 03e04b861d91b78fbbf392b118dabfbbd61fe75f implemented XENMEM_maximum_gpfn for domain save/restore with domain memmap. PATCHNAME: implemented_xenmem_maximum_gpfn Signed-off-by: Isaku Yamahata diff -r 03e04b861d91 -r c4006953d0d1 linux-2.6-xen-sparse/arch/ia64/xen/xcom_privcmd.c --- a/linux-2.6-xen-sparse/arch/ia64/xen/xcom_privcmd.c Wed May 23 10:40:19 2007 -0600 +++ b/linux-2.6-xen-sparse/arch/ia64/xen/xcom_privcmd.c Mon May 21 16:47:47 2007 +0900 @@ -430,6 +430,21 @@ xencomm_privcmd_memory_op(privcmd_hyperc return ret; } + case XENMEM_maximum_gpfn: + { + domid_t kern_domid; + domid_t __user *user_domid; + struct xencomm_handle *desc; + + user_domid = (domid_t __user *)hypercall->arg[1]; + if (copy_from_user(&kern_domid, user_domid, sizeof(domid_t))) + return -EFAULT; + desc = xencomm_create_inline(&kern_domid); + + ret = xencomm_arch_hypercall_memory_op(cmd, desc); + + return ret; + } case XENMEM_translate_gpfn_list: { xen_translate_gpfn_list_t kern_op; diff -r 03e04b861d91 -r c4006953d0d1 xen/arch/ia64/xen/mm.c --- a/xen/arch/ia64/xen/mm.c Wed May 23 10:40:19 2007 -0600 +++ b/xen/arch/ia64/xen/mm.c Mon May 21 16:47:47 2007 +0900 @@ -368,6 +368,12 @@ mm_final_teardown(struct domain* d) d->arch.shadow_bitmap = NULL; } mm_p2m_teardown(d); +} + +unsigned long +domain_get_maximum_gpfn(struct domain *d) +{ + return (d->arch.convmem_end + PAGE_SIZE - 1) >> PAGE_SHIFT; } // stolen from share_xen_page_with_guest() in xen/arch/x86/mm.c diff -r 03e04b861d91 -r c4006953d0d1 xen/include/asm-ia64/mm.h --- a/xen/include/asm-ia64/mm.h Wed May 23 10:40:19 2007 -0600 +++ b/xen/include/asm-ia64/mm.h Mon May 21 16:47:47 2007 +0900 @@ -506,6 +506,6 @@ int steal_page( #define domain_clamp_alloc_bitsize(d, b) (b) -#define domain_get_maximum_gpfn(d) (-ENOSYS) +unsigned long domain_get_maximum_gpfn(struct domain *d); #endif /* __ASM_IA64_MM_H__ */