|
From: | Fabrice Bellard |
Subject: | [Qemu-devel] Re: [PATCH 1/6] Use correct types to enable > 2G support |
Date: | Fri, 01 Feb 2008 11:26:15 +0100 |
User-agent: | Thunderbird 2.0.0.5 (X11/20070727) |
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.
[Prev in Thread] | Current Thread | [Next in Thread] |