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);