From c6e052f0809b56a657b2afcd728e07ffddb28f06 Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Thu, 29 Nov 2012 18:11:50 +0100 Subject: multiboot: fix e801 memory map The e801 memory sizes in the multiboot structures hard-code the available low memory to 640. However, the value should not include the size of the EBDA. Fill the value in the option ROM, getting the size of low memory from the BIOS. Cc: Alexander Graf Signed-off-by: Paolo Bonzini Signed-off-by: Paolo Bonzini Signed-off-by: Anthony Liguori --- pc-bios/multiboot.bin | Bin 1024 -> 1024 bytes pc-bios/optionrom/multiboot.S | 7 +++++++ 2 files changed, 7 insertions(+) diff --git a/pc-bios/multiboot.bin b/pc-bios/multiboot.bin index f74a6e1..7b3c174 100644 Binary files a/pc-bios/multiboot.bin and b/pc-bios/multiboot.bin differ diff --git a/pc-bios/optionrom/multiboot.S b/pc-bios/optionrom/multiboot.S index f08222a..003bcfb 100644 --- a/pc-bios/optionrom/multiboot.S +++ b/pc-bios/optionrom/multiboot.S @@ -75,6 +75,13 @@ run_multiboot: shr $4, %eax mov %ax, %fs + /* Account for the EBDA in the multiboot structure's e801 + * map. + */ + int $0x12 + cwtl + movl %eax, %fs:4 + /* ES = mmap_addr */ mov %fs:48, %eax shr $4, %eax -- cgit v1.1