Messages in this thread | | | Date | Wed, 28 May 2008 13:48:39 -0700 | From | "Yinghai Lu" <> | Subject | Re: [PATCH] x86: extend e820 ealy_res support 32bit - fix #2 |
| |
On Wed, May 28, 2008 at 3:01 AM, Jeremy Fitzhardinge <jeremy@goop.org> wrote: > Yinghai Lu wrote: >> >> can you try attached patch? >> > > Thanks, that nearly works. I needed the patch below to get it to > successfully boot. > > For reference, this is what the early reserve map looks like now: > > (early) 256MB LOWMEM available. > (early) low ram: 02634000 - 10000000 > (early) bootmap 02634000 - 02636000 > (early) early res: 0 [0-fff] BIOS data page > (early) early res: 1 [1000-1fff] EX TRAMPOLINE > (early) early res: 2 [6000-6fff] TRAMPOLINE > (early) early res: 3 [25db000-261dfff] XEN > (early) early res: 4 [1000000-18a8303] TEXT DATA BSS > (early) early res: 5 [18a9000-25dafff] RAMDISK > (early) early res: 6 [261e000-2633fff] INIT_PG_TABLE > (early) early res: 7 [2634000-2635fff] BOOTMAP > > > J > > > Subject: xen: reserve_early Xen-specific memory > > Make sure that the start_info and pfn->mfn translation array are reserved. > i386_start_kernel will arrange to reserve the kernel code/data, initrd > and pagetable. > > Also, add prototype for i386_start_kernel. > > Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com> > --- > arch/x86/xen/enlighten.c | 9 +++++++++ > include/asm-x86/setup.h | 1 + > 2 files changed, 10 insertions(+) > > =================================================================== > --- a/arch/x86/xen/enlighten.c > +++ b/arch/x86/xen/enlighten.c > @@ -1266,6 +1266,15 @@ > add_preferred_console("hvc", 0, NULL); > } > > + /* > + * Reserve Xen bits: > + * - mfn_list > + * - xen_start_info > + * See comment above "struct start_info" in <xen/interface/xen.h> > + */ > + reserve_early(__pa(xen_start_info->mfn_list), > + __pa(xen_start_info->pt_base), "XEN"); > +
can we use e820 entries for that? So the domain builder could have several entries for E820_RAM and E820_RESERVED...
> /* Start the world */ > i386_start_kernel(); > } > =================================================================== > --- a/include/asm-x86/setup.h > +++ b/include/asm-x86/setup.h > @@ -58,6 +58,7 @@ > int __init copy_e820_map(struct e820entry *biosmap, int nr_map); > void __init add_memory_region(unsigned long long start, > unsigned long long size, int type); > +void __init i386_start_kernel(void);
will need x86_64_start_kernel there, maybe we should change all name to x86_start_kernel
YH
| |