Anthony Liguori wrote:
> KVM supports more than 2GB of memory for x86_64 hosts. The following patch
> fixes a number of type related issues where int's were being used when they
> shouldn't have been. It also introduces CMOS support so the BIOS can build
> the appropriate e820 tables.
> [...]
> + /* 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.
> Index: qemu/osdep.c
> ===================================================================
> --- qemu.orig/osdep.c 2008-01-30 13:47:00.000000000 -0600
> +++ qemu/osdep.c 2008-01-30 13:47:31.000000000 -0600
> @@ -113,7 +113,7 @@
> int64_t free_space;
> int ram_mb;
>
> - extern int ram_size;
> + extern int64_t ram_size;
> free_space = (int64_t)stfs.f_bavail * stfs.f_bsize;
> if ((ram_size + 8192 * 1024) >= free_space) {
> ram_mb = (ram_size / (1024 * 1024));
> @@ -202,7 +202,7 @@
> #ifdef _BSD
> return valloc(size);
> #else
> - return memalign(4096, size);
> + return memalign(TARGET_PAGE_SIZE, size);
> #endif
> }
No fully correct because it is intended to be the host page size.
> +extern int64_t ram_size;
I agree with the fact that ram_size should be 64 bit. Maybe each machine
could test the value and emit an error message if it is too big. Maybe
an uint64_t would be better though.
Fabrice.
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
kvm-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/kvm-devel