summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2012-11-29 18:11:50 +0100
committerAnthony Liguori <aliguori@us.ibm.com>2012-11-30 08:27:47 -0600
commitc6e052f0809b56a657b2afcd728e07ffddb28f06 (patch)
tree9264399c00d2c4e3fe79b1b60f5af98a1f7a7720
parentfe512d65e0b752dfa7af6cfb374a0820d35040d0 (diff)
downloadfocaccia-qemu-c6e052f0809b56a657b2afcd728e07ffddb28f06.tar.gz
focaccia-qemu-c6e052f0809b56a657b2afcd728e07ffddb28f06.zip
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 <agraf@suse.de>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
-rw-r--r--pc-bios/multiboot.binbin1024 -> 1024 bytes
-rw-r--r--pc-bios/optionrom/multiboot.S7
2 files changed, 7 insertions, 0 deletions
diff --git a/pc-bios/multiboot.bin b/pc-bios/multiboot.bin
index f74a6e142f..7b3c1745a4 100644
--- a/pc-bios/multiboot.bin
+++ b/pc-bios/multiboot.bin
Binary files differdiff --git a/pc-bios/optionrom/multiboot.S b/pc-bios/optionrom/multiboot.S
index f08222a3c6..003bcfb49f 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