Due to the initial physical memory layout when booting on Xen, the initrd
image ends up below min_low_pfn (as registered with the bootstrap memory
allocator). Add an i386 build option to allow this scenario by setting
the initrd_below_start_ok flag.
Signed-off-by: Ian Pratt <[email protected]>
Signed-off-by: Christian Limpach <[email protected]>
Signed-off-by: Chris Wright <[email protected]>
---
arch/i386/kernel/setup.c | 7 ++++++-
drivers/block/Kconfig | 4 ++++
2 files changed, 10 insertions(+), 1 deletion(-)
--- xen-subarch-2.6.orig/arch/i386/kernel/setup.c
+++ xen-subarch-2.6/arch/i386/kernel/setup.c
@@ -1237,10 +1237,15 @@ void __init setup_bootmem_allocator(void
#ifdef CONFIG_BLK_DEV_INITRD
if (LOADER_TYPE && INITRD_START) {
if (INITRD_START + INITRD_SIZE <= (max_low_pfn << PAGE_SHIFT)) {
- reserve_bootmem(INITRD_START, INITRD_SIZE);
initrd_start =
INITRD_START ? INITRD_START + PAGE_OFFSET : 0;
initrd_end = initrd_start+INITRD_SIZE;
+#ifdef CONFIG_BLK_DEV_INITRD_BELOW_START_OK
+ if (initrd_start < min_low_pfn << PAGE_SHIFT)
+ initrd_below_start_ok = 1;
+ else
+#endif
+ reserve_bootmem(INITRD_START, INITRD_SIZE);
}
else {
printk(KERN_ERR "initrd extends beyond end of memory "
--- xen-subarch-2.6.orig/drivers/block/Kconfig
+++ xen-subarch-2.6/drivers/block/Kconfig
@@ -409,6 +409,10 @@ config BLK_DEV_INITRD
"real" root file system, etc. See <file:Documentation/initrd.txt>
for details.
+config BLK_DEV_INITRD_BELOW_START_OK
+ bool
+ depends on XEN
+ default BLK_DEV_INITRD
config CDROM_PKTCDVD
tristate "Packet writing on CD/DVD media"
--
On Wednesday 22 March 2006 07:30, Chris Wright wrote:
> Due to the initial physical memory layout when booting on Xen, the initrd
> image ends up below min_low_pfn (as registered with the bootstrap memory
> allocator). Add an i386 build option to allow this scenario by setting
> the initrd_below_start_ok flag.
Better would be to just handle that by default without any CONFIGs.
-Andi
* Andi Kleen ([email protected]) wrote:
> On Wednesday 22 March 2006 07:30, Chris Wright wrote:
> > Due to the initial physical memory layout when booting on Xen, the initrd
> > image ends up below min_low_pfn (as registered with the bootstrap memory
> > allocator). Add an i386 build option to allow this scenario by setting
> > the initrd_below_start_ok flag.
>
> Better would be to just handle that by default without any CONFIGs.
Indeed, thanks.
-chris