[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH V2] Revert "xen/arm: do not relocate Xen outside of visible RAM"
On Tue, 25 Oct 2016, Sameer Goel wrote: > This reverts commit db92b1ac55cd5e193ae22b0b6f01fb47bc9e5d2f. > > The restriction on non contiguous memory was resolved by commit > 2d02b05c77fc5e7c76bf6f112db84bbaa44fdcb5: > "xen: arm: improve handling of system with non-contiguous RAM regions" > > So, reverting this change,to enable Xen image placement at the end of the > useable system RAM. > > Signed-off-by: Sameer Goel <sgoel@xxxxxxxxxxxxxx> Acked-by: Stefano Stabellini <sstabellini@xxxxxxxxxx> > The load restriction placed in the above reverted patch resulted in a crash > when booting DOM0 on a Qualcomm platform with non contiguous system RAM. > > (XEN) DOM0: [ 0.000000] bootmem alloc of 64 bytes failed! > (XEN) DOM0: [ 0.000000] Kernel panic - not syncing: Out of memory > (XEN) DOM0: [ 0.000000] CPU: 0 PID: 0 Comm: swapper Not tainted 4.7.0-rc7+ #19 > (XEN) DOM0: [ 0.000000] Hardware name: (null) (DT) > (XEN) DOM0: [ 0.000000] Call trace: > (XEN) DOM0: [ 0.000000] [<ffff000008088854>] dump_backtrace+0x0/0x1e4 > (XEN) DOM0: [ 0.000000] [<ffff000008088a5c>] show_stack+0x24/0x2c > (XEN) DOM0: [ 0.000000] [<ffff000008452004>] dump_stack+0x8c/0xb0 > (XEN) DOM0: [ 0.000000] [<ffff00000819ee78>] panic+0x128/0x268 > (XEN) DOM0: [ 0.000000] [<ffff00000902c018>] __alloc_bootmem_low+0x40/0x4c > (XEN) DOM0: [ 0.000000] [<ffff000009012adc>] setup_arch+0x2d8/0x560 > (XEN) DOM0: [ 0.000000] [<ffff00000901084c>] start_kernel+0x60/0x3b4 > (XEN) DOM0: [ 0.000000] [<ffff0000090101bc>] __primary_switched+0x30/0x74 > (XEN) DOM0: [ 0.000000] ---[ end Kernel panic - not syncing: Out of memory > > The root cause for the crash was >4GB difference between the arm grant table > (lower address) and the kernel start address. The kernel sees the grant table > region as the start of system RAM. > > Since, the grant table is a reuse of the text region of Xen image this issue > would not be seen if Xen is loaded high enough in memory. > > xen/arch/arm/setup.c | 10 +--------- > 1 file changed, 1 insertion(+), 9 deletions(-) > > diff --git a/xen/arch/arm/setup.c b/xen/arch/arm/setup.c > index 38eb888..1678871 100644 > --- a/xen/arch/arm/setup.c > +++ b/xen/arch/arm/setup.c > @@ -392,25 +392,17 @@ static paddr_t __init get_xen_paddr(void) > { > struct meminfo *mi = &bootinfo.mem; > paddr_t min_size; > - paddr_t paddr = 0, last_end; > + paddr_t paddr = 0; > int i; > > min_size = (_end - _start + (XEN_PADDR_ALIGN-1)) & ~(XEN_PADDR_ALIGN-1); > > - last_end = mi->bank[0].start; > - > /* Find the highest bank with enough space. */ > for ( i = 0; i < mi->nr_banks; i++ ) > { > const struct membank *bank = &mi->bank[i]; > paddr_t s, e; > > - /* We can only deal with contiguous memory at the moment */ > - if ( last_end != bank->start ) > - break; > - > - last_end = bank->start + bank->size; > - > if ( bank->size >= min_size ) > { > e = consider_modules(bank->start, bank->start + bank->size, > -- > Qualcomm Datacenter Technologies as an affiliate of Qualcomm Technologies, > Inc. Qualcomm Technologies, Inc. is a member of the Code Aurora Forum, a > Linux Foundation Collaborative Project. > _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |