Anthony Liguori wrote:
Fabrice Bellard wrote:
Anthony Liguori wrote:
+ /* above 4giga memory allocation */
+ if (above_4g_mem_size > 0) {
+ ram_addr = qemu_ram_alloc(above_4g_mem_size);
+ cpu_register_physical_memory(0x100000000,
above_4g_mem_size, ram_addr);
+ }
+
Why do you need this ? All the RAM can be registered with a single
call. I fear you need to do that because of KVM RAM handling
limitations.
On the x86, there is a rather large hole at the top of memory.
Currently, we do separate allocations around this whole. You can't
get away from doing multiple cpu_register_physical_memory calls here.
We've discussed just allocating a single chunk with qemu_ram_alloc
since so many places in QEMU assume that you can do phys_ram_base + PA.
I think I'll change this too into a single qemu_ram_alloc. That will
fix the bug with KVM when using -kernel and large memory anyway :-)
Won't that cause all of the memory in the hole to be wasted?
You could munmap() it, but it's hardly elegant.
--
Any sufficiently difficult bug is indistinguishable from a feature.