qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: David Gibson <david@gibson.dropbear.id.au>
To: anthony@codemonkey.ws, qemu-devel@nongnu.org
Cc: paulus@samba.org, David Gibson <david@gibson.dropbear.id.au>
Subject: [Qemu-devel] [PATCH] Remove ill-advised fallback when we cannot allocate from -mem-path
Date: Wed,  1 Aug 2012 14:41:05 +1000	[thread overview]
Message-ID: <1343796065-871-1-git-send-email-david@gibson.dropbear.id.au> (raw)

When the -mem-path option is specified we try to allocate memory for guest
RAM from mmap()ing files in the given path rather than from anonymous
memory as usual.  If we are unable to allocate memory from the path, we
fall back to anonymous memory, with a rather cryptic error message.

This fallback is a bad idea - if the user specified a backing path, they
did so for a reason and falling back automatically could lead to confusing
results.

Under Book3S-HV KVM on PowerPC the failure is particularly bad, because the
page size of the backing file limits what page sizes can be supported in the
guest.  We have code to automatically advertise the available page sizes to
the guest, but this will give the wrong information in the case of a fall
back to anonymous memory, because by the time we're producing that infor
there's no easy way to determine that such a fallback occurred.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
---
 exec.c |    6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/exec.c b/exec.c
index feb4795..544a090 100644
--- a/exec.c
+++ b/exec.c
@@ -2425,7 +2425,6 @@ static void *file_ram_alloc(RAMBlock *block,
     area = mmap(0, memory, PROT_READ | PROT_WRITE, MAP_PRIVATE, fd, 0);
 #endif
     if (area == MAP_FAILED) {
-        perror("file_ram_alloc: can't mmap RAM pages");
         close(fd);
         return (NULL);
     }
@@ -2528,8 +2527,9 @@ ram_addr_t qemu_ram_alloc_from_ptr(ram_addr_t size, void *host,
 #if defined (__linux__) && !defined(TARGET_S390X)
             new_block->host = file_ram_alloc(new_block, size, mem_path);
             if (!new_block->host) {
-                new_block->host = qemu_vmalloc(size);
-                qemu_madvise(new_block->host, size, QEMU_MADV_MERGEABLE);
+                fprintf(stderr, "Unable to map %llu bytes of RAM from requested"
+                        " backing path %s\n", (unsigned long long)size, mem_path);
+                exit(1);
             }
 #else
             fprintf(stderr, "-mem-path option unsupported\n");
-- 
1.7.10.4

             reply	other threads:[~2012-08-01  4:41 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-08-01  4:41 David Gibson [this message]
2012-08-02  2:56 ` [Qemu-devel] [PATCH] Remove ill-advised fallback when we cannot allocate from -mem-path David Gibson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1343796065-871-1-git-send-email-david@gibson.dropbear.id.au \
    --to=david@gibson.dropbear.id.au \
    --cc=anthony@codemonkey.ws \
    --cc=paulus@samba.org \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).