* Remove qemu_alloc_physram()
@ 2009-05-27 10:08 nicolas prochazka
2009-05-27 12:50 ` Avi Kivity
0 siblings, 1 reply; 9+ messages in thread
From: nicolas prochazka @ 2009-05-27 10:08 UTC (permalink / raw)
To: kvm
Hello,
Since this patch :
http://git.kernel.org/?p=virt/kvm/qemu-kvm.git;a=commit;h=0e8d16ba06486ebf79f131f28121774715975248
Remove qemu_alloc_physram()
Obsolete.
function alloc_mem_area(memory, &map_len, mem_path); is never calling in code,
and it seems that's -mem-path ( or -mempath) /hugepages does not
work for me now.
before this patch, i can see for example in /proc/meminfo :
HugePages_Total: 2560
HugePages_Free: 2301
when i start one kvm/qemu
now , HupePages_Free never down , hugepages_free = hugepages_total.
Regards,
Nicolas .
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Remove qemu_alloc_physram()
2009-05-27 10:08 Remove qemu_alloc_physram() nicolas prochazka
@ 2009-05-27 12:50 ` Avi Kivity
2009-05-27 13:30 ` nicolas prochazka
0 siblings, 1 reply; 9+ messages in thread
From: Avi Kivity @ 2009-05-27 12:50 UTC (permalink / raw)
To: nicolas prochazka; +Cc: kvm
[-- Attachment #1: Type: text/plain, Size: 688 bytes --]
nicolas prochazka wrote:
> Hello,
> Since this patch :
> http://git.kernel.org/?p=virt/kvm/qemu-kvm.git;a=commit;h=0e8d16ba06486ebf79f131f28121774715975248
> Remove qemu_alloc_physram()
> Obsolete.
>
> function alloc_mem_area(memory, &map_len, mem_path); is never calling in code,
> and it seems that's -mem-path ( or -mempath) /hugepages does not
> work for me now.
> before this patch, i can see for example in /proc/meminfo :
> HugePages_Total: 2560
> HugePages_Free: 2301
> when i start one kvm/qemu
>
> now , HupePages_Free never down , hugepages_free = hugepages_total.
>
>
Please test the attached patch.
--
error compiling committee.c: too many arguments to function
[-- Attachment #2: mem-path.patch --]
[-- Type: text/x-patch, Size: 6362 bytes --]
diff --git a/exec.c b/exec.c
index e241f05..c024b8b 100644
--- a/exec.c
+++ b/exec.c
@@ -2484,6 +2484,113 @@ static ram_addr_t kqemu_ram_alloc(ram_addr_t size)
}
#endif
+#ifdef __linux__
+
+#include <sys/vfs.h>
+
+#define HUGETLBFS_MAGIC 0x958458f6
+
+static long gethugepagesize(const char *path)
+{
+ struct statfs fs;
+ int ret;
+
+ do {
+ ret = statfs(path, &fs);
+ } while (ret != 0 && errno == EINTR);
+
+ if (ret != 0) {
+ perror("statfs");
+ return 0;
+ }
+
+ if (fs.f_type != HUGETLBFS_MAGIC)
+ fprintf(stderr, "Warning: path not on HugeTLBFS: %s\n", path);
+
+ return fs.f_bsize;
+}
+
+static void *file_ram_alloc(ram_addr_t memory, const char *path)
+{
+ char *filename;
+ void *area;
+ int fd;
+#ifdef MAP_POPULATE
+ int flags;
+#endif
+ unsigned long hpagesize;
+ extern int mem_prealloc;
+
+ if (!path) {
+ return NULL;
+ }
+
+ hpagesize = gethugepagesize(path);
+ if (!hpagesize) {
+ return NULL;
+ }
+
+ if (memory < hpagesize) {
+ return NULL;
+ }
+
+ if (kvm_enabled() && !kvm_has_sync_mmu()) {
+ fprintf(stderr, "host lacks mmu notifiers, disabling --mem-path\n");
+ return NULL;
+ }
+
+ if (asprintf(&filename, "%s/kvm.XXXXXX", path) == -1) {
+ return NULL;
+ }
+
+ fd = mkstemp(filename);
+ if (fd < 0) {
+ perror("mkstemp");
+ free(filename);
+ return NULL;
+ }
+ unlink(filename);
+ free(filename);
+
+ memory = (memory+hpagesize-1) & ~(hpagesize-1);
+
+ /*
+ * ftruncate is not supported by hugetlbfs in older
+ * hosts, so don't bother checking for errors.
+ * If anything goes wrong with it under other filesystems,
+ * mmap will fail.
+ */
+ ftruncate(fd, memory);
+
+#ifdef MAP_POPULATE
+ /* NB: MAP_POPULATE won't exhaustively alloc all phys pages in the case
+ * MAP_PRIVATE is requested. For mem_prealloc we mmap as MAP_SHARED
+ * to sidestep this quirk.
+ */
+ flags = mem_prealloc ? MAP_POPULATE|MAP_SHARED : MAP_PRIVATE;
+ area = mmap(0, memory, PROT_READ|PROT_WRITE, flags, fd, 0);
+#else
+ area = mmap(0, memory, PROT_READ|PROT_WRITE, MAP_PRIVATE, fd, 0);
+#endif
+ if (area == MAP_FAILED) {
+ perror("alloc_mem_area: can't mmap hugetlbfs pages");
+ close(fd);
+ return (NULL);
+ }
+ return area;
+}
+
+#else
+
+static void *file_ram_alloc(ram_addr_t memory, const char *path)
+{
+ return NULL;
+}
+
+#endif
+
+extern const char *mem_path;
+
ram_addr_t qemu_ram_alloc(ram_addr_t size)
{
RAMBlock *new_block;
@@ -2497,7 +2604,10 @@ ram_addr_t qemu_ram_alloc(ram_addr_t size)
size = TARGET_PAGE_ALIGN(size);
new_block = qemu_malloc(sizeof(*new_block));
- new_block->host = qemu_vmalloc(size);
+ new_block->host = file_ram_alloc(size, mem_path);
+ if (!new_block->host) {
+ new_block->host = qemu_vmalloc(size);
+ }
new_block->offset = last_ram_offset;
new_block->length = size;
diff --git a/hw/pc.c b/hw/pc.c
index 9e99b7c..585a4ef 100644
--- a/hw/pc.c
+++ b/hw/pc.c
@@ -914,14 +914,6 @@ static void pc_init1(ram_addr_t ram_size,
hw_error("To much RAM for 32-bit physical address");
#else
ram_addr = qemu_ram_alloc(above_4g_mem_size);
- if (hpagesize) {
- if (ram_addr & (hpagesize-1)) {
- unsigned long aligned_addr;
- aligned_addr = (ram_addr + hpagesize - 1) & ~(hpagesize-1);
- qemu_ram_alloc(aligned_addr - ram_addr);
- ram_addr = aligned_addr;
- }
- }
cpu_register_physical_memory(0x100000000ULL,
above_4g_mem_size,
ram_addr);
diff --git a/vl.c b/vl.c
index db8265b..8aea7d6 100644
--- a/vl.c
+++ b/vl.c
@@ -41,7 +41,6 @@
#include <sys/ioctl.h>
#include <sys/resource.h>
#include <sys/socket.h>
-#include <sys/vfs.h>
#include <netinet/in.h>
#include <net/if.h>
#if defined(__NetBSD__)
@@ -268,7 +267,6 @@ const char *mem_path = NULL;
#ifdef MAP_POPULATE
int mem_prealloc = 1; /* force preallocation of physical target memory */
#endif
-long hpagesize = 0;
#ifdef TARGET_ARM
int old_param = 0;
#endif
@@ -4856,90 +4854,6 @@ int qemu_uuid_parse(const char *str, uint8_t *uuid)
#define MAX_NET_CLIENTS 32
-#ifdef USE_KVM
-
-#define HUGETLBFS_MAGIC 0x958458f6
-
-static long gethugepagesize(const char *path)
-{
- struct statfs fs;
- int ret;
-
- do {
- ret = statfs(path, &fs);
- } while (ret != 0 && errno == EINTR);
-
- if (ret != 0) {
- perror("statfs");
- return 0;
- }
-
- if (fs.f_type != HUGETLBFS_MAGIC)
- fprintf(stderr, "Warning: path not on HugeTLBFS: %s\n", path);
-
- return fs.f_bsize;
-}
-
-static void *alloc_mem_area(size_t memory, unsigned long *len, const char *path)
-{
- char *filename;
- void *area;
- int fd;
-#ifdef MAP_POPULATE
- int flags;
-#endif
-
- if (!kvm_has_sync_mmu()) {
- fprintf(stderr, "host lacks mmu notifiers, disabling --mem-path\n");
- return NULL;
- }
-
- if (asprintf(&filename, "%s/kvm.XXXXXX", path) == -1)
- return NULL;
-
- hpagesize = gethugepagesize(path);
- if (!hpagesize)
- return NULL;
-
- fd = mkstemp(filename);
- if (fd < 0) {
- perror("mkstemp");
- free(filename);
- return NULL;
- }
- unlink(filename);
- free(filename);
-
- memory = (memory+hpagesize-1) & ~(hpagesize-1);
-
- /*
- * ftruncate is not supported by hugetlbfs in older
- * hosts, so don't bother checking for errors.
- * If anything goes wrong with it under other filesystems,
- * mmap will fail.
- */
- ftruncate(fd, memory);
-
-#ifdef MAP_POPULATE
- /* NB: MAP_POPULATE won't exhaustively alloc all phys pages in the case
- * MAP_PRIVATE is requested. For mem_prealloc we mmap as MAP_SHARED
- * to sidestep this quirk.
- */
- flags = mem_prealloc ? MAP_POPULATE|MAP_SHARED : MAP_PRIVATE;
- area = mmap(0, memory, PROT_READ|PROT_WRITE, flags, fd, 0);
-#else
- area = mmap(0, memory, PROT_READ|PROT_WRITE, MAP_PRIVATE, fd, 0);
-#endif
- if (area == MAP_FAILED) {
- perror("alloc_mem_area: can't mmap hugetlbfs pages");
- close(fd);
- return (NULL);
- }
- *len = memory;
- return area;
-}
-#endif
-
#ifndef _WIN32
static void termsig_handler(int signal)
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: Remove qemu_alloc_physram()
2009-05-27 12:50 ` Avi Kivity
@ 2009-05-27 13:30 ` nicolas prochazka
2009-05-27 13:40 ` nicolas prochazka
0 siblings, 1 reply; 9+ messages in thread
From: nicolas prochazka @ 2009-05-27 13:30 UTC (permalink / raw)
To: Avi Kivity; +Cc: kvm
hello again,
after applying patch :
HugePages_Total: 2560
HugePages_Free: 2558
HugePages_Rsvd: 262
HugePages_Surp: 0
Hugepagesize: 2048 kB
with a running command :
/usr/local/bin/qemu -localtime -usb -usbdevice tablet -net
vde,vlan=0,sock=/tmpsafe/switch -vnc 10.98.98.1:111 -monitor
tcp:127.0.0.1:10111,server,nowait,nodelay -vga std -m 512 -net
nic,vlan=0,macaddr=ac:de:48:44:d3:d7,model=e1000 -drive
file=windowsxp,boot=on,snapshot=on -mem-prealloc -mempath /hugepages
-no-kvm-irqchip -startdate now
only 2 pages are used ? qemu runs for 30 minutes.
2009/5/27 Avi Kivity <avi@redhat.com>:
> nicolas prochazka wrote:
>>
>> Hello,
>> Since this patch :
>>
>> http://git.kernel.org/?p=virt/kvm/qemu-kvm.git;a=commit;h=0e8d16ba06486ebf79f131f28121774715975248
>> Remove qemu_alloc_physram()
>> Obsolete.
>>
>> function alloc_mem_area(memory, &map_len, mem_path); is never calling in
>> code,
>> and it seems that's -mem-path ( or -mempath) /hugepages does not
>> work for me now.
>> before this patch, i can see for example in /proc/meminfo :
>> HugePages_Total: 2560
>> HugePages_Free: 2301
>> when i start one kvm/qemu
>>
>> now , HupePages_Free never down , hugepages_free = hugepages_total.
>>
>>
>
> Please test the attached patch.
>
> --
> error compiling committee.c: too many arguments to function
>
>
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Remove qemu_alloc_physram()
2009-05-27 13:30 ` nicolas prochazka
@ 2009-05-27 13:40 ` nicolas prochazka
2009-05-27 13:59 ` Avi Kivity
0 siblings, 1 reply; 9+ messages in thread
From: nicolas prochazka @ 2009-05-27 13:40 UTC (permalink / raw)
To: Avi Kivity; +Cc: kvm
without -mem-prealloc
HugePages_Total: 2560
HugePages_Free: 2296
HugePages_Rsvd: 0
so after minimum test, i can say that's your patch seems to be correct
this problem.
Thanks.
Nicolas
2009/5/27 nicolas prochazka <prochazka.nicolas@gmail.com>:
> hello again,
> after applying patch :
>
> HugePages_Total: 2560
> HugePages_Free: 2558
> HugePages_Rsvd: 262
> HugePages_Surp: 0
> Hugepagesize: 2048 kB
>
> with a running command :
> /usr/local/bin/qemu -localtime -usb -usbdevice tablet -net
> vde,vlan=0,sock=/tmpsafe/switch -vnc 10.98.98.1:111 -monitor
> tcp:127.0.0.1:10111,server,nowait,nodelay -vga std -m 512 -net
> nic,vlan=0,macaddr=ac:de:48:44:d3:d7,model=e1000 -drive
> file=windowsxp,boot=on,snapshot=on -mem-prealloc -mempath /hugepages
> -no-kvm-irqchip -startdate now
>
> only 2 pages are used ? qemu runs for 30 minutes.
>
> 2009/5/27 Avi Kivity <avi@redhat.com>:
>> nicolas prochazka wrote:
>>>
>>> Hello,
>>> Since this patch :
>>>
>>> http://git.kernel.org/?p=virt/kvm/qemu-kvm.git;a=commit;h=0e8d16ba06486ebf79f131f28121774715975248
>>> Remove qemu_alloc_physram()
>>> Obsolete.
>>>
>>> function alloc_mem_area(memory, &map_len, mem_path); is never calling in
>>> code,
>>> and it seems that's -mem-path ( or -mempath) /hugepages does not
>>> work for me now.
>>> before this patch, i can see for example in /proc/meminfo :
>>> HugePages_Total: 2560
>>> HugePages_Free: 2301
>>> when i start one kvm/qemu
>>>
>>> now , HupePages_Free never down , hugepages_free = hugepages_total.
>>>
>>>
>>
>> Please test the attached patch.
>>
>> --
>> error compiling committee.c: too many arguments to function
>>
>>
>
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Remove qemu_alloc_physram()
2009-05-27 13:40 ` nicolas prochazka
@ 2009-05-27 13:59 ` Avi Kivity
2009-05-27 16:22 ` Avi Kivity
0 siblings, 1 reply; 9+ messages in thread
From: Avi Kivity @ 2009-05-27 13:59 UTC (permalink / raw)
To: nicolas prochazka; +Cc: kvm
nicolas prochazka wrote:
> without -mem-prealloc
> HugePages_Total: 2560
> HugePages_Free: 2296
> HugePages_Rsvd: 0
>
> so after minimum test, i can say that's your patch seems to be correct
> this problem.
>
It isn't correct, it doesn't generate the right alignment.
--
error compiling committee.c: too many arguments to function
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Remove qemu_alloc_physram()
2009-05-27 13:59 ` Avi Kivity
@ 2009-05-27 16:22 ` Avi Kivity
2009-05-28 9:25 ` nicolas prochazka
2009-05-28 21:53 ` Ryan Harper
0 siblings, 2 replies; 9+ messages in thread
From: Avi Kivity @ 2009-05-27 16:22 UTC (permalink / raw)
To: nicolas prochazka; +Cc: kvm
[-- Attachment #1: Type: text/plain, Size: 402 bytes --]
Avi Kivity wrote:
> nicolas prochazka wrote:
>> without -mem-prealloc
>> HugePages_Total: 2560
>> HugePages_Free: 2296
>> HugePages_Rsvd: 0
>>
>> so after minimum test, i can say that's your patch seems to be correct
>> this problem.
>>
>
> It isn't correct, it doesn't generate the right alignment.
>
Better patch attached.
--
error compiling committee.c: too many arguments to function
[-- Attachment #2: mem-path.patch --]
[-- Type: text/x-patch, Size: 7199 bytes --]
diff --git a/exec.c b/exec.c
index e241f05..c024b8b 100644
--- a/exec.c
+++ b/exec.c
@@ -2484,6 +2484,113 @@ static ram_addr_t kqemu_ram_alloc(ram_addr_t size)
}
#endif
+#ifdef __linux__
+
+#include <sys/vfs.h>
+
+#define HUGETLBFS_MAGIC 0x958458f6
+
+static long gethugepagesize(const char *path)
+{
+ struct statfs fs;
+ int ret;
+
+ do {
+ ret = statfs(path, &fs);
+ } while (ret != 0 && errno == EINTR);
+
+ if (ret != 0) {
+ perror("statfs");
+ return 0;
+ }
+
+ if (fs.f_type != HUGETLBFS_MAGIC)
+ fprintf(stderr, "Warning: path not on HugeTLBFS: %s\n", path);
+
+ return fs.f_bsize;
+}
+
+static void *file_ram_alloc(ram_addr_t memory, const char *path)
+{
+ char *filename;
+ void *area;
+ int fd;
+#ifdef MAP_POPULATE
+ int flags;
+#endif
+ unsigned long hpagesize;
+ extern int mem_prealloc;
+
+ if (!path) {
+ return NULL;
+ }
+
+ hpagesize = gethugepagesize(path);
+ if (!hpagesize) {
+ return NULL;
+ }
+
+ if (memory < hpagesize) {
+ return NULL;
+ }
+
+ if (kvm_enabled() && !kvm_has_sync_mmu()) {
+ fprintf(stderr, "host lacks mmu notifiers, disabling --mem-path\n");
+ return NULL;
+ }
+
+ if (asprintf(&filename, "%s/kvm.XXXXXX", path) == -1) {
+ return NULL;
+ }
+
+ fd = mkstemp(filename);
+ if (fd < 0) {
+ perror("mkstemp");
+ free(filename);
+ return NULL;
+ }
+ unlink(filename);
+ free(filename);
+
+ memory = (memory+hpagesize-1) & ~(hpagesize-1);
+
+ /*
+ * ftruncate is not supported by hugetlbfs in older
+ * hosts, so don't bother checking for errors.
+ * If anything goes wrong with it under other filesystems,
+ * mmap will fail.
+ */
+ ftruncate(fd, memory);
+
+#ifdef MAP_POPULATE
+ /* NB: MAP_POPULATE won't exhaustively alloc all phys pages in the case
+ * MAP_PRIVATE is requested. For mem_prealloc we mmap as MAP_SHARED
+ * to sidestep this quirk.
+ */
+ flags = mem_prealloc ? MAP_POPULATE|MAP_SHARED : MAP_PRIVATE;
+ area = mmap(0, memory, PROT_READ|PROT_WRITE, flags, fd, 0);
+#else
+ area = mmap(0, memory, PROT_READ|PROT_WRITE, MAP_PRIVATE, fd, 0);
+#endif
+ if (area == MAP_FAILED) {
+ perror("alloc_mem_area: can't mmap hugetlbfs pages");
+ close(fd);
+ return (NULL);
+ }
+ return area;
+}
+
+#else
+
+static void *file_ram_alloc(ram_addr_t memory, const char *path)
+{
+ return NULL;
+}
+
+#endif
+
+extern const char *mem_path;
+
ram_addr_t qemu_ram_alloc(ram_addr_t size)
{
RAMBlock *new_block;
@@ -2497,7 +2604,10 @@ ram_addr_t qemu_ram_alloc(ram_addr_t size)
size = TARGET_PAGE_ALIGN(size);
new_block = qemu_malloc(sizeof(*new_block));
- new_block->host = qemu_vmalloc(size);
+ new_block->host = file_ram_alloc(size, mem_path);
+ if (!new_block->host) {
+ new_block->host = qemu_vmalloc(size);
+ }
new_block->offset = last_ram_offset;
new_block->length = size;
diff --git a/hw/pc.c b/hw/pc.c
index 9e99b7c..74754a3 100644
--- a/hw/pc.c
+++ b/hw/pc.c
@@ -895,18 +895,11 @@ static void pc_init1(ram_addr_t ram_size,
vmport_init();
/* allocate RAM */
- ram_addr = qemu_ram_alloc(0xa0000);
+ ram_addr = qemu_ram_alloc(below_4g_mem_size);
cpu_register_physical_memory(0, 0xa0000, ram_addr);
-
- /* Allocate, even though we won't register, so we don't break the
- * phys_ram_base + PA assumption. This range includes vga (0xa0000 - 0xc0000),
- * and some bios areas, which will be registered later
- */
- ram_addr = qemu_ram_alloc(0x100000 - 0xa0000);
- ram_addr = qemu_ram_alloc(below_4g_mem_size - 0x100000);
cpu_register_physical_memory(0x100000,
below_4g_mem_size - 0x100000,
- ram_addr);
+ ram_addr + 0x100000);
/* above 4giga memory allocation */
if (above_4g_mem_size > 0) {
@@ -914,14 +907,6 @@ static void pc_init1(ram_addr_t ram_size,
hw_error("To much RAM for 32-bit physical address");
#else
ram_addr = qemu_ram_alloc(above_4g_mem_size);
- if (hpagesize) {
- if (ram_addr & (hpagesize-1)) {
- unsigned long aligned_addr;
- aligned_addr = (ram_addr + hpagesize - 1) & ~(hpagesize-1);
- qemu_ram_alloc(aligned_addr - ram_addr);
- ram_addr = aligned_addr;
- }
- }
cpu_register_physical_memory(0x100000000ULL,
above_4g_mem_size,
ram_addr);
diff --git a/vl.c b/vl.c
index db8265b..8aea7d6 100644
--- a/vl.c
+++ b/vl.c
@@ -41,7 +41,6 @@
#include <sys/ioctl.h>
#include <sys/resource.h>
#include <sys/socket.h>
-#include <sys/vfs.h>
#include <netinet/in.h>
#include <net/if.h>
#if defined(__NetBSD__)
@@ -268,7 +267,6 @@ const char *mem_path = NULL;
#ifdef MAP_POPULATE
int mem_prealloc = 1; /* force preallocation of physical target memory */
#endif
-long hpagesize = 0;
#ifdef TARGET_ARM
int old_param = 0;
#endif
@@ -4856,90 +4854,6 @@ int qemu_uuid_parse(const char *str, uint8_t *uuid)
#define MAX_NET_CLIENTS 32
-#ifdef USE_KVM
-
-#define HUGETLBFS_MAGIC 0x958458f6
-
-static long gethugepagesize(const char *path)
-{
- struct statfs fs;
- int ret;
-
- do {
- ret = statfs(path, &fs);
- } while (ret != 0 && errno == EINTR);
-
- if (ret != 0) {
- perror("statfs");
- return 0;
- }
-
- if (fs.f_type != HUGETLBFS_MAGIC)
- fprintf(stderr, "Warning: path not on HugeTLBFS: %s\n", path);
-
- return fs.f_bsize;
-}
-
-static void *alloc_mem_area(size_t memory, unsigned long *len, const char *path)
-{
- char *filename;
- void *area;
- int fd;
-#ifdef MAP_POPULATE
- int flags;
-#endif
-
- if (!kvm_has_sync_mmu()) {
- fprintf(stderr, "host lacks mmu notifiers, disabling --mem-path\n");
- return NULL;
- }
-
- if (asprintf(&filename, "%s/kvm.XXXXXX", path) == -1)
- return NULL;
-
- hpagesize = gethugepagesize(path);
- if (!hpagesize)
- return NULL;
-
- fd = mkstemp(filename);
- if (fd < 0) {
- perror("mkstemp");
- free(filename);
- return NULL;
- }
- unlink(filename);
- free(filename);
-
- memory = (memory+hpagesize-1) & ~(hpagesize-1);
-
- /*
- * ftruncate is not supported by hugetlbfs in older
- * hosts, so don't bother checking for errors.
- * If anything goes wrong with it under other filesystems,
- * mmap will fail.
- */
- ftruncate(fd, memory);
-
-#ifdef MAP_POPULATE
- /* NB: MAP_POPULATE won't exhaustively alloc all phys pages in the case
- * MAP_PRIVATE is requested. For mem_prealloc we mmap as MAP_SHARED
- * to sidestep this quirk.
- */
- flags = mem_prealloc ? MAP_POPULATE|MAP_SHARED : MAP_PRIVATE;
- area = mmap(0, memory, PROT_READ|PROT_WRITE, flags, fd, 0);
-#else
- area = mmap(0, memory, PROT_READ|PROT_WRITE, MAP_PRIVATE, fd, 0);
-#endif
- if (area == MAP_FAILED) {
- perror("alloc_mem_area: can't mmap hugetlbfs pages");
- close(fd);
- return (NULL);
- }
- *len = memory;
- return area;
-}
-#endif
-
#ifndef _WIN32
static void termsig_handler(int signal)
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: Remove qemu_alloc_physram()
2009-05-27 16:22 ` Avi Kivity
@ 2009-05-28 9:25 ` nicolas prochazka
2009-05-28 21:53 ` Ryan Harper
1 sibling, 0 replies; 9+ messages in thread
From: nicolas prochazka @ 2009-05-28 9:25 UTC (permalink / raw)
To: Avi Kivity; +Cc: kvm
After some tests :
with kvm-85 all seems to be ok for me, multiple qemu runs well with hugepage
with kvm-86 + patch : after some time, vm reboot with strange disk
corruption ( windows tells that's some file missing ) and cpu load is
very important.
Note :
KVM 85 : ( run one qemu with -m 512 )
HugePages_Total: 13676
HugePages_Free: 13409
HugePages_Rsvd: 0
HugePages_Surp: 0
KVM 86 + patche
HugePages_Total: 13676
HugePages_Free: 13412
HugePages_Rsvd: 0
HugePages_Surp: 0
I do not known if this difference is the bug cause.
Regards
Nicolas
2009/5/27 Avi Kivity <avi@redhat.com>:
> Avi Kivity wrote:
>>
>> nicolas prochazka wrote:
>>>
>>> without -mem-prealloc
>>> HugePages_Total: 2560
>>> HugePages_Free: 2296
>>> HugePages_Rsvd: 0
>>>
>>> so after minimum test, i can say that's your patch seems to be correct
>>> this problem.
>>>
>>
>> It isn't correct, it doesn't generate the right alignment.
>>
> Better patch attached.
>
> --
> error compiling committee.c: too many arguments to function
>
>
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Remove qemu_alloc_physram()
2009-05-27 16:22 ` Avi Kivity
2009-05-28 9:25 ` nicolas prochazka
@ 2009-05-28 21:53 ` Ryan Harper
2009-05-29 8:35 ` Avi Kivity
1 sibling, 1 reply; 9+ messages in thread
From: Ryan Harper @ 2009-05-28 21:53 UTC (permalink / raw)
To: Avi Kivity; +Cc: nicolas prochazka, kvm
* Avi Kivity <avi@redhat.com> [2009-05-27 11:23]:
> Avi Kivity wrote:
> >nicolas prochazka wrote:
> >>without -mem-prealloc
> >>HugePages_Total: 2560
> >>HugePages_Free: 2296
> >>HugePages_Rsvd: 0
> >>
> >>so after minimum test, i can say that's your patch seems to be correct
> >>this problem.
> >>
> >
> >It isn't correct, it doesn't generate the right alignment.
> >
> Better patch attached.
This patch restores -mempath working for me on latest qemu-kvm.git.
btw, why'd we go from -mem-path (kvm-84/stable) to -mempath (kvm-85 and
newer)? Changing these breaks existing scripts. Not a big deal, but
wondering what was the motivation for the change.
--
Ryan Harper
Software Engineer; Linux Technology Center
IBM Corp., Austin, Tx
ryanh@us.ibm.com
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: Remove qemu_alloc_physram()
2009-05-28 21:53 ` Ryan Harper
@ 2009-05-29 8:35 ` Avi Kivity
0 siblings, 0 replies; 9+ messages in thread
From: Avi Kivity @ 2009-05-29 8:35 UTC (permalink / raw)
To: Ryan Harper; +Cc: nicolas prochazka, kvm
Ryan Harper wrote:
> This patch restores -mempath working for me on latest qemu-kvm.git.
>
Thanks for confirming.
> btw, why'd we go from -mem-path (kvm-84/stable) to -mempath (kvm-85 and
> newer)? Changing these breaks existing scripts. Not a big deal, but
> wondering what was the motivation for the change.
>
It was accidental. Upstream moved the command line options definitions
to a different file, and when I merged I didn't move over this option
correctly. Code written during a merge is often of substandard quality.
I'll fix it up.
--
I have a truly marvellous patch that fixes the bug which this
signature is too narrow to contain.
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2009-05-29 8:35 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-05-27 10:08 Remove qemu_alloc_physram() nicolas prochazka
2009-05-27 12:50 ` Avi Kivity
2009-05-27 13:30 ` nicolas prochazka
2009-05-27 13:40 ` nicolas prochazka
2009-05-27 13:59 ` Avi Kivity
2009-05-27 16:22 ` Avi Kivity
2009-05-28 9:25 ` nicolas prochazka
2009-05-28 21:53 ` Ryan Harper
2009-05-29 8:35 ` Avi Kivity
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox