[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 17:11 +0100, Ian Campbell wrote: > 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. NB, this is mostly just a bug fix to "arm: implement foreign mapping using XENMEM_add_to_physmap_range" and/or "arm: implement remap interfaces needed for privcmd mappings." > 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 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |