valid data. Confirmed by adding a printf in insertrange(). insertrange() does not seem to be called at all during the memory detection (only to reserve the ramdisk memory before MEMDISK bails out) However, when booting a Linux kernel the Linux kernel does detect a e820 BIOS memory map that looks pretty OK to me: BIOS-provided physical RAM map: BIOS-e820: 0000000000000000 - 00000000000a0000 (usable) BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved) BIOS-e820: 0000000000100000 - 000000000fe00000 (usable) BIOS-e820: 00000000ffff0000 - 0000000100000000 (reserved) user-defined physical RAM map: user: 0000000000000000 - 00000000000a0000 (usable) user: 00000000000f0000 - 0000000000100000 (reserved) user: 0000000000100000 - 000000000fe00000 (usable) user: 00000000ffff0000 - 0000000100000000 (reserved) Any clues on where to look next? Regards Henrik