In message: <[EMAIL PROTECTED]>
Robert William Fuller <[EMAIL PROTECTED]> writes:
: Avi Kivity wrote:
: > 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.
: >
:
: Linux doesn't commit mapped memory until it's faulted. As for other
: platforms, who knows?
Most BSDs are also similarly overcommitted. 95% of the users think
this is a feature, but the other 5 argue 20 times harder sometimes :-(
Warner