[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] Crash on boot with 2.6.37-rc8-git3
On Tue, 2011-01-25 at 13:31 +0000, Stefano Stabellini wrote: > On Tue, 25 Jan 2011, Ian Campbell wrote: > > > It turns out that it is me having the same issue you have and not the > > > other way around :) > > > > > > Your patch (in addition to my previous patch) makes my testbox boot, no > > > matter what dom0_mem parameter I choose. > > > > > > Appended is a version of the patch that doesn't assume that the memory > > > region starts on a page boundary. > > > > > > --- > > > > > > diff --git a/arch/x86/xen/setup.c b/arch/x86/xen/setup.c > > > index b5a7f92..a3d28a1 100644 > > > --- a/arch/x86/xen/setup.c > > > +++ b/arch/x86/xen/setup.c > > > @@ -179,7 +179,10 @@ char * __init xen_memory_setup(void) > > > e820.nr_map = 0; > > > xen_extra_mem_start = mem_end; > > > for (i = 0; i < memmap.nr_entries; i++) { > > > - unsigned long long end = map[i].addr + map[i].size; > > > + unsigned long long end; > > > + if (map[i].type == E820_RAM) > > > + map[i].size -= (map[i].size + map[i].addr) % PAGE_SIZE; > > > > The more normal idiom to round down to a page boundary in the kernel is: > > map[i].size &= ~(PAGE_SIZE-1); > > > > Do you also need to page align map[i].addr upwards for maximum safety? > > > > unless I am very confused > > map[i].size -= (map[i].size + map[i].addr) % PAGE_SIZE > > is not the same as: > > as map[i].size &= ~(PAGE_SIZE-1): > > because it also takes into account the possibility that map[i].addr is > not page aligned. Oh yes, I didn't notice that aspect of it. > It doesn't move map[i].addr upward but still makes sure that > the region ends at a page boundary anyway. Which returns to my second question ;-) Why do we not need to align addr too? Ian. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |