More specifically, if __PAGE_OFFSET is set to 0xE0000000 (reducing the kernel's virtual address space to 512MB), then the code:
ramdisk_max: .long (-__PAGE_OFFSET-(512 << 20)-1) & 0x7fffffff
results in a ramdisk_max of 0x7fffffff which is out of bounds. The patch is to change the above code to:
ramdisk_max: .long (((-__PAGE_OFFSET) / 2) - 1) & 0x7fffffff
This keeps the spirit of the original patch and reserves 512MB of space for vmalloc when __PAGE_OFFSET is not modified (0xc0000000). If __PAGE_OFFSET is lowered (increasing the kernel's virtual address space), more vmalloc space is proportionally reserved. If __PAGE_OFFSET is increased (my case), less vmalloc space is reserved.
Signed-off-by: John Cho <[EMAIL PROTECTED]>
--- linux-2.6.10.orig/arch/i386/boot/setup.S 2004-12-24 13:34:58.000000000 -0800 +++ linux-2.6.10/arch/i386/boot/setup.S 2005-02-13 10:34:27.413862125 -0800 @@ -156,7 +156,7 @@ # can be located anywhere in # low memory 0x10000 or higher.
-ramdisk_max: .long (-__PAGE_OFFSET-(512 << 20)-1) & 0x7fffffff +ramdisk_max: .long (((-__PAGE_OFFSET) / 2) - 1) & 0x7fffffff # (Header version 0x0203 or later) # The highest safe address for # the contents of an initrd - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/