All of lore.kernel.org
 help / color / mirror / Atom feed
From: Marcelo Tosatti <mtosatti@redhat.com>
To: Ryan Harper <ryanh@us.ibm.com>
Cc: Alex Williamson <alex.williamson@hp.com>,
	kvm-devel <kvm@vger.kernel.org>
Subject: Re: Can't boot guest with more than 3585MB when using large pages
Date: Fri, 3 Apr 2009 20:28:50 -0300	[thread overview]
Message-ID: <20090403232850.GA5877@amt.cnet> (raw)
In-Reply-To: <20090324215746.GH27104@us.ibm.com>

On Tue, Mar 24, 2009 at 04:57:46PM -0500, Ryan Harper wrote:
> * Alex Williamson <alex.williamson@hp.com> [2009-03-24 16:07]:
> > 
> > On a 2.6.29, x86_64 host/guest, what's special about specifying a guest
> > size of -m 3586 when using -mem-path backed by hugetlbfs?  3585 works,
> > 3586 hangs here:
> > 
> > ...
> > PCI-DMA: Using software bounce buffering for IO (SWIOTLB)
> > Placing 64MB software IO TLB between ffff880020000000 - ffff880024000000
> > software IO TLB at phys 0x20000000 - 0x24000000
> > Memory: 3504832k/4196352k available (2926k kernel code, 524740k absent, 166780k reserved, 1260k data, 496k init)
> > 
> > I can back -mem-path by tmpfs or disk and it works fine.  Also works
> > with no -mem-path, but it would obviously be nice to benefit from large
> > pages on big guests.  The system has plenty of huge pages to back the
> > request, and booting with -mem-prealloc makes no difference.  Tested on
> > latest git as of today.  Thanks,
> 
> I've seen this as well, haven't had a chance to dig into the issue yet
> either.  Certainly can test patches if anyone has an idea of what's
> wrong here.

Can you please try the following

------

qemu: kvm: fixup 4GB+ memslot large page alignment

Need to align the 4GB+ memslot after we know its address, not before.

Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>

diff --git a/qemu/hw/pc.c b/qemu/hw/pc.c
index d4a4320..cc84772 100644
--- a/qemu/hw/pc.c
+++ b/qemu/hw/pc.c
@@ -866,6 +866,7 @@ static void pc_init1(ram_addr_t ram_size, int vga_ram_size,
 
     /* above 4giga memory allocation */
     if (above_4g_mem_size > 0) {
+        ram_addr = qemu_ram_alloc(above_4g_mem_size);
         if (hpagesize) {
             if (ram_addr & (hpagesize-1)) {
                 unsigned long aligned_addr;
@@ -874,7 +875,6 @@ static void pc_init1(ram_addr_t ram_size, int vga_ram_size,
                 ram_addr = aligned_addr;
             }
         }
-        ram_addr = qemu_ram_alloc(above_4g_mem_size);
         cpu_register_physical_memory(0x100000000ULL,
                                      above_4g_mem_size,
                                      ram_addr);

  parent reply	other threads:[~2009-04-03 23:29 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-03-24 21:06 Can't boot guest with more than 3585MB when using large pages Alex Williamson
2009-03-24 21:57 ` Ryan Harper
2009-03-25 16:10   ` Marcelo Tosatti
2009-03-25 16:26     ` Alex Williamson
2009-04-03 23:28   ` Marcelo Tosatti [this message]
2009-04-04 17:56     ` Alex Williamson
2009-04-05 11:53       ` Avi Kivity

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=20090403232850.GA5877@amt.cnet \
    --to=mtosatti@redhat.com \
    --cc=alex.williamson@hp.com \
    --cc=kvm@vger.kernel.org \
    --cc=ryanh@us.ibm.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.