[SeaBIOS] wrong memsize in smbios_init()
Sebastian Herbszt
herbszt at gmx.de
Wed Jan 6 21:13:13 CET 2010
src/smbios.c has
u64 memsize = RamSizeOver4G;
if (memsize)
memsize += 0x100000000ull;
else
memsize = RamSize;
RamSizeOver4G = "total ram" - "start of pci hole" (e.g. 0xe0000000 in qemu, 0xc0000000 in bochs)
Adding 4GB is wrong. With 33 GB of RAM i end up with 16+16+2 instead of 16+16+1 in smbios tables.
The patch below fixes it for me.
above_4g_mem_size in qemu is a possible misnomer.
- Sebastian
--- a/src/smbios.c
+++ b/src/smbios.c
@@ -405,11 +405,7 @@ smbios_init(void)
int cpu_num;
for (cpu_num = 1; cpu_num <= MaxCountCPUs; cpu_num++)
add_struct(4, p, cpu_num);
- u64 memsize = RamSizeOver4G;
- if (memsize)
- memsize += 0x100000000ull;
- else
- memsize = RamSize;
+ u64 memsize = RamSize + RamSizeOver4G;
memsize = memsize / (1024 * 1024);
int nr_mem_devs = (memsize + 0x3fff) >> 14;
add_struct(16, p, memsize, nr_mem_devs);
More information about the SeaBIOS
mailing list