[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 05/14] xen: balloon: use correct type for frame_list
On Fri, 2012-10-05 at 15:33 +0100, Ian Campbell wrote: > The issue you describe could only happen for a 32 bit HAP guest if the > guests was given > 16GB (2^(32+PAGE_SHIFT) bytes) of RAM and it was > explicitly trying to balloon memory over that limit, but in order for > that to even be possible it would already need to have made its concept > of a pfn larger than 32 bits. The one place this might matter is in the privcmd IOCTL_PRIVCMD_MMAPBATCH interface for the *foreign* pfn (since a small dom0 needs to be able to build a big domU). Luckily that interface already uses xen_pfn_t, we just need to be a bit careful in the xen_remap_domain_mfn_range case, which Konrad tried to tell me already and he was right... On ARM that meant the following (built but not executed) patch, I suspect the PVH variant needs similar treatment. 8<-------------------------- diff --git a/arch/arm/include/asm/xen/interface.h b/arch/arm/include/asm/xen/interface.h index ae05e56..ad87917 100644 --- a/arch/arm/include/asm/xen/interface.h +++ b/arch/arm/include/asm/xen/interface.h @@ -43,6 +43,7 @@ DEFINE_GUEST_HANDLE(void); DEFINE_GUEST_HANDLE(uint64_t); DEFINE_GUEST_HANDLE(uint32_t); DEFINE_GUEST_HANDLE(xen_pfn_t); +DEFINE_GUEST_HANDLE(xen_ulong_t); /* Maximum number of virtual CPUs in multi-processor guests. */ #define MAX_VIRT_CPUS 1 diff --git a/arch/arm/xen/enlighten.c b/arch/arm/xen/enlighten.c index a9946aa..1d64c02 100644 --- a/arch/arm/xen/enlighten.c +++ b/arch/arm/xen/enlighten.c @@ -57,7 +57,7 @@ static int map_foreign_page(unsigned long lpfn, unsigned long fgmfn, .size = 1, .space = XENMAPSPACE_gmfn_foreign, }; - unsigned long idx = fgmfn; + xen_ulong_t idx = fgmfn; xen_pfn_t gpfn = lpfn; set_xen_guest_handle(xatp.idxs, &idx); @@ -73,7 +73,7 @@ static int map_foreign_page(unsigned long lpfn, unsigned long fgmfn, } struct remap_data { - unsigned long fgmfn; /* foreign domain's gmfn */ + xen_pfn_t fgmfn; /* foreign domain's gmfn */ pgprot_t prot; domid_t domid; struct vm_area_struct *vma; @@ -98,7 +98,7 @@ static int remap_pte_fn(pte_t *ptep, pgtable_t token, unsigned long addr, int xen_remap_domain_mfn_range(struct vm_area_struct *vma, unsigned long addr, - unsigned long mfn, int nr, + xen_pfn_t mfn, int nr, pgprot_t prot, unsigned domid, struct xen_remap_mfn_info *info) { diff --git a/arch/x86/include/asm/xen/interface.h b/arch/x86/include/asm/xen/interface.h index 250c254..d67f3c6 100644 --- a/arch/x86/include/asm/xen/interface.h +++ b/arch/x86/include/asm/xen/interface.h @@ -63,6 +63,7 @@ DEFINE_GUEST_HANDLE(void); DEFINE_GUEST_HANDLE(uint64_t); DEFINE_GUEST_HANDLE(uint32_t); DEFINE_GUEST_HANDLE(xen_pfn_t); +DEFINE_GUEST_HANDLE(xen_ulong_t); #endif #ifndef HYPERVISOR_VIRT_START diff --git a/include/xen/interface/memory.h b/include/xen/interface/memory.h index e5675bc..24e5731 100644 --- a/include/xen/interface/memory.h +++ b/include/xen/interface/memory.h @@ -199,7 +199,7 @@ struct xen_add_to_physmap_range { domid_t foreign_domid; /* IFF gmfn_foreign */ /* Indexes into space being mapped. */ - GUEST_HANDLE(ulong) idxs; + GUEST_HANDLE(xen_ulong_t) idxs; /* GPFN in domid where the source mapping page should appear. */ GUEST_HANDLE(xen_pfn_t) gpfns; diff --git a/include/xen/xen-ops.h b/include/xen/xen-ops.h index 2f3cb06..59309f3 100644 --- a/include/xen/xen-ops.h +++ b/include/xen/xen-ops.h @@ -27,7 +27,7 @@ struct vm_area_struct; struct xen_remap_mfn_info; int xen_remap_domain_mfn_range(struct vm_area_struct *vma, unsigned long addr, - unsigned long mfn, int nr, + xen_pfn_t mfn, int nr, pgprot_t prot, unsigned domid, struct xen_remap_mfn_info *pvhp); int xen_unmap_domain_mfn_range(struct vm_area_struct *vma, _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |