Browse Source

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>
stable-1.3
Paolo Bonzini 14 years ago
committed by Anthony Liguori
parent
commit
c6e052f080
  1. BIN
      pc-bios/multiboot.bin
  2. 7
      pc-bios/optionrom/multiboot.S

BIN
pc-bios/multiboot.bin

Binary file not shown.

7
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

Loading…
Cancel
Save