[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] xen/arm: Allocate memory for dom0 from the bottom with the 1:1 Workaround
On Tue, 2013-10-22 at 11:51 +0100, Julien Grall wrote: > On Linux, the option CONFIG_ARM_PATCH_PHYS_VIRT (by default enabled) allows > the Kernel to be loaded anywhere (or nearly) by patching the translation > pv<->virt at boot time. > > The current solution in Linux assuming that the delta physical address - > virtual address is always negative. A positive delta will destroy all the > optimisation to modify only a part of the translation instruction (add/sub). > > By default, Xen is allocating memory from the top of memory and then > goes down. To avoid booting issue with Linux, we must allocate memory > from the bottom (ie starting from 0). > > Signed-off-by: Julien Grall <julien.grall@xxxxxxxxxx> Acked-by: Ian Campbell <ian.campbell@xxxxxxxxxx> OOI how low does the memory get allocated in practice? We deliberately load Xen and place xenheap up high so I guess for dom0 we can't get memory from pretty low down? > --- > xen/arch/arm/domain_build.c | 11 +++++++++-- > 1 file changed, 9 insertions(+), 2 deletions(-) > > diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c > index 0698f83..69ea6a0 100644 > --- a/xen/arch/arm/domain_build.c > +++ b/xen/arch/arm/domain_build.c > @@ -70,12 +70,19 @@ static int set_memory_reg_11(struct domain *d, struct > kernel_info *kinfo, > int reg_size = dt_cells_to_size(dt_n_addr_cells(np) + > dt_n_size_cells(np)); > paddr_t start; > paddr_t size; > - struct page_info *pg; > + struct page_info *pg = NULL; > unsigned int order = get_order_from_bytes(dom0_mem); > int res; > paddr_t spfn; > + unsigned int bits; > + > + for ( bits = PAGE_SHIFT + 1; bits < PADDR_BITS; bits++ ) > + { > + pg = alloc_domheap_pages(d, order, MEMF_bits(bits)); > + if ( pg != NULL ) > + break; > + } > > - pg = alloc_domheap_pages(d, order, 0); > if ( !pg ) > panic("Failed to allocate contiguous memory for dom0\n"); > _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |